improve git form update/delete

This commit is contained in:
Dennis Eichhorn 2023-05-24 18:07:28 +00:00
parent bd6c58ddff
commit 0adf8dbf94
3 changed files with 772 additions and 752 deletions

File diff suppressed because it is too large Load Diff

View File

@ -107,7 +107,7 @@ export class GeneralUI
if (this.getAttribute('target') === '_blank' if (this.getAttribute('target') === '_blank'
|| this.getAttribute('data-target') === '_blank' || this.getAttribute('data-target') === '_blank'
|| event.button === 1 || event.button === 1
|| uri.startsWith('https://') || uri.indexOf('://') > 0
) { ) {
window.open(UriFactory.build(uri), '_blank'); window.open(UriFactory.build(uri), '_blank');
} else if (this.getAttribute('data-redirect') !== null) { } else if (this.getAttribute('data-redirect') !== null) {
@ -294,50 +294,39 @@ export class GeneralUI
{ {
if (src.hasAttribute('data-value')) { if (src.hasAttribute('data-value')) {
src.setAttribute('data-value', value); src.setAttribute('data-value', value);
return;
} }
switch (src.tagName.toLowerCase()) { const tagName = src.tagName.toLowerCase();
case 'div': if (tagName === 'input') {
case 'span': if (src.type === 'radio') {
case 'pre': src.checked = false;
case 'article': if (src.value === value) {
case 'section': src.checked = true;
case 'h1':
if (src.hasAttribute('data-tpl-text')) {
break; // prevent overwriting setTextOfElement
} }
} else if (src.type === 'checkbox') {
src.innerHTML = jsOMS.htmlspecialchars_encode(value); src.checked = false;
break; const values = value.split(',');
case 'select': { if (values.includes(src.value)) {
const optionLength = src.options.length; src.checked = true;
for (let i = 0; i < optionLength; ++i) {
if (src.options[i].value === value) {
src.options[i].selected = true;
break;
}
} }
} else {
break; src.value = value;
} }
case 'input': } else if (tagName === 'select') {
if (src.type === 'radio') { const optionLength = src.options.length;
src.checked = false; for (let i = 0; i < optionLength; ++i) {
if (src.value === value) { if (src.options[i].value === value) {
src.checked = true; src.options[i].selected = true;
}
} else if (src.type === 'checkbox') {
src.checked = false;
const values = value.split(',');
if (values.includes(src.value)) {
src.checked = true;
}
}
break; break;
default: }
src.value = jsOMS.htmlspecialchars_decode(value); }
} else if (src.getAttribute('value') !== null) {
src.value = jsOMS.htmlspecialchars_decode(value);
} else {
src.innerHTML = value;
} }
}; };
@ -353,24 +342,17 @@ export class GeneralUI
*/ */
static setTextOfElement (src, value) static setTextOfElement (src, value)
{ {
switch (src.tagName.toLowerCase()) { const tagName = src.tagName.toLowerCase();
case 'select': if (tagName === 'h1') {
break; src.innerHTML = jsOMS.htmlspecialchars_encode(value);
case 'div': } else if (tagName === 'select') {
case 'td': return;
case 'span': } else if (src.getAttribute('value') !== null) {
case 'pre': if (src.value === '') {
case 'article': src.value = jsOMS.htmlspecialchars_decode(value);
case 'section': }
src.innerHTML = value; } else {
break; src.innerHTML = value;
case 'h1':
src.innerHTML = jsOMS.htmlspecialchars_encode(value);
break;
default:
if (src.value === '') {
src.value = jsOMS.htmlspecialchars_decode(value);
}
} }
}; };
@ -389,31 +371,27 @@ export class GeneralUI
return src.getAttribute('data-value'); return src.getAttribute('data-value');
} }
switch (src.tagName.toLowerCase()) { const tagName = src.tagName.toLowerCase();
case 'td': if (tagName === 'input' || src.getAttribute('value') !== null) {
case 'div': if (src.getAttribute('type') === 'radio') {
case 'span': const checked = document.querySelector('input[type=radio][name="' + src.name + '"]:checked');
case 'pre':
case 'article':
case 'section':
case 'h1':
return src.innerText.trim(' ');
default:
if (src.getAttribute('type') === 'radio') {
const checked = document.querySelector('input[type=radio][name="' + src.name + '"]:checked');
if (checked === null) { if (checked === null) {
return ''; return '';
}
src = checked;
} else if (src.getAttribute('type') === 'checkbox') {
if (!src.checked) {
return '';
}
} }
return src.value; src = checked;
} else if (src.getAttribute('type') === 'checkbox') {
if (!src.checked) {
return '';
}
}
return src.value;
} else if (tagName === 'select') {
return src.options[src.selectedIndex].value;
} else {
return src.innerText.trim(' ');
} }
}; };
@ -428,37 +406,31 @@ export class GeneralUI
*/ */
static getTextFromDataSource (src) static getTextFromDataSource (src)
{ {
switch (src.tagName.toLowerCase()) { const tagName = src.tagName.toLowerCase();
case 'td': if (tagName === 'input') {
case 'div': if (src.getAttribute('type') === 'radio') {
case 'span': const checked = document.querySelector('input[type=radio][name="' + src.name + '"]:checked');
case 'pre':
case 'article':
case 'section':
case 'h1':
return src.innerHTML.trim(' ');
case 'select':
return src.options[src.selectedIndex].text;
case 'input':
if (src.getAttribute('type') === 'radio') {
const checked = document.querySelector('input[type=radio][name="' + src.name + '"]:checked');
if (checked === null) { if (checked === null) {
return ''; return '';
}
return document.querySelector('label[for="' + checked.id + '"]').innerText.trim(' ');
} else if (src.getAttribute('type') === 'checkbox') {
if (!src.checked) {
return '';
}
return document.querySelector('label[for="' + src.id + '"]').innerText.trim(' ');
} }
return src.value; return document.querySelector('label[for="' + checked.id + '"]').innerText.trim(' ');
default: } else if (src.getAttribute('type') === 'checkbox') {
return src.value; if (!src.checked) {
return '';
}
return document.querySelector('label[for="' + src.id + '"]').innerText.trim(' ');
}
return src.value;
} else if (tagName === 'select') {
return src.options[src.selectedIndex].text;
} else if (src.getAttribute('value') !== null) {
return src.value;
} else {
return src.innerHTML.trim(' ');
} }
}; };
}; };

