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