TAddressBlock = function(param) { return { html: `

BBBheaderBBB

BBBinfoBBB
BBBregionBBB
BBBcityBBB
BBBstreetBBB
BBBhouseBBB
BBBofficeBBB
`, objName: param.objName, blockName: param.blockName, infoId: param.infoId, header: param.header, msgIsFlat: `Объяснение разницы между типами Квартира и Коммунальная квартира`, /* Объект для работы с субъектами */ region: {}, /* Объект для работы с пунктами */ city: {}, /* Объект для работы с улицами */ street: {}, /* Объект для работы с домами */ house: {}, /* Объект для работы с офисами */ office: {}, /* Для временного хранения данных по блокам */ data: {}, getHtml: function(){ let infoIdContent = ''; let infoIdDom = document.getElementById(this.infoId); if (infoIdDom) { infoIdContent = infoIdDom.innerHTML; } this.region = new TList({ objName: this.objName + '.region', blockName: this.blockName, elementName: 'region', elementType: 'region', infoId: this.blockName + '_info_address_region', header: 'Субъект РФ *:', title: 'Введите код или часть названия', valueMask: '', placeholder: 'Введите код или часть названия', }); this.city = new TList({ objName: this.objName + '.city', blockName: this.blockName , elementName: 'city', elementType: 'city', infoId: this.blockName + '_info_address_city', header: 'Населенный пункт:', title: 'Введите часть названия', valueMask: '', placeholder: 'Введите часть названия', }); this.street = new TList({ objName: this.objName + '.street', blockName: this.blockName, elementName: 'street', elementType: 'street', infoId: this.blockName + '_info_address_street', header: 'Улица:', title: 'Введите часть названия', valueMask: '', placeholder: 'Введите часть названия', }); this.house = new TList({ objName: this.objName + '.house', blockName: this.blockName, elementName: 'house', elementType: 'house', infoId: this.blockName + '_info_address_house', header: 'Номер дома:', title: 'Введите тип или номер', valueMask: '', placeholder: 'Введите тип или номер', }); this.office = new TRows({ objName: this.objName + '.office', blockName: this.blockName, elementName: 'office', elementType: 'office', infoId: this.blockName + '_info_address_office', header: 'Квартира, офис, помещение и т.д.:', title: 'Введите тип или номер', addTitle: 'Добавить', addText: 'Добавить', typeTitle: 'Введите тип', typeValueMask: '', typePlaceholder: 'Введите тип', numberTitle: 'Введите номер', numberValueMask: '', numberPlaceholder: 'Введите номер', delTitle: 'Удалить строку тип + номер', delText: '', }); window.addEventListener(this.blockName + 'GetData', (ev) => {this.getData(ev, this);}); window.addEventListener(this.blockName + 'SetData', (ev) => {this.setData(ev, this);}); window.addEventListener(this.blockName + 'ClearData', (ev) => {this.clearData(ev, this);}); window.addEventListener(this.blockName + 'ChangeRowsData', (ev) => {this.changeRowsData(ev, this);}); return this.html .replace(new RegExp('BBBobjNameBBB', 'gim'), this.objName) .replace(new RegExp('BBBblockNameBBB', 'gim'), this.blockName) .replace(new RegExp('BBBinfoBBB', 'gim'), infoIdContent) .replace(new RegExp('BBBheaderBBB', 'gim'), this.header) .replace(new RegExp('BBBregionBBB', 'gim'), this.region.getHtml()) .replace(new RegExp('BBBcityBBB', 'gim'), this.city.getHtml()) .replace(new RegExp('BBBstreetBBB', 'gim'), this.street.getHtml()) .replace(new RegExp('BBBhouseBBB', 'gim'), this.house.getHtml()) .replace(new RegExp('BBBofficeBBB', 'gim'), this.office.getHtml()) ; }, /* Обработка события GetData */ getData: function(ev, obj){ if ( ('detail' in ev) &&('elementName' in ev.detail) &&(ev.detail.elementName) &&('elementType' in ev.detail) &&(ev.detail.elementType) &&('element' in ev.detail) &&(ev.detail.element) ){ if (ev.detail.elementType == 'region'){ obj.getRegion(ev.detail.element, obj); } if (ev.detail.elementType == 'city'){ obj.getCity(ev.detail.element, obj); } if (ev.detail.elementType == 'street'){ obj.getStreet(ev.detail.element, obj); } if (ev.detail.elementType == 'house'){ obj.getHouse(ev.detail.element, obj); } if (ev.detail.elementType == 'office'){ obj.getOffice(ev.detail.element, obj); } } }, /* Обработка события SetData */ setData: function(ev, obj){ if ( ('detail' in ev) &&('elementName' in ev.detail) &&(ev.detail.elementName) &&('element' in ev.detail) &&(ev.detail.element) ){ if (ev.detail.elementName == 'region'){ obj.clearData({detail: {elementName: 'city', element: {}}}, obj); obj.setRegion(ev.detail.element, obj); } if (ev.detail.elementName == 'city'){ obj.clearData({detail: {elementName: 'street', element: {}}}, obj); obj.setCity(ev.detail.element, obj); } if (ev.detail.elementName == 'street'){ obj.clearData({detail: {elementName: 'house', element: {}}}, obj); obj.setStreet(ev.detail.element, obj); } if (ev.detail.elementName == 'house'){ obj.clearData({detail: {elementName: 'office', element: {}}}, obj); obj.setHouse(ev.detail.element, obj); } if (ev.detail.elementName == 'office'){ obj.setOffice(ev.detail.element, obj); } let e = new CustomEvent(obj.blockName + 'ChangeAddressData', { bubbles: true, cancelable: true, composed: true, detail: { 'event': ev, 'blockName': obj.blockName, 'elementName': ev.detail.elementName, 'obj': obj, 'data': obj.data, }, }); document.dispatchEvent(e); let ifns = ''; let zip = ''; if ( (obj) &&('data' in obj) ){ if ( ('city' in obj.data) &&(obj.data.city) &&('IFNSUL' in obj.data.city) &&('POSTINDEX' in obj.data.city) ){ if (obj.data.city.IFNSUL) ifns = obj.data.city.IFNSUL; if (obj.data.city.POSTINDEX) zip = obj.data.city.POSTINDEX; } if ( ('street' in obj.data) &&(obj.data.street) &&('IFNSUL' in obj.data.street) &&('POSTINDEX' in obj.data.street) ){ if (obj.data.street.IFNSUL) ifns = obj.data.street.IFNSUL; if (obj.data.street.POSTINDEX) zip = obj.data.street.POSTINDEX; } if ( ('house' in obj.data) &&(obj.data.house) &&('IFNSUL' in obj.data.house) &&('POSTINDEX' in obj.data.house) ){ if (obj.data.house.IFNSUL) ifns = obj.data.house.IFNSUL; if (obj.data.house.POSTINDEX) zip = obj.data.house.POSTINDEX; } } if (obj && ('blockName' in obj)){ let prefix = obj.blockName.replace('serviceAddress', ''); if (obj.blockName.replace('HeadHead', '') != obj.blockName){ prefix = 'HeadHead'; } if (obj.blockName.replace('Declarant', '') != obj.blockName){ prefix = ''; } if (obj.blockName.replace('serviceAddressMany', '') != obj.blockName){ prefix = ''; } let zipDom = document.querySelector('input[data-id="addressInfoZip-' + obj.objName + '"]'); if (zipDom) { zipDom.value = zip; } let ifnsDom = document.querySelector('input[data-id="addressInfoIfns-' + obj.objName + '"]'); if (ifnsDom) { ifnsDom.value = ifns; } let zipDom1 = document.getElementById('addressInfoZip' + prefix); if (zipDom1) { zipDom1.value = zip; } let ifnsDom1 = document.getElementById('addressInfoIfns' + prefix); if (ifnsDom1) { ifnsDom1.value = ifns; } } } }, /* Очистка в поле */ clearData: function(ev, obj){ if ( ('detail' in ev) &&('elementName' in ev.detail) &&(ev.detail.elementName) &&('element' in ev.detail) &&(ev.detail.element) ){ if (ev.detail.elementName == 'region'){ obj.clearRegion(obj); obj.clearCity(obj); obj.clearStreet(obj); obj.clearHouse(obj); obj.clearOffice(obj); obj.data = {}; } if (ev.detail.elementName == 'city'){ obj.data.city = null; obj.clearCity(obj); obj.data.street = null; obj.clearStreet(obj); obj.data.house = null; obj.clearHouse(obj); obj.data.office = null; obj.clearOffice(obj); } if (ev.detail.elementName == 'street'){ obj.data.street = null; obj.clearStreet(obj); obj.data.house = null; obj.clearHouse(obj); obj.data.office = null; obj.clearOffice(obj); } if (ev.detail.elementName == 'house'){ obj.data.house = null; obj.clearHouse(obj); obj.data.office = null; obj.clearOffice(obj); } if (ev.detail.elementName == 'office'){ obj.data.office = null; obj.clearOffice(obj); } let e = new CustomEvent(obj.blockName + 'ChangeAddressData', { bubbles: true, cancelable: true, composed: true, detail: { 'event': {}, 'blockName': obj.blockName, 'obj': obj, 'data': obj.data, 'elementName': ev.detail.elementName, 'elementType': ev.detail.elementType, 'element': ev.detail.element, }, }); document.dispatchEvent(e); } }, changeRowsData: function(ev, obj) { if ( ('detail' in ev) && ('elementType' in ev.detail) && (ev.detail.elementType) && ('data' in ev.detail) && (ev.detail.data) ) { if (ev.detail.elementType == 'office') { obj.data.office = ev.detail.data; let e = new CustomEvent(obj.blockName + 'ChangeAddressData', { bubbles: true, cancelable: true, composed: true, detail: { 'event': ev, 'blockName': obj.blockName, 'elementName': 'office-change', 'obj': obj, 'data': obj.data, }, }); document.dispatchEvent(e); } } }, /* Обработка данных и вызов показа списка Субъектов */ getRegion: function(txt, obj){ let txtValue = txt.value; txtValue = txtValue.toUpperCase(); let txtValueIsEmpty = txtValue.substr(0, 1); if (txtValueIsEmpty == ' '){ txtValue = txtValue.substr(1); } let data = fiasScr.regions.filter(element => { let res = false; let name = element.name.toUpperCase(); if (name.substr(0, txtValue.length) == txtValue){ res = true; } else { if (element.id.replace(txtValue, '') != element.id){ res = true; } } return res; }); let dataDop = fiasScr.regions.filter(element => { let res = false; let name = element.name.toUpperCase(); if (name.substr(1,).replace(txtValue, '') != name.substr(1,)){ res = true; } return res; }); data = data.concat(dataDop); data = data.map(element => { return { 'id': element.id, 'value': encodeURIComponent(JSON.stringify(element)), 'txtValue': element.name + ' (' + element.socrFull + ')', 'txt': element.id + ' - ' + element.name + ' (' + element.socrFull + ')', }; }); let objElement = txt.dataset.elementObj; if (objElement){ eval(objElement + '.showList(data, txt);'); } if (txtValueIsEmpty == ' '){ txt.value = txt.value.substr(1); } }, /* Прием данных от элемента */ setRegion: function(txt, obj){ if (txt.dataset.value){ let value = JSON.parse(decodeURIComponent(txt.dataset.value)); if ( (value) &&('id' in value) ){ obj.region.id = value.id; obj.data.region = value; } } }, /* Очистить элемент */ clearRegion: function(obj){ obj.region.id = null; obj.region.clear(); }, /* Запрос на получение данных */ getCity: function(txt, obj){ if (txt.value.replace(/ /gim, '')){ if (('id' in obj.region) &&(obj.region.id) ){ fiasScr.sendGet(fiasScr.urlCity +'?json=yes'+ '&adr=1' + '&q=' + encodeURIComponent(txt.value) + '&rg=' + obj.region.id , txt, obj.prepareCity); } } }, /* Подготовка данных для списка */ prepareCity: function(data, txt){ if ( (data) &&('rows' in data) ){ let list = data.rows.map(element => { let res = []; for (let nom=1; nom < 6; nom++){ if ( (('LEVEL' + (nom)) in element) &&(element['LEVEL' + (nom)]) && (element['LEVEL' + (nom)] > 1) ){ res.push(element['NAME' + (nom)] + ' (' + element['TYPENAME' + (nom)] + ')'); } } res.reverse(); let txtValue = res.join(', '); let txt = res.join(', '); element.id = element.OBJECTID1; return { 'id': element.OBJECTID1, 'value': encodeURIComponent(JSON.stringify(element)), 'txtValue': txtValue, 'txt': txt, }; }); list.sort((a, b) => { let r = 0; if (a.txtValue > b.txtValue){ r = 1;} if (a.txtValue < b.txtValue){ r = -1;} if (a.txtValue == b.txtValue){ r = 0;} let aLen = a.txtValue.length; let bLen = b.txtValue.length; if ((aLen - bLen) < 0){ r = -1; } if ((aLen - bLen) > 0){ r = 1; } return r; }); let obj = txt.dataset.elementObj; if (obj){ eval(obj + '.showList(list, txt);'); } } }, /* Прием данных от элемента */ setCity: function(txt, obj){ if (txt.dataset.value){ let value = JSON.parse(decodeURIComponent(txt.dataset.value)); if ( (value) &&('id' in value) ){ obj.city.id = value.id; obj.data.city = value; } } else { obj.clearData({detail: {elementName: 'city', element: {}}}, obj); } }, /* Очистить элемент */ clearCity: function(obj){ obj.city.id = null; obj.city.clear(); }, /* Запрос на получение данных */ getStreet: function(txt, obj){ if (txt.value.replace(/ /gim, '')){ if (('id' in obj.region) &&(obj.region.id) ){ fiasScr.sendGet(fiasScr.urlStreet +'?json=yes'+ '&adr=2' + '&q=' + encodeURIComponent(txt.value) + '&rg=' + obj.region.id + '&addrid=' + obj.city.id , txt, obj.prepareStreet); } } }, /* Подготовка данных для списка */ prepareStreet: function(data, txt){ if ( (data) &&('rows' in data) ){ let list = data.rows.map(element => { let res = []; res.push(element.NAME1 + ' (' + element.socrFull + ')'); if ((element.LEVEL2) && (element.LEVEL2>6) && (element.NAME1 + ' (' + element.TYPENAME1 + ')' != element.NAME2 + ' (' + element.TYPENAME2 + ')')){ res.push(element.NAME2 + ' (' + element.TYPENAME2 + ')'); } if ((element.LEVEL3) && (element.LEVEL3>6) && (element.NAME2 + ' (' + element.TYPENAME2 + ')' != element.NAME3 + ' (' + element.TYPENAME3 + ')')){ res.push(element.NAME3 + ' (' + element.TYPENAME3 + ')'); } res.reverse(); let txtValue = res.join(', '); let txt = res.join(', '); element.id = element.OBJECTID1; return { 'id': element.OBJECTID1, 'value': encodeURIComponent(JSON.stringify(element)), 'txtValue': txtValue, 'txt': txt, }; }); let obj = txt.dataset.elementObj; if (obj){ eval(obj + '.showList(list, txt);'); } } }, /* Прием данных от элемента */ setStreet: function(txt, obj){ if (txt.dataset.value){ let value = JSON.parse(decodeURIComponent(txt.dataset.value)); if ( (value) &&('id' in value) ){ obj.street.id = value.id; obj.data.street = value; } } }, /* Очистить элемент */ clearStreet: function(obj){ obj.street.id = null; obj.street.clear(); }, /* Запрос на получение данных */ getHouse: function(txt, obj){ if (txt.value.replace(/ /gim, '')){ if (('id' in obj.region) &&(obj.region.id) ){ fiasScr.sendGet(fiasScr.urlHouse +'?json=yes'+ '&adr=3' + '&q=' + encodeURIComponent(txt.value) + '&rg=' + obj.region.id + '&addrid1=' + obj.city.id + '&addrid2=' + obj.street.id , txt, obj.prepareHouse); } } }, /* Подготовка данных для списка */ prepareHouse: function(data, txt){ if ( (data) &&('rows' in data) ){ let list = data.rows.map(element => { let res = element.socr_full.toLowerCase() + ' ' + element.name + ((element.socr_full1) ? ' ' + element.socr_full1.toLowerCase() : '') + ((element.ADDNUM1) ? ' ' + element.ADDNUM1 : '') + ((element.socr_full2) ? ' ' + element.socr_full2.toLowerCase() : '') + ((element.ADDNUM2) ? ' ' + element.ADDNUM2 : '') ; element.id = element.OBJECTID; return { 'id': element.OBJECTID, 'value': encodeURIComponent(JSON.stringify(element)), 'txtValue': res, 'txt': res, }; }); list.sort((a, b) => { let r = 0; if (a.txtValue > b.txtValue){ r = 1;} if (a.txtValue < b.txtValue){ r = -1;} if (a.txtValue == b.txtValue){ r = 0;} let aLen = a.txtValue.length; let bLen = b.txtValue.length; if ((aLen - bLen) < 0){ r = -1; } if ((aLen - bLen) > 0){ r = 1; } return r; }); let obj = txt.dataset.elementObj; if (obj){ eval(obj + '.showList(list, txt);'); } } }, /* Прием данных от элемента */ setHouse: function(txt, obj){ if (txt.dataset.value){ let value = JSON.parse(decodeURIComponent(txt.dataset.value)); if ( (value) &&('id' in value) ){ obj.house.id = value.id; obj.data.house = value; } } }, /* Очистить элемент */ clearHouse: function(obj){ obj.house.id = null; obj.house.clear(); }, /* Обработка данных и вызов показа списка Типов офисов */ getOffice: function(txt, obj){ let txtValue = txt.value; txtValue = txtValue.toUpperCase(); let txtValueIsEmpty = txtValue.substr(0, 1); if (txtValueIsEmpty == ' '){ txtValue = txtValue.substr(1); } let data = fiasScr.offices.filter(element => { let res = false; let name = element.name.toUpperCase(); let socr = element.socr.toUpperCase(); if (name.substr(0, txtValue.length) == txtValue){ res = true; } if (socr.substr(0, txtValue.length) == txtValue){ res = true; } return res; }); let dataDop = fiasScr.offices.filter(element => { let res = false; let name = element.name.toUpperCase(); let socr = element.socr.toUpperCase(); if ((name.substr(1)).replace(txtValue, '') != name.substr(1)){ res = true; } if ((socr.substr(1)).replace(txtValue, '') != socr.substr(1)){ res = true; } return res; }); data = data.concat(dataDop); data = data.map(element => { return { 'id': element.id, 'value': encodeURIComponent(JSON.stringify(element)), 'txtValue': element.name + ' (' + element.socr + ')', 'txt': element.name + ' (' + element.socr + ')', }; }); let objElement = txt.dataset.elementObj; if (objElement){ eval(objElement + '.showList(data, txt);'); } if (txtValueIsEmpty == ' '){ txt.value = txt.value.substr(1); } }, /* Прием данных от элемента */ setOffice: function(txt, obj){ if (txt.dataset.value){ let value = JSON.parse(decodeURIComponent(txt.dataset.value)); if ( (value) &&('id' in value) ){ obj.office.ids = obj.office.getOffices(); } } }, /* Очистить элемент */ clearOffice: function(obj){ obj.office.ids = null; obj.office.clearBlock(obj.office); let addOfficeDom = document.getElementById(obj.office.addElement.blockName + '_' + obj.office.addElement.elementName); if (addOfficeDom) { addOfficeDom.click(); } }, /* Очистить адресный блок */ clearBlock: function(ev, t){ let objName = t.dataset.objName; if (objName) { let obj = null; eval('obj = ' + objName + ';'); if (obj) { obj.clearData({ bubbles: true, cancelable: true, composed: true, detail: { 'event': {}, 'blockName': obj.blockName, 'obj': obj, 'data': obj.data, 'elementName': 'region', 'elementType': 'region', 'element': {}, }, }, obj); obj.setEnabledElements(obj); let prefix = obj.blockName.replace('serviceAddress', ''); if (obj.blockName.replace('HeadHead', '') != obj.blockName){ prefix = 'HeadHead'; } if (obj.blockName.replace('Declarant', '') != obj.blockName){ prefix = ''; } if (obj.blockName.replace('serviceAddressMany', '') != obj.blockName){ prefix = ''; } let hand = document.querySelector('div[data-id="address-hand-' + objName + '"]'); if (hand) { let inputs = hand.querySelectorAll('input'); for (let element of inputs){ if ((element) && ('value' in element)){ element.value = ''; } } } let hand1 = document.getElementById('address-hand' + prefix); if (hand1) { let inputs = hand1.querySelectorAll('input'); for (let element of inputs){ if ((element) && ('value' in element)){ element.value = ''; } } } let zip = document.querySelector('div[data-id="address-hand-zip-' + objName + '"]'); if (zip) { let inputs = zip.querySelectorAll('input'); for (let element of inputs){ if ((element) && ('value' in element)){ element.value = ''; } } } let zip1 = document.getElementById('address-hand-zip' + prefix); if (zip1) { let inputs = zip1.querySelectorAll('input'); for (let element of inputs){ if ((element) && ('value' in element)){ element.value = ''; } } } let ifns = document.querySelector('div[data-id="address-hand-ifns-' + objName + '"]'); if (ifns) { let inputs = ifns.querySelectorAll('input'); for (let element of inputs){ if ((element) && ('value' in element)){ element.value = ''; } } } let ifns1 = document.getElementById('address-hand-ifns' + prefix); if (ifns1) { let inputs = ifns1.querySelectorAll('input'); for (let element of inputs){ if ((element) && ('value' in element)){ element.value = ''; } } } } } }, setAllData: function(obj, dataCode){ if (!dataCode) return false; let data = null; try { data = JSON.parse(decodeURIComponent(dataCode)); } catch (err){ console.log('Error JSON = '); console.log(dataCode); return false; } if ( (data) &&('visual' in data) &&('region' in data.visual) &&(data.visual.region) ) { obj.setElementVisualData(obj, '_region', data.visual.region); if ( ('datasetValue' in data.visual.region) && (data.visual.region.datasetValue) ) { let regionData = JSON.parse(decodeURIComponent(data.visual.region.datasetValue)); if ((regionData) && ('id' in regionData)) { obj.region.id = regionData.id; } } if (data.visual.city) { obj.setElementVisualData(obj, '_city', data.visual.city); if ( ('datasetValue' in data.visual.city) && (data.visual.city.datasetValue) ) { let cityData = JSON.parse(decodeURIComponent(data.visual.city.datasetValue)); if ((cityData) && ('id' in cityData)) { obj.city.id = cityData.OBJECTID1; } } } if (data.visual.street) { obj.setElementVisualData(obj, '_street', data.visual.street); if ( ('datasetValue' in data.visual.street) && (data.visual.street.datasetValue) ) { let streetData = JSON.parse(decodeURIComponent(data.visual.street.datasetValue)); if ((streetData) && ('id' in streetData)) { obj.street.id = streetData.OBJECTID1; } } } if (data.visual.house) obj.setElementVisualData(obj, '_house', data.visual.house); if (data.visual.offices) obj.setElementVisualOfficiesData(obj, '-office', data.visual.offices); obj.office.changeData({ detail: { elementType: ' ', element: {t: true}, } }, obj.office); } obj.setDisabledElements(obj); }, /* Получить все данные адресного блока */ getAllData: function(obj){ return new Promise((resolve, reject) => { let data = { visual: { region: obj.getElementVisualData(obj, '_region'), city: obj.getElementVisualData(obj, '_city'), street: obj.getElementVisualData(obj, '_street'), house: obj.getElementVisualData(obj, '_house'), offices: obj.getElementVisualOfficiesData(obj, '-office'), zipCode: {}, }, addressInfo: {}, }; let regionData = (( ('datasetValue' in data.visual.region) &&(data.visual.region.datasetValue) )? JSON.parse(decodeURIComponent(data.visual.region.datasetValue)) : null); if (regionData) { console.log(regionData); let objId = null; let cityData = (( ('datasetValue' in data.visual.city) &&(data.visual.city.datasetValue) )? JSON.parse(decodeURIComponent(data.visual.city.datasetValue)) : null); if ((cityData)){ console.log(cityData); objId = cityData.OBJECTID1; } let streetData = (( ('datasetValue' in data.visual.street) &&(data.visual.street.datasetValue) )? JSON.parse(decodeURIComponent(data.visual.street.datasetValue)) : null); if ((streetData)){ console.log(streetData); objId = streetData.OBJECTID1; } if ( ('id' in regionData) && (regionData.id) && (objId) ) { fiasScr.sendGet(fiasScr.urlAddrInfo + '?json=yes' + '&adr=10' + '&t=a' + '&rg=' + regionData.id + '&objid=' + objId , null, (dataRes) => { data.addressInfo = dataRes; let houseData = (( ('datasetValue' in data.visual.house) &&(data.visual.house.datasetValue) )? JSON.parse(decodeURIComponent(data.visual.house.datasetValue)) : null); if ((houseData)){ console.log(houseData); houseId = houseData.OBJECTID; fiasScr.sendGet(fiasScr.urlAddrInfo + '?json=yes' + '&adr=10' + '&t=h' + '&rg=' + regionData.id + '&objid=' + houseId , null, (houseRes) => { if (houseRes) { if ('dop' in houseRes) { data.addressInfo.dop = houseRes.dop; } if ('fnsFl' in houseRes) { data.addressInfo.fnsFl = houseRes.fnsFl; } if ('fnsUl' in houseRes) { data.addressInfo.fnsUl = houseRes.fnsUl; } if (('mun' in houseRes) && ('0' in houseRes.mun)) { data.addressInfo.mun = houseRes.mun; } if ('obj' in houseRes) { data.addressInfo.obj = houseRes.obj; } } resolve(data); }); } else { resolve(data); } }); } else { console.log('regionData.id = ' + regionData.id); console.log('objId = ' + objId); reject('Адрес не найден'); } } else { reject('Не хватает параметров'); } }); }, /* Установить данные элемента */ setElementVisualData: function(obj, elementName, data) { let blockDom = document.getElementById(obj.blockName); let elementDom = blockDom.querySelector('[id="' + obj.blockName + elementName + '"]'); if (elementDom) { elementDom.dataset.value = data.datasetValue; elementDom.dataset.txtValue = ((data.datasetValue) ? data.datasetTxtValue : ''); elementDom.value = ((data.datasetValue) ? data.datasetTxtValue : ''); } }, /* Установить данные офиса */ setElementVisualOfficiesData: function(obj, elementName, data){ obj.office.clearBlock(obj.office); console.log('setElementVisualOfficiesData = '); console.log(data); if (data.length>0){ for (element of data){ if ( (element.type.datasetValue) &&(element.type.datasetTxtValue) &&(element.number.datasetValue) &&(element.number.datasetTxtValue) ) { obj.office.addRow(null, obj.office, { typeDatasetValue: element.type.datasetValue, typeDatasetTxtValue: element.type.datasetTxtValue, numberDatasetValue: element.number.datasetValue, numberDatasetTxtValue: element.number.datasetTxtValue, numberDisabled: ' ', }); } } } }, /* Получить данные элемента */ getElementVisualData: function(obj, elementName) { let blockDom = document.getElementById(obj.blockName); let res = {}; let elementDom = blockDom.querySelector('[id="' + obj.blockName + elementName + '"]'); if (elementDom) { res.datasetValue = elementDom.dataset.value; res.datasetTxtValue = elementDom.dataset.txtValue; } return res; }, /* Получить данные по офисам */ getElementVisualOfficiesData: function(obj, elementName) { let res = []; if ((Object.keys(obj.office.rows)).length>0){ for (let key in obj.office.rows){ let typeId = obj.blockName + '_officerow' + key.replace(/[^0-9]/gim, '') + 'type' ; let typeRes = {}; let typeDom = document.getElementById(typeId); if (typeDom) { typeRes.datasetValue = typeDom.dataset.value; typeRes.datasetTxtValue = typeDom.dataset.txtValue; }; let numberId = obj.blockName + '_officerow' + key.replace(/[^0-9]/gim, '') + 'number' ; let numberRes = {}; let numberDom = document.getElementById(numberId); if (numberDom) { numberRes.datasetValue = numberDom.dataset.value; numberRes.datasetTxtValue = numberDom.value; }; res.push({type: typeRes, number: numberRes}); } } return res; }, setDisabledElements: function(obj){ let blockName = obj.blockName; let adr = document.getElementById(blockName); if (adr) { let objInp = adr.querySelectorAll('input'); let objDel = adr.querySelectorAll('a[class="a-del-icon"]'); let objAdd = adr.querySelectorAll('a[class="a-add-icon"]'); if (objInp) { for (let element of objInp){ element.disabled = 'disabled'; element.dataset.titleold = element.title; element.title = 'Для редактирования нужно Очистить адресный блок'; } } if (objDel) { for (let element of objDel){ element.style.pointerEvents = 'none'; } } if (objAdd) { for (let element of objAdd){ element.style.pointerEvents = 'none'; } } } }, setEnabledElements: function(obj){ let blockName = obj.blockName; let adr = document.getElementById(blockName); if (adr) { let objInp = adr.querySelectorAll('input'); let objDel = adr.querySelectorAll('a[class="a-del-icon"]'); let objAdd = adr.querySelectorAll('a[class="a-add-icon"]'); if (objInp) { for (let element of objInp){ element.disabled = ''; element.title = element.dataset.titleold; } } if (objDel) { for (let element of objDel){ element.style.pointerEvents = 'all'; } } if (objAdd) { for (let element of objAdd){ element.style.pointerEvents = 'all'; } } } }, }; };