- Specialist Tuning now in a separate editor

- typeBadge formatter completed
This commit is contained in:
Josako
2025-11-24 15:54:47 +01:00
parent 95c8282eb8
commit 3815399a7e
10 changed files with 1132 additions and 378 deletions

View File

@@ -363,50 +363,67 @@ document.addEventListener('DOMContentLoaded', function() {
return;
}
// Zoek buttons in de volledige formulier context (niet alleen de container)
const form = document.getElementById(`${containerId}-form`) || document.querySelector('form');
const buttons = form ? form.querySelectorAll('button[onclick*="handleListViewAction"]') :
document.querySelectorAll('button[onclick*="handleListViewAction"]');
// Zoek buttons zo dicht mogelijk bij de tabel met gegeven containerId
// 1. Probeer eerst een expliciet formulier met id="<table_id>-form"
let scopeEl = document.getElementById(`${containerId}-form`);
// 2. Zo niet, gebruik de dichtstbijzijnde .container rond de tabel zelf
if (!scopeEl) {
const tableEl = document.getElementById(containerId);
if (tableEl) {
scopeEl = tableEl.closest('.container') || tableEl.parentElement;
}
}
// 3. Als er nog steeds geen scope is, val dan terug op de hele document-body
const buttons = (scopeEl || document.body)
.querySelectorAll('button[onclick*="handleListViewAction"]');
console.log(`Updating buttons voor ${containerId}, ${buttons.length} buttons gevonden, selectedRow:`, instance.selectedRow);
buttons.forEach(button => {
// Parse the onclick attribute to get the action value and requiresSelection parameter
const onclickAttr = button.getAttribute('onclick');
const match = onclickAttr.match(/handleListViewAction\('([^']+)',\s*(true|false)\)/i);
if (match) {
const actionValue = match[1];
const requiresSelection = match[2].toLowerCase() === 'true';
const onclickAttr = button.getAttribute('onclick') || '';
console.log('ListView _updateActionButtons: inspect button onclickAttr =', onclickAttr);
// Direct toepassen van requiresSelection-check
if (requiresSelection) {
// Controleer of er een geselecteerde rij is
const isDisabled = !instance.selectedRow;
button.disabled = isDisabled;
// Robuustere regex: sta spaties toe en zowel enkele als dubbele quotes
const match = onclickAttr.match(/handleListViewAction\s*\(\s*['"]([^'"\\]+)['"]\s*,\s*(true|false)/i);
if (!match) {
console.warn('ListView _updateActionButtons: geen match gevonden voor handleListViewAction-pattern op deze button');
return;
}
// Voeg/verwijder disabled class voor styling
if (isDisabled) {
button.classList.add('disabled');
} else {
button.classList.remove('disabled');
}
const actionValue = match[1];
const requiresSelection = match[2].toLowerCase() === 'true';
console.log(`Button ${actionValue} updated: disabled=${isDisabled}`);
// Direct toepassen van requiresSelection-check
if (requiresSelection) {
// Controleer of er een geselecteerde rij is
const isDisabled = !instance.selectedRow;
button.disabled = isDisabled;
// Voeg/verwijder disabled class voor styling
if (isDisabled) {
button.classList.add('disabled');
} else {
button.classList.remove('disabled');
}
// Backup check op basis van actions in config (voor achterwaartse compatibiliteit)
const action = instance.config.actions.find(a => a.value === actionValue);
if (action && action.requiresSelection === true && !requiresSelection) {
// Ook controleren op basis van action config
const isDisabled = !instance.selectedRow;
button.disabled = isDisabled;
console.log(`Button ${actionValue} updated: disabled=${isDisabled}`);
}
// Voeg/verwijder disabled class voor styling
if (isDisabled) {
button.classList.add('disabled');
} else {
button.classList.remove('disabled');
}
// Backup check op basis van actions in config (voor achterwaartse compatibiliteit)
const action = instance.config.actions.find(a => a.value === actionValue);
if (action && action.requiresSelection === true && !requiresSelection) {
// Ook controleren op basis van action config
const isDisabled = !instance.selectedRow;
button.disabled = isDisabled;
// Voeg/verwijder disabled class voor styling
if (isDisabled) {
button.classList.add('disabled');
} else {
button.classList.remove('disabled');
}
}
});