2017-08-11 9 views
0

私は時間ベースのデータを表示するためにウェブページを作成しました。ここに私のスクリプトの重要な部分である:chart.jsはIEのグラフを表示しません

function updateData(chart, label, data) { 
    chart.data.labels = label; 
    chart.data.datasets.forEach(function (dataset) { 
     dataset.data = data; 
    }); 
    chart.update(); 
} 

$(".lineChart").each(function() { 
     var current = $(this).attr("capteur") 
     var prop = $(this).attr("prop") 
     var color = null; 
     var type = $(this).attr("type") 

     switch ($(this).attr("type")) { 
      case "Gaz": { 
       color = getColor(1); 
       break; 
      } 
      case "Electricite": { 
       color = getColor(2); 
       break; 
      } 
      case "Eau": { 
       color = getColor(3); 
       break; 
      } 
     } 

     var datasets = []; 
     var labels = [] 

     if (datas[current][prop].lineChart.values) { 
      labels.push(datas[current][prop].lineChart.dates) 
      datasets.push({ 
       label: datas[current][prop].lineChart.nom, 
       fill: false, 
       borderColor: color, 
       backgroundColor: color, 
       pointRadius: 2, 
       data: datas[current][prop].lineChart.values 
      }); 
     } 

     datas[current][prop].lineChart.chart = new Chart($(this).get(), { 
      type: 'line', 
      data: { 
       labels: labels, 
       datasets: datasets 
      }, 
      options: { 
       scales: { 
        xAxes: [{ 
         type: 'time', 
         unit: 'day', 
         unitStepSize: 1, 
         time: { 
          displayFormats: { 
           'second': 'mm:ss', 
           'minute': 'HH:mm', 
           'hour': 'DD HH:mm', 
           'day': 'MMM DD', 
           'week': 'MMM DD', 
           'month': 'MMM DD', 
           'quarter': 'MMM DD', 
           'year': 'YYYY MMM', 
          } 
         }, 
         display: true, 
         scaleLabel: { 
          display: false, 
          labelString: datas[current][prop].lineChart.nom, 

         } 

        }], 
        yAxes: [{ 
         display: true, 
         scaleLabel: { 
          display: true, 
          labelString: datas[current][prop].lineChart.unite 
         } 
        }] 
       }, 
       tooltips: { 
        callbacks: { 
         title: function (tooltipItem, data) { 
          var maDate = new Date(data.labels[tooltipItem[0].index]); 
          return moment(data.labels[tooltipItem[0].index]).format('[Date ] DD/MM/YYYY HH:mm:ss '); 
         }, 
         label: function (tooltipItem, data) { 
          var amount = data.datasets[tooltipItem.datasetIndex].data[tooltipItem.index]; 
          var total = eval(data.datasets[tooltipItem.datasetIndex].data.join("+")); 
          return 'Valeur ' + amount + datas[current][prop].lineChart.unite; 
         }, 
         //footer: function(tooltipItem, data) { return 'Total: 100 planos.'; } 
        } 
       }, 
       title: { 
        display: true, 
        text: 'Consommation ' + type + ' instantanée' 
       } 
      } 
     }); 
    }) 

あなたがそこに見ることができるようにチャートは、IEを除いて、各ナビゲーターに細かい表示されます。

On Chrome

On IE

を私は何らかのエラーが予想されますが、コンソールには何も表示されません。そして、デバッガは、データが両方のウェブブラウザによって受信されたことを示すことができます。

私のコードはよく見えますか?

+0

http://www.chartjs.org/docs/latest/developers/#browser-サポート。あなたはどのバージョンのIEをテストしていますか? – Surely

+0

私はie9とエッジバージョンを使用します。しかし、私はキャンバスのために私は軸を得ることができるので、私はそれがラインカード –

+1

についてのみそれはおそらくこの問題に関連しているとは思わない:https://github.com/chartjs/Chart.js/issues/4294。最後の投稿には回避策があります。試してみてください。 – Surely

答えて

1

としては、確かには、initチャートの前に以下を追加する必要があります、問題を解決するために、言った:

if (Number.MAX_SAFE_INTEGER === undefined) { 
    Number.MAX_SAFE_INTEGER = 9007199254740991; 
} 
if (Number.MIN_SAFE_INTEGER === undefined) { 
    Number.MIN_SAFE_INTEGER = -9007199254740991; 
} 
関連する問題