问题描述
|
我是FLEX Developer的新手,我想将数据与对不同CollectionArrays的PHP调用分开,以便可以将数据用于条形图;
我创建了条形图的静态版本,并手动分离了Collection数组,我不想手动完成此操作,而需要动态进行。因此,我想了解的是,一旦构建了收集数组,那么如何将事件监听器添加到collectionArray的位置。使用该信息构建条形图...
/*
*
36,> 2 years,Compliance
6,0-90 Days,Compliance
32,181-365 Days,Compliance
72,366-730 Days,Compliance
15,91-180 Days,Compliance
4,Medium/Low
118,Medium/Low
143,Medium/Low
29,Medium/Low
67,Medium/Low
10,Patient Safety
2,Patient Safety
17,Patient Safety
18,Patient Safety
5,Patient Safety
*/
我需要以上信息
转换为底层信息
使用onload完成的事件监听器。
[Bindable]
public var _compliance:ArrayCollection = new ArrayCollection([
{Count:36,Time : \"> 2 years\" },{Count:6,Time : \"0-90 Days\" },{Count:32,Time : \"181-365 Days\" },{Count:72,Time : \"366-730 Days\" },{Count:15,Time : \"91-180 Days\" }
]);
[Bindable]
public var _medlow:ArrayCollection = new ArrayCollection([
{Count:4,Time : \"> 2 years\" },{Count:118,Time : \"0-90 Days\" },{Count:143,Time : \"181-365 Days\" },{Count:29,Time : \"366-730 Days\" },{Count:67,Time : \"91-180 Days\" }
]);;
[Bindable]
public var _patient:ArrayCollection = new ArrayCollection([
{Count:10,{Count:2,{Count:17,{Count:18,{Count:5,Time : \"91-180 Days\" }
]);;
解决方法
就像@J_A_X所说的那样,像这样的数据使事情变得更加困难,因为解析它成为您的工作。但是,没什么大不了的。您可以在此处做一些
split
工作来进行解析。假设您的行用\“ \\ n \”分隔,那么下面的命令应该起作用。我正在使用ActionLinq,它使数据处理变得轻而易举。
我假设您来自服务器的数据已放入名为serverData
的字符串中:
private function parseLine(line:String):Object {
var split:Array = line.split(\",\");
return { Count: Number(split[0]),Time: split[1],Category: split[2] };
}
private function getDataBy(category:String):ArrayCollection {
return Enumerable.from(serverData.split(\"\\n\"))
.select(parseLine)
.where(function(x:*):Boolean { return x.Category == category })
.toArrayCollection();
}
[Bindable] public var _compliance:ArrayCollection;
[Bindable] public var _medlow:ArrayCollection;
[Bindable] public var _patient:ArrayCollection;
然后,当您从服务器取回数据时,可以填充5英镑:
_compliance = getDataBy(\"Compliance\");
_medlow = getDataBy(\"Medium/Low\");
_patient = getDataBy(\"Patient Safety\");
,谢谢布莱恩
我的解决方案体积小且可重复使用,因此比我的解决方案好得多
getAllItemsResult是从调用到服务器的数据集。
public function setData():void{
var t_com:Object = new Object();
var t_med:Object = new Object();
var t_pat:Object = new Object();
for (var i:Object in getAllItemsResult.lastResult)
{
var n:Object = getAllItemsResult.lastResult[i];
var t:Object = new Object();
switch(n[\'Priority\']){
case \'Compliance\':
t = {
\'Count\' : getAllItemsResult.lastResult[i][\'THECOUNT\'],\'Time\': getAllItemsResult.lastResult[i][\'CAPA_AGE\']
}
t_com.addItem(t);
break;
case \'Medium/Low\':
t = {
\'Count\' : getAllItemsResult.lastResult[i][\'THECOUNT\'],\'Time\': getAllItemsResult.lastResult[i][\'CAPA_AGE\']
}
t_med.addItem(t);
break;
case \'Patient Safety\':
t = {
\'Count\' : getAllItemsResult.lastResult[i][\'THECOUNT\'],\'Time\': getAllItemsResult.lastResult[i][\'CAPA_AGE\']
}
t_pat.addItem(t);
break;
default:
break;
}
}
var sortArr:Array = new Array(\"0-90 Days\",\"91-180 Days\",\"181-365 Days\",\"366-730 Days\",\"> 2 years\");
//loop through array then add items to occording to array length
}
]]>
现在我要弄清楚如何对这些东西进行分类!