Flex DateTimeAxis: контроль над тем, в какое время привыкаешь? - PullRequest
1 голос
/ 10 мая 2011

Мы получаем минимальное и максимальное время от внешнего источника при запросе отображения гибкого графика, поэтому мы используем 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 или какой-то подобной реализации .. ;-) Знаете ли вы олюбой

1 Ответ

1 голос
/ 01 сентября 2011

У меня была похожая проблема с DateTimeAxis, и я вместо этого использовал ось категории, используя специальную функцию метки для форматирования меток даты.

Существует аналогичная ошибка, связанная с переходом на летнее время, которая будетоткиньте голову, если ваш диапазон охватывает как DST, так и не DST, интервал никогда не совпадет из-за дополнительных / пропущенных часов в перекрытии.

...