Почему flex DateTimeAxis создает дубликаты месяцев на оси? - PullRequest
0 голосов
/ 17 ноября 2009

Я работаю с Flex DateTimeAxis. У меня есть сценарий, когда DateTimeAxis иногда создает повторяющиеся месяцы на оси. Единица метки месяца генерируется на основе значения min / max, которое передается в DateTimeAxis, насколько я могу судить, она НЕ генерируется данными ряда. Другими словами, дублирование не существует в данных, переданных на диаграмму, но является частью процесса автоматической генерации меток, который DateTimeAxis выполнит при предоставлении значения min / max для оси.

Я включил упрощенный пример этой проблемы ниже. Любая помощь приветствуется.

<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">

<mx:Script>
    <![CDATA[
        import mx.collections.ArrayCollection;

        [Bindable] 
        public var stockDataAC:ArrayCollection = new ArrayCollection( [
            {date: new Date(2009,4), close: 41.71},
            {date: new Date(2009,5),close: 42.21},
            {date: new Date(2009,6), close: 42.11},
            {date: new Date(2009,7), close: 42.71},
            {date: new Date(2009,9), close: 42.99}
            ]);

        [Bindable] private var min:Date = new Date(2009,4);
        [Bindable]  private var max:Date = new Date(2010,3);

        private function formatDate(value:Date,previousValue:Date,axis:DateTimeAxis):String {               
            var dateLabel:String = df.format(value);

            return dateLabel;
        }
    ]]>
</mx:Script>

<mx:DateFormatter id="df" formatString="MMM YY"/>
<mx:Panel title="DateTimeAxis Example" height="100%" width="100%">

    <mx:LineChart id="mychart" height="100%" width="100%"
        paddingRight="5" paddingLeft="5" 
        showDataTips="true" dataProvider="{stockDataAC}">

        <mx:horizontalAxis>
            <mx:DateTimeAxis dataUnits="months" labelUnits="months" alignLabelsToUnits="false" labelFunction="formatDate" minimum="{min}" maximum="{max}"/>
        </mx:horizontalAxis>

        <mx:verticalAxis>
            <mx:LinearAxis baseAtZero="false" />
        </mx:verticalAxis>

        <mx:series>
            <mx:LineSeries yField="close" xField="date" displayName="AAPL"/>
        </mx:series>
    </mx:LineChart>

</mx:Panel>

1 Ответ

1 голос
/ 17 ноября 2009

Кажется, проблема в функции formatDate.

Попробуйте это:

private function formatDate(value:Date,previousValue:Date,axis:DateTimeAxis):String 
    {   
        trace("Current Value: " + value);            
        trace("Previous Value: " +previousValue);   
        trace("****");         
        var dateLabel:String = df.format(value);
        return dateLabel;
    }

И вы сможете увидеть в выводе, что даты по какой-то причине имеют другое время по Гринвичу, что вызывает проблему с форматированием:

Current Value: Sun Nov 1 00:00:00 GMT-0400 2009
Previous Value: Thu Oct 1 00:00:00 GMT-0400 2009
****
Current Value: Mon Nov 30 23:00:00 GMT-0500 2009
Previous Value: Sun Nov 1 00:00:00 GMT-0400 2009
****

Надеюсь, это поможет,

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...