//Список автомобилей class TObjects { constructor(map) { this.objects = []; this.map=map; setInterval(_=>{this.updateData();}, 10000); //Запускаю таймер для обновления объектов раз в 10 секунд setInterval(_=>{this.updateForecastLonLat();}, 500); //Запускаю функцию для перемещения объектов по прогнозному маршруту } //Фильтруем объекты для заполнения в таблицу filtering() { showProgressBar(document.getElementById('div_tbl_monitoring')); let company_id=document.getElementById("company_id_m"); if(company_id==null) { company_id=g_user.company_id; }else { company_id=company_id.value; } let data = { company_id: company_id, cnumber: document.getElementById("cnumber_m").value }; $.ajax({ url: '/monitoring/pscripts/objects.php', data: JSON.stringify(data), contentType: 'application/json; charset=utf-8', type: "POST", dataType: "json", success: function(thiz){return function(data,status){ if(status=='success') { thiz.objects = []; //Удаляю старые объекты //Приходит JSON уже в объектах let features = []; for(let i=0;i'+trt('Object_of_observation')+''+trt('Speed')+''+trt('Date')+''; var theTable = document.getElementById('thetable'); for(i=0;i'; tr.appendChild(td); td = document.createElement('td'); td.style.cssText="text-align: center;"; td.innerHTML=''; tr.appendChild(td); td = document.createElement('td'); td.style.cssText="text-align: center; width:30px;"; td.innerHTML=''; tr.appendChild(td); td = document.createElement('td'); td.style.cursor='pointer'; td.innerHTML=this.objects[i].name; td.onclick=function(object){return function(){object.goToCenter();}}(this.objects[i]); tr.appendChild(td); td = document.createElement('td'); td.style.cssText="white-space:nowrap;"; td.style.cursor='pointer'; if(this.objects[i].speed!=null) td.innerHTML=this.objects[i].speed+' '+trt('km_h'); td.onclick=function(object){return function(){object.goToCenter();}}(this.objects[i]); tr.appendChild(td); td = document.createElement('td'); td.id='date_'+this.objects[i].uid; td.style.cursor='pointer'; td.innerHTML=this.objects[i].date; td.onclick=function(object){return function(){object.goToCenter();}}(this.objects[i]); tr.appendChild(td); /*td = document.createElement('td'); var tros='-'; if(!isNaN(this.objects[i].tros)) tros=this.objects[i].tros +' '+ trt('Flag'); var tros_date='-'; if (typeof this.objects[i].tros_date != 'undefined') tros_date=this.objects[i].tros_date; var bat='-'; if(!isNaN(this.objects[i].bat)) bat= this.objects[i].bat+'%'; var bat_date='-'; if (typeof this.objects[i].bat_date != 'undefined') bat_date=this.objects[i].bat_date; var box='-'; if(!isNaN(this.objects[i].box)) box=this.objects[i].box +' '+ trt('Flag'); var box_date='-'; if (typeof this.objects[i].box_date != 'undefined') box_date=this.objects[i].box_date; td.innerHTML='\ \
'; tr.appendChild(td);*/ theTable.tBodies[0].appendChild(tr); //Формирую раскрывающийся список tr = document.createElement('tr'); tr.id=this.objects[i].id; tr.style.cssText="background-color:var(--back-color-3);display:none"; td = document.createElement('td'); td.colSpan=6; let html=''; html+=''+trt('Geofence_groups')+': '+trt('Edit')+' '+this.objects[i].geofences+'
'; html+=' \ '; for(let j=0;j'; } html+='\ \
'+trt('Terminal')+''+this.objects[i].terminal_name+'
'+this.objects[i].sensors[j].value+''+this.objects[i].sensors[j].type_name+''+this.objects[i].sensors[j].date+'
\ \ \ \ \ \ \ \
\ \ \ \ \ \ \ \ \
'+trt('Route')+', c\ \ \ \ \ \
\
по\ \ \ \ \ \
\
\
\ \ \ \ \
\
\
'; td.innerHTML=html; tr.appendChild(td); theTable.tBodies[0].appendChild(tr); //Кнопка редактировать грепп геозон объекта btn=document.getElementById('object_edit4_'+this.objects[i].uid) btn.onclick=function(thiz,id){ return function(){ var settings=''; myFunction('ObjectsGeofences',settings); }; }(this,this.objects[i].id); //Чекбукс скрыть показать var cell=document.getElementById("object_ch_"+this.objects[i].uid); cell.onclick=function(object){ return function(){ var chb=document.getElementById("object_ch_"+object.uid); object.setVisibility(chb.checked); } }(this.objects[i]); //Кнопка разсрыть список var btn=document.getElementById('object_down_btn_'+this.objects[i].id); btn.onclick=function(tr,thiz,id){ return function(){ var btn=document.getElementById('object_down_btn_'+id); if(btn.src.indexOf("right.png")!=-1) { btn.src = '/resources/images/down.png'; tr.style.display = 'table-row'; }else if(btn.src.indexOf("down.png")!=-1) { btn.src = '/resources/images/right.png'; tr.style.display = 'none'; } }; }(tr,this,this.objects[i].id); /* //При щелчке на ячейку открываем содержимое и перемещаем карту на точку var cell=document.getElementById("cell_"+this.objects[i].id); cell.onclick=function(object){ return function(){ var cell=document.getElementById("cell_data_"+object.id); if(cell.style.display=="none") { cell.style.display="table-cell"; }else{ cell.style.display="none"; } //Пытаемся переместиться на точку на карте 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.objects[i]); */ //При щелчке по иконке календаря отображаем календарь выбора setCalendar("filter_date_route_start_"+this.objects[i].id,"filter_date_route_start_trigger_"+this.objects[i].id,-2); setCalendar("filter_date_route_end_"+this.objects[i].id,"filter_date_route_end_trigger_"+this.objects[i].id); } //Количество элементов в дереве var divCnt = document.getElementById("count_m"); delChild(divCnt); divCnt.appendChild(document.createTextNode(this.objects.length)); //По нажатию на заголовок инвертируем чекбуксы divCnt = document.getElementById("object_ch_M"); divCnt.onclick=function(thiz){ return function(){ thiz.hide(); } }(this); } getObjectByID(id) { var obj=null; for(var i=0;i: '+(new Date(data[i].udate*1000))+'
'; feature.userHTML+=''+trt('Latitude')+': '+data[i].lat+' '+trt('Longitude')+': '+data[i].lon+'
'; feature.userHTML+=''+trt('Speed')+': '+data[i].speed+' '+trt('km_h')+" (GPS: "+data[i].velocity+trt('km_h')+')
'; g_vectorSource.addFeature(feature); } } var pointS=featureL.getGeometry().getCoordinates()[0]; //Коордионаты первой точки в треке var pointE=featureL.getGeometry().getCoordinates()[featureL.getGeometry().getCoordinates().length-1]; //Координаты последней точки //Также создаю иконки старта трека и окончания трека let featureS = new ol.Feature({geometry: new ol.geom.Point(pointS)}); featureS.userID=thiz.id; featureS.setStyle(new ol.style.Style({ image: new ol.style.Icon(({ anchor: [0.5, 37], anchorXUnits: 'fraction', anchorYUnits: 'pixels', opacity: 0.75, src: '../resources/images/istart.png' })) })); g_vectorSource.addFeature(featureS); //Также создаю иконку окончания трека let featureE = new ol.Feature({geometry: new ol.geom.Point(pointE)}); featureE.userID=thiz.id; featureE.setStyle(new ol.style.Style({ image: new ol.style.Icon(({ anchor: [0.5, 37], anchorXUnits: 'fraction', anchorYUnits: 'pixels', opacity: 0.75, src: '../resources/images/istop.png' })) })); g_vectorSource.addFeature(featureE); //Перемещаемся на первую точку маршрута g_map.getView().setCenter(pointS); if(g_map.getView().getZoom()<9) g_map.getView().setZoom(9); }else { thiz.hideObjectTrack(); //Пытаемся спрятать если 0 точек } //Востанавливаю курсор hideProgressBarIco(); } } }; }(this); req.open("POST", '/monitoring/pscripts/track.php', true); req.setRequestHeader("Content-type", "text/plain"); req.send(JSON.stringify(data)); //Курсор ожидание со стрелочкой showProgressBarIco(); } hideObjectTrack() { let delList = []; let features=g_vectorSource.getFeatures(); for(let i=0;i'); // /*var obj=document.getElementById("winPP_mm"); if(this.active==1) { obj.onclick = function(thiz){ return function(){ thiz.deactivation(); }; }(this); }else { obj.style.display="none"; }*/ //alert('/monitoring/pscripts/object.php?object_id='+this.id); $.ajax({ url: '/monitoring/pscripts/object.php?object_id='+this.id, type: "POST", dataType: "text", success: function(thiz){return function(data,status){ if(status=='success') { m_winPP.hideProgressBar(); //m_winPP.setContent(data); var obj=document.getElementById("winPP_m"); if(obj!=null) { obj.innerHTML=data; } m_winPP.setCenter(); }else { alert(status); } }}(this) }); } //Обновить графические элементы (дата если она отображается пользователю) updateGUI() { var obj=document.getElementById('date_'+this.uid); if(obj!=null){ obj.innerHTML=this.date; } if(this.sensors!=null) { for(let i=0;i