/**
* Glossar-Experimente „neu1" — Energie, Klima, Boden.
*
* Registrierung wie in glossar-experiments.js:
* window.GlossarExperiments[key_slug] = function (root) { … }
* Der Renderer (glossar.php) übergibt einen leeren Container; das Widget baut
* seinen DOM selbst und bindet seine Events. Styles: nur .ge-* aus glossar.php.
*
* Richtlinien:
* - Keine externen Libraries, Vanilla JS + SVG.
* - Mobile-/Tap-freundlich, keine Hover-Abhängigkeit.
* - Zahlen mit kurzer Quellenangabe in der .ge-note.
* - Rechenzeichen · und : (nie ×/÷), deutsche Zahlen via toLocaleString.
*/
(function () {
'use strict';
const NS = 'http://www.w3.org/2000/svg';
const svgEl = (tag, attrs, parent) => {
const el = document.createElementNS(NS, tag);
if (attrs) for (const k in attrs) el.setAttribute(k, attrs[k]);
if (parent) parent.appendChild(el);
return el;
};
const deInt = (n) => Math.round(n).toLocaleString('de-AT');
const deNum = (n, dec) => n.toFixed(dec === undefined ? 1 : dec).replace('.', ',');
// =====================================================================
// Experiment: strommix — 5 Regler, CO₂-Ampel für den Strom-Mix
// =====================================================================
function strommix(root) {
// Lebenszyklus-CO₂ je kWh (Median IPCC AR5), gerundet in g/kWh
const sources = [
{ key: 'wasser', label: '💧 Wasserkraft', co2: 24, color: '#4a7c8a', val: 40 },
{ key: 'wind', label: '🌬️ Windkraft', co2: 11, color: '#5a8a5e', val: 25 },
{ key: 'sonne', label: '☀️ Sonne (PV)', co2: 48, color: '#e8c547', val: 15 },
{ key: 'gas', label: '🔥 Erdgas', co2: 490, color: '#e8833a', val: 15 },
{ key: 'kohle', label: '🪨 Kohle', co2: 820, color: '#4a4a4a', val: 5 }
];
root.innerHTML = `
🔌 Baue deinen Strom-Mix
Stell mit den Reglern ein, woher der Strom kommt. Die Anteile werden immer auf 100 % gerechnet. Beobachte die CO₂-Ampel!
CO₂ je Kilowattstunde: – g
–
0 gsauberschmutzig820 g
CO₂-Werte je kWh über den ganzen Lebensweg (Median): Wind 11 g · Wasser 24 g · Sonne 48 g · Erdgas 490 g · Kohle 820 g. Quelle: IPCC AR5 (2014), Anhang III. Viel Wasser, Wind und Sonne = sehr wenig CO₂.
`;
const bar = svgEl('g', {}, root.querySelector('.ge-gh-svg'));
const co2Out = root.querySelector('#sm-co2');
const verdict = root.querySelector('#sm-verdict');
const barFill = root.querySelector('#sm-bar');
const sliderBox = root.querySelector('#sm-sliders');
if (!sliderBox) return;
const shareEls = {};
sources.forEach(s => {
const row = document.createElement('div');
row.style.marginBottom = '.55rem';
row.innerHTML = `
`;
sliderBox.appendChild(row);
shareEls[s.key] = row.querySelector('#sm-share-' + s.key);
const inp = row.querySelector('input');
inp.addEventListener('input', () => { s.val = +inp.value; update(); });
});
function update() {
const sum = sources.reduce((a, s) => a + s.val, 0) || 1;
// Gestapelter Farbbalken + Anteil-Texte
bar.innerHTML = '';
let x = 0;
let co2mix = 0;
sources.forEach(s => {
const share = s.val / sum;
co2mix += share * s.co2;
const w = share * 600;
if (w > 0.5) svgEl('rect', { x, y: 0, width: w, height: 70, fill: s.color }, bar);
x += w;
if (shareEls[s.key]) shareEls[s.key].textContent = Math.round(share * 100) + ' %';
});
co2Out.textContent = deInt(co2mix);
barFill.style.width = Math.min(100, (co2mix / 820) * 100) + '%';
let state, txt;
if (co2mix < 80) { state = 'good'; txt = '🟢 sehr sauber'; }
else if (co2mix < 250) { state = 'now'; txt = '🟡 noch ok'; }
else if (co2mix < 500) { state = 'warn'; txt = '🟠 zu viel CO₂'; }
else { state = 'bad'; txt = '🔴 sehr schmutzig'; }
barFill.style.background = state === 'good' ? '#5a8a5e' : state === 'now' ? '#4a7c8a' : state === 'warn' ? '#e8833a' : '#c85c4a';
verdict.textContent = txt;
verdict.dataset.state = state;
}
update();
}
// =====================================================================
// Experiment: eisschild — Temperatur → Eisschmelze → Meeresspiegel
// =====================================================================
function eisschild(root) {
root.innerHTML = `
🧊 Wenn das Eis schmilzt
Schiebe den Regler und mach es wärmer. Das Eis auf Grönland und der Antarktis schmilzt — und das Meer steigt. Was passiert mit der Küste?
0+1,5+3+5 °C
Meeresspiegel: +0,0 m
–
Vollständig geschmolzen hebt Grönland-Eis den Meeresspiegel um rund 7 m, das Antarktis-Eis um rund 58 m. Das dauert sehr lange, doch schon ab etwa +1,5 °C beginnt Grönland zu kippen. Quelle: AWI (Alfred-Wegener-Institut).
Tippe an, wie du lebst. Der Balken zählt zusammen, wie viel CO₂ du in einem Jahr verursachst.
Dein Jahres-Ausstoß:
–
0 tZiel 1 – 2 tAT-Ø 8 t12 t
In Österreich verursacht jede Person rund 8 t CO₂ pro Jahr. Fürs Klima-Ziel wären es nur etwa 1 – 2 t. Quelle: Umweltbundesamt Österreich. Die Werte sind Richtgrößen, kein Messwert.
Wähle für jedes Jahr eine Pflanze. Baust du immer dasselbe an (Monokultur), wird der Boden müde. Ein Wechsel — vor allem mit Erbsen oder Klee — hält ihn gesund.
Bodengesundheit nach 3 Jahren:
60 %
ausgelaugtgesund
Erbsen und Klee sind Hülsenfrüchte: Sie sammeln mit Knöllchenbakterien Stickstoff aus der Luft und düngen so den Boden. Deshalb wechseln Bäuerinnen und Bauern die Feldfrüchte planmäßig ab (Fruchtfolge). Quelle: AGES / Landwirtschaftskammer.
`;
const box = root.querySelector('#ff-years');
const totalOut = root.querySelector('#ff-total');
const barFill = root.querySelector('#ff-bar');
const verdict = root.querySelector('#ff-verdict');
if (!box) return;
for (let y = 0; y < 3; y++) {
const row = document.createElement('div');
row.className = 'ge-calc-row';
row.innerHTML = `
Jahr ${y + 1}
`;
const opts = row.querySelector('.ge-calc-opts');
plants.forEach(p => {
const b = document.createElement('button');
b.className = 'ge-btn';
b.textContent = p.label;
b.dataset.key = p.key;
b.addEventListener('click', () => {
opts.querySelectorAll('.ge-btn').forEach(x => x.classList.remove('ge-btn-primary'));
b.classList.add('ge-btn-primary');
years[y] = p.key;
update();
});
opts.appendChild(b);
});
box.appendChild(row);
}
function update() {
let health = 60; // Startwert
let mono = 0;
for (let y = 0; y < 3; y++) {
const key = years[y];
if (!key) continue;
const p = plants.find(x => x.key === key);
health += p.effect;
// Monokultur-Strafe: gleiche Pflanze wie im Vorjahr
if (y > 0 && years[y - 1] === key) { health -= 10; mono++; }
}
health = Math.max(0, Math.min(100, health));
totalOut.textContent = Math.round(health) + ' %';
barFill.style.width = health + '%';
let txt, col;
if (health >= 75) { txt = '🟢 Toll — der Boden ist gesund und fruchtbar.'; col = '#5a8a5e'; }
else if (health >= 50) { txt = '🟡 Ok — mit mehr Wechsel geht es besser.'; col = '#4a7c8a'; }
else if (health >= 30) { txt = '🟠 Der Boden wird müde.'; col = '#e8833a'; }
else { txt = '🔴 Ausgelaugt — der Boden braucht eine Pause.'; col = '#c85c4a'; }
if (mono >= 2) txt = '🔴 Monokultur! Immer dasselbe laugt den Boden aus.';
barFill.style.background = col;
verdict.textContent = txt;
}
update();
}
// Registry — Keys = key_slug aus DB.
window.GlossarExperiments = Object.assign(window.GlossarExperiments || {}, {
'strommix': strommix,
'eisschild': eisschild,
'klimabilanz': klimabilanz,
'megawattstunde': megawattstunde,
'niederschlag': niederschlag,
'fruchtfolge': fruchtfolge
});
})();