Dateien nach "frontend/src/tools" hochladen
This commit is contained in:
@@ -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 && (
|
||||
<div style={{ marginTop:10, background:'rgba(0,0,0,0.2)', border:'1px solid rgba(255,255,255,0.05)', borderRadius:9, padding:12 }}>
|
||||
<div style={{ display:'grid', gridTemplateColumns:'1fr 1fr', gap:10 }}>
|
||||
<SmallInput label="Material €/g" value={vars.materialpreis_pro_gramm} onChange={v=>sv('materialpreis_pro_gramm',v)} step={0.001}/>
|
||||
<SmallInput label="Material €/Rolle" value={vars.materialpreis_pro_rolle} onChange={v=>sv('materialpreis_pro_rolle',v)} step={0.5}/>
|
||||
<SmallInput label="Strom kW" value={vars.stromverbrauch_kw} onChange={v=>sv('stromverbrauch_kw',v)} step={0.01}/>
|
||||
<SmallInput label="Strom €/kWh" value={vars.strompreis_pro_kwh} onChange={v=>sv('strompreis_pro_kwh',v)} step={0.01}/>
|
||||
<SmallInput label="Drucker €" value={vars.druckerpreis} onChange={v=>sv('druckerpreis',v)} step={10}/>
|
||||
|
||||
Reference in New Issue
Block a user