Dämmerungsgrafik gefixt
This commit is contained in:
+44
-10
@@ -404,7 +404,8 @@ class SternwarteCardRetro extends HTMLElement {
|
||||
const tw = this._calcTwilight(now);
|
||||
const off = this._isMESZ(now) ? 2 : 1;
|
||||
const shift = (h) => ((h - 12 + 24) % 24);
|
||||
const localize = (e) => e ? { dawn: (e.dawn + off + 24) % 24, dusk: (e.dusk + off + 24) % 24 } : null;
|
||||
const localizeHour = (h) => (h === null || h === undefined ? null : (h + off + 24) % 24);
|
||||
const localize = (e) => e ? { dawn: localizeHour(e.dawn), dusk: localizeHour(e.dusk) } : null;
|
||||
const lt = { sun: localize(tw.sun), civil: localize(tw.civil), naut: localize(tw.naut), astro: localize(tw.astro) };
|
||||
const nowL = shift(now.getHours() + now.getMinutes() / 60 + now.getSeconds() / 3600);
|
||||
const segs = [];
|
||||
@@ -416,15 +417,43 @@ class SternwarteCardRetro extends HTMLElement {
|
||||
if (ee <= ss) return;
|
||||
segs.push({ start: ss, end: ee, color: colors[k] });
|
||||
};
|
||||
add(0, lt.astro?.dawn, "night");
|
||||
add(lt.astro?.dawn, lt.naut?.dawn, "astro");
|
||||
add(lt.naut?.dawn, lt.civil?.dawn, "naut");
|
||||
add(lt.civil?.dawn, lt.sun?.dawn, "civil");
|
||||
add(lt.sun?.dawn, lt.sun?.dusk, "day");
|
||||
add(lt.sun?.dusk, lt.civil?.dusk, "civil");
|
||||
add(lt.civil?.dusk, lt.naut?.dusk, "naut");
|
||||
add(lt.naut?.dusk, lt.astro?.dusk, "astro");
|
||||
add(lt.astro?.dusk, 24, "night");
|
||||
const hasAstroNight = lt.astro?.dawn !== null && lt.astro?.dawn !== undefined
|
||||
&& lt.astro?.dusk !== null && lt.astro?.dusk !== undefined;
|
||||
const hasNautNight = lt.naut?.dawn !== null && lt.naut?.dawn !== undefined
|
||||
&& lt.naut?.dusk !== null && lt.naut?.dusk !== undefined;
|
||||
const hasCivilNight = lt.civil?.dawn !== null && lt.civil?.dawn !== undefined
|
||||
&& lt.civil?.dusk !== null && lt.civil?.dusk !== undefined;
|
||||
const hasSunCycle = lt.sun?.dawn !== null && lt.sun?.dawn !== undefined
|
||||
&& lt.sun?.dusk !== null && lt.sun?.dusk !== undefined;
|
||||
if (hasAstroNight) {
|
||||
add(0, lt.astro.dawn, "night");
|
||||
add(lt.astro.dawn, lt.naut?.dawn, "astro");
|
||||
add(lt.naut?.dawn, lt.civil?.dawn, "naut");
|
||||
add(lt.civil?.dawn, lt.sun?.dawn, "civil");
|
||||
add(lt.sun?.dawn, lt.sun?.dusk, "day");
|
||||
add(lt.sun?.dusk, lt.civil?.dusk, "civil");
|
||||
add(lt.civil?.dusk, lt.naut?.dusk, "naut");
|
||||
add(lt.naut?.dusk, lt.astro.dusk, "astro");
|
||||
add(lt.astro.dusk, 24, "night");
|
||||
} else if (hasNautNight) {
|
||||
add(0, lt.naut.dawn, "astro");
|
||||
add(lt.naut.dawn, lt.civil?.dawn, "naut");
|
||||
add(lt.civil?.dawn, lt.sun?.dawn, "civil");
|
||||
add(lt.sun?.dawn, lt.sun?.dusk, "day");
|
||||
add(lt.sun?.dusk, lt.civil?.dusk, "civil");
|
||||
add(lt.civil?.dusk, lt.naut.dusk, "naut");
|
||||
add(lt.naut.dusk, 24, "astro");
|
||||
} else if (hasCivilNight) {
|
||||
add(0, lt.civil.dawn, "naut");
|
||||
add(lt.civil.dawn, lt.sun?.dawn, "civil");
|
||||
add(lt.sun?.dawn, lt.sun?.dusk, "day");
|
||||
add(lt.sun?.dusk, lt.civil.dusk, "civil");
|
||||
add(lt.civil.dusk, 24, "naut");
|
||||
} else if (hasSunCycle) {
|
||||
add(0, lt.sun.dawn, "civil");
|
||||
add(lt.sun.dawn, lt.sun.dusk, "day");
|
||||
add(lt.sun.dusk, 24, "civil");
|
||||
}
|
||||
if (!segs.length) add(0, 24, "night");
|
||||
segs.sort((a, b) => a.start - b.start);
|
||||
const stops = segs.flatMap((s) => {
|
||||
@@ -439,6 +468,11 @@ class SternwarteCardRetro extends HTMLElement {
|
||||
};
|
||||
return {
|
||||
gradient: grad,
|
||||
phaseSegments: segs.map((s) => ({
|
||||
left: `${(s.start / 24) * 100}%`,
|
||||
width: `${Math.max(((s.end - s.start) / 24) * 100, 0.35)}%`,
|
||||
color: s.color,
|
||||
})),
|
||||
markerLeft: `${(nowL / 24) * 100}%`,
|
||||
openMarkerLeft: toLocal(this._state(this._scheduleOpenEntityId())),
|
||||
closeMarkerLeft: toLocal(this._state(this._scheduleCloseEntityId())),
|
||||
|
||||
Reference in New Issue
Block a user