Создание DateTimeAxis с еженедельными метками, установленными в произвольный день недели - PullRequest
1 голос
/ 26 июля 2010

Я использую CartesianChart с DateTimeAxis для отображения еженедельных данных в приложении Flex. Когда я устанавливаю dataUnits = "недели" и labelUnits = "недели" в DateTimeAxis, он автоматически помещает каждый основной тик в воскресенье. Однако я хотел бы предоставить пользователям возможность начать неделю в воскресенье или в понедельник. Как я могу попросить DateTimeAxis вместо этого поставить основные отметки в понедельник (или другой день недели)?

Например, если пользователь просматривает общую сумму чего-либо за неделю и запрашивает начало недели в воскресенье, данные Серии будут выглядеть так:

x: Date(July 11, 2010)  y: 25
x: Date(July 18, 2010)  y: 30
x: Date(July 25, 2010)  y: 32
etc.

Если недели начинаются в понедельник, данные серии будут выглядеть следующим образом:

x: Date(July 12, 2010)  y: 22
x: Date(July 19, 2010)  y: 33
x: Date(July 26, 2010)  y: 29
etc.

Со вторым набором данных основные тики по-прежнему 11 июля, 18 июля, 25 июля и т. Д., Но столбцы слегка смещены относительно центра от основных тиков.

Спасибо!

Ответы [ 2 ]

0 голосов
/ 26 июля 2010

Я посмотрел код класса DateTimeAxis и почти уверен, что вы не можете делать то, что хотите. Если для свойства alignLabelsToUnits задано значение true (по умолчанию), то метки создаются путем округления дат данных Series до соответствующих единиц. В вашем случае (недели) это выглядит так:

case "weeks":
    d[hoursP] = 0;
    d[minutesP] = 0;
    d[secondsP] = 0;
    d[millisecondsP] = 0;
    if (d[dayP] != 0)
        d[dateP] = d[dateP] + (7 - d[dayP]);
    break;

Итак, как вы можете видеть, он проверяет, является ли обработанная дата первым днем ​​недели (жестко запрограммировано 0), и если нет, то она изменяется на такую. Чтобы добиться нужного поведения, вам, вероятно, придется переопределить функцию для создания метки и написать другую для округления даты, так как функция округления по умолчанию объявлена ​​закрытой.

0 голосов
/ 26 июля 2010

Даже если вы указываете недели, DateTimeAxis может по-прежнему использовать значения часов и минут для вновь созданных объектов даты. Вы можете отформатировать дату, чтобы установить их на ноль. Посмотрите на http://www.munkiihouse.com/?p=69, упоминание настройки displayLocalTime = ”true” в теге DateTimeAxis. Дайте нам знать, если это работает, человек

...