Я успешно построил платформу 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 (подобный объекту)?