diff --git a/templates/game_dashboard.html b/templates/game_dashboard.html index 43a0f41c..1fce0814 100644 --- a/templates/game_dashboard.html +++ b/templates/game_dashboard.html @@ -219,9 +219,8 @@

-
-
+
@@ -1014,8 +1013,9 @@ function switchObjectPanelTab(btn, tab) { // Un seul panneau partagé (voir le commentaire sur son HTML) : à // l'ouverture, mémorise vers quel (targetId) le JSON reconstruit // devra être réécrit, construit une ligne par clé/élément déjà présent -// dans le JSON actuel de cet , puis "OK" sérialise les lignes et -// referme. +// dans le JSON actuel de cet . Pas de bouton "OK" : chaque +// changement de ligne réécrit tout de suite le JSON (saveVarValuePanel), +// exactement comme si on tapait directement dans le champ cible. (function () { var panel = document.getElementById('varValuePanel'); var rowsWrap = document.getElementById('varValueRows'); @@ -1050,14 +1050,21 @@ function switchObjectPanelTab(btn, tab) { if (key !== null) row.querySelector('.varValueKey').value = key; row.querySelector('.varValueType').value = type; row.querySelector('.varValueValue').value = valueTextOf(value, type); - row.querySelector('.varValueRemoveBtn').addEventListener('click', function () { row.remove(); }); + row.querySelector('.varValueRemoveBtn').addEventListener('click', function () { row.remove(); saveVarValuePanel(); }); rowsWrap.appendChild(clone); } window.addVarValueRow = function () { addRowFrom(panel.dataset.mode === 'tableau' ? null : '', ''); + saveVarValuePanel(); }; + // Enregistrement automatique : pas de bouton "OK" — chaque changement + // (clé, type, valeur, ajout/retrait de ligne) réécrit tout de suite le + // JSON dans le champ cible, comme si on tapait directement dedans. + rowsWrap.addEventListener('input', saveVarValuePanel); + rowsWrap.addEventListener('change', saveVarValuePanel); + window.openVarValuePanel = function (targetInputId, mode) { var input = document.getElementById(targetInputId); if (!input) return; @@ -1084,7 +1091,8 @@ function switchObjectPanelTab(btn, tab) { panel.classList.add('hidden'); }; - window.applyVarValuePanel = function () { + function saveVarValuePanel() { + if (panel.classList.contains('hidden')) return; var mode = panel.dataset.mode; var result = mode === 'tableau' ? [] : {}; rowsWrap.querySelectorAll('.varValueRow').forEach(function (row) { @@ -1102,8 +1110,7 @@ function switchObjectPanelTab(btn, tab) { input.value = JSON.stringify(result); input.dispatchEvent(new Event('input', { bubbles: true })); } - closeVarValuePanel(); - }; + } })(); {% endblock %}