Я действительно застрял здесь, пытаясь окунуться в высокие диаграммы в сочетании с циклами getjson и javascript (это следует из предыдущего вопроса - How to generate highcharts chart from multiple local json files).Использование функции addChart для высоких чартов в вызове getJSON (цикл по нескольким локальным файлам)
По сути, я пытаюсь создать бархат с высоким диагонали, который содержит несколько категорий и серий. У меня есть несколько локальных json-файлов, каждый из которых содержит подсчеты различной информации. Я хочу прокрутить каждый файл категории, прочитать счетчик и добавить результат в эту конкретную серию (а затем нарисовать ее). Я использую $ .getJSON внутри цикла, который перебирает файлы (я думаю, что теперь у меня это работает, обернув его в функцию (см. Код ниже)). Тем не менее, я также пытаюсь использовать «chart.addSeries» в highchart, чтобы добавить каждую новую серию в диаграмму (т. Е. Номер сериала в коде). То, как я его закодировал в настоящее время, означает, что мне нужно вернуть номер сериала обратно из вызова getJSON - я знаю, что это неверно и вместо этого нужно выполнить дальнейшую обработку внутри вызова getJSON. И это та часть, где я застрял - я не уверен, как я могу справиться с добавлением новых серий внутри вызова getJSON как часть эволюционирующего добавления нескольких серий.
Надеюсь, что это имеет смысл, и, возможно, сам код поможет.
(Просто добавить, что большая часть кода, кажется, работает, как ожидалось - это заключительная часть, что я не могу понять)
Спасибо за любые советы.
$(document).ready(function() {
var options = {
// standard highcharts options set here....
series: []
};
//the series to loop through
var fileTypes = new Array('SeriesTypeA',
'SeriesTypeB');
//the categories to loop through
var mfiles = new Array('/assets/Cat1.json',
'/assets/Cat2.json',
'/assets/Cat3.json',
'/assets/Cat4.json',
'/assets/Cat5.json',
'/assets/Cat6.json',
'/assets/Cat7.json');
//plot the initial empty chart
var chart = new Highcharts.Chart(options);
//Loop over the different files and do a count for each
for (var i=0; i<fileTypes.length; i++) {
var seriescount = [];
for (var j=0; j < mfiles.length; j++) {
(function(i, j, seriescount){ //force the local i and j
$.getJSON(mfiles[j], function(data) {
// get the count of files
var count = 0;
var index = 0;
var entry;
for (index = 0; index < data.length; ++index) {
entry = data[index];
if (entry.file_processing_status == fileTypes[i]) {
count ++;
}
};
seriescount.push(count);
return seriescount; //This is not correct
});
})(i, j, seriescount);
}
//add the results to make a new series
chart.addSeries({
name: fileTypes[i],
data: seriescount //as expected I don't get seriescount at this stage
}, false);
};
//and now redraw the final chart
chart.redraw();
});
Спасибо, Пауэл, это то, что мне нужно. С помощью этого счетчика он работает так, как я хотел. Я буду работать над очисткой кода в отношении ваших первых комментариев. – GerryDevine