From f3376e4ff74d45ec2bc1175846b0cdd646af1e9f Mon Sep 17 00:00:00 2001 From: Martin Tazl Date: Tue, 12 May 2026 08:11:40 +0200 Subject: [PATCH] =?UTF-8?q?Umstellung=20auf=20JSAON=20Datei=20f=C3=BCr=20A?= =?UTF-8?q?rtikel=20und=20Load=20Optimizer=20hinzugef=C3=BCgt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- single html/roll_calculator_v9.html | 1630 +++++++++++++++++++++++++++ single html/service-worker.js | 103 ++ 2 files changed, 1733 insertions(+) create mode 100644 single html/roll_calculator_v9.html create mode 100644 single html/service-worker.js diff --git a/single html/roll_calculator_v9.html b/single html/roll_calculator_v9.html new file mode 100644 index 0000000..9909bfe --- /dev/null +++ b/single html/roll_calculator_v9.html @@ -0,0 +1,1630 @@ + + + + + + + + + + Roll Diameter Calculator + + + + + +
+
+
⚠ BETA VERSION · INTERNAL USE ONLY
+

Roll Diameter Calculator — Naue GmbH & Co. KG

+ +
+

🔒 Authorized Departments Only / Nur autorisierte Abteilungen

+ This tool is exclusively intended for internal use by:
+ Production Planning · Logistics · Product Management

+ Dieses Tool ist ausschließlich für den internen Gebrauch in:
+ Produktionsplanung · Logistik · Produktmanagement +
+ +
+

🧪 Beta-Status

+ This application is in Beta. Results should be verified before operational use.
+ Diese Anwendung befindet sich im Beta-Stadium. Ergebnisse sind vor dem produktiven Einsatz zu überprüfen. +
+ +
+

📊 Product Thickness Values

+ Pre-filled product thickness values are derived from an automated data evaluation and serve as a starting point only. + They must be independently verified before use in any calculation.
+ Die vorgeschlagenen Produktdicken stammen aus einer automatischen Datenauswertung und müssen vor Verwendung in Berechnungen eigenständig überprüft werden. +
+ +
+ + +
+ +
+ + +
+
+
+ + +
+
+
+ Naue + BETA + Internal +
+
Roll Diameter Calculator · Roll Diameter · Product Length · Roll Weight
+
+
+ + +
+ +
+
+

🧮 Roll Diameter Calculator

+
+
+ + +
+ + +
+ + +
+ + +
+
+ + +
+
+ + +
+
+ + +
+ +
+ + + + +
+
+ + +
+
+ + + + + + D + d + +
+
+
D = Roll outer diameter
+
d = Core outer diameter
+
t = Product thickness
+
L = Product length
+
+
+ +
+ + +

Input Parameters

+ +
+
+ +
+ + mm +
+
+ + + + + +
+
+
+ + + +
+
+ +
+
+ +
+ + ± + + mm +
+
+
+ +
+
+ +
+ + m +
+
+
+ +
+ + mm +
+
+
+ + +
+

Roll Weight (optional)

+
+
+ +
+ + m +
+
+
+ +
+ + g/m² +
+
+
+ +
+ + kg +
+
+
+
+ +
+ + +
+ + + + +
+ Geometry: π/4 × (D² − d²) = L × t  |  Weight: G [kg] = Area Weight [g/m²] × L [m] × Width [m] / 1000 +
+ +
+ + + +
+ +

Known Reference Roll

+ +
+
+ + + +
+
+ +
+ + mm +
+
+ + + + + +
+
+
+ +
+
+ +
+ + mm +
+
+
+ +
+ + m +
+
+
+ +
+

New Roll Length

+ +
+
+ +
+ + m +
+
+
+ +
+ ± + + mm +
+
+
+ + +
+

Roll Weight (optional)

+
+
+ +
+ + m +
+
+
+ +
+ + g/m² +
+
+
+
+ +
+ + +
+ + + + +
+ Geometry: D₁ = √(d² + L₁/L₀ × (D₀² − d²))  |  Weight: G [kg] = Area Weight × L₁ × Width / 1000 +
+ +
+ + +
+
+ + +
+ ⓘ Calculation Notes
+ The calculated roll diameters assume a perfectly cylindrical roll with uniform, gap-free winding.

+ The product thickness can vary during production within the permitted manufacturing tolerance. + The actual roll diameter may therefore differ from the calculated values.

+ Use the ± Tolerance field next to the product thickness to estimate this effect — the result will then show the minimum, nominal and maximum roll diameter. +
+ + +
+ +
+ ▼ +

🎯 Load Optimizer — Transport Capacity Calculator

+ BETA +
+ + +
+ + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/single html/service-worker.js b/single html/service-worker.js new file mode 100644 index 0000000..7921a80 --- /dev/null +++ b/single html/service-worker.js @@ -0,0 +1,103 @@ + +// service-worker.js +// Cache-Strategie: Cache First (offline works, then network) + +const CACHE_NAME = 'roll-calculator-v1'; +const ASSETS_TO_CACHE = [ + './', + './roll_calculator_v8.html', + './article-data.json', + './service-worker.js' +]; + +// Install Event: Cache alle kritischen Assets +self.addEventListener('install', event => { + console.log('[ServiceWorker] Installing...'); + event.waitUntil( + caches.open(CACHE_NAME).then(cache => { + console.log('[ServiceWorker] Caching assets:', ASSETS_TO_CACHE); + return cache.addAll(ASSETS_TO_CACHE); + }).catch(err => { + console.error('[ServiceWorker] Cache failed:', err); + }) + ); + // Aktiviere sofort (optional) + self.skipWaiting(); +}); + +// Activate Event: Cleanup alte Caches +self.addEventListener('activate', event => { + console.log('[ServiceWorker] Activating...'); + event.waitUntil( + caches.keys().then(cacheNames => { + return Promise.all( + cacheNames.map(cacheName => { + if (cacheName !== CACHE_NAME) { + console.log('[ServiceWorker] Deleting old cache:', cacheName); + return caches.delete(cacheName); + } + }) + ); + }) + ); + self.clients.claim(); +}); + +// Fetch Event: Cache First Strategy +// 1. Prüfe Cache +// 2. Wenn nicht da, frag Network +// 3. Cache die Response für nächstes Mal +self.addEventListener('fetch', event => { + const url = event.request.url; + + // Skip nicht-GET Requests + if (event.request.method !== 'GET') { + return; + } + + event.respondWith( + caches.match(event.request) + .then(response => { + // Cache HIT + if (response) { + console.log('[ServiceWorker] Cache HIT:', url); + return response; + } + + // Cache MISS - versuche Network + console.log('[ServiceWorker] Cache MISS, fetching:', url); + return fetch(event.request) + .then(response => { + // Nur 200er Responses cachen + if (!response || response.status !== 200 || response.type === 'error') { + return response; + } + + // Clone die Response (weil sie nur einmal consumable ist) + const responseClone = response.clone(); + caches.open(CACHE_NAME).then(cache => { + console.log('[ServiceWorker] Caching response:', url); + cache.put(event.request, responseClone); + }); + + return response; + }) + .catch(err => { + // Network fail - versuche aus Cache + console.log('[ServiceWorker] Network failed, trying cache fallback:', url); + return caches.match(event.request).then(response => { + if (response) return response; + + // Fallback für offline + console.warn('[ServiceWorker] No cache fallback for:', url); + return new Response('Offline - resource not available', { + status: 503, + statusText: 'Service Unavailable' + }); + }); + }); + }) + ); +}); + +console.log('[ServiceWorker] Script loaded');