瀏覽代碼

新增 多個工地功能

manto07m 3 年之前
父節點
當前提交
ad5a1f214b
共有 7 個文件被更改,包括 1495 次插入413 次删除
  1. 1 1
      C3/Index.php
  2. 58 0
      assets/json/r03-monitorList.json
  3. 11 7
      home.php
  4. 1280 0
      script/js/c3.js
  5. 55 398
      script/js/global.js
  6. 71 0
      script/js/home.js
  7. 19 7
      script/js/main.js

+ 1 - 1
C3/Index.php

@@ -216,7 +216,7 @@ include($_SERVER['DOCUMENT_ROOT'] . "/Authorization/script/php/permission/check_
 			</section>
 		</div>
 		<!-- Main-->
-		<script src="/BIM-Monitor/script/js/main.js"></script>
+		<script src="/BIM-Monitor/script/js/c3.js"></script>
 		<script>
 			vm.mount('.body');
 			addUserImage(userName.charAt(0), role);

+ 58 - 0
assets/json/r03-monitorList.json

@@ -0,0 +1,58 @@
+[
+    {
+      "code": "SIS",
+      "name": "土中傾度管"
+    },
+    {
+      "code": "SID",
+      "name": "連續壁內傾度管"
+    },
+    {
+      "code": "SB",
+      "name": "結構物沉陷點"
+    },
+    {
+      "code": "SM",
+      "name": "沉陷點"
+    },
+    {
+      "code": "TI",
+      "name": "建物傾斜計"
+    },
+    {
+      "code": "SS",
+      "name": "淺層沉陷點"
+    },
+    {
+      "code": "EXM",
+      "name": "桿式伸縮儀"
+    },
+    {
+      "code": "RB",
+      "name": "鋼筋應力計"
+    },
+    {
+      "code": "VG",
+      "name": "支撐應變計"
+    },
+    {
+      "code": "OW",
+      "name": "水位觀測井"
+    },
+    {
+      "code": "SP",
+      "name": "豎管式水壓計"
+    },
+    {
+      "code": "EP",
+      "name": "電力傳感式水壓計"
+    },
+    {
+      "code": "ETI",
+      "name": "電子式傾斜計"
+    },
+    {
+      "code": "BS",
+      "name": "電子式桿式沉陷計"
+    }
+  ]

+ 11 - 7
home.php

@@ -64,7 +64,7 @@ include($_SERVER['DOCUMENT_ROOT'] . "/Authorization/script/php/permission/check_
 		<!-- end: header -->
 		<div class="inner-wrapper">
 			<!-- start: sidebar -->
-			<side-bar-home></side-bar-home>
+			<side-bar></side-bar>
 			<!-- end: sidebar -->
 			<section role="main" class="content-body">
 				<header class="page-header">
@@ -80,8 +80,13 @@ include($_SERVER['DOCUMENT_ROOT'] . "/Authorization/script/php/permission/check_
 		</div>
 	</section>
 
-	<script>vm.mount('.body');
-addUserImage(userName.charAt(0),role);</script>
+	<!-- Main-->
+	<script src="script/js/home.js"></script>
+	<script>
+		vm.mount('.body');
+		addUserImage(userName.charAt(0), role);
+		GetCheckAllAJAXValue()
+	</script>
 
 	<!-- Vendor -->
 	<script src="/Common/assets/vendor/jquery-browser-mobile/jquery.browser.mobile.js"></script>
@@ -121,12 +126,11 @@ addUserImage(userName.charAt(0),role);</script>
 	<!-- Examples -->
 	<script src="assets/javascripts/ui-elements/examples.modals.js"></script>
 	<script src="script/js/notifications.js"></script>
-	<!-- Main-->
-	<script src="script/js/main.js"></script>
 
-	<script src='script/js/warning.js'></script>
+
+	<!-- <script src='script/js/warning.js'></script> -->
 
 	</section>
 </body>
 
-</html>
+</html>

+ 1280 - 0
script/js/c3.js

@@ -0,0 +1,1280 @@
+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;
+});
+var lastNode;
+$.ajaxSettings.async = true;
+
+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: '/BIM-Monitor/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
+    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) {
+        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", "/BIM-Monitor/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", "/BIM-Monitor/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 < 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() {
+    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;
+
+                //console.log(" wellNameLists:" + wellNameLists[i]);
+                //console.log(" wellTBA:" + wellTBA[j]);
+
+            }
+        }
+        createA.setAttribute('onclick', "showWell('" + wellNameLists[i] + "',true)");
+        createButton.setAttribute('onclick', "showWell('" + wellNameLists[i] + "',true)");
+        createButton.setAttribute('type', "button");
+
+        if (isAll || (!isAll && isError)) {
+            //console.log(isError);
+            createA.appendChild(createAText);
+            createButton.appendChild(createButtonText);
+            option.appendChild(createA);
+            monitorSelect.appendChild(option);
+            monitorButton.appendChild(createButton);
+        }
+        isError = false;
+
+    }
+
+}
+
+function UpdateGPS(GPS) {
+    myGameInstance.SendMessage("PlayerArmature", "UpdateGPS", GPS);
+}
+
+function LoadPage() {
+    var option = window.localStorage.getItem("option");
+    //Display the selected equipment
+
+    $('#' + window.localStorage.getItem("option")).removeClass('hidden').removeAttr('disabled');
+    //console.log("Choosed option: " + window.localStorage.getItem("option"));
+
+    document.getElementById("monitorSelect2").innerHTML = "選擇觀測儀器";
+
+    if (option == "ELP" || option == "OW")
+        document.getElementById("displayCompareChart").style.display = 'block';
+    else
+        document.getElementById("displayCompareChart").style.display = 'none';
+
+    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]);
+
+    }
+
+    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);
+}
+
+
+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("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);
+}
+
+$(document).ready(function() {
+    $(".monitor").on('click', function() {
+        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();
+    });
+})

