New dependency system for TagDependantUIElement

This commit is contained in:
Pieter Vander Vennet 2020-07-17 14:24:31 +02:00
parent d7809b88bc
commit a8314b39e6
6 changed files with 22 additions and 15 deletions

View file

@ -83,6 +83,10 @@ export class Map extends LayerDefinition {
k: new Tag("map_source:attribution", "no"),
txt: "There is no attribution at all"
},
{
k: new Tag("map_source:attribution", "none"),
txt: "There is no attribution at all"
}
]
}).OnlyShowIf(new Tag("map_source", "OpenStreetMap"))
]

View file

@ -17,9 +17,9 @@ export class OnlyShowIfConstructor implements TagDependantUIElementConstructor{
this._embedded = embedded;
}
construct(tags: UIEventSource<any>, changes: Changes): TagDependantUIElement {
return new OnlyShowIf(tags,
this._embedded.construct(tags, changes),
construct(dependencies): TagDependantUIElement {
return new OnlyShowIf(dependencies.tags,
this._embedded.construct(dependencies),
this._tagsFilter);
}

View file

@ -86,9 +86,9 @@ export class TagRenderingOptions implements TagDependantUIElementConstructor {
}) {
this.options = options;
}
OnlyShowIf(tagsFilter: TagsFilter) : TagDependantUIElementConstructor{
return new OnlyShowIfConstructor(tagsFilter, this);
OnlyShowIf(dependencies): TagDependantUIElementConstructor {
return new OnlyShowIfConstructor(dependencies, this);
}
@ -111,8 +111,8 @@ export class TagRenderingOptions implements TagDependantUIElementConstructor {
}
construct(tags: UIEventSource<any>, changes: Changes): TagDependantUIElement {
return new TagRendering(tags, changes, this.options);
construct(dependencies: { tags: UIEventSource<any>, changes: Changes }): TagDependantUIElement {
return new TagRendering(dependencies.tags, dependencies.changes, this.options);
}
IsKnown(properties: any): boolean {

View file

@ -5,7 +5,7 @@ import {UIElement} from "../UI/UIElement";
export interface TagDependantUIElementConstructor {
construct(tags: UIEventSource<any>, changes: Changes): TagDependantUIElement;
construct(dependencies: {tags: UIEventSource<any>, changes: Changes}): TagDependantUIElement;
IsKnown(properties: any): boolean;
IsQuestioning(properties: any): boolean;
Priority(): number;

View file

@ -41,12 +41,13 @@ export class FeatureInfoBox extends UIElement {
this._userDetails = userDetails;
this.ListenTo(userDetails);
const deps = {tags:this._tagsES , changes:this._changes}
this._infoboxes = [];
elementsToShow = elementsToShow ?? []
for (const tagRenderingOption of elementsToShow) {
this._infoboxes.push(
tagRenderingOption.construct(this._tagsES, this._changes));
tagRenderingOption.construct(deps));
}
title = title ?? new TagRenderingOptions(
@ -55,9 +56,9 @@ export class FeatureInfoBox extends UIElement {
}
)
this._title = new TagRenderingOptions(title.options).construct(this._tagsES, this._changes);
this._osmLink =new OsmLink().construct(this._tagsES, this._changes);
this._wikipedialink = new WikipediaLink().construct(this._tagsES, this._changes);
this._title = new TagRenderingOptions(title.options).construct(deps);
this._osmLink =new OsmLink().construct(deps);
this._wikipedialink = new WikipediaLink().construct(deps);
}

View file

@ -28,8 +28,10 @@ class ImageCarouselWithUpload extends TagDependantUIElement {
private _imageElement: ImageCarousel;
private _pictureUploader: ImageUploadFlow;
constructor(tags: UIEventSource<any>, changes: Changes) {
super(tags);
constructor(dependencies: {tags: UIEventSource<any>, changes: Changes}) {
super(dependencies.tags);
const tags = dependencies.tags;
const changes = dependencies.changes;
this._imageElement = new ImageCarousel(tags, changes);
const userDetails = changes.login.userDetails;
const license = changes.login.GetPreference( "mapcomplete-pictures-license");