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

265 lines
7.6 KiB
JavaScript

/**
* Igor Ivanov irigm@mail.ru
* [^\x00-\x7F]
*/
this.divsh=document.createElement('div'); //Shadow
divsh.style.cssText="display: none; position: fixed; z-index: 1000; top:0; left:0; height: 100%; width: 100%; background: rgba(0,0,0,0.3);";
var g_count=0;
var g_winCntMsg=null;
var g_events=null;
//Произграть музыку
function beep()
{
let audio = new Audio('/resources/sound/dilin.mp3');
audio.play();
}
//Назначить новое сообщение текущему пользователю (события разбиты по приоритету 0 низкий приоритет > 0 самый высокий)
function takeMessage()
{
g_winCntMsg.showProgressBar();
var data = {
test: ''
};
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.errorCode=='0')
{
alert('Вам присвоено событие для обработки.'); //: "'+data.id+'"
}else
{
alert('Error: '+data.errorMessage);
}
}
g_winCntMsg.hideProgressBar();
}
};
}(this);
req.open("POST", '/monitoring/pscripts/messages.php?fn=2', true);
req.setRequestHeader("Content-type", "text/plain");
req.send(JSON.stringify(data));
}
//Выбор даты времени по щелчке на изображении
function setCalendar(field,img,day)
{
if (typeof field === 'string' || field instanceof String)
field=document.getElementById(field);
if (typeof img === 'string' || img instanceof String)
img=document.getElementById(img);
//Если задано смещение в датах то вставляем эту дату
if(typeof day === 'number')
{
var d = new Date();
d.setDate(d.getDate()+day);
field.value=d.toString();
}
new Calendar({
inputField: field,
dateFormat: "%Y-%m-%d %H:%M:%S",
trigger: img,
align: "Bl",
bottomBar: false,
showTime: true,
//singleClick: true,
onSelect: function(){ this.hide(); }
});
}
//Показать окно настроек (смена подложки и пароля)
function showConfigWidget()
{
this.win=new TWin();
this.win.BuildGUI(10,10);
this.win.setCaption(trt('Settings'));
let str='<div style="width: 100%; height: 100%; padding: 3px; text-align: left;">\n\
<div style="position: relative; padding-bottom:10px;">\n\
<b style="text-align:left; font-weight:bold;">Сменить стиль</b>\n\
<select id="theme-selector" style="width:100%;" onchange="changeTheme();"><option value="1">Тёмная тема</option><option value="2">Светлая тема</option></select>\n\
<b style="text-align:left; font-weight:bold;">'+trt('Substrate')+'</b>\n\
<table border="0" style="width: 100%;"><tr><td style="padding: 2px;">\n\
<select id="SubstrateID" style="width:100%;" onchange="changeMap();"><option value="OpenStreetMap">OpenStreetMap</option><option value="BingAerial">Bing aerial</option><option value="StamenTerrain">Stamen.com terrain</option><option value="GoogleMaps">Google maps</option><option value="GoogleMapsHybrid">Google maps hybrid</option><option value="yandex">Yandex maps</option></select>\n\
</td><td style="padding: 2px; width: 30px;">\n\
<button class="button-secondary" style="width:30px;" onclick="openLayoutsWin();">...</button><br>\n\
</td></tr></table>\n\
</div>\n\
<hr>\n\
<a href="#" id="call_change_pass">'+trt('Change_password')+'</a>\n\
</div>';
this.win.setContent(str);
this.win.setSize("420px","140px");
this.win.setCenter();
this.win.shadow=true;
this.win.hide(false);
document.getElementById('call_change_pass').onclick=function(){return function(){
g_user.changePassword();
};}();
//document.getElementById('id_exit_pass').onclick=function(win){return function(){win.Close();};}(win);
}
//Customize the visual elements on the access level.
function configGUIbyAccessLevel()
{
g_user.loadAccess();
g_user.onUpdate=function(user)
{
if(user.getAccess("Carrier")) //Если это перевозчик
{
deleteHTML('btnTerminalsModels');
deleteHTML('btnRoutes');
deleteHTML('btnRoutesCompanies');
//Скрываю "Сообщения"
//deleteHTML('lblMessages');
deleteHTML('btnMessages');
deleteHTML('btnMessagesUsers');
//Скрываю "Администрирование"
deleteHTML('lblAdministration');
deleteHTML('btnActions');
deleteHTML('btnAccess');
deleteHTML('btnGroups');
deleteHTML('btnUsers');
deleteHTML('btnHistory');
deleteHTML('btnMetadata');
//Скрываю "Компании"
deleteHTML('lblCompanies');
deleteHTML('btnCompanies');
deleteHTML('btnCompaniesTypes');
//Скрываю "Язык"
deleteHTML('lblLanguage');
deleteHTML('btnLanguage');
deleteHTML('btnTranslation');
}
//Если это автобусная станция то скрываем мониторинг
if(user.getAccess("Station")) //Если это перевозчик
{
//Скрываю "Администрирование"
deleteHTML('lblAdministration');
deleteHTML('btnActions');
deleteHTML('btnAccess');
deleteHTML('btnGroups');
deleteHTML('btnUsers');
deleteHTML('btnHistory');
deleteHTML('btnMetadata');
//Скрываю "Язык"
deleteHTML('lblLanguage');
deleteHTML('btnLanguage');
deleteHTML('btnTranslation');
//Скрываю вкладку мониторинг
//g_tab.delTab(g_tb_monitoring);
}
}
}
//Запросить данные для заполнения в всплывающее окно которое отображается при щелчке на значке на карте
function callObjectData(object_id)
{
$.ajax({
url: '/transit/object.php?object_id='+object_id,
type: "POST",
dataType: "text",
success: function(thiz){return function(data,status){
if(status=='success')
{
//alert('data = '+data);
m_winPP.hideProgressBar();
m_winPP.setContent(data);
}else
{
alert(status);
}
}}(this)
});
}
//Стиль для иконок пломб
function createFatypeStyleDel(feature,red)
{
return function(){
var zoom = g_map.getView().getZoom();
var text = zoom > 6 ? feature.get('name') : '';
var iconStyleG;
iconStyleG = new ol.style.Style({
image: new ol.style.Icon(({
anchor: [0.5, 25],
anchorXUnits: 'fraction',
anchorYUnits: 'pixels',
opacity: 0.75,
src: '../resources/data/icons/'+feature.get('icon_name')
})),
text: new ol.style.Text({
font: '12px helvetica,sans-serif',
text: text,
fill: new ol.style.Fill({color: '#000'}),
stroke: new ol.style.Stroke({color: '#fff', width: 2})
})
});
return iconStyleG;
}
}
//Стиль для иконок пломб
function createFatypeStyleEvent(feature,red)
{
return function(){
var zoom = g_map.getView().getZoom();
//var text = zoom > 6 ? feature.get('name') : '';
var iconStyleG;
iconStyleG = new ol.style.Style({
image: new ol.style.Icon(({
anchor: [0.5, 25],
anchorXUnits: 'fraction',
anchorYUnits: 'pixels',
opacity: 0.75,
src: '../resources/data/icons/'+feature.get('icon_name')
})),
text: new ol.style.Text({
font: '12px helvetica,sans-serif',
//text: text,
fill: new ol.style.Fill({color: '#000'}),
stroke: new ol.style.Stroke({color: '#fff', width: 2})
})
});
return iconStyleG;
}
}