Note Form » History » Revision 24
Revision 23 (Zhoujie Li, 07.03.2024 11:01) → Revision 24/25 (Zhoujie Li, 07.03.2024 11:15)
h1. Note Form h3. Motivation Das Note soll dazu dienen auf beliebige Formular einer Notiz aufzumachen. Und ganz einfach für sich selber oder für anderen als toDo zu tagen. h3. Datenstruktur Table *NoteForm* (wird mit geliefert als default table) * id <int> * pIdCreator <int> * xId <int> Die ID des aktuellen Formulars, zu dem die Notiz gehört. * formId <int> * tableName <varchar> * note <text> * access <enum ('private','set of group','all')> Bestimmt die Sichtbarkeit der Notiz (privat, gruppenbasiert oder öffentlich). * reminderDate <datetime> * isDone <enum('yes','no')> * formName <varchar> Table *Ggroup* (wird *nicht* mit geliefert) * id <int> * grId <int> * reference <varchar> "note_form_tag" (this is mendatory for tags) * name <varchar> Table *GroupMember* (wird *nicht* mit geliefert) * id <int> * grId <int> * xId <int> h3. Interface * Ein Notiz-Button zeigt die Anzahl vorhandener Notizen an. * Ein Modal-Fenster listet alle zugehörigen Notizen auf, inklusive einer Scrollbar für lange Listen. * Die Benutzeroberfläche reagiert dynamisch auf Änderungen, die über AJAX-Requests durchgeführt werden. * Funktionen im Modal-Fenster: ** Done-Button zum Markieren von Notizen als erledigt. ** Frei erstellbare Tags für spätere Filterung im Dashboard. ** Löschen-Button zum Entfernen von Notizen. ** Bearbeitungsmöglichkeit für ausgewählte Notizen. *Skizze* !clipboard-202401291353-oc8zv.png! *Mock up* !clipboard-202402211132-bwgkj.png! !clipboard-202402211133-v2kfe.png! h3. Funktionbeschreibung *Mögliche Funktion* * Falls keine Reminder gesetz wird wird dieser nicht in dashboad angezeigt? * Es wäre gut falls die Daten nicht erfolgreich gespeichert werden, werden sie im lokalen Speicher (LocalStorage) gesichert, um Datenverlust zu vermeiden. h3. Dashboard *Hier ist ein einfacher Dashboard "report" zur Übersicht, in dem man angelegte Notizen sehen kann, und es wird farblich angezeigt, falls sie noch nicht auf done gesetz ist.* <pre> # # NoteForm Dashboard # form = '{{form:SE}}' # get current Person id { sql = SELECT p.id AS _currentPid FROM Person AS p WHERE p.account = '{{feUser:UTE}}' } # build table { sql = SELECT f.id AS _fId , nf.xId AS _xId , nf.formName AS _formName , nf.formTitle AS _fTitle FROM NoteForm AS nf, Form AS f WHERE f.id = nf.formId GROUP BY nf.xId head = <table class="table table-hover qfq-table-50 tablesorter tablesorter-filter"> class="table"> <thead> <th></th> <tr> <th>Count</th> <th>Title</th> <th>Form</th> <th>Done</th> </tr> </thead> <tbody> tail = </table></tbody> # count note which is not done </table> { sql = SELECT COUNT(*) AS _noteNotDone FROM NoteForm AS nf WHERE nf.formId = '{{fId:R0}}' AND nf.xId = '{{xId:R0}}' AND nf.isDone = 'no' AND nf.hasToolbar = 'yes' GROUP BY formId } # prepare notes and build button-group { sql = SELECT CONCAT('p:{{pageSlug:T}}?form={{formName:RE}}&r=',nf.xId,'&formId=',nf.formId,'&xId={{xId:RE}}|s|b|E') AS '_link|_hide|editFormButton' , CONCAT('p:{{pageSlug:T}}?form=noteForm&r=0&formId={{fId:R0}}&xId={{xId:R0}}&formName={{formName:RE}}&formTitle={{fTitle:RE}}&type=1 |s|G:glyphicon-paperclip|t:<span' , IF('{{noteNotDone:R0}}' > 0 AND COUNT(nf.xId) != 0 ,' style="background-color:#f89406"; class="badge">',' class="badge">'),COUNT(nf.xId),'</span>|b|g:_blank') AS '_link|_hide|editNoteButton' , IF(nf.hasToolbar = 'yes' AND nf.isDone = 'no', 'pending',IF(nf.hasToolbar = 'no','not important','DONE')) AS _isDone FROM NoteForm AS nf, Form AS f WHERE nf.formId = f.id AND f.id = '{{fId:R0}}' AND nf.xId = '{{xId:R0}}' AND ((nf.access = 'all') OR (nf.access = 'private' AND nf.pIdCreator = '{{currentPid:RE}}')) GROUP BY f.id { sql = SELECT '' head = <tr><td> <div class="button-group"> {{&editFormButton:RE::-}} {{&editNoteButton:RE::-}}</td> </div> tail = </tr> # output Form { sql = SELECT '{{fTitle:RE}}' , '{{formName:RE}}' , '{{isDone:RE}}' fbeg = <td> fend = </td> } } } } </pre> h2. noteForm h3. Use-Cases *Topic: QFQ Branch newFeature* [1] CR: ich schreibe hier ein Protokoll ich schreibe hier ein Protokoll ich schreibe hier ein Protokoll ich schreibe hier ein Protokoll ich schreibe hier ein Protokoll ich schreibe hier ein Protokoll TAG: 'project x', 'protokoll' ACCESS: All [2] CR: ich mache mir hier eine notizt mit Reminder: bitte Fenster oeffnen Reminder: +24h ACCESS: All [3] ZL: Es wird kalt, Fenster bitte schliessen ACCESS: All [4] CR: Ruecksprache mit Institutsleitung (IL) TAG: 'projekt x', 'IL', GROUP: IT-IL, BB-ZL-CR ACCESS: All|Private Reminder: +24h DONE: wird durch CR gesetzt wenn Aufgabe abgeschlossen ist ---------------- * 'ACCESS: All' * Dashboard: nicht anzeigen * Detailansicht: anzeigen * 'ACCESS: All,<group>' (ich bin member of '<group>') * Dashboard: anzeigen * Detailansicht: anzeigen * 'ACCESS: Private' * Dashboard: anzeigen wenn ich der Owner bin * Detailansicht: anzeigen wenn ich der Owner bin ----------------- *Roadmap* *V.1.0* * Notiz Form mit 'text', 'done' * Speichern via regulaerem QFQ Save * Bestehende Notizen im Form anzeigen * Notiz Form mit 'tags' * Bestehende Notizen editieren / loeschen * Neue Browser fenster *V.1.1* * Typeahead nach 'tags' suchen * Dashboard * Reminder Email *V.1.2* * floating divs * minimieren / resize * oder Modal