系統監控下拉式選單點擊至 dashboard | dashboard 的契約容量為儀表板
This commit is contained in:
		
							parent
							
								
									8eed17987b
								
							
						
					
					
						commit
						6d921955b4
					
				@ -170,10 +170,40 @@
 | 
				
			|||||||
    <div class="col-sm-12 col-lg-4">
 | 
					    <div class="col-sm-12 col-lg-4">
 | 
				
			||||||
      <div class="row" id="sysSubBtnList"></div>
 | 
					      <div class="row" id="sysSubBtnList"></div>
 | 
				
			||||||
    </div>
 | 
					    </div>
 | 
				
			||||||
    <div class="col-sm-12 col-lg-4">
 | 
					    <div class="col-sm-12 col-lg-8">
 | 
				
			||||||
      <div class="row"></div>
 | 
					      <div class="row h-100">
 | 
				
			||||||
 | 
					        <div class="col-8 h-100">
 | 
				
			||||||
 | 
					          <div id="panel-3"
 | 
				
			||||||
 | 
					               class="panel"
 | 
				
			||||||
 | 
					               data-panel-sortable
 | 
				
			||||||
 | 
					               data-panel-collapsed
 | 
				
			||||||
 | 
					               data-panel-close
 | 
				
			||||||
 | 
					               style="height: calc(100% - 1.5rem)">
 | 
				
			||||||
 | 
					            <div class="panel-hdr">
 | 
				
			||||||
 | 
					              <h2>本月/上月用電比較 (kWh)</h2>
 | 
				
			||||||
            </div>
 | 
					            </div>
 | 
				
			||||||
    <div class="col-sm-12 col-lg-4">
 | 
					            <div class="panel-container show">
 | 
				
			||||||
 | 
					              <div class="panel-content poisition-relative">
 | 
				
			||||||
 | 
					                <div style="width: 100%; min-height: 270px">
 | 
				
			||||||
 | 
					                  <canvas class="chart" id="eveMonElecChart"></canvas>
 | 
				
			||||||
 | 
					                </div>
 | 
				
			||||||
 | 
					              </div>
 | 
				
			||||||
 | 
					            </div>
 | 
				
			||||||
 | 
					          </div>
 | 
				
			||||||
 | 
					        </div>
 | 
				
			||||||
 | 
					        <div class="col-4">
 | 
				
			||||||
 | 
					          <div id="panel-3" class="panel" style="height: calc(100% - 1.5rem)">
 | 
				
			||||||
 | 
					            <div class="panel-hdr">
 | 
				
			||||||
 | 
					              <h2>契約容量</h2>
 | 
				
			||||||
 | 
					            </div>
 | 
				
			||||||
 | 
					            <div class="panel-container h-100 show">
 | 
				
			||||||
 | 
					              <div class="h-100" id="contractValueChart"></div>
 | 
				
			||||||
 | 
					            </div>
 | 
				
			||||||
 | 
					          </div>
 | 
				
			||||||
 | 
					        </div>
 | 
				
			||||||
 | 
					      </div>
 | 
				
			||||||
 | 
					    </div>
 | 
				
			||||||
 | 
					    <!-- <div class="col-sm-12 col-lg-4">
 | 
				
			||||||
      <div class="row h-100">
 | 
					      <div class="row h-100">
 | 
				
			||||||
        <div class="col-lg-6">
 | 
					        <div class="col-lg-6">
 | 
				
			||||||
          <div id="panel-3" class="panel" style="height: calc(100% - 1.5rem)">
 | 
					          <div id="panel-3" class="panel" style="height: calc(100% - 1.5rem)">
 | 
				
			||||||
