2021-01-07 04:50:12 +01:00
|
|
|
import {UIElement} from "../UIElement";
|
|
|
|
import {UIEventSource} from "../../Logic/UIEventSource";
|
|
|
|
import Svg from "../../Svg";
|
2021-01-09 00:03:21 +01:00
|
|
|
import State from "../../State";
|
2021-01-07 04:50:12 +01:00
|
|
|
|
|
|
|
export default class Ornament extends UIElement {
|
|
|
|
private static readonly ornamentsCount = Ornament.countOrnaments();
|
2021-01-09 00:03:21 +01:00
|
|
|
private readonly _index = new UIEventSource<string>("0")
|
2021-01-07 04:50:12 +01:00
|
|
|
|
2021-01-09 00:03:21 +01:00
|
|
|
constructor(index = undefined) {
|
|
|
|
super();
|
|
|
|
index = index ?? State.state.osmConnection.GetPreference("ornament");
|
2021-01-27 02:26:57 +01:00
|
|
|
|
|
|
|
this.SetClass("pt-3 pb-3 flex justify-center box-border")
|
|
|
|
|
2021-01-09 00:03:21 +01:00
|
|
|
this.ListenTo(index);
|
2021-01-07 04:50:12 +01:00
|
|
|
this._index = index;
|
|
|
|
const self = this;
|
|
|
|
this.onClick(() => {
|
2021-01-09 00:03:21 +01:00
|
|
|
let c = Number(index.data);
|
2021-01-17 23:06:05 +01:00
|
|
|
if (isNaN(c)) {
|
2021-01-09 00:03:21 +01:00
|
|
|
c = 0;
|
|
|
|
}
|
2021-01-17 23:06:05 +01:00
|
|
|
self._index.setData("" + ((c + 1) % (Ornament.ornamentsCount + 1)));
|
2021-01-07 04:50:12 +01:00
|
|
|
|
|
|
|
})
|
|
|
|
}
|
|
|
|
|
|
|
|
private static countOrnaments() {
|
|
|
|
let ornamentCount = 0;
|
|
|
|
for (const key in Svg.All) {
|
|
|
|
if (key.startsWith("Ornament-Horiz-")) {
|
|
|
|
ornamentCount++;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return ornamentCount;
|
|
|
|
}
|
|
|
|
|
|
|
|
InnerRender(): string {
|
2021-01-17 23:06:05 +01:00
|
|
|
const svg = Svg.All[`Ornament-Horiz-${Number(this._index.data) - 1}.svg`];
|
|
|
|
if (this._index.data == "0" || svg === undefined) {
|
2021-01-07 05:10:27 +01:00
|
|
|
return "<svg></svg>"
|
|
|
|
}
|
2021-01-17 23:06:05 +01:00
|
|
|
return svg;
|
2021-01-07 04:50:12 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
}
|