Uncaught TypeError: Невозможно прочитать свойство 'getTime' из неопределенного в CanvasJS - PullRequest
0 голосов
/ 15 октября 2018

Возникает проблема при обновлении точек данных диаграммы CanvasJS, и в сообщении об ошибке указывается

«Uncaught TypeError: Невозможно прочитать свойство 'getTime' из неопределенного».

Я также пытался сделать из него такой объект

var parLabels = JSON.stringify(labels);     
var obj = JSON.parse(parLabels);

Он все еще не работал.

index.html

<div id="chartContainer" style="height: 300px; width: 100%;"></div>

<script type="text/javascript>
$(function() {
  google.script.run.withSuccessHandler(showDaily).getData();
});
function showDaily(myObj) {
  var email = myObj.email;
  var entity = myObj.entity;
  var entity = JSON.parse(entity);
  var monthNames = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];
  var labels = '';
  for (var i = 1; i < entity.length; i++) {
    var month = new Date(entity[i][0]).getMonth();
    var day = new Date(entity[i][0]).getDate();
    var date = day + " " + monthNames[month];
    var score = entity[i][7];
    if (entity[i][2] != '') {
      if (labels != "") {
        labels = labels + ",{label:" + date + ",y:" + score + "}";
      } else {
        labels = "{label:" + date + ",y:" + score + "}";
      }
    }
  }
  var chart = new CanvasJS.Chart("chartContainer", {
    title: {
        text: "My First Chart in CanvasJS"              
    },
    data: [              
    {
        // Change type to "doughnut", "line", "splineArea", etc.
        type: "line",
        dataPoints: [ labels ]
    }
    ]
  });
  chart.render();
}

</script>

1 Ответ

0 голосов
/ 17 октября 2018

В CanvasJS dataPoints должен быть массивом объектов.Но в вашем случае это похоже на строку.Попробуйте изменить labels на массив и передать его в dataPoints, все будет работать нормально.

var labels = [];
for (var i = 1; i < entity.length; i++) {
    var month = new Date(entity[i][0]).getMonth();
    var day = new Date(entity[i][0]).getDate();
    var date = day + " " + monthNames[month];
    var score = entity[i][7];
    if (entity[i][2] != '') {   
        labels.push({label: date, y: score });
    }
}

, затем передайте его как dataPoints: labels.

...