Actions
Feature #10443
openKonzept _api / _live
Start date:
22.04.2020
Due date:
% Done:
0%
Estimated time:
Discuss:
Prio Planung:
Description
Analog zu _link.
Eine einfache Moeglichkeit mittels API Datenbank Felder abzurufen, zu setzen oder zu loeschen.
't:blablabla|table:TABLE|params:&id=recordId&FIELDNAME=value|c:btn|delay:ms|function:javascriptFunction|s' AS _api
return {
status: OK / ERROR,
data: '{fieldname: value}'
}
- delay | onClick | etc. zum ausfuehren der function.
- vorgefertigte Funktionen fuer edit / delete.
- Beispiel: Edit input field mit |E - kann zb. ein Text anzeigen, bis darauf geklickt wird - dann wird daraus ein input field
PHP Seite:
Eine Mini API die den request per get oder sip entgegen nimmt und je nach funktion ein return liefert.
- Bei Edit - return mit den geaenderten Feldern in der Datenbank
- Bei Delete - return mit true
- Bei Select - return der angegebenen Felder einer bestimmten id (oder eventuell auch nach sql selector)
Client Seite:
Wird zuerst ueber GET getestet bei aktuellen anforderung des Exam Tools und dann entsprechend aufgearbeitet. _api konvertierung im report muss also noch nicht erstellt werden - fokus auf die API.
Updated by Benjamin Baer over 3 years ago
<script>
$("#requesthelp").on('click', function() {
var request = $.ajax({
url: "api.php",
method: "POST",
data: {
table: "ExamStudent",
values: {
raiseHand: "Yes"
}
dataType: "JSON"
}
});
request.done(function(msg) {
console.log("Message", msg);
});
request.fail(function(jqXHR, textStatus) {
console.error("Request failed: " + textStatus);
});
});
</script>
Updated by Carsten Rose over 3 years ago
- Meeting mit ME, BB, CR
- Aktuell geht es nur um GET (kein POST, SET)
Konzept:
- In Report wird in einem SELECT Statement eine Spalte `'...' AS _live` definiert.
- QFQ erzeugt/liefert ein HTML SPAN Element an den Client.
- Im Client wird via qfq.js (definiert durch das HTML SPAN Element) alle x-Millisekunden ein API Call ausgefuehrt.
- Zurueck kommt (in einer ersten Version) HTML Code (eingepackt in eine JSON Antwort, siehe PROTOCOL.md 'element-update').
- Der Inhalt des HTML SPAN Elements wird ersetzt durch die Antwort.
- In einer ersten Version referenziert `'...' AS _live` immer einen anderen tt_content. Ein solcher Record kann optional mit 'render=api' auf der gleichen Seite angelegt werden und stoert dann die Ausgabe nicht. Achtung: auf so einer Seite sollte dann kein QFQ Excel Export sein.
- Den 'live' sollte man auch via '_link' aktvieren koennen, damit waere die Nutzung auf in HEAD, TAIL , ... via `{{'...' AS _link}}` moeglich.
Updated by Carsten Rose over 3 years ago
- Status changed from New to In Progress
Parameter:
- data-api: mandatory, SIP encoded (default) oder plain Parameter. Der QFQ Content entscheidet ob nur SIP akzeptiert wird.
- data-parent-id="lustigesElement": optional. By default wird der Value des aktuellen Elements aktualisiert. Mit dieser HTML-ID kann ein beliebiges anderes Element definiert werden, deren Content ersetzt wird.
- data-response="html". Optional
- data-on-action="refresh". Optional
- data-refresh="1000". Optional
- data-callback="jsonFunction". Optional
- data-action="get". Optional
# QFQ / Report SELECT 'action:get|uid:12345&examId=5|s|parentId:lustigesElement|response:html|on:refresh|callback:jsonFunction|refresh:1000' AS _live # HTML <div id='<uid>_<count>' class="qfq-live" data-api="typo3conf/ext/qfq/Classes/Api/live.php&s=badcaffee" data-parent-id="lustigesElement" data-response="html" data-on-action="refresh" data-refresh="1000" data-callback="jsonFunction" data-action="get"> </div>
Updated by Carsten Rose over 3 years ago
Offene Punkte:
- weitere RenderMode implementieren (am besten alle). z.B. `r:3` damit der initiale Text angezeigt wird, es aber noch keine Funktionalitaet gibt.
- bisher ist nur `AS _link` impelmentiert, es fehlt `AS _live`
- uid Parameter wird nicht korrekt gehandhabt (beim genieren der SIP wird aus 'uid' ploetzlich 'id') - abschauen wie das beim Excel Export gemacht wurde.
- Inline Code (das Gegenteil von uid) ist noch nicht implementiert - ist das ueberhaupt noetig, wie koennte die Notation sein?
Updated by Carsten Rose over 3 years ago
- Tracker changed from Support to Feature
- Subject changed from Konzept _api to Konzept _api / _live
Actions