Project

General

Profile

Feature #15524

Updated by Carsten Rose about 1 year ago

Ziel: Um einfach beliebige Daten anschauen / bearbeiten / exportieren koennen. zu koennen: 

 Features: 

 * Repository enthaelt beliebige vorgegebene oder benutzerdefierte Reports. Das sind *keine* QFQ Reports mit @10.sql=...@ sondern ein simples SQL Statement. 
 * Optional koennen Eintraege in dem Repository durch Benutzer erstellt/angepasst werden.  
 * Damit haben wir einen generischen Report Generator auf SQL Basis. 
 * Jeder GenericReport hat einen Excel Exports (Button) 
 * Fuer jeden Report kann QFQ 'on the fly' ein Form Detail rendern. 
 * Jede Row (Record) kenn editiert oder geloescht werden. 

 Details: 

 * In einer Tabelle 'GenericReport' werden pro Report alle Details SQL SELECT Anweisungen hinterlegt. 

    

   * Spalten: sql1, genericReport (uniq name for this report),    description, required (comma list of required SIP arguments), sqlStoreVar (SELECT Definition), formForDelete (siehe unten), fileNameExcelExport (kann QFQ Variablen enthalten), head (Textarea Feld mit QFQ Variablen welches ueber dem Report und im Excel ueber den Daten ausgegeben wird). showNew, showEdit, showDelete (default: on). enthalten). 
 
 * Eine T3 Page 'Generic Report' wird mit dem SIP Parameter 'genericReport=<uniq name>' und weiteren SIP Parametern aufgerufen. 

   
 * Report Code: @genericReport = {{genericReport:SE}}@ 

 * Der Report wird mit TableSorter dargestellt, inkl. ColumnSelector. ColumnSelector 
 * Die Spaltennamen des SQL Statements: 

   * a) referenzieren direkt eine Tabellenspalte (darueber kann der Spaltentyp ermittelt werden fuer einen Excel Export oder das generische Formular). Tabellenspalte. 
   * b) bei z.B. CONCAT() oder '... AS something' oder bei einem SQL View Statement: im Spaltennamen die Definition. Bsp: 'Person|VARCHAR(20)|'.  

     * Ein SET mit 2 Angaben (yes/no, on/off, 1/0, true/false) wird automatisch zu einer Checkbox. Der unchecked Wert ist der Default aus der Spaltendefinition. 
     * Ein SET mit mehr als 2 Angaben oder ein ENUM fuehrt zu einem Multi-Select. 'Person|VARCHAR(20)|' 

 * Mit den Spaltendefinitionen kann: 

   * Der Tablesorter auch nach Datum oder numerisch sortieren. 
   * Kann ein generisches Excel erzeugt werden, inkl. korrekter Zellendefinition (Tex, Int, Float, Dezimal, Datum, Zeit, Datum-Zeit) werden. 
   * Ein generisches Formular erzeugt werden (Form wird 'on demand'in die on demand in Tabelle Form/FormElement gerendert).  

     * FormName: _<genericReport> 
     * Edit: Wird angezeigt wenn Gibt es min. eine Spalte 'id' gibt - es 'id', wird ein Edit-Link Edit / Delete Link gerendert.  

     * Ein dem DELETE wird nur gerendert der das zuvor dynamisch erstellte Form verwendet (mit der ersten 'id' Spalte aus der aktuellen Row).  
     * Delete: Wird angezeigt wenn es min. genau eine Spalte 'id' gibt existiert und eine primary Tabelle eindeutig bestimmt werden kann (erste Tabelle nach dem FROM Statement) oder ein Form in @formForDelete@ gesetzt ist.  
     

 * New: Button.  

 Die Angabe @sql1: SELECT * FROM Person@ fuehrt automatisch zu einem vollstaenigen Reprt, mit Edit / Delete Link und einem Excel Export. 
 * Fuer den Report wird vergleichbar fuehren wir alternativ zu dem Schluesselwort 'form' das neue 'sql' ein neues Wort 'genericReport' einefuehrt.  

   * ein. BSP: genericReport 10.genericReport = {{genericReport:SE}} SELECT * FROM Person 

   * Ausgabe: head,althead,shead,tail,stail 
   * Nicht beachten: alle anderen 
   * Excel Export  

     * via @fileNameExcelExport@ kann der Exportdateiname vorgegeben werden. Falls nicht gesetzt: Tabellenname_Datum.xlsx.  
     * <br> erzeugt eine neue Zeile im Excel. 
     * Die Titelzeile wird gesetzt. 

 * Die Funktion, um Formulare 'on the fly' zu rendern, wird neu im FormEditor angeboten, um ein komplettes Form mit einem Mausklick (a la template) zu erzeugen.  

   * Vorschlag: Neues Form anlegen, Primary Tabelle waehlen, in dem Moment erscheit ein Link im Notizfeld 'Create Form', ein Klick darauf legt alle FE fuer die gewaehlte Tabelle in dem neuen Form an.

Back