var ecologWidget={api:{key:"5a3eceafc279be56",domain:"nwkdivosvit.dnepredu.com",clientIp:"3.17.128.129",url:"https://api.ecomonitoring.info/v1"},config:{container:"ecologWidgetApp",template:"default",position:"center",orientation:"horizontal",type:"graphic",width:0,height:0,surveyPeriod:"1"},requires:{js:{chartsBundle:"https://widget.ecomonitoring.info/js/widget.min.js"},css:{styleUrl:"https://widget.ecomonitoring.info/css/widget/v1/"},html:{templateUrl:"https://widget.ecomonitoring.info/widget/get-template/",template:false}},client:{geoposition:{lat:false,lng:false},ip:false,selPoint:false},loaded:{points:false,pointChecked:false,sensors:false,starter:false,sensorsObjects:{}},mainContainer:false,init:function(){ecologWidget.getConfig();ecologWidget.initRenderWidget();},request:function(url,data,api,method,async,useAuthorize){if(typeof api==="undefined"){api=true;}if(typeof method==="undefined"){method="POST";}if(typeof async==="undefined"){async=true;}if(typeof useAuthorize==="undefined"){useAuthorize=true;}var authData="";url=api?ecologWidget.api.url+url:url;if(method=="POST"&&useAuthorize){authData+="key="+ecologWidget.api.key+"&domain="+ecologWidget.api.domain;if(typeof data!="undefined"&&data!=""){authData+="&"+data;}}var xhr=new XMLHttpRequest();xhr.open(method,url,async);if(method=="POST"){xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded");xhr.overrideMimeType("application/json");}xhr.send(authData);if(xhr.status!=200){console.log(xhr.status+": "+xhr.statusText);return xhr.status;}else{return xhr.responseText;}},getConfig:function(){ecologWidget.mainContainer=document.getElementById(ecologWidget.config.container);if(typeof ecologWidget.mainContainer.dataset.position!=="undefined"){ecologWidget.config.position=ecologWidget.mainContainer.dataset.position;}if(typeof ecologWidget.mainContainer.dataset.orientation!=="undefined"){ecologWidget.config.orientation=ecologWidget.mainContainer.dataset.orientation;}if(typeof ecologWidget.mainContainer.dataset.width!=="undefined"&&ecologWidget.mainContainer.dataset.width>0){ecologWidget.config.width=ecologWidget.mainContainer.dataset.width;}if(typeof ecologWidget.mainContainer.dataset.height!=="undefined"&&ecologWidget.mainContainer.dataset.height>0){ecologWidget.config.height=ecologWidget.mainContainer.dataset.height;}if(typeof ecologWidget.mainContainer.dataset.type!=="undefined"){ecologWidget.config.type=ecologWidget.mainContainer.dataset.type;}if(typeof ecologWidget.mainContainer.dataset.template!=="undefined"){ecologWidget.config.template=ecologWidget.mainContainer.dataset.template;}if(typeof ecologWidget.mainContainer.dataset.defaultCp!=="undefined"){ecologWidget.loaded.pointChecked=ecologWidget.mainContainer.dataset.defaultCp;}ecologWidget.requires.css.styleUrl+=ecologWidget.config.template+"Style.min.css";var addToRequest="";if(ecologWidget.config.container!="ecologWidgetApp"){addToRequest+="/"+ecologWidget.config.container;}ecologWidget.requires.html.template=ecologWidget.request(ecologWidget.requires.html.templateUrl+ecologWidget.config.orientation+"-"+ecologWidget.config.type+addToRequest,"",false,"GET",false);},loadJs:function(callback){Object.keys(ecologWidget.requires.js).map(function(objectKey,index){var value=ecologWidget.requires.js[objectKey];var script=document.createElement("script");script.src=value;script.type="text/javascript";script.onload=function(){callback();};document.head.appendChild(script);});},initRenderWidget:function(){ecologWidget.mainContainer.classList.add(ecologWidget.config.position);ecologWidget.mainContainer.classList.add(ecologWidget.config.orientation);if(ecologWidget.config.orientation=="horizontal"){if(ecologWidget.config.orientation!="fluid"){var styles="";if(ecologWidget.config.width>0){styles+="width:"+ecologWidget.config.width+"px;";}if(ecologWidget.config.height>0){styles+="height:"+ecologWidget.config.height+"px;";}ecologWidget.mainContainer.setAttribute("style",styles);}}else{if(ecologWidget.config.orientation=="vertical"){if(ecologWidget.config.orientation!="fluid"){var styles="display: inline-block;";if(ecologWidget.config.width>0){styles+="max-width:"+ecologWidget.config.width+"px;";}if(ecologWidget.config.height>0){styles+="max-height:"+ecologWidget.config.height+"px;";}ecologWidget.mainContainer.setAttribute("style",styles);}}}ecologWidget.mainContainer.innerHTML=ecologWidget.requires.html.template;var inblockHeight=ecologWidget.config.height-41-21-5;ecologWidget.mainContainer.getElementsByClassName("dashboard")[0].setAttribute("style","height:"+inblockHeight+"px;");var mainWidth=ecologWidget.mainContainer.offsetWidth;if(mainWidth<=600){if(ecologWidget.mainContainer.className.indexOf("w600")<0){ecologWidget.mainContainer.className+=" w600";}}ecologWidget.afterLoad();},jqueryReady:function(){var jq=window.jQuery;},afterSetLocation:function(){var points=JSON.parse(ecologWidget.getControlPoints());ecologWidget.loaded.points=points.data;Object.keys(ecologWidget.loaded.points).map(function(objectKey,index){var value=ecologWidget.loaded.points[objectKey];if(value.nearest&&!ecologWidget.loaded.pointChecked){ecologWidget.loaded.pointChecked=value.id;}});var sensors=JSON.parse(ecologWidget.getSensorsData());ecologWidget.loaded.sensors=sensors.data;ecologWidget.setHtmlData();},afterLoad:function(){ecologWidget.getGeolocation(ecologWidget.afterSetLocation);},updateAllData:function(){var points=JSON.parse(ecologWidget.getControlPoints());ecologWidget.loaded.points=points.data;Object.keys(ecologWidget.loaded.points).map(function(objectKey,index){var value=ecologWidget.loaded.points[objectKey];if(value.nearest&&!ecologWidget.loaded.pointChecked){ecologWidget.loaded.pointChecked=value.id;}});var sensors=JSON.parse(ecologWidget.getSensorsData());ecologWidget.loaded.sensors=sensors.data;ecologWidget.loaded.sensorsObjects={};ecologWidget.setHtmlData();},getGeolocation:function(callback){function success(position){if(typeof position!="undefined"){ecologWidget.client.geoposition.lat=position.coords.latitude;ecologWidget.client.geoposition.lng=position.coords.longitude;ecologWidget.client.ip="0.0.0.0";}callback();}function error(position){var geoPosition=ecologWidget.request("https://api.ipgeolocation.io/ipgeo?apiKey=27239b795cee4bd186fe6a950b3a56bf","",false,"GET",false);if(typeof geoPosition!="undefined"&&geoPosition==401){geoPosition=ecologWidget.request("https://api.ipgeolocation.io/ipgeo?apiKey=ce520bc8b9304b9fb2b880d2844e8241","",false,"GET",false);}if(typeof geoPosition!="undefined"&&geoPosition==401){geoPosition=ecologWidget.request("https://api.ipgeolocation.io/ipgeo?apiKey=52f929a1f968485a9484778091bfcc9e","",false,"GET",false);}if(typeof geoPosition!="undefined"&&geoPosition!=401){geoPosition=JSON.parse(geoPosition);ecologWidget.client.geoposition.lat=geoPosition.latitude;ecologWidget.client.geoposition.lng=geoPosition.longitude;ecologWidget.client.ip=geoPosition.ip;}else{ecologWidget.client.geoposition.lat="48.4647";ecologWidget.client.geoposition.lng="35.0649574";ecologWidget.client.ip="0.0.0.0";}callback();}navigator.geolocation.getCurrentPosition(success,error);},getControlPoints:function(cpid){if(typeof cpid==="undefined"){var coords="";if(ecologWidget.client.geoposition.lat&&ecologWidget.client.geoposition.lng){coords+="lat="+ecologWidget.client.geoposition.lat+"&lng="+ecologWidget.client.geoposition.lng;}return ecologWidget.request("/control-point",coords,true,"POST",false);}},getSensorsData:function(){if(typeof ecologWidget.loaded.pointChecked!=="undefined"&&ecologWidget.loaded.pointChecked){return ecologWidget.request("/control-point/sensors","id="+ecologWidget.loaded.pointChecked,true,"POST",false);}else{return false;}},setHtmlData:function(){if(ecologWidget.loaded.points!==false){ecologWidget.setPointsSelect();}if(ecologWidget.loaded.sensors!==false){ecologWidget.renderSensors();}ecologWidget.mainContainer=document.getElementById(ecologWidget.config.container);ecologWidget.listeners();if(ecologWidget.loaded.starter){clearInterval(ecologWidget.loaded.starter);}var interval=+ecologWidget.config.surveyPeriod*1000*60;if(ecologWidget.loaded.sensors){ecologWidget.loaded.starter=setInterval(ecologWidget.updateSensorsData,interval);}},setPointsSelect:function(){var options="";var city=false;var inshe="";var i=0;Object.keys(ecologWidget.loaded.points).map(function(objectKey,index){var value=ecologWidget.loaded.points[objectKey];if(value.nearest&&!ecologWidget.loaded.pointChecked){var selected="selected";}else{if(ecologWidget.loaded.pointChecked==value.id){var selected="selected";}else{var selected="";}}if((!city||city!=value.city)&&value.city!="Інше"){if(i>0){options+="";}options+="";i++;}else{if(value.city=="Інше"){var disabledOpt=(value.status==0)?"disabled":"";var to=(value.status==0)?" (TO)":"";inshe+="";}}var disabledOpt=(value.status==0)?"disabled":"";var to=(value.status==0)?" (TO)":"";options+="";city=value.city;});if(inshe!=""){options+=""+inshe+"";}ecologWidget.mainContainer.getElementsByTagName("select")[0].innerHTML=options;var pointSelect=ecologWidget.mainContainer.getElementsByTagName("select")[0];var selected=pointSelect.options[pointSelect.selectedIndex].value;var optGroup=pointSelect.options[pointSelect.selectedIndex].parentNode.getAttribute("label");ecologWidget.mainContainer.getElementsByClassName("city")[0].innerHTML=optGroup;},renderSensors:function(){var sensorHtml="";if(ecologWidget.loaded.sensors){Object.keys(ecologWidget.loaded.sensors).map(function(objectKey,index){var value=ecologWidget.loaded.sensors[objectKey];var desc=(value.description!=""&&value.description!=null)?"data-tippy-content='"+value.description+"'":"";var cls=(value.description!=""&&value.description!=null)?"tippy":"";if(ecologWidget.config.type=="graphic"){if(ecologWidget.config.orientation=="horizontal"){sensorHtml+="
"+value.dimension+"
"+value.title+"
";}else{if(ecologWidget.config.orientation=="vertical"){sensorHtml+="
"+value.dimension+"
"+value.title+"
";}}}else{if(ecologWidget.config.type=="text"){if(ecologWidget.config.orientation=="horizontal"){sensorHtml+="
"+value.dimension+"
"+value.title+"
";}else{if(ecologWidget.config.orientation=="vertical"){sensorHtml+="
"+value.title+"
"+value.dimension+"
";}}}}});}else{sensorHtml="
Всі станції перебувають на технічному обслуговуванні
";}ecologWidget.mainContainer.getElementsByClassName("dashboard")[0].innerHTML=sensorHtml;tippy(".tippy",{delay:1000,arrow:true,arrowType:"round",size:"large",duration:500,animation:"scale"});if(ecologWidget.loaded.sensors){ecologWidget.updateSensorsData();}},updateSensorsData:function(){var sensors=[];Object.keys(ecologWidget.loaded.sensors).map(function(objectKey,index){var value=ecologWidget.loaded.sensors[objectKey];sensors.push(value.id);});var data=JSON.parse(ecologWidget.request("/sensor/get-data","sensors="+sensors+"&checkControlPoints="+ecologWidget.loaded.pointChecked,true,"POST",false));if(typeof data.data.currentCP_alive!=="undefined"&&data.data.currentCP_alive===false){ecologWidget.loaded.pointChecked=false;ecologWidget.afterLoad();}Object.keys(data.data).map(function(objectKey,index){if(objectKey=="currentCP_alive"){return;}var value=data.data[objectKey];var sensorPlace=document.getElementById("sensor-"+objectKey);var valueDiv=sensorPlace.getElementsByClassName("valueData")[0];if(value.avg!==""){if(value.type==2){var avg=Math.round(+value.avg*100)/100;}else{var avg=value.avg;}if(typeof avg==="undefined"||avg=="undefined"){avg="-";}valueDiv.getElementsByTagName("span")[0].innerHTML=avg;valueDiv.getElementsByTagName("i")[0].removeAttribute("class");if(value.tendence!=""){valueDiv.getElementsByTagName("i")[0].setAttribute("class",value.tendence);}}else{if(value.type==6){if(typeof value.dataArrow[0]==="undefined"||value.dataArrow[0]=="undefined"){value.dataArrow[0]="-";}valueDiv.getElementsByTagName("span")[0].innerHTML=value.dataArrow[0];}else{if(typeof value.data[0]==="undefined"||value.data[0]=="undefined"){value.data[0]="-";}valueDiv.getElementsByTagName("span")[0].innerHTML=value.data[0];}if(value.tendence!=""){valueDiv.getElementsByTagName("i")[0].setAttribute("class",value.tendence);}}if(value.type==2&&value.graphic&&ecologWidget.config.type=="graphic"){if(sensorPlace.className.indexOf("graphic")<0){sensorPlace.className+=" graphic";}if(value.gdk!=""){var gdk=+value.gdk;var top=gdk*3/2;var color="#00d010";if(avg>=gdk*0.51){color="#ebe500";}if(avg>gdk*0.99){color="#e60000";}}if(typeof ecologWidget.loaded.sensorsObjects["chart-"+objectKey]==="undefined"){var gaugeID=sensorPlace.getElementsByTagName("canvas")[0].getAttribute("id");var majorTicks=[];var highLights=[];var mjb=top/3;var i=0;var old_i=0;while(i<=top){majorTicks.push(i);i+=mjb;if(i<=mjb*3&&i>0){if(i<=mjb*3){var colorH="#e60000";}if(i<=mjb*2){var colorH="#ebe500";}if(i<=mjb){var colorH="#00d010";}highLights.push({from:old_i,to:i,color:colorH});}old_i=i;}ecologWidget.loaded.sensorsObjects["chart-"+objectKey]=new RadialGauge({renderTo:gaugeID,fontTitleSize:"16px",fontTitleWeight:"bold",fontUnitsSize:"13px",fontNumbersSize:"10px",width:80,height:75,minValue:0,value:avg,startAngle:45,ticksAngle:270,valueBox:false,maxValue:top,majorTicks:majorTicks,minorTicks:5,strokeTicks:true,highlights:highLights,colorPlate:"#fff",borderShadowWidth:0,borders:false,colorMajorTicks:"#535353",colorMinorTicks:"#8a8a8a",colorTitle:"#000",colorUnits:"#000",colorNeedle:"#000",colorNeedleEnd:"#000",colorBorderInner:"#fff",colorStrokeTicks:"#7c7c7c",needleType:"line",needleStart:73,needleEnd:102,needleWidth:7,needleCircleSize:15,needleCircleOuter:false,needleCircleInner:false,animation:true,animateOnInit:true,animationDuration:800,animationRule:"linear"}).draw();}else{var chart=ecologWidget.loaded.sensorsObjects["chart-"+objectKey];chart.update({value:avg});}}else{if(value.type==2&&value.graphic&&ecologWidget.config.type!="graphic"){if(sensorPlace.className.indexOf("colorTendence")<0){sensorPlace.className+=" text colorTendence";}}else{if(value.type==6){if(ecologWidget.config.type=="graphic"){if(sensorPlace.className.indexOf("icon")<0){sensorPlace.className+=" icon nonColor";}}else{if(sensorPlace.className.indexOf("text")<0){sensorPlace.className+=" text nonColor";}}}else{if(value.type==7){if(sensorPlace.className.indexOf("text")<0){sensorPlace.className+=" text long nonColor";}}else{if(sensorPlace.className.indexOf("text")<0){sensorPlace.className+=" text nonColor";}}}}}});var date=new Date();date="Оновлено: "+(date.getHours()<10?"0":"")+date.getHours()+":"+(date.getMinutes()<10?"0":"")+date.getMinutes();ecologWidget.mainContainer.getElementsByClassName("date")[0].innerHTML=date;},listeners:function(){var cps=ecologWidget.mainContainer.getElementsByTagName("select")[0];cps.addEventListener("change",ecologWidget.onPointChange);},onPointChange:function(){var pointSelect=ecologWidget.mainContainer.getElementsByTagName("select")[0];var selected=pointSelect.options[pointSelect.selectedIndex].value;var optGroup=pointSelect.options[pointSelect.selectedIndex].parentNode.getAttribute("label");ecologWidget.mainContainer.getElementsByClassName("city")[0].innerHTML=optGroup;ecologWidget.loaded.pointChecked=selected;ecologWidget.updateAllData();}};ecologWidget.loadJs(ecologWidget.init);