Content
View differences
Updated by Parimal Satyal about 3 years ago
### User Story
**As** an OpenProject user
**I want** to be able to see an overview of changes to work packages that have been made compared to a specific date in the past
**so that** I better understand the status and progress of my project.
### Extend the data model and the API to save and query historic values of work packages
* Extend the data model
* Extend the API
* It is possible to filter on historic values, e.g.
* All work packages that have been in status "scheduled" on 2022-01-01
* All work packages that were assigned to version 12.1 and all work packages that have been added or removed since a specific date.
`Note: The largest uncertainty when planning and estimating this feature comes from the performance requirements. We need to ensure that this feature also works for large organizations that have large data sets with a high number of concurrent requests.`
## Extend work package filters to request historic values from the API
* Extend the view to allow users to query a date (in the past)
* A specific date and hour
* Relative date and specific time (yesterday at 12 PM CEST)
* ~~B: A relative date, e.g:~~
* ~~24 hours~~
* ~~1 week~~
* ~~1 month~~
* Rebuild work package queries to allow requesting a list of relevant work packages, including the changes.
<img class="op-uc-image op-uc-image_inline" src="/api/v3/attachments/52535/content">
## Extend the work packages list view to display changes
* Changes to the following work package core attributes are highlighted in a diff view.
* Status
* Assignee
* Accountable
* Project
* Start date
* Finish date
* Type
* Priority
* Subject
* Version
* Parent
* **\[open\]** Custom fields
* Full list of attributes and what to do for each version below.
* Work packages that were added or removed within the specified time period, ie, between the comparison date and today, are highlighted (e.g. deliverables that were added to the project scope or features that were removed from a release).
* List the number of attributes that have been changed in that time period. This number also includes changes to the work package description, the details of which which are not shown in the list view.
## Attributes
**Green** - Already implemented in code
**Blue** - Confirmed for 13.0
**Yellow** - To be confirmed or discussed for 13.0
**Orange** - Not included for 13.0
<figure class="table op-uc-figure_align-center op-uc-figure"><table class="op-uc-table"><tbody><tr class="op-uc-table--row"><td class="op-uc-p op-uc-table--cell" style="background-color:#b0b3b2;border:1.0px solid #000000;height:11.0px;padding:4.0px;vertical-align:top;width:162.0px;"><strong>Attribute</strong></td><td class="op-uc-p op-uc-table--cell" style="background-color:#b0b3b2;border:1.0px solid #000000;height:11.0px;padding:4.0px;vertical-align:top;width:175.0px;"><strong>Show value diff (before/after)</strong></td><td class="op-uc-p op-uc-table--cell" style="background-color:#b0b3b2;border:1.0px solid #000000;height:11.0px;padding:4.0px;vertical-align:top;width:232.0px;"><strong>Timestamp filtering (indicate +/-/modified)</strong></td><td class="op-uc-p op-uc-table--cell" style="width:100px;"><strong>SORT / GROUP / SUM</strong></td><td class="op-uc-p op-uc-table--cell" style="background-color:#b0b3b2;border:1.0px solid #000000;height:11.0px;padding:4.0px;vertical-align:top;width:89.0px;"><strong>Version</strong></td><td class="op-uc-p op-uc-table--cell" style="background-color:#b0b3b2;border:1.0px solid #000000;height:11.0px;padding:4.0px;vertical-align:top;width:200.0px;"><strong>Remark</strong></td></tr><tr class="op-uc-table--row"><td class="op-uc-p op-uc-table--cell" style="background-color:#ACE1AF;border:1.0px solid #000000;height:12.0px;padding:4.0px;vertical-align:top;width:162.0px;"><strong>Status</strong></td><td class="op-uc-p op-uc-table--cell" style="background-color:#ACE1AF;border:1.0px solid #000000;height:12.0px;padding:4.0px;vertical-align:top;width:175.0px;"><strong>DONE</strong></td><td #000000;height:12.0px;padding:4.0px;vertical-align:top;width:175.0px;"><strong>YES</strong></td><td class="op-uc-p op-uc-table--cell" style="background-color:#ACE1AF;border:1.0px solid #000000;height:12.0px;padding:4.0px;vertical-align:top;width:175.0px;"><strong>DONE</strong></td><td #000000;height:12.0px;padding:4.0px;vertical-align:top;width:232.0px;"><strong>YES</strong></td><td class="op-uc-p op-uc-table--cell" style="width:100px;">Y / Y / N</td><td class="op-uc-p op-uc-table--cell" style="background-color:#ACE1AF;border:1.0px solid #000000;height:12.0px;padding:4.0px;vertical-align:top;width:89.0px;">12.5 API</td><td class="op-uc-p op-uc-table--cell" style="background-color:#ACE1AF;border:1.0px solid #000000;height:12.0px;padding:4.0px;vertical-align:top;width:200.0px;">Already available via API since 12.5</td></tr><tr class="op-uc-table--row"><td class="op-uc-p op-uc-table--cell" style="background-color:#ACE1AF;border:1.0px solid #000000;height:11.0px;padding:4.0px;vertical-align:top;width:162.0px;"><strong>Assignee</strong></td><td class="op-uc-p op-uc-table--cell" style="background-color:#ACE1AF;border:1.0px solid #000000;height:11.0px;padding:4.0px;vertical-align:top;width:175.0px;"><strong>DONE</strong></td><td #000000;height:11.0px;padding:4.0px;vertical-align:top;width:175.0px;"><strong>YES</strong></td><td class="op-uc-p op-uc-table--cell" style="background-color:#ACE1AF;border:1.0px solid #000000;height:11.0px;padding:4.0px;vertical-align:top;width:175.0px;"><strong>DONE</strong></td><td #000000;height:11.0px;padding:4.0px;vertical-align:top;width:232.0px;"><strong>YES</strong></td><td class="op-uc-p op-uc-table--cell" style="width:100px;"></td><td class="op-uc-p op-uc-table--cell" style="background-color:#ACE1AF;border:1.0px solid #000000;height:11.0px;padding:4.0px;vertical-align:top;width:89.0px;">12.5 API</td><td class="op-uc-p op-uc-table--cell" style="background-color:#ACE1AF;border:1.0px solid #000000;height:11.0px;padding:4.0px;vertical-align:top;width:200.0px;">Already available via API since 12.5</td></tr><tr class="op-uc-table--row"><td class="op-uc-p op-uc-table--cell" style="background-color:#ACE1AF;border:1.0px solid #000000;height:11.0px;padding:4.0px;vertical-align:top;width:162.0px;"><strong>Accountable</strong></td><td class="op-uc-p op-uc-table--cell" style="background-color:#ACE1AF;border:1.0px solid #000000;height:11.0px;padding:4.0px;vertical-align:top;width:175.0px;"><strong>DONE</strong></td><td #000000;height:11.0px;padding:4.0px;vertical-align:top;width:175.0px;"><strong>YES</strong></td><td class="op-uc-p op-uc-table--cell" style="background-color:#ACE1AF;border:1.0px solid #000000;height:11.0px;padding:4.0px;vertical-align:top;width:175.0px;"><strong>DONE</strong></td><td #000000;height:11.0px;padding:4.0px;vertical-align:top;width:232.0px;"><strong>YES</strong></td><td class="op-uc-p op-uc-table--cell" style="width:100px;"></td><td class="op-uc-p op-uc-table--cell" style="background-color:#ACE1AF;border:1.0px solid #000000;height:11.0px;padding:4.0px;vertical-align:top;width:89.0px;">12.5 API</td><td class="op-uc-p op-uc-table--cell" style="background-color:#ACE1AF;border:1.0px solid #000000;height:11.0px;padding:4.0px;vertical-align:top;width:200.0px;">Already available via API since 12.5</td></tr><tr class="op-uc-table--row"><td class="op-uc-p op-uc-table--cell" style="background-color:#ACE1AF;border:1.0px solid #000000;height:11.0px;padding:4.0px;vertical-align:top;width:162.0px;"><strong>Project</strong></td><td class="op-uc-p op-uc-table--cell" style="background-color:#ACE1AF;border:1.0px solid #000000;height:11.0px;padding:4.0px;vertical-align:top;width:175.0px;"><strong>DONE</strong></td><td #000000;height:11.0px;padding:4.0px;vertical-align:top;width:175.0px;"><strong>YES</strong></td><td class="op-uc-p op-uc-table--cell" style="background-color:#ACE1AF;border:1.0px solid #000000;height:11.0px;padding:4.0px;vertical-align:top;width:175.0px;"><strong>DONE</strong></td><td #000000;height:11.0px;padding:4.0px;vertical-align:top;width:232.0px;"><strong>YES</strong></td><td class="op-uc-p op-uc-table--cell" style="width:100px;"></td><td class="op-uc-p op-uc-table--cell" style="background-color:#ACE1AF;border:1.0px solid #000000;height:11.0px;padding:4.0px;vertical-align:top;width:89.0px;">12.5 API</td><td class="op-uc-p op-uc-table--cell" style="background-color:#ACE1AF;border:1.0px solid #000000;height:11.0px;padding:4.0px;vertical-align:top;width:200.0px;">Already available via API since 12.5</td></tr><tr class="op-uc-table--row"><td class="op-uc-p op-uc-table--cell" style="background-color:#ACE1AF;border:1.0px solid #000000;height:11.0px;padding:4.0px;vertical-align:top;width:162.0px;"><strong>Start date</strong></td><td class="op-uc-p op-uc-table--cell" style="background-color:#ACE1AF;border:1.0px solid #000000;height:11.0px;padding:4.0px;vertical-align:top;width:175.0px;"><strong>DONE</strong></td><td #000000;height:11.0px;padding:4.0px;vertical-align:top;width:175.0px;"><strong>YES</strong></td><td class="op-uc-p op-uc-table--cell" style="background-color:#ACE1AF;border:1.0px solid #000000;height:11.0px;padding:4.0px;vertical-align:top;width:175.0px;"><strong>DONE</strong></td><td #000000;height:11.0px;padding:4.0px;vertical-align:top;width:232.0px;"><strong>YES</strong></td><td class="op-uc-p op-uc-table--cell" style="width:100px;"></td><td class="op-uc-p op-uc-table--cell" style="background-color:#ACE1AF;border:1.0px solid #000000;height:11.0px;padding:4.0px;vertical-align:top;width:89.0px;">12.5 API</td><td class="op-uc-p op-uc-table--cell" style="background-color:#ACE1AF;border:1.0px solid #000000;height:11.0px;padding:4.0px;vertical-align:top;width:200.0px;">Already available via API since 12.5</td></tr><tr class="op-uc-table--row"><td class="op-uc-p op-uc-table--cell" style="background-color:#ACE1AF;border:1.0px solid #000000;height:11.0px;padding:4.0px;vertical-align:top;width:162.0px;"><strong>Finish date</strong></td><td class="op-uc-p op-uc-table--cell" style="background-color:#ACE1AF;border:1.0px solid #000000;height:11.0px;padding:4.0px;vertical-align:top;width:175.0px;"><strong>DONE</strong></td><td #000000;height:11.0px;padding:4.0px;vertical-align:top;width:175.0px;"><strong>YES</strong></td><td class="op-uc-p op-uc-table--cell" style="background-color:#ACE1AF;border:1.0px solid #000000;height:12.0px;padding:4.0px;vertical-align:top;width:175.0px;"><strong>DONE</strong></td><td #000000;height:11.0px;padding:4.0px;vertical-align:top;width:232.0px;"><strong>YES</strong></td><td class="op-uc-p op-uc-table--cell" style="width:100px;"></td><td class="op-uc-p op-uc-table--cell" style="background-color:#ACE1AF;border:1.0px solid #000000;height:11.0px;padding:4.0px;vertical-align:top;width:89.0px;">12.5 API</td><td class="op-uc-p op-uc-table--cell" style="background-color:#ACE1AF;border:1.0px solid #000000;height:11.0px;padding:4.0px;vertical-align:top;width:200.0px;">Already available via API since 12.5</td></tr><tr class="op-uc-table--row"><td class="op-uc-p op-uc-table--cell" style="background-color:#ACE1AF;border:1.0px solid #000000;height:11.0px;padding:4.0px;vertical-align:top;width:162.0px;"><strong>Type</strong></td><td class="op-uc-p op-uc-table--cell" style="background-color:#ACE1AF;border:1.0px solid #000000;height:11.0px;padding:4.0px;vertical-align:top;width:175.0px;"><strong>DONE</strong></td><td #000000;height:11.0px;padding:4.0px;vertical-align:top;width:175.0px;"><strong>YES</strong></td><td class="op-uc-p op-uc-table--cell" style="background-color:#ACE1AF;border:1.0px solid #000000;height:11.0px;padding:4.0px;vertical-align:top;width:175.0px;"><strong>DONE</strong></td><td #000000;height:11.0px;padding:4.0px;vertical-align:top;width:232.0px;"><strong>YES</strong></td><td class="op-uc-p op-uc-table--cell" style="width:100px;"></td><td class="op-uc-p op-uc-table--cell" style="background-color:#ACE1AF;border:1.0px solid #000000;height:11.0px;padding:4.0px;vertical-align:top;width:89.0px;">12.5 API</td><td class="op-uc-p op-uc-table--cell" style="background-color:#ACE1AF;border:1.0px solid #000000;height:11.0px;padding:4.0px;vertical-align:top;width:200.0px;">Already available via API since 12.5</td></tr><tr class="op-uc-table--row"><td class="op-uc-p op-uc-table--cell" style="background-color:#ACE1AF;border:1.0px solid #000000;height:11.0px;padding:4.0px;vertical-align:top;width:162.0px;"><strong>Priority</strong></td><td class="op-uc-p op-uc-table--cell" style="background-color:#ACE1AF;border:1.0px solid #000000;height:11.0px;padding:4.0px;vertical-align:top;width:175.0px;"><strong>DONE</strong></td><td #000000;height:11.0px;padding:4.0px;vertical-align:top;width:175.0px;"><strong>YES</strong></td><td class="op-uc-p op-uc-table--cell" style="background-color:#ACE1AF;border:1.0px solid #000000;height:11.0px;padding:4.0px;vertical-align:top;width:175.0px;"><strong>DONE</strong></td><td #000000;height:11.0px;padding:4.0px;vertical-align:top;width:232.0px;"><strong>YES</strong></td><td class="op-uc-p op-uc-table--cell" style="width:100px;"></td><td class="op-uc-p op-uc-table--cell" style="background-color:#ACE1AF;border:1.0px solid #000000;height:11.0px;padding:4.0px;vertical-align:top;width:89.0px;">12.5 API</td><td class="op-uc-p op-uc-table--cell" style="background-color:#ACE1AF;border:1.0px solid #000000;height:11.0px;padding:4.0px;vertical-align:top;width:200.0px;">Already available via API since 12.5</td></tr><tr class="op-uc-table--row"><td class="op-uc-p op-uc-table--cell" style="background-color:#ACE1AF;border:1.0px solid #000000;height:11.0px;padding:4.0px;vertical-align:top;width:162.0px;"><strong>Subject</strong></td><td class="op-uc-p op-uc-table--cell" style="background-color:#ACE1AF;border:1.0px solid #000000;height:11.0px;padding:4.0px;vertical-align:top;width:175.0px;"><strong>DONE</strong></td><td #000000;height:11.0px;padding:4.0px;vertical-align:top;width:175.0px;"><strong>YES</strong></td><td class="op-uc-p op-uc-table--cell" style="background-color:#ACE1AF;border:1.0px solid #000000;height:11.0px;padding:4.0px;vertical-align:top;width:175.0px;"><strong>DONE</strong></td><td #000000;height:11.0px;padding:4.0px;vertical-align:top;width:232.0px;"><strong>YES</strong></td><td class="op-uc-p op-uc-table--cell" style="width:100px;"></td><td class="op-uc-p op-uc-table--cell" style="background-color:#ACE1AF;border:1.0px solid #000000;height:11.0px;padding:4.0px;vertical-align:top;width:89.0px;">12.5 API</td><td class="op-uc-p op-uc-table--cell" style="background-color:#ACE1AF;border:1.0px solid #000000;height:11.0px;padding:4.0px;vertical-align:top;width:200.0px;">Already available via API since 12.5</td></tr><tr class="op-uc-table--row"><td class="op-uc-p op-uc-table--cell" style="background-color:#ACE1AF;border:1.0px solid #000000;height:11.0px;padding:4.0px;vertical-align:top;width:162.0px;"><strong>Version</strong></td><td class="op-uc-p op-uc-table--cell" style="background-color:#ACE1AF;border:1.0px solid #000000;height:11.0px;padding:4.0px;vertical-align:top;width:175.0px;"><strong>DONE</strong></td><td #000000;height:11.0px;padding:4.0px;vertical-align:top;width:175.0px;"><strong>YES</strong></td><td class="op-uc-p op-uc-table--cell" style="background-color:#ACE1AF;border:1.0px solid #000000;height:11.0px;padding:4.0px;vertical-align:top;width:175.0px;"><strong>DONE</strong></td><td #000000;height:11.0px;padding:4.0px;vertical-align:top;width:232.0px;"><strong>YES</strong></td><td class="op-uc-p op-uc-table--cell" style="width:100px;"></td><td class="op-uc-p op-uc-table--cell" style="background-color:#ACE1AF;border:1.0px solid #000000;height:11.0px;padding:4.0px;vertical-align:top;width:89.0px;">12.5 API</td><td class="op-uc-p op-uc-table--cell" style="background-color:#ACE1AF;border:1.0px solid #000000;height:11.0px;padding:4.0px;vertical-align:top;width:200.0px;">Already available via API since 12.5</td></tr><tr class="op-uc-table--row"><td class="op-uc-p op-uc-table--cell" style="border:1.0px solid #000000;height:11.0px;padding:4.0px;vertical-align:top;width:162.0px;" colspan="6"></td></tr><tr colspan="5"></td></tr><tr class="op-uc-table--row"><td class="op-uc-p op-uc-table--cell" style="background-color:hsl(180, 75%, 60%);border:1.0px solid #000000;height:11.0px;padding:4.0px;vertical-align:top;width:162.0px;"><strong>Parent</strong></td><td class="op-uc-p op-uc-table--cell" style="background-color:hsl(180, 75%, 60%);border:1.0px solid #000000;height:11.0px;padding:4.0px;vertical-align:top;width:175.0px;"><strong>POSSIBLE</strong></td><td #000000;height:11.0px;padding:4.0px;vertical-align:top;width:175.0px;"><strong>YES</strong></td><td class="op-uc-p op-uc-table--cell" style="background-color:hsl(180, 75%, 60%);border:1.0px solid #000000;height:11.0px;padding:4.0px;vertical-align:top;width:232.0px;"><strong>POSSIBLE</strong></td><td #000000;height:11.0px;padding:4.0px;vertical-align:top;width:232.0px;"><strong>YES</strong></td><td class="op-uc-p op-uc-table--cell" style="width:100px;"></td><td class="op-uc-p op-uc-table--cell" style="background-color:hsl(180, 75%, 60%);border:1.0px solid #000000;height:11.0px;padding:4.0px;vertical-align:top;width:89.0px;">13.0</td><td class="op-uc-p op-uc-table--cell" style="background-color:hsl(180, 75%, 60%);border:1.0px solid #000000;height:11.0px;padding:4.0px;vertical-align:top;width:200.0px;"><strong>Confirmed, added to 13.0</strong></td></tr><tr class="op-uc-table--row"><td class="op-uc-p op-uc-table--cell" style="background-color:hsl(180, 75%, 60%);border:1.0px solid #000000;height:11.0px;padding:4.0px;vertical-align:top;width:162.0px;"><strong>Custom fields</strong></td><td class="op-uc-p op-uc-table--cell" style="background-color:hsl(180, 75%, 60%);border:1.0px solid #000000;height:11.0px;padding:4.0px;vertical-align:top;width:175.0px;"><strong>POSSIBLE but high effort</strong></td><td #000000;height:11.0px;padding:4.0px;vertical-align:top;width:175.0px;"><strong>YES</strong></td><td class="op-uc-p op-uc-table--cell" style="background-color:hsl(180, 75%, 60%);border:1.0px solid #000000;height:11.0px;padding:4.0px;vertical-align:top;width:232.0px;"><strong>POSSIBLE but high effort</strong></td><td #000000;height:11.0px;padding:4.0px;vertical-align:top;width:232.0px;"><strong>YES</strong></td><td class="op-uc-p op-uc-table--cell" style="width:100px;"></td><td class="op-uc-p op-uc-table--cell" style="background-color:hsl(180, 75%, 60%);border:1.0px solid #000000;height:11.0px;padding:4.0px;vertical-align:top;width:89.0px;">13.0</td><td class="op-uc-p op-uc-table--cell" style="background-color:hsl(180, 75%, 60%);border:1.0px solid #000000;height:11.0px;padding:4.0px;vertical-align:top;width:200.0px;"><strong>Confirmed, added to 13.0.</strong><br>Significant effort.</td></tr><tr 13.0</strong></td></tr><tr class="op-uc-table--row"><td class="op-uc-p op-uc-table--cell" style="background-color:hsl(60, 75%, 60%);border:1.0px solid #000000;padding:4.0px;vertical-align:top;width:162.0px;"><strong>Updated on</strong></td><td class="op-uc-p op-uc-table--cell" style="background-color:hsl(60, 75%, 60%);border:1.0px solid #000000;padding:4.0px;vertical-align:top;width:175.0px;"><strong>POSSIBLE</strong>, would show last updated before "From" timestamp</td><td #000000;padding:4.0px;vertical-align:top;width:175.0px;">?</td><td class="op-uc-p op-uc-table--cell" style="background-color:hsl(60, 75%, 60%);border:1.0px solid #000000;padding:4.0px;vertical-align:top;width:232.0px;"><strong>POSSIBLE</strong></td><td #000000;padding:4.0px;vertical-align:top;width:232.0px;">?</td><td class="op-uc-p op-uc-table--cell" style="width:100px;"></td><td class="op-uc-p op-uc-table--cell" style="background-color:hsl(60, 75%, 60%);border:1.0px solid #000000;padding:4.0px;vertical-align:top;width:89.0px;">? Low priority</td><td #000000;padding:4.0px;vertical-align:top;width:89.0px;">?</td><td class="op-uc-p op-uc-table--cell" style="background-color:hsl(60, 75%, 60%);border:1.0px solid #000000;padding:4.0px;vertical-align:top;width:200.0px;">Might not make sense. What's the use case? <br><br>Would #000000;padding:4.0px;vertical-align:top;width:200.0px;">Would anyone really add this as a column? And for filtering, surely this is just a reflection of change in other attributes?<br></td></tr><tr class="op-uc-table--row"><td class="op-uc-p op-uc-table--cell" style="background-color:hsl(60, 75%, 60%);border:1.0px solid #000000;padding:4.0px;vertical-align:top;width:162.0px;"><strong>Category</strong></td><td class="op-uc-p op-uc-table--cell" style="background-color:hsl(60, 75%, 60%);border:1.0px solid #000000;padding:4.0px;vertical-align:top;width:175.0px;"><strong>POSSIBLE</strong></td><td #000000;padding:4.0px;vertical-align:top;width:175.0px;">?</td><td class="op-uc-p op-uc-table--cell" style="background-color:hsl(60, 75%, 60%);border:1.0px solid #000000;padding:4.0px;vertical-align:top;width:232.0px;"><strong>POSSIBLE</strong></td><td #000000;padding:4.0px;vertical-align:top;width:232.0px;">?</td><td class="op-uc-p op-uc-table--cell" style="width:100px;"></td><td class="op-uc-p op-uc-table--cell" style="background-color:hsl(60, 75%, 60%);border:1.0px solid #000000;padding:4.0px;vertical-align:top;width:89.0px;"></td><td #000000;padding:4.0px;vertical-align:top;width:89.0px;">?</td><td class="op-uc-p op-uc-table--cell" style="background-color:hsl(60, 75%, 60%);border:1.0px solid #000000;padding:4.0px;vertical-align:top;width:200.0px;">Jens generally dislikes this field</td></tr><tr #000000;padding:4.0px;vertical-align:top;width:200.0px;"></td></tr><tr class="op-uc-table--row"><td class="op-uc-p op-uc-table--cell" style="background-color:hsl(30, 75%, 60%);"><strong>Unit costs</strong></td><td class="op-uc-p op-uc-table--cell" style="background-color:hsl(30, 75%, 60%);">NO (somehow achievable, but complicated)</td><td class="op-uc-p op-uc-table--cell" style="background-color:hsl(30, 75%, 60%);">NO (somehow achievable, but complicated)</td><td class="op-uc-p op-uc-table--cell" style="background-color:hsl(30, 75%, 60%);width:100px;"></td><td class="op-uc-p op-uc-table--cell" style="background-color:hsl(30, 75%, 60%);"></td><td class="op-uc-p op-uc-table--cell" style="background-color:hsl(30, 75%, 60%);">Not implementing</td></tr><tr class="op-uc-table--row"><td class="op-uc-p op-uc-table--cell" style="background-color:hsl(30, 75%, 60%);"><strong>Labor costs</strong></td><td class="op-uc-p op-uc-table--cell" style="background-color:hsl(30, 75%, 60%);">NO (somehow achievable, but complicated)</td><td class="op-uc-p op-uc-table--cell" style="background-color:hsl(30, 75%, 60%);">NO (somehow achievable, but complicated)</td><td class="op-uc-p op-uc-table--cell" style="background-color:hsl(30, 75%, 60%);width:100px;"></td><td class="op-uc-p op-uc-table--cell" style="background-color:hsl(30, 75%, 60%);"></td><td class="op-uc-p op-uc-table--cell" style="background-color:hsl(30, 75%, 60%);">Not implementing</td></tr><tr class="op-uc-table--row"><td class="op-uc-p op-uc-table--cell" style="background-color:hsl(30, 75%, 60%);"><strong>Overall costs</strong></td><td class="op-uc-p op-uc-table--cell" style="background-color:hsl(30, 75%, 60%);">NO (somehow achievable, but complicated)</td><td class="op-uc-p op-uc-table--cell" style="background-color:hsl(30, 75%, 60%);">NO (somehow achievable, but complicated)</td><td class="op-uc-p op-uc-table--cell" style="background-color:hsl(30, 75%, 60%);width:100px;"></td><td class="op-uc-p op-uc-table--cell" style="background-color:hsl(30, 75%, 60%);"></td><td class="op-uc-p op-uc-table--cell" style="background-color:hsl(30, 75%, 60%);">Not implementing</td></tr><tr class="op-uc-table--row"><td class="op-uc-p op-uc-table--cell" style="background-color:hsl(60, 75%, 60%);border:1.0px solid #000000;padding:4.0px;vertical-align:top;width:162.0px;"><strong>Estimated time</strong><br>(Work?)</td><td time</strong></td><td class="op-uc-p op-uc-table--cell" style="background-color:hsl(60, 75%, 60%);border:1.0px solid #000000;padding:4.0px;vertical-align:top;width:175.0px;">TBC (Jens)</td><td #000000;padding:4.0px;vertical-align:top;width:175.0px;"><strong>YES</strong></td><td class="op-uc-p op-uc-table--cell" style="background-color:hsl(60, 75%, 60%);border:1.0px solid #000000;padding:4.0px;vertical-align:top;width:175.0px;">TBC (Jens)</td><td #000000;padding:4.0px;vertical-align:top;width:232.0px;"><strong>YES</strong></td><td class="op-uc-p op-uc-table--cell" style="width:100px;"></td><td class="op-uc-p op-uc-table--cell" style="background-color:hsl(60, 75%, 60%);border:1.0px solid #000000;padding:4.0px;vertical-align:top;width:89.0px;"></td><td #000000;padding:4.0px;vertical-align:top;width:89.0px;">13.0</td><td class="op-uc-p op-uc-table--cell" style="background-color:hsl(60, 75%, 60%);border:1.0px solid #000000;padding:4.0px;vertical-align:top;width:200.0px;"></td></tr><tr class="op-uc-table--row"><td class="op-uc-p op-uc-table--cell" style="background-color:hsl(60, 75%, 60%);border:1.0px solid #000000;padding:4.0px;vertical-align:top;width:162.0px;"><strong>Remaining time</strong><br>(Work?)</td><td time</strong></td><td class="op-uc-p op-uc-table--cell" style="background-color:hsl(60, 75%, 60%);border:1.0px solid #000000;padding:4.0px;vertical-align:top;width:175.0px;">TBC (Jens)</td><td #000000;padding:4.0px;vertical-align:top;width:175.0px;"><strong>YES</strong></td><td class="op-uc-p op-uc-table--cell" style="background-color:hsl(60, 75%, 60%);border:1.0px solid #000000;padding:4.0px;vertical-align:top;width:175.0px;">TBC (Jens)</td><td #000000;padding:4.0px;vertical-align:top;width:232.0px;"><strong>YES</strong></td><td class="op-uc-p op-uc-table--cell" style="width:100px;"></td><td class="op-uc-p op-uc-table--cell" style="background-color:hsl(60, 75%, 60%);border:1.0px solid #000000;padding:4.0px;vertical-align:top;width:89.0px;"></td><td #000000;padding:4.0px;vertical-align:top;width:89.0px;">13.0</td><td class="op-uc-p op-uc-table--cell" style="background-color:hsl(60, 75%, 60%);border:1.0px solid #000000;padding:4.0px;vertical-align:top;width:200.0px;">Depends on backlog module, but is journalised (TBC).</td></tr><tr module?</td></tr><tr class="op-uc-table--row"><td class="op-uc-p op-uc-table--cell" style="background-color:hsl(60, 75%, 60%);border:1.0px solid #000000;padding:4.0px;vertical-align:top;width:162.0px;"><strong>Spent time</strong></td><td class="op-uc-p op-uc-table--cell" style="background-color:hsl(60, 75%, 60%);border:1.0px solid #000000;padding:4.0px;vertical-align:top;width:175.0px;">TBC (Jens)</td><td #000000;padding:4.0px;vertical-align:top;width:175.0px;">?</td><td class="op-uc-p op-uc-table--cell" style="background-color:hsl(60, 75%, 60%);border:1.0px solid #000000;padding:4.0px;vertical-align:top;width:175.0px;">TBC (Jens)</td><td #000000;padding:4.0px;vertical-align:top;width:232.0px;">?</td><td class="op-uc-p op-uc-table--cell" style="width:100px;"></td><td class="op-uc-p op-uc-table--cell" style="background-color:hsl(60, 75%, 60%);border:1.0px solid #000000;padding:4.0px;vertical-align:top;width:89.0px;"></td><td #000000;padding:4.0px;vertical-align:top;width:89.0px;">?</td><td class="op-uc-p op-uc-table--cell" style="background-color:hsl(60, 75%, 60%);border:1.0px solid #000000;padding:4.0px;vertical-align:top;width:200.0px;">Might be complex, different data structure</td></tr><tr class="op-uc-table--row"><td class="op-uc-p op-uc-table--cell" style="background-color:hsl(60, 75%, 60%);border:1.0px solid #000000;padding:4.0px;vertical-align:top;width:162.0px;"><strong>Progress (%)</strong></td><td class="op-uc-p op-uc-table--cell" style="background-color:hsl(60, 75%, 60%);border:1.0px solid #000000;padding:4.0px;vertical-align:top;width:175.0px;"><strong>Possible</strong></td><td #000000;padding:4.0px;vertical-align:top;width:175.0px;"><strong>YES</strong></td><td class="op-uc-p op-uc-table--cell" style="background-color:hsl(60, 75%, 60%);border:1.0px solid #000000;padding:4.0px;vertical-align:top;width:175.0px;"><strong>Possible</strong></td><td #000000;padding:4.0px;vertical-align:top;width:232.0px;"><strong>YES</strong></td><td class="op-uc-p op-uc-table--cell" style="width:100px;"></td><td class="op-uc-p op-uc-table--cell" style="background-color:hsl(60, 75%, 60%);border:1.0px solid #000000;padding:4.0px;vertical-align:top;width:89.0px;"></td><td #000000;padding:4.0px;vertical-align:top;width:89.0px;">13.0</td><td class="op-uc-p op-uc-table--cell" style="background-color:hsl(60, 75%, 60%);border:1.0px solid #000000;padding:4.0px;vertical-align:top;width:200.0px;">Journalised, possible.</td></tr><tr #000000;padding:4.0px;vertical-align:top;width:200.0px;"></td></tr><tr class="op-uc-table--row"><td class="op-uc-p op-uc-table--cell" style="background-color:hsl(60, 75%, 60%);border:1.0px solid #000000;padding:4.0px;vertical-align:top;width:162.0px;"><strong>Duration</strong></td><td class="op-uc-p op-uc-table--cell" style="background-color:hsl(60, 75%, 60%);border:1.0px solid #000000;padding:4.0px;vertical-align:top;width:175.0px;"><strong>Possible</strong></td><td #000000;padding:4.0px;vertical-align:top;width:175.0px;"><strong>YES</strong></td><td class="op-uc-p op-uc-table--cell" style="background-color:hsl(60, 75%, 60%);border:1.0px solid #000000;padding:4.0px;vertical-align:top;width:175.0px;"><strong>Possible</strong></td><td #000000;padding:4.0px;vertical-align:top;width:232.0px;"><strong>YES</strong></td><td class="op-uc-p op-uc-table--cell" style="width:100px;"></td><td class="op-uc-p op-uc-table--cell" style="background-color:hsl(60, 75%, 60%);border:1.0px solid #000000;padding:4.0px;vertical-align:top;width:89.0px;"></td><td #000000;padding:4.0px;vertical-align:top;width:89.0px;">13.0?</td><td class="op-uc-p op-uc-table--cell" style="background-color:hsl(60, 75%, 60%);border:1.0px solid #000000;padding:4.0px;vertical-align:top;width:200.0px;"></td></tr><tr class="op-uc-table--row"><td class="op-uc-p op-uc-table--cell" style="background-color:hsl(60, 75%, 60%);border:1.0px solid #000000;padding:4.0px;vertical-align:top;width:162.0px;"><strong>Budget</strong></td><td class="op-uc-p op-uc-table--cell" style="background-color:hsl(60, 75%, 60%);border:1.0px solid #000000;padding:4.0px;vertical-align:top;width:175.0px;"><strong>Possible</strong></td><td #000000;padding:4.0px;vertical-align:top;width:175.0px;"><strong>YES</strong></td><td class="op-uc-p op-uc-table--cell" style="background-color:hsl(60, 75%, 60%);border:1.0px solid #000000;padding:4.0px;vertical-align:top;width:175.0px;"><strong>Possible</strong></td><td #000000;padding:4.0px;vertical-align:top;width:232.0px;"><strong>YES</strong></td><td class="op-uc-p op-uc-table--cell" style="width:100px;"></td><td class="op-uc-p op-uc-table--cell" style="background-color:hsl(60, 75%, 60%);border:1.0px solid #000000;padding:4.0px;vertical-align:top;width:89.0px;"></td><td #000000;padding:4.0px;vertical-align:top;width:89.0px;">13.0?</td><td class="op-uc-p op-uc-table--cell" style="background-color:hsl(60, 75%, 60%);border:1.0px solid #000000;padding:4.0px;vertical-align:top;width:200.0px;"></td></tr><tr class="op-uc-table--row"><td class="op-uc-p op-uc-table--cell" style="background-color:hsl(60, 75%, 60%);border:1.0px solid #000000;height:11.0px;padding:4.0px;vertical-align:top;width:162.0px;"><strong>Description</strong></td><td class="op-uc-p op-uc-table--cell" style="background-color:hsl(60, 75%, 60%);border:1.0px solid #000000;height:11.0px;padding:4.0px;vertical-align:top;width:175.0px;">NO (Column can't be added)</td><td class="op-uc-p op-uc-table--cell" style="background-color:hsl(60, 75%, 60%);border:1.0px solid #000000;height:11.0px;padding:4.0px;vertical-align:top;width:232.0px;"><strong>Possible</strong></td><td #000000;height:11.0px;padding:4.0px;vertical-align:top;width:232.0px;"><strong>YES</strong></td><td class="op-uc-p op-uc-table--cell" style="width:100px;"></td><td class="op-uc-p op-uc-table--cell" style="background-color:hsl(60, 75%, 60%);border:1.0px solid #000000;height:11.0px;padding:4.0px;vertical-align:top;width:89.0px;"></td><td #000000;height:11.0px;padding:4.0px;vertical-align:top;width:89.0px;">-</td><td class="op-uc-p op-uc-table--cell" style="background-color:hsl(60, 75%, 60%);border:1.0px solid #000000;height:11.0px;padding:4.0px;vertical-align:top;width:200.0px;">Surely only to indicate something has changed.</td></tr><tr class="op-uc-table--row"><td class="op-uc-p op-uc-table--cell" style="background-color:hsl(30, 75%, 60%);border:1.0px solid #000000;height:11.0px;padding:4.0px;vertical-align:top;width:162.0px;"><strong>Comment</strong></td><td class="op-uc-p op-uc-table--cell" style="background-color:hsl(30, 75%, 60%);border:1.0px solid #000000;height:11.0px;padding:4.0px;vertical-align:top;width:175.0px;">NO (Column can't be added)</td><td class="op-uc-p op-uc-table--cell" style="background-color:hsl(30, 75%, 60%);border:1.0px solid #000000;height:11.0px;padding:4.0px;vertical-align:top;width:232.0px;">Possible<strong> </strong>but complicated to implement</td><td #000000;height:11.0px;padding:4.0px;vertical-align:top;width:232.0px;">NO</td><td class="op-uc-p op-uc-table--cell" style="width:100px;"></td><td class="op-uc-p op-uc-table--cell" style="background-color:hsl(30, 75%, 60%);border:1.0px solid #000000;height:11.0px;padding:4.0px;vertical-align:top;width:89.0px;">-</td><td class="op-uc-p op-uc-table--cell" style="background-color:hsl(30, 75%, 60%);border:1.0px solid #000000;height:11.0px;padding:4.0px;vertical-align:top;width:200.0px;">Surely the additional of comments shouldn't lead to an indication something has been modified.</td></tr><tr class="op-uc-table--row"><td class="op-uc-p op-uc-table--cell" style="background-color:hsl(0, 0%, style="background-color:hsl(30, 75%, 60%);border:1.0px solid #000000;padding:4.0px;vertical-align:top;"><strong>Created #000000;padding:4.0px;vertical-align:top;width:162.0px;"><strong>Created on</strong></td><td class="op-uc-p op-uc-table--cell" style="background-color:hsl(0, 0%, style="background-color:hsl(30, 75%, 60%);border:1.0px solid #000000;padding:4.0px;vertical-align:top;">Possible but value never changes.</td><td #000000;padding:4.0px;vertical-align:top;width:175.0px;">NO (Value can't change)</td><td class="op-uc-p op-uc-table--cell" style="background-color:hsl(0, 0%, style="background-color:hsl(30, 75%, 60%);border:1.0px solid #000000;padding:4.0px;vertical-align:top;">Possible but value never changes</td><td #000000;padding:4.0px;vertical-align:top;width:232.0px;">NO (Value can't change)</td><td class="op-uc-p op-uc-table--cell" style="background-color:hsl(0, 0%, 60%);"></td><td class="op-uc-p op-uc-table--cell" style="background-color:hsl(0, 0%, style="background-color:hsl(30, 75%, 60%);border:1.0px solid #000000;padding:4.0px;vertical-align:top;">-</td><td #000000;padding:4.0px;vertical-align:top;width:89.0px;">-</td><td class="op-uc-p op-uc-table--cell" style="background-color:hsl(0, 0%, style="background-color:hsl(30, 75%, 60%);border:1.0px solid #000000;padding:4.0px;vertical-align:top;">No further implementation required.</td></tr><tr #000000;padding:4.0px;vertical-align:top;width:200.0px;">Never changes</td></tr><tr class="op-uc-table--row"><td class="op-uc-p op-uc-table--cell" style="background-color:hsl(0, 0%, style="background-color:hsl(30, 75%, 60%);border:1.0px solid #000000;padding:4.0px;vertical-align:top;width:162.0px;"><strong>Author</strong></td><td class="op-uc-p op-uc-table--cell" style="background-color:hsl(0, 0%, style="background-color:hsl(30, 75%, 60%);border:1.0px solid #000000;padding:4.0px;vertical-align:top;">Possible but value never changes.</td><td #000000;padding:4.0px;vertical-align:top;width:175.0px;">NO (Value can't change)</td><td class="op-uc-p op-uc-table--cell" style="background-color:hsl(0, 0%, style="background-color:hsl(30, 75%, 60%);border:1.0px solid #000000;padding:4.0px;vertical-align:top;">Possible but value never changes</td><td #000000;padding:4.0px;vertical-align:top;width:232.0px;">NO (Value can't change)</td><td class="op-uc-p op-uc-table--cell" style="background-color:hsl(0, 0%, 60%);width:100px;"></td><td class="op-uc-p op-uc-table--cell" style="background-color:hsl(0, 0%, style="background-color:hsl(30, 75%, 60%);border:1.0px solid #000000;padding:4.0px;vertical-align:top;width:89.0px;">-</td><td class="op-uc-p op-uc-table--cell" style="background-color:hsl(0, 0%, style="background-color:hsl(30, 75%, 60%);border:1.0px solid #000000;padding:4.0px;vertical-align:top;">No further implementation required.</td></tr><tr #000000;padding:4.0px;vertical-align:top;width:200.0px;">Can author ever change? </td></tr><tr class="op-uc-table--row"><td class="op-uc-p op-uc-table--cell" style="background-color:hsl(30, 75%, 60%);border:1.0px solid #000000;height:11.0px;padding:4.0px;vertical-align:top;width:162.0px;"><strong>Attachment content</strong></td><td class="op-uc-p op-uc-table--cell" style="background-color:hsl(30, 75%, 60%);border:1.0px solid #000000;height:11.0px;padding:4.0px;vertical-align:top;width:175.0px;">NO (Column can't be added)</td><td class="op-uc-p op-uc-table--cell" style="background-color:hsl(30, 75%, 60%);border:1.0px solid #000000;height:11.0px;padding:4.0px;vertical-align:top;width:232.0px;">Not possible</td><td #000000;height:11.0px;padding:4.0px;vertical-align:top;width:232.0px;">NO</td><td class="op-uc-p op-uc-table--cell" style="width:100px;"></td><td class="op-uc-p op-uc-table--cell" style="background-color:hsl(30, 75%, 60%);border:1.0px solid #000000;height:11.0px;padding:4.0px;vertical-align:top;width:89.0px;">-</td><td class="op-uc-p op-uc-table--cell" style="background-color:hsl(30, 75%, 60%);border:1.0px solid #000000;height:11.0px;padding:4.0px;vertical-align:top;width:200.0px;">Not journalised</td></tr><tr #000000;height:11.0px;padding:4.0px;vertical-align:top;width:200.0px;">Perhaps worth considering?</td></tr><tr class="op-uc-table--row"><td class="op-uc-p op-uc-table--cell" style="background-color:hsl(0, 0%, style="background-color:hsl(30, 75%, 60%);border:1.0px solid #000000;height:11.0px;padding:4.0px;vertical-align:top;width:162.0px;"><strong>Attachment file name</strong></td><td class="op-uc-p op-uc-table--cell" style="background-color:hsl(0, 0%, style="background-color:hsl(30, 75%, 60%);border:1.0px solid #000000;height:11.0px;padding:4.0px;vertical-align:top;width:175.0px;">NO (Column can't be added)</td><td class="op-uc-p op-uc-table--cell" style="background-color:hsl(0, 0%, style="background-color:hsl(30, 75%, 60%);border:1.0px solid #000000;height:11.0px;padding:4.0px;vertical-align:top;width:232.0px;">Possible but unnecessary</td><td #000000;height:11.0px;padding:4.0px;vertical-align:top;width:232.0px;">NO</td><td class="op-uc-p op-uc-table--cell" style="background-color:hsl(0, 0%, 60%);width:100px;"></td><td class="op-uc-p op-uc-table--cell" style="background-color:hsl(0, 0%, style="background-color:hsl(30, 75%, 60%);border:1.0px solid #000000;height:11.0px;padding:4.0px;vertical-align:top;width:89.0px;">-</td><td class="op-uc-p op-uc-table--cell" style="background-color:hsl(0, 0%, style="background-color:hsl(30, 75%, 60%);border:1.0px solid #000000;height:11.0px;padding:4.0px;vertical-align:top;width:200.0px;">Not implementing</td></tr><tr #000000;height:11.0px;padding:4.0px;vertical-align:top;width:200.0px;">Perhaps worth considering (but less than attachment content?)</td></tr><tr class="op-uc-table--row"><td class="op-uc-p op-uc-table--cell" style="background-color:hsl(0, 0%, style="background-color:hsl(30, 75%, 60%);border:1.0px solid #000000;height:11.0px;padding:4.0px;vertical-align:top;width:162.0px;"><strong>Assignee or belonging group</strong></td><td class="op-uc-p op-uc-table--cell" style="background-color:hsl(0, 0%, style="background-color:hsl(30, 75%, 60%);border:1.0px solid #000000;height:11.0px;padding:4.0px;vertical-align:top;width:175.0px;">NO (Column can't be added)</td><td class="op-uc-p op-uc-table--cell" style="background-color:hsl(0, 0%, style="background-color:hsl(30, 75%, 60%);border:1.0px solid #000000;height:11.0px;padding:4.0px;vertical-align:top;width:232.0px;">Possible, assignee is already implemented, belonging group is irellevant</td><td #000000;height:11.0px;padding:4.0px;vertical-align:top;width:232.0px;">NO</td><td class="op-uc-p op-uc-table--cell" style="background-color:hsl(0, 0%, 60%);width:100px;"></td><td class="op-uc-p op-uc-table--cell" style="background-color:hsl(0, 0%, style="background-color:hsl(30, 75%, 60%);border:1.0px solid #000000;height:11.0px;padding:4.0px;vertical-align:top;width:89.0px;">12.5 API</td><td #000000;height:11.0px;padding:4.0px;vertical-align:top;width:89.0px;">-</td><td class="op-uc-p op-uc-table--cell" style="background-color:hsl(0, 0%, style="background-color:hsl(30, 75%, 60%);border:1.0px solid #000000;height:11.0px;padding:4.0px;vertical-align:top;width:200.0px;">Not relevant for Show Changes</td></tr><tr an inherent attribute of a work package</td></tr><tr class="op-uc-table--row"><td class="op-uc-p op-uc-table--cell" style="background-color:hsl(0, 0%, style="background-color:hsl(30, 75%, 60%);border:1.0px solid #000000;height:11.0px;padding:4.0px;vertical-align:top;width:162.0px;"><strong>Assignee's group</strong></td><td class="op-uc-p op-uc-table--cell" style="background-color:hsl(0, 0%, style="background-color:hsl(30, 75%, 60%);border:1.0px solid #000000;height:11.0px;padding:4.0px;vertical-align:top;width:175.0px;">NO (Column can't be added)</td><td class="op-uc-p op-uc-table--cell" style="background-color:hsl(0, 0%, style="background-color:hsl(30, 75%, 60%);border:1.0px solid #000000;height:11.0px;padding:4.0px;vertical-align:top;width:232.0px;">Possible, assignee is already implemented, belonging group is irellevant</td><td #000000;height:11.0px;padding:4.0px;vertical-align:top;width:232.0px;">NO</td><td class="op-uc-p op-uc-table--cell" style="background-color:hsl(0, 0%, 60%);width:100px;"></td><td class="op-uc-p op-uc-table--cell" style="background-color:hsl(0, 0%, style="background-color:hsl(30, 75%, 60%);border:1.0px solid #000000;height:11.0px;padding:4.0px;vertical-align:top;width:89.0px;">12.5 API</td><td #000000;height:11.0px;padding:4.0px;vertical-align:top;width:89.0px;">-</td><td class="op-uc-p op-uc-table--cell" style="background-color:hsl(0, 0%, style="background-color:hsl(30, 75%, 60%);border:1.0px solid #000000;height:11.0px;padding:4.0px;vertical-align:top;width:200.0px;">Not relevant for Show Changes</td></tr><tr an inherent attribute of a work package</td></tr><tr class="op-uc-table--row"><td class="op-uc-p op-uc-table--cell" style="background-color:hsl(0, 0%, style="background-color:hsl(30, 75%, 60%);border:1.0px solid #000000;height:11.0px;padding:4.0px;vertical-align:top;width:162.0px;"><strong>Assignee's role</strong></td><td class="op-uc-p op-uc-table--cell" style="background-color:hsl(0, 0%, style="background-color:hsl(30, 75%, 60%);border:1.0px solid #000000;height:11.0px;padding:4.0px;vertical-align:top;width:175.0px;">NO (Column can't be added)</td><td class="op-uc-p op-uc-table--cell" style="background-color:hsl(0, 0%, style="background-color:hsl(30, 75%, 60%);border:1.0px solid #000000;height:11.0px;padding:4.0px;vertical-align:top;width:232.0px;">Possible, assignee is already implemented, belonging group is irellevant</td><td #000000;height:11.0px;padding:4.0px;vertical-align:top;width:232.0px;">NO</td><td class="op-uc-p op-uc-table--cell" style="background-color:hsl(0, 0%, 60%);width:100px;"></td><td class="op-uc-p op-uc-table--cell" style="background-color:hsl(0, 0%, style="background-color:hsl(30, 75%, 60%);border:1.0px solid #000000;height:11.0px;padding:4.0px;vertical-align:top;width:89.0px;">12.5 API</td><td #000000;height:11.0px;padding:4.0px;vertical-align:top;width:89.0px;">-</td><td class="op-uc-p op-uc-table--cell" style="background-color:hsl(0, 0%, style="background-color:hsl(30, 75%, 60%);border:1.0px solid #000000;height:11.0px;padding:4.0px;vertical-align:top;width:200.0px;">Not relevant for Show Changes</td></tr><tr an inherent attribute of a work package</td></tr><tr class="op-uc-table--row"><td class="op-uc-p op-uc-table--cell" style="background-color:hsl(0, 0%, style="background-color:hsl(30, 75%, 60%);border:1.0px solid #000000;height:11.0px;padding:4.0px;vertical-align:top;width:162.0px;"><strong>Backlog type</strong></td><td class="op-uc-p op-uc-table--cell" style="background-color:hsl(0, 0%, style="background-color:hsl(30, 75%, 60%);border:1.0px solid #000000;height:11.0px;padding:4.0px;vertical-align:top;width:175.0px;">NO (Column can't be added)</td><td class="op-uc-p op-uc-table--cell" style="background-color:hsl(0, 0%, style="background-color:hsl(30, 75%, 60%);border:1.0px solid #000000;height:11.0px;padding:4.0px;vertical-align:top;width:232.0px;">TBC (Jens)</td><td #000000;height:11.0px;padding:4.0px;vertical-align:top;width:232.0px;">NO</td><td class="op-uc-p op-uc-table--cell" style="background-color:hsl(0, 0%, 60%);width:100px;"></td><td class="op-uc-p op-uc-table--cell" style="background-color:hsl(0, 0%, style="background-color:hsl(30, 75%, 60%);border:1.0px solid #000000;height:11.0px;padding:4.0px;vertical-align:top;width:89.0px;">-</td><td class="op-uc-p op-uc-table--cell" style="background-color:hsl(0, 0%, style="background-color:hsl(30, 75%, 60%);border:1.0px solid #000000;height:11.0px;padding:4.0px;vertical-align:top;width:200.0px;">Not relevant for Show Changes</td></tr><tr an inherent attribute of a work package</td></tr><tr class="op-uc-table--row"><td class="op-uc-p op-uc-table--cell" style="background-color:hsl(0, 0%, style="background-color:hsl(30, 75%, 60%);border:1.0px solid #000000;height:11.0px;padding:4.0px;vertical-align:top;width:162.0px;"><strong>Is milestone</strong></td><td class="op-uc-p op-uc-table--cell" style="background-color:hsl(0, 0%, style="background-color:hsl(30, 75%, 60%);border:1.0px solid #000000;height:11.0px;padding:4.0px;vertical-align:top;width:175.0px;">NO (Column can't be added)</td><td class="op-uc-p op-uc-table--cell" style="background-color:hsl(0, 0%, style="background-color:hsl(30, 75%, 60%);border:1.0px solid #000000;height:11.0px;padding:4.0px;vertical-align:top;width:232.0px;">TBC (Jens)</td><td #000000;height:11.0px;padding:4.0px;vertical-align:top;width:232.0px;">NO</td><td class="op-uc-p op-uc-table--cell" style="background-color:hsl(0, 0%, 60%);width:100px;"></td><td class="op-uc-p op-uc-table--cell" style="background-color:hsl(0, 0%, style="background-color:hsl(30, 75%, 60%);border:1.0px solid #000000;height:11.0px;padding:4.0px;vertical-align:top;width:89.0px;">-</td><td class="op-uc-p op-uc-table--cell" style="background-color:hsl(0, 0%, style="background-color:hsl(30, 75%, 60%);border:1.0px solid #000000;height:11.0px;padding:4.0px;vertical-align:top;width:200.0px;">Not relevant for Show Changes</td></tr><tr #000000;height:11.0px;padding:4.0px;vertical-align:top;width:200.0px;">Surely we'd just use the type filter instead</td></tr><tr class="op-uc-table--row"><td class="op-uc-p op-uc-table--cell" style="background-color:hsl(0, 0%, style="background-color:hsl(30, 75%, 60%);border:1.0px solid #000000;height:11.0px;padding:4.0px;vertical-align:top;width:162.0px;"><strong>Watcher</strong></td><td class="op-uc-p op-uc-table--cell" style="background-color:hsl(0, 0%, style="background-color:hsl(30, 75%, 60%);border:1.0px solid #000000;height:11.0px;padding:4.0px;vertical-align:top;width:175.0px;">NO (Column can't be added)</td><td class="op-uc-p op-uc-table--cell" style="background-color:hsl(0, 0%, style="background-color:hsl(30, 75%, 60%);border:1.0px solid #000000;height:11.0px;padding:4.0px;vertical-align:top;width:232.0px;">NO</td><td class="op-uc-p op-uc-table--cell" style="background-color:hsl(0, 0%, 60%);width:100px;"></td><td class="op-uc-p op-uc-table--cell" style="background-color:hsl(0, 0%, style="background-color:hsl(30, 75%, 60%);border:1.0px solid #000000;height:11.0px;padding:4.0px;vertical-align:top;width:89.0px;">-</td><td class="op-uc-p op-uc-table--cell" style="background-color:hsl(0, 0%, style="background-color:hsl(30, 75%, 60%);border:1.0px solid #000000;height:11.0px;padding:4.0px;vertical-align:top;width:200.0px;">Not an inherent attribute of a work package</td></tr><tr class="op-uc-table--row"><td class="op-uc-p op-uc-table--cell" style="background-color:hsl(0, 0%, style="background-color:hsl(30, 75%, 60%);border:1.0px solid #000000;height:11.0px;padding:4.0px;vertical-align:top;width:162.0px;"><strong>ID</strong></td><td class="op-uc-p op-uc-table--cell" style="background-color:hsl(0, 0%, style="background-color:hsl(30, 75%, 60%);border:1.0px solid #000000;height:11.0px;padding:4.0px;vertical-align:top;width:175.0px;">NO (Value cannot change)</td><td class="op-uc-p op-uc-table--cell" style="background-color:hsl(0, 0%, style="background-color:hsl(30, 75%, 60%);border:1.0px solid #000000;height:11.0px;padding:4.0px;vertical-align:top;width:232.0px;">NO (Value cannot change)</td><td class="op-uc-p op-uc-table--cell" style="background-color:hsl(0, 0%, 60%);width:100px;"></td><td class="op-uc-p op-uc-table--cell" style="background-color:hsl(0, 0%, style="background-color:hsl(30, 75%, 60%);border:1.0px solid #000000;height:11.0px;padding:4.0px;vertical-align:top;width:89.0px;">-</td><td class="op-uc-p op-uc-table--cell" style="background-color:hsl(0, 0%, style="background-color:hsl(30, 75%, 60%);border:1.0px solid #000000;height:11.0px;padding:4.0px;vertical-align:top;width:200.0px;">Value can never change</td></tr></tbody></table></figure>
## Front-end changes
<img class="op-uc-image op-uc-image_inline" src="/api/v3/attachments/52940/content">
#### **Toolbar icon:**
* Add a new dropdown button with the label "Changes"
* With left icon "baseline" (new)
* Right icon (up/down, similar to the Create or Table/GANTT/Cards buttons)
* Clicking on this button triggers a drop modal, with this structure:
* A short text (Body Small/Regular, Grey 2): "View changes made to work packages in the current view between within a time period."
* A form item with label "Show changes since" and a dropdown with these options:
* \-
* yesterday
* last working day
* last week
* last month
* a specific date
* between two specific dates
* The "Show changes since" drop down has guideline text below it when "yesterday", "last working day", "last week" or "last month"
* This indicates the actual date that corresponds to the selection in the user's preferred date format. For example: "Thu, 2023-03-13".
* _**\[open\]** Should we update the phrasing to the following? Is this clearer?_
* _\-_
* _since 1 day ago_
* _since 1 working day ago_
* _since 1 week ago_
* _since 1 month ago_
* _since a specific date_
* _between two specific dates_
* By default, "-" is selected (this is the OFF state).
* Action bar (grey background)
* with one button "Apply" (primary, no icons)
* this button disabled by default and only enabled if there are changes to the modal.
#### **Modal behaviour**
* Selecting any other value other than "-" displays additional elements below the "Show changes since" drop down.
* Selecting "-" conversely hides all the other fields.
<img class="op-uc-image op-uc-image_inline" src="/api/v3/attachments/52941/content"><img class="op-uc-image op-uc-image_inline" src="/api/v3/attachments/52942/content">
* When "yesterday", "last working day", "last week" or "last month" is selected, show a new form item with label "Time" and an HTML input (type time),
* format "hh:mm"
* There is a label on the right indicating the time zone of the instance, with an icon 'help-1' to the right
* Hovering on icon shows this tooltip message: "Default time zone of the instance set by the administrator."
* A bottom guideline message displayed _only_ if default time zone is different from the user's time zone.
* "Inn your time zone:" following by a translation of the selected time in the user's time zone.
* _**\[open\]** This format is not final and is currently being challenged in this work package:_
_###47060_
* The following values correspond to these comparison periods:
* yesterday (default, _today - 1 day_)
* last working day (_today_ - _n days_, where n = any consequetive non-working days immediately preceeding today)
* last week (same day last week, _today - 7 days_)
* last month (same day and year but _month - 1;_ if current day is 29, 30 or 31 and the previous month does not have these values, take the highest available value).
* These options do change the structure of the modal:
* a specific date
* between two specific dates
* Option "a specific date" adds:
* a "Date" field:
* Standard date picker date field, with a 'Today' link underneath
* a "Time" field as previously described
* a mini calendar underneath
* with current month open by default
* clicking on any day changes the value of the "Date" field
* non-working days are displayed but enabled/clickable
* Option "between two specific dates" replaces the "Time" field with a range date picker:
* There are two sets of Date/time fields, arranged next to each other (one left, one right, each 50% width, with 1 rem spacing in between), with labels "From" and "To"
* The first field is a standard date picker date field, with a 'Today' link underneath
* The time field is the same as described earlier but without the "Time" label
* If the date entered in the "To" field is earlier than the "From" field, or if the date entered in the "From" field is later than the "To" field, the other date input is reinitialised and cleared.
* This is the same behaviour as in the work package range date picker.
* Below each set of Date/field field is a mini-calendar that looks and works the same as a work package range date picker:
* two months showing (current and next month)
* a previous button (left arrow) to the left of the first mini calendar's Month/year line
* a next button (right arrow) to the right of the second mini calendar's Month/year line
* non-working days are displayed but enabled/clickable
* Either the date field in "From" or "To" can be _active_, and this affects which date field is affect when the user clicks on a day in mini calendars,
* When a users opens the modal, makes changes and then applies the changes, these changes are immediately applied and the modal closed.
* The changes are not applied till the 'Apply' button is clicked)
* When the user then clicks on the "Changes" button again at a later time, their input is retained and corresponds to the current view.
* When the user saves the view, the Changes settings are also saved.
* If the user navigates away from the page without saving the view, the modal input/state of the Changes modal is lost.
<img class="op-uc-image op-uc-image_inline" src="/api/v3/attachments/52943/content"><img class="op-uc-image op-uc-image_inline" src="/api/v3/attachments/52946/content"><img class="op-uc-image op-uc-image_inline" src="/api/v3/attachments/52945/content"><img class="op-uc-image op-uc-image_inline" src="/api/v3/attachments/52944/content"><img class="op-uc-image op-uc-image_inline" src="/api/v3/attachments/52947/content">
#### **Show changes mode indicator**
When the "Show changes" mode is enabled:
<img class="op-uc-image op-uc-image_inline" src="/api/v3/attachments/52948/content">
* There is show changes mode indicator underneath the toolbar: a rectangular area with stroke (Grey 4, 1 px), with 0.75 rem top/bottom margin and 1 rem left/right margin.
* On the left edge, the text: "Changes since {date} {time}"
* For a range, the text is: ""Changes between {date} {time} and {date} {time}"
* On the right edge, legends:
* add icon (Feedback/Success/Dark, 16px),
* with label "Now meets filter criteria ({number of work packages concerned})"
* minus1 icon (Basic/Grey 1, 16px),
* with label "No longer meets filter criteria ({number of work packages concerned})"
* arrow-left-right icon (Feedback/Info/Dark, 16px),
* with label "Maintained with changes ({number of work packages concerned})"
* _**\[open\]** These labels might be later challenged/updated._
#### **Work package table list**
When the "Show changes" mode is enabled:
<img class="op-uc-image op-uc-image_inline" src="/api/v3/attachments/52949/content">
* A new column is added to the work package table view:
* The header is the baseline icon
* The column can have one of four values:
* blank: when there are no changes in the comparison period
* the green add icon: when the work package has been added to the view in the comparison period
* the grey minus1 icon: when the work package has been removed from the view in the comparison period
* or arrow-left-right icon: when the work package is maintained in the view in the comparison period, but modifications were made
* On hover of these icons, a tooltip is displayed with these text values:
* addition: "Added to view within the comparison time period"
* removal: "Removed from view within the comparison time period"
* modification: "Modified within the comparison time period"
* For modifications to values of columns visible in the table (amongst attributes that are tracked by this feature)
* The value is now displayed in two lines:
* Line 1: the original value is displayed in Caption/Regular, Grey 3, with strikethrough
* this is true of all kinds of values, including type, status and assignee
* Line 2: the new value in Body Small/Bold, Grey 1, with these particularities:
* new type and new status are displayed in their normal style
* assignee is displayed with the mini avatar, but in a smaller 20 × 20px instead of the regular 24 × 24 px
* Inline-editing is possible for the _new_ value.
* Hierarchy mode and grouping is possible.
* For parents of work packages:
* If the parents are not included in filter query but displayed only as an indication, the changes are _not_ displayed.
* If the parents are included in the filter query, the changes _are_ displayed.
* When a work package has been moved from one project to another, the set of users who has access to view it might also change (depending on each users permissions' in the new vs the old project). When show changes is activated and the user viewing has the necessary permissions to view it:
* in the past and in the present
* No special rule
* in the past but _not_ the present
* Show a "-" (grey, removed from view) change
* Replace new values with a dash "-" (since we cannot show the new values)
* It would be like the work package has been deleted
* in the present but _not_ the past
* Show a "+" (green, added to view) change
* Show both previous and new values (since if user navigates to the work package show page, the whole history will be displayed, so these values are available)
* It would be as if the work package has been created.
* has permissions to view it in neither project:
* Work package is not displayed at all
* _**\[open\]** We are unable to actual changes to the some attributes:_
* _The attributes in question:_
* _Attachment content_
* _Attachment name_
* _Watcher_
* _Comment_
* _We will show a warning to the user when any of these fields are used for filter when the Show changes mode is active._
#### **Mobile view**
In the mobile view of the work package table list:
<img class="op-uc-image op-uc-image_inline" style="width:528px;" src="/api/v3/attachments/52951/content">
* the "Changes" button in the toolbar is not visible
* it is hidden behind the more icon
* the Show changes mode indicator _is_ visible when active but
* the legends are not shown
* the "Changes since {date} {time}" line is centred
* cards are displayed as described below
#### **Cards view**
<img class="op-uc-image op-uc-image_inline" src="/api/v3/attachments/52545/content"><img class="op-uc-image op-uc-image_inline" src="/api/v3/attachments/52543/content"><img class="op-uc-image op-uc-image_inline" src="/api/v3/attachments/52544/content">
* In the work package cards view, changes are indicated with icons described above but that are:
* displayed to the right of the status
* this is true for desktop as well as mobile views
* Hover is available on the icons even on card view, as previously specified.
#### **Work package table configuration**
In the work package table configuration modal:
<img class="op-uc-image op-uc-image_inline" src="/api/v3/attachments/52952/content">
* There is a new tab titled "Show changes"
* This tab has the same settings as the the Show changes modal
#### System administration settings
Under Administrastor → System settings → General:
* _**\[open\]** Add new dropdown to select a default time zone:_
* _with label "Default time zone"_
* _a dropdown with a list of time zones available to the user (the same as in User settings → Settings)._
* _Guideline text underneath: "This is the base timezone of this instance used for time-based queries. Users will be displayed the corresponding time in their time zone."_
## ~~Notes (no longer relevant, archived 14.03.2023)~~
* ~~Better display currently selected comparison date.~~
* ~~Show the date also in the button? (Baseline:~~ _~~24 hours~~_~~)~~
* ~~Enabling baseline will never "filter" work packages out; on the contrary, it can show new ones (that met the current filter criteria in the past).~~
* _~~**\[to be discussed\]** Baseline takes into account filter criteria, and then shows differences in the context of those filters:~~_
* _~~"Additions" == work packages that did not meet the criteria in the baseline past but now do~~_
* _~~"Removals" == work packages that now do not meet the filter criteria but did in the past~~_
* ~~**NOTE: This behaviour doesn't make sense as this is what is exactly what the baseline does by itself; showing what was in the past meeting the filter criteria and now don't and the other way around while addition and removal of work packages are the complete work package creation or deletion.**~~
* _~~**\[to be discussed\]** Show only work packages that are additions or removals (based on my criteria).~~_
* _~~"New bugs newly added to the version within the last week"~~_
* _~~Baseline, version added as a filter.~~_
* _~~Option: only show additions, or removals.~~_
* ~~**NOTE: Again, this behaviour doesn't make sense as this is what is exactly what the baseline does by itself.**~~
* ~~And filtering a view with baseline enabled will show work packages that meet the criteria in the present~~ _~~and~~_ ~~in the past.~~
* ~~**\[open\]** Changing the value of the present might "hide" the intermediate value (so that it now shows the past and the~~ _~~new~~_ ~~present).~~
* ~~Need to review choice of colours: why red, green, orange?~~
* ~~We might potentially need new icons: new, changed and removed.~~
* ~~**\[open\]** Currently, it's possible to highlight rows based on attributes:~~
* ~~What do we do? Remove this feature or make it a choice between Baseline highlighting and this.~~
* ~~Add:~~
* ~~Subject has been changed:~~
* ~~"Buy beer"~~
* ~~"Buy coffee"~~
* ~~Can we track~~ _~~all~~_ ~~attributes (including custom fields), or do we need a limited set of attributes?~~
* ~~**\[open\]** Ideally, all work package attributes are tracked.~~
* ~~If not, how do we indicate in a list view that something has changed? (Or if it's not tracked, how do we let the user know that this is not tracked)~~
## Figma link
View Figma mockups here: [https://www.figma.com/file/RkQ2T9f5yrXH3srz8SP8vv/Show-change-(Baseline---track-changes)?node-id=1164%3A38835&t=el6jgjA9M9DyCM3x-1](https://www.figma.com/file/RkQ2T9f5yrXH3srz8SP8vv/Show-change-(Baseline---track-changes)?node-id=1164%3A38835&t=el6jgjA9M9DyCM3x-1)
## Out of scope for this epic
* Filter for only things that have been added/removed (red or green rows).
* Cannot filter to show only things that have been moved from status A to status B.
* Track changes of relations between work packages.
* Board view and team planner views.
* Extend the Gantt view to display the changes
* Start and/or finish date was moved to the past.
* Start and/or finish date was moved to the future.
* Start and/or finish date was added
* Start and/or finish date was removed.
* Soft deletion (the hiding of work packages a user scheduled for deletion) will not be supported as part of this work package. If a user deletes a work package, it will not show up in any work package list even if the work package had still existed at the time the user compares with.
## Figma link
https://www.figma.com/file/RkQ2T9f5yrXH3srz8SP8vv/?node-id=0%3A1
**As** an OpenProject user
**I want** to be able to see an overview of changes to work packages that have been made compared to a specific date in the past
**so that** I better understand the status and progress of my project.
### Extend the data model and the API to save and query historic values of work packages
* Extend the data model
* Extend the API
* It is possible to filter on historic values, e.g.
* All work packages that have been in status "scheduled" on 2022-01-01
* All work packages that were assigned to version 12.1 and all work packages that have been added or removed since a specific date.
`Note: The largest uncertainty when planning and estimating this feature comes from the performance requirements. We need to ensure that this feature also works for large organizations that have large data sets with a high number of concurrent requests.`
## Extend work package filters to request historic values from the API
* Extend the view to allow users to query a date (in the past)
* A specific date and hour
* Relative date and specific time (yesterday at 12 PM CEST)
* ~~B: A relative date, e.g:~~
* ~~24 hours~~
* ~~1 week~~
* ~~1 month~~
* Rebuild work package queries to allow requesting a list of relevant work packages, including the changes.
<img class="op-uc-image op-uc-image_inline" src="/api/v3/attachments/52535/content">
## Extend the work packages list view to display changes
* Changes to the following work package core attributes are highlighted in a diff view.
* Status
* Assignee
* Accountable
* Project
* Start date
* Finish date
* Type
* Priority
* Subject
* Version
* Parent
* **\[open\]** Custom fields
* Full list of attributes and what to do for each version below.
* Work packages that were added or removed within the specified time period, ie, between the comparison date and today, are highlighted (e.g. deliverables that were added to the project scope or features that were removed from a release).
* List the number of attributes that have been changed in that time period. This number also includes changes to the work package description, the details of which which are not shown in the list view.
## Attributes
**Green** - Already implemented in code
**Blue** - Confirmed for 13.0
**Yellow** - To be confirmed or discussed for 13.0
**Orange** - Not included for 13.0
<figure class="table op-uc-figure_align-center op-uc-figure"><table class="op-uc-table"><tbody><tr class="op-uc-table--row"><td class="op-uc-p op-uc-table--cell" style="background-color:#b0b3b2;border:1.0px solid #000000;height:11.0px;padding:4.0px;vertical-align:top;width:162.0px;"><strong>Attribute</strong></td><td class="op-uc-p op-uc-table--cell" style="background-color:#b0b3b2;border:1.0px solid #000000;height:11.0px;padding:4.0px;vertical-align:top;width:175.0px;"><strong>Show value diff (before/after)</strong></td><td class="op-uc-p op-uc-table--cell" style="background-color:#b0b3b2;border:1.0px solid #000000;height:11.0px;padding:4.0px;vertical-align:top;width:232.0px;"><strong>Timestamp filtering (indicate +/-/modified)</strong></td><td class="op-uc-p op-uc-table--cell" style="width:100px;"><strong>SORT / GROUP / SUM</strong></td><td class="op-uc-p op-uc-table--cell" style="background-color:#b0b3b2;border:1.0px solid #000000;height:11.0px;padding:4.0px;vertical-align:top;width:89.0px;"><strong>Version</strong></td><td class="op-uc-p op-uc-table--cell" style="background-color:#b0b3b2;border:1.0px solid #000000;height:11.0px;padding:4.0px;vertical-align:top;width:200.0px;"><strong>Remark</strong></td></tr><tr class="op-uc-table--row"><td class="op-uc-p op-uc-table--cell" style="background-color:#ACE1AF;border:1.0px solid #000000;height:12.0px;padding:4.0px;vertical-align:top;width:162.0px;"><strong>Status</strong></td><td class="op-uc-p op-uc-table--cell" style="background-color:#ACE1AF;border:1.0px solid #000000;height:12.0px;padding:4.0px;vertical-align:top;width:175.0px;"><strong>DONE</strong></td><td
## Front-end changes
<img class="op-uc-image op-uc-image_inline" src="/api/v3/attachments/52940/content">
#### **Toolbar icon:**
* Add a new dropdown button with the label "Changes"
* With left icon "baseline" (new)
* Right icon (up/down, similar to the Create or Table/GANTT/Cards buttons)
* Clicking on this button triggers a drop modal, with this structure:
* A short text (Body Small/Regular, Grey 2): "View changes made to work packages in the current view between within a time period."
* A form item with label "Show changes since" and a dropdown with these options:
* \-
* yesterday
* last working day
* last week
* last month
* a specific date
* between two specific dates
* The "Show changes since" drop down has guideline text below it when "yesterday", "last working day", "last week" or "last month"
* This indicates the actual date that corresponds to the selection in the user's preferred date format. For example: "Thu, 2023-03-13".
* _**\[open\]** Should we update the phrasing to the following? Is this clearer?_
* _\-_
* _since 1 day ago_
* _since 1 working day ago_
* _since 1 week ago_
* _since 1 month ago_
* _since a specific date_
* _between two specific dates_
* By default, "-" is selected (this is the OFF state).
* Action bar (grey background)
* with one button "Apply" (primary, no icons)
* this button disabled by default and only enabled if there are changes to the modal.
#### **Modal behaviour**
* Selecting any other value other than "-" displays additional elements below the "Show changes since" drop down.
* Selecting "-" conversely hides all the other fields.
<img class="op-uc-image op-uc-image_inline" src="/api/v3/attachments/52941/content"><img class="op-uc-image op-uc-image_inline" src="/api/v3/attachments/52942/content">
* When "yesterday", "last working day", "last week" or "last month" is selected, show a new form item with label "Time" and an HTML input (type time),
* format "hh:mm"
* There is a label on the right indicating the time zone of the instance, with an icon 'help-1' to the right
* Hovering on icon shows this tooltip message: "Default time zone of the instance set by the administrator."
* A bottom guideline message displayed _only_ if default time zone is different from the user's time zone.
* "Inn your time zone:" following by a translation of the selected time in the user's time zone.
* _**\[open\]** This format is not final and is currently being challenged in this work package:_
_###47060_
* The following values correspond to these comparison periods:
* yesterday (default, _today - 1 day_)
* last working day (_today_ - _n days_, where n = any consequetive non-working days immediately preceeding today)
* last week (same day last week, _today - 7 days_)
* last month (same day and year but _month - 1;_ if current day is 29, 30 or 31 and the previous month does not have these values, take the highest available value).
* These options do change the structure of the modal:
* a specific date
* between two specific dates
* Option "a specific date" adds:
* a "Date" field:
* Standard date picker date field, with a 'Today' link underneath
* a "Time" field as previously described
* a mini calendar underneath
* with current month open by default
* clicking on any day changes the value of the "Date" field
* non-working days are displayed but enabled/clickable
* Option "between two specific dates" replaces the "Time" field with a range date picker:
* There are two sets of Date/time fields, arranged next to each other (one left, one right, each 50% width, with 1 rem spacing in between), with labels "From" and "To"
* The first field is a standard date picker date field, with a 'Today' link underneath
* The time field is the same as described earlier but without the "Time" label
* If the date entered in the "To" field is earlier than the "From" field, or if the date entered in the "From" field is later than the "To" field, the other date input is reinitialised and cleared.
* This is the same behaviour as in the work package range date picker.
* Below each set of Date/field field is a mini-calendar that looks and works the same as a work package range date picker:
* two months showing (current and next month)
* a previous button (left arrow) to the left of the first mini calendar's Month/year line
* a next button (right arrow) to the right of the second mini calendar's Month/year line
* non-working days are displayed but enabled/clickable
* Either the date field in "From" or "To" can be _active_, and this affects which date field is affect when the user clicks on a day in mini calendars,
* When a users opens the modal, makes changes and then applies the changes, these changes are immediately applied and the modal closed.
* The changes are not applied till the 'Apply' button is clicked)
* When the user then clicks on the "Changes" button again at a later time, their input is retained and corresponds to the current view.
* When the user saves the view, the Changes settings are also saved.
* If the user navigates away from the page without saving the view, the modal input/state of the Changes modal is lost.
<img class="op-uc-image op-uc-image_inline" src="/api/v3/attachments/52943/content"><img class="op-uc-image op-uc-image_inline" src="/api/v3/attachments/52946/content"><img class="op-uc-image op-uc-image_inline" src="/api/v3/attachments/52945/content"><img class="op-uc-image op-uc-image_inline" src="/api/v3/attachments/52944/content"><img class="op-uc-image op-uc-image_inline" src="/api/v3/attachments/52947/content">
#### **Show changes mode indicator**
When the "Show changes" mode is enabled:
<img class="op-uc-image op-uc-image_inline" src="/api/v3/attachments/52948/content">
* There is show changes mode indicator underneath the toolbar: a rectangular area with stroke (Grey 4, 1 px), with 0.75 rem top/bottom margin and 1 rem left/right margin.
* On the left edge, the text: "Changes since {date} {time}"
* For a range, the text is: ""Changes between {date} {time} and {date} {time}"
* On the right edge, legends:
* add icon (Feedback/Success/Dark, 16px),
* with label "Now meets filter criteria ({number of work packages concerned})"
* minus1 icon (Basic/Grey 1, 16px),
* with label "No longer meets filter criteria ({number of work packages concerned})"
* arrow-left-right icon (Feedback/Info/Dark, 16px),
* with label "Maintained with changes ({number of work packages concerned})"
* _**\[open\]** These labels might be later challenged/updated._
#### **Work package table list**
When the "Show changes" mode is enabled:
<img class="op-uc-image op-uc-image_inline" src="/api/v3/attachments/52949/content">
* A new column is added to the work package table view:
* The header is the baseline icon
* The column can have one of four values:
* blank: when there are no changes in the comparison period
* the green add icon: when the work package has been added to the view in the comparison period
* the grey minus1 icon: when the work package has been removed from the view in the comparison period
* or arrow-left-right icon: when the work package is maintained in the view in the comparison period, but modifications were made
* On hover of these icons, a tooltip is displayed with these text values:
* addition: "Added to view within the comparison time period"
* removal: "Removed from view within the comparison time period"
* modification: "Modified within the comparison time period"
* For modifications to values of columns visible in the table (amongst attributes that are tracked by this feature)
* The value is now displayed in two lines:
* Line 1: the original value is displayed in Caption/Regular, Grey 3, with strikethrough
* this is true of all kinds of values, including type, status and assignee
* Line 2: the new value in Body Small/Bold, Grey 1, with these particularities:
* new type and new status are displayed in their normal style
* assignee is displayed with the mini avatar, but in a smaller 20 × 20px instead of the regular 24 × 24 px
* Inline-editing is possible for the _new_ value.
* Hierarchy mode and grouping is possible.
* For parents of work packages:
* If the parents are not included in filter query but displayed only as an indication, the changes are _not_ displayed.
* If the parents are included in the filter query, the changes _are_ displayed.
* When a work package has been moved from one project to another, the set of users who has access to view it might also change (depending on each users permissions' in the new vs the old project). When show changes is activated and the user viewing has the necessary permissions to view it:
* in the past and in the present
* No special rule
* in the past but _not_ the present
* Show a "-" (grey, removed from view) change
* Replace new values with a dash "-" (since we cannot show the new values)
* It would be like the work package has been deleted
* in the present but _not_ the past
* Show a "+" (green, added to view) change
* Show both previous and new values (since if user navigates to the work package show page, the whole history will be displayed, so these values are available)
* It would be as if the work package has been created.
* has permissions to view it in neither project:
* Work package is not displayed at all
* _**\[open\]** We are unable to actual changes to the some attributes:_
* _The attributes in question:_
* _Attachment content_
* _Attachment name_
* _Watcher_
* _Comment_
* _We will show a warning to the user when any of these fields are used for filter when the Show changes mode is active._
#### **Mobile view**
In the mobile view of the work package table list:
<img class="op-uc-image op-uc-image_inline" style="width:528px;" src="/api/v3/attachments/52951/content">
* the "Changes" button in the toolbar is not visible
* it is hidden behind the more icon
* the Show changes mode indicator _is_ visible when active but
* the legends are not shown
* the "Changes since {date} {time}" line is centred
* cards are displayed as described below
#### **Cards view**
<img class="op-uc-image op-uc-image_inline" src="/api/v3/attachments/52545/content"><img class="op-uc-image op-uc-image_inline" src="/api/v3/attachments/52543/content"><img class="op-uc-image op-uc-image_inline" src="/api/v3/attachments/52544/content">
* In the work package cards view, changes are indicated with icons described above but that are:
* displayed to the right of the status
* this is true for desktop as well as mobile views
* Hover is available on the icons even on card view, as previously specified.
#### **Work package table configuration**
In the work package table configuration modal:
<img class="op-uc-image op-uc-image_inline" src="/api/v3/attachments/52952/content">
* There is a new tab titled "Show changes"
* This tab has the same settings as the the Show changes modal
#### System administration settings
Under Administrastor → System settings → General:
* _**\[open\]** Add new dropdown to select a default time zone:_
* _with label "Default time zone"_
* _a dropdown with a list of time zones available to the user (the same as in User settings → Settings)._
* _Guideline text underneath: "This is the base timezone of this instance used for time-based queries. Users will be displayed the corresponding time in their time zone."_
## ~~Notes (no longer relevant, archived 14.03.2023)~~
* ~~Better display currently selected comparison date.~~
* ~~Show the date also in the button? (Baseline:~~ _~~24 hours~~_~~)~~
* ~~Enabling baseline will never "filter" work packages out; on the contrary, it can show new ones (that met the current filter criteria in the past).~~
* _~~**\[to be discussed\]** Baseline takes into account filter criteria, and then shows differences in the context of those filters:~~_
* _~~"Additions" == work packages that did not meet the criteria in the baseline past but now do~~_
* _~~"Removals" == work packages that now do not meet the filter criteria but did in the past~~_
* ~~**NOTE: This behaviour doesn't make sense as this is what is exactly what the baseline does by itself; showing what was in the past meeting the filter criteria and now don't and the other way around while addition and removal of work packages are the complete work package creation or deletion.**~~
* _~~**\[to be discussed\]** Show only work packages that are additions or removals (based on my criteria).~~_
* _~~"New bugs newly added to the version within the last week"~~_
* _~~Baseline, version added as a filter.~~_
* _~~Option: only show additions, or removals.~~_
* ~~**NOTE: Again, this behaviour doesn't make sense as this is what is exactly what the baseline does by itself.**~~
* ~~And filtering a view with baseline enabled will show work packages that meet the criteria in the present~~ _~~and~~_ ~~in the past.~~
* ~~**\[open\]** Changing the value of the present might "hide" the intermediate value (so that it now shows the past and the~~ _~~new~~_ ~~present).~~
* ~~Need to review choice of colours: why red, green, orange?~~
* ~~We might potentially need new icons: new, changed and removed.~~
* ~~**\[open\]** Currently, it's possible to highlight rows based on attributes:~~
* ~~What do we do? Remove this feature or make it a choice between Baseline highlighting and this.~~
* ~~Add:~~
* ~~Subject has been changed:~~
* ~~"Buy beer"~~
* ~~"Buy coffee"~~
* ~~Can we track~~ _~~all~~_ ~~attributes (including custom fields), or do we need a limited set of attributes?~~
* ~~**\[open\]** Ideally, all work package attributes are tracked.~~
* ~~If not, how do we indicate in a list view that something has changed? (Or if it's not tracked, how do we let the user know that this is not tracked)~~
## Figma link
View Figma mockups here: [https://www.figma.com/file/RkQ2T9f5yrXH3srz8SP8vv/Show-change-(Baseline---track-changes)?node-id=1164%3A38835&t=el6jgjA9M9DyCM3x-1](https://www.figma.com/file/RkQ2T9f5yrXH3srz8SP8vv/Show-change-(Baseline---track-changes)?node-id=1164%3A38835&t=el6jgjA9M9DyCM3x-1)
## Out of scope for this epic
* Filter for only things that have been added/removed (red or green rows).
* Cannot filter to show only things that have been moved from status A to status B.
* Track changes of relations between work packages.
* Board view and team planner views.
* Extend the Gantt view to display the changes
* Start and/or finish date was moved to the past.
* Start and/or finish date was moved to the future.
* Start and/or finish date was added
* Start and/or finish date was removed.
* Soft deletion (the hiding of work packages a user scheduled for deletion) will not be supported as part of this work package. If a user deletes a work package, it will not show up in any work package list even if the work package had still existed at the time the user compares with.
## Figma link
https://www.figma.com/file/RkQ2T9f5yrXH3srz8SP8vv/?node-id=0%3A1