Мы получаем минимальное и максимальное время от внешнего источника при запросе отображения гибкого графика, поэтому мы используем DateTimeAxis для отображения оси времени (x).Из-за этого мы не можем жестко кодировать labelUnits
и interval
, но реализация по умолчанию оставляет желать лучшего.Кто-нибудь знает библиотеки, которые помогают DateTimeAxis автоматически конфигурировать labelUnits
и interval
с большей пользой?
В следующем примере первая метка вставляется в 01:04, а следующая в 01:18.Что за?01:15 и следующий в 01:30 будет удобным для пользователя.Ввод interval="15"
, и мы получим 01:04 и 01:19 - не намного лучше.
Вот полный пример.(Пропуск labelUnits
с этими minimum
и maximum
приводит к отсутствию меток вообще, поэтому я его вставил):
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="horizontal">
<mx:DateFormatter id="df" formatString="JJ:NN:SS" />
<mx:Script>
<![CDATA[
private const minimum:Date = new Date( "Apr 1 2011 01:03:54 AM");
private const maximum:Date = new Date( "Apr 1 2011 03:07:54 AM");
private function labelFunction(item:Object,
field:String,
index:Number):String {
return df.format(item as Date);
}
]]>
</mx:Script>
<mx:CartesianChart width="600" height="200">
<mx:horizontalAxis>
<mx:DateTimeAxis
minimum = "{minimum}"
maximum = "{maximum}"
displayLocalTime="true"
labelFunction="labelFunction"
labelUnits="minutes"
/>
<!--
interval="15"
-->
</mx:horizontalAxis>
</mx:CartesianChart>
</mx:Application>
Дает этот гибкий скриншот http://www.morch.com/download/noindex/flex/DateTimeAxisScaling/DateTimeAxis.png
Я бы предпочел не заново изобретать колесо и вычислять labelUnits
и interval
на основе:
- минимальное и максимальное время
- ширина графика
- размер шрифта
- что-нибудь еще?
Так что я надеюсь, что что-то пропустил или для AutoDateTimeAxis или какой-то подобной реализации .. ;-) Знаете ли вы олюбой