照明設備開關 bug 修正
This commit is contained in:
		
							parent
							
								
									605f3f8f87
								
							
						
					
					
						commit
						4e96375be4
					
				@ -6,29 +6,23 @@
 | 
				
			|||||||
</div>
 | 
					</div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<!-- Modal center Add -->
 | 
					<!-- Modal center Add -->
 | 
				
			||||||
<div
 | 
					<div class="modal fade"
 | 
				
			||||||
  class="modal fade"
 | 
					 | 
				
			||||||
     id="lightSchModal"
 | 
					     id="lightSchModal"
 | 
				
			||||||
     tabindex="-1"
 | 
					     tabindex="-1"
 | 
				
			||||||
     role="dialog"
 | 
					     role="dialog"
 | 
				
			||||||
     aria-hidden="true"
 | 
					     aria-hidden="true"
 | 
				
			||||||
     data-backdrop="static"
 | 
					     data-backdrop="static"
 | 
				
			||||||
  data-keyboard="false"
 | 
					     data-keyboard="false">
 | 
				
			||||||
>
 | 
					  <div class="modal-dialog modal-dialog-centered"
 | 
				
			||||||
  <div
 | 
					 | 
				
			||||||
    class="modal-dialog modal-dialog-centered"
 | 
					 | 
				
			||||||
       role="document"
 | 
					       role="document"
 | 
				
			||||||
    style="min-width: 60%"
 | 
					       style="min-width: 60%">
 | 
				
			||||||
  >
 | 
					 | 
				
			||||||
    <div class="modal-content">
 | 
					    <div class="modal-content">
 | 
				
			||||||
      <div class="modal-header">
 | 
					      <div class="modal-header">
 | 
				
			||||||
        <h4 class="modal-title">燈控排程</h4>
 | 
					        <h4 class="modal-title">燈控排程</h4>
 | 
				
			||||||
        <button
 | 
					        <button type="button"
 | 
				
			||||||
          type="button"
 | 
					 | 
				
			||||||
                class="close"
 | 
					                class="close"
 | 
				
			||||||
                data-dismiss="modal"
 | 
					                data-dismiss="modal"
 | 
				
			||||||
          aria-label="Close"
 | 
					                aria-label="Close">
 | 
				
			||||||
        >
 | 
					 | 
				
			||||||
          <span aria-hidden="true"><i class="fal fa-times"></i></span>
 | 
					          <span aria-hidden="true"><i class="fal fa-times"></i></span>
 | 
				
			||||||
        </button>
 | 
					        </button>
 | 
				
			||||||
      </div>
 | 
					      </div>
 | 
				
			||||||
