javascript - Kendo堆积柱形图分组错误

标签 javascript kendo-ui kendo-chart

我有这样的数据

enter image description here

这是我的 Json 数据格式

[{  "Value1":"B95 ",
"Value2":1.2600,
"ChartType":"column",
"ChartDescription":"Fuel Sales Quantity",
"Value3":"2015-07-27",
"SeriesField":"Value2",
"CategoryField":"Value3",
"IsGroup":true,
"IsStacked":true,
"GroupValue":"Value1",
"SortValue":"Value3"},

{"Value1":"B93",
"Value2":8.2100,
"ChartType":"column",
"ChartDescription":"Fuel Sales Quantity",
"Value3":"2015-07-22",
"SeriesField":"Value2",
"CategoryField":"Value3",
"IsGroup":true,
"IsStacked":true,
"GroupValue":"Value1",
"SortValue":"Value3"}]

我只想用剑道柱形图创建每天的分组堆叠图表 但是当我绘制这张图表时,我有 6 个独特的一天,但图表仅显示 4 天 这里的图表示例... enter image description here

数据混合或相互转移...

这是我的 JavaScript 代码

function createChart(number) {
$("#chart-" + number).kendoChart({
    dataSource: myData,
    title: {
        text: title
    },
    legend: {
        visible: true,
        position: "bottom",
        labels: {
            template: '#: chartType == "pie" ? dataItem.Value1 : chartType == "donut" ? dataItem.Value1 : text #'
        }
    },
    seriesDefaults: {
        type: chartType,
        stack: stackValue
    },
    series: series,
    valueAxis: {
        labels: {
            format: "{0}"
        }
    },
    categoryAxis: categories,
    tooltip: {
        visible: true,
        format: "{0}",
        template: "#= dataItem.Value1 #: #= kendo.format('{0:N}',value)  #"
    }
});

}

$(document).ready(function () {
    $.ajax({
        url: '../Dashboards/QuerySelected',
        data: { id: number, from: fromdate, to: todate, fleet: fleetident },
        success: function (data) {
            if (data.length != 0) {
                    if (data[0].IsGroup) {
                        myData = {
                            data: data,
                            group:{
                                field: data[0].GroupValue
                            },
                            sort: {
                                field: data[0].SortValue,
                                dir: "asc"
                            }
                        }

                    }
                    else {
                        myData = data
                    }

                    series = [{
                        field: data[0].SeriesField
                    }];

                    categories = {
                        field: data[0].CategoryField
                    }
                    stackValue = data[0].IsStacked;
                    chartType = data[0].ChartType;
                    title = data[0].ChartDescription;

                    createChart(number);
            }
        }
    });
}

我在图表上分组或排序时是否可能出错? 我怎么解决这个问题 谢谢 Solr

最佳答案

您可以将 JavaScript 中的数据转换为如下所示:

[
    {"Category": "2015-08-10", "B93": 1.2500, "DIESEL": 1.6, "B95": 0 },
    {"Category": "2015-08-06", "B93": 0, "DIESEL": 1.68, "B95": 0 }
]

一种方法是:

  var ToolTipTemplate = "#= dataItem.Value1 #: #= kendo.format('{0:N}',value)  #";
  if (data.length != 0) {
    if (data[0].IsGroup) {
      var uniqueGroups = [];
      var transformedData = [];
      series = [];

      myData = new kendo.data.DataSource({
            data: data,
            group: {
                field: data[0].GroupValue
            },
      });
      myData.fetch(function () {
          var v = this.view();
          for (var i=0; i<v.length; i++){
            uniqueGroups.push(v[i].value)
            series.push({
              name: v[i].value,
              field: v[i].value,
              categoryField: "Category",
            });
          }                
       });

      myData = new kendo.data.DataSource({
        data: data,
        group: {
          field: data[0].SortValue
        },
        sort: {
          field: data[0].SortValue,
          dir: "asc"
        },
      });

      myData.fetch(function () {
        var v = this.view();
        for (var i=0; i<v.length; i++){
          var dataPoint = {"Category": v[i].value};
          for (var j=0; j<uniqueGroups.length; j++){
            dataPoint[uniqueGroups[j]] = 0;
          }
          for (var k=0; k<v[i].items.length; k++){
            dataPoint[v[i].items[k][v[i].items[k].GroupValue]] = v[i].items[k][v[i].items[k].SeriesField];
          }
          transformedData.push(dataPoint);            
        } 
      });

      console.log(transformedData);
      myData = transformedData;

      ToolTipTemplate = "#= series.name #: #= kendo.format('{0:N}',value)  #";          

    }
    else {
      myData = data
      series = [{
        field: data[0].SeriesField
      }];

      categories = {
        field: data[0].CategoryField
      }

    }

<强> DEMO

关于javascript - Kendo堆积柱形图分组错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35891990/

相关文章:

javascript - 多维字典中的二分查找?

javascript - 通过 "outside the document"标签的javascript获取标签内容

javascript - 配置 MailDev 将邮件中继到外部服务器

javascript - 将 prop 传递给子级会导致所有所有者重新渲染

javascript - 使用 javascript-kendo 网格退出编辑模式

javascript - 尝试使用 Excel VBA 从剑道弹出窗口中提取值

javascript - 当鼠标悬停事件发生时出现光标可点击图标

asp.net-mvc - Kendo图表y轴标签问题

javascript - 添加行后编辑时剑道网格行消失

javascript - Kendo UI 图表类型范围列堆叠系列