if (!('eRegistratorLib' in window)) {window['eRegistratorLib'] = {};} window.eRegistratorLib.scrBlockCreator = { componentVersion: '_v2', tpl: { main: `
#content#
`, component: `
#content#
`, }, key: '1', url: 'https://www.srv4you.ru/api/v1/block_creator/ajax/ajax.php', /* param = { target: DOMObject, // контейнер для размещения блока id: documentId, // ID документа или группы документов из справочника prefix: '', // фраза после каждого поля в данных банкрота - для учета дублей наименований полей, но с разным смыслом options: null || {option1: value1,}, // статический набор текстов персонализации блока } */ create: function(param, data){ let key = (new Date()).getTime() + (('' + Math.random()).split('.'))[1]; if ( ('target' in param) &&(typeof param.target == 'object') &&('id' in param) &&(param.id) ) { param.key = key; let prefix = (('prefix' in param) ? param.prefix : ''); let html = ''; let componentsAll = []; if (param.id in documentBankrotFl){ let doc = documentBankrotFl[param.id]; let id = doc.id.replace(/[^0-9]/gim, ''); let docs = []; if (id > 999) { console.log(doc.components); docs = docs.concat(doc.components); } else { docs.push(id); } let components = { typeBankrot: {docType: [1, 2], all: {}, personal: {}}, typeObject: {docType: [3, 4], all: {}, personal: {}}, }; if (docs.length > 0){ for (let docId of docs){ if (docId in documentBankrotFl){ let docElement = documentBankrotFl[docId]; if (docElement.components.length > 0){ for (let componentId of docElement.components){ if ((docElement.type == 1) || (docElement.type == 2)){ if (!(componentId in components.typeBankrot.all)) components.typeBankrot.all[componentId] = 0; components.typeBankrot.all[componentId]++; } if ((docElement.type == 3) || (docElement.type == 4)){ if (!(componentId in components.typeObject.all)) components.typeObject.all[componentId] = 0; components.typeObject.all[componentId]++; } } } console.log(docElement); } } components.typeBankrot.personal = ((components)=>{ let res = {}; for (let componentId in components) { if (components[componentId] == 1){ res[componentId] = true; } } return res;})(components.typeBankrot.all); components.typeObject.personal = ((components)=>{ let res = {}; for (let componentId in components) { if (components[componentId] == 1){ res[componentId] = true; } } return res;})(components.typeObject.all); for (let docId of docs) { if (docId in documentBankrotFl) { let docElement = documentBankrotFl[docId]; if ((docElement.type == 1) || (docElement.type == 2)) { for (let component of docElement.components) { if ( (component in components.typeBankrot.all) &&(components.typeBankrot.all[component] >1) ){ if (!(componentsAll.find( (c, i, a)=>{ if (c.component == component){ return c; } else { return undefined; }}) )) { let key = (new Date()).getTime() + (('' + Math.random()).split('.'))[1]; componentsAll.push({component: component, container: 'component' + key,}); html += this.tpl.component .replace(/#id#/gim, 'component' + key) .replace(/#content#/gim, '') ; } } } } } } console.log(componentsAll); } } param.target.innerHTML = this.tpl.main .replace(/#id#/gim, 'block' + key) .replace(/#content#/gim, html) ; param.target.dataset.type = 'block'; param.target.dataset.docId = param.id; param.target.dataset.key = key; param.target.dataset.prefix = prefix; param.target.dataset.options = encodeURIComponent(JSON.stringify(param.options)); let mode = 'edit'; if ('blockOptions' in data){ if ((param.id in data.blockOptions) && ('mode' in data.blockOptions[param.id])){ mode = data.blockOptions[param.id].mode; } } let errorComponents = []; for (let component of componentsAll){ let cont = document.getElementById(component.container); let options = {}; if ((component.component + this.componentVersion) in window.eRegistratorLib) { let key = window.eRegistratorLib[component.component + this.componentVersion].create( { target: cont, mode: mode, prefix: prefix, options: options, }, data); cont.dataset.key = key; cont.dataset.prefix = prefix; cont.dataset.type = 'component'; cont.dataset.componentId = component.component; cont.dataset.mode = mode; cont.dataset.options = encodeURIComponent(JSON.stringify(options)); } else { errorComponents.push({component: component, error: 'Not found',}); } } if (errorComponents.length > 0){ console.warn(errorComponents); } } else { key = ''; } return key; }, setData: function(param, data){ if ('target' in param){ let components = param.target.query } }, go: async function(formData, callback, callbackError){ let url = this.url; formData.append('key', this.key); 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 }); } } }, };