From 5df6240f6cd274e698d1e6358443364d543c126c Mon Sep 17 00:00:00 2001 From: Jin Lei <jinlei_182@163.com> Date: 星期六, 23 十二月 2023 10:23:27 +0800 Subject: [PATCH] [信令]添加信令相关功能 --- static/Signalling/data/yz_202312210330.dat | 0 static/Signalling/data/yz_202312211330.dat | 0 static/Signalling/data/yz_202312210500.dat | 0 static/Signalling/data/yz_202312210800.dat | 0 static/Signalling/data/yz_202312211800.dat | 0 static/Signalling/data/yz_202312210030.dat | 0 static/Signalling/data/yz_202312210630.dat | 0 static/Signalling/data/yz_202312211030.dat | 0 static/Signalling/data/yz_202312210100.dat | 0 static/Signalling/data/yz_202312211100.dat | 0 static/Signalling/data/yz_202312211630.dat | 0 index.html | 8 static/Signalling/data/yz_202312212100.dat | 0 static/Signalling/data/yz_202312212330.dat | 0 static/Signalling/data/yz_202312210930.dat | 0 static/Signalling/data/yz_202312210900.dat | 0 static/Signalling/data/yz_202312212230.dat | 0 static/Signalling/data/yz_202312211430.dat | 0 src/components/index.vue | 5 static/Signalling/data/yz_202312211400.dat | 0 static/Signalling/data/yz_202312211000.dat | 0 src/components/menu/signalling.vue | 239 ++++++++++++++ static/Signalling/js/DataRender.js | 151 +++++++++ static/Signalling/data/yz_202312210230.dat | 0 static/Signalling/data/yz_202312211700.dat | 0 static/Signalling/data/yz_202312212200.dat | 0 static/Signalling/data/yz_202312210200.dat | 0 static/Signalling/data/yz_202312211730.dat | 0 static/Signalling/js/Color.js | 95 +++++ static/Signalling/data/yz_202312211830.dat | 0 static/Signalling/data/positions.dat | 0 static/Signalling/data/yz_202312210300.dat | 0 static/Signalling/data/yz_202312210830.dat | 0 static/Signalling/data/yz_202312211300.dat | 0 static/Signalling/data/yz_202312212300.dat | 0 static/Signalling/data/yz_202312211130.dat | 0 static/Signalling/data/yz_202312212130.dat | 0 static/Signalling/data/yz_202312210130.dat | 0 static/Signalling/data/yz_202312211530.dat | 0 static/Signalling/data/yz_202312210530.dat | 0 static/Signalling/data/yz_202312211600.dat | 0 static/Signalling/data/yz_202312210600.dat | 0 static/Signalling/data/yz_202312211900.dat | 0 static/Signalling/data/yz_202312211930.dat | 0 static/Signalling/js/heatmap.min.js | 9 src/components/menu/bottom-menu.vue | 50 -- static/Signalling/data/yz_202312211230.dat | 0 static/Signalling/js/DataGrid.js | 122 +++++++ static/Signalling/data/yz_202312210430.dat | 0 src/components/login.vue | 133 +++---- src/components/map/viewer.vue | 1 static/Signalling/data/yz_202312210400.dat | 0 static/Signalling/data/yz_202312212000.dat | 0 static/Signalling/data/yz_202312212030.dat | 0 static/Signalling/data/yz_202312210000.dat | 0 static/Signalling/data/yz_202312210700.dat | 0 static/Signalling/data/yz_202312211500.dat | 0 static/Signalling/js/DataManager.js | 127 +++++++ static/Signalling/data/yz_202312210730.dat | 0 static/Signalling/data/yz_202312211200.dat | 0 60 files changed, 827 insertions(+), 113 deletions(-) diff --git a/index.html b/index.html index e049551..ae5ba51 100644 --- a/index.html +++ b/index.html @@ -61,6 +61,7 @@ <script src="./static/SmartEarthSDK/Workers/jquery-2.0.3.js"></script> <script src="./static/SmartEarthSDK/SmartEarth.min.js"></script> --> + <script src="./static/SmartEarthSDK/Workers/jquery.xml2json.js"></script> <script src="./static/SmartEarthSDK/Workers/layui/layui.all.js"></script> <script src="./static/SmartEarthSDK/Workers/TreeTool.js"></script> @@ -74,6 +75,13 @@ <script src="./static/rsa.min.js"></script> + <script src="./static/Signalling/js/heatmap.min.js"></script> + <script src="./static/Signalling/js/Color.js"></script> + <script src="./static/Signalling/js/DataManager.js"></script> + <script src="./static/Signalling/js/DataRender.js"></script> + <script src="./static/Signalling/js/DataGrid.js"></script> + + <script src="./static/othersMap/othersMap.js"></script> <script type="text/javascript"> // 鍙互杩涜if鍒ゆ柇鍖哄垎涓嶇敤鍩熷悕 diff --git a/src/components/index.vue b/src/components/index.vue index 7574e68..51fdfab 100644 --- a/src/components/index.vue +++ b/src/components/index.vue @@ -46,6 +46,7 @@ <leftpanel ref="Left" /> <menupanel /> <bottommenu ref="bottommenu" /> + <signalling v-if="signallingShow"></signalling> <setting v-if="showSetting" /> <qycharts v-if="$store.state.qyEchartsShow" /> </div> @@ -63,7 +64,7 @@ import qycharts from "@/components/bottom/qycharts"; import menupanel from "@/components/menu/index"; import setting from "@/components/menu/tools/setting"; - +import signalling from "@/components/menu/signalling"; import bottommenu from "@/components/menu/bottom-menu"; import { mapState, mapMutations } from "vuex"; @@ -81,6 +82,7 @@ setting, qycharts, History, + signalling }, data() { return { @@ -94,6 +96,7 @@ offset: "0%", tooltipInfo: "璇风◢鍚庛�傘�傘��", tooltipShow: false, + signallingShow:false, switchKey: 0, // viewer1Show: false, }; diff --git a/src/components/login.vue b/src/components/login.vue index 89f38a5..ea18858 100644 --- a/src/components/login.vue +++ b/src/components/login.vue @@ -4,13 +4,8 @@ <img src="../assets/img/login/background.png" alt="" /> </div> <div class="login-box"> - <el-form - class="loginBox" - :model="loginForm" - :rules="rules" - ref="loginForm" - @keyup.enter.native="submitForm('loginForm')" - > + <el-form class="loginBox" :model="loginForm" :rules="rules" ref="loginForm" + @keyup.enter.native="submitForm('loginForm')"> <el-form-item prop="loginname"> <div class="user-box"> <div class="imgbox"> @@ -23,14 +18,8 @@ <img src="../assets/img/login/line.png" alt="" /> </div> <div class="inputbox"> - <el-input - v-model="loginForm.loginname" - placeholder="杈撳叆鎮ㄧ殑璐﹀彿" - class="nobr" - size="meddle" - autocomplete="off" - clearable - > + <el-input v-model="loginForm.loginname" placeholder="杈撳叆鎮ㄧ殑璐﹀彿" class="nobr" size="meddle" autocomplete="off" + clearable> </el-input> </div> </div> @@ -47,14 +36,8 @@ <img src="../assets/img/login/line.png" alt="" /> </div> <div class="inputbox"> - <el-input - show-password - v-model="loginForm.password" - placeholder="杈撳叆鎮ㄧ殑瀵嗙爜" - class="nobr" - autocomplete="off" - clearable - > + <el-input show-password v-model="loginForm.password" placeholder="杈撳叆鎮ㄧ殑瀵嗙爜" class="nobr" autocomplete="off" + clearable> </el-input> </div> </div> @@ -106,7 +89,7 @@ }, }; }, - created() {}, + created() { }, mounted() { window.addEventListener("keydown", this.keyDown); // if ( @@ -139,54 +122,58 @@ }, // 璐﹀彿瀵嗙爜鐧诲綍 submitForm(formName) { - // this.$router.push("/index"); - this.$refs[formName].validate((valid) => { - if (valid) { - const loading = this.$loading({ - lock: true, - text: "Loading", - spinner: "el-icon-loading", - background: "rgba(0, 0, 0, 0.7)", - }); + let tokenData = "1111111111111"; + let times = new Date().getTime(); + window.localStorage.setItem("TokenTime", times); + window.localStorage.setItem("TokenKey", tokenData); + this.$router.push("/index"); + // this.$refs[formName].validate((valid) => { + // if (valid) { + // const loading = this.$loading({ + // lock: true, + // text: "Loading", + // spinner: "el-icon-loading", + // background: "rgba(0, 0, 0, 0.7)", + // }); - login({ - username: this.loginForm.loginname, - password: this.loginForm.password, - }) - .then((res) => { - loading.close(); - if (res.code !== 200) { - this.$message.error(res.msg); - } else { - let tokenData = res.token; - let times = new Date().getTime(); - window.localStorage.setItem("TokenTime", times); - window.localStorage.setItem("TokenKey", tokenData); - this.$router.push("/index"); - } - }) - .catch((error) => { - //缃戠粶瓒呮椂寮傚父澶勭悊 - loading.close(); - if ( - error.code === "ECONNABORTED" || - error.message === "Network Error" || - error.message.includes("timeout") - ) { - this.$message.error("璇锋眰瓒呮椂锛岃绋嶅悗閲嶈瘯"); - } - return Promise.resolve(error.response); - // reject(error); - }); + // login({ + // username: this.loginForm.loginname, + // password: this.loginForm.password, + // }) + // .then((res) => { + // loading.close(); + // if (res.code !== 200) { + // this.$message.error(res.msg); + // } else { + // let tokenData = res.token; + // let times = new Date().getTime(); + // window.localStorage.setItem("TokenTime", times); + // window.localStorage.setItem("TokenKey", tokenData); + // this.$router.push("/index"); + // } + // }) + // .catch((error) => { + // //缃戠粶瓒呮椂寮傚父澶勭悊 + // loading.close(); + // if ( + // error.code === "ECONNABORTED" || + // error.message === "Network Error" || + // error.message.includes("timeout") + // ) { + // this.$message.error("璇锋眰瓒呮椂锛岃绋嶅悗閲嶈瘯"); + // } + // return Promise.resolve(error.response); + // // reject(error); + // }); - // //濡傛灉鐧诲綍澶辫触锛岄渶瑕佸埛鏂伴獙璇佺爜鐨� - // this.$refs.refresh.createdCode(); - // this.validCode = ""; //娓呯┖楠岃瘉鐮佽緭鍏ユ鐨勫唴瀹� - } else { - // console.log("error submit!!"); - return false; - } - }); + // // //濡傛灉鐧诲綍澶辫触锛岄渶瑕佸埛鏂伴獙璇佺爜鐨� + // // this.$refs.refresh.createdCode(); + // // this.validCode = ""; //娓呯┖楠岃瘉鐮佽緭鍏ユ鐨勫唴瀹� + // } else { + // // console.log("error submit!!"); + // return false; + // } + // }); }, // CA鍏嶅瘑鐧诲綍 passCAFree() { @@ -308,9 +295,11 @@ height: 60%; margin-left: 74px; } + .imgbox img { width: 100%; } + .titlebox { color: #fff; font-size: 18px; @@ -364,7 +353,7 @@ padding: 0 !important; } -.el-form >>> .el-form-item__error { +.el-form>>>.el-form-item__error { left: 150px; top: 106%; } @@ -417,7 +406,7 @@ bottom: -160px; animation: square 20s linear infinite; border-radius: 45%; - box-shadow: 0px 0px 10px rgba(255,255,255,0.5); + box-shadow: 0px 0px 10px rgba(255, 255, 255, 0.5); } .bg-squares li:nth-child(1) { diff --git a/src/components/map/viewer.vue b/src/components/map/viewer.vue index b8e0ad5..1a7c8e9 100644 --- a/src/components/map/viewer.vue +++ b/src/components/map/viewer.vue @@ -169,6 +169,7 @@ } ); window.Viewer = sgworld._Viewer; + window.viewer = sgworld._Viewer; sgworld._Viewer.scene.moon.show = false; window.sgwfs = new SmartEarth.WFSTool(sgworld._Viewer, Cesium); Viewer.shadows = false; diff --git a/src/components/menu/bottom-menu.vue b/src/components/menu/bottom-menu.vue index a89c765..76cb04c 100644 --- a/src/components/menu/bottom-menu.vue +++ b/src/components/menu/bottom-menu.vue @@ -90,6 +90,8 @@ </el-form-item> </el-form> </div> + + </div> </template> @@ -294,7 +296,9 @@ import axios from "axios"; export default { - components: {}, + components: { + + }, name: "bottom-menu", data() { return { @@ -303,6 +307,7 @@ isShowSPRH: true, csbjShow: false, jxmxShow: false, + romanOption: [ { name: "鏍稿績鍖�" }, { name: "鏅缁垮湴" }, @@ -582,52 +587,17 @@ shoujixinling() { this.switchMenu(3); if (this.isShowSjxl) { - - const loading = this.$loading({ - lock: true, - text: "鎵嬫満淇′护鏁版嵁鍔犺浇涓紝璇风◢鍚�", - spinner: "el-icon-loading", - background: "rgba(0, 0, 0, 0.7)", - }); - setTimeout(() => { - loading.close(); - }, 1500); this.isShowSjxl = false; - let heatMapUrl = URLInCode.heatMapUrl; - sgworld.Core.getJSON(heatMapUrl, (data) => { - let res = []; - data.features.forEach((item) => { - let obj = { - x: item.properties["center_x"], - y: item.properties["center_y"], - value: item.properties["sd_total"], - radius: 50, - }; - res.push(obj); - }); - // //鍒涘缓鐑姏鍥� - heatMapItem = sgworld.Creator.addHeatMap("鐑姏鍥�", { - type: "Heatmap", // 鐑姏鍥剧被鍨嬨�怘eatmap/HeatmapGL銆戯紙鍙�夛級 - sourceData: res, - radius: 7, - gradient: { - ".3": "blue", - ".5": "green", - ".7": "yellow", - ".95": "red", - }, - tooltip: true, // tooltip鏄剧ず鏁板�� - }); - }); + this.$parent.signallingShow = true; } else { this.closeSjxl(); } }, closeSjxl() { - if (heatMapItem) { + this.isShowSjxl = true; - heatMapItem.deleteObject(); - } + this.$parent.signallingShow = false; + }, // historyHandle() { // this.$store.commit("showHistory", true); diff --git a/src/components/menu/signalling.vue b/src/components/menu/signalling.vue new file mode 100644 index 0000000..da5c92f --- /dev/null +++ b/src/components/menu/signalling.vue @@ -0,0 +1,239 @@ +<template> + <div class="signalling"> + <div class="signalling_describe">鍗曚綅锛氫竾浜�</div> + <div> + <ul class="signalling_ul"> + <li class="signalling_node" :class="{ signalling_active: i == selectIndex }" v-for="(item, i) in time" + @click="changeTime(i)"> + <div class="signalling_value">{{ Math.round(value[i] / 10000) }}</div> + <div class="signalling_symbol"></div> + <div class="signalling_time">{{ item }}</div> + </li> + </ul> + </div> + <div class="signalling_play" @click="signallingPlay()"> + <img src="~@/assets/img/new/rightArrow.png" /> + </div> + <div class="signalling_type"> + <el-radio-group v-model="type" @change="changeType"> + <el-radio-button label="鐑姏"></el-radio-button> + <el-radio-button label="鏌辩姸"></el-radio-button> + <el-radio-button label="缃戞牸"></el-radio-button> + </el-radio-group> + </div> + </div> +</template> +<style> +.signalling_type .el-radio-group { + line-height: 0px !important; + color: white !important; +} + +.signalling_type .el-radio-group { + height: 30px !important; +} + +.signalling_type .el-radio-button__inner { + background: rgba(0, 132, 255, 0.8) !important; + border: none !important; + color: white !important; + height: 30px !important; + +} + + + +.signalling_type .el-radio-button__orig-radio:checked+.el-radio-button__inner { + background: rgba(255, 136, 0, 0.8) !important; +} +</style> +<style scoped> +.signalling { + position: absolute; + left: 50%; + margin-left: -650px; + bottom: 230px; + color: white; + width: 1300px; + z-index: 9999999; + pointer-events: all; +} + +.signalling_type { + + position: absolute; + right: 130px; + top: 120px; +} + +.signalling_describe { + position: absolute; + right: 0px; + top: 110px; +} + +.signalling_play { + position: absolute; + left: 0px; + top: 110px; + width: 48px; + height: 48px; + cursor: pointer; + border-radius: 32px; + border: 1px solid #fff; +} + +.signalling_play img { + width: 32px; + height: 32px; + margin: 8px 6px 8px 10px; + +} + +.signalling_ul {} + +.signalling_node { + float: left; + width: 40px; + margin: 2.5px 7px; + list-style: none; + cursor: pointer; + +} + +.signalling_value, +.signalling_symbol, +.signalling_time { + width: 40px; + text-align: center; + +} + +.signalling_symbol { + height: 5px; + background-color: rgb(0, 132, 255); + border-radius: 2px; +} + +.signalling_node:hover .signalling_symbol { + background-color: rgb(255, 136, 0) !important; +} + +.signalling_node:hover { + color: rgb(255, 136, 0) !important; +} + +.signalling_active { + color: rgb(255, 136, 0) !important; +} + +.signalling_active .signalling_symbol { + background-color: rgb(255, 136, 0) !important; +} +</style> +<script> + +export default { + name: "signalling", + components: { + + }, + data() { + return { + type: "鐑姏", + play: false, + selectIndex: 0, + time: ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], + value: [0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, 14, 14, 15, 15, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22, 23, 23] + }; + }, + beforeDestroy() { + removeDataRender(); + removeGrid(); + }, + mounted() { + let that = this; + const loading = this.$loading({ + lock: true, + text: "淇′护鏁版嵁鍔犺浇涓紝璇风◢鍚�", + spinner: "el-icon-loading", + background: "rgba(0, 0, 0, 0.7)", + }); + window.requestData(function () { + that.value = signallingData.count; + loading.close(); + }); + }, + methods: { + changeType(val) { + const loading = this.$loading({ + lock: true, + text: "淇′护鏁版嵁鍔犺浇涓紝璇风◢鍚�", + spinner: "el-icon-loading", + background: "rgba(0, 0, 0, 0.7)", + }); + this.play = false; + if (val == "鐑姏") { + removeGrid(); + dataDraw(); + } else if (val == "鏌辩姸") { + setDataRenderVisible(false); + dataGrid(true); + } else if (val == "缃戞牸") { + setDataRenderVisible(false); + removeGrid(); + dataGrid(false); + } + loading.close(); + }, + changeTime(id) { + this.play = false; + this.selectIndex = id; + if (this.type == "鐑姏") { + signallingData.selectid = id; + } else if (this.type == "鏌辩姸") { + const loading = this.$loading({ + lock: true, + text: "淇′护鏁版嵁鍔犺浇涓紝璇风◢鍚�", + spinner: "el-icon-loading", + background: "rgba(0, 0, 0, 0.7)", + }); + signallingData.selectid = id; + updateDataGrid(true); + loading.close(); + } else if (this.type == "缃戞牸") { + const loading = this.$loading({ + lock: true, + text: "淇′护鏁版嵁鍔犺浇涓紝璇风◢鍚�", + spinner: "el-icon-loading", + background: "rgba(0, 0, 0, 0.7)", + }); + signallingData.selectid = id; + updateDataGrid(false); + loading.close(); + } + }, + modify() { + if (signallingData.selectid == list.length - 1) { + signallingData.selectid = 0; + } else { + signallingData.selectid++; + } + this.selectIndex = signallingData.selectid; + setTimeout(() => { + if (this.play) { + this.modify(); + } + }, 300); + }, + signallingPlay() { + if (this.type == "鐑姏") { + this.play = !this.play; + if (this.play) { + this.modify(); + } + } + }, + } +}; +</script> \ No newline at end of file diff --git a/static/Signalling/data/positions.dat b/static/Signalling/data/positions.dat new file mode 100644 index 0000000..dd95746 --- /dev/null +++ b/static/Signalling/data/positions.dat Binary files differ diff --git a/static/Signalling/data/yz_202312210000.dat b/static/Signalling/data/yz_202312210000.dat new file mode 100644 index 0000000..952c1e3 --- /dev/null +++ b/static/Signalling/data/yz_202312210000.dat Binary files differ diff --git a/static/Signalling/data/yz_202312210030.dat b/static/Signalling/data/yz_202312210030.dat new file mode 100644 index 0000000..2888c84 --- /dev/null +++ b/static/Signalling/data/yz_202312210030.dat Binary files differ diff --git a/static/Signalling/data/yz_202312210100.dat b/static/Signalling/data/yz_202312210100.dat new file mode 100644 index 0000000..af425cf --- /dev/null +++ b/static/Signalling/data/yz_202312210100.dat Binary files differ diff --git a/static/Signalling/data/yz_202312210130.dat b/static/Signalling/data/yz_202312210130.dat new file mode 100644 index 0000000..bee7642 --- /dev/null +++ b/static/Signalling/data/yz_202312210130.dat Binary files differ diff --git a/static/Signalling/data/yz_202312210200.dat b/static/Signalling/data/yz_202312210200.dat new file mode 100644 index 0000000..a28688f --- /dev/null +++ b/static/Signalling/data/yz_202312210200.dat Binary files differ diff --git a/static/Signalling/data/yz_202312210230.dat b/static/Signalling/data/yz_202312210230.dat new file mode 100644 index 0000000..d92fd89 --- /dev/null +++ b/static/Signalling/data/yz_202312210230.dat Binary files differ diff --git a/static/Signalling/data/yz_202312210300.dat b/static/Signalling/data/yz_202312210300.dat new file mode 100644 index 0000000..fb9289f --- /dev/null +++ b/static/Signalling/data/yz_202312210300.dat Binary files differ diff --git a/static/Signalling/data/yz_202312210330.dat b/static/Signalling/data/yz_202312210330.dat new file mode 100644 index 0000000..f8dff32 --- /dev/null +++ b/static/Signalling/data/yz_202312210330.dat Binary files differ diff --git a/static/Signalling/data/yz_202312210400.dat b/static/Signalling/data/yz_202312210400.dat new file mode 100644 index 0000000..3644b45 --- /dev/null +++ b/static/Signalling/data/yz_202312210400.dat Binary files differ diff --git a/static/Signalling/data/yz_202312210430.dat b/static/Signalling/data/yz_202312210430.dat new file mode 100644 index 0000000..05c676b --- /dev/null +++ b/static/Signalling/data/yz_202312210430.dat Binary files differ diff --git a/static/Signalling/data/yz_202312210500.dat b/static/Signalling/data/yz_202312210500.dat new file mode 100644 index 0000000..a723fc6 --- /dev/null +++ b/static/Signalling/data/yz_202312210500.dat Binary files differ diff --git a/static/Signalling/data/yz_202312210530.dat b/static/Signalling/data/yz_202312210530.dat new file mode 100644 index 0000000..0a765c9 --- /dev/null +++ b/static/Signalling/data/yz_202312210530.dat Binary files differ diff --git a/static/Signalling/data/yz_202312210600.dat b/static/Signalling/data/yz_202312210600.dat new file mode 100644 index 0000000..71a25ee --- /dev/null +++ b/static/Signalling/data/yz_202312210600.dat Binary files differ diff --git a/static/Signalling/data/yz_202312210630.dat b/static/Signalling/data/yz_202312210630.dat new file mode 100644 index 0000000..cf5e9bb --- /dev/null +++ b/static/Signalling/data/yz_202312210630.dat Binary files differ diff --git a/static/Signalling/data/yz_202312210700.dat b/static/Signalling/data/yz_202312210700.dat new file mode 100644 index 0000000..246bdfa --- /dev/null +++ b/static/Signalling/data/yz_202312210700.dat Binary files differ diff --git a/static/Signalling/data/yz_202312210730.dat b/static/Signalling/data/yz_202312210730.dat new file mode 100644 index 0000000..eb8dd9d --- /dev/null +++ b/static/Signalling/data/yz_202312210730.dat Binary files differ diff --git a/static/Signalling/data/yz_202312210800.dat b/static/Signalling/data/yz_202312210800.dat new file mode 100644 index 0000000..009d1ad --- /dev/null +++ b/static/Signalling/data/yz_202312210800.dat Binary files differ diff --git a/static/Signalling/data/yz_202312210830.dat b/static/Signalling/data/yz_202312210830.dat new file mode 100644 index 0000000..bfabde3 --- /dev/null +++ b/static/Signalling/data/yz_202312210830.dat Binary files differ diff --git a/static/Signalling/data/yz_202312210900.dat b/static/Signalling/data/yz_202312210900.dat new file mode 100644 index 0000000..ca2bc50 --- /dev/null +++ b/static/Signalling/data/yz_202312210900.dat Binary files differ diff --git a/static/Signalling/data/yz_202312210930.dat b/static/Signalling/data/yz_202312210930.dat new file mode 100644 index 0000000..4c402b2 --- /dev/null +++ b/static/Signalling/data/yz_202312210930.dat Binary files differ diff --git a/static/Signalling/data/yz_202312211000.dat b/static/Signalling/data/yz_202312211000.dat new file mode 100644 index 0000000..6a0a07f --- /dev/null +++ b/static/Signalling/data/yz_202312211000.dat Binary files differ diff --git a/static/Signalling/data/yz_202312211030.dat b/static/Signalling/data/yz_202312211030.dat new file mode 100644 index 0000000..67f5c98 --- /dev/null +++ b/static/Signalling/data/yz_202312211030.dat Binary files differ diff --git a/static/Signalling/data/yz_202312211100.dat b/static/Signalling/data/yz_202312211100.dat new file mode 100644 index 0000000..8ebccdb --- /dev/null +++ b/static/Signalling/data/yz_202312211100.dat Binary files differ diff --git a/static/Signalling/data/yz_202312211130.dat b/static/Signalling/data/yz_202312211130.dat new file mode 100644 index 0000000..49f900a --- /dev/null +++ b/static/Signalling/data/yz_202312211130.dat Binary files differ diff --git a/static/Signalling/data/yz_202312211200.dat b/static/Signalling/data/yz_202312211200.dat new file mode 100644 index 0000000..04a494a --- /dev/null +++ b/static/Signalling/data/yz_202312211200.dat Binary files differ diff --git a/static/Signalling/data/yz_202312211230.dat b/static/Signalling/data/yz_202312211230.dat new file mode 100644 index 0000000..5d88c42 --- /dev/null +++ b/static/Signalling/data/yz_202312211230.dat Binary files differ diff --git a/static/Signalling/data/yz_202312211300.dat b/static/Signalling/data/yz_202312211300.dat new file mode 100644 index 0000000..ec46f8c --- /dev/null +++ b/static/Signalling/data/yz_202312211300.dat Binary files differ diff --git a/static/Signalling/data/yz_202312211330.dat b/static/Signalling/data/yz_202312211330.dat new file mode 100644 index 0000000..9449208 --- /dev/null +++ b/static/Signalling/data/yz_202312211330.dat Binary files differ diff --git a/static/Signalling/data/yz_202312211400.dat b/static/Signalling/data/yz_202312211400.dat new file mode 100644 index 0000000..0688067 --- /dev/null +++ b/static/Signalling/data/yz_202312211400.dat Binary files differ diff --git a/static/Signalling/data/yz_202312211430.dat b/static/Signalling/data/yz_202312211430.dat new file mode 100644 index 0000000..968368e --- /dev/null +++ b/static/Signalling/data/yz_202312211430.dat Binary files differ diff --git a/static/Signalling/data/yz_202312211500.dat b/static/Signalling/data/yz_202312211500.dat new file mode 100644 index 0000000..7a773f4 --- /dev/null +++ b/static/Signalling/data/yz_202312211500.dat Binary files differ diff --git a/static/Signalling/data/yz_202312211530.dat b/static/Signalling/data/yz_202312211530.dat new file mode 100644 index 0000000..af74dbb --- /dev/null +++ b/static/Signalling/data/yz_202312211530.dat Binary files differ diff --git a/static/Signalling/data/yz_202312211600.dat b/static/Signalling/data/yz_202312211600.dat new file mode 100644 index 0000000..2a2fb4d --- /dev/null +++ b/static/Signalling/data/yz_202312211600.dat Binary files differ diff --git a/static/Signalling/data/yz_202312211630.dat b/static/Signalling/data/yz_202312211630.dat new file mode 100644 index 0000000..cfb9b44 --- /dev/null +++ b/static/Signalling/data/yz_202312211630.dat Binary files differ diff --git a/static/Signalling/data/yz_202312211700.dat b/static/Signalling/data/yz_202312211700.dat new file mode 100644 index 0000000..2cab96d --- /dev/null +++ b/static/Signalling/data/yz_202312211700.dat Binary files differ diff --git a/static/Signalling/data/yz_202312211730.dat b/static/Signalling/data/yz_202312211730.dat new file mode 100644 index 0000000..ad0aabe --- /dev/null +++ b/static/Signalling/data/yz_202312211730.dat Binary files differ diff --git a/static/Signalling/data/yz_202312211800.dat b/static/Signalling/data/yz_202312211800.dat new file mode 100644 index 0000000..1738ed7 --- /dev/null +++ b/static/Signalling/data/yz_202312211800.dat Binary files differ diff --git a/static/Signalling/data/yz_202312211830.dat b/static/Signalling/data/yz_202312211830.dat new file mode 100644 index 0000000..f958c96 --- /dev/null +++ b/static/Signalling/data/yz_202312211830.dat Binary files differ diff --git a/static/Signalling/data/yz_202312211900.dat b/static/Signalling/data/yz_202312211900.dat new file mode 100644 index 0000000..6a659e9 --- /dev/null +++ b/static/Signalling/data/yz_202312211900.dat Binary files differ diff --git a/static/Signalling/data/yz_202312211930.dat b/static/Signalling/data/yz_202312211930.dat new file mode 100644 index 0000000..9f77325 --- /dev/null +++ b/static/Signalling/data/yz_202312211930.dat Binary files differ diff --git a/static/Signalling/data/yz_202312212000.dat b/static/Signalling/data/yz_202312212000.dat new file mode 100644 index 0000000..4cc70c0 --- /dev/null +++ b/static/Signalling/data/yz_202312212000.dat Binary files differ diff --git a/static/Signalling/data/yz_202312212030.dat b/static/Signalling/data/yz_202312212030.dat new file mode 100644 index 0000000..3056a58 --- /dev/null +++ b/static/Signalling/data/yz_202312212030.dat Binary files differ diff --git a/static/Signalling/data/yz_202312212100.dat b/static/Signalling/data/yz_202312212100.dat new file mode 100644 index 0000000..dddd255 --- /dev/null +++ b/static/Signalling/data/yz_202312212100.dat Binary files differ diff --git a/static/Signalling/data/yz_202312212130.dat b/static/Signalling/data/yz_202312212130.dat new file mode 100644 index 0000000..ff8c3e5 --- /dev/null +++ b/static/Signalling/data/yz_202312212130.dat Binary files differ diff --git a/static/Signalling/data/yz_202312212200.dat b/static/Signalling/data/yz_202312212200.dat new file mode 100644 index 0000000..2e22568 --- /dev/null +++ b/static/Signalling/data/yz_202312212200.dat Binary files differ diff --git a/static/Signalling/data/yz_202312212230.dat b/static/Signalling/data/yz_202312212230.dat new file mode 100644 index 0000000..649161f --- /dev/null +++ b/static/Signalling/data/yz_202312212230.dat Binary files differ diff --git a/static/Signalling/data/yz_202312212300.dat b/static/Signalling/data/yz_202312212300.dat new file mode 100644 index 0000000..52d644b --- /dev/null +++ b/static/Signalling/data/yz_202312212300.dat Binary files differ diff --git a/static/Signalling/data/yz_202312212330.dat b/static/Signalling/data/yz_202312212330.dat new file mode 100644 index 0000000..04d8627 --- /dev/null +++ b/static/Signalling/data/yz_202312212330.dat Binary files differ diff --git a/static/Signalling/js/Color.js b/static/Signalling/js/Color.js new file mode 100644 index 0000000..a397098 --- /dev/null +++ b/static/Signalling/js/Color.js @@ -0,0 +1,95 @@ + + +var RD_SALT_COLOR = [ + [30, [10, 25, 68]], + [32, [10, 25, 250]], + [33.5, [255, 233, 102]], + [34.5, [255, 155, 15]], + [38, [255, 0, 0]], +]; +function colorInterpolator(start, end) { + var r = start[0], + g = start[1], + b = start[2]; + var 螖r = end[0] - r, + 螖g = end[1] - g, + 螖b = end[2] - b; + return function(i, a) { + return [ + Math.floor(r + i * 螖r), + Math.floor(g + i * 螖g), + Math.floor(b + i * 螖b), + a, + ]; + }; +} +/** + * Creates a color scale composed of the specified segments. Segments is an array of two-element arrays of the + * form [value, color], where value is the point along the scale and color is the [r, g, b] color at that point. + * For example, the following creates a scale that smoothly transitions from red to green to blue along the + * points 0.5, 1.0, and 3.5: + * + * [ [ 0.5, [255, 0, 0] ], + * [ 1.0, [0, 255, 0] ], + * [ 3.5, [0, 0, 255] ] ] + * + * @param segments array of color segments + * @returns {Function} a function(point, alpha) that returns the color [r, g, b, alpha] for the given point. + */ +function segmentedColorScale(segments) { + var points = [], + interpolators = [], + ranges = []; + for (var i = 0; i < segments.length - 1; i++) { + points.push(segments[i + 1][0]); + interpolators.push( + colorInterpolator(segments[i][1], segments[i + 1][1]) + ); + ranges.push([segments[i][0], segments[i + 1][0]]); + } + + return function(point, alpha) { + var i; + for (i = 0; i < points.length - 1; i++) { + if (point <= points[i]) { + break; + } + } + var range = ranges[i]; + return interpolators[i](proportion(point, range[0], range[1]), alpha); + }; +} +/** + * @returns {Number} the value x clamped to the range [low, high]. + */ +function clamp(x, low, high) { + return Math.max(low, Math.min(x, high)); +} + +/** + * @returns {number} the fraction of the bounds [low, high] covered by the value x, after clamping x to the + * bounds. For example, given bounds=[10, 20], this method returns 1 for x>=20, 0.5 for x=15 and 0 + * for x<=10. + */ +function proportion(x, low, high) { + return (clamp(x, low, high) - low) / (high - low); +} +var RD_OVERLAY_ALPHA = Math.floor(0.8 * 255); // 榛樿瑕嗙洊閫忔槑搴� ([0, 255]) +const Color = function (option){ + let colorBar = RD_SALT_COLOR; + let valMax = option.max; + let valMin = option.min; + let delta = valMax - valMin; + delta = delta / (colorBar.length - 1); + for (let i = 0; i < colorBar.length; i++) { + colorBar[i][0] = valMin + i * delta; + } + this._colorgradient = segmentedColorScale(colorBar); + +}; +Color.prototype.getColor = function (value){ + let color = this._colorgradient(value); + let nColor; + nColor = Cesium.Color.fromBytes(color[0], color[1], color[2], 255, nColor); + return nColor; +} diff --git a/static/Signalling/js/DataGrid.js b/static/Signalling/js/DataGrid.js new file mode 100644 index 0000000..e8e970f --- /dev/null +++ b/static/Signalling/js/DataGrid.js @@ -0,0 +1,122 @@ + + +function createGrid(id) { + let positions = signallingData.positions; + let x = positions[id][0]; + let y = positions[id][1]; + let value = signallingData.values[signallingData.selectid][id]; + let color = signallingData.color.getColor(value); + let entity = viewer.entities.add({ + id: "box_" + id, + position: Cesium.Cartesian3.fromDegrees(x, y, value * 1.5), + box: { + dimensions: new Cesium.Cartesian3(100.0, 100.0, value * 3), + outline: false, + material: color, + } + }); + viewer.entities.add({ + id: "label_" + id, + position: Cesium.Cartesian3.fromDegrees(x, y, value * 3), + label: { + text: value + "", + verticalOrigin: Cesium.VerticalOrigin.BOTTOM, + font: "18px", + distanceDisplayCondition: new Cesium.DistanceDisplayCondition( + 0, 10000 + ), + }, + + }); + return entity; +} +function createGridPanel(id) { + let positions = signallingData.positions; + let x = positions[id][0]; + let y = positions[id][1]; + let value = signallingData.values[signallingData.selectid][id]; + let color = signallingData.color.getColor(value); + color.alpha = 0.3; + let entity = signallingData.dataSource.entities.add({ + id: "box_" + id, + position: Cesium.Cartesian3.fromDegrees(x, y, 0.1), + box: { + dimensions: new Cesium.Cartesian3(100.0, 100.0, 0), + outline: true, + outlineColor: Cesium.Color.WHITE, + outlineWidth: 2, + material: color, + } + }); + signallingData.dataSource.entities.add({ + id: "label_" + id, + position: Cesium.Cartesian3.fromDegrees(x, y, 1), + label: { + text: value + "", + verticalOrigin: Cesium.VerticalOrigin.BOTTOM, + font: "18px", + distanceDisplayCondition: new Cesium.DistanceDisplayCondition( + 0, 10000 + ), + }, + + }); + return entity; +} +// new Cesium.CallbackProperty(function() { +// let value = signallingData.values[signallingData.selectid][id]; +// let dim = new Cesium.Cartesian3(100.0, 100.0, value * 10); +// return dim; +// }, false), +// new Cesium.CallbackProperty(function() { +// let value = signallingData.values[signallingData.selectid][id]; +// let color = signallingData.color.getColor(value); +// return color; +// }, false) +function dataGrid(type) { + if (signallingData.dataSource == null) { + signallingData.dataSource = new Cesium.CustomDataSource('signallingList'); + + signallingData.color = new Color({ + max: 120, + min: 0, + }); + let positions = signallingData.positions; + for (let i = 0; i < positions.length; i++) { + if (type) { + createGrid(i); + } else { + createGridPanel(i); + } + } + viewer.dataSources.add(signallingData.dataSource); + } + return true; +} +function removeGrid() { + try { + viewer.dataSources.remove(signallingData.dataSource); + signallingData.dataSource = null; + } catch (e) { } + return true; +} +function updateDataGrid(type) { + let positions = signallingData.positions; + for (let i = 0; i < positions.length; i++) { + let x = positions[i][0]; + let y = positions[i][1]; + let value = signallingData.values[signallingData.selectid][i]; + let color = signallingData.color.getColor(value); + let labelEntity = signallingData.dataSource.entities.getById("label_" + i); + let boxEntity = signallingData.dataSource.entities.getById("box_" + i); + labelEntity.label.text = value + ""; + if (type) { + labelEntity.position.setValue(Cesium.Cartesian3.fromDegrees(x, y, value * 3)); + boxEntity.position.setValue(Cesium.Cartesian3.fromDegrees(x, y, value * 1.5)); + + boxEntity.box.dimensions = new Cesium.Cartesian3(100.0, 100.0, value * 3); + } + boxEntity.box.material = color; + } + return true; +} \ No newline at end of file diff --git a/static/Signalling/js/DataManager.js b/static/Signalling/js/DataManager.js new file mode 100644 index 0000000..646b0f2 --- /dev/null +++ b/static/Signalling/js/DataManager.js @@ -0,0 +1,127 @@ + +var list = ["yz_202312210030.dat", + "yz_202312210100.dat", + "yz_202312210130.dat", + "yz_202312210200.dat", + "yz_202312210230.dat", + "yz_202312210300.dat", + "yz_202312210330.dat", + "yz_202312210400.dat", + "yz_202312210430.dat", + "yz_202312210500.dat", + "yz_202312210530.dat", + "yz_202312210600.dat", + "yz_202312210630.dat", + "yz_202312210700.dat", + "yz_202312210730.dat", + "yz_202312210800.dat", + "yz_202312210830.dat", + "yz_202312210900.dat", + "yz_202312210930.dat", + "yz_202312211000.dat", + "yz_202312211030.dat", + "yz_202312211100.dat", + "yz_202312211130.dat", + "yz_202312211200.dat", + "yz_202312211230.dat", + "yz_202312211300.dat", + "yz_202312211330.dat", + "yz_202312211400.dat", + "yz_202312211430.dat", + "yz_202312211500.dat", + "yz_202312211530.dat", + "yz_202312211600.dat", + "yz_202312211630.dat", + "yz_202312211700.dat", + "yz_202312211730.dat", + "yz_202312211800.dat", + "yz_202312211830.dat", + "yz_202312211900.dat", + "yz_202312211930.dat", + "yz_202312212000.dat", + "yz_202312212030.dat", + "yz_202312212100.dat", + "yz_202312212130.dat", + "yz_202312212200.dat", + "yz_202312212230.dat", + "yz_202312212300.dat", + "yz_202312212330.dat", + "yz_202312210000.dat" +]; +var signallingData = { + extent: { + minx: 999, + miny: 999, + maxx: -999, + maxy: -999, + dx: 999, + dy: 999, + }, + pixels: [], + positions: [], + values: [], + count: [], + canvas: [], + heatmap: [], + dataSource:null, + heatmapEntity: null, + posFinish: false, + valueFinish: 0, + selectid: 0, + color: null, +}; + + +function getData(id, callback) { + fetch("./static/Signalling/data/" + list[id]).then(response => response.arrayBuffer()).then(data => { + var dataView = new DataView(data); + signallingData.values[id] = []; + for (var i = 0; i < dataView.byteLength; i += 2) { + let value = dataView.getInt16(i, true); + signallingData.values[id].push(value); + } + signallingData.valueFinish++; + if (signallingData.valueFinish == list.length) { + dataDraw(callback); + } + }); + +} + +function getDatas(callback) { + signallingData.valueFinish = 0; + for (let i = 0; i < list.length; i++) { + + getData(i, callback); + } +} +function updataExtent(x, y) { + if (signallingData.extent.minx > x) { + signallingData.extent.minx = x; + } + if (signallingData.extent.miny > y) { + signallingData.extent.miny = y; + } + if (signallingData.extent.maxx < x) { + signallingData.extent.maxx = x; + } + if (signallingData.extent.maxy < y) { + signallingData.extent.maxy = y; + } + signallingData.extent.dx = signallingData.extent.maxx - signallingData.extent.minx; + signallingData.extent.dy = signallingData.extent.maxy - signallingData.extent.miny; +} +function requestData(callback) { + fetch("./static/Signalling/data/positions.dat").then(response => response.arrayBuffer()).then(data => { + var dataView = new DataView(data); + for (var i = 0; i < dataView.byteLength; i += 8) { + let x = dataView.getFloat32(i, true); + let y = dataView.getFloat32(i + 4, true); + updataExtent(x, y); + signallingData.positions.push([x, y]); + } + signallingData.posFinish = true; + + getDatas(callback); + }); +} \ No newline at end of file diff --git a/static/Signalling/js/DataRender.js b/static/Signalling/js/DataRender.js new file mode 100644 index 0000000..0e843d1 --- /dev/null +++ b/static/Signalling/js/DataRender.js @@ -0,0 +1,151 @@ +let drConfig = { + width: 1000, + height: 1000, +}; + +function createCanvas() { + var canvas = document.createElement("canvas"); + canvas.width = drConfig.width; + canvas.height = drConfig.height; + return canvas; +} +function drawHeatMap(datas) { + + let gradient = { + '.3': 'blue', + '.5': 'green', + '.7': 'yellow', + '.95': 'red' + } + let heatmapContainer = document.createElement('div'); + heatmapContainer.setAttribute('style', 'width:' + drConfig.width + 'px;height:' + drConfig.height + 'px;display:none;'); + document.body.appendChild(heatmapContainer); + + let heatmapInstance = h337.create({ + container: heatmapContainer, + // 鏈�澶ч�忔槑搴� + maxOpacity: 0.8, + // 鏈�灏忛�忔槑搴� + minOpacity: 0.1, + // 妯$硦绯绘暟锛屾ā绯婄郴鏁拌秺楂橈紝娓愬彉灏辫秺骞虫粦 + blur: 0.85, + // 榛樿鍗婂緞 + radius: 7, + // 娓愬彉 + gradient: gradient + }); + + heatmapInstance.setData(datas); + signallingData.canvas.push(heatmapInstance._renderer.canvas); + signallingData.heatmap.push(heatmapContainer); + return heatmapInstance._renderer.canvas; +} + +function pointToPixel(point) { + let result = { + x: 0, y: 0, + }; + let dx = signallingData.extent.dx; + let dy = signallingData.extent.dy; + result.x = Math.floor((point[0] - signallingData.extent.minx) * drConfig.width / dx); + result.y = Math.floor((signallingData.extent.maxy - point[1]) * drConfig.height / dy); + return result; +} +function coordinateTransformation() { + let positions = signallingData.positions; + + for (let i = 0; i < positions.length; i++) { + let position = positions[i]; + let point = pointToPixel(position); + signallingData.pixels.push(point); + } +} +function createEntity() { + let pArray = []; + let extent = signallingData.extent; + pArray.push(extent.minx, extent.miny); + pArray.push(extent.maxx, extent.miny); + pArray.push(extent.maxx, extent.maxy); + pArray.push(extent.minx, extent.maxy); + let hierarchy = Cesium.Cartesian3.fromDegreesArray(pArray); + let entity = viewer.entities.add({ + id: "signalling", + polygon: { + hierarchy: new Cesium.PolygonHierarchy(hierarchy), + material: new Cesium.ImageMaterialProperty({ + image: new Cesium.CallbackProperty(function () { + return signallingData.canvas[signallingData.selectid]; + }, false), + + repeat: new Cesium.Cartesian2(1, 1) + }) + } + }); + return entity; +} +function dataDraw(callback) { + if (signallingData.heatmapEntity == null) { + coordinateTransformation(); + let values = signallingData.values; + let points = signallingData.pixels; + for (let i = 0; i < values.length; i++) { + let value = values[i]; + let datas = []; + let vmax = 0; + signallingData.count[i] = 0; + for (let j = 0; j < value.length; j++) { + let point = points[j]; + if (value[j] != 0) { + signallingData.count[i] += value[j]; + if (vmax < value[j]) { + vmax = value[j]; + } + let data = { + x: point.x, + y: point.y, + value: value[j], + radius: 7 + }; + datas.push(data); + } + } + vmax = 500; + let canvas = drawHeatMap({ + max: vmax, + min: 0, + data: datas + }); + + } + signallingData.heatmapEntity = createEntity(); + if (callback) { + callback(); + } + }else{ + setDataRenderVisible(true); + } + return signallingData.heatmapEntity; +} +function setDataRenderVisible(show) { + try { + if (signallingData.heatmapEntity) { + signallingData.heatmapEntity.show = show; + } + } catch (e) { } +} +function removeDataRender() { + try { + //let entity = viewer.entities.getById("signalling"); + viewer.entities.remove(signallingData.heatmapEntity); + signallingData.heatmapEntity = null; + + } catch (e) { } + try { + for (let i = 0; i < signallingData.heatmap.length; i++) { + try { + document.body.removeChild(signallingData.heatmap[i]); + } catch (e) { } + } + signallingData.heatmap = []; + } catch (e) { } +} \ No newline at end of file diff --git a/static/Signalling/js/heatmap.min.js b/static/Signalling/js/heatmap.min.js new file mode 100644 index 0000000..9004bb3 --- /dev/null +++ b/static/Signalling/js/heatmap.min.js @@ -0,0 +1,9 @@ +/* + * heatmap.js v2.0.2 | JavaScript Heatmap Library + * + * Copyright 2008-2016 Patrick Wied <heatmapjs@patrick-wied.at> - All rights reserved. + * Dual licensed under MIT and Beerware license + * + * :: 2016-02-04 21:25 + */ +(function(a,b,c){if(typeof module!=="undefined"&&module.exports){module.exports=c()}else if(typeof define==="function"&&define.amd){define(c)}else{b[a]=c()}})("h337",this,function(){var a={defaultRadius:40,defaultRenderer:"canvas2d",defaultGradient:{.25:"rgb(0,0,255)",.55:"rgb(0,255,0)",.85:"yellow",1:"rgb(255,0,0)"},defaultMaxOpacity:1,defaultMinOpacity:0,defaultBlur:.85,defaultXField:"x",defaultYField:"y",defaultValueField:"value",plugins:{}};var b=function h(){var b=function d(a){this._coordinator={};this._data=[];this._radi=[];this._min=0;this._max=1;this._xField=a["xField"]||a.defaultXField;this._yField=a["yField"]||a.defaultYField;this._valueField=a["valueField"]||a.defaultValueField;if(a["radius"]){this._cfgRadius=a["radius"]}};var c=a.defaultRadius;b.prototype={_organiseData:function(a,b){var d=a[this._xField];var e=a[this._yField];var f=this._radi;var g=this._data;var h=this._max;var i=this._min;var j=a[this._valueField]||1;var k=a.radius||this._cfgRadius||c;if(!g[d]){g[d]=[];f[d]=[]}if(!g[d][e]){g[d][e]=j;f[d][e]=k}else{g[d][e]+=j}if(g[d][e]>h){if(!b){this._max=g[d][e]}else{this.setDataMax(g[d][e])}return false}else{return{x:d,y:e,value:j,radius:k,min:i,max:h}}},_unOrganizeData:function(){var a=[];var b=this._data;var c=this._radi;for(var d in b){for(var e in b[d]){a.push({x:d,y:e,radius:c[d][e],value:b[d][e]})}}return{min:this._min,max:this._max,data:a}},_onExtremaChange:function(){this._coordinator.emit("extremachange",{min:this._min,max:this._max})},addData:function(){if(arguments[0].length>0){var a=arguments[0];var b=a.length;while(b--){this.addData.call(this,a[b])}}else{var c=this._organiseData(arguments[0],true);if(c){this._coordinator.emit("renderpartial",{min:this._min,max:this._max,data:[c]})}}return this},setData:function(a){var b=a.data;var c=b.length;this._data=[];this._radi=[];for(var d=0;d<c;d++){this._organiseData(b[d],false)}this._max=a.max;this._min=a.min||0;this._onExtremaChange();this._coordinator.emit("renderall",this._getInternalData());return this},removeData:function(){},setDataMax:function(a){this._max=a;this._onExtremaChange();this._coordinator.emit("renderall",this._getInternalData());return this},setDataMin:function(a){this._min=a;this._onExtremaChange();this._coordinator.emit("renderall",this._getInternalData());return this},setCoordinator:function(a){this._coordinator=a},_getInternalData:function(){return{max:this._max,min:this._min,data:this._data,radi:this._radi}},getData:function(){return this._unOrganizeData()}};return b}();var c=function i(){var a=function(a){var b=a.gradient||a.defaultGradient;var c=document.createElement("canvas");var d=c.getContext("2d");c.width=256;c.height=1;var e=d.createLinearGradient(0,0,256,1);for(var f in b){e.addColorStop(f,b[f])}d.fillStyle=e;d.fillRect(0,0,256,1);return d.getImageData(0,0,256,1).data};var b=function(a,b){var c=document.createElement("canvas");var d=c.getContext("2d");var e=a;var f=a;c.width=c.height=a*2;if(b==1){d.beginPath();d.arc(e,f,a,0,2*Math.PI,false);d.fillStyle="rgba(0,0,0,1)";d.fill()}else{var g=d.createRadialGradient(e,f,a*b,e,f,a);g.addColorStop(0,"rgba(0,0,0,1)");g.addColorStop(1,"rgba(0,0,0,0)");d.fillStyle=g;d.fillRect(0,0,2*a,2*a)}return c};var c=function(a){var b=[];var c=a.min;var d=a.max;var e=a.radi;var a=a.data;var f=Object.keys(a);var g=f.length;while(g--){var h=f[g];var i=Object.keys(a[h]);var j=i.length;while(j--){var k=i[j];var l=a[h][k];var m=e[h][k];b.push({x:h,y:k,value:l,radius:m})}}return{min:c,max:d,data:b}};function d(b){var c=b.container;var d=this.shadowCanvas=document.createElement("canvas");var e=this.canvas=b.canvas||document.createElement("canvas");var f=this._renderBoundaries=[1e4,1e4,0,0];var g=getComputedStyle(b.container)||{};e.className="heatmap-canvas";this._width=e.width=d.width=b.width||+g.width.replace(/px/,"");this._height=e.height=d.height=b.height||+g.height.replace(/px/,"");this.shadowCtx=d.getContext("2d");this.ctx=e.getContext("2d");e.style.cssText=d.style.cssText="position:absolute;left:0;top:0;";c.style.position="relative";c.appendChild(e);this._palette=a(b);this._templates={};this._setStyles(b)}d.prototype={renderPartial:function(a){if(a.data.length>0){this._drawAlpha(a);this._colorize()}},renderAll:function(a){this._clear();if(a.data.length>0){this._drawAlpha(c(a));this._colorize()}},_updateGradient:function(b){this._palette=a(b)},updateConfig:function(a){if(a["gradient"]){this._updateGradient(a)}this._setStyles(a)},setDimensions:function(a,b){this._width=a;this._height=b;this.canvas.width=this.shadowCanvas.width=a;this.canvas.height=this.shadowCanvas.height=b},_clear:function(){this.shadowCtx.clearRect(0,0,this._width,this._height);this.ctx.clearRect(0,0,this._width,this._height)},_setStyles:function(a){this._blur=a.blur==0?0:a.blur||a.defaultBlur;if(a.backgroundColor){this.canvas.style.backgroundColor=a.backgroundColor}this._width=this.canvas.width=this.shadowCanvas.width=a.width||this._width;this._height=this.canvas.height=this.shadowCanvas.height=a.height||this._height;this._opacity=(a.opacity||0)*255;this._maxOpacity=(a.maxOpacity||a.defaultMaxOpacity)*255;this._minOpacity=(a.minOpacity||a.defaultMinOpacity)*255;this._useGradientOpacity=!!a.useGradientOpacity},_drawAlpha:function(a){var c=this._min=a.min;var d=this._max=a.max;var a=a.data||[];var e=a.length;var f=1-this._blur;while(e--){var g=a[e];var h=g.x;var i=g.y;var j=g.radius;var k=Math.min(g.value,d);var l=h-j;var m=i-j;var n=this.shadowCtx;var o;if(!this._templates[j]){this._templates[j]=o=b(j,f)}else{o=this._templates[j]}var p=(k-c)/(d-c);n.globalAlpha=p<.01?.01:p;n.drawImage(o,l,m);if(l<this._renderBoundaries[0]){this._renderBoundaries[0]=l}if(m<this._renderBoundaries[1]){this._renderBoundaries[1]=m}if(l+2*j>this._renderBoundaries[2]){this._renderBoundaries[2]=l+2*j}if(m+2*j>this._renderBoundaries[3]){this._renderBoundaries[3]=m+2*j}}},_colorize:function(){var a=this._renderBoundaries[0];var b=this._renderBoundaries[1];var c=this._renderBoundaries[2]-a;var d=this._renderBoundaries[3]-b;var e=this._width;var f=this._height;var g=this._opacity;var h=this._maxOpacity;var i=this._minOpacity;var j=this._useGradientOpacity;if(a<0){a=0}if(b<0){b=0}if(a+c>e){c=e-a}if(b+d>f){d=f-b}var k=this.shadowCtx.getImageData(a,b,c,d);var l=k.data;var m=l.length;var n=this._palette;for(var o=3;o<m;o+=4){var p=l[o];var q=p*4;if(!q){continue}var r;if(g>0){r=g}else{if(p<h){if(p<i){r=i}else{r=p}}else{r=h}}l[o-3]=n[q];l[o-2]=n[q+1];l[o-1]=n[q+2];l[o]=j?n[q+3]:r}k.data=l;this.ctx.putImageData(k,a,b);this._renderBoundaries=[1e3,1e3,0,0]},getValueAt:function(a){var b;var c=this.shadowCtx;var d=c.getImageData(a.x,a.y,1,1);var e=d.data[3];var f=this._max;var g=this._min;b=Math.abs(f-g)*(e/255)>>0;return b},getDataURL:function(){return this.canvas.toDataURL()}};return d}();var d=function j(){var b=false;if(a["defaultRenderer"]==="canvas2d"){b=c}return b}();var e={merge:function(){var a={};var b=arguments.length;for(var c=0;c<b;c++){var d=arguments[c];for(var e in d){a[e]=d[e]}}return a}};var f=function k(){var c=function h(){function a(){this.cStore={}}a.prototype={on:function(a,b,c){var d=this.cStore;if(!d[a]){d[a]=[]}d[a].push(function(a){return b.call(c,a)})},emit:function(a,b){var c=this.cStore;if(c[a]){var d=c[a].length;for(var e=0;e<d;e++){var f=c[a][e];f(b)}}}};return a}();var f=function(a){var b=a._renderer;var c=a._coordinator;var d=a._store;c.on("renderpartial",b.renderPartial,b);c.on("renderall",b.renderAll,b);c.on("extremachange",function(b){a._config.onExtremaChange&&a._config.onExtremaChange({min:b.min,max:b.max,gradient:a._config["gradient"]||a._config["defaultGradient"]})});d.setCoordinator(c)};function g(){var g=this._config=e.merge(a,arguments[0]||{});this._coordinator=new c;if(g["plugin"]){var h=g["plugin"];if(!a.plugins[h]){throw new Error("Plugin '"+h+"' not found. Maybe it was not registered.")}else{var i=a.plugins[h];this._renderer=new i.renderer(g);this._store=new i.store(g)}}else{this._renderer=new d(g);this._store=new b(g)}f(this)}g.prototype={addData:function(){this._store.addData.apply(this._store,arguments);return this},removeData:function(){this._store.removeData&&this._store.removeData.apply(this._store,arguments);return this},setData:function(){this._store.setData.apply(this._store,arguments);return this},setDataMax:function(){this._store.setDataMax.apply(this._store,arguments);return this},setDataMin:function(){this._store.setDataMin.apply(this._store,arguments);return this},configure:function(a){this._config=e.merge(this._config,a);this._renderer.updateConfig(this._config);this._coordinator.emit("renderall",this._store._getInternalData());return this},repaint:function(){this._coordinator.emit("renderall",this._store._getInternalData());return this},getData:function(){return this._store.getData()},getDataURL:function(){return this._renderer.getDataURL()},getValueAt:function(a){if(this._store.getValueAt){return this._store.getValueAt(a)}else if(this._renderer.getValueAt){return this._renderer.getValueAt(a)}else{return null}}};return g}();var g={create:function(a){return new f(a)},register:function(b,c){a.plugins[b]=c}};return g}); \ No newline at end of file -- Gitblit v1.9.3