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 }); } } }, };