diff --git a/templates/graph.html b/templates/graph.html index 4382b29..96304a1 100644 --- a/templates/graph.html +++ b/templates/graph.html @@ -36,29 +36,60 @@ .replace(/'/g, '''); } - function renderNodeDetails(node) { + function renderEntityDetails(node) { const data = node.data(); - sidebarTitle.textContent = data.label; + const aliasEdges = node.connectedEdges('edge[edge_type="alias"]'); + const aliasNodes = aliasEdges.connectedNodes('node[type="alias"]'); + const aliasCount = aliasNodes.length; + sidebarTitle.textContent = + data.label + + ` (${aliasCount} alias${aliasCount !== 1 ? 'es' : ''})`; + + if (aliasCount === 0) { + details.innerHTML = '

No aliases available.

'; + } else { + const aliasList = aliasNodes.map(aliasNode => { + const aliasLabel = aliasNode.data('label'); + return `
  • ${escapeHtml(aliasLabel)}
  • `; + }).join(''); + details.innerHTML = ``; + } + } + + function renderAliasDetails(node) { + const data = node.data(); const occurrences = Array.isArray(data.occurrences) ? data.occurrences : []; - if (!occurrences.length) { + + sidebarTitle.textContent = + data.label + + ` (${occurrences.length} occurrence${occurrences.length !== 1 ? 's' : ''})`; + + if (occurrences.length === 0) { details.innerHTML = '

    No occurrences available.

    '; - return; } else { - sidebarTitle.textContent += ` (${occurrences.length} occurrence${occurrences.length > 1 ? 's' : ''})`; + details.innerHTML = occurrences.map(item => { + const link = escapeHtml(item.link); + const context = item.context; + return ` +
    +

    View on GOV.UK

    +

    ${context}

    +
    + `; + }).join(''); } + } - details.innerHTML = occurrences.map(item => { - const link = escapeHtml(item.link); - const context = item.context; - return ` -
    -

    View on GOV.UK

    -

    ${context}

    -
    - `; - }).join(''); + function renderNodeDetails(node) { + const data = node.data(); + if (data.type === 'entity') { + renderEntityDetails(node); + } + else if (data.type === 'alias') { + renderAliasDetails(node); + } } function calculateEntityNodeSize(node) {