Project

General

Profile

Actions

Feature #10120

closed

Form als File

Added by Marc Egger about 4 years ago. Updated about 3 years ago.

Status:
Closed
Priority:
Normal
Assignee:
Marc Egger
Target version:
Start date:
13.02.2020
Due date:
% Done:

0%

Estimated time:
Discuss:
Prio Planung:
Vote:

Description

Prio1 für Nicola!

TODO:
- Beispiel mit Multiline String
- Was hat sich von TOML 0.4 auf 1.0 geandert?
- FormElements > FormElement_ (Einzahl)
- script PHP: Form aus Datenbank lesen und in JSON/TOML abspeichern
- SQL SELECTs in Form rendering mit JSON/TOML auslesen ersetzen

FRAGEN:
- Wie ordnen wir FormElements im TOML?
- immer nach ord?
- was wenn ord in file geändert wurde und dann in QFQ geladen? Automatisch FormElemente neu nach ord ordnen und in file speichern?

Mögliche JSON formatierung von einem Form:

{
  "name" : "personFormular",
  "title" : "Person editieren",
  "sqlAfter" : : "{{INSERT ... }}",
  "..." : "...",
  "..." : "...",
  "formElements" : [
    {
      "name" : "vormane",
      "label" : "Vorname",
      "type" : "text",
      "value" : "{{SELECT p.vorname FROM p AS PERSON where ... }}",
      "sqlAfter" : "..." 
      "currentValue" : "Marc" 
      "..." : "...",
      "..." : "...",
    }]
}

Nice to have: Frontend mit VUE
QFQ Frontend das fuer die Formulare verantwortlich is, mit Vue neu schreiben.

  • Die Kommunikation zwischen Vue und Backend sollte auschliesslich ueber API stattfinden. Das Frontend entscheidet sich, ein Formular zu rendern und holt dann die noetigen Daten zu dem Formular via REST vom Backend
  • Pro Formular gibt es eine JSON struktur die sowohl fuer die Beschreibung des Formulars als auch fuer dessen Inhalte genutzt wird. (dies setzt voraus, dass Formulare nicht mehr in der Datenbank sondern in Dateien gespeichert werden)
    • Beispielsweise existiert das Feld "value" wie bisher. Dieses enthaelt weiterhin die SQL query, die von dem Backend interpretiert wird. Zusaetlzlich enthaelt das JSON Formularelement aber auch noch das Attribut "currentValue", dieses enthaelt dann den Inhalt, der tatsaechlich im Formularelement steht und dem Benutzer angezeigt wird. Beim Submitten eines Formulars wird dann auch das "currentValue" in der gleichen JSON Struktur uebergeben.
  • der name von Formular und Formularelementen dient als eindeutige referenz, bzw. als eindeutige ID. Die namen muessen also weiterhin eindeutig bleiben.
  • das Backend sendet nur die JSON felder mit, die das Frontend benoetigt. Beispielsweise sendet das Backend das "value" feld nicht mit, aber das "currentValue" berechnet er und sendet es in dieser Struktur mit.
  • das Absenden eines Formulars wird wahrscheinlich auch gleich per REST api und nicht mehr ueber POST passieren, damit man ueberall mit der JSON struktur arbeiten kann.
  • Das Parameter Feld wird aufgeloest und die moeglichen Parameter werden direkt attribute des Felds
  • Das Vue Frontend enthaelt das Formular als JSON mit den fuer das Frontend relevanten Attributen.
  • Fuer jeden Typen eines Formularelements wird ein Component von Vue gerendert
  • Die JSON daten zu einem Formularelement werden direkt an das Component weitergereicht.
    • So koennen zwischen Backend und Formularelementen "parameter" definiert werden, ohne dass man am rest vom Code etwas anpassen muss.

Files

toml-format.html toml-format.html 8.88 KB Marc Egger, 18.06.2020 11:35
toml-format.html.pdf View toml-format.html.pdf 67.6 KB Marc Egger, 18.06.2020 11:40
Actions

Also available in: Atom PDF