201 lines
5.8 KiB
JavaScript
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){
|
|
|
|
}
|
|
}
|