TTypeNumber = function(param) { return { html: `
BBBinfoBBB
BBBtypeHtmlBBB
BBBnumberHtmlBBB
BBBdelHtmlBBB
`, objName: param.objName, blockName: param.blockName, elementName: param.elementName, elementType: param.elementType, infoId: param.infoId, header: param.header, title: param.title, typeTitle: param.typeTitle, typeValueMask: param.typeValueMask, typePlaceholder: param.typePlaceholder, numberTitle: param.numberTitle, numberValueMask: param.numberValueMask, numberPlaceholder: param.numberPlaceholder, delTitle: param.delTitle, delText: param.delText, delRowNom: param.delRowNom, typeElement: null, delElement: null, numberElement: null, getHtml: function(){ let infoIdContent = ''; let infoIdDom = document.getElementById(this.infoId); if (infoIdDom) { infoIdContent = infoIdDom.innerHTML; } this.typeElement = new TList({ objName: this.objName + '.typeElement', blockName: this.blockName, elementName: this.elementName + 'type', title: this.typeTitle, infoId: null, header: '', valueMask: param.typeValueMask, placeholder: param.typePlaceholder, isRequired: true, datasetValue: ((param.typeDatasetValue) ? param.typeDatasetValue : ''), datasetTxtValue: ((param.typeDatasetTxtValue) ? param.typeDatasetTxtValue : ''), } ); this.numberElement = new TInput({ objName: this.objName + '.numberElement', blockName: this.blockName, elementName: this.elementName + 'number', title: this.numberTitle, infoId: null, header: '', valueMask: param.numberValueMask, placeholder: param.numberPlaceholder, dopAttribute: ((param.numberDisabled) ? param.numberDisabled : 'disabled'), isRequired: true, datasetValue: ((param.numberDatasetValue) ? param.numberDatasetValue : ''), datasetTxtValue: ((param.numberDatasetTxtValue) ? param.numberDatasetTxtValue : ''), } ); this.delElement = new TIconADel({ objName: this.objName + '.delElement', blockName: this.blockName, elementName: this.elementName + 'del', delRowNom: this.delRowNom, title: this.delTitle, text: '', } ); 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 + 'ClickDel', (ev) => {this.clickDel(ev, this);}); let labelDop = ((this.header) ? '' : 'style="display:none;"'); let commentDop = ((infoIdContent) ? '' : 'style="display:none;"'); return this.html .replace(new RegExp('BBBobjNameBBB', 'gim'), this.objName) .replace(new RegExp('BBBblockNameBBB', 'gim'), this.blockName) .replace(new RegExp('BBBelementNameBBB', 'gim'), this.elementName) .replace(new RegExp('BBBelementObjBBB', 'gim'), this.objName) .replace(new RegExp('BBBinfoBBB', 'gim'), infoIdContent) .replace(new RegExp('BBBheaderBBB', 'gim'), this.header) .replace(new RegExp('BBBtitleBBB', 'gim'), this.title) .replace(new RegExp('BBBtypeHtmlBBB', 'gim'), this.typeElement.getHtml()) .replace(new RegExp('BBBnumberHtmlBBB', 'gim'), this.numberElement.getHtml()) .replace(new RegExp('BBBdelHtmlBBB', 'gim'), this.delElement.getHtml()) .replace(new RegExp('BBBlabelDopBBB', 'gim'), labelDop) .replace(new RegExp('BBBcommentDopBBB', 'gim'), commentDop) ; }, getData: 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 == obj.elementName + 'type'){ obj.getTypeData(ev, obj); } } }, 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 == this.elementName + 'type'){ obj.setTypeData(ev, obj); } if (ev.detail.elementName == this.elementName + 'number'){ obj.setNumberData(ev, obj); } } }, 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 == this.elementName + 'type'){ obj.clearTypeData(ev, obj); let numberDom = document.getElementById(obj.blockName + '_' + obj.elementName + 'number'); if (numberDom) { numberDom.disabled = 'disabled'; numberDom.value = ''; numberDom.dataset.value = ''; } } } }, clickDel: 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 == this.elementName + 'del'){ obj.delRow(ev, obj); } } }, getTypeData: function (ev, obj){ let txt = ev.detail.element; let e = new CustomEvent(this.blockName + 'GetData', { bubbles: true, cancelable: true, composed: true, detail: { 'event': ev, 'blockName': obj.blockName, 'elementName':obj.elementName, 'elementType':obj.elementType, 'element': txt, }, }); document.dispatchEvent(e); }, setTypeData: function(ev, obj){ if (ev.detail.element.dataset.value){ let value = JSON.parse(decodeURIComponent(ev.detail.element.dataset.value)); if ( (value) &&('id' in value) ){ obj.typeElement.value = value; if ( (obj.typeElement.value) &&('id' in obj.typeElement.value) ){ let numberDom = document.getElementById(obj.blockName + '_' + obj.elementName + 'number'); if (numberDom) { numberDom.disabled = ''; } } else { let numberDom = document.getElementById(obj.blockName + '_' + obj.elementName + 'number'); if (numberDom) { numberDom.disabled = 'disabled'; numberDom.value = ''; numberDom.dataset.value = ''; } } let e = new CustomEvent(obj.blockName + 'ChangeData', { bubbles: true, cancelable: true, composed: true, detail: { 'event': ev, 'blockName': obj.blockName, 'elementName':obj.elementName, 'elementType':obj.elementType, 'element': ev.detail.element, }, }); document.dispatchEvent(e); } } }, clearTypeData: function(ev, obj){ obj.typeElement.value = null; }, setNumberData: function(ev, obj){ if (ev.detail.element.dataset.value){ let value = JSON.parse(decodeURIComponent(ev.detail.element.dataset.value)); if ( (value) &&('id' in value) ){ obj.numberElement.value = value; let e = new CustomEvent(obj.blockName + 'ChangeData', { bubbles: true, cancelable: true, composed: true, detail: { 'event': ev, 'blockName': obj.blockName, 'elementName':obj.elementName, 'elementType':obj.elementType, 'element': ev.detail.element, }, }); document.dispatchEvent(e); } } }, delRow: function(ev, obj){ let e = new CustomEvent(this.blockName + 'DelRow', { bubbles: true, cancelable: true, composed: true, detail: { 'event': ev, 'blockName': obj.blockName, 'elementName':obj.elementName, 'elementType':this.elementType, 'element': ev.detail.element, }, }); document.dispatchEvent(e); }, getBlockData: function(obj){ let typeElement = document.querySelector('[data-element-id="' + obj.elementName + 'type"]'); let numberElement = document.querySelector('[data-element-id="' + obj.elementName + 'number"]'); let data = { type: (( (typeElement) &&(typeElement.dataset) &&(typeElement.dataset.value) ) ? JSON.parse(decodeURIComponent(typeElement.dataset.value)) : {}), nomber: (( (numberElement) &&(numberElement.dataset) &&(numberElement.dataset.value) ) ? JSON.parse(decodeURIComponent(numberElement.dataset.value)) : {}), }; /* let data = { type: (( ('typeElement' in obj) &&(obj.typeElement) &&(obj.typeElement.value) ) ? obj.typeElement.value : {}), nomber: (( ('numberElement' in obj) &&(obj.numberElement) &&(obj.numberElement.value) ) ? obj.numberElement.value : {}), }; */ return data; }, }; };