Google chart dont add row

Viewed 38

For some reason i cant add any row, tried a lot of possibilities and still didnt worked.

Code below:

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

var dataChart1 = new google.visualization.arrayToDataTable();

dataChart1.addColumn('string', 'Mês');
dataChart1.addColumn('number', 'Fora Ponta');
dataChart1.addColumn('number', 'Geração Solar');

dataChart1 = addRows([
    ['JAN', $('#janConsumo').val(), 300],
    ['FEV', $('#fevConsumo').val(), 350],
    ['MAR', $('#marConsumo').val(), 400],
    ['ABR', $('#abrConsumo').val(), 350],
    ['MAI', $('#maiConsumo').val(), 300],
    ['JUN', $('#junConsumo').val(), 350],
    ['JUL', $('#julConsumo').val(), 350],
    ['AGO', $('#agoConsumo').val(), 450],
    ['SET', $('#setConsumo').val(), 400],
    ['OUT', $('#outConsumo').val(), 350],
    ['NOV', $('#novConsumo').val(), 300],
    ['DEZ', $('#dezConsumo').val(), 250]
]);

var optionsChart1 = {
    titlePosition: 'none',
    legend: {
        position: "bottom"
    },
    seriesType: 'bars',
    series: { 1: { type: 'line' } },
    height: 300,
    width: 800,
    colors: ['orange', 'red']
};    

chart = new google.visualization.ComboChart(document.getElementById('chart_div'));
chart.draw(dataChart1, optionsChart1);

I have a button that calls this code.

The error that i got:

Uncaught Error: Data for arrayToDataTable is not an array.
1 Answers

for one, need to wait until google has finished loading.
you can use the promise the load statement returns, see following snippet...

google.charts.load('current', {
  packages: ['corechart']
}).then(function () {
  var dataChart1 = new google.visualization.DataTable();
  dataChart1.addColumn('string', 'Mês');
  dataChart1.addColumn('number', 'Fora Ponta');
  dataChart1.addColumn('number', 'Geração Solar');
  dataChart1.addRows([
    ['JAN', $('#janConsumo').val(), 300],
    ['FEV', $('#fevConsumo').val(), 350],
    ['MAR', $('#marConsumo').val(), 400],
    ['ABR', $('#abrConsumo').val(), 350],
    ['MAI', $('#maiConsumo').val(), 300],
    ['JUN', $('#junConsumo').val(), 350],
    ['JUL', $('#julConsumo').val(), 350],
    ['AGO', $('#agoConsumo').val(), 450],
    ['SET', $('#setConsumo').val(), 400],
    ['OUT', $('#outConsumo').val(), 350],
    ['NOV', $('#novConsumo').val(), 300],
    ['DEZ', $('#dezConsumo').val(), 250]
  ]);

  var optionsChart1 = {
      titlePosition: 'none',
      legend: {
          position: "bottom"
      },
      seriesType: 'bars',
      series: { 1: { type: 'line' } },
      height: 300,
      width: 800,
      colors: ['orange', 'red']
  };

  chart = new google.visualization.ComboChart(document.getElementById('chart_div'));
  chart.draw(dataChart1, optionsChart1);
});

also, in this situation, you'll want to use --> google.visualization.DataTable()

not --> google.visualization.arrayToDataTable()

see arrayToDataTable for more details...

arrayToDataTable expects the data to be passed when it is called.

Related