intelligent_monitoring_fron.../Code/frontend/public/static/Heatmap_min.js

1 line
12 KiB
JavaScript

(function(b,c,a){c[b]=a()})("h337",this,function(){var c={defaultRadius:40,defaultRenderer:"canvas2d",defaultGradient:{0.45:"rgb(0,0,255)",0.55:"rgb(0,255,255)",0.65:"rgb(0,255,0)",0.95:"yellow",1:"rgb(255,0,0)"},defaultMaxOpacity:1,defaultMinOpacity:0,defaultBlur:0.85,defaultXField:"x",defaultYField:"y",defaultValueField:"value",plugins:{}};var g=(function l(){var n=function n(o){this._coordinator={};this._data=[];this._radi=[];this._min=0;this._max=1;this._xField=o.xField||o.defaultXField;this._yField=o.yField||o.defaultYField;this._valueField=o.valueField||o.defaultValueField;if(o.radius){this._cfgRadius=o.radius}};var m=c.defaultRadius;n.prototype={_organiseData:function(o,q){var u=o[this._xField];var s=o[this._yField];var z=this._radi;var w=this._data;var t=this._max;var p=this._min;var v=o[this._valueField]||1;var r=o.radius||this._cfgRadius||m;if(!w[u]){w[u]=[];z[u]=[]}if(!w[u][s]){w[u][s]=v;z[u][s]=r}else{w[u][s]+=v}if(w[u][s]>t){if(!q){this._max=w[u][s]}else{this.setDataMax(w[u][s])}return false}else{return{x:u,y:s,value:v,radius:r,min:p,max:t}}},_unOrganizeData:function(){var r=[];var q=this._data;var p=this._radi;for(var o in q){for(var s in q[o]){r.push({x:o,y:s,radius:p[o][s],value:q[o][s]})}}return{min:this._min,max:this._max,data:r}},_onExtremaChange:function(){this._coordinator.emit("extremachange",{min:this._min,max:this._max})},addData:function(){if(arguments[0].length>0){var p=arguments[0];var o=p.length;while(o--){this.addData.call(this,p[o])}}else{var q=this._organiseData(arguments[0],true);if(q){this._coordinator.emit("renderpartial",{min:this._min,max:this._max,data:[q]})}}return this},setData:function(q){var p=q.data;var r=p.length;this._data=[];this._radi=[];for(var o=0;o<r;o++){this._organiseData(p[o],false)}this._max=q.max;this._min=q.min||0;this._onExtremaChange();this._coordinator.emit("renderall",this._getInternalData());return this},removeData:function(){},setDataMax:function(o){this._max=o;this._onExtremaChange();this._coordinator.emit("renderall",this._getInternalData());return this},setDataMin:function(o){this._min=o;this._onExtremaChange();this._coordinator.emit("renderall",this._getInternalData());return this},setCoordinator:function(o){this._coordinator=o},_getInternalData:function(){return{max:this._max,min:this._min,data:this._data,radi:this._radi}},getData:function(){return this._unOrganizeData()}};return n})();var h=(function j(){var p=function(q){var s=q.gradient||q.defaultGradient;var v=document.createElement("canvas");var u=v.getContext("2d");v.width=256;v.height=1;var t=u.createLinearGradient(0,0,256,1);for(var r in s){t.addColorStop(r,s[r])}u.fillStyle=t;u.fillRect(0,0,256,1);return u.getImageData(0,0,256,1).data};var o=function(s,t){var v=document.createElement("canvas");var r=v.getContext("2d");var q=s;var w=s;v.width=v.height=s*2;if(t==1){r.beginPath();r.arc(q,w,s,0,2*Math.PI,false);r.fillStyle="rgba(0,0,0,1)";r.fill()}else{var u=r.createRadialGradient(q,w,s*t,q,w,s);u.addColorStop(0,"rgba(0,0,0,1)");u.addColorStop(1,"rgba(0,0,0,0)");r.fillStyle=u;r.fillRect(0,0,2*s,2*s)}return v};var n=function(u){var B=[];var t=u.min;var x=u.max;var C=u.radi;var u=u.data;var q=Object.keys(u);var r=q.length;while(r--){var s=q[r];var y=Object.keys(u[s]);var A=y.length;while(A--){var w=y[A];var z=u[s][w];var v=C[s][w];B.push({x:s,y:w,value:z,radius:v})}}return{min:t,max:x,data:B}};function m(t){var q=t.element;var u=this.shadowCanvas=document.createElement("canvas");var s=this.canvas=t.canvas||document.createElement("canvas");var r=this._renderBoundaries=[10000,10000,0,0];var v=getComputedStyle(t.element)||{};s.className="heatmap-canvas";this._width=s.width=u.width=+(v.width.replace(/px/,""));this._height=s.height=u.height=+(v.height.replace(/px/,""));this.shadowCtx=u.getContext("2d");this.ctx=s.getContext("2d");s.style.cssText=u.style.cssText="position:absolute;left:0;top:0;";q.style.position="relative";q.appendChild(s);this._palette=p(t);this._templates={};this._setStyles(t)}m.prototype={renderPartial:function(q){this._drawAlpha(q);this._colorize()},renderAll:function(q){this._clear();this._drawAlpha(n(q));this._colorize()},_updateGradient:function(q){this._palette=p(q)},updateConfig:function(q){if(q.gradient){this._updateGradient(q)}this._setStyles(q)},setDimensions:function(r,q){this._width=r;this._height=q;this.canvas.width=this.shadowCanvas.width=r;this.canvas.height=this.shadowCanvas.height=q},_clear:function(){this.shadowCtx.clearRect(0,0,this._width,this._height);this.ctx.clearRect(0,0,this._width,this._height)},_setStyles:function(q){this._blur=(q.blur==0)?0:(q.blur||q.defaultBlur);if(q.backgroundColor){this.canvas.style.backgroundColor=q.backgroundColor}this._opacity=(q.opacity||0)*255;this._maxOpacity=(q.maxOpacity||q.defaultMaxOpacity)*255;this._minOpacity=(q.minOpacity||q.defaultMinOpacity)*255;this._useGradientOpacity=!!q.useGradientOpacity},_drawAlpha:function(v){var u=this._min=v.min;var B=this._max=v.max;var v=v.data||[];var s=v.length;var t=1-this._blur;while(s--){var F=v[s];var D=F.x;var A=F.y;var z=F.radius;var E=Math.min(F.value,B);var r=D-z;var q=A-z;var C=this.shadowCtx;var w;if(!this._templates[z]){this._templates[z]=w=o(z,t)}else{w=this._templates[z]}C.globalAlpha=(E-u)/(B-u);C.drawImage(w,r,q);if(r<this._renderBoundaries[0]){this._renderBoundaries[0]=r}if(q<this._renderBoundaries[1]){this._renderBoundaries[1]=q}if(r+2*z>this._renderBoundaries[2]){this._renderBoundaries[2]=r+2*z}if(q+2*z>this._renderBoundaries[3]){this._renderBoundaries[3]=q+2*z}}},_colorize:function(){var w=this._renderBoundaries[0];var u=this._renderBoundaries[1];var B=this._renderBoundaries[2]-w;var z=this._renderBoundaries[3]-u;var G=this._width;var A=this._height;var r=this._opacity;var I=this._maxOpacity;var C=this._minOpacity;var v=this._useGradientOpacity;if(w<0){w=0}if(u<0){u=0}if(w+B>G){B=G-w}if(u+z>A){z=A-u}var J=this.shadowCtx.getImageData(w,u,B,z);var H=J.data;var E=H.length;var F=this._palette;for(var D=3;D<E;D+=4){var s=H[D];var t=s*4;if(!t){continue}var q;if(r>0){q=r}else{if(s<I){if(s<C){q=C}else{q=s}}else{q=I}}H[D-3]=F[t];H[D-2]=F[t+1];H[D-1]=F[t+2];H[D]=v?F[t+3]:q}J.data=H;this.ctx.putImageData(J,w,u);this._renderBoundaries=[1000,1000,0,0]},getValueAt:function(r){var w;var t=this.shadowCtx;var s=t.getImageData(r.x,r.y,1,1);var v=s.data[3];var q=this._max;var u=this._min;w=(Math.abs(q-u)*(v/255))>>0;return w},getDataURL:function(){return this.canvas.toDataURL()}};return m})();var e=(function b(){var m=false;if(c.defaultRenderer==="canvas2d"){m=h}return m})();var i={merge:function(){var m={};var n=arguments.length;for(var p=0;p<n;p++){var q=arguments[p];for(var o in q){m[o]=q[o]}}return m}};var f=(function k(){var m=(function o(){function q(){this.cStore={}}q.prototype={on:function(s,u,r){var t=this.cStore;if(!t[s]){t[s]=[]}t[s].push((function(v){return u.call(r,v)}))},emit:function(u,t){var w=this.cStore;if(w[u]){var r=w[u].length;for(var s=0;s<r;s++){var v=w[u][s];v(t)}}}};return q})();var p=function(r){var s=r._renderer;var t=r._coordinator;var q=r._store;t.on("renderpartial",s.renderPartial,s);t.on("renderall",s.renderAll,s);t.on("extremachange",function(u){r._config.onExtremaChange&&r._config.onExtremaChange({min:u.min,max:u.max,gradient:r._config.gradient||r._config.defaultGradient})});q.setCoordinator(t)};function n(){var q=this._config=i.merge(c,arguments[0]||{});this._coordinator=new m();if(q.plugin){var s=q.plugin;if(!c.plugins[s]){throw new Error("Plugin '"+s+"' not found. Maybe it was not registered.")}else{var r=c.plugins[s];this._renderer=new r.renderer(q);this._store=new r.store(q)}}else{this._renderer=new e(q);this._store=new g(q)}p(this)}n.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(q){this._config=i.merge(this._config,q);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(q){if(this._store.getValueAt){return this._store.getValueAt(q)}else{if(this._renderer.getValueAt){return this._renderer.getValueAt(q)}else{return null}}}};return n})();var a={create:function(m){return new f(m)},register:function(n,m){c.plugins[n]=m}};return a});var BMapLib=window.BMapLib=BMapLib||{};(function(){var a=BMapLib.HeatmapOverlay=function(c){this.conf=c;this.conf.visible=c.visible===undefined?true:c.visible;this.heatmap=null;this.latlngs=[];this.bounds=null};a.prototype=new BMap.Overlay();a.prototype.initialize=function(f){this._map=f;var c=document.createElement("div");c.style.position="absolute";c.style.top=0;c.style.left=0;c.style.border=0;c.style.width=this._map.getSize().width+"px";c.style.height=this._map.getSize().height+"px";this.conf.element=c;if(!b()){return c}f.getPanes().mapPane.appendChild(c);this.conf.valueField=this.conf.valueField||"count";this.heatmap=h337.create(this.conf);var e=this;f.addEventListener("resize",function(h){var g=h.size;c.style.width=g.width+"px";c.style.height=g.height+"px";e.heatmap._renderer.setDimensions(g.width,g.height);e.draw()});this._div=c;return c};a.prototype.draw=function(){if(!b()){return}var k=this._map.getBounds();if(k.equals(this.bounds)){return}this.bounds=k;var j=this._map.pointToOverlayPixel(k.getNorthEast()),p=this._map.pointToOverlayPixel(k.getSouthWest()),c=j.y,i=p.x,l=p.y-j.y,o=j.x-p.x;this.conf.element.style.left=i+"px";this.conf.element.style.top=c+"px";this.conf.element.style.width=o+"px";this.conf.element.style.height=l+"px";if(this.latlngs.length>0){this.heatmap.removeData();var n=this.latlngs.length;d={max:this.heatmap._store.getData().max,data:[]};while(n--){var f=this.latlngs[n].latlng;if(!k.containsPoint(f)){continue}var g=this._map.pointToOverlayPixel(f),i=this._map.pointToOverlayPixel(k.getSouthWest()).x,c=this._map.pointToOverlayPixel(k.getNorthEast()).y,e=new BMap.Pixel(g.x-i,g.y-c);var m=this.pixelTransform(e);d.data.push({x:m.x,y:m.y,count:this.latlngs[n].c})}if(this.conf.radiusChangeByZoom){this.heatmap._store._cfgRadius=this.conf.radiusChangeByZoom(this._map.getZoom())}this.heatmap.setData(d)}};a.prototype.pixelTransform=function(f){var c=this.heatmap.width,e=this.heatmap.height;while(f.x<0){f.x+=c}while(f.x>c){f.x-=c}while(f.y<0){f.y+=e}while(f.y>e){f.y-=e}f.x=(f.x>>0);f.y=(f.y>>0);return f};a.prototype.setDataSet=function(j){this.data=j;if(!b()){return}var i=this._map.getBounds();var l={max:j.max,data:[]};var m=j.data,k=m.length;this.latlngs=[];this.heatmap.removeData();if(this.conf.radiusChangeByZoom){this.heatmap._store._cfgRadius=this.conf.radiusChangeByZoom(this._map.getZoom())}while(k--){var f=new BMap.Point(m[k].lng,m[k].lat);this.latlngs.push({latlng:f,c:m[k].count});if(!i.containsPoint(f)){continue}var g=this._map.pointToOverlayPixel(f),h=this._map.pointToOverlayPixel(i.getSouthWest()).x,c=this._map.pointToOverlayPixel(i.getNorthEast()).y,e=new BMap.Pixel(g.x-h,g.y-c);var n=this.pixelTransform(e);l.data.push({x:n.x,y:n.y,count:m[k].count})}this.heatmap.setData(l)};a.prototype.addDataPoint=function(e,g,f){if(!b()){return}if(this.data&&this.data.data){this.data.data.push({lng:e,lat:g,count:f})}var h=new BMap.Point(e,g),c=this.pixelTransform(this._map.pointToOverlayPixel(h));this.heatmap.store.addDataPoint(c.x,c.y,f);this.latlngs.push({latlng:h,c:f})};a.prototype.toggle=function(){if(!b()){return}if(this.conf.visible===true){this.conf.visible=false}else{this.conf.visible=true}if(this.conf.visible){this.conf.element.style.display="block"}else{this.conf.element.style.display="none"}};a.prototype.setOptions=function(c){if(!b()){return}for(var e in c){if(e=="radius"){this.heatmap._store._cfgRadius=c[e]}if(e=="opacity"){c[e]=c[e]/100}}this.heatmap.configure(c);if(this.data){this.setDataSet(this.data)}};function b(){var c=document.createElement("canvas");return !!(c.getContext&&c.getContext("2d"))}})();