@ -182,12 +212,16 @@
 | 
				
			|||||||
            </div>
 | 
					            </div>
 | 
				
			||||||
            <div class="panel-container h-100 show">
 | 
					            <div class="panel-container h-100 show">
 | 
				
			||||||
              <div class="panel-content poisition-relative p-0 row p-0 h-100">
 | 
					              <div class="panel-content poisition-relative p-0 row p-0 h-100">
 | 
				
			||||||
                <div class="col-12 mb-2 position-relative row m-0 justify-content-center"
 | 
					                <div
 | 
				
			||||||
                     style="max-height: 150px">
 | 
					                  class="col-12 mb-2 position-relative row m-0 justify-content-center"
 | 
				
			||||||
 | 
					                  style="max-height: 150px"
 | 
				
			||||||
 | 
					                >
 | 
				
			||||||
                  <canvas class="chart" id="errRecChart"></canvas>
 | 
					                  <canvas class="chart" id="errRecChart"></canvas>
 | 
				
			||||||
                </div>
 | 
					                </div>
 | 
				
			||||||
                <div class="col-12 mb-2 position-relative row m-0 justify-content-center"
 | 
					                <div
 | 
				
			||||||
                     style="max-height: 150px">
 | 
					                  class="col-12 mb-2 position-relative row m-0 justify-content-center"
 | 
				
			||||||
 | 
					                  style="max-height: 150px"
 | 
				
			||||||
 | 
					                >
 | 
				
			||||||
                  <canvas class="chart" id="errChkChart"></canvas>
 | 
					                  <canvas class="chart" id="errChkChart"></canvas>
 | 
				
			||||||
                </div>
 | 
					                </div>
 | 
				
			||||||
              </div>
 | 
					              </div>
 | 
				
			||||||
@ -201,12 +235,16 @@
 | 
				
			|||||||
            </div>
 | 
					            </div>
 | 
				
			||||||
            <div class="panel-container h-100 show">
 | 
					            <div class="panel-container h-100 show">
 | 
				
			||||||
              <div class="panel-content poisition-relative row p-0 h-100 p-0">
 | 
					              <div class="panel-content poisition-relative row p-0 h-100 p-0">
 | 
				
			||||||
                <div class="col-12 mb-2 position-relative row m-0 justify-content-center"
 | 
					                <div
 | 
				
			||||||
                     style="max-height: 150px">
 | 
					                  class="col-12 mb-2 position-relative row m-0 justify-content-center"
 | 
				
			||||||
 | 
					                  style="max-height: 150px"
 | 
				
			||||||
 | 
					                >
 | 
				
			||||||
                  <canvas class="chart" id="worOrdErrChart"></canvas>
 | 
					                  <canvas class="chart" id="worOrdErrChart"></canvas>
 | 
				
			||||||
                </div>
 | 
					                </div>
 | 
				
			||||||
                <div class="col-12 mb-2 position-relative row m-0 justify-content-center"
 | 
					                <div
 | 
				
			||||||
                     style="max-height: 150px">
 | 
					                  class="col-12 mb-2 position-relative row m-0 justify-content-center"
 | 
				
			||||||
 | 
					                  style="max-height: 150px"
 | 
				
			||||||
 | 
					                >
 | 
				
			||||||
                  <canvas class="chart" id="worOrdFinChart"></canvas>
 | 
					                  <canvas class="chart" id="worOrdFinChart"></canvas>
 | 
				
			||||||
                </div>
 | 
					                </div>
 | 
				
			||||||
              </div>
 | 
					              </div>
 | 
				
			||||||
@ -214,7 +252,7 @@
 | 
				
			|||||||
          </div>
 | 
					          </div>
 | 
				
			||||||
        </div>
 | 
					        </div>
 | 
				
			||||||
      </div>
 | 
					      </div>
 | 
				
			||||||
    </div>
 | 
					    </div> -->
 | 
				
			||||||
  </div>
 | 
					  </div>
 | 
				
			||||||
</main>
 | 
					</main>
 | 
				
			||||||
<script>
 | 
					<script>
 | 
				
			||||||
