Project

General

Profile

Actions

Feature #5456

closed

TWIG als Template Engine fuer Report Syntax

Added by Carsten Rose about 6 years ago. Updated over 4 years ago.

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

0%

Estimated time:
Discuss:
Prio Planung:
Vote:

Files

qfq-record.txt qfq-record.txt 396 Bytes Carsten Rose, 02.07.2018 15:43
result.png View result.png 18.7 KB Carsten Rose, 02.07.2018 15:43
test.html.twig test.html.twig 112 Bytes Carsten Rose, 02.07.2018 15:43
twig.patch twig.patch 4.86 KB Carsten Rose, 02.07.2018 15:43
display_committee.txt display_committee.txt 1023 Bytes Nicola Chiapolini, 30.07.2018 11:35
display_state.txt display_state.txt 965 Bytes Nicola Chiapolini, 30.07.2018 11:35
screenshot.png View screenshot.png 44.6 KB result of the two display_* elements Nicola Chiapolini, 30.07.2018 11:35
Actions #1

Updated by Carsten Rose almost 6 years ago

  • Target version set to 55
Actions #2

Updated by Benjamin Baer almost 6 years ago

  • Target version changed from 55 to 18.10.3
Actions #3

Updated by Carsten Rose over 5 years ago

  • Assignee changed from Nicola Chiapolini to Elias Villiger
Actions #4

Updated by Carsten Rose over 5 years ago

  • Priority changed from Normal to High
Actions #5

Updated by Carsten Rose over 5 years ago

Anyway, die Anhänge: * twig.patch: Die nötigen Änderungen am QFQ-Source * test.html.twig: Das verwendete Template file * qfq-record.txt: Der Inhalt des QFQ-Record auf der Test-Seite * result.png: Screenshot des Resultats

Zusätzliche Voraussetzung: Twig muss natürlich installiert sein (Paket `php-
twig` in Debian stable).

Finde das sieht schon sehr vielversprechend aus... Was noch fehlt sind
natürlich die UnitTests und die Doku

härzlichi Grüäss und es schöns Wuchenend
Nicola

Actions #6

Updated by Elias Villiger over 5 years ago

Bei Gebrauch von Twig würde ev. die Generalisierung von QFQ etwas verloren gehen:
  • Die einzelnen Felder (row.firstname, row.name, row.link|qfqlink, ...) müssten pro Template jeweils einzeln aufgelistet werden (? - jedenfalls im Fall von speziellen Spalten wie AS _link)
  • Spezielle Spalten wie _Pagee oder versteckte Spalten AS _hidden müssten vermutlich auch einzeln gehandhabt werden (wie qfqLink für AS _link) - je nach angebotener Funktionalität könnte das schnell kompliziert werden.

Die Idee des Templatings finde ich aber sehr attraktiv, da man so einiges an repetitivem Tippen einsparen könnte. Mein Vorschlag wäre, ein QFQ-eigenes Templating anzubieten:

10 {
  sql = SELECT * FROM person
  template = fileadmin/qfqTemplates/standardTable
}

Der User kann dann entsprechende Templates abspeichern, welche in QFQ-Notation gehalten sind, z.B.

head = <table class="table">
tail = </table>
rbeg = <tr>
rend = </tr>
fbeg = <td>
fend = </td>

Bequem wäre auch, wenn man einzelne Felder des Templates überschreiben könnte (Template wird zuerst eingelesen, dann mit zusätzlichen angegebenen Feldern überschrieben):

20 {
  sql = SELECT * FROM person
  template = fileadmin/qfqTemplates/standardTable
  head = <table class="table table-condensed"><tr><th>Id</th><th>Name</th><th>E-Mail</th></tr>
}
Actions #7

Updated by Nicola Chiapolini over 5 years ago

Bei Gebrauch von Twig würde ev. die Generalisierung von QFQ etwas verloren gehen [...]

Korrekt. Aber das ist ja auch ein Stück weit die Idee. Ziel von Template-Engines ist üblicherweise Darstellung von Datenzugriff zu trennen. (d.h. das SQL-Query sollte keine Info zur Darstellung enthalten)

(Aber es wäre natürlich nicht besonders schwierig Templates zu erstellen, die die Darstellung vom Spaltennamen abhängig machen.)

Mein Vorschlag wäre, ein QFQ-eigenes Templating anzubieten

Davon würde ich dringend abraten. Wenn immer möglich sollten wir auf bestehende und etablierte Tools zurückgreifen. (und im Dekanat werden definitiv weiter mit Twig arbeiten, das hat sich bei uns bereits sehr bewährt. Nötigenfalls werden wir das also auch weiterhin selbst reinpatchen)
Falls du konkrete, komplexere Template-Beispiele möchtest, einfach melden.

Bequem wäre auch, wenn man einzelne Felder des Templates überschreiben könnte

Twig bietet die Möglichkeit aus einem Template andere Teil-Templates zu laden. Das ist aber in meinem QFQ-Code noch nicht richtig integriert.

Actions #8

Updated by Elias Villiger over 5 years ago

  • Assignee changed from Elias Villiger to Carsten Rose
Actions #9

Updated by Elias Villiger over 5 years ago

Macht Sinn. Ich dachte, es ginge vor allem darum, den Boilerplate von head/tail/rbeg/... zu reduzieren, aber wenn es um eine Trennung von Design und SQL-Code geht, macht Twig schon Sinn.

Das oben beschriebene "QFQ-eigene Templating" wäre auch nicht wirklich ein "Templating" in dem Sinne, sondern eher ein Auslagern häufiger Darstellungsoptionen zur Wiederverwendung.

Für eigenen meinen Gebrauch von QFQ (geolean) sehe ich keine grossen Anwendungen für Templating im Sinn von Twig; aber da es sich bei euch bewährt, würde mir ein Einblick in euren Umgang damit bestimmt weitere Perspektiven zeigen.

Ich habe das Ticket jetzt wieder Carsten zugewiesen, dann können wir nach seinen Ferien weiterschauen.

Actions #10

Updated by Nicola Chiapolini over 5 years ago

Hier noch zwei komplexere Beispiele für den Einsatz von Twig. (display_committee.txt, display_state.txt und screenshot.png)

Actions #11

Updated by Carsten Rose over 5 years ago

  • Target version changed from 18.10.3 to 18.12.1
Actions #12

Updated by Carsten Rose over 5 years ago

  • Target version changed from 18.12.1 to 141
Actions #13

Updated by Marc Egger almost 5 years ago

  • Assignee changed from Carsten Rose to Marc Egger
  • Priority changed from High to Normal
Actions #14

Updated by Marc Egger almost 5 years ago

  • Due date set to 19.06.2019
Actions #15

Updated by Carsten Rose over 4 years ago

  • Target version changed from 141 to next6
Actions #16

Updated by Carsten Rose over 4 years ago

  • Due date changed from 19.06.2019 to 26.07.2019
Actions #17

Updated by Carsten Rose over 4 years ago

  • Target version changed from next6 to 19.7.1
Actions #18

Updated by Carsten Rose over 4 years ago

  • Status changed from New to Closed
Actions

Also available in: Atom PDF