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 #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 #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 #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 #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 #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 #14227 (New): Selenium Konkurrenz: cypress.io, https://playwright.dev/https://project.math.uzh.ch/issues/142272022-05-23T10:00:31ZCarsten Rosecarsten.rose@math.uzh.ch
<ul>
<li><a class="external" href="https://go.cypress.io/get-started">https://go.cypress.io/get-started</a></li>
<li><a class="external" href="https://playwright.dev/">https://playwright.dev/</a></li>
<li>Anschauen ob es fuer uns interessant ist.</li>
<li>Ggfs. schauen wie aufwendig es waere den QFQ internen Selenium Support auf fuer Cypress anzubieten. Evtl. reicht es die Dokumentation anzupassen</li>
</ul> QFQ - Feature #14028 (New): Required notification: visual nicerhttps://project.math.uzh.ch/issues/140282022-04-03T08:17:32ZCarsten Rosecarsten.rose@math.uzh.ch
<ul>
<li>Aktuell werden Required Radio Felder, wenn sie nicht ausgefuellt sind und der Fokus weggeht, flaechig gelb gefuellt - das sieht nicht gut aus.</li>
<li>Bitte fuer alle Elemente (Input, Checkbox, Radio, Dropdown, Textarea, Editor, Pill, ...) ein Beispiel machen - am besten auf einer Seite damit man alle nebeneinander sehen kann.</li>
<li>Required soll deutlich sichtbar sein, aber nicht so plakativ unangenehm.</li>
<li>Evtl. ueberlegen wir uns zwei Modi: strong und light - das koennte dann pro Tool oder Form vorgegeben werden (Antragsteller 'Strong', Admin Interface 'Light').</li>
<li>Hinweis: gerade die Radios sind kaum lesbar.</li>
</ul>
<p><img src="https://project.math.uzh.ch/attachments/download/6012/clipboard-202204031006-8ojno.png" alt="" /></p>
<p><img src="https://project.math.uzh.ch/attachments/download/6013/clipboard-202204031007-0snta.png" alt="" /></p> QFQ - Bug #13943 (ToDo): unable to find formgrouphttps://project.math.uzh.ch/issues/139432022-03-23T07:18:13ZEnis Nuredini
<p>Im Console Log des Browsers erscheint bei Verwendung von Dynamic Update im Forms folgende message: "unable to find formgroup" <br />Darauf folgt "No element with name 's' found." (Bezieht sich 'sehr wahrscheinlich' auf die SIP die ebenfalls bei Aufruf der load.php Api zurückgegeben wird an den JS.)<br />Aktuell scheint es bisher keinen Impact auf den workflow zu haben. Wäre trotzdem von Vorteil dies zu beheben.</p>
<p><img src="https://project.math.uzh.ch/attachments/download/5962/unabletofindformgroup.png" alt="" /></p> QFQ - Feature #13900 (Priorize): Selenium: Check das Cookie/PDF funktionierthttps://project.math.uzh.ch/issues/139002022-03-14T08:22:34ZEnis Nuredini
<p>Download eines PDF von einer FE protected Seite.</p>
<p>Sicherstellen das wenn wir das naechste Mal an den Cookies arbeiten, ein Problem direkt auffaellt.</p> QFQ - Bug #13899 (ToDo): Selenium: zum laufen bringenhttps://project.math.uzh.ch/issues/138992022-03-14T08:20:08ZEnis NurediniQFQ - 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 #13608 (Some day maybe): Automatic Browser Language Redirecthttps://project.math.uzh.ch/issues/136082022-01-04T11:09:34ZCarsten Rosecarsten.rose@math.uzh.ch
<ul>
<li>In forked #13439 gibt es ein Problem wenn die Sprache gewechswelt wird, wenn man bereits in einem Formular ist. Das Problem wuerde sich vermutlich entschaerfen, wenn von Anfang an die richtige Sprache selektiert ist.</li>
<li>Laut Recherche von BB gibt es
<ul>
<li>Keinen T3 nativen Support.</li>
<li>min. zwei einigermassen aktuelle Extensions (<a class="external" href="https://extensions.typo3.org/extension/site_language_redirection/">https://extensions.typo3.org/extension/site_language_redirection/</a>, ??) - koennen aber beide kein T3 V11.</li>
</ul></li>
</ul>
<p>Nach Diskussion BB/CR scheint folgendes sinnvoll zu sein:</p>
<ul>
<li>Die oben genannte Extension kann als Vorlage dienen.</li>
<li>Es wird in QFQ implementiert - damit vermeiden wir eine weitere Extension.</li>
<li>Das Feature kann via QFQ Config an/ausgeschaltet werden.</li>
</ul>
<p>Page Aufruf:</p>
<ul>
<li>Ist ein Language Cookie gesetzt und unterscheidet sich dieses von der aktuellen Seite: Redirect</li>
<li>Ist kein Language Cookie gesetzt:
<ul>
<li>Wird anhand der Browser Sprache entschieden ob ein Redirect (vermutlich via JS) auf die gleiche Seite mit der Zielsprache gemacht wird.</li>
<li>Das Language Cookie wird auf die automatisch selektierte Sprache gesetzt (DE_auto, EN_auto).</li>
</ul></li>
</ul>
<ul>
<li>Existiert ein FE User (eingeloggt) - Check ob Language Cookie '.._auto' gesetzt ist.
<ul>
<li>Ja: Gibt es eine Language in T3.fe_user?
<ul>
<li>Ja: das Cookie auf "DE" , "EN" setzen (ohne auto). Wenn noetig ein Redirect machen.</li>
<li>Nein: Sprache in t3.fe_user auf den aktuellen Wert setzen.</li>
</ul></li>
</ul>
<ul>
<li>Nein: Sprache in t3.fe_user auf den aktuellen Wert setzen.</li>
</ul></li>
</ul>
<p>Page Wechsel:</p>
<ul>
<li>Wird die Sprache gewechselt: <strong>keine Idee wie wir jetzt das Language Cookie setzen, damit beim PageLoad der Redirect nicht zugschlaegt</strong>. Vermutlich JS das auf dem Language Select Link klebt.</li>
<li>FE_User: neue Sprache speichern. Klappt hoffentlich durch den Mechanismus von oben.</li>
</ul> QFQ - Bug #13331 (New): Multi Form: Clear Icon misplacedhttps://project.math.uzh.ch/issues/133312021-11-07T11:39:51ZCarsten Rosecarsten.rose@math.uzh.chQFQ - Bug #12989 (Priorize): empty string does not trigger dynamic updatehttps://project.math.uzh.ch/issues/129892021-09-06T15:15:38ZMarc Egger
<p>A note whose value is rendered using dynamic update is not updated if the return value changes from "something" to "".</p>
<p>e.g.</p>
<p>In the "value" field of a dynamicly updated FormElement of type "note":</p>
<pre>
#!report
10.sql = SELECT "something" FROM (SELECT '') AS _fake WHERE "{{select:F}}"="a"
</pre>
<p>If "select" changes from "a" to "b" then the note still contains "something".</p>
<p>This bug was found by Philipp.</p> QFQ - Feature #12476 (New): clearMe: a) should trigger 'dirty', b) sticky on textarea resizehttps://project.math.uzh.ch/issues/124762021-05-02T14:31:20ZCarsten Rosecarsten.rose@math.uzh.ch
<ul>
<li>Es waere gut wenn bei Click auf 'clearMe' das Form Dirty wird, so dass man es direkt speichern kann.</li>
<li>Wenn man bei einem Textarea Feld die Groesse veraendert bleibt das 'x' an der alten Stelle stehen. Schoen waere es wenn es am rechten Rand kleben wuerde.</li>
</ul> QFQ - Feature #12315 (New): Form History (Diffs) / Backupshttps://project.math.uzh.ch/issues/123152021-04-06T07:38:10ZMarc Egger
<p>Änderungen an den Forms und FormElements können im FormEditor oder Json FormEditor eingesehen werden und allenfalls zurückgesetzt.</p>
<p>Falls möglich wäre eine History die direkt mit der Datenbank arbeitet bevorzugt zu file diffs.</p>
<ul>
<li>(?) Special Column _diff fuer strings und files definieren</li>
<li>Eine Schnelle Lösung wäre auch beim Editiren via normalen Form Editor ein backup in qfqProject/form/.backup zu legen</li>
</ul> 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 #10569 (ToDo): link _blank more safehttps://project.math.uzh.ch/issues/105692020-05-13T13:57:56ZMarc Egger
<p>Add <br /><pre><code class="html syntaxhl">rel="noopener noreferrer"
</code></pre><br />to every qfq link with target _blank</p>
<p>This avoids certain attacks:<br /><a class="external" href="https://dev.to/olasheni/using-target-blank-the-malicious-way-3bif">https://dev.to/olasheni/using-target-blank-the-malicious-way-3bif</a></p> QFQ - Feature #10463 (New): Report _link: expliztes setzen von HTML Tags (Bedarf fuer 'data-selen...https://project.math.uzh.ch/issues/104632020-04-28T15:10:52ZCarsten Rosecarsten.rose@math.uzh.ch
<ul>
<li>Damit Button's einfacher durch Selenium gedrueckt werden koennen , waere es gut wenn man HTML Tags explizit setzen koennte.</li>
<li>Am besten waere vermutlich 'tag:data-selenium="openUpload" id=1234567'</li>
<li>Es besteht die Gefahr das QFQ generierte Tags ueberschrieben werden - nehmen wir in Kauf.</li>
</ul> 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 #6723 (New): Report QFQ Installation and Versionhttps://project.math.uzh.ch/issues/67232018-09-16T09:25:53ZCarsten Rosecarsten.rose@math.uzh.ch
<p>Es waere gut wenn man eine Uebersicht haette wo welche Installation mit welche QFQ version laufen.</p>
<p>In der Configuration eintragen:</p>
<pre>
serviceReportQfqVersion = https://qfq.io/index.php?id=service&version={{qfqVersion:Y}}[,<next reporting URL>]
</pre>
<ul>
<li>Die Variable {{qfqVersion}} gibt es vermutlich noch nicht.</li>
<li>Der Aufruf erfolgt via wget (nicht via file_get_content, da dort allow_url_fopen benoetigt wird)
<ul>
<li>bei der Erstinstallation </li>
<li>bei jedem QFQ Update</li>
</ul></li>
</ul>
<ul>
<li>Das sollte einfach zu implementieren sein: QFQ checkt die Versionsnummer bei jedem Start, dort koennte der Hook eingbaut werden.</li>
<li>Es koennen mit Komma getrennt mehrere Service URLs angegeben werden - so koennte MNF z.B. ein eigenes Reporting haben und I-MATH bekommt auch was davon mit.</li>
</ul> 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>