import type { AeroflylightCategoryUs, AeroflylightCategoryIcao } from "../../../core/util/AeroflyFlightHelper.js"; import { sendToMain } from "../../renderer/sendToMain.js"; import { AbstractStateSubscriberWebComponent } from "../util/AbstractStateSubscriberWebComponent.js"; import { registerElement } from "../../renderer/registerElement.js"; export class WeatherStatusWebComponent extends AbstractStateSubscriberWebComponent { private isInitialized = false; private elements!: { flightCategoryUs: HTMLSelectElement; flightCategoryIcao: HTMLSelectElement; }; private initialize() { this.setAttribute("aria-role", "region"); this.innerHTML = `\
`; this.elements = { flightCategoryUs: this.querySelector("#flight-category-us") as HTMLSelectElement, flightCategoryIcao: this.querySelector("#flight-category-icao") as HTMLSelectElement, }; } connectedCallback() { if (!this.isInitialized) { this.initialize(); this.isInitialized = true; } this.subscribeToStateUpdates((state) => { this.elements.flightCategoryUs.value = state.flightCategory.us; this.elements.flightCategoryIcao.value = state.flightCategory.icao; }); this.elements.flightCategoryUs.addEventListener("change", this.handleFlightCategoryUsChange); this.elements.flightCategoryIcao.addEventListener("change", this.handleFlightCategoryIcaoChange); } disconnectedCallback(): void { super.disconnectedCallback(); this.elements.flightCategoryUs.removeEventListener("change", this.handleFlightCategoryUsChange); this.elements.flightCategoryIcao.removeEventListener("change", this.handleFlightCategoryIcaoChange); } private handleFlightCategoryUsChange = () => { sendToMain("flight-category:us:set", this.elements.flightCategoryUs.value as AeroflylightCategoryUs); }; private handleFlightCategoryIcaoChange = () => { sendToMain("flight-category:icao:set", this.elements.flightCategoryIcao.value as AeroflylightCategoryIcao); }; static registerElement() { registerElement("startgeraet-weather-status", WeatherStatusWebComponent); } }