Matrix: Header klickbar + konkrete Bürger:innen-Texte aus dem Lebensalltag

This commit is contained in:
Dotty Dotter 2026-04-10 23:43:57 +02:00
parent 632064d98f
commit 221d9426b7
2 changed files with 71 additions and 27 deletions

View File

@ -168,31 +168,31 @@ async def index(request: Request):
"parlament_names": parlament_names,
"matrix_labels": MATRIX_LABELS,
"matrix_explanations": {
"A1": "Werden bei öffentlichen Aufträgen Grundrechte in der Lieferkette beachtet?",
"A2": "Fließt öffentliches Geld in regionale Wertschöpfung statt Großkonzerne?",
"A3": "Achten Lieferant:innen auf Klimaschutz und Ressourcenschonung?",
"A4": "Werden faire Löhne bei externen Dienstleistern sichergestellt?",
"A5": "Ist die Vergabe öffentlicher Aufträge transparent nachvollziehbar?",
"B1": "Wird mit öffentlichen Geldern ethisch umgegangen?",
"B2": "Werden Steuergelder für den Nutzen aller eingesetzt?",
"B3": "Wird bei Investitionen der ökologische Fußabdruck berücksichtigt?",
"B4": "Ist die Verteilung öffentlicher Mittel sozial gerecht?",
"B5": "Können Bürger:innen mitentscheiden, wofür Geld ausgegeben wird?",
"C1": "Gibt es Gleichstellung und Diskriminierungsschutz in der Verwaltung?",
"C2": "Arbeiten Verwaltung und Politik an gemeinsamen Gemeinwohl-Zielen?",
"C3": "Fördert die Verwaltung umweltbewusstes Handeln?",
"C4": "Gibt es Chancengleichheit und familienfreundliche Arbeitszeiten?",
"C5": "Sind Entscheidungsprozesse in Politik und Verwaltung transparent?",
"D1": "Werden Grundrechte geschützt? Gleichheit vor dem Gesetz?",
"D2": "Profitieren möglichst viele Menschen — nicht nur einzelne Gruppen?",
"D3": "Wird die Daseinsvorsorge ökologisch nachhaltig gestaltet?",
"D4": "Haben alle Zugang zu Bildung, Gesundheit, Wohnen — unabhängig vom Einkommen?",
"D5": "Werden Bürger:innen bei Entscheidungen einbezogen?",
"E1": "Werden die Rechte künftiger Generationen mitgedacht?",
"E2": "Hat der Antrag positive Wirkung über die Gemeindegrenzen hinaus?",
"E3": "Werden ökologische Auswirkungen global bedacht?",
"E4": "Trägt der Antrag zum sozialen Ausgleich bei — auch überregional?",
"E5": "Fördert der Antrag demokratische Mitbestimmung über die Gemeinde hinaus?",
"A1": "Wenn Ihre Stadt Büromöbel kauft: Wurden die unter menschenwürdigen Bedingungen hergestellt? Oder in einer Fabrik, in der Arbeiter:innen ausgebeutet werden? Hier geht es darum, ob die öffentliche Hand beim Einkauf auf Menschenrechte achtet.",
"A2": "Beauftragt die Stadt den Handwerksbetrieb aus dem Ort — oder den billigsten Konzern aus dem Ausland? Bleibt das Geld in der Region und schafft Arbeitsplätze vor Ort?",
"A3": "Werden bei öffentlichen Aufträgen Klimastandards verlangt? Kommt das Schulessen von regionalen Bauernhöfen oder wird es quer durch Europa gekarrt?",
"A4": "Verdienen die Reinigungskräfte im Rathaus einen fairen Lohn? Haben Subunternehmer die gleichen Arbeitsbedingungen wie Festangestellte?",
"A5": "Können Sie als Bürger:in nachschauen, welche Firma den Auftrag für den Straßenbau bekommen hat — und warum? Oder passiert das alles hinter verschlossenen Türen?",
"B1": "Liegt das Geld Ihrer Stadt bei einer Bank, die auch Waffengeschäfte finanziert? Oder bei einer ethischen Bank, die in soziale Projekte investiert?",
"B2": "Fließen Ihre Steuergelder in einen neuen Radweg für alle — oder in eine Umgehungsstraße, die nur dem Gewerbegebiet nützt?",
"B3": "Investiert Ihre Kommune in Solaranlagen auf Schuldächern? Oder wird das Geld in klimaschädliche Projekte gesteckt?",
"B4": "Bekommen ärmere Stadtteile genauso viel Geld für Spielplätze und Schulen wie reiche? Oder konzentrieren sich die Investitionen dort, wo die Grundstückspreise schon hoch sind?",
"B5": "Gibt es einen Bürgerhaushalt, bei dem Sie mitbestimmen können, ob das Geld in die Bibliothek oder den Sportplatz fließt? Oder entscheidet das der Stadtrat allein?",
"C1": "Werden in Ihrer Stadtverwaltung Frauen gleich bezahlt? Haben Menschen mit Behinderung faire Chancen auf eine Stelle? Gibt es Schutz vor Mobbing?",
"C2": "Hat Ihre Stadt ein Klimaschutzkonzept, das alle Ämter gemeinsam umsetzen? Oder kocht jedes Amt sein eigenes Süppchen?",
"C3": "Fahren die Mitarbeiter:innen des Rathauses mit dem Dienstrad oder dem SUV? Gibt es vegetarisches Essen in der Kantine?",
"C4": "Können Eltern in der Verwaltung Teilzeit arbeiten, ohne Karrierenachteile? Gibt es flexible Arbeitszeiten für pflegende Angehörige?",
"C5": "Können Sie die Sitzungsprotokolle des Stadtrats online lesen? Verstehen Sie, warum Entscheidungen so und nicht anders gefallen sind?",
"D1": "Werden Sie auf dem Amt fair behandelt — egal ob Sie einen deutschen oder ausländischen Namen haben? Schützt die Polizei alle gleich?",
"D2": "Profitiert die ganze Stadt von dem Antrag — oder nur ein Stadtteil, eine Altersgruppe, eine Einkommensschicht?",
"D3": "Kommt der Strom für die Straßenbeleuchtung aus Erneuerbaren? Wird das Regenwasser im Park versickert statt in die Kanalisation geleitet?",
"D4": "Kann sich die alleinerziehende Mutter den Kitaplatz leisten? Bekommt der Rentner noch einen Arzttermin? Findet die Familie mit drei Kindern eine bezahlbare Wohnung?",
"D5": "Werden Sie gefragt, bevor die Straße vor Ihrem Haus umgebaut wird? Gibt es Bürgerversammlungen, Online-Beteiligung, Jugendparlamente?",
"E1": "Hinterlassen wir unseren Enkeln einen Schuldenberg und versiegelte Flächen? Oder investieren wir heute so, dass auch 2050 noch gute Lebensbedingungen herrschen?",
"E2": "Hilft der Antrag nur Ihrer Stadt — oder auch den Nachbargemeinden? Gibt es regionale Kooperationen, von denen alle profitieren?",
"E3": "Denkt Ihre Kommune beim Einkauf auch an den CO₂-Fußabdruck? An die Abholzung von Regenwäldern für billiges Papier? An den Wasserverbrauch in Dürregebieten?",
"E4": "Unterstützt Ihre Stadt strukturschwache Regionen? Gibt es Partnerschaften mit Kommunen im globalen Süden?",
"E5": "Setzt sich Ihre Kommune für mehr Demokratie ein — auch auf Landes- und Bundesebene? Werden internationale Abkommen unterstützt?",
},
})

