if (!('eRegistratorLib' in window)) {window['eRegistratorLib'] = {};}
window.eRegistratorLib.scrBlockCreator = {
componentVersion: '_v2',
tpl: {
main: `
`,
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
});
}
}
},
};