//Класс для отображения и обработки сообщения пользователя
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+='| '+trt('Name')+' | '+trt('Value')+' |
';
html+='| '+trt('Theme')+' | '+trt(data.subject)+' | ';
html+='
| '+trt('Content')+' | '+data.text+' |
';
if(data.action_name!='' && data.action_name!=null)
{
html+='| '+trt('Action')+' | |
';
}
html+='| '+trt('Additional_Information')+' ('+trt('Action_taken')+')'+' | |
';
html+=' |
';
html+='
';
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+=' |
';
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+=''+data[i].id+' | ';
html+=''+data[i].subject+' | ';
html+=''+data[i].text+' | ';
html+='';
/*var userMessage = new TUserMessage();
userMessage.id=data[i].id;
thiz.messages.push(userMessage);*/
}
html+='
';
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);