Project

General

Profile

Feature #7480

Record History (Undo / Redo)

Added by Carsten Rose over 1 year ago. Updated 6 months ago.

Status:
New
Priority:
Normal
Assignee:
Target version:
Start date:
13.12.2018
Due date:
% Done:

0%

Estimated time:
Discuss:

Description

  • Es waere gut wenn es in QFQ eine History der Records gaebe.
  • Schoen waere auch ein Undo/Redo

Tipp von Marc:

Stackoverflow Frage:
https://stackoverflow.com/questions/12563706/is-there-a-mysql-option-feature-to-track-history-of-changes-to-records

Loesung MYSQL Triggers + history tabellen:
https://stackoverflow.com/a/12657012


Related issues

Related to QFQ - Feature #2361: Logging wer/wann/wo welches Formular aufgerufen hatNew2016-08-18

History

#1 Updated by Carsten Rose over 1 year ago

  • Subject changed from Record (Form) History to Record History
  • Target version set to next
  • Ob ein Form eine History anbietet, kann pro Form aktiviert werden.
  • Speichert ein Form (Update) einen Record, wird geschaut ob es eine zugehoerige Tabelle XX<tablename> gibt.
    • Falls ja wird der History Record gespeichert.
    • Falls nein wird geschaut ob fuer das Form 'saveHistory' aktiv ist. Falls ja, wird die Tabelle XX<tablename> angelegt und der History Record gespeichert.
  • Der History Record kann aus dem STORE_BEFORE kopiert werden.
  • Der Werty der Spalte 'id' wird in 'idOrig' kopiert.
  • Zusaetzlich gibt es eine Tabelle 'History' in dem User, IP, Client, Formular, Tablename, <tablename>.id, flagDeleted gespeichert wird.
  • Auf jedem Form gibt es ein 'History' Button.
  • Mouse Over zeigt die History der letzten 5 Aenderungen an.
  • Klick man auf dem Button kommt man auf eine Seite
    • in der alle Timestamps aller Aenderungen angezeigt werden und man zwei beliebige vergleichen kann.
    • man kann einen Record auswaehlen und wieder herstellen - das From wird anschliessend mit dem Record geladen.
  • Wird ein Record geloescht, wird der Record zuvor nach 'XX<tableName>' kopiert und 'history.deleted'=1 gesetzt.
  • Auf der History Seite ist ein Trasch vorhanden.
    • Dort kann man geloeschte Records wieder herstellen ('id' bleibt erhalten).
    • Wurde durch ein Form auch Sub-Records geloescht, bestaende die Moeglichkeit auch solche Records (vor dem Loeschen) zu vermerken und dann wieder zusammen herzustellen.

#2 Updated by Carsten Rose over 1 year ago

  • Subject changed from Record History to Record History (Undo / Redo)

#4 Updated by Carsten Rose about 1 year ago

  • Related to Feature #2361: Logging wer/wann/wo welches Formular aufgerufen hat added

#5 Updated by Carsten Rose 11 months ago

  • Assignee set to Carsten Rose
  • Target version changed from next to 20.5.1
  • Obige Idee ist zu kompliziert. Es gibt bereits die Tabelle 'FormSubmitLog'.

Neue Idee:

  • Jedes Form erhaelt einen Button 'History' (glyphicon-time).
  • Ein Klick oeffnet auf der gleichen Seite das gleiche Form im 'showHistory' Mode:
    • Der History Button wird gruen dargestellt.
    • 100% identische Funktion.
    • Zu jedem Feld gibt es ein Symbol mit Popup: wann wer den Inhalt geaendert hat - user,timestamp,value
    • Ein weiterer Klick auf den History oeffnet auf der gleichen Seite eine Liste mit allen Aenderungen, seit bestehen des Records.
    • Der History Button kann off/disabled/enabled sein.
    • Bei der Anzeige der History sollte man konfigirieren koennen:
      • Anzeige alle Aenderungen
      • Anzeige Aenderungen des aktuellen Users.
  • Die Liste der Aenderungen wird bestimmmt via:
    • Anhand der 'formId > Primary Tabelle' werden alle Change Records bestimmt.
    • Im FormSubmitLog.formData JSON String sind alle Spaltennamen: es sollte sehr einfach moeglich sein pro Spalte die Aenderungen zusammenzustellen.
  • Ein Undo koennte aufwendig werden.
  • Einfach moeglich sein sollte ein 'Pro Feld Undo': via Javascript wird der alte Inhalt in das aktuelle Feld kopiert.

#6 Updated by Carsten Rose 10 months ago

  • Description updated (diff)

#7 Updated by Elias Villiger 9 months ago

MariaDb hat ab Version 10.3 das Feature nativ mit dabei, siehe z.B. https://mariadb.com/kb/en/library/temporal-data-tables/ und https://mariadb.com/resources/blog/automatic-data-versioning-in-mariadb-server-10-3/

Vermutlich haben wir an einigen Stellen noch nicht die Version 10.3 (geolean hat 10.0), aber wäre vielleicht ein Gedanke wert.

#8 Updated by Carsten Rose 9 months ago

Danke fuer den Hinweis - das war mir nicht bekannt. MariaDB 10.3 ist noch nicht einmal in Ubuntu 18 - man kann es aber nachinstallieren

#10 Updated by Carsten Rose 6 months ago

  • Status changed from New to Some day maybe

#11 Updated by Carsten Rose 6 months ago

  • Status changed from Some day maybe to New

Also available in: Atom PDF