BBBinfoBBB
`,
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;
},
};
};