if (!('eRegistratorLib' in window)) {window['eRegistratorLib'] = {};}
window.eRegistratorLib.scrMessagesCabinet = {
tpl: {
optionRow: `#option_row#`,
optionsBehavior: ``,
messageAdd: `#message_add#`
},
url: 'https://www.srv4you.ru/api/v1/messages_cabinet/ajax/ajax.php',
messages: [],
allMessages: [],
/*
* data = [{id:'', name:'', value:'',}]
* */
init: function(targetId, data, module){
let target = document.getElementById(targetId);
let dataRepl = {};
if (!module){
module = 'cabinet';
}
if (data) {
dataRepl = data;
}
dataRepl.targetId = targetId;
if (target) {
target.innerHTML =
dataRepl.reduce(
(res, element) => {
return res + (Object.keys(element))
.reduce((res1, key1) => {
return res1
.replace((new RegExp('#' + key1 + '#', 'gim')), element[key1])
;
}, this.tpl.optionRow)
}, '')
.replace(new RegExp('#targetId#', 'gim'), targetId)
;
this.setEvent(targetId);
}
},
setEvent: function(targetId){
let that = this;
let target = document.getElementById(targetId);
if (target) {
let forms = target.querySelectorAll('form[data-ids="block-data' + targetId + '"]');
if (forms.length > 0){
for (let form of forms){
form.addEventListener('submit', (ev) => {
ev.returnValue = false;
return false;
});
}
}
let buttons = target.querySelectorAll('button[data-for-ids="block-data' + targetId + '"]');
if (buttons.length > 0){
for (let button of buttons){
button.addEventListener('click', (ev) => {
let element = ev.srcElement;
let parent = element.closest('form[data-ids="block-data' + targetId + '"]');
if (parent) {
let formData = new FormData(parent);
formData.append('action', 'setOption');
let dataEntries = formData.entries();
let data = {};
for(var pair of dataEntries) {
data[pair[0]] = pair[1];
}
console.log(data);
that.go(formData, (result) => {
console.log(result);
if (
('code' in result)
&& (result.code == '200')
){
showWrapWin.show({content:'Изменения записаны'}, 'small');
window.setTimeout(()=>{showWrapWin.close();}, 1000);
} else {
showWrapWin.show({content:'
Изменения НЕ записаны!
'}, 'small');
}
},
(error) => {
if (
(error)
&& ('ERRORS' in error)
&& ('length' in error.ERRORS)
&& (error.ERRORS.length > 0)
) {
showWrapWin.show({
content: 'Ошибка!
',
error: '' + error.ERRORS.join('') + '',
}, 'middle');
}
});
}
});
}
}
}
},
getMessages: function(par, callback, callbackError){
let formData = new FormData();
formData.append('action', 'getMessages');
formData.append('sid', par['sid']);
formData.append('uid', par['uid']);
formData.append('typeClient', par['typeClient']);
formData.append('count', par['count']);
this.go(formData, (result) => {
console.log(result);
if (
('code' in result)
&& (result.code == '200')
&& ('messages' in result)
){
this.messages = result.messages;
if (callback) {callback(result);}
} else {
this.messages = [];
if (callbackError) {callbackError(result);}
}
},
(error) => {
console.log(error);
});
},
getAllMessages: function(par, callback, callbackError){
let formData = new FormData();
formData.append('action', 'getAllMessages');
formData.append('sid', par['sid']);
formData.append('uid', par['uid']);
formData.append('typeClient', par['typeClient']);
formData.append('page', par['page']);
formData.append('count', par['count']);
this.go(formData, (result) => {
console.log(result);
if (
('code' in result)
&& (result.code == '200')
&& ('messages' in result)
){
this.allMessages = result.messages;
if (callback) {callback(result);}
} else {
this.messages = [];
if (callbackError) {callbackError(result);}
}
},
(error) => {
console.log(error);
});
},
setShowSubjects: function(par, callback, callbackError){
let formData = new FormData();
formData.append('action', 'setShowSubjects');
formData.append('uid', par['uid']);
formData.append('url', par['url']);
formData.append('mids', JSON.stringify(par['mids']));
this.go(formData, (result) => {
console.log(result);
if (
('code' in result)
&& (result.code == '200')
&& ('messages' in result)
){
this.messages = result.messages;
if (callback) {callback(result);}
} else {
this.messages = [];
if (callbackError) {callbackError(result);}
}
},
(error) => {
/*
if (
(error)
&& ('ERRORS' in error)
&& ('length' in error.ERRORS)
&& (error.ERRORS.length > 0)
) {
showWrapWin.show({
content: 'Ошибка!
',
error: '' + error.ERRORS.join('') + '',
}, 'middle');
}
*/
console.log(error);
});
},
setShowMessage: function(par, callback, callbackError){
let formData = new FormData();
formData.append('action', 'setShowMessage');
formData.append('uid', par['uid']);
formData.append('url', par['url']);
formData.append('mid', par['mid']);
this.go(formData, (result) => {
console.log(result);
if (
('code' in result)
&& (result.code == '200')
&& ('messages' in result)
){
this.messages = result.messages;
if (callback) {callback(result);}
} else {
this.messages = [];
if (callbackError) {callbackError(result);}
}
},
(error) => {
/*
if (
(error)
&& ('ERRORS' in error)
&& ('length' in error.ERRORS)
&& (error.ERRORS.length > 0)
) {
showWrapWin.show({
content: 'Ошибка!
',
error: '' + error.ERRORS.join('') + '',
}, 'middle');
}
*/
console.log(error);
});
},
go: async function(formData, callback, callbackError){
let url = this.url;
try {
const res = await fetch(url,
{
method: 'POST',
body: formData,
cache: 'no-cache',
}
);
const contentType = res.headers.get('content-type');
if (!contentType || !contentType.includes('application/json')) {
throw new TypeError("Ошибка JSON!");
}
if (!res.ok) {
throw new TypeError("Запрос завершился с ошибкой!");
}
let data = await res.json();
console.log(data);
if ((callback) && (typeof callback == 'function')){
callback(data);
}
} catch (error) {
console.log('Ошибка:' + error);
if ((callbackError) && (typeof callbackError == 'function')){
callbackError({
"ERRORS": [error],
"STATUS": 400
});
}
}
},
};