4.9.1
Fix vehicle day tabs
This commit is contained in:
@@ -22,8 +22,8 @@
|
||||
// activeProfile - current filter profile key
|
||||
// outdoorsVariant - current outdoors sub-variant key
|
||||
// openPanel - opens the profile/config nav dropdown
|
||||
// vehicleType/vehicleSpeed - current vehicle config (vehicle-cabin day-tab
|
||||
// reference calc + row label)
|
||||
// vehicleType - current vehicle config, for the "Viewing" row
|
||||
// label
|
||||
// buildingType/indoorManaged/utciEnv/furColor - current config values,
|
||||
// for the "Viewing" row label
|
||||
// dayTabsRef - ref for the scrollable tab strip element
|
||||
@@ -33,9 +33,8 @@
|
||||
|
||||
import { h, Fragment } from '../../vendor/preact.js';
|
||||
import htm from '../../vendor/htm.js';
|
||||
import { confidenceBand, utciCategory, petCategory, hexToRgb, mixRgb, rainTint, cloudTint, snowTint, VEHICLE_SPEEDS, VEHICLE_TYPES, BUILDING_TYPES, FUR_COLORS } from '../utils.js';
|
||||
import { confidenceBand, utciCategory, petCategory, hexToRgb, mixRgb, rainTint, cloudTint, snowTint, VEHICLE_TYPES, BUILDING_TYPES, FUR_COLORS } from '../utils.js';
|
||||
import { FREE_DAYS, UTCI_ENVIRONMENTS, deriveProfileMain, FILTER_PROFILES, variantIcons } from '../config.js';
|
||||
import { calcVehicleInteriorTempPass } from '../physics.js';
|
||||
import { CloudIcon, PrecipIcon, HouseIcon, CarIcon, FogIcon, IceIcon } from '../components.js';
|
||||
import { SubscribeModal } from './SubscribeModal.js';
|
||||
|
||||
@@ -124,7 +123,7 @@ export function DayTabs({
|
||||
proPromptSource, setProPromptSource,
|
||||
activeProfile, outdoorsVariant,
|
||||
openPanel,
|
||||
vehicleType, vehicleSpeed, buildingType, indoorManaged, utciEnv, furColor,
|
||||
vehicleType, buildingType, indoorManaged, utciEnv, furColor,
|
||||
dayTabsRef, canScrollLeft, canScrollRight, scrollDayTabs,
|
||||
}) {
|
||||
// Which metric drives the day-tab's hi/lo readout depends on the active
|
||||
@@ -215,7 +214,7 @@ export function DayTabs({
|
||||
<span class="utci-day-legend-icon">${isHomeOrOffice ? 'Home' : isVehicleProfile ? 'Alert' : 'Sky'}</span>
|
||||
<div class="utci-day-legend-values">
|
||||
<span class="utci-day-legend-main" title=${mainMetricDesc}>${mainMetricLabel}</span>
|
||||
${(isVehicleProfile || secondaryField) && html`
|
||||
${secondaryField && html`
|
||||
<span class="utci-day-legend-sep" aria-hidden="true"></span>
|
||||
<span class="utci-day-legend-sec" title=${secondaryMetricDesc}>${secondaryMetricLabel}</span>`}
|
||||
</div>
|
||||
@@ -233,22 +232,11 @@ export function DayTabs({
|
||||
const dayHi = mainVals.length ? Math.round(Math.max(...mainVals)) : null;
|
||||
const dayLo = mainVals.length ? Math.round(Math.min(...mainVals)) : null;
|
||||
|
||||
// Vehicle/Driver: no table column exists for the ventilated cabin
|
||||
// temp (ventilation is just an input toggle on the main vehicleT
|
||||
// calc), so run the physics model again with vent forced on, to
|
||||
// show "if you opened the windows" as a reference hi/lo.
|
||||
// Vehicle/Driver has no secondary field — the cabin number already
|
||||
// reflects the selected vehicle type, ventilation and speed, so the
|
||||
// tab shows that alone rather than a second reference figure.
|
||||
let shadeHi = null, shadeLo = null;
|
||||
if (isVehicleProfile) {
|
||||
const speedMph = (VEHICLE_SPEEDS[vehicleSpeed] ?? VEHICLE_SPEEDS.static).mph;
|
||||
// Run the lagged pass over the whole day, not per-hour equilibrium,
|
||||
// so this hi/lo is directly comparable with the vehicleT column.
|
||||
const ventVals = calcVehicleInteriorTempPass(
|
||||
d.rows.map(r => r.Ta), d.rows.map(r => r.glob), d.rows.map(r => r.elev),
|
||||
d.rows.map(r => r.va), vehicleType, true, speedMph
|
||||
).filter(v => v != null && isFinite(v));
|
||||
shadeHi = ventVals.length ? Math.round(Math.max(...ventVals)) : null;
|
||||
shadeLo = ventVals.length ? Math.round(Math.min(...ventVals)) : null;
|
||||
} else if (secondaryField) {
|
||||
if (secondaryField) {
|
||||
const secondaryVals = d.rows.map(r => r[secondaryField]).filter(v => isFinite(v));
|
||||
shadeHi = secondaryVals.length ? Math.round(Math.max(...secondaryVals)) : null;
|
||||
shadeLo = secondaryVals.length ? Math.round(Math.min(...secondaryVals)) : null;
|
||||
|
||||
Reference in New Issue
Block a user