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;
|
||||
}
|
||||
}
|
||||
// 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);
|
||||
}
|
||||
|
||||
@@ -306,40 +306,8 @@
|
||||
</section>
|
||||
|
||||
<script>
|
||||
htmx.defineExtension('json-form', {
|
||||
onEvent: function (name, evt) {
|
||||
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);
|
||||
}
|
||||
});
|
||||
// json-form-Extension ist zentral in base.html registriert (eine
|
||||
// Definition fuer alle Templates, inkl. data-type="bool"-Handling).
|
||||
|
||||
function onModTargetTypeChange(select) {
|
||||
var form = select.closest('form');
|
||||
|
||||
Reference in New Issue
Block a user