var errorTable;
var lastNode;
var jqxhr = $.getJSON("assets/errorTable.json", function(json) {
errorTable = json;
});
var errorArray = [];
var switchNumber = 0;
passString('OW');
var wellTBA = [];
var wellNameLists = [];
var isAll = true;
var isCompare = false;
var saveCheckCompare = "";
//Pass monitor equipment's name to index.php select form
function passString(option) {
window.localStorage.setItem("option", option);
}
function GetWellName(wellName) {
showWell(wellName, true);
}
function submitForm() {
document.getElementById("CSVform").submit();
}
function GetWellNameList(wellNameList) {
window.localStorage.setItem("wellNameList", wellNameList);
}
//display well name and send its name to showWell function
function displayWellInfo2() {
$.ajax({
url: './script/php/getWellName.php',
complete: function(response) {
console.log("Get well name: ");
console.log(response);
if (response.responseText != "") {
showWell(response.responseText, false);
}
},
error: function() {
}
});
}
var sparklinePieData = [];
function getCheckValue() {
var dataArray = [];
var phase = document.getElementById("phase").value;
var option = window.localStorage.getItem("option");
for (i = 0; i < errorTable.length; i++) {
if (errorTable[i].table_name == option) {
var method = errorTable[i].method;
var table_name = errorTable[i].table_name + "data";
var warning1 = errorTable[i].warning1;
var warning2 = errorTable[i].warning2;
var warning_Count = errorTable[i].warning_Count;
}
}
$.ajax({
url: "./script/php/checkValue2.php",
data: {
method: method,
table_name: table_name,
warning1: warning1,
warning2: warning2,
warning_Count: warning_Count,
phase: phase
},
async: false,
contentType: "application/json",
dataType: "json"
})
.success(function(response) {
dataArray = response['wellTBA'];
for (var i = 0; i < dataArray.length; i++) {
dataArray[i] = dataArray[i].replace('_', '-');
}
var normal_count = response['normal_count'];
var abnormal_count = response['abnormal_count'];
sparklinePieData = [normal_count, abnormal_count];
var all = normal_count + abnormal_count;
var percent = abnormal_count / all;
var url = "assets/javascripts/ui-elements/pie.charts.js";
var script = document.createElement('script');
script.setAttribute('type', 'text/javascript');
script.setAttribute('src', url);
document.getElementsByTagName('head')[0].appendChild(script);
document.getElementById("percent").innerHTML = Math.round(percent * 100) + "%";
})
.error(function() {
//alert("錯誤統計未正常獲取");
})
.complete(function() {});
return dataArray;
}
function GetCheckAllAJAXValue() {
errorArray = [];
var phase = document.getElementById("phase").value;
for (i = 0; i < errorTable.length; i++) {
var method = errorTable[i].method;
var option = errorTable[i].table_name;
var table_name = errorTable[i].table_name + "data";
var warning1 = errorTable[i].warning1;
var warning2 = errorTable[i].warning2;
var warning_Count = errorTable[i].warning_Count;
$.ajax({
url: "./script/php/checkValue2.php",
data: {
method: method,
table_name: table_name,
warning1: warning1,
warning2: warning2,
warning_Count: warning_Count,
phase: phase
},
async: false,
contentType: "application/json",
dataType: "json"
})
.success(function(response) {
var normal_count = response['normal_count'];
var abnormal_count = response['abnormal_count'];
var all_count = 0 + normal_count + abnormal_count;
document.getElementById(option).innerHTML = "(" + abnormal_count + "/" + all_count + ")";
errorArray.push(abnormal_count);
})
.error(function() {
alert("錯誤統計未正常獲取");
})
.complete(function() {});
}
}
function CheckCompare(){
var option = window.localStorage.getItem("option");
var text = "";
if(option == "ELP" || option == "OW"){
if(option == "ELP"){
text = "水壓計";
}else if(option == "OW"){
text = "水位觀測井";
}
var checkBox = document.getElementById("compareCheck");
if (checkBox.checked == true){
document.getElementById("tableName").innerHTML = option + text + '總表';
isCompare = true;
} else {
document.getElementById("tableName").innerHTML = saveCheckCompare;
isCompare = false;
}
if(option == "ELP")
displayChart("ELP-1","myChart");
else if(option == "OW")
displayChart("OW-1","myChart");
}
}
function CheckError(){
var checkBox = document.getElementById("errorCheck");
if (checkBox.checked == true){
isAll = false;
} else {
isAll = true;
}
SetList();
}
function uploadCSV() {
var input = $("#fileToUpload");
var inputLength = input[0].files.length; //No of files selected
var file;
var formData = new FormData();
for (var i = 0; i < inputLength; i++) {
file = input[0].files[i];
formData.append('fileToUpload[]', file);
}
$.ajax({
url: "./script/php/upload.php",
type: "POST",
data: formData,
processData: false,
contentType: false,
beforeSend: function() {
}
}).done(function(data) {
console.log(data);
var stack_bar_top = {
"dir1": "down",
"dir2": "right",
"push": "top",
"spacing1": 0,
"spacing2": 0
};
if (data.includes("IS")) {
var notice = new PNotify({
title: '通知',
text: '上傳成功!',
type: 'success',
addclass: 'stack-bar-top',
stack: stack_bar_top,
width: "100%"
});
} else {
var notice = new PNotify({
title: '通知',
text: '上傳失敗!',
type: 'error',
addclass: 'stack-bar-top',
stack: stack_bar_top,
width: "100%"
});
}
}).error(function() {
});
}
//get well info from sql server
function showWell(str, changeCamera) {
var strLocal = "";
var executed = false;
var xhttp;
isCompare = false;
document.getElementById("compareCheck").checked = false;
if (str == "") {
document.getElementById("dataTable").innerHTML = "";
return;
}
strLocal = str;
/*if(str.includes("ELP")){
if(str.includes("A")){
strLocal = str + ',' + str.replace('A','-1A');
}else{
strLocal = str + ',' + str + '-1';
}
} */
document.getElementById("monitorSelect2").innerHTML = strLocal;
xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
if (str.includes("HM") && !str.includes("HM-"))
str = str.replace("HM", "HM-");
document.getElementById("tableName").innerHTML = strLocal + "資料表";
saveCheckCompare = strLocal + "資料表";
displayChart(str, "myChart");
reset();
console.log("Show well: " + str);
//SIS SID TI RS... don't have models yet, so I can't set the main camera to selected equipment yet
if (str.includes("HM")) {
str = str.replace("HM-", "HM");
}
myGameInstance.SendMessage("MainCamera", "GetDataFromWebGL", str);
if (!changeCamera) {
ResetCamera();
}
//Display data in datatable form
document.getElementById("dataTable").innerHTML = this.responseText;
$('#dataTable').DataTable();
}
};
xhttp.open("GET", "./script/php/getData2.php?q=" + str, true);
xhttp.send();
}
//Display chart
function displayChart(str, elementID) {
var xhttp;
xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
if (str.includes("ELP") || str.includes("OW") || str.includes("SM") || str.includes("SB") || str.includes("SBM") || str.includes("VG") || str.includes("HM")) {
//Split the response text into well name array, date array and value array
var v_variables = this.responseText.split("*");
var c_wellName = v_variables[0];
var c_m_date = v_variables[1].split(" ");
var c_m_value = v_variables[2].split(" ");
//console.log(c_m_value);
//Start to make the chart
if(isCompare){
displayCompareChart();
}else{
init(c_wellName, c_m_date, c_m_value, elementID);
}
} else if (str.includes("TI")) {
var v_variables = this.responseText.split("*");
var c_wellName = v_variables[0];
var c_m_date = v_variables[1].split(" ");
var c_m_value = v_variables[2].split(" ");
//Multiple line
var c2_wellName = v_variables[3];
var c2_m_date = v_variables[4].split(" ");
var c2_m_value = v_variables[5].split(" ");
if(isCompare){
displayCompareChart();
}else{
init2(c_wellName, c_m_date, c_m_value, c2_wellName, c2_m_date, c2_m_value, elementID);
}
} else if (str.includes("SIS") || str.includes("SID")) {
var v_variables = this.responseText.split("*");
var c_m_date = v_variables[0].split(" ");
var c_m_depth = v_variables[1].split(" ");
var c_m_valueArray = v_variables[2].split("//");
//Abnormal value, don't know why it happened so I brute force it
c_m_valueArray[0] = c_m_valueArray[0].replace("0.4770.468", "0.477 0.468");
var dateCount = c_m_date.length;
let c_m_value = [];
for (x = 0; x < dateCount; x++) {
c_m_value[x] = c_m_valueArray[x].split(" ");
}
initSISSID(c_m_date, c_m_depth, c_m_value, elementID, str);
} else if (str.includes("RS")) {
var v_variables = this.responseText.split("*");
var c_wellName = v_variables[0];
var c_m_date = v_variables[1].split(" ");
var c_m_value = v_variables[2].split(" ");
var c2_wellName = v_variables[3];
var c2_m_date = v_variables[4].split(" ");
var c2_m_value = v_variables[5].split(" ");
var c3_wellName = v_variables[6];
var c3_m_date = v_variables[7].split(" ");
var c3_m_value = v_variables[8].split(" ");
var c4_wellName = v_variables[9];
var c4_m_date = v_variables[10].split(" ");
var c4_m_value = v_variables[11].split(" ");
var c5_wellName = v_variables[12];
var c5_m_date = v_variables[13].split(" ");
var c5_m_value = v_variables[14].split(" ");
var c6_wellName = v_variables[15];
var c6_m_date = v_variables[16].split(" ");
var c6_m_value = v_variables[17].split(" ");
init6(c_wellName, c_m_date, c_m_value, c2_wellName, c2_m_value, c3_wellName, c3_m_value, c4_wellName, c4_m_value, c5_wellName, c5_m_value, c6_wellName, c6_m_value, elementID);
}
}
};
xhttp.open("GET", "./script/php/getChartData2.php?q=" + str, true);
xhttp.send();
}
function displayCompareChart() {
console.log("displayCompareChart");
var option = window.localStorage.getItem("option");
var m_date = [];
var label = [];
var index = 7;
if(option == "ELP")
index = 14;
var chart_data=new Array();
for(var i=0;i order[j + 1]) {
let temp = order[j];
order[j] = order[j + 1];
order[j + 1] = temp;
let temp2 = wellNameListsLocal[j];
wellNameListsLocal[j] = wellNameListsLocal[j + 1];
wellNameListsLocal[j + 1] = temp2;
}
}
}
wellNameLists = wellNameListsLocal;
wellTBA = wellTBALocal;
SetList();
ResetCamera();
showWell(wellNameLists[0], false);
}
function forLoopSMOption() {
var elm = document.getElementById('SM'), // get the select
df = document.createDocumentFragment(); // create a document fragment to hold the options while we create them
for (var i = 1; i <= 81; i++) { // loop, i like 42.
var option = document.createElement('option'); // create the option element
option.value = "SM-" + i; // set the value property
option.appendChild(document.createTextNode("SM-" + i)); // set the textContent in a safe way.
df.appendChild(option); // append the option to the document fragment
}
elm.appendChild(df); // append the document fragment to the DOM. this is the better way rather than setting innerHTML a bunch of times (or even once with a long string)
}
function forLoopHMOption() {
var elm = document.getElementById('HM'),
df = document.createDocumentFragment();
for (var i = 1; i <= 15; i++) {
var option = document.createElement('option');
option.value = "HM-1-" + i;
option.appendChild(document.createTextNode("HM1-" + i));
df.appendChild(option);
}
for (var j = 1; j <= 7; j++) {
var option = document.createElement('option');
option.value = "HM-2-" + j;
option.appendChild(document.createTextNode("HM2-" + j));
df.appendChild(option);
}
for (var k = 1; k <= 11; k++) {
var option = document.createElement('option');
option.value = "HM-3-" + k;
option.appendChild(document.createTextNode("HM3-" + k));
df.appendChild(option);
}
for (var l = 1; l <= 7; l++) {
var option = document.createElement('option');
option.value = "HM-4-" + l;
option.appendChild(document.createTextNode("HM4-" + l));
df.appendChild(option);
}
elm.appendChild(df);
}
var errorChart = null;
//Start making the chart
function init(c_wellName, c_m_date, c_m_value, elementID) {
var ctx = document.getElementById(elementID).getContext("2d");
var phase = document.getElementById("phase").value;
var ELPwarning = [0, -4.6, -10, -15.3, -23.2, 0];
var ELP_1warning = [0, -7.9, -13.3, 0, 0, 0];
//Warning value
let warning = [];
var OWFirstData = {"OW-1": -1.81, "OW-2": -1.59, "OW-3": -6.3, "OW-4": -3.67, "OW-5": -3.16, "OW-6": -1.78, "OW-7": -3.31};
var OWwarning1 = 0;
var OWwarning2 = 0;
var yLabel = "";
var xLabel = "";
if (c_wellName.includes("ELP")) {
if(c_wellName != "ELP-1" && c_wellName.includes("-1")){
if(ELP_1warning[phase-2] != 0){
for (i = 0; i < c_m_date.length; i++) {
warning.push(ELP_1warning[phase-2]);
}
}
}else{
if(ELPwarning[phase-2] != 0){
for (i = 0; i < c_m_date.length; i++) {
warning.push(ELPwarning[phase-2]);
}
}
}
yLabel = "水位高程GL(m)";
xLabel = "日期";
} else if (c_wellName.includes("OW")) {
for(const [key, value] of Object.entries(OWFirstData)){
if(c_wellName == key){
OWwarning1 = value + 2;
OWwarning2 = value - 2;
}
}
for (i = 0; i < c_m_date.length; i++) {
warning.push(OWwarning1);
}
yLabel = "水位高程GL(m)";
xLabel = "日期";
} else if (c_wellName.includes("SM")) {
for (i = 0; i < c_m_date.length; i++) {
warning.push(45);
}
yLabel = "沉陷量(mm)";
xLabel = "日期";
} else if (c_wellName.includes("SBM")) {
for (i = 0; i < c_m_date.length; i++) {
warning.push(9.5);
}
yLabel = "沉陷量(mm)";
xLabel = "日期";
} else if (c_wellName.includes("SB")) {
for (i = 0; i < c_m_date.length; i++) {
warning.push(0.0008);
}
yLabel = "沉陷量(mm)";
xLabel = "日期";
} else if (c_wellName.includes("VG")) {
for (i = 0; i < c_m_date.length; i++) {
warning.push(110);
}
yLabel = "應力值(t)";
xLabel = "日期";
} else if (c_wellName.includes("HM")) {
for (i = 0; i < c_m_date.length; i++) {
warning.push(25);
}
yLabel = "沉陷量(mm)";
xLabel = "日期";
}
for (j = 0; j < c_m_value.length; j++) {
if (c_m_value[j] == "") {
c_m_value[j] = null;
//console.log(c_m_value[j]);
}
}
//Destroy chart if it already exists. If not, there'll be multiple charts stack together
if (window.chart != undefined) {
window.chart.destroy();
}
window.chart = new Chart(ctx, {
//Line chart
type: 'line',
data: {
//X-axis displays the date
labels: c_m_date,
datasets: [{
//Label above the chart to illustrate which color has which purpose
label: c_wellName,
//Data value
data: c_m_value,
//Detemine line's color
borderColor: '#3e95cd'
},
{
label: "警戒值",
data: warning,
borderColor: "#FF0000",
pointRadius: 0
}
]
},
options: {
spanGaps: true,
maintainAspectRatio: false,
responsive: true,
scales: {
y: {
title: {
display: true,
text: yLabel
}
},
x: {
title: {
display: true,
text: xLabel
}
}
}
}
});
if (c_wellName.includes("SBM")) {
let warning2 = [];
for (i = 0; i < c_m_date.length; i++) {
warning2.push(-9.5);
}
window.chart.data.datasets.push({
label: "警戒值2",
data: warning2,
borderColor: "#FF0000",
pointRadius: 0
});
window.chart.update();
} else if (c_wellName.includes("SB")) {
let warning2 = [];
for (i = 0; i < c_m_date.length; i++) {
warning2.push(-0.0008);
}
window.chart.data.datasets.push({
label: "警戒值2",
data: warning2,
borderColor: "#FF0000",
pointRadius: 0
});
window.chart.update();
} else if (c_wellName.includes("OW")) {
let warning2 = [];
for (i = 0; i < c_m_date.length; i++) {
warning2.push(OWwarning2);
}
window.chart.data.datasets.push({
label: "警戒值2",
data: warning2,
borderColor: "#FF0000",
pointRadius: 0
});
window.chart.update();
}
}
function init2(c_wellName, c_m_date, c_m_value, c2_wellName, c2_m_date, c2_m_value, elementID) {
var ctx = document.getElementById(elementID).getContext("2d");
var yLabel = "";
var xLabel = "";
let warning = [];
if (c_wellName.includes("TI")) {
for (i = 0; i < c2_m_date.length; i++) {
warning.push(0.00106);
}
yLabel = "徑度量(δ/ L)";
xLabel = "日期";
}
for (j = 0; j < c_m_value.length; j++) {
if (c_m_value[j] == "") {
c_m_value[j] = null;
//console.log(c_m_value[j]);
}
}
if (window.chart != undefined) {
window.chart.destroy();
}
c_m_value.forEach(function(item, index, array) {
//console.log(item, index);
});
window.chart = new Chart(ctx, {
type: 'line',
data: {
labels: c_m_date,
datasets: [{
label: c_wellName,
data: c_m_value,
borderColor: '#3e95cd'
},
{
label: c2_wellName,
data: c2_m_value,
borderColor: '#63fff5'
}
]
},
options: {
responsive: true,
maintainAspectRatio: false,
scales: {
y: {
title: {
display: true,
text: yLabel
}
},
x: {
title: {
display: true,
text: xLabel
}
}
}
}
});
/*if(c_wellName.includes("ELP") && phase != 2 && phase != 7){
window.chart.data.datasets.push({
label: "警戒值",
data: warning,
borderColor: "#FF0000",
pointRadius: 0
});
if(phase == 3 || phase == 4){
let warning2 = [];
for (i = 0; i < c2_m_date.length; i++) {
warning2.push(ELP_1warning[phase-2]);
}
window.chart.data.datasets.push({
label: "警戒值2",
data: warning2,
borderColor: "#FF0000",
pointRadius: 0
});
}
window.chart.update();
}*/
//ELP does not have second warning line, so you need to update it seperately
if (c_wellName.includes("TI")) {
let warning2 = [];
for (i = 0; i < c2_m_date.length; i++) {
warning2.push(-0.00106);
}
window.chart.data.datasets.push({
label: "警戒值2",
data: warning2,
borderColor: "#FF0000",
pointRadius: 0
});
window.chart.update();
}
}
//SIS SID's lines are vertical
function initSISSID(c_m_date, c_m_depth, c_m_value, elementID, str) {
var ctx = document.getElementById(elementID).getContext("2d");
var datasetValue = [];
let warning = [];
var phase = document.getElementById("phase").value;
var SID_data = [];
var SIS_data = [];
var SIS_array = ['SIS-1','SIS-2-1','SIS-2-2','SIS-3','SIS-4','SIS-6','SIS-7'];
var SID_array = ['SID-1','SID-2-1','SID-2-2','SID-3-1','SID-3-2','SID-4','SID-5-1','SID-5-2','SID-6','SID-7'];
var index = 0;
var num = 0;
if(phase == 2){
SID_data = [1.85, 1.128, 1.128, 1.128, 1.698, 1.698, 1.698, 1.186, 1.186, 1.032];
SIS_data = [1.85, 1.128, 1.128, 1.128, 1.698, 1.186, 1.032];
}else if(phase == 3){
SID_data = [2.39, 1.434, 1.434, 1.434, 2.304, 2.304, 2.304, 1.7, 1.7, 1.569];
SIS_data = [2.39, 1.434, 1.434, 1.434, 2.304, 1.7, 1.569];
}else if(phase == 4){
SID_data = [2.89, 1.856, 1.856, 1.856, 2.968, 2.968, 2.968, 2.267, 2.267, 2.176];
SIS_data = [2.89, 1.856, 1.856, 1.856, 2.968, 2.267, 2.176];
}else if(phase == 5){
SID_data = [3.36, 2.626, 2.626, 2.626, 4.531, 4.531, 4.531, 3.727, 3.727, 3.285];
SIS_data = [3.36, 2.626, 2.626, 2.626, 4.531, 3.727, 3.285];
}else if(phase == 6){
SID_data = [4.015, 3.832, 3.832, 3.832, 7.966, 7.966, 7.966, 5.049, 5.049, 5.208];
SIS_data = [4.015, 3.832, 3.832, 3.832, 7.966, 5.049, 5.208];
}else if(phase == 7){
SID_data = [4.918, 4.458, 4.458, 4.458, 8.909, 8.909, 8.909, 5.797, 5.797, 5.988];
SIS_data = [4.918, 4.458, 4.458, 4.458, 8.909, 5.797, 5.988];
}
if(str.includes("SIS")){
index = SIS_array.indexOf(str);
num = SIS_data[index];
}else if(str.includes("SID")){
index = SID_array.indexOf(str);
num = SID_data[index];
}
for (i = 0; i < c_m_value[0].length; i++) {
warning.push(num);
}
yLabel = "觀測深度GL(m)";
xLabel = "變位量(cm)";
for (j = 0; j < c_m_value.length; j++) {
if (c_m_value[j] == "") {
c_m_value[j] = null;
//console.log(c_m_value[j]);
}
}
if (window.chart != undefined) {
window.chart.destroy();
}
for (j = 0; j <= c_m_date.length; j++) {
if (j == c_m_date.length) {
datasetValue[j] = {
axis: 'y',
fill: false,
label: "警戒值",
data: warning,
borderColor: "#FF0000",
pointRadius: 0
}
} else {
datasetValue[j] = {
axis: 'y',
label: c_m_date[j],
data: c_m_value[j],
borderColor: randomColor()
}
}
}
window.chart = new Chart(ctx, {
type: 'line',
data: {
labels: c_m_depth,
datasets: datasetValue
},
options: {
//Turns line to vertical
maintainAspectRatio: false,
responsive: true,
indexAxis: 'y',
scales: {
y: {
title: {
display: true,
text: yLabel
}
},
x: {
beginAtZero: true,
title: {
display: true,
text: xLabel
}
}
}
}
});
}
function init6(c_wellName, c_m_date, c_m_value, c2_wellName, c2_m_value, c3_wellName, c3_m_value, c4_wellName, c4_m_value, c5_wellName, c5_m_value, c6_wellName, c6_m_value, elementID) {
var ctx = document.getElementById(elementID).getContext("2d");
let warning = [];
if (c_wellName.includes("RS")) {
for (i = 0; i < c_m_date.length; i++) {
warning.push(2000);
}
yLabel = "應力值(kg/cm²)";
xLabel = "日期";
}
if (window.chart != undefined) {
window.chart.destroy();
}
window.chart = new Chart(ctx, {
type: 'line',
data: {
labels: c_m_date,
datasets: [{
label: c_wellName,
data: c_m_value,
borderColor: randomColor()
},
{
label: c2_wellName,
data: c2_m_value,
borderColor: randomColor()
},
{
label: c3_wellName,
data: c3_m_value,
borderColor: randomColor()
},
{
label: c4_wellName,
data: c4_m_value,
borderColor: randomColor()
},
{
label: c5_wellName,
data: c5_m_value,
borderColor: randomColor()
},
{
label: c6_wellName,
data: c6_m_value,
borderColor: randomColor()
},
{
label: "警戒值",
data: warning,
borderColor: "#FF0000",
pointRadius: 0
}
]
},
options: {
responsive: true,
maintainAspectRatio: false,
scales: {
y: {
title: {
display: true,
text: yLabel
}
},
x: {
title: {
display: true,
text: xLabel
}
}
}
}
});
//ELP does not have second warning line, so you need to update it seperately
if (c_wellName.includes("RS")) {
let warning2 = [];
for (i = 0; i < c_m_date.length; i++) {
warning2.push(-2000);
}
window.chart.data.datasets.push({
label: "警戒值2",
data: warning2,
borderColor: "#FF0000",
pointRadius: 0
});
window.chart.update();
}
}
function initCompare(m_date, chart_data,index,label) {
var ctx = document.getElementById("myChart").getContext("2d");
var value = -7.9;
let warning = [];
var phase = document.getElementById("phase").value;
yLabel = "水位高程GL(m)";
xLabel = "日期";
for (i = 0; i < m_date.length; i++) {
warning.push(value);
}
if (window.chart != undefined) {
window.chart.destroy();
}
window.chart = new Chart(ctx, {
type: 'line',
data: {
labels: m_date
},
options: {
responsive: true,
maintainAspectRatio: false,
scales: {
y: {
title: {
display: true,
text: yLabel
}
},
x: {
title: {
display: true,
text: xLabel
}
}
}
}
});
for(i = 1; i < index+1; i++){
window.chart.data.datasets.push({
label: label[i].replaceAll("_","-"),
data: chart_data[i],
borderColor: randomColorBlue()
});
}
/*
if(label[1].includes("ELP") && phase != 2 && phase != 7){
window.chart.data.datasets.push({
label: "警戒值",
data: warning,
borderColor: "#FF0000",
pointRadius: 0
});
}
*/
window.chart.update();
}
//Chart has multiple lines that need different color
function randomColor() {
return "#" + ((1 << 24) * Math.random() | 0).toString(16);
}
function randomColorBlue() {
var mid = Math.floor(Math.random() * 255);
return "#30" +mid.toString(16) + "ff";
}
//Need to display multiple epuiment's data table and can't find the function to reset it. So I kill all the nodes.
function reset() {
const myNode = document.getElementById("testssss");
while (myNode.firstChild) {
myNode.removeChild(myNode.lastChild);
}
var table = document.createElement("table");
table.id = "dataTable";
table.className = "display";
//table.style.width = "100%";
myNode.appendChild(table);
}