Отображение суммы нескольких значений с помощью amCharts - PullRequest
0 голосов
/ 27 апреля 2018

Я хотел бы показать сумму нескольких значений в виде одного вывода диаграммы с amCharts. Я использую dataLoader с JSON для получения данных. Я знаю, что мне нужно создать функцию, но я не мог понять, как получить данные из dataLoader для вычисления

{
    "balloonText": "[[title]] of [[valueAxis]]:[[value]]",
    "lineThickness": 3,
    "id": "sumValue",
    "title": "sum Value",
    "valueField": (function() {
        var sumValues = "calculation";
        return sumValues
    }

эта попытка, вероятно, не верна, но я так и начал

{
    "balloonText": "[[title]] of [[valueAxis]]:[[value]]",
    "lineThickness": 3,
    "id": "LoadigTime",
    "title": "Loadig Time",
    "valueField": (function() {
      var sumValues = (HomePageLoad + LoginToParametersLoad + ParametersLoad + AlarmsLoad + SwitchSideLoad + LoginToAdminLoad + AdminLoad) / 7;
      return sumValues
      })
    }

1 Ответ

0 голосов
/ 27 апреля 2018

valueField не может быть функцией, это только строковая ссылка на поле в ваших данных.

Если диаграмма предназначена для отображения суммы всех этих полей в ваших данных в виде диаграммы, просто добавьте логику в ваш обратный вызов postProcess, чтобы создать новый набор данных, содержащий ваши суммы, например,

postProcess: function(data) {
  var newData = [];
  data.forEach(function(dataItem) {
    var item = {
      YOUR_CATEGORY_FIELD: dataItem.YOUR_CATEGORY_FIELD, //replace with your category field name
      sum: 0
    }; 
    //loop through your item's keys and sum everything up, filtering out
    //your category property
    item.sum = Object.keys(dataItem).reduce(function(sum, key) {
      if (key !== "YOUR_CATEGORY_FIELD") {
        sum += dataItem[key]
      }
      return sum;
    }, 0);
    newData.push(item);
  });
  return newData;
},
// ...
graphs: [{
   valueField: "sum",
   // other props here
}]
...