diff --git a/app/templates/v2/screens/cluster.html b/app/templates/v2/screens/cluster.html index f79a278..6c508a3 100644 --- a/app/templates/v2/screens/cluster.html +++ b/app/templates/v2/screens/cluster.html @@ -181,11 +181,15 @@ async function loadClusters() { } function renderClusterCard(cl, idx) { - const members = cl.members || []; - const avgScore = cl.avg_score != null ? parseFloat(cl.avg_score).toFixed(1) : '—'; + // Backend liefert drucksachen+avg_gwoe_score; alte UI-Variante hatte members+avg_score. + const members = cl.drucksachen || cl.members || []; + const avgScoreRaw = cl.avg_gwoe_score != null ? cl.avg_gwoe_score : cl.avg_score; + const avgScore = avgScoreRaw != null ? parseFloat(avgScoreRaw).toFixed(1) : '—'; const label = cl.label || cl.title || ('Cluster ' + (idx + 1)); - const fraktionen = cl.fraktionen || {}; + const dom = cl.dominant_fraktion || ''; + const size = cl.size != null ? cl.size : members.length; + const fraktionen = cl.fraktionen || (dom ? {[dom]: size} : {}); const frakBars = Object.entries(fraktionen) .sort((a, b) => b[1] - a[1]) .slice(0, 5) @@ -195,7 +199,7 @@ function renderClusterCard(cl, idx) { return `

${label}

- ${members.length} Antrag${members.length !== 1 ? 'e' : ''} + ${size} Antrag${size !== 1 ? 'e' : ''} Ø ${avgScore}
${frakBars ? `
${frakBars}
` : ''} @@ -211,28 +215,38 @@ function showCluster(idx) { const content = document.getElementById('cluster-detail-content'); detail.style.display = ''; - const members = cl.members || []; + const members = cl.drucksachen || cl.members || []; const label = cl.label || cl.title || ('Cluster ' + (idx + 1)); - const avgScore = cl.avg_score != null ? parseFloat(cl.avg_score).toFixed(1) : '—'; + const avgScoreRaw = cl.avg_gwoe_score != null ? cl.avg_gwoe_score : cl.avg_score; + const avgScore = avgScoreRaw != null ? parseFloat(avgScoreRaw).toFixed(1) : '—'; + const size = cl.size != null ? cl.size : members.length; content.innerHTML = `

${label}

- ${members.length} Anträge · Ø Score ${avgScore} + ${size} Anträge · Ø Score ${avgScore}

- ${members.map(m => ` - + ${members.map(m => { + // m kann String (Drucksache-ID) oder Objekt sein + const isObj = typeof m === 'object' && m !== null; + const ds = isObj ? (m.drucksache || '') : m; + const bl = isObj ? (m.bundesland || '') : ''; + const titel = isObj ? (m.titel || ds) : ds; + const score = isObj && m.gwoe_score != null ? parseFloat(m.gwoe_score).toFixed(1) : null; + const url = `/antrag/${encodeURIComponent(ds)}` + (bl ? `?bundesland=${encodeURIComponent(bl)}` : ''); + return ` +
- ${m.bundesland || ''} - ${m.drucksache || m} + ${bl ? `${bl}` : ''} + ${ds}
-
${m.titel || m.drucksache || m}
- ${m.gwoe_score != null ? `
Score ${parseFloat(m.gwoe_score).toFixed(1)}
` : ''} -
`).join('')} +
${titel}
+ ${score ? `
Score ${score}
` : ''} + `; + }).join('')}
`; }