zsviczian / excalibrain

A graph view to navigate your Obsidian vault
MIT License
706 stars 20 forks source link

Add Scrollbars & More Relationships to ExcaliBrain (Feature Requests) #37

Open Salamander230 opened 2 years ago

Salamander230 commented 2 years ago

I've recently started using ExcaliBrian and it's super awesome! I've tried TheBrain about a year ago and switched to Obsidian only to now miss the plex view that was provided in TheBrain, and ExcaliBrain does a good job of adding functionality similar to TheBrain in Obsidian. Kudos to a great plugin!

As a new ExcaliBrain user looking forward to what this wonderful tool has to offer, I have a few suggestions, with more along the way.

1) Adding scrollbars for different sections of the ExcaliBrain drawing

This can reduce clutter since scrollbars can serve to provide a limit to the number of notes seen on ExcaliBrain at once (possibly dependent on current window size), with the user able to scroll over different sections of the graph if they ever want to see more connected notes.

2) Adding More Relationships: "Next" and "Previous"

I believe there's utility in breaking up the "Friends" relationship category into "Next", "Previous", and "Friends". Sometimes notes can have relationships between them that have directionality, but is not best described as a parent-child relationship per se, depending on what you consider to be a parent and child. (for example, [[Disease]] → is_treated_by → [[Drug]]; "Drug" is neither a type of nor was created by the "Disease"). Also, ← (previous) & → (next) are implemented in the Breadcrumbs plugin, so for those who have been using them, it would be helpful if they can be denoted and represented similarly in ExcaliBrain as well. I also believe it's still necessary to keep the "Friends" category, since not all relationships have directionality (the "friend" relationship is an example in and of itself).

A crude drawing to represent the above two ideas together, with the colored bars as scrollbars and different sections of the ExcaliBrain drawing labeled

image

I have a lot more to suggest for this wonderful plugin, but I don't want to cram too much into one issue. Thank you so much for creating this awesome plugin and for taking the time to read through this!

zsviczian commented 2 years ago

Thanks for the suggestions! I am really happy that you find this plugin useful!

Scrollbars are a limitation of implementing this entire plugin on top of Excalidraw. So, unfortunately, at this time I am unable to implement TheBrain-like scrollbars. I recently read in a book that in the optimal folder structure you should not have more than 21 items in a folder. I think the same logic applies to the brain-graph as well. Typically you should try not to have long lists that require a scrollbar. See my tweet on the subject here: https://twitter.com/zsviczian/status/1535981412108623873?s=20&t=7VEFG-NmFWpmOpNQFMdC3w

I will think about the previous/next types. In my mind, this adds additional complexity. Also implementing this feature would reduce the similarity to TheBrain, which at least for me, coming from 2 decades of using TheBrain, would be a downside. I got used to the simplicity of the brain plex.

One thing you can do is to define previous and next friend relationships and style the arrows with a different color so you can more easily find them on your graph.

image image image

Salamander230 commented 2 years ago

Thank you so much for your thorough & thoughtful response! I appreciate the time you're taking to make and improve on this wonderful plugin.

I agree with your statement that next/previous types may add too much complexity. The alternative of assigning them as friend relationships is feasible, and differentiating them based on color of the links is doable.

It just made more sense to have separate visual spaces of the graph just for those nodes with the "next" relationship versus those with the "previous" relationship to the central node, rather than simply having the nodes sorted alphabetically.

However, this can be accomplished more broadly for any relationship types the user thinks of beyond "next" and "previous". If the nodes on the graph can be ordered by a user-defined ordered list of tags and/or relationship types (or alphabetically by those tags or relationship types), this can serve to localize some the space on the Excalidraw graph for those tags or relationship types, making things more visually compartmentalized. I can write a separate feature request for this if you'd like, just for documentation's sake.

zsviczian commented 2 years ago

Absolutely! More fine-grained filtering and sorting is definitely something I want to work on. I am also planning to add a feature to flip the graph 90 degrees. With this visual transformation parents become "previous", children become "next" and friends become "children".