@ -224,10 +262,12 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  var eveDayElecChart = null;
 | 
					  var eveDayElecChart = null;
 | 
				
			||||||
  var eveWeekElecChart = null;
 | 
					  var eveWeekElecChart = null;
 | 
				
			||||||
 | 
					  var eveMonElecChart = null;
 | 
				
			||||||
  var worOrdErrChart = null;
 | 
					  var worOrdErrChart = null;
 | 
				
			||||||
  var worOrdFinChart = null;
 | 
					  var worOrdFinChart = null;
 | 
				
			||||||
  var errRecChart = null;
 | 
					  var errRecChart = null;
 | 
				
			||||||
  var errChkChart = null;
 | 
					  var errChkChart = null;
 | 
				
			||||||
 | 
					  var contractValueChart = null;
 | 
				
			||||||
  var loadedCnt = 0;
 | 
					  var loadedCnt = 0;
 | 
				
			||||||
  var chartDataCnt = {
 | 
					  var chartDataCnt = {
 | 
				
			||||||
    alarmCnt: 0,
 | 
					    alarmCnt: 0,
 | 
				
			||||||
@ -260,10 +300,10 @@
 | 
				
			|||||||
          (x) => x.mainSys == obj.mainSys && x.subSys == obj.subSys
 | 
					          (x) => x.mainSys == obj.mainSys && x.subSys == obj.subSys
 | 
				
			||||||
        )[0];
 | 
					        )[0];
 | 
				
			||||||
        strHtml = `<div class="btn-group btn-group-lg col-lg-6 mb-4 dev-group">
 | 
					        strHtml = `<div class="btn-group btn-group-lg col-lg-6 mb-4 dev-group">
 | 
				
			||||||
                            <button name="topFunBtn" data-page="alert" type="button" class="btn btn-secondary col-4 d-flex jusity-content-center disabled" disabled>
 | 
					                            <button name="topFunBtn" data-page="systemMonitor" type="button" class="btn btn-secondary col-4 d-flex jusity-content-center disabled" disabled>
 | 
				
			||||||
                                <img src="${iconObj.iconClass}" class="w-100"></img>
 | 
					                                <img src="${iconObj.iconClass}" class="w-100"></img>
 | 
				
			||||||
                                </button>
 | 
					                                </button>
 | 
				
			||||||
                            <button id="sysSubCardBtn${obj.subSys}" type="button" class="btn btn-secondary disabled" disabled data-id="${obj.subSys}" style="font-size: 20px">${obj.text}</button>
 | 
					                            <button name="topFunBtn" data-page="systemMonitor" id="sysSubCardBtn${obj.subSys}" type="button" class="btn btn-secondary disabled" disabled data-id="${obj.subSys}" style="font-size: 20px">${obj.text}</button>
 | 
				
			||||||
                        </div>`;
 | 
					                        </div>`;
 | 
				
			||||||
        $("#sysSubBtnList").append(strHtml);
 | 
					        $("#sysSubBtnList").append(strHtml);
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
@ -299,10 +339,10 @@
 | 
				
			|||||||
                  x.subSys == subSysObj.sub_system_tag
 | 
					                  x.subSys == subSysObj.sub_system_tag
 | 
				
			||||||
              )[0]?.iconClass;
 | 
					              )[0]?.iconClass;
 | 
				
			||||||
              strHtml += `<div class="btn-group btn-group-lg col-lg-6 mb-4 dev-group" data-id="/${pageAct.AreaTag}/${pageAct.buiTag}/${mainSysObj.main_system_tag}/${subSysObj.sub_system_tag}">
 | 
					              strHtml += `<div class="btn-group btn-group-lg col-lg-6 mb-4 dev-group" data-id="/${pageAct.AreaTag}/${pageAct.buiTag}/${mainSysObj.main_system_tag}/${subSysObj.sub_system_tag}">
 | 
				
			||||||
                            <button name="topFunBtn" data-page="alert" type="button" class="btn btn-secondary col-4" >
 | 
					                            <button name="topFunBtn" data-page="systemMonitor" type="button" class="btn btn-secondary col-4" >
 | 
				
			||||||
                                <img src="${iconClass}" class="w-100 "></img>
 | 
					                                <img src="${iconClass}" class="w-100 "></img>
 | 
				
			||||||
                                </button>
 | 
					                                </button>
 | 
				
			||||||
                            <button id="sysSubCardBtn${subSysObj.sub_system_tag}" type="button" class="btn btn-secondary"  data-id="${subSysObj.sub_system_tag}"  style="font-size: 20px">${subSysObj.full_name}</button>
 | 
					                            <button name="topFunBtn" data-page="systemMonitor" id="sysSubCardBtn${subSysObj.sub_system_tag}" type="button" class="btn btn-secondary"  data-id="${subSysObj.sub_system_tag}"  style="font-size: 20px">${subSysObj.full_name}</button>
 | 
				
			||||||
                        </div>`;
 | 
					                        </div>`;
 | 
				
			||||||
            });
 | 
					            });
 | 
				
			||||||
          });
 | 
					          });
 | 
				
			||||||
