diff --git a/client/src/components/KabelOptions.tsx b/client/src/components/KabelOptions.tsx index faccc14..0026fa9 100644 --- a/client/src/components/KabelOptions.tsx +++ b/client/src/components/KabelOptions.tsx @@ -7,11 +7,12 @@ const GROUPS: { label: string; test: (c: KabelTyp) => boolean }[] = [ { label: 'Aderleitung starr (H05V-U / H07V-U)', test: c => c.typ === 'H05V-U' || c.typ === 'H07V-U' }, { label: 'Aderleitung flexibel (H05V-K / H07V-K)', test: c => c.typ === 'H05V-K' || c.typ === 'H07V-K' }, { label: 'H05VV-F / A05VV-F – Schlauchleitung', test: c => c.typ === 'H05VV-F' || c.typ === 'A05VV-F' }, - { label: 'Netzwerkkabel (LAN Cat.5e / 6 / 7)', test: c => c.badge === 'lan' }, + { label: 'Netzwerkkabel (LAN Cat.5e / 6 / 7, Patchkabel)', test: c => c.badge === 'lan' }, { label: 'Buskabel (KNX/EIB, J-Y(ST)Y)', test: c => c.badge === 'bus' }, { label: 'Feldbus (Profibus DP, CAN-Bus)', test: c => c.badge === 'feldbus' }, { label: 'LiYCY – Steuerleitung geschirmt', test: c => c.typ === 'LiYCY' }, - { label: 'LiYCY paarig – Steuerleitung geschirmt, paarweise', test: c => c.typ === 'LiYCY paarig' } + { label: 'LiYCY paarig – Steuerleitung geschirmt, paarweise', test: c => c.typ === 'LiYCY paarig' }, + { label: 'Loxone Kabel', test: c => c.badge === 'loxone' } ]; // Value = "Name|kgpm": Materialliste und Kabelrechner brauchen beide Name und Faktor (kg/m allein ist nicht eindeutig). diff --git a/client/src/data/kabelData.ts b/client/src/data/kabelData.ts index b52bd87..a29007f 100644 --- a/client/src/data/kabelData.ts +++ b/client/src/data/kabelData.ts @@ -2,7 +2,7 @@ export interface KabelTyp { typ: string; name: string; kgpm: number; - badge: 'nym' | 'nyy' | 'h07' | 'ysly' | 'schlauch' | 'lan' | 'bus' | 'feldbus' | 'liycy'; + badge: 'nym' | 'nyy' | 'h07' | 'ysly' | 'schlauch' | 'lan' | 'bus' | 'feldbus' | 'liycy' | 'loxone'; } // Alle Werte aus den offiziellen Meinhart-Kabel-Datenblättern (Meinhart Kabel Österreich GmbH). @@ -75,6 +75,8 @@ export const KAB_DATA: KabelTyp[] = [ { typ: 'LAN 200C', name: 'LAN 200C Cat.5e SF/UTP 4×2×AWG24 PVC', kgpm: 0.060, badge: 'lan' }, { typ: 'LAN 200C', name: 'LAN 200C Cat.5e SF/UTP 4×2×AWG24 FRNC', kgpm: 0.060, badge: 'lan' }, { typ: 'LAN 200C', name: 'LAN 200C Cat.5e SF/UTP Duplex 2×(4×2×AWG24)', kgpm: 0.120, badge: 'lan' }, + { typ: 'LAN 200flex', name: 'LAN 200flex Patchkabel FTP 4×2×AWG26 PVC', kgpm: 0.024, badge: 'lan' }, + { typ: 'LAN 200flex', name: 'LAN 200flex Patchkabel FTP 4×2×AWG26 FRNC', kgpm: 0.024, badge: 'lan' }, { typ: 'LAN 350', name: 'LAN 350 Cat.6 F/UTP 4×2×AWG23 FRNC', kgpm: 0.068, badge: 'lan' }, { typ: 'LAN 350', name: 'LAN 350 Cat.6 F/UTP Duplex 2×(4×2×AWG23) FRNC', kgpm: 0.110, badge: 'lan' }, { typ: 'LAN 1000', name: 'LAN 1000 Cat.7 S/FTP 4×2×AWG23 FRNC', kgpm: 0.059, badge: 'lan' }, @@ -223,7 +225,10 @@ export const KAB_DATA: KabelTyp[] = [ { typ: 'LiYCY paarig', name: 'LiYCY paarig 8×2×0,75 mm²', kgpm: 0.300, badge: 'liycy' }, { typ: 'LiYCY paarig', name: 'LiYCY paarig 12×2×0,75 mm²', kgpm: 0.433, badge: 'liycy' }, { typ: 'LiYCY paarig', name: 'LiYCY paarig 16×2×0,75 mm²', kgpm: 0.564, badge: 'liycy' }, - { typ: 'LiYCY paarig', name: 'LiYCY paarig 2×2×1 mm²', kgpm: 0.143, badge: 'liycy' } + { typ: 'LiYCY paarig', name: 'LiYCY paarig 2×2×1 mm²', kgpm: 0.143, badge: 'liycy' }, + { typ: 'Loxone', name: 'Loxone Tree Kabel 2×2×0,8 + 2×1,5 mm² (100637)', kgpm: 0.095, badge: 'loxone' }, + { typ: 'Loxone', name: 'Loxone Tree Kabel LSZH 2×2×0,6 + 2×1,5 mm² (100394, Auslaufmodell)', kgpm: 0.104, badge: 'loxone' }, + { typ: 'Loxone', name: 'Loxone Audio Kabel 2×0,8 + 2×1,5 mm² (100606)', kgpm: 0.074, badge: 'loxone' } ]; export function kabelInfoForBez(bez: string): KabelTyp | undefined { diff --git a/client/src/styles.css b/client/src/styles.css index 0136264..f507c2c 100644 --- a/client/src/styles.css +++ b/client/src/styles.css @@ -38,6 +38,7 @@ button,input,select,textarea{font-family:inherit} :root[data-theme="light"] .badge-bus{background:rgba(190,40,130,.14);color:#a3206e} :root[data-theme="light"] .badge-feldbus{background:rgba(100,60,210,.14);color:#5a34b8} :root[data-theme="light"] .badge-liycy{background:rgba(92,118,134,.16);color:#3f5666} +:root[data-theme="light"] .badge-loxone{background:rgba(70,150,40,.16);color:#3d7d1c} :root[data-theme="light"] label.field select option{background:#fff;color:#0f2130} @media(prefers-color-scheme:light){ @@ -57,6 +58,7 @@ button,input,select,textarea{font-family:inherit} :root:not([data-theme="dark"]) .badge-bus{background:rgba(190,40,130,.14);color:#a3206e} :root:not([data-theme="dark"]) .badge-feldbus{background:rgba(100,60,210,.14);color:#5a34b8} :root:not([data-theme="dark"]) .badge-liycy{background:rgba(92,118,134,.16);color:#3f5666} + :root:not([data-theme="dark"]) .badge-loxone{background:rgba(70,150,40,.16);color:#3d7d1c} :root:not([data-theme="dark"]) label.field select option{background:#fff;color:#0f2130} } @@ -188,6 +190,7 @@ table.reftab tr:hover td{background:rgba(0,200,216,.06);cursor:pointer} .badge-bus{background:rgba(230,90,170,.2);color:#ff90cc} .badge-feldbus{background:rgba(150,110,255,.2);color:#b8a0ff} .badge-liycy{background:rgba(160,170,180,.2);color:#c3ccd4} +.badge-loxone{background:rgba(105,195,80,.2);color:#8fe070} /* Dashboard */ .dash-toolbar{display:flex;gap:10px;flex-wrap:wrap;align-items:center;margin-bottom:16px}