Actions
Feature #17972
openJavascript in Forms for Dynamic Update (among others)
Start date:
22.02.2024
Due date:
% Done:
0%
Estimated time:
Discuss:
Prio Planung:
No
Vote:
Description
- New textfield in form for javascript per formelement
- QFQ Variables inside the javascript get replaced (ex: {{id:R0}} = 25, {{SELECT name FROM person WHERE vorname = "Benjamin"}} = Baer)
- New variables for references to make dynamic update possible. Bsp: Form Element: name%d, im Javascript block ref returns a css selector: {{ref:name}} = [data-reference="name%d"]
- All Javascript text get added after the form
<form class="qfq-form"> ... </form> <script> [insert here] </script>
Beispiel script im form:
// document.querySelectorAll("{{&name%d:V}}") # no jquery if($("{{&name%d}}").value === "{{SELECT name FROM person WHERE vorname = "Benjamin"}}") { $("{{&matrikelnr}}").hide() }
Beispiel Ausgabe:
// document.querySelectorAll("[data-reference='name%d']") # no jquery if($("[data-reference='name%d']").value === "Baer") { $("[data-reference='matrikelnr']").hide() }
Anmerkung:
- Fuer die Referenzvariable war urspruenglich
{{ref:<name>}}
vereinbart und nichts gesagt zum Store. - Das Zeichen ':' hinter 'ref' kollidiert mit dem Delimiter fuer Store, Escape, Action ... - nicht gut.
- Neu: Anstelle von
{{ref:...
wird vorgeschlagen (und ist implementiert){{&<name>:V}}
- Das '&' ist in C als Adressoperator bekannt - das passt hier ziemlich gut.
- Der STORE_VAR wurde gewaehlt weil bereits andere System Angaben wie RANDOM, MIMETYPE usw. enthaelt. Der STORE_FORM ist mehr fuer Content gedacht, der STORE_RECORD passt hier gar nicht.
- Mit dem '&' am Anfang sollten Kollisionen sehr unwahrscheinlich sein.
Updated by Benjamin Baer 4 months ago
Feature Request:
Eine Variabel um die Form Id zu bekommen, damit man die selects innerhalb des forms eingrenzen kann.
{{formId:V}}?
- ClientJS in einem templategroup formElement wurde nicht getriggered (kann man testen mit console.log("Hey"))
- Mehrere ClientJS werden concatinated ohne ein newline dazwischen (nicht super schlimm, muss man beachten das man mit ; beendet und nicht wie im modernen js einfach mit linebreak, aber falls du das aendern kannst)
- {{&formelement%d:V}} und {{&formelemnt:V}} wird beides nicht aufgeloest bei einem templategroup formelement
Koenenn wir uns nach UPlan deadline ansehen, das jetzige funktioniert schon gut genug.
Actions