I like to create a list of entities that are connected as a queue/sequence/chain in a way that each entity has a previous next button, for easy navigation by the reader.
One example would be a book format with pages, or a Folgezettel sequence.
What is the best way to accomplish this in Fibery?
If you have a one-to-one self-relation (with one field called Next and the other called Previous) you can chain entities together and then click through as you need.
(You might want to pin these fields so they are accessible even when the right hand fields are minimized)
Thank you. However, that is not a realistic solution because when moving an entity in the queue to another position, three entities (the previous entity, the entity itself, the next entity) need to be manually updated. Also, this assumes that for each queue that the entity is part of, these previous next fields needs to be added, which limits the use to likely one (very simple) queue.
I think what is needed are editable queues just like lists, or a way to display the previous and next entity as buttons of a particular list view in the entity display.
I see that in a list view (when no sorting is applied) the entities can be dragged-dropped to another location in the list. That is likely a property of the list that keeps track of the weight of the entity relative to that list. If we can make that weight property work as previous next buttons in the entity display that would be great.
Am I right that if hierarchical relations of entities of the same type is implemented in Fibery, this issue would be solved?
‘Hierarchical’ relations are already possible in Fibery. Relation to the same db (one-to-one, one-to-many or many-to-many) is supported.
Although I don’t actually understand how/why this would help achieve what you’re describing.
If you have (one-to-one) links as follows A-B-C and you decide that you need the chain to become A-B-D-C then you would only need two actions: update D so that its Previous field is set to B (which disconnects C from B) and then update D so that its Next field is C.
(and if you use relation filters, you can make it easy for users to see which entities are currently unattached, when making selection)
All Fibery entities have an implicit “order” that is revealed (and can be changed by dragging) in List views. This is encoded in the entity’s hidden Rank
field (which unfortunately is not accessible to formulas or the UI).
The real difficulty with your request is that Fibery provides no way for a button (or script) to navigate the UI to a different entity.
If your “Next and Previous buttons” are relations (as @Chr1sG suggested) then clicking these will navigate to the related entity. But there is no simple way to reorder this implied list. A List View is the most intuitive way to order such a list (and it can also handle hierarchical relations).
You cannot make Rule that triggers on a change to the Rank
hidden field.
You could make a Rule that runs hourly and sets the Previous and Next links for every record in a collection/DB, but those links would be out-of-date during the interval between when you manually re-order (drag) some entities, and the next time the Rule runs. Although this function could instead be a Button that you click to after manually reordering items (instead of a Rule).
Yes, this is the technical limitation. Buttons do not support navigation actions (they basically operate on the data not on the UI).