Doro

Welche Maße soll dein Akku haben?
(function () { "use strict"; var DIMENSIONEN = ["laenge", "breite", "hoehe"]; var TOKEN_RE = /^(laenge|breite|hoehe)-([0-9]+)-([0-9]+)$/; function getWidget() { return document.querySelector(".mf-masse-filter"); } function parseGanzzahl(raw) { var v = parseFloat(String(raw || "").replace(",", ".")); if (!isFinite(v) || v <= 0) { return null; } return Math.round(v); } /* Fremde Facetten-Tokens (Ceres-Facetten-IDs usw.) erhalten, nur unsere Mass-Tokens ersetzen */ function fremdeTokens(url) { var alle = (url.searchParams.get("facets") || "").split(","); var fremde = []; for (var i = 0; i < alle.length; i++) { var t = alle[i].trim(); if (t && !TOKEN_RE.test(t)) { fremde.push(t); } } return fremde; } function navigieren(masseTokens) { try { var url = new URL(window.location.href); var tokens = fremdeTokens(url).concat(masseTokens); if (tokens.length) { url.searchParams.set("facets", tokens.join(",")); } else { url.searchParams.delete("facets"); } /* zurueck auf Seite 1; items-Altlast der v2.x entfernen */ url.searchParams.delete("page"); url.searchParams.delete("items"); window.location.assign(url.toString()); } catch (e) { /* URL-API nicht verfuegbar */ } } function anwenden() { var widget = getWidget(); if (!widget) { return; } var tokens = []; for (var i = 0; i < DIMENSIONEN.length; i++) { var dim = DIMENSIONEN[i]; var minInput = widget.querySelector('[data-mf-field="' + dim + 'Min"]'); var maxInput = widget.querySelector('[data-mf-field="' + dim + 'Max"]'); var min = minInput ? parseGanzzahl(minInput.value) : null; var max = maxInput ? parseGanzzahl(maxInput.value) : null; if (min === null && max === null) { continue; } if (min !== null && max !== null && min > max) { var tausch = min; min = max; max = tausch; } tokens.push(dim + "-" + (min === null ? 0 : min) + "-" + (max === null ? 0 : max)); } navigieren(tokens); } function prefillAusUrl() { try { var widget = getWidget(); if (!widget) { return; } var alle = (new URL(window.location.href).searchParams .get("facets") || "").split(","); for (var i = 0; i < alle.length; i++) { var m = TOKEN_RE.exec(alle[i].trim()); if (!m) { continue; } var minInput = widget.querySelector('[data-mf-field="' + m[1] + 'Min"]'); var maxInput = widget.querySelector('[data-mf-field="' + m[1] + 'Max"]'); if (minInput && parseInt(m[2], 10) > 0) { minInput.value = m[2]; } if (maxInput && parseInt(m[3], 10) > 0) { maxInput.value = m[3]; } } } catch (e) { /* URL-API nicht verfuegbar */ } } document.addEventListener("click", function (e) { if (!e.target || !e.target.closest) { return; } if (e.target.closest(".mf-apply")) { anwenden(); } else if (e.target.closest(".mf-reset")) { navigieren([]); } }); document.addEventListener("keydown", function (e) { if (e.key === "Enter" && e.target && e.target.classList && e.target.classList.contains("mf-input")) { e.preventDefault(); anwenden(); } }); if (document.readyState === "loading") { document.addEventListener("DOMContentLoaded", prefillAusUrl); } else { prefillAusUrl(); } })();