Viewing snapshots for arbitrary entities is possible using the com/haulmont/cuba/gui/app/core/entitydiff/diff-view.xml
frame. For example:
<iframe id="diffFrame" src="/com/haulmont/cuba/gui/app/core/entitydiff/diff-view.xml" width="100%" height="100%"/>
The snapshots should be loaded into the frame from the edit screen controller:
public class CustomerEditor extends AbstractEditor<Customer> { @Inject protected EntityDiffViewer diffFrame; ... @Override protected void postInit() { if (!PersistenceHelper.isNew(getItem())) { diffFrame.loadVersions(getItem()); } } }
The diff-view.xml
frame shows the list of snapshots for the given entity, with an ability to compare them. The view for each snapshot includes
the user, date and time. When a snapshot is selected from the list, the changes will be displayed compared to the previous
snapshot. All attributes are marked as changed for the first snapshot. Selecting two snapshots shows the results of the comparison
in a table.
The comparison table shows attribute names and their new values. When a row is selected, the detailed information on attribute changes across two snapshots is shown. Reference fields are displayed according to their instance name. When comparing collections, the new and removed elements are highlighted with green and red color respectively. Collection elements with changed attributes are displayed without highlighting. Changes to element positions are not recorded.