Построение данных IoT с использованием Chart.js с линейным распределением осей времени - PullRequest
0 голосов
/ 09 ноября 2018

Я успешно построил платформу IoT с mongoDB и chart.js.

Я установил пару между показаниями датчика и отметкой времени в качестве метки.

Код Javascript:

for (var property in data) {
        if (data.hasOwnProperty(property)) {
            var varTag = property;
            var varData = data[property];
            var label = varData.name;
            var xLabels = [];
            var yValues = [];

            for (var i in varData.values) {
                // extract values
                yValues.push(varData.values[i][0]);
                // extract timestamp in a Date object and format the output in a string
                var t = new Date(varData.values[i][1]);
                // add formated timestamp to the array holding values for x axis
                //timeValues=moment(t).format("DD/MM/YYYY HH:mm");
                timeLabels=moment(t).clone().format("HH:mm:ss");
                //xValues.push(timeValues)
                xLabels.push(timeLabels)
            }
        }
        var ctx = document.getElementById(varTag+"_canvas").getContext("2d");

        var myChart=new Chart(ctx,{
            type: 'line',
            data:  {
                labels: xLabels,
                datasets: [{
                    label:label,
                    data:yValues,
                    backgroundColor:'rgba(255, 99, 132, 0.2)',
                    borderColor:'rgba(153, 102, 255, 1)',
                    borderWidth:1,
                    fill:false
                    }
                    ]
                    }

Но мне нужна временная метка не как метка, а как значение.

Проблема в том, что мое значение и метка времени являются отдельными массивами, например:

y = [val1, val2, val3, ..]
x = [дата1, дата2, дата3, ..]

в то время как формат файла chart.js следующий:

data: {
labels: label,
datasets: [{
  label: 'Demo',
  data: [{
      t: new Date("Date1"),
      y: 12
    },
    {
      t: new Date("Date2"),
      y: 21
    },
    {
      t: new Date("Date3"),
      y: 32
    }
  ],

У меня вопрос, как преобразовать мои массивы в формат chart.js (подобный объекту)?

...