@ -59,6 +53,7 @@
 | 
				
			|||||||
  var forgeInvTypeDef = null;
 | 
					  var forgeInvTypeDef = null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  $(function () {
 | 
					  $(function () {
 | 
				
			||||||
 | 
					    $(loadEle).Loading("start");
 | 
				
			||||||
    getBuildMenu((arr, data) => {
 | 
					    getBuildMenu((arr, data) => {
 | 
				
			||||||
      buildMenuData = data;
 | 
					      buildMenuData = data;
 | 
				
			||||||
      if (arr.indexOf(4) != -1) {
 | 
					      if (arr.indexOf(4) != -1) {
 | 
				
			||||||
@ -162,15 +157,31 @@
 | 
				
			|||||||
        if (lightOn) {
 | 
					        if (lightOn) {
 | 
				
			||||||
          setLightValues(matchDevice.device_guid, 200, 0xe1cf18);
 | 
					          setLightValues(matchDevice.device_guid, 200, 0xe1cf18);
 | 
				
			||||||
          // changeColorForHotspot(matchDevice.spriteDbid, null, true)
 | 
					          // changeColorForHotspot(matchDevice.spriteDbid, null, true)
 | 
				
			||||||
          lightOnHotColorArr.push(matchDevice.spriteDbid);
 | 
					          if (
 | 
				
			||||||
 | 
					            !lightOnHotColorArr.some(
 | 
				
			||||||
 | 
					              ({ spriteDbid }) => spriteDbid === matchDevice.spriteDbid
 | 
				
			||||||
 | 
					            )
 | 
				
			||||||
 | 
					          ) {
 | 
				
			||||||
 | 
					            lightOnHotColorArr.push(matchDevice);
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
 | 
					          lightOffHotColorArr = lightOffHotColorArr.filter(
 | 
				
			||||||
 | 
					            (light) => light.spriteDbid !== matchDevice.spriteDbid
 | 
				
			||||||
 | 
					          );
 | 
				
			||||||
          heatMap?.changeTemp(matchDevice.device_number, 40);
 | 
					          heatMap?.changeTemp(matchDevice.device_number, 40);
 | 
				
			||||||
        } else {
 | 
					        } else {
 | 
				
			||||||
          setLightValues(matchDevice.device_guid, 0, 0xffffff);
 | 
					          setLightValues(matchDevice.device_guid, 0, 0xffffff);
 | 
				
			||||||
          // changeColorForHotspot(matchDevice.spriteDbid)
 | 
					          // changeColorForHotspot(matchDevice.spriteDbid)
 | 
				
			||||||
 | 
					          if (
 | 
				
			||||||
 | 
					            !lightOffHotColorArr.some(
 | 
				
			||||||
 | 
					              ({ spriteDbid }) => spriteDbid === matchDevice.spriteDbid
 | 
				
			||||||
 | 
					            )
 | 
				
			||||||
 | 
					          ) {
 | 
				
			||||||
 | 
					            lightOffHotColorArr.push(matchDevice);
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
          lightOnHotColorArr = lightOnHotColorArr.filter(
 | 
					          lightOnHotColorArr = lightOnHotColorArr.filter(
 | 
				
			||||||
            (light) => light !== matchDevice.spriteDbid
 | 
					            (light) => light.spriteDbid !== matchDevice.spriteDbid
 | 
				
			||||||
          );
 | 
					          );
 | 
				
			||||||
          lightOffHotColorArr.push(matchDevice.spriteDbid);
 | 
					
 | 
				
			||||||
          heatMap?.changeTemp(matchDevice.device_number, 0);
 | 
					          heatMap?.changeTemp(matchDevice.device_number, 0);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
@ -187,7 +198,6 @@
 | 
				
			|||||||
          ? parseInt(data.value)
 | 
					          ? parseInt(data.value)
 | 
				
			||||||
          : 0;
 | 
					          : 0;
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
      
 | 
					 | 
				
			||||||
      if (
 | 
					      if (
 | 
				
			||||||
        data.point_name == norDevPoiName &&
 | 
					        data.point_name == norDevPoiName &&
 | 
				
			||||||
        data.value == matchDevice.device_normal_point_value
 | 
					        data.value == matchDevice.device_normal_point_value
 | 
				
			||||||
@ -211,9 +221,24 @@
 | 
				
			|||||||
          .attr("data-light-type", "error")
 | 
					          .attr("data-light-type", "error")
 | 
				
			||||||
          .data("light-type", "error");
 | 
					          .data("light-type", "error");
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
					      if (
 | 
				
			||||||
 | 
					        allDevList.length ===
 | 
				
			||||||
 | 
					        lightOnHotColorArr.length + lightOffHotColorArr.length
 | 
				
			||||||
 | 
					      ) {
 | 
				
			||||||
 | 
					        changeColorForHotspot(
 | 
				
			||||||
 | 
					          lightOnHotColorArr.map(({ spriteDbid }) => spriteDbid),
 | 
				
			||||||
 | 
					          null,
 | 
				
			||||||
 | 
					          true
 | 
				
			||||||
 | 
					        );
 | 
				
			||||||
 | 
					        changeColorForHotspot(
 | 
				
			||||||
 | 
					          lightOffHotColorArr.map(({ spriteDbid }) => spriteDbid),
 | 
				
			||||||
 | 
					          null,
 | 
				
			||||||
 | 
					          false
 | 
				
			||||||
 | 
					        );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					      $(loadEle).Loading("close");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      changeColorForHotspot(lightOnHotColorArr, null, true);
 | 
					 | 
				
			||||||
      changeColorForHotspot(lightOffHotColorArr, null, false);
 | 
					 | 
				
			||||||
      setLightColor();
 | 
					      setLightColor();
 | 
				
			||||||
      setForgeHotSpotColor(matchDevice);
 | 
					      setForgeHotSpotColor(matchDevice);
 | 
				
			||||||
      lightDevForgeSpotLig(matchDevice);
 | 
					      lightDevForgeSpotLig(matchDevice);
 | 
				
			||||||
@ -230,7 +255,7 @@
 | 
				
			|||||||
    });
 | 
					    });
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  function lightDevForgeSpotLig(devObj) {}
 | 
					  function lightDevForgeSpotLig(devObj) { }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  // 從設備訂閱更新每個設備卡片即時點位
 | 
					  // 從設備訂閱更新每個設備卡片即時點位
 | 
				
			||||||
  function setDevItemPoiValBySub(data) {
 | 
					  function setDevItemPoiValBySub(data) {
 | 
				
			||||||
@ -342,43 +367,32 @@
 | 
				
			|||||||
            $.each(floObj.device_list, (index2, devObj) => {
 | 
					            $.each(floObj.device_list, (index2, devObj) => {
 | 
				
			||||||
              allDevList.push(devObj);
 | 
					              allDevList.push(devObj);
 | 
				
			||||||
              let devItem = getRiserPoiObj();
 | 
					              let devItem = getRiserPoiObj();
 | 
				
			||||||
              strHtml += `<div class="card m-1 border device-wrap" data-number="${
 | 
					              strHtml += `<div class="card m-1 border device-wrap" data-number="${devObj.device_number
 | 
				
			||||||
                devObj.device_number
 | 
					 | 
				
			||||||
                }" data-position="${position}">
 | 
					                }" data-position="${position}">
 | 
				
			||||||
                                        <div class="card-body p-2">
 | 
					                                        <div class="card-body p-2">
 | 
				
			||||||
                                            <div class="d-flex mb-2">
 | 
					                                            <div class="d-flex mb-2">
 | 
				
			||||||
                                                <div  class="mr-5 cur-poi">
 | 
					                                                <div  class="mr-5 cur-poi">
 | 
				
			||||||
                                                    <span class="d-inline-block mr-3">
 | 
					                                                    <span class="d-inline-block mr-3">
 | 
				
			||||||
                                                        <img src="${
 | 
					                                                        <img src="${baseImgUrl +
 | 
				
			||||||
                                                          baseImgUrl +
 | 
					 | 
				
			||||||
                varPathDevIcon +
 | 
					                varPathDevIcon +
 | 
				
			||||||
                devObj.device_image
 | 
					                devObj.device_image
 | 
				
			||||||
                }" class="profile-image rounded-circle" onerror="defDev(this)" alt="...">
 | 
					                }" class="profile-image rounded-circle" onerror="defDev(this)" alt="...">
 | 
				
			||||||
                                                    </span>
 | 
					                                                    </span>
 | 
				
			||||||
                                                    <a name="devItemName" data-number="${
 | 
					                                                    <a name="devItemName" data-number="${devObj.device_number
 | 
				
			||||||
                                                      devObj.device_number
 | 
					                }" href="javascript:;">${devObj.full_name
 | 
				
			||||||
                                                    }" href="javascript:;">${
 | 
					 | 
				
			||||||
                devObj.full_name
 | 
					 | 
				
			||||||
                }</a>
 | 
					                }</a>
 | 
				
			||||||
                                                </div>
 | 
					                                                </div>
 | 
				
			||||||
                                            </div>
 | 
					                                            </div>
 | 
				
			||||||
                                        <div class="d-flex mb-0 mt-2 align-items-center">
 | 
					                                        <div class="d-flex mb-0 mt-2 align-items-center">
 | 
				
			||||||
                                                <span id="${
 | 
					                                                <span id="${devObj.device_number
 | 
				
			||||||
                                                  devObj.device_number
 | 
					 | 
				
			||||||
                }_status" class="circle-light"></span>
 | 
					                }_status" class="circle-light"></span>
 | 
				
			||||||
                                                <span class="${
 | 
					                                                <span class="${devItem ? "" : "d-none"
 | 
				
			||||||
                                                  devItem ? "" : "d-none"
 | 
					                } ml-2">${devItem?.full_name
 | 
				
			||||||
                                                } ml-2">${
 | 
					                }:<span name="devItemPoiVal" data-point="${devItem?.points
 | 
				
			||||||
                devItem?.full_name
 | 
					 | 
				
			||||||
              }:<span name="devItemPoiVal" data-point="${
 | 
					 | 
				
			||||||
                devItem?.points
 | 
					 | 
				
			||||||
                }"></span>${devItem?.unit}</span>
 | 
					                }"></span>${devItem?.unit}</span>
 | 
				
			||||||
                                                <a href="javascript:;" name="devItem" data-id="${
 | 
					                                                <a href="javascript:;" name="devItem" data-id="${devObj.device_guid
 | 
				
			||||||
                                                  devObj.device_guid
 | 
					                }" data-number="${devObj.device_number
 | 
				
			||||||
                                                }" data-number="${
 | 
					                }" data-name="${devObj.full_name
 | 
				
			||||||
                devObj.device_number
 | 
					 | 
				
			||||||
              }" data-name="${
 | 
					 | 
				
			||||||
                devObj.full_name
 | 
					 | 
				
			||||||
                }" class=" ml-2 mb-0 " data-toggle="tooltip" title="默认的 Tooltip">詳細資料</a>
 | 
					                }" class=" ml-2 mb-0 " data-toggle="tooltip" title="默认的 Tooltip">詳細資料</a>
 | 
				
			||||||
                                            </div>
 | 
					                                            </div>
 | 
				
			||||||
                                        </div>
 | 
					                                        </div>
 | 
				
			||||||
@ -511,12 +525,11 @@
 | 
				
			|||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  function show3DModel(urn) {
 | 
					  function show3DModel(urn) {
 | 
				
			||||||
    $(loadEle).Loading("start");
 | 
					 | 
				
			||||||
    launchViewerForHotspot(
 | 
					    launchViewerForHotspot(
 | 
				
			||||||
      urn,
 | 
					      urn,
 | 
				
			||||||
      (viewer, nodeIds) => {
 | 
					      (viewer, nodeIds) => {
 | 
				
			||||||
        // 隱藏 toolbar
 | 
					        // 隱藏 toolbar
 | 
				
			||||||
        // document.querySelector("#guiviewer3d-toolbar").style.display = "none";
 | 
					        document.querySelector("#guiviewer3d-toolbar").style.display = "none";
 | 
				
			||||||
        let devDbIds = allDevList.map((x) => x.forge_dbid);
 | 
					        let devDbIds = allDevList.map((x) => x.forge_dbid);
 | 
				
			||||||
        // 大類
 | 
					        // 大類
 | 
				
			||||||
        let subDevDbId = [];
 | 
					        let subDevDbId = [];
 | 
				
			||||||
@ -534,11 +547,11 @@
 | 
				
			|||||||
          setInviForge(forgeInvTypeDef, [...devDbIds, ...subDevDbId]);
 | 
					          setInviForge(forgeInvTypeDef, [...devDbIds, ...subDevDbId]);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        $(loadEle).Loading("close");
 | 
					 | 
				
			||||||
        let sensorObjs = [];
 | 
					        let sensorObjs = [];
 | 
				
			||||||
        let devices = [];
 | 
					        let devices = [];
 | 
				
			||||||
        if (pageAct.sysSubTag === "M12") {
 | 
					        if (pageAct.sysSubTag === "M12") {
 | 
				
			||||||
          addHotPoint(viewer);
 | 
					          addHotPoint(viewer);
 | 
				
			||||||
 | 
					          Forge3DSensor.sensorTimes = 0;
 | 
				
			||||||
          allDevList.forEach((device) => {
 | 
					          allDevList.forEach((device) => {
 | 
				
			||||||
            Forge3DSensor.sensorTimes++;
 | 
					            Forge3DSensor.sensorTimes++;
 | 
				
			||||||
            const sensorObj = new Forge3DSensor({
 | 
					            const sensorObj = new Forge3DSensor({
 | 
				
			||||||
@ -670,9 +683,7 @@
 | 
				
			|||||||
          getE1NodeId(viewer);
 | 
					          getE1NodeId(viewer);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
      () => {
 | 
					      () => { },
 | 
				
			||||||
        $(loadEle).Loading("close");
 | 
					 | 
				
			||||||
      },
 | 
					 | 
				
			||||||
      "[name=forgeViewer]"
 | 
					      "[name=forgeViewer]"
 | 
				
			||||||
    );
 | 
					    );
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
				
			|||||||
@ -49,7 +49,7 @@
 | 
				
			|||||||
    getHotspotPoint(() => {
 | 
					    getHotspotPoint(() => {
 | 
				
			||||||
      show3DModel(pageAct.urn);
 | 
					      show3DModel(pageAct.urn);
 | 
				
			||||||
    });
 | 
					    });
 | 
				
			||||||
    if (!tempSubTag.includes(pageAct.sysSubTag)) {
 | 
					    if (tempSubTag.includes(pageAct.sysSubTag)) {
 | 
				
			||||||
      $("#topLight").html(setTopLight());
 | 
					      $("#topLight").html(setTopLight());
 | 
				
			||||||
      setLightColor();
 | 
					      setLightColor();
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
@ -573,7 +573,13 @@
 | 
				
			|||||||
        if (lightOn && matchDevice.spriteDbid) {
 | 
					        if (lightOn && matchDevice.spriteDbid) {
 | 
				
			||||||
          // setLightValues(matchDevice.device_guid, 200, 0xe1cf18);
 | 
					          // setLightValues(matchDevice.device_guid, 200, 0xe1cf18);
 | 
				
			||||||
          // changeColorForHotspot(matchDevice.spriteDbid, null, lightOn);
 | 
					          // changeColorForHotspot(matchDevice.spriteDbid, null, lightOn);
 | 
				
			||||||
 | 
					          if (
 | 
				
			||||||
 | 
					            !lightOnHotColorArr.some(
 | 
				
			||||||
 | 
					              ({ spriteDbid }) => spriteDbid === matchDevice.spriteDbid
 | 
				
			||||||
 | 
					            )
 | 
				
			||||||
 | 
					          ) {
 | 
				
			||||||
            lightOnHotColorArr.push(matchDevice);
 | 
					            lightOnHotColorArr.push(matchDevice);
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
          lightOffHotColorArr = lightOffHotColorArr.filter(
 | 
					          lightOffHotColorArr = lightOffHotColorArr.filter(
 | 
				
			||||||
            (light) => light.spriteDbid !== matchDevice.spriteDbid
 | 
					            (light) => light.spriteDbid !== matchDevice.spriteDbid
 | 
				
			||||||
          );
 | 
					          );
 | 
				
			||||||
@ -582,10 +588,16 @@
 | 
				
			|||||||
          // console.log(lightOn, matchDevice);
 | 
					          // console.log(lightOn, matchDevice);
 | 
				
			||||||
          // setLightValues(matchDevice.device_guid, 0, 0xffffff);
 | 
					          // setLightValues(matchDevice.device_guid, 0, 0xffffff);
 | 
				
			||||||
          // changeColorForHotspot(matchDevice.spriteDbid, null, lightOn);
 | 
					          // changeColorForHotspot(matchDevice.spriteDbid, null, lightOn);
 | 
				
			||||||
 | 
					          if (
 | 
				
			||||||
 | 
					            !lightOffHotColorArr.some(
 | 
				
			||||||
 | 
					              ({ spriteDbid }) => spriteDbid === matchDevice.spriteDbid
 | 
				
			||||||
 | 
					            )
 | 
				
			||||||
 | 
					          ) {
 | 
				
			||||||
 | 
					            lightOffHotColorArr.push(matchDevice);
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
          lightOnHotColorArr = lightOnHotColorArr.filter(
 | 
					          lightOnHotColorArr = lightOnHotColorArr.filter(
 | 
				
			||||||
            (light) => light.spriteDbid !== matchDevice.spriteDbid
 | 
					            (light) => light.spriteDbid !== matchDevice.spriteDbid
 | 
				
			||||||
          );
 | 
					          );
 | 
				
			||||||
          lightOffHotColorArr.push(matchDevice);
 | 
					 | 
				
			||||||
          heatMap?.changeTemp(matchDevice.device_number, 0);
 | 
					          heatMap?.changeTemp(matchDevice.device_number, 0);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
@ -681,7 +693,6 @@
 | 
				
			|||||||
        deviceScatterErrorArr.length ===
 | 
					        deviceScatterErrorArr.length ===
 | 
				
			||||||
        option.series[0].data.length
 | 
					        option.series[0].data.length
 | 
				
			||||||
      ) {
 | 
					      ) {
 | 
				
			||||||
        console.log("deviceScatterNormalArr", deviceScatterNormalArr)
 | 
					 | 
				
			||||||
        deviceScatterNormalArr.forEach((device) => {
 | 
					        deviceScatterNormalArr.forEach((device) => {
 | 
				
			||||||
          const cur = option.series[0].data.find(
 | 
					          const cur = option.series[0].data.find(
 | 
				
			||||||
            ({ device_number }) => device_number === device.device_number
 | 
					            ({ device_number }) => device_number === device.device_number
 | 
				
			||||||
@ -693,7 +704,6 @@
 | 
				
			|||||||
          cur.itemStyle = { color: normalColor };
 | 
					          cur.itemStyle = { color: normalColor };
 | 
				
			||||||
        });
 | 
					        });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
        deviceScatterCloseArr.forEach((device) => {
 | 
					        deviceScatterCloseArr.forEach((device) => {
 | 
				
			||||||
          const cur = option.series[0].data.find(
 | 
					          const cur = option.series[0].data.find(
 | 
				
			||||||
            ({ device_number }) => device_number === device.device_number
 | 
					            ({ device_number }) => device_number === device.device_number
 | 
				
			||||||
@ -1150,7 +1160,7 @@
 | 
				
			|||||||
        };
 | 
					        };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        obj.itemStyle = {
 | 
					        obj.itemStyle = {
 | 
				
			||||||
          color: item.device_color || item.device_normal_color,
 | 
					          color: item.device_color || item.device_close_color,
 | 
				
			||||||
        };
 | 
					        };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        res.push(obj);
 | 
					        res.push(obj);
 | 
				
			||||||
 | 
				
			|||||||
@ -8,102 +8,72 @@ Purchase: https://wrapbootstrap.com/theme/smartadmin-responsive-webapp-WB0573SK0
 | 
				
			|||||||
License: You must have a valid license purchased only from wrapbootstrap.com (link above) in order to legally use this theme for your project.
 | 
					License: You must have a valid license purchased only from wrapbootstrap.com (link above) in order to legally use this theme for your project.
 | 
				
			||||||
-->
 | 
					-->
 | 
				
			||||||
<html lang="zh-hant-TW" class="root-text-lg">
 | 
					<html lang="zh-hant-TW" class="root-text-lg">
 | 
				
			||||||
  <head>
 | 
					<head>
 | 
				
			||||||
  <meta charset="utf-8" />
 | 
					  <meta charset="utf-8" />
 | 
				
			||||||
  <title>Marketing Dashboard - Application Intel - SmartAdmin v4.5.1</title>
 | 
					  <title>Marketing Dashboard - Application Intel - SmartAdmin v4.5.1</title>
 | 
				
			||||||
  <meta name="description" content="Marketing Dashboard" />
 | 
					  <meta name="description" content="Marketing Dashboard" />
 | 
				
			||||||
  <meta http-equiv="X-UA-Compatible" content="IE=edge" />
 | 
					  <meta http-equiv="X-UA-Compatible" content="IE=edge" />
 | 
				
			||||||
    <meta
 | 
					  <meta name="viewport"
 | 
				
			||||||
      name="viewport"
 | 
					        content="width=device-width, initial-scale=1, shrink-to-fit=no, user-scalable=no, minimal-ui" />
 | 
				
			||||||
      content="width=device-width, initial-scale=1, shrink-to-fit=no, user-scalable=no, minimal-ui"
 | 
					 | 
				
			||||||
    />
 | 
					 | 
				
			||||||
  <!-- Call App Mode on ios devices -->
 | 
					  <!-- Call App Mode on ios devices -->
 | 
				
			||||||
  <meta name="apple-mobile-web-app-capable" content="yes" />
 | 
					  <meta name="apple-mobile-web-app-capable" content="yes" />
 | 
				
			||||||
  <!-- Remove Tap Highlight on Windows Phone IE -->
 | 
					  <!-- Remove Tap Highlight on Windows Phone IE -->
 | 
				
			||||||
  <meta name="msapplication-tap-highlight" content="no" />
 | 
					  <meta name="msapplication-tap-highlight" content="no" />
 | 
				
			||||||
  <!-- base css -->
 | 
					  <!-- base css -->
 | 
				
			||||||
    <link
 | 
					  <link id="vendorsbundle"
 | 
				
			||||||
      id="vendorsbundle"
 | 
					 | 
				
			||||||
        rel="stylesheet"
 | 
					        rel="stylesheet"
 | 
				
			||||||
        media="screen, print"
 | 
					        media="screen, print"
 | 
				
			||||||
      href="lib/vendors.bundle.css"
 | 
					        href="lib/vendors.bundle.css" />
 | 
				
			||||||
    />
 | 
					  <link id="appbundle"
 | 
				
			||||||
    <link
 | 
					 | 
				
			||||||
      id="appbundle"
 | 
					 | 
				
			||||||
        rel="stylesheet"
 | 
					        rel="stylesheet"
 | 
				
			||||||
        media="screen, print"
 | 
					        media="screen, print"
 | 
				
			||||||
      href="lib/app.bundle.css"
 | 
					        href="lib/app.bundle.css" />
 | 
				
			||||||
    />
 | 
					 | 
				
			||||||
  <link id="mytheme" rel="stylesheet" media="screen, print" href="#" />
 | 
					  <link id="mytheme" rel="stylesheet" media="screen, print" href="#" />
 | 
				
			||||||
    <link
 | 
					  <link id="myskin"
 | 
				
			||||||
      id="myskin"
 | 
					 | 
				
			||||||
        rel="stylesheet"
 | 
					        rel="stylesheet"
 | 
				
			||||||
        media="screen, print"
 | 
					        media="screen, print"
 | 
				
			||||||
      href="lib/skins/skin-master.css"
 | 
					        href="lib/skins/skin-master.css" />
 | 
				
			||||||
    />
 | 
					 | 
				
			||||||
  <link rel="stylesheet" href="lib/notifications/toastr/toastr.min.css" />
 | 
					  <link rel="stylesheet" href="lib/notifications/toastr/toastr.min.css" />
 | 
				
			||||||
  <link rel="stylesheet" href="lib/dropzone/dropzone.css" />
 | 
					  <link rel="stylesheet" href="lib/dropzone/dropzone.css" />
 | 
				
			||||||
  <!-- Place favicon.ico in the root directory -->
 | 
					  <!-- Place favicon.ico in the root directory -->
 | 
				
			||||||
    <link
 | 
					  <link rel="apple-touch-icon"
 | 
				
			||||||
      rel="apple-touch-icon"
 | 
					 | 
				
			||||||
        sizes="180x180"
 | 
					        sizes="180x180"
 | 
				
			||||||
      href="img/favicon/apple-touch-icon.png"
 | 
					        href="img/favicon/apple-touch-icon.png" />
 | 
				
			||||||
    />
 | 
					  <link rel="icon"
 | 
				
			||||||
    <link
 | 
					 | 
				
			||||||
      rel="icon"
 | 
					 | 
				
			||||||
        type="image/png"
 | 
					        type="image/png"
 | 
				
			||||||
        sizes="32x32"
 | 
					        sizes="32x32"
 | 
				
			||||||
      href="img/favicon/favicon-32x32.png"
 | 
					        href="img/favicon/favicon-32x32.png" />
 | 
				
			||||||
    />
 | 
					  <link rel="mask-icon"
 | 
				
			||||||
    <link
 | 
					 | 
				
			||||||
      rel="mask-icon"
 | 
					 | 
				
			||||||
        href="img/favicon/safari-pinned-tab.svg"
 | 
					        href="img/favicon/safari-pinned-tab.svg"
 | 
				
			||||||
      color="#5bbad5"
 | 
					        color="#5bbad5" />
 | 
				
			||||||
    />
 | 
					 | 
				
			||||||
  <!-- Font Awesome -->
 | 
					  <!-- Font Awesome -->
 | 
				
			||||||
  <link href="lib/fontawesome-free/css/all.min.css" rel="stylesheet" />
 | 
					  <link href="lib/fontawesome-free/css/all.min.css" rel="stylesheet" />
 | 
				
			||||||
  <link href="lib/jquery-ui/jquery-ui.min.css" rel="stylesheet" />
 | 
					  <link href="lib/jquery-ui/jquery-ui.min.css" rel="stylesheet" />
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  <!--<link href="lib/chart.js/Chart.min.css" rel="stylesheet" />-->
 | 
					  <!--<link href="lib/chart.js/Chart.min.css" rel="stylesheet" />-->
 | 
				
			||||||
    <link
 | 
					  <link href="lib/jstree-master/themes/default/style.min.css"
 | 
				
			||||||
      href="lib/jstree-master/themes/default/style.min.css"
 | 
					        rel="stylesheet" />
 | 
				
			||||||
      rel="stylesheet"
 | 
					  <link href="lib/jstree-master/themes/default-dark/style.min.css"
 | 
				
			||||||
    />
 | 
					        rel="stylesheet" />
 | 
				
			||||||
    <link
 | 
					  <link href="https://fonts.googleapis.com/icon?family=Material+Icons"
 | 
				
			||||||
      href="lib/jstree-master/themes/default-dark/style.min.css"
 | 
					        rel="stylesheet" />
 | 
				
			||||||
      rel="stylesheet"
 | 
					 | 
				
			||||||
    />
 | 
					 | 
				
			||||||
    <link
 | 
					 | 
				
			||||||
      href="https://fonts.googleapis.com/icon?family=Material+Icons"
 | 
					 | 
				
			||||||
      rel="stylesheet"
 | 
					 | 
				
			||||||
    />
 | 
					 | 
				
			||||||
  <!--<link rel="stylesheet" media="screen, print" href="https://cdn.datatables.net/1.10.21/css/dataTables.bootstrap.min.css">-->
 | 
					  <!--<link rel="stylesheet" media="screen, print" href="https://cdn.datatables.net/1.10.21/css/dataTables.bootstrap.min.css">-->
 | 
				
			||||||
    <link
 | 
					  <link rel="stylesheet"
 | 
				
			||||||
      rel="stylesheet"
 | 
					 | 
				
			||||||
        media="screen, print"
 | 
					        media="screen, print"
 | 
				
			||||||
      href="https://cdn.datatables.net/1.10.21/css/dataTables.bootstrap4.min.css"
 | 
					        href="https://cdn.datatables.net/1.10.21/css/dataTables.bootstrap4.min.css" />
 | 
				
			||||||
    />
 | 
					 | 
				
			||||||
  <link rel="stylesheet" href="css/site.css" />
 | 
					  <link rel="stylesheet" href="css/site.css" />
 | 
				
			||||||
    <link
 | 
					  <link rel="stylesheet"
 | 
				
			||||||
      rel="stylesheet"
 | 
					        href="css/yourteam/plugins/yt-tooltip/yt-tooltip.css" />
 | 
				
			||||||
      href="css/yourteam/plugins/yt-tooltip/yt-tooltip.css"
 | 
					  <link rel="stylesheet"
 | 
				
			||||||
    />
 | 
					        href="css/yourteam/plugins/yt-notice/yt-notice.css" />
 | 
				
			||||||
    <link
 | 
					  <link rel="stylesheet"
 | 
				
			||||||
      rel="stylesheet"
 | 
					        href="css/yourteam/plugins/yt-alert/ytpop-alert.css" />
 | 
				
			||||||
      href="css/yourteam/plugins/yt-notice/yt-notice.css"
 | 
					  <link rel="stylesheet"
 | 
				
			||||||
    />
 | 
					 | 
				
			||||||
    <link
 | 
					 | 
				
			||||||
      rel="stylesheet"
 | 
					 | 
				
			||||||
      href="css/yourteam/plugins/yt-alert/ytpop-alert.css"
 | 
					 | 
				
			||||||
    />
 | 
					 | 
				
			||||||
    <link
 | 
					 | 
				
			||||||
      rel="stylesheet"
 | 
					 | 
				
			||||||
        href="https://developer.api.autodesk.com/modelderivative/v2/viewers/7.*/style.min.css"
 | 
					        href="https://developer.api.autodesk.com/modelderivative/v2/viewers/7.*/style.min.css"
 | 
				
			||||||
      type="text/css"
 | 
					        type="text/css" />
 | 
				
			||||||
    />
 | 
					</head>
 | 
				
			||||||
  </head>
 | 
					<!-- BEGIN Body -->
 | 
				
			||||||
  <!-- BEGIN Body -->
 | 
					<!-- Possible Classes
 | 
				
			||||||
  <!-- Possible Classes
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    * 'header-function-fixed'         - header is in a fixed at all times
 | 
					    * 'header-function-fixed'         - header is in a fixed at all times
 | 
				
			||||||
    * 'nav-function-fixed'            - left panel is fixed
 | 
					    * 'nav-function-fixed'            - left panel is fixed
 | 
				
			||||||
@ -128,9 +98,7 @@ License: You must have a valid license purchased only from wrapbootstrap.com (li
 | 
				
			|||||||
    >>> more settings are described inside documentation page >>>
 | 
					    >>> more settings are described inside documentation page >>>
 | 
				
			||||||
-->
 | 
					-->
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  <body
 | 
					<body class="mod-bg-1 mod-nav-link mod-skin-dark mod-hide-info-card nav-function-top nav-function-fixed mod-lean-subheader desktop chrome webkit pace-done blur">
 | 
				
			||||||
    class="mod-bg-1 mod-nav-link mod-skin-dark mod-hide-info-card nav-function-top nav-function-fixed mod-lean-subheader desktop chrome webkit pace-done blur"
 | 
					 | 
				
			||||||
  >
 | 
					 | 
				
			||||||
  <!-- DOC: script to save and load page settings -->
 | 
					  <!-- DOC: script to save and load page settings -->
 | 
				
			||||||
  <script>
 | 
					  <script>
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
@ -203,17 +171,13 @@ License: You must have a valid license purchased only from wrapbootstrap.com (li
 | 
				
			|||||||
        <header class="page-header" role="banner">
 | 
					        <header class="page-header" role="banner">
 | 
				
			||||||
          <!--we need this logo when user switches to nav-function-top-->
 | 
					          <!--we need this logo when user switches to nav-function-top-->
 | 
				
			||||||
          <div class="page-logo">
 | 
					          <div class="page-logo">
 | 
				
			||||||
              <a
 | 
					            <a href="javascript:;"
 | 
				
			||||||
                href="javascript:;"
 | 
					 | 
				
			||||||
               name="topFunBtn"
 | 
					               name="topFunBtn"
 | 
				
			||||||
               data-page="dashboard"
 | 
					               data-page="dashboard"
 | 
				
			||||||
                class="page-logo-link press-scale-down d-flex align-items-center position-relative"
 | 
					               class="page-logo-link press-scale-down d-flex align-items-center position-relative">
 | 
				
			||||||
              >
 | 
					              <img src="img/logo.png"
 | 
				
			||||||
                <img
 | 
					 | 
				
			||||||
                  src="img/logo.png"
 | 
					 | 
				
			||||||
                   alt="SmartAdmin WebApp"
 | 
					                   alt="SmartAdmin WebApp"
 | 
				
			||||||
                  aria-roledescription="logo"
 | 
					                   aria-roledescription="logo" />
 | 
				
			||||||
                />
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
              <!--<span class="page-logo-text mr-1">SmartAdmin WebApp</span>-->
 | 
					              <!--<span class="page-logo-text mr-1">SmartAdmin WebApp</span>-->
 | 
				
			||||||
              <!--<span class="position-absolute text-white opacity-50 small pos-top pos-right mr-2 mt-n2"></span>
 | 
					              <!--<span class="position-absolute text-white opacity-50 small pos-top pos-right mr-2 mt-n2"></span>
 | 
				
			||||||
@ -222,35 +186,29 @@ License: You must have a valid license purchased only from wrapbootstrap.com (li
 | 
				
			|||||||
          </div>
 | 
					          </div>
 | 
				
			||||||
          <!--DOC: nav menu layout change shortcut-->
 | 
					          <!--DOC: nav menu layout change shortcut-->
 | 
				
			||||||
          <div class="hidden-md-down dropdown-icon-menu position-relative">
 | 
					          <div class="hidden-md-down dropdown-icon-menu position-relative">
 | 
				
			||||||
              <a
 | 
					            <a href="#"
 | 
				
			||||||
                href="#"
 | 
					 | 
				
			||||||
               class="header-btn btn js-waves-off"
 | 
					               class="header-btn btn js-waves-off"
 | 
				
			||||||
               data-action="toggle"
 | 
					               data-action="toggle"
 | 
				
			||||||
               data-class="nav-function-hidden"
 | 
					               data-class="nav-function-hidden"
 | 
				
			||||||
                title="Hide Navigation"
 | 
					               title="Hide Navigation">
 | 
				
			||||||
              >
 | 
					 | 
				
			||||||
              <i class="ni ni-menu"></i>
 | 
					              <i class="ni ni-menu"></i>
 | 
				
			||||||
            </a>
 | 
					            </a>
 | 
				
			||||||
            <ul>
 | 
					            <ul>
 | 
				
			||||||
              <li>
 | 
					              <li>
 | 
				
			||||||
                  <a
 | 
					                <a href="#"
 | 
				
			||||||
                    href="#"
 | 
					 | 
				
			||||||
                   class="btn js-waves-off"
 | 
					                   class="btn js-waves-off"
 | 
				
			||||||
                   data-action="toggle"
 | 
					                   data-action="toggle"
 | 
				
			||||||
                   data-class="nav-function-minify"
 | 
					                   data-class="nav-function-minify"
 | 
				
			||||||
                    title="Minify Navigation"
 | 
					                   title="Minify Navigation">
 | 
				
			||||||
                  >
 | 
					 | 
				
			||||||
                  <i class="ni ni-minify-nav"></i>
 | 
					                  <i class="ni ni-minify-nav"></i>
 | 
				
			||||||
                </a>
 | 
					                </a>
 | 
				
			||||||
              </li>
 | 
					              </li>
 | 
				
			||||||
              <li>
 | 
					              <li>
 | 
				
			||||||
                  <a
 | 
					                <a href="#"
 | 
				
			||||||
                    href="#"
 | 
					 | 
				
			||||||
                   class="btn js-waves-off"
 | 
					                   class="btn js-waves-off"
 | 
				
			||||||
                   data-action="toggle"
 | 
					                   data-action="toggle"
 | 
				
			||||||
                   data-class="nav-function-fixed"
 | 
					                   data-class="nav-function-fixed"
 | 
				
			||||||
                    title="Lock Navigation"
 | 
					                   title="Lock Navigation">
 | 
				
			||||||
                  >
 | 
					 | 
				
			||||||
                  <i class="ni ni-lock-nav"></i>
 | 
					                  <i class="ni ni-lock-nav"></i>
 | 
				
			||||||
                </a>
 | 
					                </a>
 | 
				
			||||||
              </li>
 | 
					              </li>
 | 
				
			||||||
@ -258,83 +216,65 @@ License: You must have a valid license purchased only from wrapbootstrap.com (li
 | 
				
			|||||||
          </div>
 | 
					          </div>
 | 
				
			||||||
          <!--DOC: mobile button appears during mobile width-->
 | 
					          <!--DOC: mobile button appears during mobile width-->
 | 
				
			||||||
          <div class="hidden-lg-up">
 | 
					          <div class="hidden-lg-up">
 | 
				
			||||||
              <a
 | 
					            <a href="#"
 | 
				
			||||||
                href="#"
 | 
					 | 
				
			||||||
               class="header-btn btn press-scale-down"
 | 
					               class="header-btn btn press-scale-down"
 | 
				
			||||||
               data-action="toggle"
 | 
					               data-action="toggle"
 | 
				
			||||||
                data-class="mobile-nav-on"
 | 
					               data-class="mobile-nav-on">
 | 
				
			||||||
              >
 | 
					 | 
				
			||||||
              <i class="ni ni-menu"></i>
 | 
					              <i class="ni ni-menu"></i>
 | 
				
			||||||
            </a>
 | 
					            </a>
 | 
				
			||||||
          </div>
 | 
					          </div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
          <div class="dropdown">
 | 
					          <div class="dropdown">
 | 
				
			||||||
              <a
 | 
					            <a class="dropdown-toggle fs-1"
 | 
				
			||||||
                class="dropdown-toggle fs-1"
 | 
					 | 
				
			||||||
               href="javascript:;"
 | 
					               href="javascript:;"
 | 
				
			||||||
               role="button"
 | 
					               role="button"
 | 
				
			||||||
               id="buiActDrop"
 | 
					               id="buiActDrop"
 | 
				
			||||||
               data-target="buiList"
 | 
					               data-target="buiList"
 | 
				
			||||||
               data-toggle="dropdown"
 | 
					               data-toggle="dropdown"
 | 
				
			||||||
                aria-haspopup="true"
 | 
					               aria-haspopup="true">
 | 
				
			||||||
              >
 | 
					 | 
				
			||||||
            </a>
 | 
					            </a>
 | 
				
			||||||
              <div
 | 
					            <div id="buiList"
 | 
				
			||||||
                id="buiList"
 | 
					                 class="dropdown-menu dropdown-select-menu js-auto-close"></div>
 | 
				
			||||||
                class="dropdown-menu dropdown-select-menu js-auto-close"
 | 
					 | 
				
			||||||
              ></div>
 | 
					 | 
				
			||||||
          </div>
 | 
					          </div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
          <div class="ml-auto d-flex" id="froLisPage"></div>
 | 
					          <div class="ml-auto d-flex" id="froLisPage"></div>
 | 
				
			||||||
          <div class="ml-auto d-flex mr-3">
 | 
					          <div class="ml-auto d-flex mr-3">
 | 
				
			||||||
            <div class="dropdown">
 | 
					            <div class="dropdown">
 | 
				
			||||||
                <a
 | 
					              <a href="javascript:;"
 | 
				
			||||||
                  href="javascript:;"
 | 
					 | 
				
			||||||
                 id="toggleNoticeBtn"
 | 
					                 id="toggleNoticeBtn"
 | 
				
			||||||
                  class="d-flex align-items-center justify-content-center ml-2"
 | 
					                 class="d-flex align-items-center justify-content-center ml-2">
 | 
				
			||||||
                >
 | 
					 | 
				
			||||||
                <!--<img src="img/demo/avatars/avatar-admin.png" class="profile-image rounded-circle"
 | 
					                <!--<img src="img/demo/avatars/avatar-admin.png" class="profile-image rounded-circle"
 | 
				
			||||||
                              alt="Dr. Codex Lantern">-->
 | 
					                              alt="Dr. Codex Lantern">-->
 | 
				
			||||||
                <!--you can also add username next to the avatar with the codes below:-->
 | 
					                <!--you can also add username next to the avatar with the codes below:-->
 | 
				
			||||||
                <div class="row m-0 justify-content-center userblock">
 | 
					                <div class="row m-0 justify-content-center userblock">
 | 
				
			||||||
                  <i id="noticeConIcon" class="fs-1-5 w-100 text-center"></i>
 | 
					                  <i id="noticeConIcon" class="fs-1-5 w-100 text-center"></i>
 | 
				
			||||||
                    <span
 | 
					                  <span id="noticeConText"
 | 
				
			||||||
                      id="noticeConText"
 | 
					 | 
				
			||||||
                        class="text-truncate text-truncate-header hidden-xs-down"
 | 
					                        class="text-truncate text-truncate-header hidden-xs-down"
 | 
				
			||||||
                        data-hide="隱藏警告"
 | 
					                        data-hide="隱藏警告"
 | 
				
			||||||
                      data-show="顯示警告"
 | 
					                        data-show="顯示警告"></span>
 | 
				
			||||||
                    ></span>
 | 
					 | 
				
			||||||
                </div>
 | 
					                </div>
 | 
				
			||||||
              </a>
 | 
					              </a>
 | 
				
			||||||
            </div>
 | 
					            </div>
 | 
				
			||||||
            <!--app user menu-->
 | 
					            <!--app user menu-->
 | 
				
			||||||
            <div class="dropdown">
 | 
					            <div class="dropdown">
 | 
				
			||||||
                <a
 | 
					              <a href="#"
 | 
				
			||||||
                  href="#"
 | 
					 | 
				
			||||||
                 data-toggle="dropdown"
 | 
					                 data-toggle="dropdown"
 | 
				
			||||||
                 data-target="logoutList"
 | 
					                 data-target="logoutList"
 | 
				
			||||||
                  class="d-flex align-items-center justify-content-center ml-2"
 | 
					                 class="d-flex align-items-center justify-content-center ml-2">
 | 
				
			||||||
                >
 | 
					 | 
				
			||||||
                <!--<img src="img/demo/avatars/avatar-admin.png" class="profile-image rounded-circle"
 | 
					                <!--<img src="img/demo/avatars/avatar-admin.png" class="profile-image rounded-circle"
 | 
				
			||||||
                              alt="Dr. Codex Lantern">-->
 | 
					                              alt="Dr. Codex Lantern">-->
 | 
				
			||||||
                <!--you can also add username next to the avatar with the codes below:-->
 | 
					                <!--you can also add username next to the avatar with the codes below:-->
 | 
				
			||||||
                <div class="row m-0 justify-content-center userblock">
 | 
					                <div class="row m-0 justify-content-center userblock">
 | 
				
			||||||
                  <i class="fas fa-user-circle fs-1-5 w-100 text-center"></i>
 | 
					                  <i class="fas fa-user-circle fs-1-5 w-100 text-center"></i>
 | 
				
			||||||
                    <span
 | 
					                  <span id="usrName"
 | 
				
			||||||
                      id="usrName"
 | 
					                        class="text-truncate text-truncate-header hidden-xs-down"></span>
 | 
				
			||||||
                      class="text-truncate text-truncate-header hidden-xs-down"
 | 
					 | 
				
			||||||
                    ></span>
 | 
					 | 
				
			||||||
                </div>
 | 
					                </div>
 | 
				
			||||||
              </a>
 | 
					              </a>
 | 
				
			||||||
                <div
 | 
					              <div id="logoutList"
 | 
				
			||||||
                  id="logoutList"
 | 
					                   class="dropdown-menu dropdown-menu-right dropdown-lg">
 | 
				
			||||||
                  class="dropdown-menu dropdown-menu-right dropdown-lg"
 | 
					                <a id="logout"
 | 
				
			||||||
                >
 | 
					 | 
				
			||||||
                  <a
 | 
					 | 
				
			||||||
                    id="logout"
 | 
					 | 
				
			||||||
                   href="javascript:;"
 | 
					                   href="javascript:;"
 | 
				
			||||||
                    class="dropdown-item fw-500 pt-3 pb-3"
 | 
					                   class="dropdown-item fw-500 pt-3 pb-3">
 | 
				
			||||||
                  >
 | 
					 | 
				
			||||||
                  <span>登出</span>
 | 
					                  <span>登出</span>
 | 
				
			||||||
                </a>
 | 
					                </a>
 | 
				
			||||||
              </div>
 | 
					              </div>
 | 
				
			||||||
@ -356,11 +296,9 @@ License: You must have a valid license purchased only from wrapbootstrap.com (li
 | 
				
			|||||||
        <div id="app"></div>
 | 
					        <div id="app"></div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        <!-- this overlay is activated only when mobile menu is triggered -->
 | 
					        <!-- this overlay is activated only when mobile menu is triggered -->
 | 
				
			||||||
          <div
 | 
					        <div class="page-content-overlay"
 | 
				
			||||||
            class="page-content-overlay"
 | 
					 | 
				
			||||||
             data-action="toggle"
 | 
					             data-action="toggle"
 | 
				
			||||||
            data-class="mobile-nav-on"
 | 
					             data-class="mobile-nav-on"></div>
 | 
				
			||||||
          ></div>
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        <div id="sysMonNavbar" class="yt-navbar yt-left-navbar">
 | 
					        <div id="sysMonNavbar" class="yt-navbar yt-left-navbar">
 | 
				
			||||||
          <div class="yt-navbar-content">
 | 
					          <div class="yt-navbar-content">
 | 
				
			||||||
@ -456,106 +394,76 @@ License: You must have a valid license purchased only from wrapbootstrap.com (li
 | 
				
			|||||||
  </div>
 | 
					  </div>
 | 
				
			||||||
  <!-- END Page Wrapper -->
 | 
					  <!-- END Page Wrapper -->
 | 
				
			||||||
  <!-- BEGIN Messenger -->
 | 
					  <!-- BEGIN Messenger -->
 | 
				
			||||||
    <div
 | 
					  <div class="modal fade js-modal-messenger modal-backdrop-transparent"
 | 
				
			||||||
      class="modal fade js-modal-messenger modal-backdrop-transparent"
 | 
					 | 
				
			||||||
       tabindex="-1"
 | 
					       tabindex="-1"
 | 
				
			||||||
       role="dialog"
 | 
					       role="dialog"
 | 
				
			||||||
      aria-hidden="true"
 | 
					       aria-hidden="true">
 | 
				
			||||||
    >
 | 
					 | 
				
			||||||
    <div class="modal-dialog modal-dialog-right">
 | 
					    <div class="modal-dialog modal-dialog-right">
 | 
				
			||||||
      <div class="modal-content h-100">
 | 
					      <div class="modal-content h-100">
 | 
				
			||||||
          <div
 | 
					        <div class="dropdown-header bg-trans-gradient d-flex align-items-center w-100">
 | 
				
			||||||
            class="dropdown-header bg-trans-gradient d-flex align-items-center w-100"
 | 
					          <div class="d-flex flex-row align-items-center mt-1 mb-1 color-white">
 | 
				
			||||||
          >
 | 
					 | 
				
			||||||
            <div
 | 
					 | 
				
			||||||
              class="d-flex flex-row align-items-center mt-1 mb-1 color-white"
 | 
					 | 
				
			||||||
            >
 | 
					 | 
				
			||||||
            <span class="mr-2">
 | 
					            <span class="mr-2">
 | 
				
			||||||
                <span
 | 
					              <span class="rounded-circle profile-image d-block"
 | 
				
			||||||
                  class="rounded-circle profile-image d-block"
 | 
					 | 
				
			||||||
                    style="
 | 
					                    style="
 | 
				
			||||||
                    background-image: url('img/demo/avatars/avatar-d.png');
 | 
					                    background-image: url('img/demo/avatars/avatar-d.png');
 | 
				
			||||||
                    background-size: cover;
 | 
					                    background-size: cover;
 | 
				
			||||||
                  "
 | 
					                  "></span>
 | 
				
			||||||
                ></span>
 | 
					 | 
				
			||||||
            </span>
 | 
					            </span>
 | 
				
			||||||
            <div class="info-card-text">
 | 
					            <div class="info-card-text">
 | 
				
			||||||
                <a
 | 
					              <a href="javascript:void(0);"
 | 
				
			||||||
                  href="javascript:void(0);"
 | 
					 | 
				
			||||||
                 class="fs-lg text-truncate text-truncate-lg text-white"
 | 
					                 class="fs-lg text-truncate text-truncate-lg text-white"
 | 
				
			||||||
                 data-toggle="dropdown"
 | 
					                 data-toggle="dropdown"
 | 
				
			||||||
                  aria-expanded="false"
 | 
					                 aria-expanded="false">
 | 
				
			||||||
                >
 | 
					 | 
				
			||||||
                Tracey Chang
 | 
					                Tracey Chang
 | 
				
			||||||
                  <i
 | 
					                <i class="fal fa-angle-down d-inline-block ml-1 text-white fs-md"></i>
 | 
				
			||||||
                    class="fal fa-angle-down d-inline-block ml-1 text-white fs-md"
 | 
					 | 
				
			||||||
                  ></i>
 | 
					 | 
				
			||||||
              </a>
 | 
					              </a>
 | 
				
			||||||
              <div class="dropdown-menu">
 | 
					              <div class="dropdown-menu">
 | 
				
			||||||
                <a class="dropdown-item" href="#">Send Email</a>
 | 
					                <a class="dropdown-item" href="#">Send Email</a>
 | 
				
			||||||
                <a class="dropdown-item" href="#">Create Appointment</a>
 | 
					                <a class="dropdown-item" href="#">Create Appointment</a>
 | 
				
			||||||
                <a class="dropdown-item" href="#">Block User</a>
 | 
					                <a class="dropdown-item" href="#">Block User</a>
 | 
				
			||||||
              </div>
 | 
					              </div>
 | 
				
			||||||
                <span class="text-truncate text-truncate-md opacity-80"
 | 
					              <span class="text-truncate text-truncate-md opacity-80">IT Director</span>
 | 
				
			||||||
                  >IT Director</span
 | 
					 | 
				
			||||||
                >
 | 
					 | 
				
			||||||
            </div>
 | 
					            </div>
 | 
				
			||||||
          </div>
 | 
					          </div>
 | 
				
			||||||
            <button
 | 
					          <button type="button"
 | 
				
			||||||
              type="button"
 | 
					 | 
				
			||||||
                  class="close text-white position-absolute pos-top pos-right p-2 m-1 mr-2"
 | 
					                  class="close text-white position-absolute pos-top pos-right p-2 m-1 mr-2"
 | 
				
			||||||
                  data-dismiss="modal"
 | 
					                  data-dismiss="modal"
 | 
				
			||||||
              aria-label="Close"
 | 
					                  aria-label="Close">
 | 
				
			||||||
            >
 | 
					 | 
				
			||||||
            <span aria-hidden="true"><i class="fal fa-times"></i></span>
 | 
					            <span aria-hidden="true"><i class="fal fa-times"></i></span>
 | 
				
			||||||
          </button>
 | 
					          </button>
 | 
				
			||||||
        </div>
 | 
					        </div>
 | 
				
			||||||
        <div class="modal-body p-0 h-100 d-flex">
 | 
					        <div class="modal-body p-0 h-100 d-flex">
 | 
				
			||||||
          <!-- BEGIN msgr-list -->
 | 
					          <!-- BEGIN msgr-list -->
 | 
				
			||||||
            <div
 | 
					          <div class="msgr-list d-flex flex-column bg-faded border-faded border-top-0 border-right-0 border-bottom-0 position-absolute pos-top pos-bottom">
 | 
				
			||||||
              class="msgr-list d-flex flex-column bg-faded border-faded border-top-0 border-right-0 border-bottom-0 position-absolute pos-top pos-bottom"
 | 
					 | 
				
			||||||
            >
 | 
					 | 
				
			||||||
            <div>
 | 
					            <div>
 | 
				
			||||||
                <div
 | 
					              <div class="height-4 width-3 h3 m-0 d-flex justify-content-center flex-column color-primary-500 pl-3 mt-2">
 | 
				
			||||||
                  class="height-4 width-3 h3 m-0 d-flex justify-content-center flex-column color-primary-500 pl-3 mt-2"
 | 
					 | 
				
			||||||
                >
 | 
					 | 
				
			||||||
                <i class="fal fa-search"></i>
 | 
					                <i class="fal fa-search"></i>
 | 
				
			||||||
              </div>
 | 
					              </div>
 | 
				
			||||||
                <input
 | 
					              <input type="text"
 | 
				
			||||||
                  type="text"
 | 
					 | 
				
			||||||
                     class="form-control bg-white"
 | 
					                     class="form-control bg-white"
 | 
				
			||||||
                     id="msgr_listfilter_input"
 | 
					                     id="msgr_listfilter_input"
 | 
				
			||||||
                     placeholder="Filter contacts"
 | 
					                     placeholder="Filter contacts"
 | 
				
			||||||
                     aria-label="FriendSearch"
 | 
					                     aria-label="FriendSearch"
 | 
				
			||||||
                  data-listfilter="#js-msgr-listfilter"
 | 
					                     data-listfilter="#js-msgr-listfilter" />
 | 
				
			||||||
                />
 | 
					 | 
				
			||||||
            </div>
 | 
					            </div>
 | 
				
			||||||
            <div class="flex-1 h-100 custom-scroll">
 | 
					            <div class="flex-1 h-100 custom-scroll">
 | 
				
			||||||
              <div class="w-100">
 | 
					              <div class="w-100">
 | 
				
			||||||
                <ul id="js-msgr-listfilter" class="list-unstyled m-0">
 | 
					                <ul id="js-msgr-listfilter" class="list-unstyled m-0">
 | 
				
			||||||
                  <li>
 | 
					                  <li>
 | 
				
			||||||
                      <a
 | 
					                    <a href="#"
 | 
				
			||||||
                        href="#"
 | 
					 | 
				
			||||||
                       class="d-table w-100 px-2 py-2 text-dark hover-white"
 | 
					                       class="d-table w-100 px-2 py-2 text-dark hover-white"
 | 
				
			||||||
                        data-filter-tags="tracey chang online"
 | 
					                       data-filter-tags="tracey chang online">
 | 
				
			||||||
                      >
 | 
					                      <div class="d-table-cell align-middle status status-success status-sm">
 | 
				
			||||||
                        <div
 | 
					                        <span class="profile-image-md rounded-circle d-block"
 | 
				
			||||||
                          class="d-table-cell align-middle status status-success status-sm"
 | 
					 | 
				
			||||||
                        >
 | 
					 | 
				
			||||||
                          <span
 | 
					 | 
				
			||||||
                            class="profile-image-md rounded-circle d-block"
 | 
					 | 
				
			||||||
                              style="
 | 
					                              style="
 | 
				
			||||||
                              background-image: url('img/demo/avatars/avatar-d.png');
 | 
					                              background-image: url('img/demo/avatars/avatar-d.png');
 | 
				
			||||||
                              background-size: cover;
 | 
					                              background-size: cover;
 | 
				
			||||||
                            "
 | 
					                            "></span>
 | 
				
			||||||
                          ></span>
 | 
					 | 
				
			||||||
                      </div>
 | 
					                      </div>
 | 
				
			||||||
                      <div class="d-table-cell w-100 align-middle pl-2 pr-2">
 | 
					                      <div class="d-table-cell w-100 align-middle pl-2 pr-2">
 | 
				
			||||||
                        <div class="text-truncate text-truncate-md">
 | 
					                        <div class="text-truncate text-truncate-md">
 | 
				
			||||||
                          Tracey Chang
 | 
					                          Tracey Chang
 | 
				
			||||||
                            <small
 | 
					                          <small class="d-block font-italic text-success fs-xs">
 | 
				
			||||||
                              class="d-block font-italic text-success fs-xs"
 | 
					 | 
				
			||||||
                            >
 | 
					 | 
				
			||||||
                            Online
 | 
					                            Online
 | 
				
			||||||
                          </small>
 | 
					                          </small>
 | 
				
			||||||
                        </div>
 | 
					                        </div>
 | 
				
			||||||
@ -563,28 +471,20 @@ License: You must have a valid license purchased only from wrapbootstrap.com (li
 | 
				
			|||||||
                    </a>
 | 
					                    </a>
 | 
				
			||||||
                  </li>
 | 
					                  </li>
 | 
				
			||||||
                  <li>
 | 
					                  <li>
 | 
				
			||||||
                      <a
 | 
					                    <a href="#"
 | 
				
			||||||
                        href="#"
 | 
					 | 
				
			||||||
                       class="d-table w-100 px-2 py-2 text-dark hover-white"
 | 
					                       class="d-table w-100 px-2 py-2 text-dark hover-white"
 | 
				
			||||||
                        data-filter-tags="oliver kopyuv online"
 | 
					                       data-filter-tags="oliver kopyuv online">
 | 
				
			||||||
                      >
 | 
					                      <div class="d-table-cell align-middle status status-success status-sm">
 | 
				
			||||||
                        <div
 | 
					                        <span class="profile-image-md rounded-circle d-block"
 | 
				
			||||||
                          class="d-table-cell align-middle status status-success status-sm"
 | 
					 | 
				
			||||||
                        >
 | 
					 | 
				
			||||||
                          <span
 | 
					 | 
				
			||||||
                            class="profile-image-md rounded-circle d-block"
 | 
					 | 
				
			||||||
                              style="
 | 
					                              style="
 | 
				
			||||||
                              background-image: url('img/demo/avatars/avatar-b.png');
 | 
					                              background-image: url('img/demo/avatars/avatar-b.png');
 | 
				
			||||||
                              background-size: cover;
 | 
					                              background-size: cover;
 | 
				
			||||||
                            "
 | 
					                            "></span>
 | 
				
			||||||
                          ></span>
 | 
					 | 
				
			||||||
                      </div>
 | 
					                      </div>
 | 
				
			||||||
                      <div class="d-table-cell w-100 align-middle pl-2 pr-2">
 | 
					                      <div class="d-table-cell w-100 align-middle pl-2 pr-2">
 | 
				
			||||||
                        <div class="text-truncate text-truncate-md">
 | 
					                        <div class="text-truncate text-truncate-md">
 | 
				
			||||||
                          Oliver Kopyuv
 | 
					                          Oliver Kopyuv
 | 
				
			||||||
                            <small
 | 
					                          <small class="d-block font-italic text-success fs-xs">
 | 
				
			||||||
                              class="d-block font-italic text-success fs-xs"
 | 
					 | 
				
			||||||
                            >
 | 
					 | 
				
			||||||
                            Online
 | 
					                            Online
 | 
				
			||||||
                          </small>
 | 
					                          </small>
 | 
				
			||||||
                        </div>
 | 
					                        </div>
 | 
				
			||||||
@ -592,21 +492,15 @@ License: You must have a valid license purchased only from wrapbootstrap.com (li
 | 
				
			|||||||
                    </a>
 | 
					                    </a>
 | 
				
			||||||
                  </li>
 | 
					                  </li>
 | 
				
			||||||
                  <li>
 | 
					                  <li>
 | 
				
			||||||
                      <a
 | 
					                    <a href="#"
 | 
				
			||||||
                        href="#"
 | 
					 | 
				
			||||||
                       class="d-table w-100 px-2 py-2 text-dark hover-white"
 | 
					                       class="d-table w-100 px-2 py-2 text-dark hover-white"
 | 
				
			||||||
                        data-filter-tags="dr john cook phd away"
 | 
					                       data-filter-tags="dr john cook phd away">
 | 
				
			||||||
                      >
 | 
					                      <div class="d-table-cell align-middle status status-warning status-sm">
 | 
				
			||||||
                        <div
 | 
					                        <span class="profile-image-md rounded-circle d-block"
 | 
				
			||||||
                          class="d-table-cell align-middle status status-warning status-sm"
 | 
					 | 
				
			||||||
                        >
 | 
					 | 
				
			||||||
                          <span
 | 
					 | 
				
			||||||
                            class="profile-image-md rounded-circle d-block"
 | 
					 | 
				
			||||||
                              style="
 | 
					                              style="
 | 
				
			||||||
                              background-image: url('img/demo/avatars/avatar-e.png');
 | 
					                              background-image: url('img/demo/avatars/avatar-e.png');
 | 
				
			||||||
                              background-size: cover;
 | 
					                              background-size: cover;
 | 
				
			||||||
                            "
 | 
					                            "></span>
 | 
				
			||||||
                          ></span>
 | 
					 | 
				
			||||||
                      </div>
 | 
					                      </div>
 | 
				
			||||||
                      <div class="d-table-cell w-100 align-middle pl-2 pr-2">
 | 
					                      <div class="d-table-cell w-100 align-middle pl-2 pr-2">
 | 
				
			||||||
                        <div class="text-truncate text-truncate-md">
 | 
					                        <div class="text-truncate text-truncate-md">
 | 
				
			||||||
@ -619,28 +513,20 @@ License: You must have a valid license purchased only from wrapbootstrap.com (li
 | 
				
			|||||||
                    </a>
 | 
					                    </a>
 | 
				
			||||||
                  </li>
 | 
					                  </li>
 | 
				
			||||||
                  <li>
 | 
					                  <li>
 | 
				
			||||||
                      <a
 | 
					                    <a href="#"
 | 
				
			||||||
                        href="#"
 | 
					 | 
				
			||||||
                       class="d-table w-100 px-2 py-2 text-dark hover-white"
 | 
					                       class="d-table w-100 px-2 py-2 text-dark hover-white"
 | 
				
			||||||
                        data-filter-tags="ali amdaney online"
 | 
					                       data-filter-tags="ali amdaney online">
 | 
				
			||||||
                      >
 | 
					                      <div class="d-table-cell align-middle status status-success status-sm">
 | 
				
			||||||
                        <div
 | 
					                        <span class="profile-image-md rounded-circle d-block"
 | 
				
			||||||
                          class="d-table-cell align-middle status status-success status-sm"
 | 
					 | 
				
			||||||
                        >
 | 
					 | 
				
			||||||
                          <span
 | 
					 | 
				
			||||||
                            class="profile-image-md rounded-circle d-block"
 | 
					 | 
				
			||||||
                              style="
 | 
					                              style="
 | 
				
			||||||
                              background-image: url('img/demo/avatars/avatar-g.png');
 | 
					                              background-image: url('img/demo/avatars/avatar-g.png');
 | 
				
			||||||
                              background-size: cover;
 | 
					                              background-size: cover;
 | 
				
			||||||
                            "
 | 
					                            "></span>
 | 
				
			||||||
                          ></span>
 | 
					 | 
				
			||||||
                      </div>
 | 
					                      </div>
 | 
				
			||||||
                      <div class="d-table-cell w-100 align-middle pl-2 pr-2">
 | 
					                      <div class="d-table-cell w-100 align-middle pl-2 pr-2">
 | 
				
			||||||
                        <div class="text-truncate text-truncate-md">
 | 
					                        <div class="text-truncate text-truncate-md">
 | 
				
			||||||
                          Ali Amdaney
 | 
					                          Ali Amdaney
 | 
				
			||||||
                            <small
 | 
					                          <small class="d-block font-italic fs-xs text-success">
 | 
				
			||||||
                              class="d-block font-italic fs-xs text-success"
 | 
					 | 
				
			||||||
                            >
 | 
					 | 
				
			||||||
                            Online
 | 
					                            Online
 | 
				
			||||||
                          </small>
 | 
					                          </small>
 | 
				
			||||||
                        </div>
 | 
					                        </div>
 | 
				
			||||||
@ -648,28 +534,20 @@ License: You must have a valid license purchased only from wrapbootstrap.com (li
 | 
				
			|||||||
                    </a>
 | 
					                    </a>
 | 
				
			||||||
                  </li>
 | 
					                  </li>
 | 
				
			||||||
                  <li>
 | 
					                  <li>
 | 
				
			||||||
                      <a
 | 
					                    <a href="#"
 | 
				
			||||||
                        href="#"
 | 
					 | 
				
			||||||
                       class="d-table w-100 px-2 py-2 text-dark hover-white"
 | 
					                       class="d-table w-100 px-2 py-2 text-dark hover-white"
 | 
				
			||||||
                        data-filter-tags="sarah mcbrook online"
 | 
					                       data-filter-tags="sarah mcbrook online">
 | 
				
			||||||
                      >
 | 
					                      <div class="d-table-cell align-middle status status-success status-sm">
 | 
				
			||||||
                        <div
 | 
					                        <span class="profile-image-md rounded-circle d-block"
 | 
				
			||||||
                          class="d-table-cell align-middle status status-success status-sm"
 | 
					 | 
				
			||||||
                        >
 | 
					 | 
				
			||||||
                          <span
 | 
					 | 
				
			||||||
                            class="profile-image-md rounded-circle d-block"
 | 
					 | 
				
			||||||
                              style="
 | 
					                              style="
 | 
				
			||||||
                              background-image: url('img/demo/avatars/avatar-h.png');
 | 
					                              background-image: url('img/demo/avatars/avatar-h.png');
 | 
				
			||||||
                              background-size: cover;
 | 
					                              background-size: cover;
 | 
				
			||||||
                            "
 | 
					                            "></span>
 | 
				
			||||||
                          ></span>
 | 
					 | 
				
			||||||
                      </div>
 | 
					                      </div>
 | 
				
			||||||
                      <div class="d-table-cell w-100 align-middle pl-2 pr-2">
 | 
					                      <div class="d-table-cell w-100 align-middle pl-2 pr-2">
 | 
				
			||||||
                        <div class="text-truncate text-truncate-md">
 | 
					                        <div class="text-truncate text-truncate-md">
 | 
				
			||||||
                          Sarah McBrook
 | 
					                          Sarah McBrook
 | 
				
			||||||
                            <small
 | 
					                          <small class="d-block font-italic fs-xs text-success">
 | 
				
			||||||
                              class="d-block font-italic fs-xs text-success"
 | 
					 | 
				
			||||||
                            >
 | 
					 | 
				
			||||||
                            Online
 | 
					                            Online
 | 
				
			||||||
                          </small>
 | 
					                          </small>
 | 
				
			||||||
                        </div>
 | 
					                        </div>
 | 
				
			||||||
@ -677,19 +555,15 @@ License: You must have a valid license purchased only from wrapbootstrap.com (li
 | 
				
			|||||||
                    </a>
 | 
					                    </a>
 | 
				
			||||||
                  </li>
 | 
					                  </li>
 | 
				
			||||||
                  <li>
 | 
					                  <li>
 | 
				
			||||||
                      <a
 | 
					                    <a href="#"
 | 
				
			||||||
                        href="#"
 | 
					 | 
				
			||||||
                       class="d-table w-100 px-2 py-2 text-dark hover-white"
 | 
					                       class="d-table w-100 px-2 py-2 text-dark hover-white"
 | 
				
			||||||
                        data-filter-tags="ali amdaney offline"
 | 
					                       data-filter-tags="ali amdaney offline">
 | 
				
			||||||
                      >
 | 
					 | 
				
			||||||
                      <div class="d-table-cell align-middle status status-sm">
 | 
					                      <div class="d-table-cell align-middle status status-sm">
 | 
				
			||||||
                          <span
 | 
					                        <span class="profile-image-md rounded-circle d-block"
 | 
				
			||||||
                            class="profile-image-md rounded-circle d-block"
 | 
					 | 
				
			||||||
                              style="
 | 
					                              style="
 | 
				
			||||||
                              background-image: url('img/demo/avatars/avatar-a.png');
 | 
					                              background-image: url('img/demo/avatars/avatar-a.png');
 | 
				
			||||||
                              background-size: cover;
 | 
					                              background-size: cover;
 | 
				
			||||||
                            "
 | 
					                            "></span>
 | 
				
			||||||
                          ></span>
 | 
					 | 
				
			||||||
                      </div>
 | 
					                      </div>
 | 
				
			||||||
                      <div class="d-table-cell w-100 align-middle pl-2 pr-2">
 | 
					                      <div class="d-table-cell w-100 align-middle pl-2 pr-2">
 | 
				
			||||||
                        <div class="text-truncate text-truncate-md">
 | 
					                        <div class="text-truncate text-truncate-md">
 | 
				
			||||||
@ -702,28 +576,20 @@ License: You must have a valid license purchased only from wrapbootstrap.com (li
 | 
				
			|||||||
                    </a>
 | 
					                    </a>
 | 
				
			||||||
                  </li>
 | 
					                  </li>
 | 
				
			||||||
                  <li>
 | 
					                  <li>
 | 
				
			||||||
                      <a
 | 
					                    <a href="#"
 | 
				
			||||||
                        href="#"
 | 
					 | 
				
			||||||
                       class="d-table w-100 px-2 py-2 text-dark hover-white"
 | 
					                       class="d-table w-100 px-2 py-2 text-dark hover-white"
 | 
				
			||||||
                        data-filter-tags="ali amdaney busy"
 | 
					                       data-filter-tags="ali amdaney busy">
 | 
				
			||||||
                      >
 | 
					                      <div class="d-table-cell align-middle status status-danger status-sm">
 | 
				
			||||||
                        <div
 | 
					                        <span class="profile-image-md rounded-circle d-block"
 | 
				
			||||||
                          class="d-table-cell align-middle status status-danger status-sm"
 | 
					 | 
				
			||||||
                        >
 | 
					 | 
				
			||||||
                          <span
 | 
					 | 
				
			||||||
                            class="profile-image-md rounded-circle d-block"
 | 
					 | 
				
			||||||
                              style="
 | 
					                              style="
 | 
				
			||||||
                              background-image: url('img/demo/avatars/avatar-j.png');
 | 
					                              background-image: url('img/demo/avatars/avatar-j.png');
 | 
				
			||||||
                              background-size: cover;
 | 
					                              background-size: cover;
 | 
				
			||||||
                            "
 | 
					                            "></span>
 | 
				
			||||||
                          ></span>
 | 
					 | 
				
			||||||
                      </div>
 | 
					                      </div>
 | 
				
			||||||
                      <div class="d-table-cell w-100 align-middle pl-2 pr-2">
 | 
					                      <div class="d-table-cell w-100 align-middle pl-2 pr-2">
 | 
				
			||||||
                        <div class="text-truncate text-truncate-md">
 | 
					                        <div class="text-truncate text-truncate-md">
 | 
				
			||||||
                          oliver.kopyuv@gotbootstrap.com
 | 
					                          oliver.kopyuv@gotbootstrap.com
 | 
				
			||||||
                            <small
 | 
					                          <small class="d-block font-italic fs-xs text-danger">
 | 
				
			||||||
                              class="d-block font-italic fs-xs text-danger"
 | 
					 | 
				
			||||||
                            >
 | 
					 | 
				
			||||||
                            Busy
 | 
					                            Busy
 | 
				
			||||||
                          </small>
 | 
					                          </small>
 | 
				
			||||||
                        </div>
 | 
					                        </div>
 | 
				
			||||||
@ -731,19 +597,15 @@ License: You must have a valid license purchased only from wrapbootstrap.com (li
 | 
				
			|||||||
                    </a>
 | 
					                    </a>
 | 
				
			||||||
                  </li>
 | 
					                  </li>
 | 
				
			||||||
                  <li>
 | 
					                  <li>
 | 
				
			||||||
                      <a
 | 
					                    <a href="#"
 | 
				
			||||||
                        href="#"
 | 
					 | 
				
			||||||
                       class="d-table w-100 px-2 py-2 text-dark hover-white"
 | 
					                       class="d-table w-100 px-2 py-2 text-dark hover-white"
 | 
				
			||||||
                        data-filter-tags="ali amdaney offline"
 | 
					                       data-filter-tags="ali amdaney offline">
 | 
				
			||||||
                      >
 | 
					 | 
				
			||||||
                      <div class="d-table-cell align-middle status status-sm">
 | 
					                      <div class="d-table-cell align-middle status status-sm">
 | 
				
			||||||
                          <span
 | 
					                        <span class="profile-image-md rounded-circle d-block"
 | 
				
			||||||
                            class="profile-image-md rounded-circle d-block"
 | 
					 | 
				
			||||||
                              style="
 | 
					                              style="
 | 
				
			||||||
                              background-image: url('img/demo/avatars/avatar-c.png');
 | 
					                              background-image: url('img/demo/avatars/avatar-c.png');
 | 
				
			||||||
                              background-size: cover;
 | 
					                              background-size: cover;
 | 
				
			||||||
                            "
 | 
					                            "></span>
 | 
				
			||||||
                          ></span>
 | 
					 | 
				
			||||||
                      </div>
 | 
					                      </div>
 | 
				
			||||||
                      <div class="d-table-cell w-100 align-middle pl-2 pr-2">
 | 
					                      <div class="d-table-cell w-100 align-middle pl-2 pr-2">
 | 
				
			||||||
                        <div class="text-truncate text-truncate-md">
 | 
					                        <div class="text-truncate text-truncate-md">
 | 
				
			||||||
@ -756,19 +618,15 @@ License: You must have a valid license purchased only from wrapbootstrap.com (li
 | 
				
			|||||||
                    </a>
 | 
					                    </a>
 | 
				
			||||||
                  </li>
 | 
					                  </li>
 | 
				
			||||||
                  <li>
 | 
					                  <li>
 | 
				
			||||||
                      <a
 | 
					                    <a href="#"
 | 
				
			||||||
                        href="#"
 | 
					 | 
				
			||||||
                       class="d-table w-100 px-2 py-2 text-dark hover-white"
 | 
					                       class="d-table w-100 px-2 py-2 text-dark hover-white"
 | 
				
			||||||
                        data-filter-tags="ali amdaney inactive"
 | 
					                       data-filter-tags="ali amdaney inactive">
 | 
				
			||||||
                      >
 | 
					 | 
				
			||||||
                      <div class="d-table-cell align-middle">
 | 
					                      <div class="d-table-cell align-middle">
 | 
				
			||||||
                          <span
 | 
					                        <span class="profile-image-md rounded-circle d-block"
 | 
				
			||||||
                            class="profile-image-md rounded-circle d-block"
 | 
					 | 
				
			||||||
                              style="
 | 
					                              style="
 | 
				
			||||||
                              background-image: url('img/demo/avatars/avatar-m.png');
 | 
					                              background-image: url('img/demo/avatars/avatar-m.png');
 | 
				
			||||||
                              background-size: cover;
 | 
					                              background-size: cover;
 | 
				
			||||||
                            "
 | 
					                            "></span>
 | 
				
			||||||
                          ></span>
 | 
					 | 
				
			||||||
                      </div>
 | 
					                      </div>
 | 
				
			||||||
                      <div class="d-table-cell w-100 align-middle pl-2 pr-2">
 | 
					                      <div class="d-table-cell w-100 align-middle pl-2 pr-2">
 | 
				
			||||||
                        <div class="text-truncate text-truncate-md">
 | 
					                        <div class="text-truncate text-truncate-md">
 | 
				
			||||||
@ -877,46 +735,34 @@ License: You must have a valid license purchased only from wrapbootstrap.com (li
 | 
				
			|||||||
            <!-- END custom-scroll  -->
 | 
					            <!-- END custom-scroll  -->
 | 
				
			||||||
            <!-- BEGIN msgr__chatinput -->
 | 
					            <!-- BEGIN msgr__chatinput -->
 | 
				
			||||||
            <div class="d-flex flex-column">
 | 
					            <div class="d-flex flex-column">
 | 
				
			||||||
                <div
 | 
					              <div class="border-faded border-right-0 border-bottom-0 border-left-0 flex-1 mr-3 ml-3 position-relative shadow-top">
 | 
				
			||||||
                  class="border-faded border-right-0 border-bottom-0 border-left-0 flex-1 mr-3 ml-3 position-relative shadow-top"
 | 
					 | 
				
			||||||
                >
 | 
					 | 
				
			||||||
                <div class="pt-3 pb-1 pr-0 pl-0 rounded-0" tabindex="-1">
 | 
					                <div class="pt-3 pb-1 pr-0 pl-0 rounded-0" tabindex="-1">
 | 
				
			||||||
                    <div
 | 
					                  <div id="msgr_input"
 | 
				
			||||||
                      id="msgr_input"
 | 
					 | 
				
			||||||
                       contenteditable="true"
 | 
					                       contenteditable="true"
 | 
				
			||||||
                       data-placeholder="Type your message here..."
 | 
					                       data-placeholder="Type your message here..."
 | 
				
			||||||
                      class="height-10 form-content-editable"
 | 
					                       class="height-10 form-content-editable"></div>
 | 
				
			||||||
                    ></div>
 | 
					 | 
				
			||||||
                </div>
 | 
					                </div>
 | 
				
			||||||
              </div>
 | 
					              </div>
 | 
				
			||||||
                <div
 | 
					              <div class="height-8 px-3 d-flex flex-row align-items-center flex-wrap flex-shrink-0">
 | 
				
			||||||
                  class="height-8 px-3 d-flex flex-row align-items-center flex-wrap flex-shrink-0"
 | 
					                <a href="javascript:void(0);"
 | 
				
			||||||
                >
 | 
					 | 
				
			||||||
                  <a
 | 
					 | 
				
			||||||
                    href="javascript:void(0);"
 | 
					 | 
				
			||||||
                   class="btn btn-icon fs-xl width-1 mr-1"
 | 
					                   class="btn btn-icon fs-xl width-1 mr-1"
 | 
				
			||||||
                   data-toggle="tooltip"
 | 
					                   data-toggle="tooltip"
 | 
				
			||||||
                   data-original-title="More options"
 | 
					                   data-original-title="More options"
 | 
				
			||||||
                    data-placement="top"
 | 
					                   data-placement="top">
 | 
				
			||||||
                  >
 | 
					 | 
				
			||||||
                  <i class="fal fa-ellipsis-v-alt color-fusion-300"></i>
 | 
					                  <i class="fal fa-ellipsis-v-alt color-fusion-300"></i>
 | 
				
			||||||
                </a>
 | 
					                </a>
 | 
				
			||||||
                  <a
 | 
					                <a href="javascript:void(0);"
 | 
				
			||||||
                    href="javascript:void(0);"
 | 
					 | 
				
			||||||
                   class="btn btn-icon fs-xl mr-1"
 | 
					                   class="btn btn-icon fs-xl mr-1"
 | 
				
			||||||
                   data-toggle="tooltip"
 | 
					                   data-toggle="tooltip"
 | 
				
			||||||
                   data-original-title="Attach files"
 | 
					                   data-original-title="Attach files"
 | 
				
			||||||
                    data-placement="top"
 | 
					                   data-placement="top">
 | 
				
			||||||
                  >
 | 
					 | 
				
			||||||
                  <i class="fal fa-paperclip color-fusion-300"></i>
 | 
					                  <i class="fal fa-paperclip color-fusion-300"></i>
 | 
				
			||||||
                </a>
 | 
					                </a>
 | 
				
			||||||
                  <a
 | 
					                <a href="javascript:void(0);"
 | 
				
			||||||
                    href="javascript:void(0);"
 | 
					 | 
				
			||||||
                   class="btn btn-icon fs-xl mr-1"
 | 
					                   class="btn btn-icon fs-xl mr-1"
 | 
				
			||||||
                   data-toggle="tooltip"
 | 
					                   data-toggle="tooltip"
 | 
				
			||||||
                   data-original-title="Insert photo"
 | 
					                   data-original-title="Insert photo"
 | 
				
			||||||
                    data-placement="top"
 | 
					                   data-placement="top">
 | 
				
			||||||
                  >
 | 
					 | 
				
			||||||
                  <i class="fal fa-camera color-fusion-300"></i>
 | 
					                  <i class="fal fa-camera color-fusion-300"></i>
 | 
				
			||||||
                </a>
 | 
					                </a>
 | 
				
			||||||
                <div class="ml-auto">
 | 
					                <div class="ml-auto">
 | 
				
			||||||
@ -932,8 +778,7 @@ License: You must have a valid license purchased only from wrapbootstrap.com (li
 | 
				
			|||||||
    </div>
 | 
					    </div>
 | 
				
			||||||
  </div>
 | 
					  </div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    <div
 | 
					  <div id="noticeBlock"
 | 
				
			||||||
      id="noticeBlock"
 | 
					 | 
				
			||||||
       style="
 | 
					       style="
 | 
				
			||||||
        position: fixed;
 | 
					        position: fixed;
 | 
				
			||||||
        top: 70px;
 | 
					        top: 70px;
 | 
				
			||||||
@ -942,8 +787,7 @@ License: You must have a valid license purchased only from wrapbootstrap.com (li
 | 
				
			|||||||
        transition: 0.2s;
 | 
					        transition: 0.2s;
 | 
				
			||||||
        z-index: 50000;
 | 
					        z-index: 50000;
 | 
				
			||||||
        height: 100%;
 | 
					        height: 100%;
 | 
				
			||||||
      "
 | 
					      "></div>
 | 
				
			||||||
    ></div>
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
  <!--<button id="testsysbtn" class="btn btn-info col-1">系統監控(測試用)</button>-->
 | 
					  <!--<button id="testsysbtn" class="btn btn-info col-1">系統監控(測試用)</button>-->
 | 
				
			||||||
  <!-- END Messenger -->
 | 
					  <!-- END Messenger -->
 | 
				
			||||||
@ -1009,7 +853,7 @@ License: You must have a valid license purchased only from wrapbootstrap.com (li
 | 
				
			|||||||
      opeRecTable = null;
 | 
					      opeRecTable = null;
 | 
				
			||||||
    var tolSubList = [];
 | 
					    var tolSubList = [];
 | 
				
			||||||
    var allDevices = [];
 | 
					    var allDevices = [];
 | 
				
			||||||
      var tempSubTag = ["M10","M12"];  // 溫度向小類
 | 
					    var tempSubTag = ["M10", "M12"];  // 溫度向小類
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * 頁面 Loading 建立
 | 
					     * 頁面 Loading 建立
 | 
				
			||||||
@ -1225,7 +1069,7 @@ License: You must have a valid license purchased only from wrapbootstrap.com (li
 | 
				
			|||||||
          // 清空 loading 狀態
 | 
					          // 清空 loading 狀態
 | 
				
			||||||
          endPageLoading();
 | 
					          endPageLoading();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            $(loadEle).Loading("close");
 | 
					          // $(loadEle).Loading("close");
 | 
				
			||||||
          $(".yt-alert").YTAlert().hide();
 | 
					          $(".yt-alert").YTAlert().hide();
 | 
				
			||||||
          // 取得使用者資訊
 | 
					          // 取得使用者資訊
 | 
				
			||||||
          getUserInfo();
 | 
					          getUserInfo();
 | 
				
			||||||
@ -1273,7 +1117,7 @@ License: You must have a valid license purchased only from wrapbootstrap.com (li
 | 
				
			|||||||
          }
 | 
					          }
 | 
				
			||||||
        });
 | 
					        });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
          onEvent("click", "#testsysbtn", function () {});
 | 
					        onEvent("click", "#testsysbtn", function () { });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        //onEvent("click", "button[id^=noticeChkBtn]", function () {
 | 
					        //onEvent("click", "button[id^=noticeChkBtn]", function () {
 | 
				
			||||||
        //    $(this).parents(".toast").YTNotice("hide");
 | 
					        //    $(this).parents(".toast").YTNotice("hide");
 | 
				
			||||||
@ -1858,7 +1702,6 @@ License: You must have a valid license purchased only from wrapbootstrap.com (li
 | 
				
			|||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      function crePosPopover(position, obj) {
 | 
					      function crePosPopover(position, obj) {
 | 
				
			||||||
          console.log("obj", obj);
 | 
					 | 
				
			||||||
        let _position = {};
 | 
					        let _position = {};
 | 
				
			||||||
        _position.tpLeft = position[0];
 | 
					        _position.tpLeft = position[0];
 | 
				
			||||||
        _position.tpTop = position[1];
 | 
					        _position.tpTop = position[1];
 | 
				
			||||||
@ -2272,6 +2115,6 @@ License: You must have a valid license purchased only from wrapbootstrap.com (li
 | 
				
			|||||||
      }
 | 
					      }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  </script>
 | 
					  </script>
 | 
				
			||||||
  </body>
 | 
					</body>
 | 
				
			||||||
  <!-- END Body -->
 | 
					<!-- END Body -->
 | 
				
			||||||
</html>
 | 
					</html>
 | 
				
			||||||
 | 
				
			|||||||
@ -56,7 +56,6 @@ class subscriptionDevices {
 | 
				
			|||||||
      var sub = new baja.Subscriber();
 | 
					      var sub = new baja.Subscriber();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      sub.attach('changed', function (prop) {
 | 
					      sub.attach('changed', function (prop) {
 | 
				
			||||||
                console.log("Light prop", prop.getName())
 | 
					 | 
				
			||||||
        if (prop.getName() === 'out') {
 | 
					        if (prop.getName() === 'out') {
 | 
				
			||||||
          var out_value = this.getOutDisplay();
 | 
					          var out_value = this.getOutDisplay();
 | 
				
			||||||
          var target_device_number = this.$parent.getDisplayName().split('_').slice(0, 5).join('_');
 | 
					          var target_device_number = this.$parent.getDisplayName().split('_').slice(0, 5).join('_');
 | 
				
			||||||
 | 
				
			|||||||
@ -1007,7 +1007,6 @@ class Forge3DSensor {
 | 
				
			|||||||
      const viewableData = new DataVizCore.ViewableData();
 | 
					      const viewableData = new DataVizCore.ViewableData();
 | 
				
			||||||
      viewableData.spriteSize = 30; // Sprites as points of size 24 x 24 pixels
 | 
					      viewableData.spriteSize = 30; // Sprites as points of size 24 x 24 pixels
 | 
				
			||||||
      this.deviceList.forEach((myData, index) => {
 | 
					      this.deviceList.forEach((myData, index) => {
 | 
				
			||||||
                // console.log(myData)
 | 
					 | 
				
			||||||
        const dbId = myData.forge_dbid;
 | 
					        const dbId = myData.forge_dbid;
 | 
				
			||||||
        const myPosition = myData.position;
 | 
					        const myPosition = myData.position;
 | 
				
			||||||
        const viewable = new DataVizCore.SpriteViewable(
 | 
					        const viewable = new DataVizCore.SpriteViewable(
 | 
				
			||||||
@ -1109,7 +1108,13 @@ class Forge3DSensor {
 | 
				
			|||||||
        Forge3DSensor.highTempForSensor.push(dbid);
 | 
					        Forge3DSensor.highTempForSensor.push(dbid);
 | 
				
			||||||
        break;
 | 
					        break;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					    if (
 | 
				
			||||||
 | 
					      (Forge3DSensor.lowerTempForSensor.length,
 | 
				
			||||||
 | 
					        Forge3DSensor.normalTempForSensor.length,
 | 
				
			||||||
 | 
					        Forge3DSensor.highTempForSensor.length,
 | 
				
			||||||
 | 
					        Forge3DSensor.highestTempForSensor.length,
 | 
				
			||||||
 | 
					        allDevList.length)
 | 
				
			||||||
 | 
					    ) {
 | 
				
			||||||
      await this.changeColorForSensorHotspot(
 | 
					      await this.changeColorForSensorHotspot(
 | 
				
			||||||
        Forge3DSensor.lowerTempForSensor,
 | 
					        Forge3DSensor.lowerTempForSensor,
 | 
				
			||||||
        temps[0]
 | 
					        temps[0]
 | 
				
			||||||
@ -1127,6 +1132,7 @@ class Forge3DSensor {
 | 
				
			|||||||
        temps[3]
 | 
					        temps[3]
 | 
				
			||||||
      );
 | 
					      );
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  async changeColorForSensorHotspot(viewablesToUpdate, color) {
 | 
					  async changeColorForSensorHotspot(viewablesToUpdate, color) {
 | 
				
			||||||
    const dataVizExtn = await viewer.loadExtension(
 | 
					    const dataVizExtn = await viewer.loadExtension(
 | 
				
			||||||
@ -1171,10 +1177,6 @@ class Forge3DSensor {
 | 
				
			|||||||
        subData = { ...subData, [data.point_name]: data.value };
 | 
					        subData = { ...subData, [data.point_name]: data.value };
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            //let norDevPoiName = matchDevice.device_normal_point_name;
 | 
					 | 
				
			||||||
            //let cloDevPoiName = matchDevice.device_close_point_name || "";
 | 
					 | 
				
			||||||
            //let errDevPoiName = matchDevice.device_error_point_name;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
      if (data.point_name == "Temp" || data.point_name == "TEMP") {
 | 
					      if (data.point_name == "Temp" || data.point_name == "TEMP") {
 | 
				
			||||||
        this.tempVal = !isNaN(parseInt(data.value)) ? parseInt(data.value) : 0;
 | 
					        this.tempVal = !isNaN(parseInt(data.value)) ? parseInt(data.value) : 0;
 | 
				
			||||||
        this.curDevice = {
 | 
					        this.curDevice = {
 | 
				
			||||||
@ -1189,6 +1191,43 @@ class Forge3DSensor {
 | 
				
			|||||||
          );
 | 
					          );
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      let matchDevice = allDevList.find(
 | 
				
			||||||
 | 
					        (x) => x.device_number == data.device_number_full
 | 
				
			||||||
 | 
					      );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      let norDevPoiName = matchDevice.device_normal_point_name;
 | 
				
			||||||
 | 
					      let cloDevPoiName = matchDevice.device_close_point_name;
 | 
				
			||||||
 | 
					      let errDevPoiName = matchDevice.device_error_point_name;
 | 
				
			||||||
 | 
					      if (
 | 
				
			||||||
 | 
					        data.point_name == norDevPoiName &&
 | 
				
			||||||
 | 
					        data.value == matchDevice.device_normal_point_value
 | 
				
			||||||
 | 
					      ) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        //顯示正常燈號
 | 
				
			||||||
 | 
					        $(`#${matchDevice.device_number}_status`)
 | 
				
			||||||
 | 
					          .attr("data-light-type", "normal")
 | 
				
			||||||
 | 
					          .data("light-type", "normal");
 | 
				
			||||||
 | 
					      } else if (
 | 
				
			||||||
 | 
					        data.point_name == cloDevPoiName &&
 | 
				
			||||||
 | 
					        data.value == matchDevice.device_close_point_value
 | 
				
			||||||
 | 
					      ) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        $(`#${matchDevice.device_number}_status`)
 | 
				
			||||||
 | 
					          .attr("data-light-type", "close")
 | 
				
			||||||
 | 
					          .data("light-type", "close");
 | 
				
			||||||
 | 
					      } else if (
 | 
				
			||||||
 | 
					        data.point_name == errDevPoiName &&
 | 
				
			||||||
 | 
					        data.value == matchDevice.device_error_point_value
 | 
				
			||||||
 | 
					      ) {
 | 
				
			||||||
 | 
					        $(`#${matchDevice.device_number}_status`)
 | 
				
			||||||
 | 
					          .attr("data-light-type", "error")
 | 
				
			||||||
 | 
					          .data("light-type", "error");
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      setLightColor();
 | 
				
			||||||
 | 
					      setDevItemPoiValBySub(data);
 | 
				
			||||||
 | 
					      $(loadEle).Loading("close");
 | 
				
			||||||
    });
 | 
					    });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    myBaja.setSubscribeDeviceEndCallBack((data) => {
 | 
					    myBaja.setSubscribeDeviceEndCallBack((data) => {
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user