开发者

Flex DateTimeAxis: Control over what times get used?

开发者 https://www.devze.com 2023-03-05 07:18 出处:网络
We get minimum and maximum times from an external source when asked to display a flex graph, and so we use a DateTimeAxis to display the time (x) axis. Because of this, we can\'t hard-code labelUnits

We get minimum and maximum times from an external source when asked to display a flex graph, and so we use a DateTimeAxis to display the time (x) axis. Because of this, we can't hard-code labelUnits and interval, but the default implementation leaves something to be desired. Does anybody know of libraries that help DateTimeAxis autoconfigure labelUnits and interval more usefully?

In the following example, it puts in the first label at 01:04 and the next at 01:18. What the? 01:15 and the next at 01:30 would be user-friendly. Putting in an interval="15", and we get 01:04 and 01:19 - not really much better.

Here is a complete example. (Omitting labelUnits with these minimum and maximum results in no labels at all, so I put it in):

<?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>

Gives this

Flex DateTimeAxis: Control over what times get used?

I'd rather not have to re-invent the wheel and calculate labelUnits and interval based on:

  • minimum and maximum time
  • the width of the graph
  • the font size
  • anything else?

So I'm hoping I missed something or for an AutoDateTimeAxis or some such implementation.. ;-) Do you know of any?


I had a similar problem with the DateTimeAxis and ended up using a category axis instead, using a custom label function to format the date labels.

There is a similar bug to do with daylight savings time which will rear its head if your range spans both DST and non DST, the interval will never match due to the extra/missing hours in the overlap.

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号