3.0.3.0
Added lightning, change values to amp/pm
This commit is contained in:
+30
-3
@@ -329,7 +329,7 @@ export function UTCIForecast() {
|
||||
felt: ['utciP', 'vehicleT', 'indoorT', 'managedT', 'burn', 'utci', 'delta', 'tmrt'],
|
||||
surface: ['concreteT', 'soilT', 'soilT6', 'soilM'],
|
||||
ambient: ['air', 'rh', 'dew'],
|
||||
precip: ['precip', 'precipProb'],
|
||||
precip: ['precip', 'precipProb', 'lightning'],
|
||||
sky: ['cloud', 'vis'],
|
||||
wind: ['wind', 'dir'],
|
||||
airqual: ['aqi', 'pollen'],
|
||||
@@ -473,7 +473,22 @@ export function UTCIForecast() {
|
||||
|
||||
// Day's events surfaced in the "Day at a glance" box. Reuses the same
|
||||
// row shape as glanceSummary items: { icon, label, value, alert }.
|
||||
const hhmm = (iso) => (iso ? iso.slice(11, 16) : '');
|
||||
const hhmm = (iso) => {
|
||||
if (!iso) return '';
|
||||
const h = parseInt(iso.slice(11, 13), 10);
|
||||
const m = iso.slice(14, 16);
|
||||
const period = h < 12 ? 'am' : 'pm';
|
||||
const h12 = h % 12 || 12;
|
||||
return m === '00' ? `${h12}${period}` : `${h12}:${m}${period}`;
|
||||
};
|
||||
const hhmmEnd = (iso) => {
|
||||
if (!iso) return '';
|
||||
const h = parseInt(iso.slice(11, 13), 10) + 1;
|
||||
const m = iso.slice(14, 16);
|
||||
const period = (h % 24) < 12 ? 'am' : 'pm';
|
||||
const h12 = h % 12 || 12;
|
||||
return m === '00' ? `${h12}${period}` : `${h12}:${m}${period}`;
|
||||
};
|
||||
const eventGlanceItems = (selectedDayEvents ?? [])
|
||||
.filter(ev => ev.type !== 'promo')
|
||||
.map(ev => ({
|
||||
@@ -482,7 +497,7 @@ export function UTCIForecast() {
|
||||
value: ev.isoRange
|
||||
? (ev.isoRange[0] === ev.isoRange[1]
|
||||
? hhmm(ev.isoRange[0])
|
||||
: `${hhmm(ev.isoRange[0])} – ${hhmm(ev.isoRange[1])}`)
|
||||
: `${hhmm(ev.isoRange[0])} – ${hhmmEnd(ev.isoRange[1])}`)
|
||||
: (ev.nightOnly ? 'Overnight' : 'All day'),
|
||||
alert: false,
|
||||
}));
|
||||
@@ -1011,6 +1026,7 @@ export function UTCIForecast() {
|
||||
${isPro && (activeProfile === 'custom' || activeProfile === 'showall' || activeCols['dew']) && html`<button class=${`col-toggle grp-ambient${visibleCols.dew ? ' on' : ''}`} onClick=${() => toggleCol('dew')}>Dew</button>`}
|
||||
${isPro && (activeProfile === 'custom' || activeProfile === 'showall' || activeCols['precip']) && html`<button class=${`col-toggle grp-precip${visibleCols.precip ? ' on' : ''}`} onClick=${() => toggleCol('precip')}>Precip</button>`}
|
||||
${isPro && (activeProfile === 'custom' || activeProfile === 'showall' || activeCols['precipProb']) && html`<button class=${`col-toggle grp-precip${visibleCols.precipProb ? ' on' : ''}`} onClick=${() => toggleCol('precipProb')}>Rain%</button>`}
|
||||
${isPro && (activeProfile === 'custom' || activeProfile === 'showall' || activeCols['lightning']) && html`<button class=${`col-toggle grp-precip${visibleCols.lightning ? ' on' : ''}`} onClick=${() => toggleCol('lightning')}>Lightning</button>`}
|
||||
${isPro && (activeProfile === 'custom' || activeProfile === 'showall' || activeCols['cloud']) && html`<button class=${`col-toggle grp-sky${visibleCols.cloud ? ' on' : ''}`} onClick=${() => toggleCol('cloud')}>Cloud</button>`}
|
||||
${isPro && (activeProfile === 'custom' || activeProfile === 'showall' || activeCols['vis']) && html`<button class=${`col-toggle grp-sky${visibleCols.vis ? ' on' : ''}`} onClick=${() => toggleCol('vis')}>Visibility</button>`}
|
||||
${isPro && (activeProfile === 'custom' || activeProfile === 'showall' || activeCols['wind']) && html`<button class=${`col-toggle grp-wind${visibleCols.wind ? ' on' : ''}`} onClick=${() => toggleCol('wind')}>Wind</button>`}
|
||||
@@ -1223,6 +1239,7 @@ export function UTCIForecast() {
|
||||
${visibleCols.dew && html`<th class=${`col-info-th ${groupStart('dew')} ${groupColor('dew')}`} scope="col" onClick=${(e) => handleThClick('dew', e)} onMouseEnter=${(e) => handleThEnter('dew', e)} onMouseLeave=${handleThLeave}>Dew <span class="col-unit">°C</span></th>`}
|
||||
${visibleCols.precip && html`<th class=${`utci-tight-head col-info-th ${groupStart('precip')} ${groupColor('precip')}`} scope="col" onClick=${(e) => handleThClick('precip', e)} onMouseEnter=${(e) => handleThEnter('precip', e)} onMouseLeave=${handleThLeave}>Pcpt <span class="col-unit">mm/h</span></th>`}
|
||||
${visibleCols.precipProb && html`<th class=${`utci-tight-head col-info-th ${groupStart('precipProb')} ${groupColor('precipProb')}`} scope="col" onClick=${(e) => handleThClick('precipProb', e)} onMouseEnter=${(e) => handleThEnter('precipProb', e)} onMouseLeave=${handleThLeave}>Rain <span class="col-unit">%</span></th>`}
|
||||
${visibleCols.lightning && html`<th class=${`utci-tight-head col-info-th ${groupStart('lightning')} ${groupColor('lightning')}`} scope="col" onClick=${(e) => handleThClick('lightning', e)} onMouseEnter=${(e) => handleThEnter('lightning', e)} onMouseLeave=${handleThLeave}>⚡ <span class="col-unit">LPI</span></th>`}
|
||||
${visibleCols.cloud && html`<th class=${`col-info-th ${groupStart('cloud')} ${groupColor('cloud')}`} scope="col" onClick=${(e) => handleThClick('cloud', e)} onMouseEnter=${(e) => handleThEnter('cloud', e)} onMouseLeave=${handleThLeave}>Cloud <span class="col-unit">%</span></th>`}
|
||||
${visibleCols.vis && html`<th class=${`utci-tight-head col-info-th ${groupStart('vis')} ${groupColor('vis')}`} scope="col" onClick=${(e) => handleThClick('vis', e)} onMouseEnter=${(e) => handleThEnter('vis', e)} onMouseLeave=${handleThLeave}>Vis <span class="col-unit">km</span></th>`}
|
||||
${visibleCols.wind && html`<th class=${`col-info-th ${groupStart('wind')} ${groupColor('wind')}`} scope="col" onClick=${(e) => handleThClick('wind', e)} onMouseEnter=${(e) => handleThEnter('wind', e)} onMouseLeave=${handleThLeave}>Wind <span class="col-unit">mph (gust)</span></th>`}
|
||||
@@ -1417,6 +1434,16 @@ export function UTCIForecast() {
|
||||
<td class=${groupStart('precipProb')} style=${{ background: scaleBg(r.precipProb, 0, 100, '70,145,200'), color: r.precipProb >= 50 ? '#1a4a70' : r.precipProb > 0 ? '#2a6a90' : '#7a8a90' }}>
|
||||
${r.precipProb}${u('%')}
|
||||
</td>`}
|
||||
${visibleCols.lightning && (() => {
|
||||
const lpi = r.lightning ?? 0;
|
||||
const bg = lpi >= 25 ? 'rgba(255,180,0,0.25)'
|
||||
: lpi >= 5 ? 'rgba(255,210,0,0.15)'
|
||||
: 'transparent';
|
||||
const color = lpi >= 25 ? '#7a4800' : lpi >= 5 ? '#6a5800' : '#7a8a90';
|
||||
return html`<td class=${groupStart('lightning')} style=${{ background: bg, color, textAlign: 'center' }}>
|
||||
${lpi > 0 ? `${Math.round(lpi)}` : ''}
|
||||
</td>`;
|
||||
})()}
|
||||
${visibleCols.cloud && html`<td class=${groupStart('cloud')} style=${{ background: scaleBg(r.cc, 0, 100, '110,130,150', 0.07), verticalAlign: 'middle' }}>
|
||||
<span style=${{ display: 'inline-flex', alignItems: 'center', gap: '6px', verticalAlign: 'middle' }}>
|
||||
<span style=${{ position: 'relative', top: '6px' }}>
|
||||
|
||||
Reference in New Issue
Block a user