fix: json-form-Extension als Superset in base.html konsolidiert
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -51,6 +51,14 @@
|
|||||||
out[k] = v;
|
out[k] = v;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// Checkboxen mit data-type="bool" werden unabhaengig vom parameters-Objekt
|
||||||
|
// ausgelesen, weil unmarkierte Checkboxen beim Serialisieren komplett
|
||||||
|
// fehlen wuerden (kein Feld => kein "false" moeglich).
|
||||||
|
if (elt.querySelectorAll) {
|
||||||
|
elt.querySelectorAll('[data-type="bool"]').forEach(function (field) {
|
||||||
|
out[field.name] = field.checked;
|
||||||
|
});
|
||||||
|
}
|
||||||
xhr.overrideMimeType('text/json');
|
xhr.overrideMimeType('text/json');
|
||||||
return JSON.stringify(out);
|
return JSON.stringify(out);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -306,40 +306,8 @@
|
|||||||
</section>
|
</section>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
htmx.defineExtension('json-form', {
|
// json-form-Extension ist zentral in base.html registriert (eine
|
||||||
onEvent: function (name, evt) {
|
// Definition fuer alle Templates, inkl. data-type="bool"-Handling).
|
||||||
if (name === 'htmx:configRequest') {
|
|
||||||
evt.detail.headers['Content-Type'] = 'application/json';
|
|
||||||
}
|
|
||||||
},
|
|
||||||
encodeParameters: function (xhr, parameters, elt) {
|
|
||||||
var out = {};
|
|
||||||
for (var k in parameters) {
|
|
||||||
var v = parameters[k];
|
|
||||||
var field = elt.matches && elt.matches('[name="' + k + '"]')
|
|
||||||
? elt
|
|
||||||
: elt.querySelector('[name="' + k + '"]');
|
|
||||||
var kind = field && field.dataset ? field.dataset.type : null;
|
|
||||||
if (v === '') {
|
|
||||||
out[k] = null;
|
|
||||||
} else if (kind === 'int') {
|
|
||||||
out[k] = parseInt(v, 10);
|
|
||||||
} else {
|
|
||||||
out[k] = v;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// Checkboxen mit data-type="bool" werden unabhaengig vom parameters-Objekt
|
|
||||||
// ausgelesen, weil unmarkierte Checkboxen beim Serialisieren komplett
|
|
||||||
// fehlen wuerden (kein Feld => kein "false" moeglich).
|
|
||||||
if (elt.querySelectorAll) {
|
|
||||||
elt.querySelectorAll('[data-type="bool"]').forEach(function (field) {
|
|
||||||
out[field.name] = field.checked;
|
|
||||||
});
|
|
||||||
}
|
|
||||||
xhr.overrideMimeType('text/json');
|
|
||||||
return JSON.stringify(out);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
function onModTargetTypeChange(select) {
|
function onModTargetTypeChange(select) {
|
||||||
var form = select.closest('form');
|
var form = select.closest('form');
|
||||||
|
|||||||
Reference in New Issue
Block a user