alow more advanced replacements

This commit is contained in:
Dennis Eichhorn 2020-03-01 14:59:36 +01:00
parent 0fe8a12fb8
commit b3673209d7

View File

@ -95,7 +95,7 @@ export class AdvancedInput
} }
} else if (e.keyCode === 13 || e.keyCode === 9) { } else if (e.keyCode === 13 || e.keyCode === 9) {
self.clearDataListSelection(self); self.clearDataListSelection(self);
self.addToResultList(self); self.addToResultList(self, document.activeElement);
} }
}); });
@ -110,7 +110,7 @@ export class AdvancedInput
} }
self.clearDataListSelection(self); self.clearDataListSelection(self);
self.addToResultList(self); self.addToResultList(self, document.activeElement);
jsOMS.removeClass(self.dropdownElement, 'active'); jsOMS.removeClass(self.dropdownElement, 'active');
}); });
}; };
@ -166,6 +166,9 @@ export class AdvancedInput
); );
} }
// set data cache
newRow.firstElementChild.setAttribute('data-data', JSON.stringify(data[i]));
self.dataListBody.appendChild(newRow); self.dataListBody.appendChild(newRow);
self.dataListBody.lastElementChild.addEventListener('focusout', function(e) { self.dataListBody.lastElementChild.addEventListener('focusout', function(e) {
if (e.relatedTarget === null) { if (e.relatedTarget === null) {
@ -254,19 +257,21 @@ export class AdvancedInput
* *
* This can add the selected dropdown elements to a table, badge list etc. depending on the template structure. * This can add the selected dropdown elements to a table, badge list etc. depending on the template structure.
* *
* @param {Object} self This reference * @param {Object} self This reference
* @param {Element} e Element
* *
* @return {void} * @return {void}
* *
* @since 1.0.0 * @since 1.0.0
*/ */
addToResultList(self) { addToResultList(self, e) {
const data = JSON.parse(e.getAttribute('data-data'));
if (self.inputField.getAttribute('data-autocomplete') === 'true') { if (self.inputField.getAttribute('data-autocomplete') === 'true') {
self.inputField.value = document.activeElement.querySelectorAll('[data-tpl-value="' + self.inputField.getAttribute('data-value') + '"]')[0].getAttribute('data-value'); self.inputField.value = jsOMS.getArray(self.inputField.getAttribute('data-value'), data);
} }
if (self.tagElement !== null && self.tagElement.getAttribute('data-active') === 'true') { if (self.tagElement !== null && self.tagElement.getAttribute('data-active') === 'true') {
/** /**
* @todo Orange-Management/jsOMS#71 * @todo Orange-Management/jsOMS#71
* Make badges removable * Make badges removable
@ -280,9 +285,7 @@ export class AdvancedInput
let value = ''; let value = '';
for (let j = 0; j < fieldLength; ++j) { for (let j = 0; j < fieldLength; ++j) {
value = document.activeElement.querySelectorAll('[data-tpl-value="' + fields[j].getAttribute('data-tpl-value') + '"]')[0].getAttribute('data-value'); value = jsOMS.getArray(fields[j].getAttribute('data-tpl-value'), data);
fields[j].setAttribute('data-value', value);
uuid += value; uuid += value;
} }
@ -304,11 +307,23 @@ export class AdvancedInput
for (let j = 0; j < fieldLength; ++j) { for (let j = 0; j < fieldLength; ++j) {
fields[j].appendChild( fields[j].appendChild(
document.createTextNode( document.createTextNode(
document.activeElement.querySelectorAll('[data-tpl-text="' + fields[j].getAttribute('data-tpl-text') + '"]')[0].innerText jsOMS.getArray(fields[j].getAttribute('data-tpl-text'), data)
) )
); );
} }
// set innerHtml (e.g. styles) {/path}
const regex = /{\/.*?}/g;
const matches = newTag.firstElementChild.outerHTML.match(regex),
matchLength = matches === null ? 0 : matches.length;
for (let i = 0; i < matchLength; ++i) {
newTag.firstElementChild.outerHTML = newTag.firstElementChild.outerHTML.replace(
matches[i],
jsOMS.getArray(matches[i].substring(1, matches[i].length - 1), data)
);
}
// allow limit // allow limit
if (self.tagElement.childElementCount >= self.tagElement.getAttribute('data-limit') if (self.tagElement.childElementCount >= self.tagElement.getAttribute('data-limit')
&& self.tagElement.getAttribute('data-limit') != 0 && self.tagElement.getAttribute('data-limit') != 0