skepticmystic / breadcrumbs Goto Github PK
View Code? Open in Web Editor NEWAdd typed-links to your Obsidian notes
Home Page: https://publish.obsidian.md/breadcrumbs-docs
License: MIT License
Add typed-links to your Obsidian notes
Home Page: https://publish.obsidian.md/breadcrumbs-docs
License: MIT License
Show dots inside the grid cells similar to how Calendar does.
The dots will initially show word count, but eventually anything the user chooses
@bri example: **↑ BT:: [[Note]]**
Obsidian version: 0.12.4
Breadcrumbs plugin: 0.2.1
Dataview: 0.3.13
My breadcrumb view is empty now. Tried clean reinstall of the plugin and also disabling and re-enabling the plugin.
Ther are some error logs (also, I noticed that the plugin says "loading plugin" instead of "loading Breadcrumbs plugin". This is what I get when I start Obsidian. I think it might be due to dataview not having populated its index yet. Don't think there's much that can be done until Dataview provides an API to check if indexing is done.
This is what I get when I disable and re-enable the plugin, and switch file. I believe this is the actual issue:
Siblings are notes with the same parents. However, if the current note is related to the parent through link type A and another through link type B, I would not expect those to be siblings. Is it possible to filter implied siblings to only show those with the same type of relation?
Probably because the dv indices take longer to load on mobile
Perhaps the matrix view and breadcrumbs could be separated? Most of the time I find myself needing the breadcrumbs more. Having them at the same pane makes it such that I have to scroll down to see the breadcrumbs
Use Obs cache for yaml fields.
Then if(app.plugins.plugins.dataview)
, use dv cache for inline fields app.plugins.plugins.dataview.api.page(<path>)
.
Group them all together, and generate the graphs from there
Links being populated by breadcrumbs plugin seems to be a tags with internal-link class. If the link is unresolved, the is_unresolved class is missing.
User is unable to differentiate links to files that exists versus unresolved ones when using the plugin.
PS: dataview seems to have the same issue too:
blacksmithgu/obsidian-dataview#261
It would be less jumpy if the trail could be kept when notes are switched.
As per #2 — it would be nice if breadcrumbs could support the bulding of an index somewhere.
An index might also generate fields for SN (scope notes) DF (definitions) and pages for OT/PT (parent terms, tops of hierarchies)
It would be cool if the links supported hover preview.
Explanation from @lishid:
https://discord.com/channels/686053708261228577/840286264964022302/850078594768044093
Implementation from Murf:
https://discord.com/channels/686053708261228577/840286264964022302/849801819169488896
More implementation examples:
https://github.com/search?q=workspace.trigger%28%27hover-link%27%2C+%7B&type=code
In list and matrix view, it would be nice to not see the variants I have and instead see the type of the relationship e.g. Parents
.
Hi! I've tried breadcrumbs on my vault, but got a null pointer at (I think) this line:
breadcrumbs/src/sharedFunctions.ts
Line 85 in d045686
Uncaught (in promise) TypeError: Cannot read property 'map' of null
at eval (eval at <anonymous> (app.js:1), <anonymous>:6289:60)
at Array.forEach (<anonymous>)
at eval (eval at <anonymous> (app.js:1), <anonymous>:6285:15)
at async Promise.all (index 777)
at async getJugglLinks (eval at <anonymous> (app.js:1), <anonymous>:6280:27)
at async getNeighbourObjArr (eval at <anonymous> (app.js:1), <anonymous>:6339:22)
at async BreadcrumbsPlugin.initGraphs (eval at <anonymous> (app.js:1), <anonymous>:8599:30)
at async eval (eval at <anonymous> (app.js:1), <anonymous>:8544:35)
It looks like the regex you use to split doesn't always resolve.
This makes sense due to the implementation, and should be easy to fix.
each link could be expanded to show the parents, siblings, and children of that!
I should just be able to recursively call <List>
inside itself. But the component would need access to the functions to compute the parents, siblings, and children of the expanded note. It gets passed matrixView
, so I guess it alreayd has access?
The matrix view is great, but for cases where I'm using small screens, my sidebars tend to be smaller, and I would prefer using a list view in that case. I would like to suggest a setting to toggle between list and matrix view.
The list view would be just like the backlink plugin's list:
But instead of links
and unmentioned links
, it would have
Thanks so much for the amazing work!
Instead of having the user create fields for child/sibling, is it possible for the plugin to search for siblings (all children of parents except itself) and children from the graph itself? That would require less maintenance from the user.
Check this for solution:
If a page has both implied and real relationship to a file, the link get repeated.
Makes sense, I just need to separate the two views into their own areas.
There is alot of overlap between the two view's functionality. Try find a way to reduce duplicate code. Maybe having a parent class which MatrixView and TrailView each extend
Not immediately sure how to do this or if it's possible.
div.markdown-preview-view
For A
: sibling:: [[B]]
, B
should have A
as an implied sibling
If there's no path to the index note, it would still be valuable to have the path shown to the last parent note.
A file name starting with @ breaks links. resulting in the creation of new pages, rather than navigating to the page it self.
for example:
---
parent: [[\@bookName2019]]
---
Creates a new page.
Issue Resolved by leave the Index/Home Note(s) setting empty
( One of the new features added means you don't have to have an explicit index note for the trail to work)
=================================================================================
Bug in 7.4 (upgrade from 7.1)
Obsidian is most current release; these shots taken on system with Mac o/s current release.
Restore to 7.1 to show comparative screen shots before and after upgrade (see bar where breadcrumbs should show just narrow panel without actual breadcrumb list and matrix/list panel doesn't show parent for note being viewed)
Hello!!
Tried to add the plugin to my laptop and it loads ad then seems to run through all of the notes but then comes up with
VM189:8605 Uncaught (in promise) TypeError: Cannot read property '0' of undefined
at BreadcrumbsPlugin.fillTrailDiv (eval at <anonymous> (app.js:1), <anonymous>:8605:24)
at BreadcrumbsPlugin.drawTrail (eval at <anonymous> (app.js:1), <anonymous>:8637:14)
at eval (eval at <anonymous> (app.js:1), <anonymous>:8460:32)
Neither the list nor the matrix work
The breadcrumbs matrix doesn't auto refresh unless switching notes.
I can add an option for a customisable resfresh interval.
I just need to be careful about deregistering it.
setting.onChange(value => {
plugin.interval.deregister;
if(value && Number.isInt(value)) {
plugin.interval = app.registerInterval(() => await matrixView.draw(), value)
} else {
plugin.interval.deregister()
}
})
@HEmile suggested allowing juggl syntax link types to be detected by breadcrumbs. Currently, the breadcrumbs method of grabbing links from the note does not align with the juggl syntax of - linkType [[Note]]
(neither metadataCache detects these).
But the proposed syntax of [[Note name|alias|linkType]]
would be visible in metadataCache.resolvedLinks
, so this would be more doable
This is easy to implement. Add css classes to:
trailDiv
trailDiv
If there are multiple paths to the index note (or the last parent note #35), there should be an option to show them all or the shortest path.
A thesauri structure uses these elements:
Elements of a thesaurus1
A thesaurus is composed of five elements:
Descriptors (valid terms);
Non-descriptors (non-valid terms);
Hierarchical relationships;
Associative relationships;
Scope notes and definitions.
These elements are abbreviated as follows:
U Use
UF Used for
BT Broader term
NT Narrower term
RT Related term
SN Scope note
DF Definition
(example from)
Currently breadcrumbs supports BT only
it might be useful to follow the code here: https://github.com/jlhardes/metadataBias
results in a similar matrix to: https://ihlia.nl/search/index.jsp?q%3Asearch=gay&q%3Azoekterm.row1.field3=&lang=en
Based on the "type" of the note, it could have a different index (and therefore a different path entirely).
Maybe have a setting where the user specifies which note types lead to which indices:
{
'#Type/Finance': '010 Finance',
'#Type/Hobby': '020 Hobby'
}
If Note A lists Note B as "child" and Note B lists Note A as "parent", the lists/matrix view will show this relationship twice. Something like:
Would it be possible to show only unique values? Something like this:
Thank you
indexNote
DNE, and just skip the call of getBreadcrumbs
so that everything else still worksThe most comprehensive organization system for digital materiel is SKOS: https://www.w3.org/TR/skos-reference/
here are the subcategories to SKOS —its probably not necessary to use all of these. TopConcept, prefLabel definition, broader, narrower, related and then the broad/close/exact/related/etc Matches would satisfy 70% of uses
skos:Concept |
---|
skos:ConceptScheme |
skos:inScheme |
skos:hasTopConcept |
skos:topConceptOf |
skos:altLabel |
skos:hiddenLabel |
skos:prefLabel |
skos:notation |
skos:changeNote |
skos:definition |
skos:editorialNote |
skos:example |
skos:historyNote |
skos:note |
skos:scopeNote |
skos:broader |
skos:broaderTransitive |
skos:narrower |
skos:narrowerTransitive |
skos:related |
skos:semanticRelation |
skos:Collection |
skos:OrderedCollection |
skos:member |
skos:memberList |
skos:broadMatch |
skos:closeMatch |
skos:exactMatch |
skos:mappingRelation |
skos:narrowMatch |
skos:relatedMatch |
Running the entire computation every time active-leaf-change
fires is getting expensive.
I can initGraphs
once onload
, and then have a button to refresh them as desired.
The auto refresh interval can also refresh the graphs.
I still use the default note
icon.
Plugin version: 0.4.12
If I use list view, every time I restart Obsidian, it resets back to matrix view. It would be great if the state of list/matrix view could be saved in the workspace.
Thanks a lot! This plugin has become one of my favorites :)
Specifically, getFileFrontmatter
tries to access app.plugins.plugins.dataview.api
before it is done indexing
If I click on a link in the l/m view, if the note is already open but not in the active leaf, I would like the note not to open in the current leaf, but activate the leaf where it is already open.
(This would be very useful when combined with sliding panes.)
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.