Content
View differences
Updated by Niels Lindenthal over 1 year ago
As # User Problem
## User
* Project manager
* Project member
* Administrator
## Problem
In some scenarios, users are required to manage complex information that naturally fits into a hierarchical structure. e.g.
* **Real Estate:** Property -> Buildings -> Floors -> Rooms
* **Geographical Data:** Continent -> Country -> Federal State -> County
* **Organizational Structures:** Organization -> Department -> Team -> User
* **Product Components:** Parts list of a machine
Currently, only flat lists are available. Flat lists can be challenging in managing and navigating through this information. Without a hierarchical view, it becomes difficult to maintain, locate, and work with these datasets effectively.
## Pain
* Users, particularly project managers and project members, need a way to save and organize information in work packages using hierarchical structures.
* A hierarchical representation would allow them to focus on relevant subsets of information, making navigation more intuitive and information retrieval easier.
# Business Case
## Solution
The solution involves implementing a custom field of type "hierarchy" to allow users to manage and navigate information in a structured, multi-level format
### Summary
* The admin needs to be able to
* Create a custom field of type "Hierarchy" (on admin level)
* Set items (on admin level)
* Items in that hierarchical structure should be able to have optionally an OpenProject abbreviation e.g.
* Headquarters (HQ) -> 1 Floor (1F) -> Room 2 (2) **in short:** "HQ -> 1F -> 2"
* Europe (EU) -> Germany (DE) -> Bavaria (BY) -> Weißenburg (WUG) **in short:** "EU -> DE -> BY -> WUG"
* item label and item short name must be unique within the same level of the hierarchy
* Project admins need to be able to
* enable / disable this custom field on project level.
###
### Admin Interface
I want * Create items
* Navigate to a specific item
* 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)
* Filter on
* Operators
* all assigned to a certain node
* all assigned to a certain node and its descendants
* Allowed values
* Group by
* WP form
* link to typeahead backend
* Items endpoint
* Typeahead for item searching
* get all as tree (needed for quick solution with ng-select)
* Documentation
### Angular front-end
* 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**
* In the first version there is a limitation to a maximum of 1k items.
* Administration
* create custom fields field of type hierarchy "Hierarchy"
* 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
* Selection
* Select a leaf (e.g. Bavaria)
* Select a node (e.g. Germany)
* Allow multi-selection
* Filters
* By node or leaf (e.g. is Bavaria or is Germany and not their descendants)
* By node with descendants (e.g. Germany, including all federal states)
## Out of Scope for iteration 1
* Drill down selector. A component like a location/file picker. The user can click on nodes to go one level deeper on the hierarchy.
* 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
So AND projects, or any other entity type we allow custom fields for.
* Change parent of hierarchy item in administration.
* Support hierarchies of more than 1k items (due to current limitations in API).
* Enable Hierarchies for other custom field types that are not work packages, e.g. projects.
* Configuration of value representation (complex formatting of strings that identify the item)
* 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
## Next iteration
* The next iteration would be extending the hierarchical custom field with a drill down selector. This is needed for selecting an item within a large amounts of hierarchical items. This needs clarification what drill down pattern would be the most accepted by users in my environment can more easily Folder-Style vs. a small + button on a tree structure
# Launch and Growth
## Measures
* tbd
## 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">Custom fields of type Hierarchy makes project managers and members life easier.</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">This feature allows admins to create and configure hierarchical custom fields. It helps users to organize and navigate complex data in structured, multi-level formats within work packages, making information retrieval more intuitive and manageable. manageable.</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">It's needed for our ...</p></td></tr></tbody></table></figure>
<figure class="image op-uc-figure"><div class="op-uc-figure--content"><img class="op-uc-image" src="/api/v3/attachments/240492/content"></div></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
In some scenarios, users are required to manage complex information that naturally fits into a hierarchical structure. e.g.
* **Real Estate:** Property -> Buildings -> Floors -> Rooms
* **Geographical Data:** Continent -> Country -> Federal State -> County
* **Organizational Structures:** Organization -> Department -> Team -> User
* **Product Components:** Parts list of a machine
Currently, only flat lists are available. Flat lists can be challenging in managing and navigating through this information. Without a hierarchical view, it becomes difficult to maintain, locate, and work with these datasets effectively.
## Pain
* Users, particularly project managers and project members, need a way to save and organize information in work packages using hierarchical structures.
* A hierarchical representation would allow them to focus on relevant subsets of information, making navigation more intuitive and information retrieval easier.
# Business Case
## Solution
The solution involves implementing a custom field of type "hierarchy" to allow users to manage and navigate information in a structured, multi-level format
### Summary
* The admin needs to be able to
* Create a custom field of type "Hierarchy" (on admin level)
* Set items (on admin level)
* Items in that hierarchical structure should be able to have optionally
* Headquarters (HQ) -> 1 Floor (1F) -> Room 2 (2) **in short:** "HQ -> 1F -> 2"
* Europe (EU) -> Germany (DE) -> Bavaria (BY) -> Weißenburg (WUG) **in short:** "EU -> DE -> BY -> WUG"
* item label and item short name must be unique within the same level of the hierarchy
* Project admins need to be able to
* enable / disable this custom field on project level.
###
###
I want
* Navigate
* 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)
* Filter on
* Operators
* all assigned to a certain node
* all assigned to a certain node and its descendants
* Allowed values
* Group by
* WP form
* link to typeahead backend
* Items endpoint
* Typeahead for item searching
* get all as tree (needed for quick solution with ng-select)
* Documentation
### Angular front-end
* 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**
* In the first version there is a limitation to a maximum of 1k items.
* Administration
*
* set to single- or multi-select
* create nodes one by one
* ~~modify parent~~
* delete node
* rename node
* provide acronym per node
* Interface
* Selection
* Select a leaf (e.g. Bavaria)
* Select a node (e.g. Germany)
* Allow multi-selection
* Filters
* By node or leaf (e.g. is Bavaria or is Germany and not their descendants)
* By node with descendants (e.g. Germany, including all federal states)
## Out of Scope for iteration 1
* Drill down selector. A component like a location/file picker. The user can click on nodes to go one level deeper on the hierarchy.
* Multiple changes to the hierarchy get saved in one transaction instead of multiple ones.
* Allow the same custom field to be active on work
So
* Change parent of hierarchy item in administration.
* Support hierarchies of more than 1k items (due to current limitations in API).
* Enable Hierarchies for other custom field types
* Configuration of value representation (complex formatting of strings that identify
* 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
## Next iteration
* The next iteration would be extending the hierarchical custom field with a drill down selector. This is needed for selecting an item within a large amounts of hierarchical items. This needs clarification what drill down pattern would be the most accepted by
# Launch and Growth
## Measures
* tbd
## 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">Custom fields of type Hierarchy makes project managers and members life easier.</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">This feature allows admins to create and configure hierarchical custom fields. It helps users to
<figure class="image op-uc-figure"><div class="op-uc-figure--content"><img class="op-uc-image" src="/api/v3/attachments/240492/content"></div></figure>
**Figma and visuals**
https://www.figma.com/design/oTMDTvcwrx35qExTkkSKBn/Custom-fields?node-id=386-8676