parseData method
void
parseData(
- Map<
String, Map< allDataMap,String, List< >ChannelItemInfo> > - List<
Series< allLineShowList,LinearSales, DateTime> > - List<
Series< lineShowList,LinearSales, DateTime> > - Map<
String, int> singleItemSumCostMap, - Map<
String, bool> singleItemShowMap, - List<
LineListItemBean> listViewDataList,
解析处理数据
Implementation
void parseData(
Map<String, Map<String, List<ChannelItemInfo>>> allDataMap,
List<charts.Series<LinearSales, DateTime>> allLineShowList,
List<charts.Series<LinearSales, DateTime>> lineShowList,
Map<String, int> singleItemSumCostMap,
Map<String, bool> singleItemShowMap,
List<LineListItemBean> listViewDataList,
) {
Map<String, List<LinearSales>> lineData = {};
int i = 0;
var keys = allDataMap.keys.take(days);
keys.forEach((dateStr) {
var dayItem = allDataMap[dateStr]!;
dayItem.forEach((channelName, value) {
var filterList = value.where((element) {
if (!platForms.contains(element.platformName)) {
platForms.add(element.platformName);
}
if (currentPlatForms == "全平台") {
return true;
} else {
return element.platformName == currentPlatForms;
}
}).map((e) => e.cost);
int sumCost = 0;
if (filterList.length > 0) {
sumCost = filterList.reduce((value, element) => value + element);
}
int averageCost = sumCost ~/ value.length;
//get all cost time
if (singleItemSumCostMap.containsKey(channelName)) {
singleItemSumCostMap[channelName] =
singleItemSumCostMap[channelName]! + averageCost;
} else {
singleItemSumCostMap[channelName] = averageCost;
}
if (!lineData.containsKey(channelName)) {
lineData[channelName] = [];
}
var chanNameLine = LinearSales(channelName, i, dateStr, averageCost);
lineData[channelName]!.add(chanNameLine);
});
i++;
});
i = 0;
singleItemSumCostMap.forEach((channelName, sumCost) {
double average = sumCost / allDataMap.length;
if (average > maxAverage) {
maxAverage = average;
}
listViewDataList.add(LineListItemBean(
channelName, linesColors[i++ % linesColors.length], average));
});
lineData.forEach((channelName, value) {
allLineShowList.add(charts.Series<LinearSales, DateTime>(
id: channelName,
colorFn: (LinearSales sales, __) {
return listViewDataList
.firstWhere((element) => element.name == channelName)
.lineColor;
},
domainFn: (LinearSales sales, _) {
var dateTime = DateFormat("yyyy-MM-dd").parse(sales.x);
return dateTime;
},
measureFn: (LinearSales sales, _) => sales.value,
data: value,
));
});
sortData(listViewDataList, desc);
filterLine(allLineShowList, singleItemShowMap, lineShowList);
}