diff --git a/app/main.py b/app/main.py
index b82e0cd..188aa7c 100644
--- a/app/main.py
+++ b/app/main.py
@@ -151,11 +151,13 @@ async def index(request: Request):
parlament_names = {
bl.code: bl.parlament_name for bl in alle_bundeslaender()
}
+ from .models import MATRIX_LABELS
return templates.TemplateResponse("index.html", {
"request": request,
"app_name": settings.app_name,
"bundeslaender": bl_list,
"parlament_names": parlament_names,
+ "matrix_labels": MATRIX_LABELS,
})
diff --git a/app/templates/index.html b/app/templates/index.html
index dcc88d4..2aeb638 100644
--- a/app/templates/index.html
+++ b/app/templates/index.html
@@ -1700,55 +1700,72 @@
const matrixData = {};
(item.gwoeMatrix || []).forEach(m => { matrixData[m.field] = m; });
+ // GWÖ-Matrix Definitionen (aus models.py)
const rowLabels = {
- 'A': 'Lieferant:innen',
- 'B': 'Finanzen',
- 'C': 'Führung/Verwaltung',
- 'D': 'Bürger:innen',
- 'E': 'Gesellschaft/Natur'
+ 'A': 'Ausgelagerte Betriebe, Lieferant:innen',
+ 'B': 'Finanzpartner:innen, Steuerzahler:innen',
+ 'C': 'Politische Führung, Verwaltung',
+ 'D': 'Bürger:innen und Wirtschaft',
+ 'E': 'Staat, Gesellschaft und Natur'
+ };
+ const rowTooltips = {
+ 'A': 'Externe Beschaffung, Lieferketten, Dienstleister:innen',
+ 'B': 'Umgang mit öffentlichen Mitteln, Haushalt, Geldgeber:innen',
+ 'C': 'Mandatsträger:innen, Mitarbeitende, Ehrenamtliche',
+ 'D': 'Wirkung innerhalb der Grenzen, Daseinsvorsorge',
+ 'E': 'Wirkung über die Grenzen hinaus, Zukunft'
};
-
- // Spaltenüberschriften der GWÖ-Matrix (5 Werte)
const colLabels = {
- 1: 'Menschen-würde',
- 2: 'Solidarität',
- 3: 'Ökol. Nachh.',
- 4: 'Soz. Gerecht.',
+ 1: 'Menschenwürde',
+ 2: 'Solidarität',
+ 3: 'Ökol. Nachhaltigkeit',
+ 4: 'Soz. Gerechtigkeit',
5: 'Transparenz'
};
const colFull = {
1: 'Menschenwürde',
- 2: 'Solidarität',
+ 2: 'Solidarität',
3: 'Ökologische Nachhaltigkeit',
4: 'Soziale Gerechtigkeit',
5: 'Transparenz & Mitbestimmung'
};
-
- let matrixTableHtml = '
| ';
- for (let col = 1; col <= 5; col++) matrixTableHtml += `${colLabels[col]} | `;
+ const colPrinzip = {
+ 1: 'Rechtsstaatsprinzip — Werden Grundrechte geschützt? Rechtliche Gleichstellung?',
+ 2: 'Gemeinnutz — Wird das Gemeinwohl gefördert? Mehrwert für die Gemeinschaft?',
+ 3: 'Umwelt-Verantwortung — Klimaschutz? Ressourcenschonung? Biodiversität?',
+ 4: 'Sozialstaatsprinzip — Gerechte Verteilung? Daseinsvorsorge? Soziale Absicherung?',
+ 5: 'Demokratie — Bürgerbeteiligung? Offenlegung? Demokratische Prozesse?'
+ };
+ const fieldLabels = {{ matrix_labels | tojson }};
+ const ratingExplain = (r) => r >= 4 ? '++ stark fördernd' : r >= 1 ? '+ fördernd' : r === 0 ? '○ neutral' : r >= -3 ? '− widersprechend' : '−− stark widersprechend';
+
+ let matrixTableHtml = ' | ';
+ for (let col = 1; col <= 5; col++) matrixTableHtml += `${colLabels[col]} | `;
matrixTableHtml += '
';
-
+
['A', 'B', 'C', 'D', 'E'].forEach(row => {
- matrixTableHtml += `| ${row}: ${rowLabels[row]} | `;
+ matrixTableHtml += `
|---|
| ${row}: ${rowLabels[row]} | `;
for (let col = 1; col <= 5; col++) {
const field = `${row}${col}`;
const entry = matrixData[field];
+ const fullLabel = fieldLabels[field] || field;
if (entry) {
const cssClass = entry.rating > 0 ? 'positive' : (entry.rating < 0 ? 'negative' : 'neutral');
- matrixTableHtml += `${entry.symbol} | `;
+ const tooltip = `${field}: ${fullLabel}\n\n${entry.aspect || ''}\n\nBewertung: ${entry.rating} (${ratingExplain(entry.rating)})`;
+ matrixTableHtml += `${entry.symbol} | `;
} else {
- matrixTableHtml += ' | ';
+ matrixTableHtml += `○ | `;
}
}
matrixTableHtml += '
';
});
matrixTableHtml += '
';
-
- // Zusätzlich die Detail-Liste der bewerteten Felder
+
+ // Detail-Liste der bewerteten Felder mit vollen Beschreibungen
const matrixDetailHtml = (item.gwoeMatrix || []).map(m => `
-
-
${m.field}: ${m.label}
-
${m.symbol}
+
+ ${m.field} ${fieldLabels[m.field] || m.label}: ${m.aspect || ''}
+ ${m.symbol} (${m.rating})
`).join('');
|---|