View File

@ -533,8 +533,10 @@ export class FormView
} else { } else {
if (typeof elements[i].value !== 'undefined') { if (typeof elements[i].value !== 'undefined') {
value = elements[i].value; value = elements[i].value;
} else if (typeof elements[i].getAttribute('data-value') !== 'undefined') { } else if (elements[i].getAttribute('data-value') !== null) {
value = elements[i].getAttribute('data-value'); value = elements[i].getAttribute('data-value');
} else {
value = elements[i].innerHTML;
} }
} }
@ -587,6 +589,10 @@ export class FormView
if (elements[i].getAttribute('data-value') !== null) { if (elements[i].getAttribute('data-value') !== null) {
elements[i].setAttribute('data-value', ''); elements[i].setAttribute('data-value', '');
} }
if (elements[i].getAttribute('data-name') !== null) {
elements[i].innerHTML = '';
}
} }
}; };
@ -632,9 +638,7 @@ export class FormView
for (let i = 0; i < length; ++i) { for (let i = 0; i < length; ++i) {
if (!elements[i].required && elements[i].value === '') { if (!elements[i].required && elements[i].value === '') {
continue; continue;
} }else if ((elements[i].required && elements[i].value === '')
if ((elements[i].required && elements[i].value === '')
|| (typeof elements[i].pattern !== 'undefined' || (typeof elements[i].pattern !== 'undefined'
&& elements[i].pattern !== '' && elements[i].pattern !== ''
&& !(new RegExp(elements[i].pattern)).test(elements[i].value)) && !(new RegExp(elements[i].pattern)).test(elements[i].value))
@ -705,10 +709,10 @@ export class FormView
{ {
if (e.getAttribute('name') !== null) { if (e.getAttribute('name') !== null) {
return e.getAttribute('name'); return e.getAttribute('name');
} else if (e.getAttribute('id') !== null) {
return e.getAttribute('id');
} else if (e.getAttribute('data-name') !== null) { } else if (e.getAttribute('data-name') !== null) {
return e.getAttribute('data-name'); return e.getAttribute('data-name');
} else if (e.getAttribute('id') !== null) {
return e.getAttribute('id');
} else if (e.getAttribute('type') !== null) { } else if (e.getAttribute('type') !== null) {
return e.getAttribute('type'); return e.getAttribute('type');
} }