Files
GEOVizor_PHP/monitoring/jscripts/events.js
2023-11-07 19:51:49 +06:00

201 lines
5.8 KiB
JavaScript

/**
*
*/
//Список событий
class TEvents
{
constructor(map){
this.events = []; //Список событий
}
filtering()
{
var date;
var date_s,date_e;
date_s=document.getElementById("filter_X1_date_start_e").value;
date = new Date(date_s.replace(/-/g, "/"));
date_s=date.getTime()/1000;
if(isNaN(date_s)) date_s='';
date_e=document.getElementById("filter_X1_date_end_e").value;
date = new Date(date_e.replace(/-/g, "/"));
date_e=date.getTime()/1000;
if(isNaN(date_e)) date_e='';
var data = {
active: document.getElementById("active_e").value, //Установленна либо снята пломба
cnumber: document.getElementById("cnumber_e").value, //Гос. номер
tnumber: document.getElementById("tnumber_e").value, //Номер ТД
type: document.getElementById("type_e").value,
date_start: date_s,
date_end: date_e
};
var req=createRequestObject();
req.onreadystatechange = function(thiz)
{
return function(){
if(req.readyState === 4){
var data=null;
try {
data = JSON.parse(req.responseText);
} catch (e) {
alert(e.message);
return;
}
if(data!=null)
{
if(data.errorMessage !== undefined && data.errorMessage!='')
{
alert(data.errorMessage);
return;
}
thiz.events = [];
//Приходит JSON уже в объектах
features = [];
for(i=0;i<data.length;i++)
{
var feature=null;
var lon=parseFloat(data[i].lon);
var lat=parseFloat(data[i].lat);
if(!isNaN(lat) && !isNaN(lon))
{
feature = new ol.Feature({geometry: new ol.geom.Point(ol.proj.transform([lon,lat], 'EPSG:4326','EPSG:3857')),name: data[i].name,icon_name: data[i].icon_name});
feature.setStyle(createFatypeStyleEvent(feature,false));
feature.userType="TEvent";
//feature.userName='terrain';
feature.userID=data[i].id;
features.push(feature);
}
var obj = new TEvent();
obj.feature=feature;
obj.id=data[i].id;
obj.name=data[i].name;
obj.sensor_name=data[i].sensor_name;
obj.lon=parseFloat(data[i].lon);
obj.lat=parseFloat(data[i].lat);
obj.value=data[i].value;
obj.date=data[i].date;
//alert('obj.name = '+obj.name);
/*obj.declaration=data[i].declaration;
obj.icon_name=data[i].icon_name;
obj.lon=parseFloat(data[i].lon);
obj.lat=parseFloat(data[i].lat);
obj.alt=parseFloat(data[i].alt);
obj.utime=parseInt(data[i].utime);
obj.date=data[i].date;
obj.bat=parseFloat(data[i].bat);
obj.bat_date=data[i].bat_date;
obj.tros=parseFloat(data[i].tros);
obj.tros_date=data[i].tros_date;
obj.box=parseFloat(data[i].box);
obj.box_date=data[i].box_date;*/
thiz.events.push(obj);
}
g_vectorSource.clear(false);
g_vectorSource.addFeatures(features);
thiz.fillRezDiv();
}
};
}(this);
}
req.setRequestHeader("Content-type", "text/plain");
req.send(JSON.stringify(data));
req.open("POST", '/transit/events.php', true);
}
//Заполнить результатом выборки DIV в виде таблицы
fillRezDiv()
{
//alert('fillRezDiv');
var div=document.getElementById("div_tbl_e");
delChild(div);
div.innerHTML='<table id="thetable_e" border="0" style="width:100%;" class="SShow"><thead><tr style="background-color: rgb(218, 218, 218);"><th style="width: 1%;">Гос. номер</th><th style="width: 1%;">Тип события</th><th style="width: 1%;">Значение</th><th style="width: 1%;">Дата</th></tr></thead><tbody></tbody></table>';
var theTable = document.getElementById('thetable_e');
for(i=0;i<this.events.length;i++)
{
var tr = document.createElement('tr');
let bgColor='';
if (i%2==0) bgColor='var(--row-color-1)'; else bgColor='var(--row-color-2)';
tr.style.backgroundColor=bgColor;
tr.onmouseover=function(){this.style.backgroundColor='var(--btn-color2)';};
tr.onmouseout=function(val1,val2){return function(){val1.style.backgroundColor=val2;}}(tr,bgColor);
tr.id='cell_e_'+this.events[i].id;
tr.style.cursor='pointer';
var td;
td = document.createElement('td');
td.innerHTML=this.events[i].name;
tr.appendChild(td);
td = document.createElement('td');
td.innerHTML=this.events[i].sensor_name;
tr.appendChild(td);
td = document.createElement('td');
td.innerHTML=this.events[i].value;
tr.appendChild(td);
td = document.createElement('td');
//ts.style.whiteSpace='nowrap';
td.innerHTML=this.events[i].date;
tr.appendChild(td);
theTable.tBodies[0].appendChild(tr);
//При щелчке на ячейку перемещаем карту на точку
var cell=document.getElementById("cell_e_"+this.events[i].id);
cell.onclick=function(object){
return function(){
alert('lon='+object.lon);
if(!isNaN(parseFloat(object.lon)))
{
g_map.getView().setCenter(ol.proj.transform([object.lon,object.lat], 'EPSG:4326','EPSG:3857'));
if(g_map.getView().getZoom()<9)
g_map.getView().setZoom(9);
}
}
}(this.events[i]);
//При щелчке по иконке календаря отображаем календарь выбора
//setCalendar("filter_date_route_start_"+this.events[i].id,"filter_date_route_start_trigger_"+this.events[i].id,-2);
//setCalendar("filter_date_route_end_"+this.events[i].id,"filter_date_route_end_trigger_"+this.events[i].id);
}
//Количество элементов в дереве
var divCnt = document.getElementById("count_e");
delChild(divCnt);
divCnt.appendChild(document.createTextNode(this.events.length));
}
}
//Событие из списка
class TEvent
{
constructor(map){
}
}