| | |
| | | async function drawGraph( |
| | | baseUrl, |
| | | pathColors, |
| | | async function drawGraph(baseUrl, isHome, pathColors, graphConfig) { |
| | | |
| | | let { |
| | | depth, |
| | | enableDrag, |
| | | enableLegend, |
| | | enableZoom, |
| | | isHome, |
| | | opacityScale, |
| | | scale, |
| | | repelForce, |
| | | fontSize |
| | | ) { |
| | | fontSize} = graphConfig; |
| | | |
| | | const container = document.getElementById("graph-container") |
| | | const { index, links, content } = await fetchData |
| | | |
| | |
| | | const nodeRadius = (d) => { |
| | | const numOut = index.links[d.id]?.length || 0 |
| | | const numIn = index.backlinks[d.id]?.length || 0 |
| | | return 3 + (numOut + numIn) / 4 |
| | | return 2 + Math.sqrt(numOut + numIn) |
| | | } |
| | | |
| | | // draw individual nodes |
| | |
| | | ]) |
| | | const neighbourNodes = d3.selectAll(".node").filter((d) => neighbours.includes(d.id)) |
| | | const currentId = d.id |
| | | // window.Million.prefetch(new URL(`${baseUrl}${decodeURI(d.id).replace(/\s+/g, "-")}/`)) |
| | | window.Million.prefetch(new URL(`${baseUrl}${decodeURI(d.id).replace(/\s+/g, "-")}/`)) |
| | | const linkNodes = d3 |
| | | .selectAll(".link") |
| | | .filter((d) => d.source.id === currentId || d.target.id === currentId) |
| | |
| | | // highlight links |
| | | linkNodes.transition().duration(200).attr("stroke", "var(--g-link-active)") |
| | | |
| | | const bigFont = fontSize+0.5 |
| | | const bigFont = fontSize*1.5 |
| | | |
| | | // show text for self |
| | | d3.select(this.parentNode) |