Project @ iMath: Issueshttps://project.math.uzh.ch/https://project.math.uzh.ch/favicon.ico?16668783892024-03-28T11:41:14ZProject @ iMath
Redmine QFQ - Feature #18236 (New): MultiForm re order via drag&drophttps://project.math.uzh.ch/issues/182362024-03-28T11:41:14ZZhoujie Li
<p>MultiForm wie subrecord per drag&drop neu anordnern</p> QFQ - Feature #18235 (Priorize): MultiForm add rowshttps://project.math.uzh.ch/issues/182352024-03-28T10:18:34ZZhoujie Li
<p>Es sollte möglich sein in einem Multiform neue Rows hinzuzufügen als button, die Record = 0 sind.(ähnlich wie subrecord einfach das button unterhalb) Die Motivation dahinter ist die Implementierung eines 'Form Wizard', der es ermöglichen schnell neue Formulare zu erstellen. Aber könnte auch für andere use case nützlich sein.</p> QFQ - Feature #18141 (New): In Config/Dynamic neue fill store 'SYSTEM' by SQL ROW mit variablen ...https://project.math.uzh.ch/issues/181412024-03-14T07:18:20ZZhoujie Li
<p>Es wurde herausgestellt, dass man eine neue Config/Dynamic input möchte, indem man den fillstore 'SYSTEM'-Speicher durch SQL-ROW die variablen ersetzt, um beispielsweise pIdUser aus dem system store zu holen anstatt {{feUser}}.</p>
<p>Beispiel<br />SELECT p.id AS pIdUser FROM Person AS p WHERE p.account = '{{feUser:T}}'</p>
<p>pIdUser ist dann im Systemstore gespeichert.</p> QFQ - Feature #18047 (New): (filepond) uploadType: a) report invalid value, b) change v1/v2 to 1/...https://project.math.uzh.ch/issues/180472024-03-03T22:20:55ZCarsten Rosecarsten.rose@math.uzh.ch
<p>FormElement.paramter.uploadType:</p>
<p>a) report invalid value</p>
<p>Wird ein ungueltiger Wert konfiguriert, sollte es eine Fehlermeldung geben - aktuell funktioniert das Upload Element dann nicht - aber es gibt keine Fehlermeldung.</p>
<p>b) change v1/v2 to 1/2</p>
<p>Ich wuerde vorschlagen wir nennen die Typen nicht v1/v2 sondern einfach 1/2. Grund: keep it simpel.</p>
<p>Sicher werden wir auch Beispiele finden an denen 'v..' angibt, aber meiner Wahrnehmung nach ist meistens kein 'v' angegeben:</p>
<p><img src="https://project.math.uzh.ch/attachments/download/9395/clipboard-202403032310-ira1s.png" alt="" /></p>
<p><img src="https://project.math.uzh.ch/attachments/download/9394/clipboard-202403032309-befkx.png" alt="" /></p>
<p>c) Im CodeMirror fehlen scheinbar ein paar Keywords fileSplit, tableNameSplit, uploadType - koenntest du die mit aufnehmen? Elias sollte eine Doku geschrieben haben wo das zu machen ist.</p>
<p><img src="https://project.math.uzh.ch/attachments/download/9400/clipboard-202403032320-priqn.png" alt="" /></p> QFQ - Feature #17993 (New): filepond: Color for message 'file is of invalid type'https://project.math.uzh.ch/issues/179932024-02-25T11:01:50ZCarsten Rosecarsten.rose@math.uzh.ch
<p>Falls <strong>einfach</strong> moeglich:</p>
<ul>
<li>Bitte Farbe 'rot' ersetzen durch BS-warning.</li>
<li>Der Text fuer die Fehlermeldung wird dann unleserlich (weiss). Bitte die BS Farben nehmen (2. Screenshot).</li>
<li>Text 'file is of invalid type' hoert sich fuer mich eher technisch an, was haeltst du von 'unexpected file type'?</li>
</ul>
<p><img src="https://project.math.uzh.ch/attachments/download/9332/clipboard-202402251207-zajfs.png" alt="" /></p>
<p><img src="https://project.math.uzh.ch/attachments/download/9331/clipboard-202402251205-lrxpj.png" alt="" /></p> QFQ - Feature #17828 (New): Tablesorter disable saved filterhttps://project.math.uzh.ch/issues/178282024-02-06T12:48:40ZEnis Nuredini
<p>Per Default werden Eingaben in einem Tablesorter Filter im Browser Storage abgespeichert und bei Page Reload mitgeladen.</p>
<p>Es gibt Situationen oder Seiten bei denen man das nicht möchte.<br />Dafür gibt es beim Tablesorter folgende Konfiguration unter <strong>widgetOptions</strong> :<br /><pre>
"widgetOptions":{"filter_saveFilters":false}
</pre></p>
<p>In QFQ müsste man dafür die komplette default Konfiguration im Report angeben:<br /><pre>
data-tablesorter-config='{"theme":"bootstrap","widthFixed":true,"headerTemplate":"{content} {icon}","dateFormat":"ddmmyyyy","widgets":["uitheme","filter","saveSort","columnSelector","output"],"widgetOptions":{"filter_saveFilters":false,"filter_columnFilters":true,"filter_reset":".reset","filter_cssFilter":"form-control","columnSelector_mediaquery":false,"output_delivery":"download","output_saveFileName":"tableExport.csv","output_separator":";"} }'
</pre></p>
<p>Es wäre von Vorteil wenn dieser eine Parameter durch ein eigenes Attribut gesteuert werden könnte und nicht die ganze Config angegeben werden muss.</p>
<p>Selbiges würde für den Sorter gelten. Dort wäre auch ein eigenes Attribut von Vorteil.<br /><pre>
"widgetOptions":{"saveSort":false}
</pre></p> QFQ - Feature #17791 (New): Checkbox: copy default texthttps://project.math.uzh.ch/issues/177912024-02-02T12:16:07ZCarsten Rosecarsten.rose@math.uzh.ch
<p>Bei einer Liste von Checkboxen soll es moeglich sein hinterlegte Texte mit einem Mausclick in die Zwischenablage zu kopieren.</p>
<ul>
<li>Die 'action' Button kommt hinter das letzte Feld in die Kommentarspalte.</li>
<li>Click kopiert die Texte in die Zwischenablage, oder es wird eine HTML ID / CLASS angegeben und dort hinkopiert (z.B. das Chat Input Fenster)</li>
</ul>
<p>Bsp:</p>
<pre>
[] rot
[] gruen
[] gelb
</pre>
<ul>
<li>rot: erdbeere, radieschen, paprika rot</li>
<li>gruen: erbse, apfel gruen, </li>
<li>gelb: zitrone</li>
</ul>
<pre>
{{!SELECT id, label, copytext FROM gruppe ....}}
'copytext' wird nicht angezeigt, sodnern ist der Text der in die Zwischenablage kopiert wird.
!clipboard-202402021310-orpas.png!</pre> QFQ - Feature #17790 (New): QFQ Chat V1.3https://project.math.uzh.ch/issues/177902024-02-02T10:08:04ZEnis Nuredini
<p>Priorisierung anpassen zwischen 1.3 und 1.4.</p>
<p>Umsetzung der Features von 1.3:<br /><a class="external" href="https://git.math.uzh.ch/typo3/qfq/-/blob/develop/Documentation-develop/CHAT.md">https://git.math.uzh.ch/typo3/qfq/-/blob/develop/Documentation-develop/CHAT.md</a></p> QFQ - Feature #17649 (New): Integrate Etherpad as editorhttps://project.math.uzh.ch/issues/176492024-01-18T16:07:53ZCarsten Rosecarsten.rose@math.uzh.ch
<ul>
<li>Um mit mehreren Personen an einem Dokument (z.B. qfqWiki) zu arbeiten, koennten wir als Editor Element den <a class="external" href="https://etherpad.org/">https://etherpad.org/</a> verwenden.</li>
<li>Min. via Plugin koennen sogar Bilder eingebunden werden.</li>
<li>Evtl. ist der Etherpad eine Alternative zu TinyMCE.</li>
<li>Wunsch fuer Bilder: per Mausklick kann umgeschaltet werden zwischen Thumbail und regulaere Groesse.
<ul>
<li>Nach dem Einfuegen (und fuer alle anderen) wird nur das Thumbnail angezeigt.</li>
<li>Hintergrund: waehrend eines Meetings wird ein Protokoll erstellt und dabei werden Screenshots gemacht und eingefuegt - die sind aber by Default so gross das der Rest des Textes verschwindet und man die Uebersicht verliert. Thumbnails loesen das Problem.</li>
</ul></li>
</ul>
<ul>
<li>Ggfs. Etherpad nicht nur in einem Form zeigen, sondern direkt in Report.</li>
</ul> QFQ - Feature #17570 (ToDo): qfq-badge same as badge from bootstraphttps://project.math.uzh.ch/issues/175702024-01-12T10:29:58ZJan Haller
<p><em>badge</em> von Bootstrap und <em>qfq-badge</em> unterscheiden sich visuell:<br /><img src="https://project.math.uzh.ch/attachments/download/8979/clipboard-202401121125-4odn3.png" alt="" /></p>
<pre><code class="css syntaxhl"><span class="nc">.badge</span> <span class="p">{</span>
<span class="nl">display</span><span class="p">:</span> <span class="n">inline-block</span><span class="p">;</span>
<span class="nl">min-width</span><span class="p">:</span> <span class="m">10px</span><span class="p">;</span>
<span class="nl">padding</span><span class="p">:</span> <span class="m">3px</span> <span class="m">7px</span><span class="p">;</span>
<span class="nl">font-size</span><span class="p">:</span> <span class="m">12px</span><span class="p">;</span>
<span class="nl">font-weight</span><span class="p">:</span> <span class="m">700</span><span class="p">;</span>
<span class="nl">line-height</span><span class="p">:</span> <span class="m">1</span><span class="p">;</span>
<span class="nl">color</span><span class="p">:</span> <span class="m">#fff</span><span class="p">;</span>
<span class="nl">text-align</span><span class="p">:</span> <span class="nb">center</span><span class="p">;</span>
<span class="nl">white-space</span><span class="p">:</span> <span class="nb">nowrap</span><span class="p">;</span>
<span class="nl">vertical-align</span><span class="p">:</span> <span class="nb">middle</span><span class="p">;</span>
<span class="nl">background-color</span><span class="p">:</span> <span class="m">#777</span><span class="p">;</span>
<span class="nl">border-radius</span><span class="p">:</span> <span class="m">10px</span><span class="p">;</span>
<span class="p">}</span><span class="o">;</span>
<span class="nc">.qfq-badge</span> <span class="p">{</span>
<span class="nl">padding</span><span class="p">:</span> <span class="m">1px</span> <span class="m">9px</span> <span class="m">2px</span><span class="p">;</span>
<span class="nl">font-size</span><span class="p">:</span> <span class="m">12.025px</span><span class="p">;</span>
<span class="nl">font-weight</span><span class="p">:</span> <span class="nb">bold</span><span class="p">;</span>
<span class="nl">white-space</span><span class="p">:</span> <span class="nb">nowrap</span><span class="p">;</span>
<span class="nl">margin</span><span class="p">:</span> <span class="m">2px</span><span class="p">;</span>
<span class="nl">color</span><span class="p">:</span> <span class="m">#ffffff</span><span class="p">;</span>
<span class="nl">display</span><span class="p">:</span> <span class="n">inline-block</span><span class="p">;</span>
<span class="nl">background-color</span><span class="p">:</span> <span class="m">#999999</span><span class="p">;</span>
<span class="nl">-webkit-border-radius</span><span class="p">:</span> <span class="m">9px</span><span class="p">;</span>
<span class="nl">-moz-border-radius</span><span class="p">:</span> <span class="m">9px</span><span class="p">;</span>
<span class="nl">border-radius</span><span class="p">:</span> <span class="m">9px</span><span class="p">;</span>
<span class="p">}</span>
</code></pre>
<p><em>qfq-badge</em> soll visuell identisch sein mit <em>badge</em>. Die Schriftgrösse ist evt. zu klein.</p>
<p>Bei hover wird der <em>qfq-badge</em> abgedunkelt und der Cursor zeigt an, dass darauf geklickt werden kann. Beibehalten?</p>
<pre><code class="css syntaxhl"><span class="nc">.qfq-badge</span><span class="nd">:hover</span> <span class="p">{</span>
<span class="nl">color</span><span class="p">:</span> <span class="m">#ffffff</span><span class="p">;</span>
<span class="nl">text-decoration</span><span class="p">:</span> <span class="nb">none</span><span class="p">;</span>
<span class="nl">cursor</span><span class="p">:</span> <span class="nb">pointer</span><span class="p">;</span>
<span class="p">}</span>
</code></pre> QFQ - Bug #17569 (New): Form.title text/children not centeredhttps://project.math.uzh.ch/issues/175692024-01-12T10:12:13ZJan Haller
<p>Normalerweise ist reiner Text in <em>form.title</em> vertikal zentriert:<br /><img src="https://project.math.uzh.ch/attachments/download/8973/clipboard-202401121036-p0kxs.png" alt="" /></p>
<p>Sobald ein z.B. ein <em>qfq-badge</em> in <em>form.title</em> verwendet wird, vergrössert sich die Höhe des Titel-Elements und der Text ist nicht mehr vertikal zentriert:<br /><img src="https://project.math.uzh.ch/attachments/download/8974/clipboard-202401121043-djwxs.png" alt="" /></p>
<p>Wird jedoch z.B. <em>pull-right</em> in <em>form.title</em> verwendet, bleibt die Höhe des Titel-Elements gleich und der Text ist vertikal zentriert. Das <em>pull-right</em> jedoch nicht:<br /><img src="https://project.math.uzh.ch/attachments/download/8975/clipboard-202401121048-o6uwb.png" alt="" /><br /><img src="https://project.math.uzh.ch/attachments/download/8976/clipboard-202401121049-65fpx.png" alt="" /></p>
<p>Durch Ergänzung der CSS-Klassen können alle children (inkl. Text) von <em>qfq-form-title</em> vertikal zentriert werden:<br /><pre><code class="css syntaxhl"><span class="nc">.qfq-form-title</span> <span class="p">{</span>
<span class="nl">display</span><span class="p">:</span> <span class="n">flex</span><span class="p">;</span>
<span class="nl">align-items</span><span class="p">:</span> <span class="nb">center</span><span class="p">;</span>
<span class="p">}</span><span class="o">;</span>
<span class="nc">.pull-right</span> <span class="p">{</span>
<span class="nl">margin-left</span><span class="p">:</span> <span class="nb">auto</span><span class="p">;</span>
<span class="p">}</span>
</code></pre></p>
<p>Resultat: <em>qfq-badge</em> und Text vertikal zentriert:<br /><img src="https://project.math.uzh.ch/attachments/download/8977/clipboard-202401121055-m2jmp.png" alt="" /></p>
<p>Resultat: <em>pull-right</em> und Text vertikal zentriert:<br /><img src="https://project.math.uzh.ch/attachments/download/8978/clipboard-202401121057-yjx9h.png" alt="" /></p>
<p>Ist dieser Lösungsansatz der richtige? Gibt es weitere Klassen die angepasst werden müssen? Wird nichts bestehendes kaputt gemacht?</p> QFQ - Feature #17441 (ToDo): Report Notation 2.2: fireIf :Statement to trigger the root level que...https://project.math.uzh.ch/issues/174412023-12-07T12:42:31ZZhoujie Li
<p>Es wurde über mögliche Verbesserungen des if-Statements aus den Tickets <a class="issue tracker-2 status-10 priority-2 priority-default" title="Feature: Report: UPDATE / INSERT / DELETE statements should trigger subqueries, depending on the result. (ToDo)" href="https://project.math.uzh.ch/issues/5345">#5345</a> und <a class="issue tracker-2 status-1 priority-2 priority-default" title="Feature: Report Notation 2.1: 'if then else' / 'for' / 'while' (New)" href="https://project.math.uzh.ch/issues/17319">#17319</a> diskutiert. Wir kamen zu dem Vorschlag, dass mit 'fireIf' lediglich bestimmt wird, ob der Root-Level ausgeführt wird oder nicht. Das andere wäre 'fireSubIf', womit bestimmt wird, ob ein Subquery ausgeführt wird, auch wenn keine Records von der Root-Query kommen.</p>
<a name="Vorschlag"></a>
<h2 >Vorschlag<a href="#Vorschlag" class="wiki-anchor">¶</a></h2>
<p>Query-Ausführung für das Root-Level:</p>
<pre>
10 {
sql = UPDATE table set ...
fireIf = {{variable}} =|>|<|>=|<=|!=
altsql = SELECT ... (wird aus geführt wenn fireIf false ist)
}
</pre>
<p>Query-Ausführung für das Child-Level:</p>
<pre>
10 {
sql = UPDATE table set ...
fireSubIf = {{variable}} =|>|<|>=|<=|!=
20.sql = INSERT INTO ...
}
</pre> QFQ - Feature #17412 (In Progress): Per Form: note, tag, reminder date, done flaghttps://project.math.uzh.ch/issues/174122023-12-05T22:38:13ZCarsten Rosecarsten.rose@math.uzh.ch
<p>In unseren QFQ Applikationen fuer die Benutzer aber auch fuer die Applikationsentwickler waere folgende Funktion nett:</p>
<ul>
<li>Auf einem Formular gibt es einen <strong>Button</strong> via dem man sich Notizen zum aktuellen Record (Antrag, ...) macht (entweder als Popup oder Modal).</li>
<li>Die Option kann an/abgeschaltet werden (auch dynamisch je nach eingeloggtem User)</li>
<li>Die Logik soll fix in QFQ mittels form/qfqr Files hinterlegt sein. </li>
<li>Durch toolspezifische Formulare/Reports kann es an das Tool angepasst werden.</li>
<li>Titel sollte veränderbar sein.</li>
</ul>
<p>Details:</p>
<ul>
<li>Eine Notiz kann private, <group> oder public sein.
<ul>
<li>Welche <group's> es gibt kann konfiguriert werden. Bsp: admin, developer, dekanat, ...</li>
<li>Es stehen nur solche Gruppen zur Verfuegung in der man selbst Member ist.</li>
</ul></li>
</ul>
<ul>
<li>Der <strong>Button</strong> zeigt die Anzahl Notizen an. Symbol: Blatt Papier mit der Anzahl Notizen als kleine Zahl in einer Ecke. Sobald es min. eine Notiz gibt hat das Blatt eine Farbe.</li>
<li>Hover/Tooltip zeigt die letzten 5 Notizen an (Note, Tag, Author, Created, Reminder, Resubmission).</li>
<li>Die Tags sollen dazu verwendet werden die Notizen zu klassifizieren: todo / feedback / hold / not yet / ...
<ul>
<li>Pro Notizen koennen beliebig viele Tags vergeben werden.</li>
<li>Neue Tags koennen on the fly erzeugt werden.</li>
<li>Die Tags werden mit Typeahead erfasst.</li>
</ul></li>
</ul>
<ul>
<li>Auf dem allgemeinen Dashboard werden die eigenen/group/all Notizen als Summe angezeigt - ein Klick darauf fuehrt in die Listenansicht.</li>
<li>In der Listenansicht werden die eigenen/<group>/alle Notizen angezeigt werden.
<ul>
<li>Sortiert nach 'last modified', Filter auf a) 'user'/'group', b) Inhalt, c) Tags</li>
<li>In der Listenansicht kann von der Notiz direkt zum Antrag / Form / ... gesprungen werden.
<ul>
<li>Damit das funktioniert muessen im Hintergrund weitere Informationen bei der Notiz abgelegt werden (Formular, detail Parameter, ...).</li>
</ul></li>
</ul>
<ul>
<li>Es koennen Notizen angelegt werden, die keinem Form/Record zugeordnet sind. Anwendung: persoenliche Todo Liste, Bsp: 'morgen unbedingt nach Urlaub fragen'.</li>
</ul></li>
</ul>
<ul>
<li>Im Dashboard und in der Listenansicht werden Notizen mit abgelaufenem Reminder besonders hervorgehoben.</li>
<li>Ist das reminder date abgelaufen wird eine Mail versendet.</li>
<li>Pro Notiz kann das Flag 'done' gesetzt werden (dann wird kein Reminder versendet).</li>
</ul>
<p>Anmerkungen:</p>
<ul>
<li>Eine Notiz kann als 'Ticket' gesehen werden (erscheint im Dashboard, kann auf 'done' gesetzt werden, kann tags zur Klassifizierung enthalten).</li>
<li>In dem aktuellen Konzept hat die Notiz mehr einen 'History' Character als Ticket.</li>
<li>Zukunft: zu einer Notiz koennten weitere Informationen abgelegt werden (Assignee, Due Date, ...), damit waere dann ein Ticketsystem moeglich. </li>
<li>Im jetzigen Konzept werden die Notizen i.d.R. einem Table/Record zugeordnet. </li>
<li>Bei z.B. Rueckfragen oder Diskussion waere zusaetzlich eine Thread-ID interressant.</li>
<li>Mit dem Thread Konzept waere das eine interessante Moeglichkeit eine 'minimale Chat Logik' mit QFQ auszuliefern. Das koennte direkt in BEF fuer die Rueckfragen verwendet werden.</li>
</ul> QFQ - Feature #17374 (New): ReST QFQ Doc: local rendernhttps://project.math.uzh.ch/issues/173742023-11-28T16:01:55ZCarsten Rosecarsten.rose@math.uzh.ch
<p>Aktuell haben wir keinen Preview fuer unsere Dokumentation - es muss immer auf Develop oder Master committet werden. Gute waere eine lokale Vorschau.</p>
<p>Bitte versuchen das zu implementieren</p> QFQ - Feature #17295 (New): Pipe-separated column names as processorshttps://project.math.uzh.ch/issues/172952023-11-16T15:25:40ZKrzysztof Putyra
The syntax<br /><pre> <value> AS 'col1|col2|col3' </pre><br />can represent a processing queue of <code>value</code> by three processors with the output of last one taken as the column value. In this example the process queue is<br /><pre>
+------+ +------+ +------+
<value> -->--| col1 |-->--| col2 |-->--| col3 |-->-- <processed>
+------+ +------+ +------+
</pre><br />A column processor may populate more values into a store, that are accessed using the notation <code><colname>.<property></code>. Standard properties include
<ul>
<li><code>in</code> - the value that the processor has received</li>
<li><code>out</code> - the output of the processor (the rendered input)</li>
</ul>
<p>Processors of special columns can add more properties. For instance, <code>link</code> can populate <code>url</code>, <code>tooltip</code>, <code>text</code>, etc.</p>
<p><em>Should the values be inherited by following processors? For instance, with the column name <code>_link|myvar</code> should <code>{{myvar.url:R}}</code> be defined?</em></p>
Notes:
<ul>
<li>a column name that do not begin with an underscore is processed by the default processor that saves the value in the R-store and forwards it to the next processor</li>
<li>a column name <code>_<name></code> that is not a special column name is semantically equal to <code>_hide|<name></code></li>
</ul>
<p><b>Example 1</b><br /><pre>
10.sql=SELECT 'Hello world!' AS 'plain|_encrypt|encrypted|_hide'
10.10.sql=SELECT 'Plain text: {{plain:R}}<br>Encrypted text: {{encrypted:R}}'
</pre><br />produces<br /><pre>
Plain text: Hello world!
Encrypted text: <encrypted>
</pre></p>
<p><b>Example 2</b><br /><pre>
10.sql=SELECT 'Hello world!' AS message|_+p
20.sql=SELECT '{{message:R}}'
</pre><br />produces<br /><pre>
<p>Hello world!</p>
Hello world!
</pre></p>
<p><b>Example 3</b><br /><pre>
10.head=<ul>
10.tail=</ul>
10.sql=SELECT url FROM Link
10.10.sql=SELECT 'u:{{url:R}}|c:nicelink' AS '_link|_+li'
</pre><br />wraps links into <code>li</code> elements. This example does not work currently, because it is not allowed to specify more than one special column.</p>
<p><b>Example 4</b><br /><pre>
10.head=<ul>
10.tail=</ul>
10.sql=SELECT encryptedValue AS '_decrypt|_+li' FROM data
</pre><br />displays a list of decrypted values.</p>
<p><b>Compatibility</b></p>
This feature can be implemented in a way compatible with the current behavior.
<ol>
<li>Currently only one special column (except <code>_nowrap</code> and <code>_hide</code>) is allowed and they are expected to be listed as first. These columns only affect the rendered content and not the value.
<ul>
<li>For a compatible behavior the value <code>{{colname:R}}</code> must be always the initial value, whereas the rendered value is <code>{{&colname:R}}</code>.</li>
<li>A more natural behavior would be to make <code>{{colname:R}}</code> the <em>rendered value</em>. How much would break with this change?</li>
<li>Note that <code>{{&colname:R}}</code> is obsolete as the same value can be obtained with <code>{{colname.out:R}}</code>. Removing <code>&</code>-values breaks compatibility.</li>
</ul>
</li>
<li>The behavior of <code>_hide</code> and <code>_nowrap</code> is unchanged - these processors are not expected to change the value of the column.</li>
<li>A mixed behavior can be implemented with a special command to set the parsing mode (legacy or new).</li>
</ol> QFQ - Feature #17265 (In Progress): Column parametershttps://project.math.uzh.ch/issues/172652023-11-10T12:52:19ZKrzysztof Putyra
<p>The column _encrypt takes one optional parameter, but currently there is no concept for column parameters.<br />Because of that fetching the parameter is hard coded only for this column.</p>
<p>The column parameter concept intends to improve the situation by introducing a general way to pass parameters to the column renderer. After a vote it was decided to use the functional syntax:</p>
<pre>
# _color column takes two optional parameters:
# - text color
# - background color
# It outputs then the content with the given colors
10.sql = SELECT "red on blue" AS '_color(red,blue)|content'
20.sql = SELECT "red content" AS '_color(red)|content'
30.sql = SELECT "blue backgr" AS '_color(,blue)|content'
</pre>
<p>A special attention must be paid to the column <code>_+<html attrs></code>, because HTML attributes may contain brackets.</p> QFQ - Feature #17252 (In Progress): Renderer Refactoringhttps://project.math.uzh.ch/issues/172522023-11-09T11:38:24ZPhilipp GröbelbauerQFQ - Feature #17251 (New): Report Notation 2.0: Feature Requestshttps://project.math.uzh.ch/issues/172512023-11-08T22:10:00ZCarsten Rosecarsten.rose@math.uzh.ch
<p>Es sieht so aus als wenn die Aliase in den STORE_TYPO3 (<a class="external" href="https://docs.qfq.io/en/master/Store.html#store-typo3-bodytext-t">https://docs.qfq.io/en/master/Store.html#store-typo3-bodytext-t</a>) kopiert werden.</p>
<ul>
<li>Ist sichergestellt das bestehende SYSTEM Values wie z.B. <code>feUser</code> nicht durch den Alias ueberschrieben werden koennen?</li>
</ul>
<p>Feature Request</p>
<ul>
<li><code><alias>.sql</code> sollte moeglich sein.</li>
<li>Folgender Code sollte moeglich sein - damit Legacy Code nicht bei jedem Level umgeschrieben werden muss:</li>
</ul>
<pre>
start {
sql = SELECT ...
20 {
sql = SELECT ...
}
}
</pre> QFQ - Feature #17218 (In Progress): JavaScript WebSockethttps://project.math.uzh.ch/issues/172182023-10-31T16:07:04ZCarsten Rosecarsten.rose@math.uzh.ch
<p><a class="external" href="https://git.math.uzh.ch/typo3/coding-week-2023/-/blob/main/websocket.md">https://git.math.uzh.ch/typo3/coding-week-2023/-/blob/main/websocket.md</a></p> QFQ - Feature #17217 (In Progress): Logging mechanism for QFQhttps://project.math.uzh.ch/issues/172172023-10-31T16:04:27ZCarsten Rosecarsten.rose@math.uzh.ch
<p><a class="external" href="https://git.math.uzh.ch/typo3/coding-week-2023/-/blob/main/logging.md">https://git.math.uzh.ch/typo3/coding-week-2023/-/blob/main/logging.md</a></p> QFQ - Feature #17204 (In Progress): load = async for reportshttps://project.math.uzh.ch/issues/172042023-10-31T12:42:15ZPhilipp Gröbelbauer
<p>At the start of a report (like form = ...) the line:</p>
<p>load = async</p>
<p>(or similar) could be introduced. Async Content will not be loaded for the initial page.<br />Instead, a request will be sent via JS to fetch that content asynchronously.<br />While the content is being fetched, a spinning wheel acts as a placeholder.</p>
<p>The Link class can also be extended, so that a link might re-fetch an already displayed report instead of triggering a page reload.</p> QFQ - Bug #16994 (New): Stacktrace in QFQ error messagehttps://project.math.uzh.ch/issues/169942023-10-04T19:21:08ZCarsten Rosecarsten.rose@math.uzh.ch
<p><img src="https://project.math.uzh.ch/attachments/download/8519/clipboard-202310042120-brzfz.png" alt="" /></p> QFQ - Feature #16630 (In Progress): QFQ Dev Panelhttps://project.math.uzh.ch/issues/166302023-07-19T15:07:51ZPhilipp Gröbelbauer
<p>Idea: A (floating and movable/minimizable?) panel that is accessible on each page with a QFQ record, if logged in in the backend.<br />The panel gives access to "QFQ Dev Tools" that increase quality of life for the developer, such as:</p>
<p>- Display all variables per Store (C/S/U/Y/T/?)<br />- Allow manipulation of viariables per store, maybe a shortcut for Switch User (=setting {{feUser:U}})<br />- Generate and open a SIP link (by typing the link in a textbox and clicking a button next to it)<br />- Quick access to sql.log, qfq.log, mail.log, ideally more than the last 10 lines<br />- Truncate table 'Dirty'<br />- Quick Access to all Forms and FormElements<br />- Display Info (SW and Versions, e.g. QFQ Version, PHP Version, webserver, ...?)<br />- Show Query Times (Slow Query Detection)</p> QFQ - Feature #16346 (New): Tablesorter: clearme missinghttps://project.math.uzh.ch/issues/163462023-06-02T16:04:21ZCarsten Rosecarsten.rose@math.uzh.ch
<p>Es waere gut wenn auch im Tablesorter das ClearMe X angezeigt werden wuerde:</p>
<p><img src="https://project.math.uzh.ch/attachments/download/8004/clipboard-202306021803-oktid.png" alt="" /></p>
<p><img src="https://project.math.uzh.ch/attachments/download/8005/clipboard-202306021803-2thou.png" alt="" /></p>
<p><img src="https://project.math.uzh.ch/attachments/download/8006/clipboard-202306021804-neuxg.png" alt="" /></p> QFQ - Feature #16137 (Ready to sync (develop)): Form: Refactor AbstractElement, Trennung von Rend...https://project.math.uzh.ch/issues/161372023-05-03T11:48:08ZPascal Rössler
<p>Erstellen der 'AbstractElement' Klasse. <br />Erstellen der 'ElementInput' Klasse extends 'AbstractElement'.<br />Werden die AbstractBuildForm und BuildFormBootstrap weiterhin gebraucht?<br />Später sollen alle FormElement Typen in einer eigenen 'Element...' Klasse definiert werden.<br />Eine klare Trennung der Element Klassen und des Renderings.<br />In den einzelnen Element Klassen soll kein HTML/Bootstrap erzeugt werden. <br />Es soll ein Array/Objekt mit allen bearbeiteten Parametern und Angaben der RenderBootstrap3/5 Klasse übergeben werden.<br />In der Rendering Klasse soll eine Funktion names 'process()' erstellt werden, die den/das Array/Objekt entgegennimmt und den korrekten HTML Code erzeugt.<br />Durch diese Trennung soll es einfach möglich sein die Bootstrap version zu wählen, in der man das Element rendern will.</p>
<p>Erstellen einer RenderBootstrap3 Klasse.<br />Erstellen einer RenderBootstrap5 Klasse.</p>
In Render-Klasse<br />Switch Case Statement
<ul>
<li>buildInput</li>
<li>buildSubrecord</li>
<li>etc.</li>
</ul> QFQ - Bug #16074 (New): Image missing in PDFhttps://project.math.uzh.ch/issues/160742023-04-24T14:38:55ZJan Haller
<p>SVG-Datei wird teilweise nicht in PDF eingesetzt.<br />10 PDFs generiert im Abstand von 10 Sek.</p>
<table>
<tr>
<td>PDF</td>
<td>Page</td>
<td>Img</td>
<td>Text</td>
</tr>
<tr>
<td>1</td>
<td>1</td>
<td>X</td>
<td>X</td>
</tr>
<tr>
<td>1</td>
<td>2</td>
<td>X</td>
<td>X</td>
</tr>
<tr>
<td>2</td>
<td>1</td>
<td>O</td>
<td>X</td>
</tr>
<tr>
<td>2</td>
<td>2</td>
<td>O</td>
<td>X</td>
</tr>
<tr>
<td>3</td>
<td>1</td>
<td>O</td>
<td>X</td>
</tr>
<tr>
<td>3</td>
<td>2</td>
<td>O</td>
<td>X</td>
</tr>
<tr>
<td>4</td>
<td>1</td>
<td>O</td>
<td>X</td>
</tr>
<tr>
<td>4</td>
<td>2</td>
<td>O</td>
<td>X</td>
</tr>
<tr>
<td>5</td>
<td>1</td>
<td>O</td>
<td>X</td>
</tr>
<tr>
<td>5</td>
<td>2</td>
<td>O</td>
<td>X</td>
</tr>
<tr>
<td>6</td>
<td>1</td>
<td>X</td>
<td>X</td>
</tr>
<tr>
<td>6</td>
<td>2</td>
<td>X</td>
<td>X</td>
</tr>
<tr>
<td>7</td>
<td>1</td>
<td>O</td>
<td>X</td>
</tr>
<tr>
<td>7</td>
<td>2</td>
<td>O</td>
<td>X</td>
</tr>
<tr>
<td>8</td>
<td>1</td>
<td>X</td>
<td>X</td>
</tr>
<tr>
<td>8</td>
<td>2</td>
<td>X</td>
<td>X</td>
</tr>
<tr>
<td>9</td>
<td>1</td>
<td>X</td>
<td>X</td>
</tr>
<tr>
<td>9</td>
<td>2</td>
<td>X</td>
<td>X</td>
</tr>
<tr>
<td>10</td>
<td>1</td>
<td>X</td>
<td>X</td>
</tr>
<tr>
<td>10</td>
<td>2</td>
<td>X</td>
<td>X</td>
</tr>
</table>
<p>X: vorhanden; O: fehlt<br />PDFs unter: /scratch/tmp/180/16074</p>
<p>Es kommt auch vor, dass das Bild nur auf einer Seite gerendert wird. Seltener kann es vorkommen, dass der Header-Text nicht gerendert wird.<br />Wird das PDF gespeichert und erneut geöffnet, kann es vorkommen, dass das Bild plötzlich vorhanden ist (vgl. gespeicherte PDFs).</p>
<p>Setup:</p>
<ul>
<li>Medtool Dev</li>
<li>Body: QFQ tt_content</li>
<li>Header: HTML tt_content</li>
</ul>
<p>Anmerkung: Der Fehler wurde auf Medtool Preview und QFQ-Dev noch nicht beobachtet.</p> QFQ - Feature #16037 (New): Update 'make bootstrap'https://project.math.uzh.ch/issues/160372023-04-18T09:43:35ZCarsten Rosecarsten.rose@math.uzh.ch
<ul>
<li>Wird im QFQ Projektverzeichnis `make bootstrap` ausgefuehrt gibt es diverse Hinweise/Warnungen.</li>
</ul>
<a name="Teil-1"></a>
<h1 >Teil 1<a href="#Teil-1" class="wiki-anchor">¶</a></h1>
<ul>
<li>Bitte die Warnungen anschauen und optimalerweise loesen.</li>
<li>Bei denen die wir nicht angehen koennen, bitte eine Erklaerung (am besten in Documentation-Development/SETUP.md) was das Problem ist</li>
<li>Bitte check ob Documentation-Development/SETUP.md aktuell ist</li>
</ul>
<a name="Teil-2"></a>
<h1 >Teil 2<a href="#Teil-2" class="wiki-anchor">¶</a></h1>
<ul>
<li>Bitte das <code>Makefile</code> durchgehen und alles was wir nicht brauchen raus damit.</li>
<li>Rafi hat sehr viel Develop Kram reingenommen, das wir nicht mehr verwenden: lint, phpdoc, docutils, jinja, sphinx, ...
<ul>
<li>Aam besten eine Liste machen was raus kann und kurz mit CR anschauen.</li>
<li>plantuml bitte drin lasses.</li>
</ul></li>
</ul>
<ul>
<li>Bitte alle JS Lib anschauen was raus kann - fuer jQWidgets siehe <a class="issue tracker-2 status-1 priority-2 priority-default" title="Feature: Remove JS: jQWidgets (New)" href="https://project.math.uzh.ch/issues/16036">#16036</a>.</li>
<li>Composer is operating significantly slower than normal because you do not have the PHP curl extension enabled.
<ul>
<li>Check das das min. auf alfred20, alfred22 aktiv ist, am besten auch auf den Thinlinc (/etc/php/cli/...) und den webwork20, webwork22. </li>
<li>Aenderungen bitte im Ansible Playbook nachfuehren (Ticket fuer Levin machen)</li>
</ul></li>
</ul>
<a name="Teil-3"></a>
<h1 >Teil 3<a href="#Teil-3" class="wiki-anchor">¶</a></h1>
<ul>
<li>Die verlinkten Tickets nach Moeglichkeit schliessen.</li>
</ul>
<a name="Meldungen"></a>
<h1 >Meldungen<a href="#Meldungen" class="wiki-anchor">¶</a></h1>
<pre>
$ make bootstrap
...
# update npm at persistent location and copy node_modules (to speed up process)
mkdir -p /var/tmp/qfq_crose1/npm
/bin/cp package.json /var/tmp/qfq_crose1/npm/
cd /var/tmp/qfq_crose1/npm; npm update
npm WARN deprecated popper.js@1.16.1: You can find the new Popper v2 at @popperjs/core, this package is dedicated to the legacy v1
npm WARN deprecated phantomjs-prebuilt@2.1.16: this package is now deprecated
npm WARN deprecated request@2.88.2: request has been deprecated, see https://github.com/request/request/issues/3142
npm WARN deprecated har-validator@5.1.5: this library is no longer supported
npm WARN deprecated uuid@3.4.0: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.
npm WARN deprecated request@2.81.0: request has been deprecated, see https://github.com/request/request/issues/3142
npm WARN deprecated har-validator@4.2.1: this library is no longer supported
npm WARN deprecated hawk@3.1.3: This module moved to @hapi/hawk. Please make sure to switch over as this distribution is no longer supported and may contain bugs and critical security issues.
npm WARN deprecated cryptiles@2.0.5: This version has been deprecated in accordance with the hapi support policy (hapi.im/support). Please upgrade to the latest version to get the best features, bug fixes, and security patches. If you are unable to upgrade at this time, paid support is available for older versions (hapi.im/commercial).
npm WARN deprecated hoek@2.16.3: This version has been deprecated in accordance with the hapi support policy (hapi.im/support). Please upgrade to the latest version to get the best features, bug fixes, and security patches. If you are unable to upgrade at this time, paid support is available for older versions (hapi.im/commercial).
npm WARN deprecated sntp@1.0.9: This module moved to @hapi/sntp. Please make sure to switch over as this distribution is no longer supported and may contain bugs and critical security issues.
npm WARN deprecated boom@2.10.1: This version has been deprecated in accordance with the hapi support policy (hapi.im/support). Please upgrade to the latest version to get the best features, bug fixes, and security patches. If you are unable to upgrade at this time, paid support is available for older versions (hapi.im/commercial).
npm WARN deprecated mkdirp@0.5.1: Legacy versions of mkdirp are no longer supported. Please update to mkdirp 1.x. (Note that the API surface has changed to use Promises in 1.x.)
npm WARN deprecated json3@3.3.2: Please use the native JSON object instead of JSON 3
...
npm notice created a lockfile as package-lock.json. You should commit this file.
npm WARN notsup Unsupported engine for grunt@1.6.1: wanted: {"node":">=16"} (current: {"node":"13.12.0","npm":"6.14.4"})
npm WARN notsup Not compatible with your version of node/npm: grunt@1.6.1
npm WARN qfq@1.0.0 No description
...
found 43 vulnerabilities (5 low, 18 moderate, 15 high, 5 critical)
run `npm audit fix` to fix them, or `npm audit` for details
...
# cd extension/Resources/Private; composer update
cd extension; composer update
Composer is operating significantly slower than normal because you do not have the PHP curl extension enabled.
</pre> QFQ - Feature #15970 (New): Inline Editinghttps://project.math.uzh.ch/issues/159702023-04-06T12:48:56ZPhilipp Gröbelbauer
<p>Sammelticket für alles related to Inline Editing in QFQ.</p>
<p>IPA proess - Umsetzung von zwei Varianten:<br /><code><br />SELECT 'table=tableName&column=colName&type=text&r=myId' AS _edit<br />SELECT 'form=formName&fe=feName&r=myId' AS _edit</code></p>
<p>Weitere, schlanke Variante diskutiert am 6.4.23 (crose, pgroeb):<br />(implizites Edit, wenn tableName ODER formName angegeben ist, und eine Spalte mit Alias selektiert wird, der dem FE-Name oder Column-Name entspricht)</p>
<p><code>10{<br />sql = SELECT p.id AS _r , CONCAT(p.firstName, ', ', p.lastName) AS personName<br />formName = ...<br />tableName = ...<br />}</code></p> QFQ - Feature #15812 (New): Upload: download button appears after uploading filehttps://project.math.uzh.ch/issues/158122023-03-16T12:01:35ZJan Haller
<p>Weiterentwicklung von <a class="issue tracker-1 status-1 priority-2 priority-default" title="Bug: Upload: download button not shown after pressing save (New)" href="https://project.math.uzh.ch/issues/15795">#15795</a>:<br />Nach dem Upload (Datei auswaehlen, noch kein Save gedrueckt) soll ein Downloadbutton erscheinen, um die Datei direkt wieder herunzerzuladen.</p>
<p><img src="https://project.math.uzh.ch/attachments/download/7532/clipboard-202303161301-3ezmi.png" alt="" /></p> QFQ - Bug #15795 (New): Upload: download button not shown after pressing savehttps://project.math.uzh.ch/issues/157952023-03-14T13:02:17ZCarsten Rosecarsten.rose@math.uzh.ch
<ul>
<li>Bei r=0: alles ok</li>
<li>Bei r>0: Fehler wie beschrieben.</li>
</ul>
<p><img src="https://project.math.uzh.ch/attachments/download/7498/clipboard-202303141400-waqtc.png" alt="" /></p>
<p>Before pressing save:</p>
<p><img src="https://project.math.uzh.ch/attachments/download/7499/clipboard-202303141400-zzrl9.png" alt="" /></p>
<p>After pressing save:</p>
<p><img src="https://project.math.uzh.ch/attachments/download/7500/clipboard-202303141401-v6ybl.png" alt="" /></p> QFQ - Bug #15794 (Feedback): Tablesorter filter funktionieren nach Reload nicht mehrhttps://project.math.uzh.ch/issues/157942023-03-14T10:08:07ZNicola Chiapolini
<p>Wenn ich in meinen Filtern eine Suche eintrage funktioniert zuerst alles korrekt.</p>
<p><img src="https://project.math.uzh.ch/attachments/download/7489/screenshot1.png" alt="" /></p>
<p>Wenn ich danach aber die Seite neu Lade, verschwinden die view-saver funktionen und die Suche hat keinen Effekt mehr.<br />Das Problem scheint der unten markierte Eintrag im local storage. Wird dieser Gelöscht, funktioniert wieder alles korrekt.</p>
<p><img src="https://project.math.uzh.ch/attachments/download/7490/screenshot2.png" alt="" /></p> QFQ - Feature #15656 (New): SearchReplace: nice to havehttps://project.math.uzh.ch/issues/156562023-02-28T20:29:00ZCarsten Rosecarsten.rose@math.uzh.ch
<ul>
<li>Anstelle von 'Form Edit' die `form.id / form.name` anzeigen.</li>
<li>Beim Edit des FormElements die formElement.id im Button anzeigen.</li>
</ul>
<p><img src="https://project.math.uzh.ch/attachments/download/7364/clipboard-202302282128-ueulq.png" alt="" /></p> QFQ - Feature #15323 (Priorize): FormElement in QFQ/report (ohne Form POST)https://project.math.uzh.ch/issues/153232023-01-05T20:43:33ZCarsten Rosecarsten.rose@math.uzh.ch
<p>Creating a FormElement of type 'select list' (or something else), direct in QFQ/report.</p>
<p>Usecase: report which shows all properties of type 'x'. And type 'x' can be selected by a select list.</p>
<p>Currently, such a selectlist has to be created in plain HTML, typically via QFQ/report with '<input ...><option ...>...' - this is painfull.</p>
<p>Option 1: Define a FormElement via QFQ FormEditor and reference such an FormElement.id. QFQ than will just render the FE without any '<form..>' tag.</p>
<p>Option 2: In QFQ report, specify all necessary keywords like 'type, sql1, itemList, ...' in new keyword 'parameter' and set `<level>.content = FormElement` (or 'htmlInput', ...). Example</p>
<pre>
10 {
sql = SELECT 'hello world'
20 {
content = formElement
sql = SELECT gr.id, gr.value FROM Ggroup AS gr WHERE gr.type='property'
parameter = { "type" : "select", "label" : "Property type", "name" : "property"}
}
}
</pre> QFQ - Feature #15310 (New): Direct File Upload on pagehttps://project.math.uzh.ch/issues/153102023-01-04T13:40:06ZEnis Nuredini
<p>Es braucht eine Möglichkeit über den Report ein Upload Feld darzustellen um den direkten Upload über eine Taste oder per Drag and Drop zu ermöglichen. Somit wird kein extra Formular benötigt um ein Upload auszuführen.</p> QFQ - Feature #15200 (New): Remove JQWhttps://project.math.uzh.ch/issues/152002022-12-16T08:16:36ZCarsten Rosecarsten.rose@math.uzh.ch
<p>Wir verwenden kein JQW - alle Referenzen entfernen</p>
<ul>
<li>Check: ist die Ausage 'wir verwenden kein JQW' richtig? Evtl. basiert FE.type=file (Upload) auf JQW?!</li>
<li>Im FormEditor aus der FE.Type Liste entfernen.</li>
<li>PHP Code (bauen des Elementes).</li>
<li>QFQ Client</li>
<li>Grunt anpassen</li>
<li>UZH CD Check ob dort jqw eingebunden wird</li>
<li>Lizenz Angabe entfernen.</li>
</ul> QFQ - Feature #15095 (In Progress): Dynamic Update Trigger/Receiver onlyhttps://project.math.uzh.ch/issues/150952022-11-30T09:43:40ZPhilipp Gröbelbauer
<p>Szenario: Zwei Dropdowns (select) haben Dynamic Update aktiv.</p>
<p>Dropdown 1: Eine Auswahl von Arbeitstellen<br />Dropdown 2: Eine Auswahl aller Lohnstufen.</p>
<p>Fuer jede Arbeitstelle ist eine Standard Lohnstufe definiert.<br />Wird also eine Arbeitstelle im Dropdown selektiert, dann wird im zweiten Dropdown direkt die Standard-Lohnstufe selektiert.<br />Das ist bereits moeglich mit Dynamic update.</p>
<p>Es soll aber auch moeglich sein, die Lohnstufe noch individuell zu aendern.<br />Das wuerde aber wieder ein Dynamic Update triggern, welches sofort wieder die Standard-Lohnstufe fuer die momentan selektierte Arbeitstelle auswaehlt.</p>
Loesungsansatz: Ist dynamic Update aktiv, dann sollte zusaetzlich wischen 3 Modi ausgewaehlt werden koennen:
<ul>
<li>Trigger & Receiver (default)</li>
<li>Trigger only</li>
<li>Receiver only</li>
</ul>
<p>Form Elemente mit 'Trigger' loesen einen Dynamic Update aus.<br />Form Elemente mit 'Receiver' reagieren auf einen Dynamic Update</p> QFQ - Feature #14884 (New): Darstellung Pflichtfelder / Beschreibung was fehlt oder falsch isthttps://project.math.uzh.ch/issues/148842022-10-13T08:15:11ZCarsten Rosecarsten.rose@math.uzh.ch
<p>Die Variante wie 'Planon' required Felder anzeigt (duenner roter Rahmen) und im Schritt 2>3 dann genauere Meldungen anzeigt find ich optisch sehr ansprechend.</p>
<p>Die Alerts oben summieren sich auf.</p>
<p><img src="https://project.math.uzh.ch/attachments/download/6707/clipboard-202210131011-fckqz.png" alt="" /></p>
<p>Sollen wir das bei QFQ mal schoener machen oder besser das auf nach BS5 Migration warten?</p> QFQ - Feature #14638 (New): Copy Form via JSON: misc topicshttps://project.math.uzh.ch/issues/146382022-08-31T08:26:55ZCarsten Rosecarsten.rose@math.uzh.ch
<ul>
<li>Im Form 'FormJson' kann man akutell das JSON nur als Datei speichern. Gewuenscht waere das man es auch in das Gnome Clipboard kopieren kann.</li>
<li>Im Form 'FormElement' sollte man das aktuell FE in die Zwischenablage kopieren koenenn. Dann wechselt man in das Zielform und fuegt das Element ein</li>
<li>Im Form 'Form' sollte man das aktuelle Form:
<ul>
<li>in die Zwischenablage kopieren koennen.</li>
<li>als JSON in die Gnome Zwischenablage kopieren koennen</li>
</ul></li>
</ul>
<ul>
<li>Beim Form JSON Import: Check das die aktuelle angegbeene Tabelle existiert, wenn nicht eine Warnung ausgeben oder den Import verweigern.</li>
</ul> QFQ - Feature #14494 (In Progress): Bootstrap 5 Migrationhttps://project.math.uzh.ch/issues/144942022-07-10T08:17:45ZCarsten Rosecarsten.rose@math.uzh.ch
<ul>
<li>QFQ per Extension Config auf BS3 oder BS5 schalten</li>
<li>Grafischer Formulareditor</li>
<li>Formulare sollen gut aussehen auf einem kleinen Screen und auf einem grossen.
<ul>
<li>D.h. es gibt eine maximale Breite bei einem Form.</li>
</ul></li>
</ul>
<ul>
<li>FormEditor nach Moeglichkeit grafische Unterstuetzung: d.h. Elemente per Drag'n'Drop anordnen.</li>
</ul> QFQ - Feature #13843 (Ready to sync (develop)): Create JWT via QFQhttps://project.math.uzh.ch/issues/138432022-02-25T08:58:02ZCarsten Rosecarsten.rose@math.uzh.ch
<ul>
<li>Fuer AMS / SeminarLive benotigen wir JWT token</li>
<li>Ein erste Idee ist dieses in einem 10.sql zu berechenen und das dann via Record Store weiter zu verwednen umd API Calls zu machen.</li>
</ul>
<p><img src="https://project.math.uzh.ch/attachments/download/5890/clipboard-202202241613-xshwv.png" alt="" /></p> QFQ - Feature #13757 (New): QR / Bar-Code Pluginhttps://project.math.uzh.ch/issues/137572022-02-06T09:46:28ZCarsten Rosecarsten.rose@math.uzh.ch
<ul>
<li>Fuer eine Studenteneinlasskontrolle bei Klausuren waere es gut wenn wir einen QR/Bar-Code Scanner in QFQ haetten.</li>
<li>Scheinbar gibt es diverse Plugins, fuer JQuery z.B.: <a class="external" href="https://www.bestjquery.com/demo/barcode-scanner/">https://www.bestjquery.com/demo/barcode-scanner/</a></li>
<li>Folgende Modi koennten sinnvoll sein:
<ul>
<li>Als Formularelement.</li>
<li>In einem Report, am besten so:
<ul>
<li>das gescannt werden kann ohne einen Button zur Bestaetigung zu druecken,</li>
<li>der Wert direkt mit der Datenbank verglichen wird (check das die Person bekannt ist und noch nicht eingetreten ist) </li>
<li>wenn die Person bekannt ist, der Eintrag gemacht wird das sie eingetreten ist.</li>
</ul></li>
</ul></li>
</ul>
<p>Der Request kommt von Karin Niffeler. In der Biologie wird aktuell eine App verwendet mit der die Einlasskontrolle umgesetzt ist. Die Idee ist das bestehende RemoteExam Tool um die Funktion der Einlasskontrolle zu erweitern. Das RemoteExamtool bekommt damit ein weiteres Feature fuer die Administration von Klausuren.</p> QFQ - Feature #13609 (New): QFQ Introduction: Seite aufloesenhttps://project.math.uzh.ch/issues/136092022-01-04T11:57:28ZCarsten Rosecarsten.rose@math.uzh.ch
<p>Unter <a class="external" href="https://project.math.uzh.ch/projects/qfq/wiki">https://project.math.uzh.ch/projects/qfq/wiki</a></p>
<ul>
<li>Habe ich eine Deine Konzept Seite verschoben unter das Tutorial</li>
<li>Eine neue Seite 'bitte aufloesen' angelegt - bitte anschauen ob da etwas in das Tutorial ubernommen werden kann und anschliessend bitte loeschen.</li>
</ul>
<p><img src="https://project.math.uzh.ch/attachments/download/5718/clipboard-202201041255-qm7vz.png" alt="" /></p> QFQ - Feature #12262 (In Progress): Form buttons on top: more customablehttps://project.math.uzh.ch/issues/122622021-03-25T15:57:32ZCarsten Rosecarsten.rose@math.uzh.ch
<ul>
<li>Es waere gut wenn man beliebige Buttons oben im Form anbieten koennte.</li>
<li>Die bisherigen Buttons (New, Save, Close, Trash) sollten neu durch den gleichen PHP Code gerendert werden. U.a. um ein guten debug Tooltip zu haben.</li>
<li>Alle Funktionen die '... AS _link' kennt, sollten moeglich sein. Z.B.
<ul>
<li>Popups mit custom message, inkl yes/no zum abbrechen.</li>
<li>Tooltip</li>
<li>Button active/disabled</li>
<li>dynamic update waere nett, aber nicht zwingend in einer erste Version. Waere nur noetig wenn eine Custom definiton gegeben ist.</li>
</ul></li>
</ul>
<p>Notation:</p>
<ul>
<li>Die bisherigen werden supported, sind aber deprecated:
<ul>
<li>saveButtonText,saveButtonTooltip,saveButtonClass,saveButtonGlyphIcon</li>
<li>Dleete*, save*, close*</li>
</ul></li>
</ul>
<ul>
<li>Neu
<p>saveButton = p:..|b:..|s:..|o:...|q:...|t:.. ...</p></li>
</ul>
<p>Anwendung:</p>
<ul>
<li>Delete ist disabled sobald slave records existieren. Beispiel `deleteButton = p:..|b:..|r:{{select <br /> ...}}|o:...'</li>
<li>Mit <a class="issue tracker-2 status-5 priority-3 priority-high3 closed" title="Feature: As _link: content before/after link (Closed)" href="https://project.math.uzh.ch/issues/13945">#13945</a> kann Inhalt davor und dahinter ausgegeben werden. Z.B. `col-md-...` oder `<div class="button-group">`</li>
</ul> QFQ - Feature #12186 (New): TinyMCE Config für Objektehttps://project.math.uzh.ch/issues/121862021-03-20T07:50:24ZElias Villiger
<p>Es gibt einige TinyMCE Optionen, die nicht als String, sondern als Objekt angegeben werden. Mit QFQ werden jedoch alle Configs als String übergeben, wodurch diese Optionen nicht gesetzt werden können.</p>
<p>Beispiel: <a class="external" href="https://www.tiny.cloud/docs/configure/content-filtering/#exampleusinginvalid_stylesobject">https://www.tiny.cloud/docs/configure/content-filtering/#exampleusinginvalid_stylesobject</a></p>
<p>Z.B. im FE.parameter (deaktivieren von fixen Tabellengrössen):<br /><pre>
editor-invalid_styles: { 'td': 'width height', 'th': 'width height' }
</pre></p>
<strong>Mögliche Lösungen:</strong>
<ul>
<li>QFQ erkennt, wenn ein Parameter mit {} gewrapped ist und umgibt solche Parameter nicht mit Quotes.</li>
<li>Spezielle Notation in QFQ, um einen Parameter als Objekt zu markieren?</li>
</ul> QFQ - Bug #11237 (New): Radiobutton / parameter.buttonClass= btn-default - kein dirty Triggerhttps://project.math.uzh.ch/issues/112372020-09-30T16:10:08ZElias Villiger
<p>Bei Radio buttons mit buttonClass=btn btn-default wird kein dirty-Event (mehr) getriggert (d.h. Save-Button wird nicht aktiviert). Ohne class="btn" funktioniert es.</p> QFQ - Feature #10119 (In Progress): Dropdown (selectlist) &TypeAhead: format and catagorize listhttps://project.math.uzh.ch/issues/101192020-02-13T12:27:19ZCarsten Rosecarsten.rose@math.uzh.ch
<p>Gewuenscht ist das man Bereiche (z.B. Tags) von Items in Gruppen einteilen kann. Bsp:</p>
<ul>
<li>Formatierung der Eintraege:
<ul>
<li>Subtitle: non clickable, style: grau, oder fett schwarz, ..</li>
<li>Regular Item: mit glyphicons, fa, icons.. - fett, kursiv, hover (tooltip).</li>
</ul></li>
</ul>
<ul>
<li>Es gibt die Gruppen, z.B. 'Farbe', 'Fruechte', 'Auto'.</li>
<li>User tippt 'a'.</li>
<li>Angezeigt werden im Dropdown jeweils die 3 Gruppen, pro Gruppe die Matches auf 'a'.</li>
</ul>
<p>Darstellung der Listen</p>
<ul>
<li>Vermutlich kann man im JSON Datastring HTML Code angeben. Damit koennten dann die Eintraege formatiert werden.</li>
<li>Wichtig ist das im Value Feld HTML gesendet werden.</li>
</ul> QFQ - Feature #7480 (ToDo): Record History (Undo / Redo)https://project.math.uzh.ch/issues/74802018-12-13T12:59:36ZCarsten Rosecarsten.rose@math.uzh.ch
<ul>
<li>Es waere gut wenn es in QFQ eine History der Records gaebe.</li>
<li>Schoen waere auch ein Undo/Redo</li>
</ul>
<p>Tipp von Marc:</p>
<p>Stackoverflow Frage: <br /><a class="external" href="https://stackoverflow.com/questions/12563706/is-there-a-mysql-option-feature-to-track-history-of-changes-to-records">https://stackoverflow.com/questions/12563706/is-there-a-mysql-option-feature-to-track-history-of-changes-to-records</a></p>
<p>Loesung MYSQL Triggers + history tabellen:<br /><a class="external" href="https://stackoverflow.com/a/12657012">https://stackoverflow.com/a/12657012</a></p> QFQ - Feature #6602 (New): Inline-Edit (Formlet): in Report auf Mausklick ein mini-form oeffnenhttps://project.math.uzh.ch/issues/66022018-09-02T21:57:01ZCarsten Rosecarsten.rose@math.uzh.ch
<ul>
<li>Anforderung: im Report soll der User an einer beliebigen Stelle ein Miniform oeffnen koennen (AJAX), ohne das er die Seite verlaesst. </li>
<li>Beispiel:
<ul>
<li>PhpMyadmin</li>
<li>Tabelle in <a class="external" href="https://editor.datatables.net/examples/inline-editing/simple">https://editor.datatables.net/examples/inline-editing/simple</a></li>
</ul></li>
</ul> QFQ - Feature #5345 (ToDo): Report: UPDATE / INSERT / DELETE statements should trigger subqueries...https://project.math.uzh.ch/issues/53452018-02-03T17:51:12ZCarsten Rosecarsten.rose@math.uzh.ch
<a name="Wunsch"></a>
<h2 >Wunsch<a href="#Wunsch" class="wiki-anchor">¶</a></h2>
<p>Falls ein UPDATE [keine] Records veraendert, waere es gut wenn stattdessen subqueries ausgefuehrt werden - und die Entscheidung wird in PHP evaluiert, ohne das eine weitere Query abgefeuert werden muss. Vergleichbar mit althead (wird ausgefuehrt sobald das sql keine Records selektiert).<br />Damit wuerden Queries der Form UPDATE ... WHERE 1=0 (mit '0={{<level>.line.count}}') gar nicht erst gefeuert.</p>
<a name="Vorschlag"></a>
<h2 >Vorschlag<a href="#Vorschlag" class="wiki-anchor">¶</a></h2>
<pre>
10.sql = UPDATE ....
10.affected = 0|1|>0|>1|always
20.sql = INSERT ... SELECT ...
20.affected = 0|1|>0|>1|always
30.sql = DELETE ...
40.sql = SELECT
</pre>
<p>Bsp. 1)<br /><pre>
10.sql = UPDATE ... WHERE 1=0
10.affected = >0
10.head = update
10.althead = kein update
</pre></p>
<p>Ausgabe: kein update</p>
<p>Bsp. 2)<br /><pre>
10.sql = UPDATE Person SET name='john' LIMIT 1
10.affected = >0
10.head = update
10.althead = kein update
</pre></p>
<p>Ausgabe: update</p>
<a name="Anmerkungen"></a>
<h2 > Anmerkungen<a href="#Anmerkungen" class="wiki-anchor">¶</a></h2>
<ul>
<li>Der Wert von affected kann auch eine Query der From '10.affected = {{SELECT <abbr title="20.line.insertId > 100, 'no','yes'">IF</abbr> }}' sein.</li>
<li>'affected' wird ausgewertet nachdem query gefeuert wurde.</li>
<li>head / tail / althead / alttail / altsql wird in Abhaengigkeit von affected ausgegeben.</li>
<li>affected kann auch bei 'SELECT' angegeben werden. Mit 'affected=always' wird child einmal getriggert, auch wenn das keine records selektiert wurden.</li>
<li>Hinweis: bei updates die erfolgreich sind (Record existiert), aber keine Veraenderung stattgefunden hat, kommt vermutlich 'affected_rows=0' zurueck. Bei folgendem Klassiker sollte die Aktualisierung von `modified` dem vorbeugen (BTW: die Verwendung von altsql ist oben nicht beschrieben, waere aber nett)<br /><pre>
10 {
sql = UPDATE EzBookingImport SET `data`='{{dataC:R}}', modified=modified + INTERVAL 1 SEC WHERE ez_start='{{thisMonday:R}}' AND ez_objectID='{{ez_objectID:R}}'
altsql = INSERT INTO EzBookingImport (`data`, `ez_start`, `ez_objectID`, `raum_id`)
VALUES ('{{dataC:R}}', '{{thisMonday:R}}' , '{{ez_objectID:R}}', '{{raId}}' )
}
</pre></li>
</ul> QFQ - Feature #4869 (New): Dynamic Update (show, hide, readonly?, required?) for Template Group E...https://project.math.uzh.ch/issues/48692017-11-04T10:36:18ZCarsten Rosecarsten.rose@math.uzh.ch
<ul>
<li>Requested in <a class="issue tracker-1 status-5 priority-3 priority-high3 closed behind-schedule" title="Bug: Dynamic updates Pill - show/hide (Closed)" href="https://project.math.uzh.ch/issues/4865">#4865</a></li>
<li>Die Umsetzung sollte nicht so schwierig sein um eine komplette TG-Group aus/einzublenden.</li>
<li>Ob 'readonly' und 'required' Sinn machen ist nicht klar.</li>
<li>Dynamic Update innerhalb einer TG pro FE ist vermutlich schwierig - wird aber benoetigt (siehe unten)</li>
</ul>