Dateien nach "frontend/src/tools" hochladen

This commit is contained in:
2026-05-28 01:38:16 +02:00
parent c35512e8d4
commit 8835789a05

View File

@@ -8,6 +8,11 @@ const DEFAULTS = {
strompreis_pro_kwh: 0.38, druckerpreis: 550, strompreis_pro_kwh: 0.38, druckerpreis: 550,
gesamtdruckstunden: 5000, verschleiss_pro_stunde: 0.25, gesamtdruckstunden: 5000, verschleiss_pro_stunde: 0.25,
}; };
const LS_CUSTOM = 'dd_kalk3d_custom_defaults';
const getEffectiveDefaults = () => {
try { const s = localStorage.getItem(LS_CUSTOM); if (s) return { ...DEFAULTS, ...JSON.parse(s) }; } catch {}
return { ...DEFAULTS };
};
const getFarbFaktor = n => Math.round((1.0 + Math.max(0, n - 1) * 0.1) * 100) / 100; const getFarbFaktor = n => Math.round((1.0 + Math.max(0, n - 1) * 0.1) * 100) / 100;
const STUFEN = [ const STUFEN = [
{ key:'f', emoji:'💖', label:'Freundschaft', mult:1.0, c:'#ff6b9d' }, { key:'f', emoji:'💖', label:'Freundschaft', mult:1.0, c:'#ff6b9d' },
@@ -99,7 +104,7 @@ export default function Kalkulator3D({ toast, editData, onEditDone, mobile }) {
druckerpreis: editData.druckerpreis, druckerpreis: editData.druckerpreis,
gesamtdruckstunden: editData.gesamtdruckstunden, gesamtdruckstunden: editData.gesamtdruckstunden,
verschleiss_pro_stunde: editData.verschleiss_pro_stunde, verschleiss_pro_stunde: editData.verschleiss_pro_stunde,
} : { ...DEFAULTS }); } : { ...getEffectiveDefaults() });
const [showAdv, setShowAdv] = useState(false); const [showAdv, setShowAdv] = useState(false);
const [name, setName] = useState(editData?.name ?? ''); const [name, setName] = useState(editData?.name ?? '');
const [bemerkung, setBemerkung] = useState(editData?.bemerkung ?? ''); const [bemerkung, setBemerkung] = useState(editData?.bemerkung ?? '');
@@ -184,7 +189,7 @@ export default function Kalkulator3D({ toast, editData, onEditDone, mobile }) {
<span style={{ display:'inline-block', transform:showAdv?'rotate(90deg)':'rotate(0)', transition:'transform 0.18s' }}></span> <span style={{ display:'inline-block', transform:showAdv?'rotate(90deg)':'rotate(0)', transition:'transform 0.18s' }}></span>
Erweiterte Einstellungen Erweiterte Einstellungen
<span style={{ marginLeft:'auto', fontSize:9, background:'rgba(78,205,196,0.1)', borderRadius:3, padding:'2px 6px', color:'#4ecdc4' }}> <span style={{ marginLeft:'auto', fontSize:9, background:'rgba(78,205,196,0.1)', borderRadius:3, padding:'2px 6px', color:'#4ecdc4' }}>
{Object.entries(vars).some(([k,v]) => v !== DEFAULTS[k]) ? 'GEÄNDERT' : 'STANDARD'} {Object.entries(vars).some(([k,v]) => v !== getEffectiveDefaults()[k]) ? 'GEÄNDERT' : 'STANDARD'}
</span> </span>
</button> </button>
{showAdv && ( {showAdv && (
@@ -197,7 +202,21 @@ export default function Kalkulator3D({ toast, editData, onEditDone, mobile }) {
<SmallInput label="Lebensdauer h" value={vars.gesamtdruckstunden} onChange={v=>sv('gesamtdruckstunden',v)} step={100}/> <SmallInput label="Lebensdauer h" value={vars.gesamtdruckstunden} onChange={v=>sv('gesamtdruckstunden',v)} step={100}/>
<SmallInput label="Verschleiß €/h" value={vars.verschleiss_pro_stunde} onChange={v=>sv('verschleiss_pro_stunde',v)} step={0.01}/> <SmallInput label="Verschleiß €/h" value={vars.verschleiss_pro_stunde} onChange={v=>sv('verschleiss_pro_stunde',v)} step={0.01}/>
</div> </div>
<button onClick={() => setVars({...DEFAULTS})} style={{ ...S.btn('#ff6b9d', true), marginTop:10 }}> Standard</button> <div style={{ display:'flex', gap:8, marginTop:10 }}>
<button onClick={() => {
localStorage.setItem(LS_CUSTOM, JSON.stringify(vars));
toast('Als persönlicher Standard gespeichert ✓');
}} style={{ ...S.btn('#4ecdc4', true), flex:1, textAlign:'center' }}>
Als Standard speichern
</button>
<button onClick={() => {
localStorage.removeItem(LS_CUSTOM);
setVars({ ...DEFAULTS });
toast('Auf Werkseinstellungen zurückgesetzt');
}} style={{ ...S.btn('#ff6b9d', true) }} title="Werkseinstellungen wiederherstellen">
</button>
</div>
</div> </div>
)} )}
</div> </div>