@ -333,6 +373,7 @@
 | 
				
			|||||||
      "POST"
 | 
					      "POST"
 | 
				
			||||||
    ).send();
 | 
					    ).send();
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  //取得第一筆電錶
 | 
					  //取得第一筆電錶
 | 
				
			||||||
  function getFirstEletric() {
 | 
					  function getFirstEletric() {
 | 
				
			||||||
    let url = baseApiUrl + "/api/Dashboard/GetTotalElec";
 | 
					    let url = baseApiUrl + "/api/Dashboard/GetTotalElec";
 | 
				
			||||||
@ -364,11 +405,13 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    myBaja.setSubscribeElectricmeterByBql(tempOrdPath);
 | 
					    myBaja.setSubscribeElectricmeterByBql(tempOrdPath);
 | 
				
			||||||
    myBaja.setSubscribeElectricmeterCallBack(function (data) {
 | 
					    myBaja.setSubscribeElectricmeterCallBack(function (data) {
 | 
				
			||||||
 | 
					      console.log(data.point_name);
 | 
				
			||||||
      if (data.point_name == "P") {
 | 
					      if (data.point_name == "P") {
 | 
				
			||||||
        let value = parseFloat(data.value).roundDecimal(2);
 | 
					        let value = parseFloat(data.value).roundDecimal(2);
 | 
				
			||||||
        $("#insPower").text(value);
 | 
					        $("#insPower").text(value);
 | 
				
			||||||
        // $("#insPowerPer").text((value / 4).roundDecimal(2));
 | 
					        // $("#insPowerPer").text((value / 4).roundDecimal(2));
 | 
				
			||||||
        $("#insPowerPer").text((value / contractCapacity).roundDecimal(2));
 | 
					        $("#insPowerPer").text((value / contractCapacity).roundDecimal(2));
 | 
				
			||||||
 | 
					        chartContractValue((value / contractCapacity).roundDecimal(2) * 100);
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    });
 | 
					    });
 | 
				
			||||||
    myBaja.setSubscribeElectricmeterEndCallBack(function () {
 | 
					    myBaja.setSubscribeElectricmeterEndCallBack(function () {
 | 
				
			||||||
@ -465,78 +508,100 @@
 | 
				
			|||||||
      }
 | 
					      }
 | 
				
			||||||
    );
 | 
					    );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // 異常數量與復歸數量
 | 
					    // 本月及上月用電
 | 
				
			||||||
    getAlarmCountByBaja((aData) => {
 | 
					    const prevMonth = `${new Date().getFullYear()}-${new Date().getMonth() < 10 ? "0" : ""
 | 
				
			||||||
      console.log("aData", aData);
 | 
					      }${new Date().getMonth()}-01T00:00:00`;
 | 
				
			||||||
      chartDataCnt.alarmCnt = aData;
 | 
					    const thisMonth = `${new Date().getFullYear()}-${new Date().getMonth() < 10 ? "0" : ""
 | 
				
			||||||
      chkBajaLoaded();
 | 
					      }${new Date().getMonth() + 2}-01T00:00:00`;
 | 
				
			||||||
    });
 | 
					    getElectricMeterDayDataByBaja(
 | 
				
			||||||
    getRecoverCountByBaja((rData) => {
 | 
					      devNum,
 | 
				
			||||||
      chartDataCnt.recCnt = rData;
 | 
					      n4Sup,
 | 
				
			||||||
      chkBajaLoaded();
 | 
					      prevMonth,
 | 
				
			||||||
    });
 | 
					      thisMonth,
 | 
				
			||||||
    // 異常數量與復歸數量
 | 
					      (data) => {
 | 
				
			||||||
    getCheckedAckedCountByBaja((data) => {
 | 
					        const cur = new Date().getMonth();
 | 
				
			||||||
      chartDataCnt.chkedErrCnt = data;
 | 
					        const pre = new Date().getMonth() - 1;
 | 
				
			||||||
      chkBajaLoaded();
 | 
					        console.log(data.data);
 | 
				
			||||||
    });
 | 
					        let curMonthData = data.data.filter(
 | 
				
			||||||
 | 
					          (x) => x.timestamp.$date.$month === cur
 | 
				
			||||||
 | 
					        );
 | 
				
			||||||
 | 
					        let prevMonthData = data.data.filter(
 | 
				
			||||||
 | 
					          (x) => x.timestamp.$date.$month === pre
 | 
				
			||||||
 | 
					        );
 | 
				
			||||||
 | 
					        chartEveMonsElec(curMonthData, prevMonthData);
 | 
				
			||||||
 | 
					        // chkBajaLoaded();
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    getUnCheckedAckedCountByBaja((uData) => {
 | 
					    // 異常數量與復歸數量
 | 
				
			||||||
      chartDataCnt.unChkedErrCnt = uData;
 | 
					    // getAlarmCountByBaja((aData) => {
 | 
				
			||||||
      chkBajaLoaded();
 | 
					    //   chartDataCnt.alarmCnt = aData;
 | 
				
			||||||
    });
 | 
					    //   chkBajaLoaded();
 | 
				
			||||||
 | 
					    // });
 | 
				
			||||||
 | 
					    // getRecoverCountByBaja((rData) => {
 | 
				
			||||||
 | 
					    //   chartDataCnt.recCnt = rData;
 | 
				
			||||||
 | 
					    //   chkBajaLoaded();
 | 
				
			||||||
 | 
					    // });
 | 
				
			||||||
 | 
					    // // 異常數量與復歸數量
 | 
				
			||||||
 | 
					    // getCheckedAckedCountByBaja((data) => {
 | 
				
			||||||
 | 
					    //   chartDataCnt.chkedErrCnt = data;
 | 
				
			||||||
 | 
					    //   chkBajaLoaded();
 | 
				
			||||||
 | 
					    // });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // getUnCheckedAckedCountByBaja((uData) => {
 | 
				
			||||||
 | 
					    //   chartDataCnt.unChkedErrCnt = uData;
 | 
				
			||||||
 | 
					    //   chkBajaLoaded();
 | 
				
			||||||
 | 
					    // });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // 獲取所有異常數量
 | 
					    // 獲取所有異常數量
 | 
				
			||||||
    getAlarmForChartDataByBaja((allAlarmCount) => {
 | 
					    // getAlarmForChartDataByBaja((allAlarmCount) => {
 | 
				
			||||||
      // 呼叫 api 找出所有有維修單的資料 (已派工)
 | 
					    //   // 呼叫 api 找出所有有維修單的資料 (已派工)
 | 
				
			||||||
      // 所有異常數量 - 維修單數量(已派工) = 未派工
 | 
					    //   // 所有異常數量 - 維修單數量(已派工) = 未派工
 | 
				
			||||||
      let url = baseApiUrl + "/operation/OpeRecListAllTime";
 | 
					    //   let url = baseApiUrl + "/operation/OpeRecListAllTime";
 | 
				
			||||||
      const token = cookies.get("JWT-Authorization");
 | 
					    //   const token = cookies.get("JWT-Authorization");
 | 
				
			||||||
      fetch(url, {
 | 
					    //   fetch(url, {
 | 
				
			||||||
        method: "POST",
 | 
					    //     method: "POST",
 | 
				
			||||||
        body: {
 | 
					    //     body: {
 | 
				
			||||||
          data: "{}",
 | 
					    //       data: "{}",
 | 
				
			||||||
        },
 | 
					    //     },
 | 
				
			||||||
        headers: {
 | 
					    //     headers: {
 | 
				
			||||||
          "Content-Type": "application/json",
 | 
					    //       "Content-Type": "application/json",
 | 
				
			||||||
          Authorization: `bearer ${token}`,
 | 
					    //       Authorization: `bearer ${token}`,
 | 
				
			||||||
        },
 | 
					    //     },
 | 
				
			||||||
      })
 | 
					    //   })
 | 
				
			||||||
        .then((res) => res.json())
 | 
					    //     .then((res) => res.json())
 | 
				
			||||||
        .then((data) => {
 | 
					    //     .then((data) => {
 | 
				
			||||||
          // console.log(allAlarmCount)
 | 
					    //       // console.log(allAlarmCount)
 | 
				
			||||||
          const { finish, notfinish } = data.data;
 | 
					    //       const { finish, notfinish } = data.data;
 | 
				
			||||||
          chartWorOrdFin([finish, notfinish]); // 已完成 未完成
 | 
					    //       chartWorOrdFin([finish, notfinish]); // 已完成 未完成
 | 
				
			||||||
          chartWorOrdErr([
 | 
					    //       chartWorOrdErr([
 | 
				
			||||||
            allAlarmCount - (finish + notfinish),
 | 
					    //         allAlarmCount - (finish + notfinish),
 | 
				
			||||||
            finish + notfinish,
 | 
					    //         finish + notfinish,
 | 
				
			||||||
          ]);
 | 
					    //       ]);
 | 
				
			||||||
        });
 | 
					    //     });
 | 
				
			||||||
    });
 | 
					    // });
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  function chkBajaLoaded() {
 | 
					  function chkBajaLoaded() {
 | 
				
			||||||
    loadedCnt++;
 | 
					    // loadedCnt++;
 | 
				
			||||||
 | 
					    // if (loadedCnt == 9) {
 | 
				
			||||||
    if (loadedCnt == 9) {
 | 
					    //   const ErrRecLabel = () => {
 | 
				
			||||||
      const ErrRecLabel = () => {
 | 
					    //     const normal = `異常 ${chartDataCnt.alarmCnt}`;
 | 
				
			||||||
        const normal = `異常 ${chartDataCnt.alarmCnt}`;
 | 
					    //     const offnormal = `復歸 ${chartDataCnt.recCnt}`;
 | 
				
			||||||
        const offnormal = `復歸 ${chartDataCnt.recCnt}`;
 | 
					    //     return [normal, offnormal];
 | 
				
			||||||
        return [normal, offnormal];
 | 
					    //   };
 | 
				
			||||||
      };
 | 
					    //   const ErrChkLabel = () => {
 | 
				
			||||||
 | 
					    //     const acked = `已確認 ${chartDataCnt.chkedErrCnt}`;
 | 
				
			||||||
      const ErrChkLabel = () => {
 | 
					    //     const unacked = `未確認 ${chartDataCnt.unChkedErrCnt}`;
 | 
				
			||||||
        const acked = `已確認 ${chartDataCnt.chkedErrCnt}`;
 | 
					    //     return [acked, unacked];
 | 
				
			||||||
        const unacked = `未確認 ${chartDataCnt.unChkedErrCnt}`;
 | 
					    //   };
 | 
				
			||||||
        return [acked, unacked];
 | 
					    //   chartErrRec(ErrRecLabel, [chartDataCnt.alarmCnt, chartDataCnt.recCnt]);
 | 
				
			||||||
      };
 | 
					    //   chartErrChk(ErrChkLabel, [
 | 
				
			||||||
      chartErrRec(ErrRecLabel, [chartDataCnt.alarmCnt, chartDataCnt.recCnt]);
 | 
					    //     chartDataCnt.chkedErrCnt,
 | 
				
			||||||
      chartErrChk(ErrChkLabel, [
 | 
					    //     chartDataCnt.unChkedErrCnt,
 | 
				
			||||||
        chartDataCnt.chkedErrCnt,
 | 
					    //   ]);
 | 
				
			||||||
        chartDataCnt.unChkedErrCnt,
 | 
					    //   $(loadEle).Loading("close");
 | 
				
			||||||
      ]);
 | 
					    // }
 | 
				
			||||||
      $(loadEle).Loading("close");
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  // 圖表 - 今天與昨天用電量 (長條圖)
 | 
					  // 圖表 - 今天與昨天用電量 (長條圖)
 | 
				
			||||||
@ -713,6 +778,94 @@
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  // 圖表 - 本月即上月用電量
 | 
				
			||||||
 | 
					  function chartEveMonsElec(curMonData, prevMonData) {
 | 
				
			||||||
 | 
					    console.log(
 | 
				
			||||||
 | 
					      curMonData.map((x) => x.sum),
 | 
				
			||||||
 | 
					      prevMonData.map((x) => x.sum)
 | 
				
			||||||
 | 
					    );
 | 
				
			||||||
 | 
					    let eveMonElecChartCanvas = $("#eveMonElecChart").get(0).getContext("2d");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    let eveMonElecChartData = {
 | 
				
			||||||
 | 
					      labels: curMonData.map((x) => x.timestamp.$date.$day),
 | 
				
			||||||
 | 
					      datasets: [
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          id: "curMon",
 | 
				
			||||||
 | 
					          type: "bar",
 | 
				
			||||||
 | 
					          label: "本月用電量",
 | 
				
			||||||
 | 
					          fill: false,
 | 
				
			||||||
 | 
					          backgroundColor: color.success._500,
 | 
				
			||||||
 | 
					          borderColor: color.success._500,
 | 
				
			||||||
 | 
					          pointColor: color.success._500,
 | 
				
			||||||
 | 
					          pointBackgroundColor: color.success._500,
 | 
				
			||||||
 | 
					          data: curMonData.map((x) => x.sum),
 | 
				
			||||||
 | 
					          order: 2,
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          id: "preMon",
 | 
				
			||||||
 | 
					          type: "bar",
 | 
				
			||||||
 | 
					          label: "上月用電量",
 | 
				
			||||||
 | 
					          fill: false,
 | 
				
			||||||
 | 
					          backgroundColor: color.info._100,
 | 
				
			||||||
 | 
					          borderColor: color.info._100,
 | 
				
			||||||
 | 
					          pointColor: color.info._100,
 | 
				
			||||||
 | 
					          pointBackgroundColor: color.info._100,
 | 
				
			||||||
 | 
					          data: prevMonData.map((x) => x.sum),
 | 
				
			||||||
 | 
					          order: 1,
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					      ],
 | 
				
			||||||
 | 
					    };
 | 
				
			||||||
 | 
					    // console.log(eveWeekElecChartData)
 | 
				
			||||||
 | 
					    let eveMonElecChartOptions = {
 | 
				
			||||||
 | 
					      maintainAspectRatio: false,
 | 
				
			||||||
 | 
					      responsive: true,
 | 
				
			||||||
 | 
					      legend: {
 | 
				
			||||||
 | 
					        display: true,
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      scales: {
 | 
				
			||||||
 | 
					        x: {
 | 
				
			||||||
 | 
					          offset: true,
 | 
				
			||||||
 | 
					          grid: { color: color.fusion._500 },
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        y: {
 | 
				
			||||||
 | 
					          beginAtZero: true,
 | 
				
			||||||
 | 
					          ticks: {
 | 
				
			||||||
 | 
					            min: 0,
 | 
				
			||||||
 | 
					          },
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      tooltips: {
 | 
				
			||||||
 | 
					        callbacks: {
 | 
				
			||||||
 | 
					          label: function (tooltipItem) {
 | 
				
			||||||
 | 
					            let isTodayOrYes = tooltipItem.datasetIndex == 1 ? "上月" : "本月";
 | 
				
			||||||
 | 
					            return isTodayOrYes + "用電量 : " + tooltipItem.value + " kWH";
 | 
				
			||||||
 | 
					          },
 | 
				
			||||||
 | 
					          title: function (tooltipItem) {
 | 
				
			||||||
 | 
					            // console.log(tooltipItem)
 | 
				
			||||||
 | 
					            let result = tooltipItem[0]?.xLabel.toString();
 | 
				
			||||||
 | 
					            return result;
 | 
				
			||||||
 | 
					          },
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					    };
 | 
				
			||||||
 | 
					    // console.log(eveWeekElecChartOptions)
 | 
				
			||||||
 | 
					    if (eveMonElecChart == null) {
 | 
				
			||||||
 | 
					      eveMonElecChart = new Chart(eveMonElecChartCanvas, {
 | 
				
			||||||
 | 
					        data: eveMonElecChartData,
 | 
				
			||||||
 | 
					        options: eveMonElecChartOptions,
 | 
				
			||||||
 | 
					      });
 | 
				
			||||||
 | 
					      // console.log(eveWeekElecChart,eveWeekElecChartData, eveWeekElecChartOptions)
 | 
				
			||||||
 | 
					    } else {
 | 
				
			||||||
 | 
					      eveMonElecChart.data.datasets.forEach((dataset) => {
 | 
				
			||||||
 | 
					        if (dataset.order == 1) {
 | 
				
			||||||
 | 
					          dataset.data = curMonData.map((x) => x.sum);
 | 
				
			||||||
 | 
					        } else {
 | 
				
			||||||
 | 
					          dataset.data = prevMonData.map((x) => x.sum);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      });
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  // 圖表 - 異常與復歸圖表 (圓餅圖)
 | 
					  // 圖表 - 異常與復歸圖表 (圓餅圖)
 | 
				
			||||||
  function chartErrRec(labelsFn, datas) {
 | 
					  function chartErrRec(labelsFn, datas) {
 | 
				
			||||||
    let errRecChartCanvas = (ctx = $("#errRecChart").get(0).getContext("2d"));
 | 
					    let errRecChartCanvas = (ctx = $("#errRecChart").get(0).getContext("2d"));
 | 
				
			||||||
@ -904,6 +1057,87 @@
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  // 圖表 - 取得契約容量
 | 
				
			||||||
 | 
					  function chartContractValue(value) {
 | 
				
			||||||
 | 
					    var chartDom = document.getElementById("contractValueChart");
 | 
				
			||||||
 | 
					    contractValueChart = echarts.init(chartDom, null, {
 | 
				
			||||||
 | 
					      renderer: "canvas",
 | 
				
			||||||
 | 
					      useDirtyRect: false,
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    let option = {
 | 
				
			||||||
 | 
					      series: [
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          type: "gauge",
 | 
				
			||||||
 | 
					          axisLine: {
 | 
				
			||||||
 | 
					            lineStyle: {
 | 
				
			||||||
 | 
					              width: 30,
 | 
				
			||||||
 | 
					              color: [
 | 
				
			||||||
 | 
					                [0.3, "#008000"],
 | 
				
			||||||
 | 
					                [0.7, "#FFA500"],
 | 
				
			||||||
 | 
					                [1, "#FF0000"],
 | 
				
			||||||
 | 
					              ],
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					          },
 | 
				
			||||||
 | 
					          pointer: {
 | 
				
			||||||
 | 
					            width: 10,
 | 
				
			||||||
 | 
					            itemStyle: {
 | 
				
			||||||
 | 
					              color: "auto",
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					          },
 | 
				
			||||||
 | 
					          axisTick: {
 | 
				
			||||||
 | 
					            distance: -30,
 | 
				
			||||||
 | 
					            length: 8,
 | 
				
			||||||
 | 
					            lineStyle: {
 | 
				
			||||||
 | 
					              color: "#fff",
 | 
				
			||||||
 | 
					              width: 2,
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					          },
 | 
				
			||||||
 | 
					          splitLine: {
 | 
				
			||||||
 | 
					            distance: -30,
 | 
				
			||||||
 | 
					            length: 30,
 | 
				
			||||||
 | 
					            lineStyle: {
 | 
				
			||||||
 | 
					              color: "#fff",
 | 
				
			||||||
 | 
					              width: 4,
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					          },
 | 
				
			||||||
 | 
					          axisLabel: {
 | 
				
			||||||
 | 
					            color: "inherit",
 | 
				
			||||||
 | 
					            distance: -30,
 | 
				
			||||||
 | 
					            fontSize: 20,
 | 
				
			||||||
 | 
					          },
 | 
				
			||||||
 | 
					          detail: {
 | 
				
			||||||
 | 
					            valueAnimation: true,
 | 
				
			||||||
 | 
					            formatter: "{value} %",
 | 
				
			||||||
 | 
					            color: "inherit",
 | 
				
			||||||
 | 
					            fontSize: 28,
 | 
				
			||||||
 | 
					          },
 | 
				
			||||||
 | 
					          data: [
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					              value,
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					          ],
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					      ],
 | 
				
			||||||
 | 
					    };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    option && contractValueChart.setOption(option);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  function changeContractValueChart(value) {
 | 
				
			||||||
 | 
					    contractValueChart.setOption({
 | 
				
			||||||
 | 
					      series: [
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          data: [
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					              value,
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					          ],
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					      ],
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  // 從 baja 訂閱 左下角各系統小類異常狀態
 | 
					  // 從 baja 訂閱 左下角各系統小類異常狀態
 | 
				
			||||||
  function getAlarmSub(data) {
 | 
					  function getAlarmSub(data) {
 | 
				
			||||||
    $.each(data.data, (idx, alaObj) => {
 | 
					    $.each(data.data, (idx, alaObj) => {
 | 
				
			||||||
 | 
				
			|||||||
@ -1049,7 +1049,7 @@ License: You must have a valid license purchased only from wrapbootstrap.com (li
 | 
				
			|||||||
                $.each(res.data, (index, buiObj) => {
 | 
					                $.each(res.data, (index, buiObj) => {
 | 
				
			||||||
                  // strHtml += `<a id="buiBtn${buiObj.building_tag}" data-urn="${buiObj.urn_3D}" class="dropdown-item" href="javascript:;">${buiObj.full_name}</a>`;
 | 
					                  // strHtml += `<a id="buiBtn${buiObj.building_tag}" data-urn="${buiObj.urn_3D}" class="dropdown-item" href="javascript:;">${buiObj.full_name}</a>`;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                  strHtml += `<a href="javascript:;" id="buiBtn${buiObj.building_tag}" data-target="#sysMonNavbar"  data-page="systemMonitor" class="text-center dropdown-item" name="topFunBtn">${buiObj.full_name}</a>`;
 | 
					                  strHtml += `<a href="javascript:;" id="buiBtn${buiObj.building_tag}" data-target="#sysMonNavbar"  data-page="dashboard" class="text-center dropdown-item" name="topFunBtn">${buiObj.full_name}</a>`;
 | 
				
			||||||
                });
 | 
					                });
 | 
				
			||||||
                pageAct.buildList = res.data;
 | 
					                pageAct.buildList = res.data;
 | 
				
			||||||
                pageAct.buiTag = res.data[0].building_tag;
 | 
					                pageAct.buiTag = res.data[0].building_tag;
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user