JSFiddle - React, Tailwind, and code Playground
by katsukino
HTML
<script src="https://canvasjs.com/assets/script/canvasjs.min.js"></script>
<br/><!-- Just so that JSFiddle's Result label doesn't overlap the Chart -->
<div id="chartContainer" style="height: 360px; width: 100%;"></div>
<input name="grpinf" type="hidden" id="grpinf" autopostback="False" value='{"Common":{"YMax":25.0,"YMin":0.0,"DataLineCol":"rgba(0,115,230,1)","LUVal":[16.0,19.0,22.0,7.7E+30],"LUName":["U1","U2","U3","undefined"],"LUCol":["rgba(255,162,68,0.2)","rgba(255,128,255,0.2)","rgba(150,150,150,0.2)","rgba(255,0,0,0.2)"],"LULineCol":["rgba(255,162,68,0.4)","rgba(255,128,255,0.4)","rgba(150,150,150,0.4)","rgba(255,0,0,0.4)"],"LLVal":[10.0,8.0,6.0,4.0],"LLName":["L1","L2","L3","L4"],"LLCol":["rgba(255,162,68,0.2)","rgba(255,128,255,0.2)","rgba(150,150,150,0.2)","rgba(255,0,0,0.2)"],"LLLineCol":["rgba(255,162,68,0.4)","rgba(255,128,255,0.4)","rgba(150,150,150,0.4)","rgba(255,0,0,0.4)"]},"Section":{"XMax":10.0,"XMin":0.0,"DataFillCol":"rgba(0,115,230,1)","FillCol":"rgba(182, 182, 182,1)","LineCol":"rgba(115,115,115,1)","Embank":22.0,"LabelPos":0.5,"DataCount":6,"SectionData":[[0.0,22.0],[1.0,22.0],[2.5,5.0],[7.5,5.0],[9.0,22.0],[10.0,22.0]]},"TimeChart":{"XMax":"2018-10-09T18:00:00","XMin":"2018-10-02T18:00:00","Xinterval":1.0,"Yinterval":5.0,"DataType":"line","Yrev":false,"LineWidth":2.0,"MarkSize":7.0,"MarkBorderCol":"rgba(0,115,230,1)"}}'>
JavaScript
let grp = JSON.parse(document.getElementById("grpinf").value);
let stripLines = [];
let i;
for (i = 0; i < 4; i++) {
if (grp.Common.LUVal[i] < 1.1E+30){
if (grp.Common.LUName[i] !=="undefined") {
stripLines.push({value:grp.Common.LUVal[i],thickness:2,showOnTop: true,color:grp.Common.LULineCol[i],labelAlign: "far",label:grp.Common.LUName[i],labelFontColor:"rgba(0,0,0,0.3)"});
}
if (grp.Common.LUVal[i + 1] < 1.1E+30){
stripLines.push({startValue:grp.Common.LUVal[i],endValue:grp.Common.LUVal[i+1],showOnTop: true,color:grp.Common.LUCol[i]});
} else {
stripLines.push({startValue:grp.Common.LUVal[i],endValue:grp.Common.YMax,showOnTop: true,color:grp.Common.LUCol[i]});
break;
}
}
}
let splineRange=[];
for (i = 0; i < 4; i++) {
if (grp.Common.LLVal[i] < 1.1E+30){
if (grp.Common.LLName[i] !== "undefined"){
stripLines.push({value:grp.Common.LLVal[i],thickness:2,showOnTop: true,color:grp.Common.LLLineCol[i]});
}
if (grp.Common.LLVal[i + 1] < 1.1E+30){
splineRange[i]=stripLines.push({startValue:grp.Common.LLVal[i],endValue:grp.Common.LLVal[i+1],showOnTop: true,color:grp.Common.LLCol[i]},{color:grp.Common.LLLineCol[i],showOnTop: true,labelAlign: "far",label:grp.Common.LLName[i],labelFontColor:"rgba(0,0,0,0.3)"});
} else {
splineRange[i]=stripLines.push({startValue:grp.Common.LLVal[i],endValue:grp.Common.YMin,showOnTop: true,color:grp.Common.LLCol[i]},{color:grp.Common.LLLineCol[i],showOnTop: true,labelAlign: "far",label:grp.Common.LLName[i],labelFontColor:"rgba(0,0,0,0.3)"});
break;
}
}
}
var chart = new CanvasJS.Chart("chartContainer", {
axisX: {
maximum:100,
},
axisY: {
maximum: grp.Common.YMax,
interval: grp.TimeChart.Yinterval,
stripLines: stripLines,
},
data: [{
type: "area",
dataPoints: [
{ x: 10, y: 20 },
{ x: 20, y: 23 },
{ x: 30, y: 24 },
{ x: 40, y: 22 },
{ x: 50, y: 18 },
{ x: 60, y: 16 },
{ x: 70, y: 15 },
{ x: 80,...