2020-10-27 01:01:34 +01:00
|
|
|
import {UIElement} from "../UIElement";
|
|
|
|
import {UIEventSource} from "../../Logic/UIEventSource";
|
|
|
|
import TagRenderingConfig from "../../Customizations/JSON/TagRenderingConfig";
|
|
|
|
import TagRenderingQuestion from "./TagRenderingQuestion";
|
|
|
|
import Translations from "../i18n/Translations";
|
|
|
|
import Combine from "../Base/Combine";
|
|
|
|
import TagRenderingAnswer from "./TagRenderingAnswer";
|
|
|
|
import State from "../../State";
|
2020-11-06 01:58:26 +01:00
|
|
|
import Svg from "../../Svg";
|
2020-10-27 01:01:34 +01:00
|
|
|
|
|
|
|
export default class EditableTagRendering extends UIElement {
|
|
|
|
private _tags: UIEventSource<any>;
|
|
|
|
private _configuration: TagRenderingConfig;
|
|
|
|
|
|
|
|
private _editMode: UIEventSource<boolean> = new UIEventSource<boolean>(false);
|
|
|
|
private _editButton: UIElement;
|
|
|
|
|
|
|
|
private _question: UIElement;
|
|
|
|
private _answer: UIElement;
|
|
|
|
|
|
|
|
constructor(tags: UIEventSource<any>,
|
|
|
|
configuration: TagRenderingConfig) {
|
|
|
|
super(tags);
|
|
|
|
this._tags = tags;
|
|
|
|
this._configuration = configuration;
|
|
|
|
|
|
|
|
this.ListenTo(this._editMode);
|
|
|
|
this.ListenTo(State.state?.osmConnection?.userDetails)
|
|
|
|
|
|
|
|
const self = this;
|
|
|
|
|
|
|
|
this._answer = new TagRenderingAnswer(tags, configuration);
|
|
|
|
|
|
|
|
this._answer.SetStyle("width:100%;")
|
|
|
|
|
|
|
|
if (this._configuration.question !== undefined) {
|
|
|
|
// 2.3em total width
|
2020-11-12 12:21:34 +01:00
|
|
|
if(State.state.featureSwitchUserbadge.data){
|
|
|
|
|
2020-11-06 01:58:26 +01:00
|
|
|
this._editButton =
|
|
|
|
Svg.pencil_ui().SetClass("edit-button")
|
2020-10-27 01:01:34 +01:00
|
|
|
.onClick(() => {
|
|
|
|
self._editMode.setData(true);
|
|
|
|
});
|
2020-11-12 12:21:34 +01:00
|
|
|
}
|
2020-10-27 01:01:34 +01:00
|
|
|
|
|
|
|
|
|
|
|
// And at last, set up the skip button
|
|
|
|
const cancelbutton =
|
|
|
|
Translations.t.general.cancel.Clone()
|
|
|
|
.SetClass("cancel")
|
|
|
|
.onClick(() => {
|
|
|
|
self._editMode.setData(false)
|
|
|
|
});
|
|
|
|
|
|
|
|
this._question = new TagRenderingQuestion(tags, configuration,
|
|
|
|
() => {
|
|
|
|
self._editMode.setData(false)
|
|
|
|
},
|
|
|
|
cancelbutton)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
InnerRender(): string {
|
|
|
|
|
|
|
|
if (this._editMode.data) {
|
|
|
|
return this._question.Render();
|
|
|
|
}
|
|
|
|
|
|
|
|
if(this._configuration.GetRenderValue(this._tags.data)=== undefined){
|
|
|
|
return "";
|
|
|
|
}
|
|
|
|
|
|
|
|
if(!this._configuration?.condition?.matchesProperties(this._tags.data)){
|
|
|
|
return "";
|
|
|
|
}
|
|
|
|
|
|
|
|
return new Combine([this._answer,
|
|
|
|
(State.state?.osmConnection?.userDetails?.data?.loggedIn ?? true) ? this._editButton : undefined
|
|
|
|
]).SetClass("answer")
|
|
|
|
.Render();
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|