View File

@ -1015,6 +1015,50 @@
document.body.insertAdjacentHTML('beforeend', html);
}
function showColumnInfo(col) {
const names = {1:'Menschenwürde',2:'Solidarität',3:'Ökologische Nachhaltigkeit',4:'Soziale Gerechtigkeit',5:'Transparenz & Mitbestimmung'};
const prinzipien = {1:'Rechtsstaatsprinzip',2:'Gemeinnutz',3:'Umwelt-Verantwortung',4:'Sozialstaatsprinzip',5:'Demokratie'};
const details = {
1: 'Werden Ihre Grundrechte geschützt? Sind Sie vor willkürlicher Behandlung durch Behörden sicher? Haben alle Menschen — unabhängig von Herkunft, Geschlecht oder Religion — die gleichen Rechte?',
2: 'Profitiert die Gemeinschaft? Wenn Ihre Kommune Geld ausgibt, kommt es bei den Menschen an? Werden Vereine, Nachbarschaftshilfe und ehrenamtliches Engagement gestärkt?',
3: 'Können Ihre Kinder noch saubere Luft atmen und in Seen schwimmen? Wird bei Entscheidungen an den Klimawandel gedacht? Gibt es mehr Grün in der Stadt, weniger Versiegelung?',
4: 'Kann sich jede Familie eine warme Wohnung leisten? Bekommen Kinder aus armen Familien die gleichen Bildungschancen? Gibt es bezahlbare Gesundheitsversorgung für alle?',
5: 'Können Sie als Bürger:in mitentscheiden, was in Ihrer Stadt passiert? Werden Sie rechtzeitig informiert? Sind Ratssitzungen öffentlich und verständlich?'
};
document.body.insertAdjacentHTML('beforeend', `
<div style="position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,0.4);z-index:300;display:flex;justify-content:center;align-items:center;" onclick="if(event.target===this)this.remove()">
<div style="background:white;border-radius:8px;padding:1.5rem;max-width:500px;width:90%;box-shadow:0 8px 24px rgba(0,0,0,0.2);">
<div style="display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem;">
<h3 style="color:var(--color-blue);margin:0;">Wert ${col}: ${names[col]}</h3>
<button onclick="this.closest('[style*=fixed]').remove()" style="background:none;border:none;font-size:1.2rem;cursor:pointer;"></button>
</div>
<p style="font-size:0.85rem;color:#666;margin-bottom:0.5rem;"><strong>Staatsprinzip:</strong> ${prinzipien[col]}</p>
<div style="background:#f8f9fa;padding:0.75rem;border-radius:6px;font-size:0.9rem;">${details[col]}</div>
</div>
</div>`);
}
function showRowInfo(row) {
const names = {'A':'Ausgelagerte Betriebe, Lieferant:innen, Dienstleister:innen','B':'Finanzpartner:innen, Geldgeber:innen, Steuerzahler:innen','C':'Politische Führung, Verwaltung, Ehrenamtliche','D':'Bürger:innen und Wirtschaft','E':'Staat, Gesellschaft und Natur'};
const details = {
'A': 'Wenn Ihre Stadt einen Spielplatz baut: Wer liefert das Material? Unter welchen Bedingungen wurde es hergestellt? Wird regional eingekauft — beim Handwerker um die Ecke — oder beim billigsten Anbieter aus dem Ausland? Diese Zeile bewertet, wie verantwortungsvoll die öffentliche Hand einkauft.',
'B': 'Wohin fließen Ihre Steuergelder? Liegt das Geld der Stadt bei einer ethischen Bank oder bei einem Finanzkonzern? Werden Investitionen so getätigt, dass sie der Allgemeinheit nutzen? Hier geht es um den verantwortungsvollen Umgang mit dem Geld, das Sie als Steuerzahler:in einzahlen.',
'C': 'Wie geht Ihre Stadtverwaltung mit den eigenen Mitarbeitenden um? Gibt es faire Bezahlung, Gleichstellung, familienfreundliche Arbeitszeiten? Engagieren sich Ehrenamtliche — und werden sie dafür wertgeschätzt? Diese Zeile bewertet die interne Kultur der öffentlichen Hand.',
'D': 'Das ist die Zeile, die Sie direkt betrifft: Funktioniert der Bus? Ist die Schule gut? Bekommen Sie einen Termin beim Amt? Können Sie sich die Miete leisten? Hier wird bewertet, ob die öffentliche Daseinsvorsorge bei Ihnen ankommt — bei allen, nicht nur bei wenigen.',
'E': 'Denkt Ihre Kommune über den eigenen Tellerrand hinaus? Wird beim Straßenbau an den Klimawandel gedacht? Gibt es Partnerschaften mit strukturschwachen Regionen? Hier wird bewertet, ob Entscheidungen auch für künftige Generationen und Menschen anderswo gut sind.'
};
document.body.insertAdjacentHTML('beforeend', `
<div style="position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,0.4);z-index:300;display:flex;justify-content:center;align-items:center;" onclick="if(event.target===this)this.remove()">
<div style="background:white;border-radius:8px;padding:1.5rem;max-width:500px;width:90%;box-shadow:0 8px 24px rgba(0,0,0,0.2);">
<div style="display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem;">
<h3 style="color:var(--color-blue);margin:0;">Gruppe ${row}: ${names[row]}</h3>
<button onclick="this.closest('[style*=fixed]').remove()" style="background:none;border:none;font-size:1.2rem;cursor:pointer;"></button>
</div>
<div style="background:#f8f9fa;padding:0.75rem;border-radius:6px;font-size:0.9rem;">${details[row]}</div>
</div>
</div>`);
}
// Sortierung (#100)
function setSortOrder(order) {
currentSort = order;
@ -1929,11 +1973,11 @@
const fieldExplain = {{ matrix_explanations | tojson }};
let matrixTableHtml = '<table class="matrix-table"><thead><tr><th style="min-width:120px;"></th>';
for (let col = 1; col <= 5; col++) matrixTableHtml += `<th title="${colPrinzip[col]}" style="cursor:help;">${col}. ${colLabels[col]}</th>`;
for (let col = 1; col <= 5; col++) matrixTableHtml += `<th style="cursor:pointer;" onclick="showColumnInfo(${col})">${col}. ${colLabels[col]}</th>`;
matrixTableHtml += '</tr></thead><tbody>';
['A', 'B', 'C', 'D', 'E'].forEach(row => {
matrixTableHtml += `<tr><th title="${rowTooltips[row]}" style="cursor:help;text-align:left;font-size:0.8rem;">${row}: ${rowLabels[row]}</th>`;
matrixTableHtml += `<tr><th style="cursor:pointer;text-align:left;font-size:0.8rem;" onclick="showRowInfo('${row}')">${row}: ${rowLabels[row]}</th>`;
for (let col = 1; col <= 5; col++) {
const field = `${row}${col}`;
const entry = matrixData[field];