Диаграмма Google продолжает рисовать - PullRequest
0 голосов
/ 21 марта 2019

Итак, у меня есть этот график:

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


 function drawAxisTickColors() {
   var data = new google.visualization.DataTable();
   data.addColumn('datetime', 'Date');
   data.addColumn('number', 'value');

   var dateArr2 = (<?php echo json_encode($dateArr); ?>);
   console.log(dateArr2);

   var bitcoinArr = (<?php echo json_encode($numbers); ?>);
   console.log(bitcoinArr);

   bitcoinArr = bitcoinArr.map(Number);

  var array = [];

  var length = Math.min(dateArr2.length, bitcoinArr.length);
  for (var i = 0; i < length; ++i) {
     array.push([ new Date(dateArr2[i]), bitcoinArr[i] ]);
  }

   data.addRows(array);

  var control = new google.visualization.ControlWrapper({
  controlType: 'ChartRangeFilter',
  containerId: 'control_div',
  options: {
      filterColumnIndex: 0,
      ui: {
          chartOptions: {
              height: 50,
              width: 600,
              chartArea: {
                  width: '80%'
              }
          }
      }
  }
  });

  var chart = new google.visualization.ChartWrapper({
  chartType: 'LineChart',
  containerId: 'chart_div',
  options: {
    width: 620,
    chartArea: {
      width: '80%'
    },
    hAxis: {
      format: 'hh:ss',
      slantedText: false,
      maxAlternation: 1
    }
  }
  });

  function setOptions() {
  var firstDate;
  var lastDate;
  var v = control.getState();

  if (v.range) {
    document.getElementById('dbgchart').innerHTML = v.range.start + ' to ' + v.range.end;
    firstDate = new Date(v.range.start.getTime() + 1);
    lastDate = new Date(v.range.end.getTime() - 1);
    data.setValue(v.range.start.getMonth(), 0, firstDate);
    data.setValue(v.range.end.getMonth(), 0, lastDate);
  } else {
    firstDate = data.getValue(0, 0);
    lastDate = data.getValue(data.getNumberOfRows() - 1, 0);
  }

  var ticks = [];
  for (var i = firstDate.getMonth(); i <= lastDate.getMonth(); i++) {
    ticks.push(data.getValue(i, 0));
  }

  chart.setOption('hAxis.ticks', ticks);
  chart.setOption('hAxis.viewWindow.min', firstDate);
  chart.setOption('hAxis.viewWindow.max', lastDate);
  if (dash) {
    chart.draw();
  }
  }

  setOptions();

  google.visualization.events.addListener(control, 'statechange', setOptions);

   var dash = new google.visualization.Dashboard(document.getElementById('dashboard'));
   dash.bind([control], [chart]);
  dash.draw(data);
}

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

enter image description here

Как видите, диаграмма хранит старые данные, это замедляет мой сайт. Я попытался выполнить clearChart (), но мой график содержит ошибку или выдает ошибку:

clearchart is not a function

Я тоже пробовал это:

Постоянная перерисовка памяти Google Chart Увеличение

но это, похоже, не работает для меня.

Что я делаю не так? Пожалуйста, помогите.

1 Ответ

1 голос
/ 13 мая 2019

Я решил это

не вызывайте API Google 100 раз

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...