From c35512e8d4d3d3d26c0b779defd39551c4a35575 Mon Sep 17 00:00:00 2001 From: Dicken Date: Thu, 28 May 2026 01:31:21 +0200 Subject: [PATCH] Dateien nach "frontend/src/tools" hochladen --- frontend/src/tools/kalkulator3d.jsx | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/frontend/src/tools/kalkulator3d.jsx b/frontend/src/tools/kalkulator3d.jsx index 14e1fce..02d4ac1 100644 --- a/frontend/src/tools/kalkulator3d.jsx +++ b/frontend/src/tools/kalkulator3d.jsx @@ -3,9 +3,10 @@ import { useState, useMemo, useEffect, useRef } from 'react'; import { api, S } from '../lib.js'; const DEFAULTS = { - materialpreis_pro_gramm: 0.01, stromverbrauch_kw: 0.15, + materialpreis_pro_rolle: 10, // €/Rolle (1 kg = 1000 g → 0.01 €/g) + stromverbrauch_kw: 0.15, strompreis_pro_kwh: 0.38, druckerpreis: 550, - gesamtdruckstunden: 5000, verschleiss_pro_stunde: 0.06, + gesamtdruckstunden: 5000, verschleiss_pro_stunde: 0.25, }; const getFarbFaktor = n => Math.round((1.0 + Math.max(0, n - 1) * 0.1) * 100) / 100; const STUFEN = [ @@ -92,7 +93,7 @@ export default function Kalkulator3D({ toast, editData, onEditDone, mobile }) { const [stunden, setStunden] = useState(editData?.stunden ?? 3); const [farben, setFarben] = useState(editData?.farben ?? 1); const [vars, setVars] = useState(editData ? { - materialpreis_pro_gramm: editData.materialpreis_pro_gramm, + materialpreis_pro_rolle: editData.materialpreis_pro_gramm != null ? Math.round(editData.materialpreis_pro_gramm * 1000 * 100) / 100 : DEFAULTS.materialpreis_pro_rolle, stromverbrauch_kw: editData.stromverbrauch_kw, strompreis_pro_kwh: editData.strompreis_pro_kwh, druckerpreis: editData.druckerpreis, @@ -109,8 +110,9 @@ export default function Kalkulator3D({ toast, editData, onEditDone, mobile }) { const calc = useMemo(() => { const f = getFarbFaktor(farben); - const mat = gramm * vars.materialpreis_pro_gramm * f; - const str = stunden * vars.stromverbrauch_kw * vars.strompreis_pro_kwh; + const matProGramm = vars.materialpreis_pro_rolle / 1000; + const mat = gramm * matProGramm * f; + const str = stunden * vars.stromverbrauch_kw * vars.strompreis_pro_kwh; const ver = stunden * vars.verschleiss_pro_stunde; return { mat, str, ver, grund: mat + str + ver }; }, [gramm, stunden, farben, vars]); @@ -129,7 +131,13 @@ export default function Kalkulator3D({ toast, editData, onEditDone, mobile }) { if (!name.trim()) { toast('Bitte einen Namen eingeben', 'error'); return; } setSaving(true); try { - const payload = { name, gramm, stunden, farben, ...vars, + const payload = { name, gramm, stunden, farben, + materialpreis_pro_gramm: vars.materialpreis_pro_rolle / 1000, + stromverbrauch_kw: vars.stromverbrauch_kw, + strompreis_pro_kwh: vars.strompreis_pro_kwh, + druckerpreis: vars.druckerpreis, + gesamtdruckstunden: vars.gesamtdruckstunden, + verschleiss_pro_stunde: vars.verschleiss_pro_stunde, preis_freundschaft: calc.grund * 1.0, preis_normal: calc.grund * 1.5, preis_auftrag: calc.grund * 2.5, @@ -182,7 +190,7 @@ export default function Kalkulator3D({ toast, editData, onEditDone, mobile }) { {showAdv && (
- sv('materialpreis_pro_gramm',v)} step={0.001}/> + sv('materialpreis_pro_rolle',v)} step={0.5}/> sv('stromverbrauch_kw',v)} step={0.01}/> sv('strompreis_pro_kwh',v)} step={0.01}/> sv('druckerpreis',v)} step={10}/>