Используйте данные из Underscore.js с гистограммой с накоплением Flot.js
У меня есть следующий Javascript внутри моего файла Twig, который создает исходный массив, который затем Underscore.js группирует по месяцам, а затем по WT. Я хочу взять данные из Underscore.js и передать их в Flot.js, чтобы составить столбчатую диаграмму с накоплением, каждый столбец которой соответствует месяцу, а затем столбец состоит из различных значений WT.
init.push(function () {
var Co2Data = [
{% for c2 in co2Output %}
{WT: '{{c2.wasteType}}', Month: '{{c2.completionDate}}', Weight:'{{c2.co2Saving}}'},
{% endfor %}
]
var groupedData = _.chain(Co2Data)
.groupBy('Month')
.map(function (group, key) {
return {
Month: key,
WTs: _.chain(group)
.groupBy("WT")
.map(function (group, key) {
return {
WT: key,
TotalWeight: _.reduce(group, function(memo, i){
return memo + parseFloat(i.Weight);
}, 0)
};
})
.value()
}})
.value();
var NewCo2Data = [
_.each(groupedData, function(m) {
{label: wt.WT, data: [[m.Month, wt.TotalWeight],]}
});
];
// Init Chart
$('#jq-flot-bars-2').pixelPlot(NewCo2Data, {
series: {
bars: {
show: true,
barWidth: .9,
align: 'center'
}
},
xaxis: { tickDecimals: 2 },
yaxis: { tickSize: 1000 }
}, {
height: 205,
tooltipText: "y + ' visitors at ' + x + '.00h'"
});
});
Однако, когда я загружаю это на мою страницу, я получаю следующую ошибку:
Ошибка синтаксиса: отсутствует; до заявления
{label: wt.WT, данные: [[m.Month, wt.TotalWeight],]}
Не уверен, почему это происходит?
1 ответ
Это не JavaScript:
var NewCo2Data = [
_.each(groupedData, function(m) {
{label: wt.WT, data: [[m.Month, wt.TotalWeight],]}
});
];
Вы не можете поместить заявление внутрь [...]
так же, как вы не можете использовать литерал объекта в этом контексте. Возможно, вы действительно хотите использовать _.map
:
var NewCo2Data = _.map(groupedData, function(m) {
return { label: wt.WT, data: [[m.Month, wt.TotalWeight]] };
});
_.map
используется для преобразования данных из одного формата в другой, _.each
просто перебирает коллекцию. У вас также была запятая в конце массива, некоторые движки JavaScript не будут об этом заботиться, а некоторые будут.