Я довольно новичок в Node-red и HTML, надеюсь, я смогу получить помощь на этом форуме. У меня есть HTML скрипт в основном узле шаблона. По запросу GET скрипт выводит линейный график из массива данных. Данные сохраняются в массиве контекста потока var другим узлом, и мне нужен узел сценария HTML, чтобы прочитать эти данные и построить их. Все отлично работает с массивом смоделированных данных, который я генерирую «внутри» скрипта HTML, но я не мог понять, как получить фактические данные из контекста потока var (см., Где находится TODO). Заранее благодарю за любую помощь.
<!DOCTYPE HTML>
<html>
<head>
<script>
window.onload = function () {
var options = {
exportEnabled: true,
animationEnabled: true,
animationDuration: 200,
theme: "light2",
title :{
text: "Simple Line Chart"
},
axisY: {
includeZero: false
},
data: [{
type: "spline",
indexLabelFontSize: 16,
dataPoints: []
}]
};
var xVal = 0;
var yVal = 100;
var updateInterval = 2000;
var WaveData = [];
// TODO temporary random data
var createWaveData = function () {
var srcData = flow.get('Pressure') || [];
WaveData = srcData;
/* WaveData = [];
var count = 50;
for ( var j = 0; j <count; j++) {
yVal = yVal + Math.round(5 + Math.random() *(-5-5));
WaveData.push(yVal);
}*/
}
// when plotting next WaveData, let it start from x = 0
var updateChart = function (cnt) {
createWaveData();
options.data[0].dataPoints = [];
for (var j = 0; j < cnt; j++) {
yVal = WaveData[j];
options.data[0].dataPoints.push({y: yVal});
}
(new CanvasJS.Chart("chartContainer", options)).render();
};
setInterval(function(){ updateChart(WaveData.length) }, updateInterval);
}
</script>
</head>
<body>
<div id="chartContainer" style="height: 370px; width:100%;"></div>
<script src="https://canvasjs.com/assets/script/canvasjs.min.js"></script>
</body>