Февраль 7th, 2007 от graann

При работе с чартингом, одной из осей которого является DateTimeAxis, часто возникает потребность в изменении формата отображения меток. Как я поняла в ходе общения с кодом DateTimeAxis, сам флекс не меняет формат даты в зависимости от локали. По умолчания дата отображается в формате m/d/yy. Для российского глаза такое отображение несколько непривычно. Хелп предоставляет два пути решения этой проблемы.
1. labelFunction:Function [read-write]
Called to format axis values for display as labels. A labelFunction has the following signature:

  1. function labelFunction(labelValue:Object, previousValue:Object, axis:IAxis):String


If you know the types of the data your function will be formatting, you can specify an explicit type for the labelValue and previousValue parameters.

Казалось бы вот оно счастье, однако поспешность в выборе может послужить для вас причиной дополнительного геморроя. Качественная замена функции дело довольно муторное. Ведь интервал между метками может составлять как секунды так и годы. Куча кода. Рекомендую с негодованием отвергнуть эту веселую перспективу и обратить свой взор к пункту 2.

2. В хелпе есть такое понятие как Protected Methods. Для человека пришедшего из AS2 и не озаботившегося ознакомлением с матчастью AS3 такое буквосочетание может показаться слабо информативным, однако белые люди сжевавшие в процессе общения с флексом уже не одну pdf-ную страницу в курсе что Protected Methods - методы класса которые можно переопределять в наследниках. Часто большинство этих методов скрыто в недрах хелпа в аккордеоне с надписью “Show Inherited Protected Methods", однако это не наш случай. Интересующие нас сейчас методы DateTimeAxis на виду:

  1. formatDays(d:Date, previousValue:Date, axis:DateTimeAxis):String
  2. formatMilliseconds(d:Date, previousValue:Date, axis:DateTimeAxis):String
  3. formatMinutes(d:Date, previousValue:Date, axis:DateTimeAxis):String
  4. formatMonths(d:Date, previousValue:Date, axis:DateTimeAxis):String
  5. formatSeconds(d:Date, previousValue:Date, axis:DateTimeAxis):String
  6. formatYears(d:Date, previousValue:Date, axis:DateTimeAxis):String

Разумеется прежде чем переопределять их в соответствии с вашими пожеланиями следует ознакомиться с исходным кодом DateTimeAxis. Там за вас уже все придумали и написали:

  1. protected function formatYears(d:Date, previousValue:Date, axis:DateTimeAxis):String
  2. {
  3.         var fy:Number = d[fullYearP];
  4.         return fy.toString();
  5. }
  6. protected function formatMonths(d:Date, previousValue:Date, axis:DateTimeAxis):String
  7. {
  8.         var fy:Number = d[fullYearP];
  9.         return (d[monthP] + 1) + "/" + ((fy % 100) < 10 ? "0" + fy % 100 : fy % 100);
  10. }
  11. protected function formatDays(d:Date, previousValue:Date, axis:DateTimeAxis):String
  12. {
  13.         var fy:Number = d[fullYearP];
  14.         return (d[monthP] + 1) + "/" + d[dateP] + "/" + ((fy % 100) < 10 ? "0" + fy % 100 : fy % 100);
  15. }
  16. protected function formatMinutes(d:Date, previousValue:Date, axis:DateTimeAxis):String
  17. {
  18.         return d[hoursP] + ":" + (d[minutesP] < 10 ? "0" + d[minutesP] : d[minutesP]);
  19. }
  20. protected function formatSeconds(d:Date, previousValue:Date, axis:DateTimeAxis):String
  21. {
  22.         return d[hoursP]+ ":" + (d[minutesP] < 10 ? "0" + d[minutesP] : d[minutesP]) + ":" + (d[secondsP] < 10 ? "0" + d[secondsP] : d[secondsP]);
  23. }

Потребуется только слегка откорректировать эти методы в соответствии с вашими пожеланиями. Или, если приложение требует некоторой гибкости, добавить к уже имеющемуся формату еще несколько форматов отображения. (в зависимости от локали)

Кстати. Если вдруг получившиеся в ходе переопределения методов метки будут натыкаться друг на друга и делать подписи абсолютно нечитаемыми следует воспользоваться методом reduceLabels(intervalStart:AxisLabel, intervalEnd:AxisLabel):AxisLabelSet, а никак не свойством interval : Number, как это может захотеться с первого взгляда. Но это уже совсем другая история…

Bookmark this article at

Еще нет отзывов

Оставить комментарий


Ваш email адрес. (Не будет показан на сайте.)

Ваш URL будет показан.
:!: :?: :idea: :) :D :p B) ;) :> :roll: :oops: :| :-/ :( :'( |-| :>> :yes: ;D :P :)) 88| :. :no: XX( :lalala: :crazy: >:XX
(Заменить прерывания строк на <br />)
(Имя, email и сайт)
(Разрешить пользователям посылать вам сообщения (ваш email не отображается).)
3 + 2 + 7 - 1?
antispam test

Вы можете использовать OpenID чтобы предоставить ваше имя, email и url.

Graann`s blog
flash, flex и все, что придет в голову

Ноябрь 2008
Пн Вт Ср Чт Пт Сб Вс
 << <   > >>
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30

О блоге

С назначением блога можно ознакомиться здесь

Идейным вдохновителем и по совместительству куратором блога является Сonstantiner, за что ему огромный респект и уважуха! Впрочем не только за это :)

Поиск

powered by b2evolution free blog software


Design downloaded from Zeroweb.org
Website templates, layouts, and website tools for FREE!
Free short URL services from urlSNIP.