diff --git a/assets/css/table.css b/assets/css/table.css index 7b73dba..4430955 100644 --- a/assets/css/table.css +++ b/assets/css/table.css @@ -240,6 +240,48 @@ color: #fff; } +/* ── COLUMN TOGGLE - group colour tints ───────────────────────────────── + Idle: light group tint bg + group text + group border. + Hover: darker tint matching th hover palette. + On: solid saturated group colour, white text. + On-hover: slightly darker solid. */ + +.col-toggle.grp-felt { background: rgba(223,243,236,0.50); color: #075c3a; border-color: rgba(7,92,58,0.35); } +.col-toggle.grp-surface { background: rgba(221,234,248,0.50); color: #0b3e72; border-color: rgba(11,62,114,0.30); } +.col-toggle.grp-ambient { background: rgba(236,234,227,0.50); color: #3c3a35; border-color: rgba(60,58,53,0.30); } +.col-toggle.grp-precip { background: rgba(247,228,238,0.50); color: #6b1e3a; border-color: rgba(107,30,58,0.30); } +.col-toggle.grp-sky { background: rgba(234,232,252,0.50); color: #352e7a; border-color: rgba(53,46,122,0.30); } +.col-toggle.grp-wind { background: rgba(250,230,224,0.50); color: #6a2210; border-color: rgba(106,34,16,0.30); } +.col-toggle.grp-airqual { background: rgba(229,240,216,0.50); color: #244408; border-color: rgba(36,68,8,0.30); } +.col-toggle.grp-solar { background: rgba(250,234,204,0.50); color: #5a3004; border-color: rgba(90,48,4,0.30); } + +.col-toggle.grp-felt:hover { background: rgba(213,233,226,0.80); color: #075c3a; border-color: rgba(7,92,58,0.55); } +.col-toggle.grp-surface:hover { background: rgba(211,224,238,0.80); color: #0b3e72; border-color: rgba(11,62,114,0.50); } +.col-toggle.grp-ambient:hover { background: rgba(226,224,217,0.80); color: #3c3a35; border-color: rgba(60,58,53,0.50); } +.col-toggle.grp-precip:hover { background: rgba(237,218,228,0.80); color: #6b1e3a; border-color: rgba(107,30,58,0.50); } +.col-toggle.grp-sky:hover { background: rgba(224,222,242,0.80); color: #352e7a; border-color: rgba(53,46,122,0.50); } +.col-toggle.grp-wind:hover { background: rgba(240,220,214,0.80); color: #6a2210; border-color: rgba(106,34,16,0.50); } +.col-toggle.grp-airqual:hover { background: rgba(219,230,206,0.80); color: #244408; border-color: rgba(36,68,8,0.50); } +.col-toggle.grp-solar:hover { background: rgba(240,224,194,0.80); color: #5a3004; border-color: rgba(90,48,4,0.50); } + +.col-toggle.grp-felt.on { background: #0f9e63; border-color: #0f9e63; color: #fff; } +.col-toggle.grp-surface.on { background: #2672c8; border-color: #2672c8; color: #fff; } +.col-toggle.grp-ambient.on { background: #7a7870; border-color: #7a7870; color: #fff; } +.col-toggle.grp-precip.on { background: #b03060; border-color: #b03060; color: #fff; } +.col-toggle.grp-sky.on { background: #6058c8; border-color: #6058c8; color: #fff; } +.col-toggle.grp-wind.on { background: #b04030; border-color: #b04030; color: #fff; } +.col-toggle.grp-airqual.on { background: #4a8018; border-color: #4a8018; color: #fff; } +.col-toggle.grp-solar.on { background: #b07820; border-color: #b07820; color: #fff; } + +.col-toggle.grp-felt.on:hover { background: #0c7d4e; border-color: #0c7d4e; color: #fff; } +.col-toggle.grp-surface.on:hover { background: #1e5aa0; border-color: #1e5aa0; color: #fff; } +.col-toggle.grp-ambient.on:hover { background: #5e5c56; border-color: #5e5c56; color: #fff; } +.col-toggle.grp-precip.on:hover { background: #8c264c; border-color: #8c264c; color: #fff; } +.col-toggle.grp-sky.on:hover { background: #4c48a8; border-color: #4c48a8; color: #fff; } +.col-toggle.grp-wind.on:hover { background: #8c3226; border-color: #8c3226; color: #fff; } +.col-toggle.grp-airqual.on:hover { background: #3a6412; border-color: #3a6412; color: #fff; } +.col-toggle.grp-solar.on:hover { background: #8c5e18; border-color: #8c5e18; color: #fff; } + /* ── Vehicle group: select + windows-open checkbox fused together ── */ .col-toggle-group { display: inline-flex; @@ -426,6 +468,8 @@ margin-top: 2px; } +/* col-unit header spans always visible - units toggle only affects body cells */ + @media (max-width: 800px) { .utci-table th .col-unit { font-size: 9px; diff --git a/assets/css/ui.css b/assets/css/ui.css index bb5d230..2802432 100644 --- a/assets/css/ui.css +++ b/assets/css/ui.css @@ -364,6 +364,59 @@ color: #fff; } +/* ── CUSTOM SELECT BUTTON - group colour tints ────────────────────────── + Mirrors the col-toggle group palette for dropdowns (Vehicle, Indoors, + Burn, Pollen). Same idle - hover - on - on-hover pattern. */ + +.cs-btn.grp-felt { background: rgba(223,243,236,0.50); color: #075c3a; border-color: rgba(7,92,58,0.35); } +.cs-btn.grp-surface { background: rgba(221,234,248,0.50); color: #0b3e72; border-color: rgba(11,62,114,0.30); } +.cs-btn.grp-ambient { background: rgba(236,234,227,0.50); color: #3c3a35; border-color: rgba(60,58,53,0.30); } +.cs-btn.grp-precip { background: rgba(247,228,238,0.50); color: #6b1e3a; border-color: rgba(107,30,58,0.30); } +.cs-btn.grp-sky { background: rgba(234,232,252,0.50); color: #352e7a; border-color: rgba(53,46,122,0.30); } +.cs-btn.grp-wind { background: rgba(250,230,224,0.50); color: #6a2210; border-color: rgba(106,34,16,0.30); } +.cs-btn.grp-airqual { background: rgba(229,240,216,0.50); color: #244408; border-color: rgba(36,68,8,0.30); } +.cs-btn.grp-solar { background: rgba(250,234,204,0.50); color: #5a3004; border-color: rgba(90,48,4,0.30); } + +.cs-btn.grp-felt:hover { background: rgba(213,233,226,0.80); color: #075c3a; border-color: rgba(7,92,58,0.55); } +.cs-btn.grp-surface:hover { background: rgba(211,224,238,0.80); color: #0b3e72; border-color: rgba(11,62,114,0.50); } +.cs-btn.grp-ambient:hover { background: rgba(226,224,217,0.80); color: #3c3a35; border-color: rgba(60,58,53,0.50); } +.cs-btn.grp-precip:hover { background: rgba(237,218,228,0.80); color: #6b1e3a; border-color: rgba(107,30,58,0.50); } +.cs-btn.grp-sky:hover { background: rgba(224,222,242,0.80); color: #352e7a; border-color: rgba(53,46,122,0.50); } +.cs-btn.grp-wind:hover { background: rgba(240,220,214,0.80); color: #6a2210; border-color: rgba(106,34,16,0.50); } +.cs-btn.grp-airqual:hover { background: rgba(219,230,206,0.80); color: #244408; border-color: rgba(36,68,8,0.50); } +.cs-btn.grp-solar:hover { background: rgba(240,224,194,0.80); color: #5a3004; border-color: rgba(90,48,4,0.50); } + +.cs-btn.grp-felt.on { background: #0f9e63; border-color: #0f9e63; color: #fff; } +.cs-btn.grp-surface.on { background: #2672c8; border-color: #2672c8; color: #fff; } +.cs-btn.grp-ambient.on { background: #7a7870; border-color: #7a7870; color: #fff; } +.cs-btn.grp-precip.on { background: #b03060; border-color: #b03060; color: #fff; } +.cs-btn.grp-sky.on { background: #6058c8; border-color: #6058c8; color: #fff; } +.cs-btn.grp-wind.on { background: #b04030; border-color: #b04030; color: #fff; } +.cs-btn.grp-airqual.on { background: #4a8018; border-color: #4a8018; color: #fff; } +.cs-btn.grp-solar.on { background: #b07820; border-color: #b07820; color: #fff; } + +.cs-btn.grp-felt.on:hover { background: #0c7d4e; border-color: #0c7d4e; color: #fff; } +.cs-btn.grp-surface.on:hover { background: #1e5aa0; border-color: #1e5aa0; color: #fff; } +.cs-btn.grp-ambient.on:hover { background: #5e5c56; border-color: #5e5c56; color: #fff; } +.cs-btn.grp-precip.on:hover { background: #8c264c; border-color: #8c264c; color: #fff; } +.cs-btn.grp-sky.on:hover { background: #4c48a8; border-color: #4c48a8; color: #fff; } +.cs-btn.grp-wind.on:hover { background: #8c3226; border-color: #8c3226; color: #fff; } +.cs-btn.grp-airqual.on:hover { background: #3a6412; border-color: #3a6412; color: #fff; } +.cs-btn.grp-solar.on:hover { background: #8c5e18; border-color: #8c5e18; color: #fff; } + +/* ── VENT PILL - group colour tints ───────────────────────────────────── + VentPill fuses with its sibling cs-btn so needs matching group tints. + Only felt and surface groups currently use VentPills. */ + +.cs-vent.grp-felt { background: rgba(223,243,236,0.50); color: #075c3a; border-color: rgba(7,92,58,0.35); } +.cs-vent.grp-surface { background: rgba(221,234,248,0.50); color: #0b3e72; border-color: rgba(11,62,114,0.30); } +.cs-vent.grp-felt:hover { background: rgba(213,233,226,0.80); color: #075c3a; border-color: rgba(7,92,58,0.55); } +.cs-vent.grp-surface:hover { background: rgba(211,224,238,0.80); color: #0b3e72; border-color: rgba(11,62,114,0.50); } +.cs-vent.grp-felt.on { border-color: #0f9e63; color: #0f9e63; } +.cs-vent.grp-surface.on { border-color: #2672c8; color: #2672c8; } +.cs-vent.grp-felt.on:hover { background: rgba(213,233,226,0.80); color: #0c7d4e; border-color: #0c7d4e; } +.cs-vent.grp-surface.on:hover { background: rgba(211,224,238,0.80); color: #1e5aa0; border-color: #1e5aa0; } + /* The chevron arrow inside the button */ .cs-arrow { display: inline-block; diff --git a/assets/js/app.js b/assets/js/app.js index 69a75ed..97650d4 100644 --- a/assets/js/app.js +++ b/assets/js/app.js @@ -53,7 +53,7 @@ export function UTCIForecast() { activeProfile, setActiveProfile, activateProfile, activeCols, visibleCols, setVisibleCols, toggleCol, showDecimals, toggleShowDecimals, - showDegree, toggleShowDegree, + showUnits, toggleShowUnits, activityOptions, placeOptions, activityValue, activityLabel, placeValue, placeLabel, skinType, setSkinType, @@ -336,12 +336,13 @@ export function UTCIForecast() {
Columns: -${isPro && (activeProfile === 'custom' || activeCols['utciP']) && html``} - ${(isPro ? (activeProfile === 'custom' || activeCols['vehicleT']) : activeCols['vehicleT']) && html` +${isPro && (activeProfile === 'custom' || activeProfile === 'showall' || activeCols['utciP']) && html``} + ${(isPro ? (activeProfile === 'custom' || activeProfile === 'showall' || activeCols['vehicleT']) : activeCols['vehicleT']) && html` <${CustomSelect} value=${vehicleType} isOn=${visibleCols.vehicleT} + grpClass="grp-felt" hideLabel="Vehicle" hidingLabel="Hide Vehicle" groupedLeft=${true} @@ -364,15 +365,17 @@ ${isPro && (activeProfile === 'custom' || activeCols['utciP']) && html``} - ${isPro && (activeProfile === 'custom' || activeCols['delta']) && html``} - ${isPro && (activeProfile === 'custom' || activeCols['tmrt']) && html``} - ${isPro && (activeProfile === 'custom' || activeCols['concreteT']) && html``} - ${isPro && (activeProfile === 'custom' || activeCols['soilT']) && html``} - ${isPro && (activeProfile === 'custom' || activeCols['soilT6']) && html``} - ${isPro && (activeProfile === 'custom' || activeCols['soilM']) && html``} - ${isPro && (activeProfile === 'custom' || activeCols['air']) && html``} - ${isPro && (activeProfile === 'custom' || activeCols['rh']) && html``} - ${isPro && (activeProfile === 'custom' || activeCols['dew']) && html``} - ${isPro && (activeProfile === 'custom' || activeCols['precip']) && html``} - ${isPro && (activeProfile === 'custom' || activeCols['precipProb']) && html``} - ${isPro && (activeProfile === 'custom' || activeCols['cloud']) && html``} - ${isPro && (activeProfile === 'custom' || activeCols['vis']) && html``} - ${isPro && (activeProfile === 'custom' || activeCols['wind']) && html``} - ${isPro && (activeProfile === 'custom' || activeCols['dir']) && html``} - ${isPro && (activeProfile === 'custom' || activeCols['aqi']) && html``} - ${(isPro ? (activeProfile === 'custom' || activeCols['pollen']) : activeCols['pollen']) && html`<${CustomSelect} + ${isPro && (activeProfile === 'custom' || activeProfile === 'showall' || activeCols['utci']) && html``} + ${isPro && (activeProfile === 'custom' || activeProfile === 'showall' || activeCols['delta']) && html``} + ${isPro && (activeProfile === 'custom' || activeProfile === 'showall' || activeCols['tmrt']) && html``} + ${isPro && (activeProfile === 'custom' || activeProfile === 'showall' || activeCols['concreteT']) && html``} + ${isPro && (activeProfile === 'custom' || activeProfile === 'showall' || activeCols['soilT']) && html``} + ${isPro && (activeProfile === 'custom' || activeProfile === 'showall' || activeCols['soilT6']) && html``} + ${isPro && (activeProfile === 'custom' || activeProfile === 'showall' || activeCols['soilM']) && html``} + ${isPro && (activeProfile === 'custom' || activeProfile === 'showall' || activeCols['air']) && html``} + ${isPro && (activeProfile === 'custom' || activeProfile === 'showall' || activeCols['rh']) && html``} + ${isPro && (activeProfile === 'custom' || activeProfile === 'showall' || activeCols['dew']) && html``} + ${isPro && (activeProfile === 'custom' || activeProfile === 'showall' || activeCols['precip']) && html``} + ${isPro && (activeProfile === 'custom' || activeProfile === 'showall' || activeCols['precipProb']) && html``} + ${isPro && (activeProfile === 'custom' || activeProfile === 'showall' || activeCols['cloud']) && html``} + ${isPro && (activeProfile === 'custom' || activeProfile === 'showall' || activeCols['vis']) && html``} + ${isPro && (activeProfile === 'custom' || activeProfile === 'showall' || activeCols['wind']) && html``} + ${isPro && (activeProfile === 'custom' || activeProfile === 'showall' || activeCols['dir']) && html``} + ${isPro && (activeProfile === 'custom' || activeProfile === 'showall' || activeCols['aqi']) && html``} + ${(isPro ? (activeProfile === 'custom' || activeProfile === 'showall' || activeCols['pollen']) : activeCols['pollen']) && html`<${CustomSelect} value=${pollenType} isOn=${visibleCols.pollen} + grpClass="grp-airqual" hideLabel="Pollen" hidingLabel="Hide Pollen" options=${Object.entries(POLLEN_TYPES).flatMap(([k, v], i) => [ @@ -453,11 +459,11 @@ ${isPro && (activeProfile === 'custom' || activeCols['utciP']) && html``} - ${isPro && (activeProfile === 'custom' || activeCols['uvB']) && html``} - ${isPro && (activeProfile === 'custom' || activeCols['sun']) && html``} - ${isPro && (activeProfile === 'custom' || activeCols['direct']) && html``} - ${isPro && (activeProfile === 'custom' || activeCols['diffuse']) && html``} + ${isPro && (activeProfile === 'custom' || activeProfile === 'showall' || activeCols['uvA']) && html``} + ${isPro && (activeProfile === 'custom' || activeProfile === 'showall' || activeCols['uvB']) && html``} + ${isPro && (activeProfile === 'custom' || activeProfile === 'showall' || activeCols['sun']) && html``} + ${isPro && (activeProfile === 'custom' || activeProfile === 'showall' || activeCols['direct']) && html``} + ${isPro && (activeProfile === 'custom' || activeProfile === 'showall' || activeCols['diffuse']) && html``}
`} @@ -467,12 +473,12 @@ ${isPro && (activeProfile === 'custom' || activeCols['utciP']) && html`