从chartwrapper视图获取数据并转换为json

山姆

我正在使用Chartwrapper渲染图表。应用视图过滤器后,我想从chartwrapper中提取数据。如何从Chart Wrapper中获取过滤后的数据并转换为Json?

var viewRows = trendsData.getFilteredRows([{column: trendsData.getColumnIndex('p_type'), value: prd}]);

var wrapper = new google.visualization.ChartWrapper({
      chartType: 'LineChart',
      dataTable: trendsData,
      containerId: 'trends_div',
      options: {
                  curveType: 'function',
                  height: 350,
                  legend: {position: 'right', alignment: 'center'},
                  lineWidth: 3,
                  title: trendMetricLabel + ' By ' + period,
                  theme: 'material',
                    hAxis: {
                        titleTextStyle:{fontSize: 12},
                        columnType: 'String',
                        showTextEvery: showTextInterval,
                        maxAlternation:1,
                        slantedText:'true', 
                        slantedTextAngle:'40',
                        viewWindowMode: 'pretty',
                        textStyle: {fontSize: 12}
                    },
                    vAxis: {
                        format: 'short',
                        minValue: 0,
                        viewWindow: {
                                min: 0
                            }
                    },
                    series: {
                            0: { color: '#e7711b' }
                  }
            }
    });

    wrapper.setView({
            columns: [3,4,5,6],
            rows: viewRows
        });
白帽

1)从包装器的数据表创建数据视图

var dataView = new google.visualization.DataView(wrapper.getDataTable());

2)从包装器视图设置列和行

dataView.setColumns(wrapper.getView().columns);
dataView.setRows(wrapper.getView().rows);

3)将数据视图转换为数据表,然后转换为json

dataView.toDataTable().toJSON()

请参阅以下工作片段...

google.charts.load('current', {
  callback: drawChart,
  packages: ['controls', 'corechart']
});

function drawChart() {
  var trendsData = new google.visualization.DataTable();
  trendsData.addColumn("string", "Date");
  trendsData.addColumn("number", "Retailer 1");
  trendsData.addColumn("number", "Retailer 3");
  trendsData.addColumn("number", "Retailer 2");

  trendsData.addRows([
    ["01/12", 160, {v: 208, f: '208'},{v: 320, f: '320'}],
    ["02/12", 570, {v: 741, f: '741'},{v: 1140, f: '1140'}],
    ["03/12", 385, {v: 497, f: '497'},{v: 770, f: '770'}],
    ["04/12", 328, {v: 425, f: '425'},{v: 656, f: '656'}],
    ["05/12", 445, {v: 577, f: '577'},{v: 890, f: '890'}],
    ["06/12", 406, {v: 525, f: '525'},{v: 812, f: '812'}],
    ["07/12", 249, {v: 475, f: '475'},{v: 772, f: '772'}]
  ]);

  var wrapper = new google.visualization.ChartWrapper({
    chartType: 'LineChart',
    containerId: 'trends_div',
    dataTable: trendsData,
    options: {
      curveType: 'function',
      height: 350,
      legend: {
        position: 'right',
        alignment: 'center'
      },
      lineWidth: 3,
      //title: trendMetricLabel + ' By ' + period,
      theme: 'material',
      hAxis: {
        titleTextStyle: {
          fontSize: 12
        },
        columnType: 'String',
        //showTextEvery: showTextInterval,
        maxAlternation: 1,
        slantedText: true,
        slantedTextAngle: 40,
        viewWindowMode: 'pretty',
        textStyle: {
          fontSize: 12
        }
      },
      vAxis: {
        format: 'short',
        minValue: 0,
        viewWindow: {
          min: 0
        }
      },
      series: {
        0: {
          color: '#e7711b'
        }
      }
    },
    view: {
      columns: [0, 1],
      rows: [0, 2, 4, 6]
    }
  });

  google.visualization.events.addListener(wrapper, 'ready', function () {

    // create view from wrapper data table
    var dataView = new google.visualization.DataView(wrapper.getDataTable());

    // set columns / rows
    dataView.setColumns(wrapper.getView().columns);
    dataView.setRows(wrapper.getView().rows);

    // convert view to data table, then json
    document.getElementById('json_div').innerHTML = dataView.toDataTable().toJSON();
  });

  wrapper.draw();
}
<script src="https://www.gstatic.com/charts/loader.js"></script>
<div id="trends_div"></div>
<div id="json_div"></div>

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章