import SingleSetting from "./SingleSetting"; import {UIElement} from "../UIElement"; import {FixedUiElement} from "../Base/FixedUiElement"; import {InputElement} from "../Input/InputElement"; import {UIEventSource} from "../../Logic/UIEventSource"; import Combine from "../Base/Combine"; import {VariableUiElement} from "../Base/VariableUIElement"; export default class SettingsTable extends UIElement { private _col1: UIElement[] = []; private _col2: InputElement[] = []; public selectedSetting: UIEventSource>; constructor(elements: SingleSetting[], currentSelectedSetting: UIEventSource>) { super(undefined); const self = this; this.selectedSetting = currentSelectedSetting ?? new UIEventSource>(undefined); for (const element of elements) { let title: UIElement = new FixedUiElement(element._name); this._col1.push(title); this._col2.push(element._value); element._value.IsSelected.addCallback(isSelected => { if (isSelected) { self.selectedSetting.setData(element); } else if (self.selectedSetting.data === element) { self.selectedSetting.setData(undefined); } }) } } InnerRender(): string { let html = ""; for (let i = 0; i < this._col1.length; i++) { html += `${this._col1[i].Render()}${this._col2[i].Render()}` } return `${html}
`; } }