|
|
@@ -0,0 +1,1279 @@
|
|
|
+var unityName = "R03Monitor";
|
|
|
+var errorTable;
|
|
|
+var sites = {};
|
|
|
+$.ajaxSettings.async = false;
|
|
|
+var jqxhr = $.getJSON("/BIM-Monitor/assets/errorTable.json", function (json) {
|
|
|
+ errorTable = json;
|
|
|
+});
|
|
|
+var C3Json = $.getJSON("/BIM-Monitor/assets/json/c3-monitorList.json", function (json) {
|
|
|
+ sites["c3"] = json;
|
|
|
+});
|
|
|
+var R03Json = $.getJSON("/BIM-Monitor/assets/json/r03-monitorList.json", function (json) {
|
|
|
+ sites["r03"] = json;
|
|
|
+});
|
|
|
+
|
|
|
+$.ajaxSettings.async = true;
|
|
|
+var lastNode;
|
|
|
+var errorArray = [];
|
|
|
+var switchNumber = 0;
|
|
|
+passString('OW');
|
|
|
+var wellTBA = [];
|
|
|
+var wellNameLists = [];
|
|
|
+var isAll = true;
|
|
|
+var isCompare = false;
|
|
|
+var saveCheckCompare = "";
|
|
|
+
|
|
|
+
|
|
|
+$(document).ready(function () {
|
|
|
+
|
|
|
+ GetCheckAllAJAXValue();
|
|
|
+ LoadPage();
|
|
|
+
|
|
|
+ $(".monitor").on('click', function () {
|
|
|
+ let site = $(this).parent().parent().parent().attr("monitor");
|
|
|
+ if (site != 'r03') {
|
|
|
+ location.href = `../${site}/Index.php`;
|
|
|
+ } else {
|
|
|
+ let option = $(this).attr("monitor");
|
|
|
+ isAll = true;
|
|
|
+ isCompare = false;
|
|
|
+ passString(option);
|
|
|
+ document.getElementById("monitorName").innerHTML = option + "監測儀器";
|
|
|
+ if (lastNode != null) {
|
|
|
+ lastNode.style = "color:#abb4be;";
|
|
|
+ }
|
|
|
+ document.getElementById("errorCheck").checked = false;
|
|
|
+ document.getElementById("compareCheck").checked = false;
|
|
|
+
|
|
|
+ lastNode = document.getElementById(option).parentNode;
|
|
|
+ lastNode.style = "color:#0088cc;";
|
|
|
+
|
|
|
+ LoadPage();
|
|
|
+ }
|
|
|
+ });
|
|
|
+})
|
|
|
+
|
|
|
+//Pass monitor equipment's name to index.php select form
|
|
|
+function passString(option) {
|
|
|
+ window.localStorage.setItem("option", option);
|
|
|
+}
|
|
|
+
|
|
|
+//unity給一個wellname(string)
|
|
|
+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(equipment) {
|
|
|
+ $.ajaxSettings.async = false;
|
|
|
+ $.ajax({
|
|
|
+ url: '/BIM-Monitor/script/php/getEquipmentName.php',
|
|
|
+ type: "GET",
|
|
|
+ data: {
|
|
|
+ equipment: equipment,
|
|
|
+ }
|
|
|
+ }).success(function (data) {
|
|
|
+ GetWellNameList(data);
|
|
|
+ }).error(function (error) {
|
|
|
+ console.log("錯誤");
|
|
|
+ });
|
|
|
+ $.ajaxSettings.async = true;
|
|
|
+}
|
|
|
+var sparklinePieData = [];
|
|
|
+
|
|
|
+function LoadPage() {
|
|
|
+
|
|
|
+ var option = window.localStorage.getItem("option");
|
|
|
+ displayWellInfo2(option);
|
|
|
+
|
|
|
+ $('#' + window.localStorage.getItem("option")).removeClass('hidden').removeAttr('disabled');
|
|
|
+
|
|
|
+ document.getElementById("monitorSelect2").innerHTML = "選擇觀測儀器";
|
|
|
+
|
|
|
+ if (option == "ELP" || option == "OW")
|
|
|
+ document.getElementById("displayCompareChart").style.display = 'block';
|
|
|
+ else
|
|
|
+ document.getElementById("displayCompareChart").style.display = 'none';
|
|
|
+
|
|
|
+ if(isLoad){
|
|
|
+ if (option == "HM" || option == "SIS" || option == "RS" || option == "VG" || option == "SID") {
|
|
|
+ myGameInstance.SendMessage("Monitor", "ChangeTransparent");
|
|
|
+ myGameInstance.SendMessage("Monitor", "RemoveModel", "true");
|
|
|
+ } else {
|
|
|
+ myGameInstance.SendMessage("Monitor", "ChangeWhite");
|
|
|
+ myGameInstance.SendMessage("Monitor", "RemoveModel", "false");
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ if (option != "ELP" && option != "SIS" && option != "SID") {
|
|
|
+ document.getElementById("phase").style.display = "none";
|
|
|
+ } else {
|
|
|
+ document.getElementById("phase").style.display = "block";
|
|
|
+ }
|
|
|
+
|
|
|
+ var wellTBALocal = getCheckValue();
|
|
|
+ var dataValue = option;
|
|
|
+ for (i = 0; i < wellTBALocal.length; i++) {
|
|
|
+ dataValue = dataValue.concat(',', wellTBALocal[i]);
|
|
|
+
|
|
|
+ }
|
|
|
+ if(isLoad){
|
|
|
+ myGameInstance.SendMessage("Monitor", "AddDataTable", dataValue);
|
|
|
+ myGameInstance.SendMessage("Monitor", "Initialization");
|
|
|
+ }
|
|
|
+
|
|
|
+ var wellNameList = window.localStorage.getItem("wellNameList");
|
|
|
+ var wellNameListsLocal = wellNameList.split(",");
|
|
|
+
|
|
|
+ var order = new Array(wellNameListsLocal.length);
|
|
|
+ for (i = 0; i < wellNameListsLocal.length; i++) {
|
|
|
+ order[i] = wellNameListsLocal[i].match(/\d+/g);
|
|
|
+ }
|
|
|
+ for (i = 0; i < order.length; i++) {
|
|
|
+ for (j = 0; j < order.length; j++) {
|
|
|
+ if (order[j] > 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);
|
|
|
+}
|
|
|
+
|
|
|
+//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;
|
|
|
+
|
|
|
+ document.getElementById("monitorSelect2").innerHTML = strLocal;
|
|
|
+ xhttp = new XMLHttpRequest();
|
|
|
+ xhttp.onreadystatechange = function () {
|
|
|
+ if (this.readyState == 4 && this.status == 200) {
|
|
|
+
|
|
|
+ document.getElementById("tableName").innerHTML = strLocal + "資料表";
|
|
|
+ saveCheckCompare = strLocal + "資料表";
|
|
|
+ displayChart(str, "myChart");
|
|
|
+ reset();
|
|
|
+ if(isLoad){
|
|
|
+ myGameInstance.SendMessage("MainCamera", "GetDataFromWebGL", str);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ if (!changeCamera) {
|
|
|
+ ResetCamera();
|
|
|
+ }
|
|
|
+
|
|
|
+ document.getElementById("dataTable").innerHTML = this.responseText;
|
|
|
+ $('#dataTable').DataTable();
|
|
|
+
|
|
|
+ }
|
|
|
+ };
|
|
|
+ xhttp.open("GET", "/BIM-Monitor/script/php/getData2.php?q=" + str, true);
|
|
|
+ xhttp.send();
|
|
|
+
|
|
|
+}
|
|
|
+var sparklinePieData = [];
|
|
|
+
|
|
|
+function getCheckValue() {
|
|
|
+ var dataArray = [];
|
|
|
+ var phase
|
|
|
+ if (document.getElementById("phase") !== null) {
|
|
|
+ phase = document.getElementById("phase").value;
|
|
|
+ } else {
|
|
|
+ phase = 7;
|
|
|
+ }
|
|
|
+
|
|
|
+ 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: "/BIM-Monitor/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) {
|
|
|
+ console.log(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 = "/BIM-Monitor/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
|
|
|
+ if (document.getElementById("phase") !== null) {
|
|
|
+ phase = document.getElementById("phase").value;
|
|
|
+ } else {
|
|
|
+ phase = 7;
|
|
|
+ }
|
|
|
+ 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: "/BIM-Monitor/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 = "(<font color='#FF0000'>" + abnormal_count + "</font>/" + 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: "/BIM-Monitor/script/php/upload.php",
|
|
|
+ type: "POST",
|
|
|
+ data: formData,
|
|
|
+ processData: false,
|
|
|
+ contentType: false,
|
|
|
+ beforeSend: function () {
|
|
|
+
|
|
|
+ }
|
|
|
+ }).done(function (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 () {
|
|
|
+
|
|
|
+ });
|
|
|
+
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+//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(" ");
|
|
|
+
|
|
|
+ //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", "/BIM-Monitor/script/php/getChartData2.php?q=" + str, true);
|
|
|
+ xhttp.send();
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+}
|
|
|
+
|
|
|
+function 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 < index; i++) {
|
|
|
+ chart_data[i] = new Array();
|
|
|
+ for (var j = 0; j < m_date.length; j++) {
|
|
|
+ chart_data[i][j] = 0;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ $.ajax({
|
|
|
+ url: "/BIM-Monitor/script/php/getCompareChartData.php",
|
|
|
+ async: false,
|
|
|
+ contentType: "application/json",
|
|
|
+ dataType: "json",
|
|
|
+ data: {
|
|
|
+ option: option
|
|
|
+ }
|
|
|
+ })
|
|
|
+
|
|
|
+ .success(function (response) {
|
|
|
+ m_date = response['m_date'];
|
|
|
+ chart_data = response['chart_data'];
|
|
|
+ label = response['label'];
|
|
|
+ initCompare(m_date, chart_data, index, label);
|
|
|
+ console.log("getCompareChartData正常獲取");
|
|
|
+ })
|
|
|
+ .error(function () {
|
|
|
+ console.log("getCompareChartData未正常獲取");
|
|
|
+ })
|
|
|
+ .complete(function () {});
|
|
|
+
|
|
|
+}
|
|
|
+
|
|
|
+//Reset the camera
|
|
|
+function ResetCamera() {
|
|
|
+ if(isLoad){
|
|
|
+ myGameInstance.SendMessage("MainCamera", "ResetCamera");
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+function SetList() {
|
|
|
+ var wellNameListsLocal = "";
|
|
|
+ var isError = false;
|
|
|
+ var monitorSelect = document.getElementById("monitorSelect");
|
|
|
+ var monitorButton = document.getElementById("monitorButton");
|
|
|
+ while (monitorSelect.hasChildNodes()) {
|
|
|
+ monitorSelect.removeChild(monitorSelect.firstChild);
|
|
|
+ }
|
|
|
+
|
|
|
+ while (monitorButton.hasChildNodes()) {
|
|
|
+ monitorButton.removeChild(monitorButton.firstChild);
|
|
|
+ }
|
|
|
+ monitorButton.innerHTML = "綠色為正常|紅色為異常<br>";
|
|
|
+ GetCheckAllAJAXValue();
|
|
|
+ for (i = 0; i < wellNameLists.length; i++) {
|
|
|
+ wellNameListsLocal = wellNameLists[i];
|
|
|
+ var option = document.createElement("li");
|
|
|
+ var createA = document.createElement("a");
|
|
|
+ /*if(wellNameLists[i].includes("ELP")){
|
|
|
+ if(wellNameLists[i].includes("A")){
|
|
|
+ wellNameListsLocal = wellNameLists[i] + ',' + wellNameLists[i].replace('A','-1A');
|
|
|
+ }else{
|
|
|
+ wellNameListsLocal = wellNameLists[i] + ',' + wellNameLists[i] + '-1';
|
|
|
+ }
|
|
|
+ } */
|
|
|
+ var createAText = document.createTextNode(wellNameListsLocal);
|
|
|
+ var createButton = document.createElement("button");
|
|
|
+ var createButtonText = document.createTextNode(wellNameListsLocal);
|
|
|
+ createButton.setAttribute('class', "mb-xs mt-xs mr-xs modal-with-zoom-anim btn btn-success modal-dismiss");
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ for (j = 0; j < wellTBA.length; j++) {
|
|
|
+
|
|
|
+ if (wellNameLists[i] == (wellTBA[j])) {
|
|
|
+ createA.style = "color:red;";
|
|
|
+ createButton.setAttribute('class', "mb-xs mt-xs mr-xs btn btn-danger modal-dismiss");
|
|
|
+ isError = true;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ createA.setAttribute('onclick', "showWell('" + wellNameLists[i] + "',true)");
|
|
|
+ createButton.setAttribute('onclick', "showWell('" + wellNameLists[i] + "',true)");
|
|
|
+ createButton.setAttribute('type', "button");
|
|
|
+
|
|
|
+ if (isAll || (!isAll && isError)) {
|
|
|
+ createA.appendChild(createAText);
|
|
|
+ createButton.appendChild(createButtonText);
|
|
|
+ option.appendChild(createA);
|
|
|
+ monitorSelect.appendChild(option);
|
|
|
+ monitorButton.appendChild(createButton);
|
|
|
+ }
|
|
|
+ isError = false;
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+}
|
|
|
+
|
|
|
+function UpdateGPS(GPS) {
|
|
|
+ if(isLoad){
|
|
|
+ myGameInstance.SendMessage("PlayerArmature", "UpdateGPS", GPS);
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+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;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ //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;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if (window.chart != undefined) {
|
|
|
+ window.chart.destroy();
|
|
|
+ }
|
|
|
+ c_m_value.forEach(function (item, index, array) {
|
|
|
+
|
|
|
+ });
|
|
|
+ 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;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ 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("tabData");
|
|
|
+ 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);
|
|
|
+}
|