Representing nested relations

@Polina_Zenevich and @Chr1sG I was wondering if there was any updates on this idea/request. It is one of the things that has been really bugging me. In fairness, I don’t know if any other apps do this (or do this well).

However, it seems to that fibery’s relations allow you to setup the nesting relationships within the data model but then that power is not available in the UI/Views (i.e. smart folders and hierarchical views) based on this fundamental design limitation:

While this makes sense, I wonder why this issue can’t be resolved through some rules/process which establishes one parent. For example, I believe the simplest case would be to first start with the current database relation as the primary parent and if no relation is defined to the same database (i.e. relation is null), then we would go up one level and use that relation as the parent relation (if it exists). And so on up the levels until you get to the first level at which point if no relation exists, it gets captured under a “no parent” bucket.

I think this would be a logical approach, although there may be edge cases that could benefit from later allowing this rule to be customizable in some way.

Example
So in this example:

image

where we have three databases where each database can have records of the same type nested under each other (i.e. Portfolios could have Sub-Portfolios and Program could have Sub-Programs and Projects could have Sub-Projects). In addition, you could also have projects be either part of the program or discrete projects under a portfolio:

image

Approach/Process
With the approach I suggested above, I believe you start by building each databases’s nested structure first (which is what fibery does for the first level):

Then in step 2, you start from highest level and move up and try to map all the root/level 1 items in the lower level databases:

So in the above example, after creating the individual nested structure for Portfolio, Program and Project, you then go to the Project tree and for every Project that is at the root of tree (i.e. has no parent Project), you will see if a Program relation is specified. If yes, then we insert/nest the Project (and any associated sub-Projects) inside that Program. If not, you will see if a Portfolio is defined and nest the Project there. If all fails, then the Project would be added to the “No Portfolio” list (again with any nested sub-Projects). After Projects are done, then you move one level up to Programs and do the same process with all the root level Programs.

I believe with this approach you will be able to get something like this:

This doesn’t assign a one true parent to any entity (I think that would diminish fibery’s flexibility and I don’t see why that would be necessary). However, it allows unlimited visual nesting by using a rule to determine each items parent based on the levels defined in the view.

I am sure I am missing important implementation details but would be curious to get fibery teams’ thoughts on if something like this is doable. If it can be accomplished for Smart Folders and Hierarchical Views, I think it would also be a very useful addition to the Whiteboard to allow things like org charts.

2 Likes