As an user with read permissions on a(some) document(s)
I want to see metadata differences to understand differences
Comparing metadata is always based on two documents or versions simultaneous: a "before" and "after".
The comparison is done for each schema. So, only common schemas are compared and should be displayed in comparison.
Each schema should be presented individually, with a comparison for each propriety.
For each propriety, if there is a specific element that can represent that propriety, it should be used (ie. Data, User, Group, Document).
Complex proprieties fields should be indented according to the depth level (ie. field inside a complex inside a complex should have double indent).
Multi-value (arrays) should be listed also with an indent.
In terms of showing differences for basic types, the mechanism heuristic should present the removed content from the "before" doc/version and additions for the "after" doc/version. This can be displayed in two modes:
- On column for each doc/version with "before" content, highlight what was removed and with complete "after" content, highlighted the additional content.
- On one column only, where both doc/version content is shown with the removal and addition highlighted.
The scope of properties shown should also have two modes:
- show all, where all proprieties, are shown
- show difference, where only proprieties with differences are shown.
Should be possible for the user to choose a one or two column layout:
- in one column, should be provided additions and removal. Is the only possibility in small screens (changes to this mode on window size reduction)
- in two columns, should have removals on left column and additions on right one.
Both "before" and "after" are part of a set of documents/versions. The user can select any of the document for each position but should not be possible to choose the same one.
Routing should only have the two documents being compared at each time on the URL. All the other documents on the compare set should be only contextual information lost on refresh.