【发布时间】:2011-05-10 13:05:37
【问题描述】:
当被要求显示弹性图时,我们从外部来源获得最小和最大时间,因此我们使用DateTimeAxis 来显示时间 (x) 轴。正因为如此,我们不能硬编码labelUnits 和interval,但是默认实现还有一些不足之处。有人知道帮助 DateTimeAxis 自动配置 labelUnits 和 interval 更有用的库吗?
在以下示例中,它在 01:04 放置第一个标签,在 01:18 放置下一个标签。什么? 01:15 和下一个 01:30 将是用户友好的。输入interval="15",我们得到 01:04 和 01:19 - 并没有好多少。
这是一个完整的例子。 (用这些minimum 和maximum 省略labelUnits 根本没有标签,所以我把它放进去):
<?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>
我宁愿不必重新发明轮子并根据以下公式计算 labelUnits 和 interval:
- 最短和最长时间
- 图形的宽度
- 字体大小
- 还有什么?
所以我希望我错过了一些东西或 AutoDateTimeAxis 或一些这样的实现.. ;-) 你知道吗?
【问题讨论】:
标签: apache-flex charts flex-charting