//Класс для отображения и обработки сообщения пользователя class TUserMessage { constructor(parent){ this.id=null; this.parent = parent; this.win = null; } //Отметить сообщение как обработанное MarkAsProcessed(id) { var description=document.getElementById("msg_desc").value; var data = { id: id, description: description }; $.ajax({ url: '/monitoring/pscripts/messages.php?fn=5', data: JSON.stringify(data), contentType: 'application/json; charset=utf-8', type: "POST", dataType: "json", success: function(thiz){return function(data,status){ if(status=='success') { if(data.errorCode=='0') { //alert(trt('Saved')+'!'); thiz.win.Close(); //Обновляю список thiz.parent.Filtering(); }else { alert(trt('Error')+': "'+data.errorMessage); thiz.win.hideProgressBar(); } }else { alert(status); thiz.win.hideProgressBar(); } }}(this) }); this.win.showProgressBar(); } //Загрузить сообщение в окно ShowMessage(id) { if(this.win!=null) this.win.Close(); this.win = new TWin(); this.win.setParent(this.parent.win); this.win.BuildGUI(10,10); this.win.setCaption(trt('Message')); this.win.setSize("600px","400px"); this.win.setCenter(); this.win.hide(false); this.win.showProgressBar(); //Запрашиваю данные для отображения в окне var data = { id: id }; var req=createRequestObject(); req.onreadystatechange = function(thiz) { return function(){ if(req.readyState === 4){ thiz.win.hideProgressBar(); //Всё "OK" скрываю "Progress bar" var data=null; try { data = JSON.parse(req.responseText); } catch (e) { alert(e.message); } if(data!=null) { //Отображаю окошко с необработанными сообщениями var html=''; html+=''; html+=''; html+=''; if(data.action_name!='' && data.action_name!=null) { html+=''; } html+=''; html+=''; html+='
'+trt('Name')+''+trt('Value')+'
'+trt('Theme')+''+trt(data.subject)+'
'+trt('Content')+''+data.text+'
'+trt('Action')+'
'+trt('Additional_Information')+' ('+trt('Action_taken')+')'+'
'; thiz.win.setContent(html); //Обработчик события нажатия на кнопку действия var btn = document.getElementById('create_msg_a'); if(btn!=null) { btn.onclick=function(name,settings){ return function(){ if(name=='Create_trip') g_trips.createTrip(settings); else if(name=='Edit_trip') g_trips.editTrip(settings); else alert('Unknown action "'+name+'"!'); }; }(data.action_name,data.action_settings); } } } }; }(this); req.open("POST", '/monitoring/pscripts/messages.php?fn=4', true); req.setRequestHeader("Content-type", "text/plain"); req.send(JSON.stringify(data)); } } class TUserMessages { consctuctor(){ this.win = null; } //this.win.addResizeListener(function(obj){return function(){obj.updateSize();}}(this)); //Update dimensions of the elements (the main table in absolute coordinates). updateSize() { var dv1=document.getElementById("tblMsgContainer"); var dv2=document.getElementById("tblMsgSContainer"); if(dv1!=null && dv2!=null) { dv1.style.width = dv2.offsetWidth+"px"; dv1.style.height = dv2.offsetHeight+"px"; } } //Отобразить окно с сообщениями пользователя ShowMessages() { if(this.win!=null) this.win.Close(); this.win=new TWin(); this.win.BuildGUI(10,10); this.win.setCaption(trt('User_messages')); this.win.setSize("1000px","500px"); this.win.hide(false); var content = ''; content+='
'; content+=''; content+=''; content+=''; content+=''; content+=' '; content+=' '; content+=' '; content+=''; content+='
'+trt('Company')+'
'+trt('Status')+'
'; //Контент content+='
'; content+='
'; content+='
'; content+='
'; content+='
'; content+='
'; this.win.setContent(content); this.win.setCenter(); this.win.addResizeListener(function(thiz){return function(){thiz.updateSize();}}(this)); //Кнопочка фильтровать var obj = document.getElementById("btnfilter_3"); obj.onclick = function(thiz){ return function(){ thiz.Filtering(); };}(this); //Запрашиваю данные для заполнения выпадающего списка компаний this.Filtering(); //Запрашиваю данные для заполнения компании $.ajax({ url: "/monitoring/pscripts/user.php?fn=10", type: "POST", success: function(response) { let b = document.getElementById("sCompany_3"); b.innerHTML += response; } }); } //Запросить данные для отображения в фильтре Filtering() { var data = { state: '' }; 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); } if(data!=null) { if(data.errorMessage !== undefined && data.errorMessage!='') { alert(data.errorMessage); thiz.win.hideProgressBar(); return; } //Отображаю окошко с необработанными сообщениями var html=''; html+=''; for(i=0;i'; //html+=''; html+=''; html+=''; html+=''; /*var userMessage = new TUserMessage(); userMessage.id=data[i].id; thiz.messages.push(userMessage);*/ } html+='
ТемаСодержание
'+data[i].id+''+data[i].subject+''+data[i].text+'
'; var cont=document.getElementById("tblMsgContainer"); cont.innerHTML = html; } thiz.win.hideProgressBar(); } }; }(this); req.open( "GET", '/monitoring/pscripts/messages.php?fn=3&status='+document.getElementById("sEvents_3").value, true ); req.send( null ); this.win.showProgressBar(); } } var g_UserMessages = new TUserMessages(); var g_UserMessage = new TUserMessage(g_UserMessages); //Функция для переодическогой проверки количество сообщений требующих обработки а также кол-во сообщений для текущего пользователя function getAllMessagesCount() { var data = { test: '' }; $.ajax({ url: '/monitoring/pscripts/messages.php?fn=1', data: JSON.stringify(data), contentType: 'application/json; charset=utf-8', type: "POST", dataType: "json", success: function(thiz){return function(data,status){ if(status=='success') { //Отображаю окошко с количеством необработанных сообщений if(g_winCntMsg==null || g_winCntMsg.closed==true) { g_winCntMsg=new TWin(); g_winCntMsg.BuildGUI(20,60); g_winCntMsg.setCaption(trt('Messages')); //this.win.setContent(str); g_winCntMsg.setSize("130px","120px"); //g_winCntMsg.setCenter(); //g_winCntMsg.shadow=true; g_winCntMsg.hide(false); } //g_winCntMsg.setLeftTop(20,60); g_winCntMsg.hide(false); if(g_count!=parseInt(data.count)) { beep(); g_count = parseInt(data.count); } var mCNTUser = parseInt(data.user); var content = ''; content+=trt("Unassigned")+":
"; if(g_count>0){ content+=""; }else{ content+=""; } content+=trt("Designated")+":
"; if(mCNTUser>0){ content+=""; }else{ content+=""; } g_winCntMsg.setContent(content); }else { alert(status); } }}(this) }); } //Запрашиваем каждые 5 секунд var timerId = setInterval(function() { getAllMessagesCount(); }, 5000);