+ 55 - 398
script/js/global.js

@@ -5,6 +5,7 @@ var objectFilter = [];
 var usageFilter = [];
 var listObj = new Object();
 var table = [];
+
 const vm = Vue.createApp({
     data() {
         return {
@@ -16,37 +17,45 @@ const vm = Vue.createApp({
     }
 });
 vm.component('side-bar-home', {
+    data() {
+        return {
+            sites: sites,
+        }
+    },
     template: `<aside id="sidebar-left" class="sidebar-left">
-        <div class="sidebar-header">
-            <div class="sidebar-title"> 導覽 </div>
-            <div class="sidebar-toggle hidden-xs" data-toggle-class="sidebar-left-collapsed" data-target="html" data-fire-event="sidebar-left-toggle"> <i class="fa fa-bars" aria-label="Toggle sidebar"></i> </div>
-        </div>
-        <div class="nano">
-            <div class="nano-content">
-                <nav id="menu" class="nav-main" role="navigation">
-                    <ul class="nav nav-main">
-                        <li>
-                            <a href="home.php"> <i class="fa fa-home" aria-hidden="true"></i> <span>首頁</span> </a>
-                        </li>
-                        <li class="nav-parent">
-                            <a>
-                                <i class="fa fa-desktop" aria-hidden="true"></i>
-                                <span>BIM監測查詢網</span>
-                            </a>
-                            <ul class="nav nav-children">
-                                <!--<upload-csv></upload-csv>-->
-                                <li class="nav-parent">
-                                    <a href="C3/Index.php">C3工地監測儀器</a>
-                                    <ul class="nav nav-children">
-                                    </ul>
-                                </li>
-                            </ul>
-                        </li>
-                    </ul>
-                </nav>
-            </div>
-        </div>
-    </aside>`
+                    <div class="sidebar-header">
+                        <div class="sidebar-title"> 導覽 </div>
+                        <div class="sidebar-toggle hidden-xs" data-toggle-class="sidebar-left-collapsed" data-target="html" data-fire-event="sidebar-left-toggle"> <i class="fa fa-bars" aria-label="Toggle sidebar"></i> </div>
+                    </div>
+                    <div class="nano">
+                        <div class="nano-content">
+                            <nav id="menu" class="nav-main" role="navigation">
+                                <ul class="nav nav-main">
+                                    <li>
+                                        <a href="../home.php"> <i class="fa fa-home" aria-hidden="true"></i> <span>首頁</span> </a>
+                                    </li>
+
+                                    <li class="nav-parent nav-active nav-expanded">
+                                        <a>
+                                            <i class="fa fa-desktop" aria-hidden="true"></i>
+                                            <span>BIM監測查詢網</span>
+                                        </a>
+                                        <ul class="nav nav-children">
+                                            <li class="nav-parent nav-active nav-expanded">
+                                                <a>
+                                                    <span>C3工地監測儀器</span>
+                                                </a>
+                                                <ul class="nav nav-children">
+                                                    <monitor-li v-for="monitor in sites['c3']" :id='monitor.code' :name='monitor.name'></monitor-li>
+                                                </ul>
+                                            </li>
+                                        </ul>
+                                    </li>
+                                </ul>
+                            </nav>
+                        </div>
+                    </div>
+                </aside>`
 });
 
 
@@ -91,7 +100,7 @@ vm.component('upload-csv', {
 vm.component('side-bar', {
     data() {
         return {
-            monitors: monitors,
+            sites: sites,
         }
     },
     template: `<aside id="sidebar-left" class="sidebar-left">
@@ -106,19 +115,18 @@ vm.component('side-bar', {
                     <li>
                         <a href="../home.php"> <i class="fa fa-home" aria-hidden="true"></i> <span>首頁</span> </a>
                     </li>
-
                     <li class="nav-parent nav-active nav-expanded">
                         <a>
                             <i class="fa fa-desktop" aria-hidden="true"></i>
                             <span>BIM監測查詢網</span>
                         </a>
                         <ul class="nav nav-children">
-                            <li class="nav-parent nav-active nav-expanded">
+                            <li v-for="(site,key) in sites" :monitor="key" v-bind:class="GetLocation(key)">
                                 <a>
-                                    <span>C3工地監測儀器</span>
+                                    <span>{{key}}工地監測儀器</span>
                                 </a>
                                 <ul class="nav nav-children">
-                                    <monitor-li v-for="monitor in monitors" :id='monitor.code' :name='monitor.name'></monitor-li>
+                                    <monitor-li v-for="monitor in site" :id='monitor.code' :name='monitor.name'></monitor-li>
                                 </ul>
                             </li>
                         </ul>
@@ -127,7 +135,17 @@ vm.component('side-bar', {
             </nav>
         </div>
     </div>
-</aside>`
+</aside>`,
+    methods: {
+        GetLocation(sitName) {
+            var site = window.location.pathname.split('/')[2];
+            if (sitName == (site)) {
+                return "nav-parent nav-active nav-expanded";
+            } else {
+                return "nav-parent nav-active";
+            }
+        }
+    }
 });
 
 vm.component('monitor-li', {
@@ -290,75 +308,6 @@ vm.component('filter-bar', {
     </li>`,
 });
 
-vm.component('filter-content', {
-    template: `<div id="filter-content" class="panel-body" style="display:none;">
-    <label style="padding: 10px 15px;">元件版本:</label>
-    <div class="btn-group">
-        <div id="options">
-            <div id="revitVersion" class="option-set" data-group="year">
-                
-            </div>
-        </div>
-    </div>
-</div>`,
-});
-
-vm.component('filter-content2', {
-    data() {
-        return {
-            usageFilter: usageFilter,
-            objectFilter: objectFilter,
-        }
-    },
-    template: `<div id="filter-content" class="panel-body" style="display:none;">
-    <div class="filters">
-        <div class="ui-group">
-            <ul class="button-group nav nav-pills nav-pills-primary" data-filter-group="software">
-                <li style="padding: 10px 15px;">
-                    <label>開發類型:</label>
-                </li>
-                <li class="active">
-                    <a class="button" data-filter="">any</a>
-                </li>
-                <li>
-                    <a class="button" data-filter=".Dynamo">Dynamo</a>
-                </li>
-                <li>
-                    <a class="button" data-filter=".Revit">Revit</a>
-                </li>
-            </ul>
-        </div>
-    </div>
-    <div class="filters">
-        <div class="ui-group">
-            <ul class="button-group nav nav-pills nav-pills-primary" data-filter-group="object">
-                <li style="padding: 10px 15px;">
-                    <label>物件:</label>
-                </li>
-                <li class="active">
-                    <a class="button" data-filter="">any</a>
-                </li>
-                <filter-li v-for="item in objectFilter" v-bind:object="item"></filter-li>
-            </ul>
-        </div>
-    </div>
-    <div class="filters">
-        <div class="ui-group">
-            <ul class="button-group nav nav-pills nav-pills-primary" data-filter-group="usage">
-                <li style="padding: 10px 15px;">
-                    <label>功能:</label>
-                </li>
-                <li class="active">
-                    <a class="button" data-filter="">any</a>                    
-                </li>
-                <filter-li v-for="item in usageFilter" v-bind:object="item"></filter-li>                   
-            </ul>
-        </div>
-    </div>
-    
-</div>`,
-});
-
 vm.component('filter-li', {
     template: `<li><a class="button" v-bind:data-filter="addDot">{{object}}</a></li>`,
     props: {
@@ -373,7 +322,7 @@ vm.component('filter-li', {
 });
 
 vm.component('side-bar-list', {
-    template: `<li v-bind:class = "GetLocation?'nav-active':''">
+    template: `<li v-bind:class="GetLocation?'nav-active':''">
     <a v-bind:href="href">
         <i v-bind:class="fa" aria-hidden="true"></i><span>{{span}}</span>
     </a>
@@ -394,296 +343,4 @@ vm.component('side-bar-list', {
         fa: String,
         href: String,
     },
-});
-
-vm.component('upload-component', {
-    template: `<a class="modal-with-form btn btn-block btn-primary btn-md pt-sm pb-sm text-md" href="#modalForm2">
-    <i class="fa fa-upload mr-xs"></i>
-    上傳元件
-</a>
-<div id="modalForm2" class="modal-block modal-block-primary mfp-hide">
-    <section class="panel form-wizard" id="w1">
-        <header class="panel-heading">
-            <h2 class="panel-title">上傳BIM元件</h2>
-        </header>
-        <div class="panel-body panel-body-nopadding">
-            <div class="wizard-tabs">
-                <ul class="wizard-steps">
-                    <li class="active">
-                        <a href="#w1-account" data-toggle="tab" class="text-center">
-                            <span class="badge hidden-xs">1</span>
-                            選擇檔案及類別
-                        </a>
-                    </li>
-                    <li>
-                        <a href="#w1-profile" data-toggle="tab" class="text-center">
-                            <span class="badge hidden-xs">2</span>
-                            填寫詳細資料
-                        </a>
-                    </li>
-                </ul>
-            </div>
-            <form class="form-horizontal" novalidate="novalidate">
-                <div class="tab-content">
-                    <div id="w1-account" class="tab-pane active">
-                        <div class="form-group">
-                            <label class="col-md-1 control-label">rfa上傳</label>
-                            <div class="col-md-6">
-                                <div class="fileupload fileupload-new" data-provides="fileupload">
-                                    <div class="input-append">
-                                        <div class="uneditable-input">
-                                            <i class="fa fa-file fileupload-exists"></i>
-                                            <span class="fileupload-preview"></span>
-                                        </div>
-                                        <span class="btn btn-default btn-file">
-                                            <span class="fileupload-exists">變更檔案</span>
-                                            <span class="fileupload-new">選擇檔案</span>
-                                            <input type="file" />
-                                        </span>
-                                        <a href="#" class="btn btn-default fileupload-exists" data-dismiss="fileupload">移除檔案</a>
-                                    </div>
-                                </div>
-                            </div>
-                        </div>
-                        <div class="form-group">
-                            <label class="col-md-1 control-label">glb上傳</label>
-                            <div class="col-md-6">
-                                <div class="fileupload fileupload-new" data-provides="fileupload">
-                                    <div class="input-append">
-                                        <div class="uneditable-input">
-                                            <i class="fa fa-file fileupload-exists"></i>
-                                            <span class="fileupload-preview"></span>
-                                        </div>
-                                        <span class="btn btn-default btn-file">
-                                            <span class="fileupload-exists">變更檔案</span>
-                                            <span class="fileupload-new">選擇檔案</span>
-                                            <input type="file" />
-                                        </span>
-                                        <a href="#" class="btn btn-default fileupload-exists" data-dismiss="fileupload">移除檔案</a>
-                                    </div>
-                                </div>
-                            </div>
-                        </div>
-                        <div class="form-group">
-                            <label class="col-sm-1 control-label">設備類別</label>
-                            <div class="col-sm-3">
-                                <select class="form-control mb-md" id="typeSelect">
-                                    <option value="">請選擇設備類別</option>
-                                </select>
-                            </div>
-                        </div>
-                    </div>
-                    <div id="w1-profile" class="tab-pane">
-                        <div class="form-group">
-                            尚未選擇設備類別
-                        </div>
-                    </div>
-                </div>
-            </form>
-        </div>
-        <div class="panel-footer">
-            <ul class="pager">
-                <li class="previous disabled">
-                    <a><i class="fa fa-angle-left"></i> 上一步</a>
-                </li>
-                <li class="finish hidden pull-right modal-confirm">
-                    <a>完成送出</a>
-                </li>
-                <li class="next">
-                    <a>下一步 <i class="fa fa-angle-right"></i></a>
-                </li>
-            </ul>
-        </div>
-    </section>
-</div>`,
-});
-
-vm.component('equipment-list', {
-    data() {
-        return {
-            jsonData: jsonData,
-            userName: userName,
-            url: "component-favorite.php?userName=" + userName,
-        }
-    },
-    template: `
-    <div class="sidebar-widget m-none">
-    <div class="widget-header clearfix">
-        <h6 class="title pull-left mt-xs">類別</h6>                    
-    </div>
-    <div class="widget-content">
-        <nav id="menu" class="nav-main" role="navigation">
-            <ul class="nav nav-main">
-                <special-li v-for="item in jsonData" v-bind:name="item.category_name" v-bind:children="item.children" v-bind:parent="item.category_code"></special-li>     
-                <hr class="separator" />
-                <li>
-                    <a v-bind:href="url" class="menu-item"><i class="fa fa-gears"></i>清單列表</a>
-                </li>
-            </ul>
-        </nav>
-        
-
-    </div>
-</div>`,
-
-});
-
-vm.component('special-li', {
-    template: `
-    <li class="nav-parent">
-        <a class="dropdown-btn" v-bind:href="hrefLink(parent)" v-bind:name="parent">{{name}}</a>
-        <ul class="nav nav-children" style="background: inherit; padding-left: 15px;">
-            <special-li2 v-for="item in children" v-bind:href="item.component_code" v-bind:name="item.component_name" v-bind:parent="parent"></special-li2>
-        </ul>
-    </li>
-    `,
-
-    props: {
-        name: String,
-        children: Array,
-        parent: String
-    },
-    methods: {
-        hrefLink(parent) {
-            return 'component-list.php?parent=' + parent;
-        }
-    }
-});
-
-vm.component('special-li2', {
-    template: `
-    <li>
-        <a v-bind:href="hrefLink(href, parent)" class="menu-item" v-bind:name="parent">{{name}}</a>
-    </li>
-    `,
-    props: {
-        href: String,
-        name: String,
-        parent: String
-    },
-    methods: {
-        hrefLink(code, parent) {
-            return 'component-list.php?type=' + code + '&parent=' + parent;
-        }
-    }
-});
-
-vm.component('api-list', {
-    data() {
-        return {
-            jsonData: jsonData,
-            userName: userName,
-            url: "component-favorite.php?userName=" + userName,
-        }
-    },
-    template: `<div class="sidebar-widget m-none">
-    <div class="widget-header clearfix">
-        <h6 class="title pull-left mt-xs">適用性</h6>                    
-    </div>
-    <div class="widget-content">
-        <ul class="mg-folders">
-            <inner-menu-li href="api-list.php?type=土建" name="土建"></inner-menu-li>
-            <inner-menu-li href="api-list.php?type=土開" name="土開"></inner-menu-li>
-            <inner-menu-li href="api-list.php?type=軌道" name="軌道"></inner-menu-li>
-            <inner-menu-li href="api-list.php?type=機電" name="機電"></inner-menu-li>
-            <inner-menu-li href="api-list.php?type=資訊" name="資訊"></inner-menu-li>
-            <inner-menu-li href="api-list.php?type=通用" name="通用"></inner-menu-li>
-        </ul>
-    </div>
-    <hr class="separator" />
-    <div class="widget-header clearfix">
-        <h6 class="title pull-left mt-xs">專案</h6>                    
-    </div>
-    <div class="widget-content">
-        <ul class="mg-folders">
-            <inner-menu-li href="api-list.php?type=專案(果林地下汙水管線建置系統)" name="菓林地下汙水管線建置系統"></inner-menu-li>
-            <inner-menu-li href="api-list.php?type=專案(CF管線點位調查)" name="CF管線點位調查"></inner-menu-li>                                       
-        </ul>
-    </div>
-    <hr class="separator" />
-    <div class="widget-header clearfix">
-        <h6 class="title pull-left mt-xs">其他</h6>                    
-    </div>
-    <div class="widget-content">
-        <ul class="mg-folders">
-            <inner-menu-li href="api-list.php" name="所有程式清單"></inner-menu-li>
-            <inner-menu-li href="api-list.php?type=未分類" name="未分類"></inner-menu-li>                                        
-        </ul>
-    </div>
-</div>`,
-});
-
-vm.component('other-list', {
-    data() {
-        return {
-            jsonData: jsonData,
-            userName: userName,
-            url: "component-favorite.php?userName=" + userName,
-        }
-    },
-    template: `<div class="sidebar-widget m-none">
-    <div class="widget-header clearfix">
-        <h6 class="title pull-left mt-xs">類別</h6>                    
-    </div>
-    <div class="widget-content">
-        <ul class="mg-folders">
-            <inner-menu-li href="other-list.php?type=收費建議" name="收費建議"></inner-menu-li>
-            <inner-menu-li href="other-list.php?type=契約需求範例" name="契約需求範例"></inner-menu-li>
-            <inner-menu-li href="other-list.php?type=驗收標準" name="驗收標準"></inner-menu-li>
-            <inner-menu-li href="other-list.php?type=BIM專案管理" name="BIM專案管理"></inner-menu-li>
-            <inner-menu-li href="other-list.php?type=樣板" name="樣板"></inner-menu-li>
-            <inner-menu-li href="other-list.php?type=其他" name="其他"></inner-menu-li>
-        </ul>
-    </div>
-    <hr class="separator" />
-</div>`,
-});
-
-vm.component('isotope-item', {
-    data() {
-        return {
-            list: list,
-            filClass: "isotope-item col-sm-6 col-md-4 col-lg-3 ",
-        }
-    },
-    props: {
-        name: String,
-        folder: String,
-        id: Number,
-        object: String,
-        usage: String,
-        software: String,
-        detail: String,
-        source: String,
-        operate: String,
-        viewTimes: Number,
-        downloadTimes: Number,
-    },
-    computed: {
-        addClass() {
-            return this.filClass + " " + this.object + " " + this.usage + " " + this.software;
-        }
-    },
-    methods: {
-        bindHref(software, name, folder) {
-            return 'assets/API/Universal/' + software + '/' + folder + '/' + name + '.png';
-        },
-        hrefLink(id) {
-            return 'api-detail.php?object=' + id;
-        }
-    },
-    template: `<div  v-bind:class="addClass">
-    <div class="thumbnail">
-
-        <a class="name" v-bind:href="hrefLink(id)">{{name}}</a>
-        <div class="mg-description"><small style="display:none;">{{detail}}</small><small class="operate" style="display:none;">{{operate}}</small><small class="source" style="display:none;">{{source}}</small><small class="pull-right text-muted software" >{{software}}</small></div>
-        <div class="thumb-preview">
-            <div class="thumb-image"></div>
-            <div><img v-bind:href="bindHref(software,name,folder)" v-bind:src="bindHref(software,name,folder)" class="img-responsive" alt="Project" onerror="this.src='assets/images/not-found-image.jpg'" style="transform: scale(1);"></div>
-            
-        </div>
-        <p class="viewTimes" hidden>{{viewTimes}}</p>
-        <p class="downloadTimes" hidden>{{downloadTimes}}</p>
-    </div>
-</div>`,
 });

+ 71 - 0
script/js/home.js

@@ -0,0 +1,71 @@
+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 = [];
+
+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 () {});
+    }
+}
+
+$(document).ready(function() {
+    $(".monitor").on('click', function() {
+        let monitor = $(this).parent().parent().parent().attr("monitor");
+        location.href = `./${monitor}/Index.php`;
+    });
+})

+ 19 - 7
script/js/main.js

@@ -1,12 +1,12 @@
 var lastNode;
 var errorTable;
-var monitors;
-var jqxhr = $.getJSON("../assets/errorTable.json", function (json) {
+var sites;
+$.ajaxSettings.async = false;
+var jqxhr = $.getJSON("/BIM-Monitor/assets/errorTable.json", function (json) {
     errorTable = json;
 });
-$.ajaxSettings.async = false;
-var C3Json = $.getJSON("../assets/json/c3-monitorList.json", function (json) {
-    monitors = json;
+var C3Json = $.getJSON("/BIM-Monitor/assets/json/c3-monitorList.json", function (json) {
+    sites = json;
 });
 $.ajaxSettings.async = true;
 
@@ -58,7 +58,13 @@ var sparklinePieData = [];
 
 function getCheckValue() {
     var dataArray = [];
-    var phase = document.getElementById("phase").value;
+    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) {
@@ -86,6 +92,7 @@ function getCheckValue() {
         })
 
         .success(function (response) {
+            console.log(response)
             dataArray = response['wellTBA'];
             for (var i = 0; i < dataArray.length; i++) {
                 dataArray[i] = dataArray[i].replace('_', '-');
@@ -114,7 +121,12 @@ function getCheckValue() {
 function GetCheckAllAJAXValue() {
 
     errorArray = [];
-    var phase = document.getElementById("phase").value;
+    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;