Projekte
Übersicht über alle laufenden und geplanten Projekte.
Projektdetails und weitere Informationen finden Sie auf der jeweiligen Projektseite.
Aktive Projekte
0
in Vorbereitung
0
finalisierte
Projekte
0
Partner gesamt
0
+
EEG Mitglieder / Zählerpunkte
0
+
/
0
+
Forschungs- und Innovationsprojekte (FTI)
0
0
Energiegemeinschaften
(EGs)
Bürger-
beteiligungsmodelle
0
(function () {
function normalisiereText(text) {
return String(text || "")
.trim()
.replace(/\s+/g, " ");
}
function normalisiereKey(text) {
return normalisiereText(text)
.toLowerCase()
.replace(/ä/g, "ae")
.replace(/ö/g, "oe")
.replace(/ü/g, "ue")
.replace(/ß/g, "ss");
}
function leseText(item, selector) {
const element = item.querySelector(selector);
if (!element) {
return "";
}
return normalisiereText(element.textContent);
}
function leseZahl(item, selector) {
const text = leseText(item, selector);
const zahlText = text
.replace(/\./g, "")
.replace(",", ".")
.replace(/[^\d.]/g, "");
const zahl = parseFloat(zahlText);
if (isNaN(zahl)) {
return 0;
}
return zahl;
}
function leseStatusKey(item) {
const statusElement = item.querySelector(".projekt-status-feld");
if (!statusElement) {
return "";
}
const select = statusElement.matches("select")
? statusElement
: statusElement.querySelector("select");
if (select) {
const selectedOption = select.selectedOptions && select.selectedOptions.length
? select.selectedOptions[0]
: select.querySelector("option:checked");
const selectedText = selectedOption ? selectedOption.textContent : "";
const selectedValue = select.value || "";
const keyAusText = normalisiereKey(selectedText);
const keyAusValue = normalisiereKey(selectedValue);
if (
keyAusText === "laeuft" ||
keyAusText === "vorbereitung" ||
keyAusText === "abgeschlossen"
) {
return keyAusText;
}
return keyAusValue;
}
return normalisiereKey(statusElement.textContent);
}
function istEnergiegemeinschaft(item) {
const titel = leseText(item, ".idl-hyphens");
const kategorie = leseText(item, ".projekt-kategorie-feld");
const titelBeginntMitEG = /^eg\s+/i.test(titel);
const kategorieIstEG = normalisiereKey(kategorie).indexOf("energiegemeinschaft") !== -1;
return titelBeginntMitEG || kategorieIstEG;
}
function istBuergerbeteiligung(item) {
const titel = normalisiereKey(leseText(item, ".idl-hyphens"));
const kategorie = normalisiereKey(leseText(item, ".projekt-kategorie-feld"));
return (
titel.indexOf("buergerbeteiligung") !== -1 ||
kategorie.indexOf("buergerbeteiligung") !== -1
);
}
function istDemnaechstOderBald(item) {
const titel = normalisiereKey(leseText(item, ".idl-hyphens"));
const kategorie = normalisiereKey(leseText(item, ".projekt-kategorie-feld"));
return (
titel.indexOf("demnaechst") !== -1 ||
titel.indexOf("bald") !== -1 ||
kategorie.indexOf("demnaechst") !== -1 ||
kategorie.indexOf("bald") !== -1
);
}
function rundeAb(wert, schritt) {
if (!wert || wert < schritt) {
return 0;
}
return Math.floor(wert / schritt) * schritt;
}
function animiereZahl(element, vonWert, zielWert, dauerMs) {
const start = performance.now();
const unterschied = zielWert - vonWert;
function schritt(jetzt) {
const verstrichen = jetzt - start;
const fortschritt = Math.min(verstrichen / dauerMs, 1);
const aktuellerWert = Math.round(vonWert + unterschied * fortschritt);
element.textContent = aktuellerWert;
if (fortschritt 0 || zaehlpunkte > 0) {
anzahlEEGs++;
mitgliederSumme += mitglieder;
zaehlpunkteSumme += zaehlpunkte;
}
}
if (istEG || istBuergerbeteiligung(item)) {
eegOderBeteiligung++;
}
const istBuerger = istBuergerbeteiligung(item);
const buergerNochNichtRelevant = istBuerger && istDemnaechstOderBald(item);
if (buergerNochNichtRelevant) {
// Weder Bürgerbeteiligung noch FTI zählen - Projekt ist erst "demnächst"/"bald"
} else if (istBuerger) {
anzahlKatBuergerbeteiligung++;
} else if (!istEG) {
// Alles, was weder EG noch Bürgerbeteiligung ist, zählt als FTI-Projekt
anzahlKatForschungsprojekte++;
}
});
setKennzahl(".kennzahl-aktive-projekte", aktiveProjekte);
setKennzahl(".kennzahl-vorbereitung", projekteInVorbereitung);
setKennzahl(".kennzahl-final", abgeschlosseneProjekte);
setKennzahl(".kennzahl-partner", rundeAb(partnerSumme, 5));
setKennzahl(".kennzahl-EEGs", anzahlEEGs);
setKennzahl(".kennzahl-eegs", anzahlEEGs);
setKennzahlAnimiert(".kennzahl-mitglieder", rundeAb(mitgliederSumme, 100));
setKennzahlAnimiert(".kennzahl-eeg-zaehlpunkte", rundeAb(zaehlpunkteSumme, 100));
setKennzahl(".kennzahl-eeg-beteiligung", eegOderBeteiligung);
setKennzahl(".kennzahl-kat-buergerbeteiligung", anzahlKatBuergerbeteiligung);
setKennzahl(".kennzahl-kat-forschungsprojekte", anzahlKatForschungsprojekte);
}
function starteWennFertigGeladen() {
let debounceTimer = null;
let laeuftBereits = false;
function jetztAktualisieren() {
laeuftBereits = true;
updateKennzahlen();
}
const beobachter = new MutationObserver(function () {
if (debounceTimer) {
clearTimeout(debounceTimer);
}
// Erst aktualisieren, wenn 400ms lang keine weiteren Änderungen mehr kamen
debounceTimer = setTimeout(jetztAktualisieren, 400);
});
beobachter.observe(document.body, {
childList: true,
subtree: true,
});
// Absicherung: falls der Beobachter aus irgendeinem Grund nichts auslöst
setTimeout(function () {
if (!laeuftBereits) {
jetztAktualisieren();
}
}, 5000);
}
window.addEventListener("load", function () {
updateKennzahlen();
starteWennFertigGeladen();
});
})();