From bb80cdf5a6157ca1f3a276e12e9faae9a4739cb7 Mon Sep 17 00:00:00 2001
From: dh_ackergaul <dh_ackergaul@dh-software.de>
Date: Di, 23 Jun 2026 11:16:18 +0200
Subject: [PATCH] Update emvheya - 23.6.2026, 11:16:10 [JD]
---
manufacturer/_furnview/_global/html/h/generic-katatree/js/helper.js | 49 +++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 49 insertions(+), 0 deletions(-)
diff --git a/manufacturer/_furnview/_global/html/h/generic-katatree/js/helper.js b/manufacturer/_furnview/_global/html/h/generic-katatree/js/helper.js
index 29e05a2..d831a83 100644
--- a/manufacturer/_furnview/_global/html/h/generic-katatree/js/helper.js
+++ b/manufacturer/_furnview/_global/html/h/generic-katatree/js/helper.js
@@ -61,3 +61,52 @@
console.log("----------------------------------------------------------------");
}
}
+
+/**
+ * Baut (memoisiert) eine Lookup-Map "Schluesselwert -> erstes passendes Element"
+ * fuer ein Array auf. Damit lassen sich wiederholte lineare Array.find()-Scans
+ * (jeweils O(n)) durch O(1)-Zugriffe ersetzen -- entscheidend, wenn die gleiche
+ * Liste fuer sehr viele Artikel durchsucht wird (sonst O(Artikel * Listengroesse)).
+ *
+ * Die fertige Map wird am Array-Objekt zwischengespeichert (Property
+ * "__kataIdx_<prop>") und automatisch verworfen, sobald das Array neu zugewiesen
+ * wird (z.B. bei Hersteller-/Sprachwechsel oder neuem KataPage-Aufbau), da das
+ * neue Array-Objekt diese Property nicht besitzt.
+ *
+ * Schluessel werden mit "$" praefixiert, um Kollisionen mit Eigenschaften des
+ * Object-Prototyps (z.B. "constructor", "toString") auszuschliessen.
+ *
+ * IE7-kompatibel: nur for-Schleife und einfache Property-Zugriffe.
+ *
+ * @param {Array} arr Quell-Array (darf null/undefined/leer sein)
+ * @param {string} prop Eigenschaft, nach der indiziert wird
+ * @returns {Object} Map ("$"+Wert -> Element); erstes Vorkommen gewinnt (wie find())
+ */
+function buildIndexMap(arr, prop) {
+ if (!arr) {
+ return {};
+ }
+ var cacheKey = "__kataIdx_" + prop;
+ var idx = arr[cacheKey];
+ if (idx) {
+ return idx;
+ }
+ idx = {};
+ for (var i = 0; i < arr.length; i++) {
+ var item = arr[i];
+ if (item) {
+ var k = "$" + item[prop];
+ if (idx[k] === undefined) {
+ idx[k] = item; // erstes Vorkommen behalten -> identisch zu Array.find()
+ }
+ }
+ }
+ arr[cacheKey] = idx;
+ return idx;
+}
+genKataTreeTimeLine = [];
+startDate = Date.now();
+
+function timeline(date, text){
+ genKataTreeTimeLine.push({date: date - startDate, text: text});
+}
--
Gitblit v1.9.3