Content
View differences
Updated by Dominic Bräunlein almost 2 years ago
# User Problem
## User
* Project manager
* Project member
* Administrator
## Problem
* Users **As** an OpenProject user
**I want to** have custom fields of type "Hierarchies"
**so that** I can more easily specify and admins need to deal with filter based on those hierarchical attributes at times.
* attributes.
**Examples:**
* Property -> Buildings -> Floors -> Rooms
* Continent -> Country -> Federal state -> County
* Organizations -> Department -> Team -> User
* Parts list of a machine
## Pain
* Hierarchies are not possible at the moment, only flat lists can be used.
* This makes it complicated to maintain, find and select values. OpenProject module
# Business Case
## Reach
> Add this value to the custom field and delete this section.
## Impact
> Add this value to the custom field and delete this section.
## Confidence
> Add this value to the custom field and delete this section.
## Urgency and Priority
> Add this value to the custom field and delete this section.
## Solution
### Summary
* The solution is a hierarchical custom field.
* These custom fields are needed for work packages.
* The admin needs to be able to define them and set values on admin level.
* Project admins need to be able to enable / disable this custom field on project level.
* Nodes should be able to have short and long form for displaying information in short e.g.
* Headquarters > Level 1 -> Room 2 => HQ -> Lvl 1 -> Room 2
* Europe -> Germany -> Bavaria -> Weißenburg => EU -> DE -> BY -> WUG
* Other custom fields need to be able to access the selected item from the hierarchical custom field.
* It should be also possible to select sub-information e.g. the parent node and short vs. long form
### Admin Interface
* Create nodes
* Set parent (and be able to change parent afterwards)
* Validations / Services / Contracts
* Data structures
* Path / Breadcrumb
* Long form
* short form
### API
* Add to work package representer
* Query
* on work packages (start with this one)
* on users
* on groups
* on projects
* Filter on
* Operators
* all assigned to a certain node
* all assigned to a certain node and its descendents
* Allowed values
* Group by
* WP/project/users/groups form
* link to typeahead backend
* Values endpoint
* Typeahead for value searching
* drill down
* get all children for node
* get all as tree (needed for quick solution with ng-select)
* Documentation
### Angular Frontend
* Render values
* In WP full view
* In WP table column
* Select values
* ng-select based (browsing the hierarchy)
* single select
* multi select
* search on path (typeahead) (searching the hierarchy, )
### **Acceptance criteria**
* When ever we work with the hierarchy, it is not necessary to load the full hierarchy as hierarchies can easily bigger than 1k elements.
* Administration
* create such an attribute
* set to single- or multi-select
* create nodes one by one
* modify parent
* delete node
* rename node
* provide acronym per node
* Interface for non admin, e.g. in a work package form
* A selected value can have multiple value representation
* Node ID
* Full path long: Europe -> Germany -> Bavaria
* Full path short: EU-DE-BY
* Selected long: Bavaria
* Selected short: BY
* Selection
* Select a leaf (e.g. Bavaria)
* Select a node (e.g. Germany)
* Allow multi-selection
* Filters
* By node or leaf (e.g. Bavaria only, Germany only)
* By node with descendants (e.g. Germany, including all federal states)
## Out **Out of Scope for the MVC scope**
* Drill down selector. It's like a location/file picker where the user can click on nodes (instead of folders) to find the item. This is needed to for selecting an item within a large amounts of hierarchical items
* Manual sort order. So for the time being elements are sorted alphabetically per node.
* Multiple changes to the hierarchy get saved in one transaction instead of multiple ones.
* Allow the same custom field to be active on work packages AND projects, or any other entity type we allow custom fields for.
##
## Next iteration
* The next iteration would be extending the hierachical custom field with a drill down selector.
* Drill down selector. It's like a location/file picker where the user can click on nodes (instead of folders) to find the item. This is needed to for selecting an item within a large amounts of hierarchical items
# Launch and Growth
## Measures
*
## Messaging
<figure class="table op-uc-figure_align-center op-uc-figure"><table class="op-uc-table"><tbody><tr class="op-uc-table--row"><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">Headline</p></th><td class="op-uc-table--cell"><p class="op-uc-p">Hierarchical attributes for work packages.</p></td></tr><tr class="op-uc-table--row"><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">First Paragraph</p></th><td class="op-uc-table--cell"><p class="op-uc-p">Like a list but with a structure and faster.</p></td></tr><tr class="op-uc-table--row"><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">Customer Quote</p></th><td class="op-uc-table--cell"><p class="op-uc-p">We need this.</p></td></tr></tbody></table></figure>
## Go to market
**Figma and visuals**
https://www.figma.com/design/oTMDTvcwrx35qExTkkSKBn/Custom-fields?node-id=386-8676
## User
* Project manager
* Project member
* Administrator
## Problem
* Users
**I want to** have custom fields of type "Hierarchies"
**so that** I can more easily specify
*
## Pain
* Hierarchies are not possible at the moment, only flat lists can be used.
* This makes it complicated to maintain, find and select values.
# Business Case
## Reach
> Add this value to the custom field and delete this section.
## Impact
> Add this value to the custom field and delete this section.
## Confidence
> Add this value to the custom field and delete this section.
## Urgency and Priority
> Add this value to the custom field and delete this section.
## Solution
### Summary
* The solution is a hierarchical custom field.
* These custom fields are needed for work packages.
* The admin needs to be able to define them and set values on admin level.
* Project admins need to be able to enable / disable this custom field on project level.
* Nodes should be able to have short and long form for displaying information in short e.g.
* Headquarters > Level 1 -> Room 2 => HQ -> Lvl 1 -> Room 2
* Europe -> Germany -> Bavaria -> Weißenburg => EU -> DE -> BY -> WUG
* Other custom fields need to be able to access the selected item from the hierarchical custom field.
* It should be also possible to select sub-information e.g. the parent node and short vs. long form
### Admin Interface
* Create nodes
* Set parent (and be able to change parent afterwards)
* Validations / Services / Contracts
* Data structures
* Path / Breadcrumb
* Long form
* short form
### API
* Add to work package representer
* Query
* on work packages (start with this one)
* on users
* on groups
* on projects
* Filter on
* Operators
* all assigned to a certain node
* all assigned to a certain node and its descendents
* Allowed values
* Group by
* WP/project/users/groups form
* link to typeahead backend
* Values endpoint
* Typeahead for value searching
* drill down
* get all children for node
* get all as tree (needed for quick solution with ng-select)
* Documentation
### Angular Frontend
* Render values
* In WP full view
* In WP table column
* Select values
* ng-select based (browsing the hierarchy)
* single select
* multi select
* search on path (typeahead) (searching the hierarchy, )
### **Acceptance criteria**
* When ever we work with the hierarchy, it is not necessary to load the full hierarchy as hierarchies can easily bigger than 1k elements.
* Administration
* create such an attribute
* set to single- or multi-select
* create nodes one by one
* modify parent
* delete node
* rename node
* provide acronym per node
* Interface for non admin, e.g. in a work package form
* A selected value can have multiple value representation
* Node ID
* Full path long: Europe -> Germany -> Bavaria
* Full path short: EU-DE-BY
* Selected long: Bavaria
* Selected short: BY
* Selection
* Select a leaf (e.g. Bavaria)
* Select a node (e.g. Germany)
* Allow multi-selection
* Filters
* By node or leaf (e.g. Bavaria only, Germany only)
* By node with descendants (e.g. Germany, including all federal states)
## Out
* Drill down selector. It's like a location/file picker where the user can click on nodes (instead of folders) to find the item. This is needed to for selecting an item within a large amounts of hierarchical items
* Manual sort order. So for the time being elements are sorted alphabetically per node.
* Multiple changes to the hierarchy get saved in one transaction instead of multiple ones.
* Allow the same custom field to be active on work packages AND projects, or any other entity type we allow custom fields for.
##
## Next iteration
* The next iteration would be extending the hierachical custom field with a drill down selector.
* Drill down selector. It's like a location/file picker where the user can click on nodes (instead of folders) to find the item. This is needed to for selecting an item within a large amounts of hierarchical items
# Launch and Growth
## Measures
*
## Messaging
<figure class="table op-uc-figure_align-center op-uc-figure"><table class="op-uc-table"><tbody><tr class="op-uc-table--row"><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">Headline</p></th><td class="op-uc-table--cell"><p class="op-uc-p">Hierarchical attributes for work packages.</p></td></tr><tr class="op-uc-table--row"><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">First Paragraph</p></th><td class="op-uc-table--cell"><p class="op-uc-p">Like a list but with a structure and faster.</p></td></tr><tr class="op-uc-table--row"><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">Customer Quote</p></th><td class="op-uc-table--cell"><p class="op-uc-p">We need this.</p></td></tr></tbody></table></figure>
## Go to market
**Figma and visuals**
https://www.figma.com/design/oTMDTvcwrx35qExTkkSKBn/Custom-fields?node-id=386-8676