图表的数据提供者包含一组设施对象。设施对象由几个部分组成,分别表示安装 ID、设施编号和设施名称,如下所示:
{
installationID:1000,
facilityNum:529,
facilityName:"Building1"
}
我有一张图表,描述了每栋建筑的能源消耗。图表中可能显示了来自几个不同地区的建筑物。我想要:
- 将同一区域内的所有建筑物组合在一起。
- 仅在启动新组时才包含区域标签。
- 在网格中对齐标签部分,以便:
- 所有区域标签都彼此左对齐。
- 所有建筑物 ID 彼此右对齐。
- 建筑物名称彼此左对齐。
下图中显示的所需输出示例。
使用应用于类别轴的自定义标签函数,我可以将值连接成一个字符串。通过对数组区域 ID 进行排序,我什至可以删除(而不是添加)区域 ID,除非新组正在启动。此处显示了自定义标签功能。
private var nextCategoryIndex:int = 1;
public function facilitiesLabelFunction(categoryValue:Object, previousCategoryValue:Object, axis:CategoryAxis, categoryItem:Object):String
{
var nextInstallationID:String = "";
var facilitiesColl:ArrayCollection = ArrayCollection(axis.dataProvider);
// if this is not the last facility to be processed get the next installation ID
if (nextCategoryIndex <= facilitiesColl.length - 1) {
nextInstallationID = facilitiesColl[nextCategoryIndex].installationID;
}
var label:String = categoryItem.facilityNum + " - " + categoryItem.facilityName;
// preppend the installation id when we start listing facilities from a different installation
if (nextInstallationID != categoryItem.installationID) {
label = categoryItem.installationID + " " + label;
}
nextCategoryIndex++;
return label;
}
但是,这会生成一个右对齐的单数字符串(如预期的那样)。我要实现的就是上述三个属性的左、右、左对齐。
我试图将标签函数中的属性值与“@”连接起来作为分隔符。我的想法是我可以创建自定义标签渲染器,它将在此分隔符上拆分字符串并根据需要执行对齐。但是,我似乎无法在自定义标签渲染器中更改标签的对齐方式。
如何在 Flex Chart 中对齐网格中的多部分标签?