Project

General

Profile

Feature #10979

Ajax Calls an API - dataReport

Added by Philipp Gröbelbauer 2 months ago. Updated 27 days ago.

Status:
Closed
Priority:
Normal
Assignee:
Target version:
Start date:
07.08.2020
Due date:
% Done:

0%

Estimated time:
Discuss:

Description

- QFQ Page Content per AJAX ausführen
- Über API, sodass kein Performance Verlust durch Typo3
- return Resultat des QFQ Page Contents

(HTML Snippet zum Testen hängt an diesem Ticket)

html_snippet.html (2.76 KB) html_snippet.html Philipp Gröbelbauer, 07.08.2020 12:23
dataReport2.png (41.9 KB) dataReport2.png Carsten Rose, 09.08.2020 17:20
dataReport.png (98.5 KB) dataReport.png Carsten Rose, 09.08.2020 17:20
3937
3938

Associated revisions

Revision b452306e (diff)
Added by Carsten Rose 2 months ago

Plain implementation - functional. No support to easy usage.

Revision 7d60d5d1 (diff)
Added by Carsten Rose about 1 month ago

Refs #10979 Not finally implemented, but should be documented not to forget it and it's already used in LK.

History

#1 Updated by Carsten Rose 2 months ago

  • Subject changed from Ajax Calls an API to Ajax Calls an API - dataReport
  • Status changed from New to In Progress

#2 Updated by Carsten Rose 2 months ago

  • In einer ersten Version wird die regulaere Link Klasse genutzt.
  • Es wird kein HTML/ Javascript generiert, das muss explizit gemacht werden
    SELECT '<a href="typo3conf/ext/qfq/Classes/Api/dataReport.php?s='
           , 'U:uid=159&arg1=Hello&arg2=World|s|r:8' AS _link
           , '">Call 159 (this record)</a>',
    
  • Das '... AS _link' liefert `badcaffee1234`.

Als Return von dem Aufruf kommt 1:1 der Code den der Report ausgibt (kein JSON).

#4 Updated by Carsten Rose 2 months ago

Diskussion PG, CR:

  • Vorschlag von CR, mit 'JS Templates' zu arbeiten, scheint keine nennenswerte Vorteile zu bringen.
  • Vorschlag von PG, ein '... AS _link' der in den link Parametern CallBack fuer 'success', 'error' vorgibt, scheint keine nennenswerte Vorteile gegenueber der nativen JS Implemention zu bringen.
  • Auf folgendes geeinigt:
    20 {
      sql = SELECT 'J:uid=100&xId=3|s' AS '_link|col1' # Output: 'typo3conf/ext/qfq/Classes/Api/dataReport.php?s=000000000'
    }
    
    30.head = <script>
      function writeYourOwnAjax(){
        $.ajax({
        url: '{{col1:RE}}',
        data: {a:30, b:430, c:0},
        method: 'POST',
        dataType: 'JSON',
        success: function(response) {ajaxSuccess(response);},
        error: function(jqXHR, textStatus, errorThrown) {ajaxError(jqXHR, textStatus, errorThrown);}
        });
        }
        </script>    
    
  • Neuer Hauptqualifier 'J' fuer Ajax.
  • `typo3conf/ext/qfq/Classes/Api/dataReport.php` wird hart reinkodiert.
  • Parameter koennen 'plain' oder 'SIP kodiert' uebergeben werden.
  • `r:8' ist nicht mehr noetig.
  • Der Output der QFQ-Records wird ausgegeben.
  • Es gibt zwei neue Variablen (ohne Zeilennummer, werden ersetzt nachdem Report durchgelaufen ist):
    statusCode = {{statusCode:R}}   //200  404
    statusMessage = missing value
    
  • Enthaelt der statusCode einen Wert !=200, wird JS den 'error' CallBack aufrufen.
  • statusMessage kann mehr Details enthalten.
  • Sollte es OS / PHP Probleme geben, sind diese Werte sowieso gestzt.
  • Neu kann zusaetzlich der User Code die Werte beeinflussen. Ein StatusCode !=200 koennte (wenn implementiert) eine Standard QFQ Error Box anzeigen.

#5 Updated by Carsten Rose 2 months ago

  • Assignee changed from Carsten Rose to Marc Egger

#6 Updated by Marc Egger 2 months ago

  • Status changed from In Progress to Priorize

#7 Updated by Carsten Rose about 1 month ago

Unfinished implementation (already used by Teaching Tools) and small documentation under http://docs.qfq.io/en/develop/Report.html#api-call-qfq-report.

#8 Updated by Marc Egger 27 days ago

  • Status changed from Priorize to Closed

Es ist nun moeglich, auch die header der antwort zu setzen.
Ich habe die Doku etwas ausgebessert.
Bis ein neuer Request kommt, wuerde ich die Implementation so lassen.

Also available in: Atom PDF