add graph depth config
This commit is contained in:
parent
165d33810d
commit
39592347cc
@ -1,5 +1,6 @@
|
|||||||
enableLegend: false
|
enableLegend: false
|
||||||
enableDrag: true
|
enableDrag: true
|
||||||
enableZoom: true
|
enableZoom: true
|
||||||
|
depth: -1 # set to -1 to show full graph
|
||||||
paths:
|
paths:
|
||||||
- /moc: "#4388cc"
|
- /moc: "#4388cc"
|
0
layouts/_default/section.html
Normal file
0
layouts/_default/section.html
Normal file
@ -16,12 +16,35 @@
|
|||||||
const content = {{$.Site.Data.contentIndex}}
|
const content = {{$.Site.Data.contentIndex}}
|
||||||
const curPage = {{ strings.TrimRight "/" .Page.RelPermalink }}
|
const curPage = {{ strings.TrimRight "/" .Page.RelPermalink }}
|
||||||
const pathColors = {{$.Site.Data.graphConfig.paths}}
|
const pathColors = {{$.Site.Data.graphConfig.paths}}
|
||||||
|
let depth = {{$.Site.Data.graphConfig.depth}}
|
||||||
|
|
||||||
const parseIdsFromLinks = (links) => [...(new Set(links.flatMap(link => ([link.source, link.target]))))]
|
const parseIdsFromLinks = (links) => [...(new Set(links.flatMap(link => ([link.source, link.target]))))]
|
||||||
|
|
||||||
|
const neighbours = new Set()
|
||||||
|
const wl = [curPage || "/", "__SENTINEL"]
|
||||||
|
if (depth >= 0) {
|
||||||
|
while (depth >= 0 && wl.length > 0) {
|
||||||
|
// compute neighbours
|
||||||
|
const cur = wl.shift()
|
||||||
|
console.log(depth, cur, wl)
|
||||||
|
if (cur === "__SENTINEL") {
|
||||||
|
depth--
|
||||||
|
wl.push("__SENTINEL")
|
||||||
|
} else {
|
||||||
|
neighbours.add(cur)
|
||||||
|
const outgoing = index.links[cur] || []
|
||||||
|
const incoming = index.backlinks[cur] || []
|
||||||
|
console.log(incoming)
|
||||||
|
wl.push(...outgoing.map(l => l.target), ...incoming.map(l => l.source))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
parseIdsFromLinks(links).forEach(id => neighbours.add(id))
|
||||||
|
}
|
||||||
|
|
||||||
const data = {
|
const data = {
|
||||||
nodes: parseIdsFromLinks(links).map(id => ({id})),
|
nodes: [...neighbours].map(id => ({id})),
|
||||||
links,
|
links: links.filter(l => neighbours.has(l.source) && neighbours.has(l.target)),
|
||||||
}
|
}
|
||||||
|
|
||||||
const color = (d) => {
|
const color = (d) => {
|
||||||
@ -70,10 +93,8 @@
|
|||||||
const width = document.getElementById("graph-container").offsetWidth
|
const width = document.getElementById("graph-container").offsetWidth
|
||||||
|
|
||||||
const simulation = d3.forceSimulation(data.nodes)
|
const simulation = d3.forceSimulation(data.nodes)
|
||||||
.force("charge", d3.forceManyBody().strength(-20))
|
.force("charge", d3.forceManyBody().strength(-30))
|
||||||
.force("link", d3.forceLink(data.links)
|
.force("link", d3.forceLink(data.links).id(d => d.id))
|
||||||
.id(d => d.id)
|
|
||||||
)
|
|
||||||
.force("center", d3.forceCenter());
|
.force("center", d3.forceCenter());
|
||||||
|
|
||||||
const svg = d3.select('#graph-container')
|
const svg = d3.select('#graph-container')
|
||||||
|
Loading…
Reference in New Issue
Block a user