diff --git a/Customizations/LayerDefinition.ts b/Customizations/LayerDefinition.ts index 4cbe83b..bdf480f 100644 --- a/Customizations/LayerDefinition.ts +++ b/Customizations/LayerDefinition.ts @@ -88,7 +88,8 @@ export class LayerDefinition { static WAYHANDLING_CENTER_AND_WAY = 2; constructor(options: { - name: string, + name: string | UIElement, + description: string | UIElement, newElementTags: Tag[], icon: string, minzoom: number, @@ -106,6 +107,7 @@ export class LayerDefinition { return; } this.name = options.name; + this.description = options.description; this.maxAllowedOverlapPercentage = options.maxAllowedOverlapPercentage ?? 0; this.newElementTags = options.newElementTags; this.icon = options.icon; @@ -119,7 +121,7 @@ export class LayerDefinition { asLayer(basemap: Basemap, allElements: ElementStorage, changes: Changes, userDetails: UIEventSource, selectedElement: UIEventSource<{feature: any}>, - showOnPopup: (tags: UIEventSource<(any)>, feature: any) => UIElement): + showOnPopup: (tags: UIEventSource, feature: any) => UIElement): FilteredLayer { return new FilteredLayer( this, diff --git a/Customizations/Layers/Viewpoint.ts b/Customizations/Layers/Viewpoint.ts index 37fa9c7..5012e79 100644 --- a/Customizations/Layers/Viewpoint.ts +++ b/Customizations/Layers/Viewpoint.ts @@ -1,6 +1,46 @@ import {LayerDefinition} from "../LayerDefinition"; +import L from "leaflet" +import {FixedUiElement} from "../../UI/Base/FixedUiElement"; +import FixedText from "../Questions/FixedText"; +import {Tag} from "../../Logic/TagsFilter"; +import {ImageCarouselWithUploadConstructor} from "../../UI/Image/ImageCarouselWithUpload"; +import {TagRenderingOptions} from "../TagRendering"; +export class Viewpoint extends LayerDefinition { + + constructor() { + super({ + name: "Bezienswaardigheid", + description: "Wil je een foto toevoegen van iets dat geen park, bos of natuurgebied is? Dit kan hiermee", + newElementTags: [new Tag("tourism", "viewpoint"), new Tag("fixme", "Added with mapcomplete. This viewpoint should probably me merged with some existing feature")], + icon: "assets/viewpoint.svg", + wayHandling: LayerDefinition.WAYHANDLING_CENTER_ONLY, + style: tags => { + return { + color: undefined, icon: new L.icon({ + iconUrl: "assets/viewpoint.svg", + iconSize: [20, 20] + }) + } + }, + maxAllowedOverlapPercentage: 0, + overpassFilter: new Tag("tourism", "viewpoint"), + minzoom: 13, + title: new FixedText("Bezienswaardigheid") + }); + + this.elementsToShow = [ + new FixedText(this.description), + new ImageCarouselWithUploadConstructor(), + new TagRenderingOptions({ + question: "Zijn er bijzonderheden die je wilt toevoegen?", + freeform:{ + key: "description:0", + template: "$$$", + renderTemplate: "

Bijzonderheden

{description:0}" + } + }) + ] + } -export class Viewpoint extends LayerDefinition{ - } \ No newline at end of file diff --git a/Customizations/Layouts/Groen.ts b/Customizations/Layouts/Groen.ts index b5094b4..6faef2c 100644 --- a/Customizations/Layouts/Groen.ts +++ b/Customizations/Layouts/Groen.ts @@ -2,6 +2,7 @@ import {NatureReserves} from "../Layers/NatureReserves"; import {Park} from "../Layers/Park"; import {Bos} from "../Layers/Bos"; import {Layout} from "../Layout"; +import {Viewpoint} from "../Layers/Viewpoint"; export class Groen extends Layout { @@ -9,7 +10,7 @@ export class Groen extends Layout { super("buurtnatuur", ["nl"], "Buurtnatuur", - [new NatureReserves(), new Park(), new Bos()], + [new NatureReserves(), new Park(), new Bos(), new Viewpoint()], 10, 50.8435, 4.3688, @@ -39,12 +40,12 @@ export class Groen extends Layout { "
  • Je kan altijd een vraag overslaan als je het antwoord niet weet of niet zeker bent
  • " + "
  • Je kan altijd een foto toevoegen
  • " + "
  • Je kan ook zelf een gebied toevoegen door op de kaart te klikken
  • " + - "
  • Je kan deze website ook openen op je smartphone, zo kan je ter plaatse gaan om vragen te beantwoorden en foto's te maken
  • " + + "
  • Open buurtnatuur.be op je smartphone om al wandelend foto's te maken en vragen te beantwoorden
  • " + "" + "" + "

    " + "De oorspronkelijke data komt van OpenStreetMap en je antwoorden worden daar bewaard.
    Omdat iedereen vrij kan meewerken aan dit project, kunnen we niet garanderen dat er geen fouten opduiken." + - "Kan je hier niet aanpassen wat je wilt, dan kan je dat zelf via OpenStreetMap.org doen. Groen kan geen enkele verantwoordelijkheid nemen over de kaart." + + "Kan je hier niet aanpassen wat je wilt, dan kan je dat zelf via OpenStreetMap.org doen. Groen kan geen enkele verantwoordelijkheid nemen over de kaart." + "

    " + "Je privacy is belangrijk. We tellen wel hoeveel gebruikers deze website bezoeken. We plaatsen een cookie waar geen persoonlijke informatie in bewaard wordt. " + "Als je inlogt, komt er een tweede cookie bij met je inloggegevens." + diff --git a/Logic/FilteredLayer.ts b/Logic/FilteredLayer.ts index cbfdc0c..3053fd3 100644 --- a/Logic/FilteredLayer.ts +++ b/Logic/FilteredLayer.ts @@ -49,7 +49,7 @@ export class FilteredLayer { map: Basemap, storage: ElementStorage, changes: Changes, selectedElement: UIEventSource, - showOnPopup: ((tags: UIEventSource) => UIElement) + showOnPopup: ((tags: UIEventSource, feature: any) => UIElement) ) { this.layerDef = layerDef; diff --git a/Logic/LayerUpdater.ts b/Logic/LayerUpdater.ts index 0a70ac0..3949ed9 100644 --- a/Logic/LayerUpdater.ts +++ b/Logic/LayerUpdater.ts @@ -57,12 +57,14 @@ export class LayerUpdater { } } + private _failCount = 0; private handleFail(reason: any) { console.log("QUERY FAILED (retrying in 1 sec)", reason); this.previousBounds = undefined; const self = this; + this._failCount++; window.setTimeout( - function(){self.update()}, 1000 + function(){self.update()}, this._failCount * 1000 ) } diff --git a/UI/Base/Button.ts b/UI/Base/Button.ts index 817de11..9a08bd4 100644 --- a/UI/Base/Button.ts +++ b/UI/Base/Button.ts @@ -1,4 +1,5 @@ import {UIElement} from "../UIElement"; +import Locale from "../i18n/Locale"; export class Button extends UIElement { private _text: UIElement; @@ -6,7 +7,7 @@ export class Button extends UIElement { private _clss: string; constructor(text: UIElement, onclick: (() => void), clss: string = "") { - super(undefined); + super(Locale.language); this._text = text; this._onclick = onclick; if (clss !== "") { @@ -28,9 +29,7 @@ export class Button extends UIElement { InnerUpdate(htmlElement: HTMLElement) { super.InnerUpdate(htmlElement); const self = this; - console.log("Update for ", htmlElement) document.getElementById("button-"+this.id).onclick = function(){ - console.log("Clicked"); self._onclick(); } } diff --git a/UI/Input/DropDown.ts b/UI/Input/DropDown.ts index b590e0d..6427a61 100644 --- a/UI/Input/DropDown.ts +++ b/UI/Input/DropDown.ts @@ -89,7 +89,6 @@ export class DropDown extends InputElement { var t = this._value.data; for (let i = 0; i < this._values.length ; i++) { const value = this._values[i].value; - console.log("Checking",value," against ",t, ":", t === value) if (value === t) { // @ts-ignore e.selectedIndex = i; diff --git a/UI/SimpleAddUI.ts b/UI/SimpleAddUI.ts index 5d0bc6e..77ff1d7 100644 --- a/UI/SimpleAddUI.ts +++ b/UI/SimpleAddUI.ts @@ -6,6 +6,8 @@ import {Changes} from "../Logic/Changes"; import {FixedUiElement} from "./Base/FixedUiElement"; import {Button} from "./Base/Button"; import {UserDetails} from "../Logic/OsmConnection"; +import Translations from "./i18n/Translations"; +import Combine from "./Base/Combine"; /** * Asks to add a feature at the last clicked location, at least if zoom is sufficient @@ -42,7 +44,7 @@ export class SimpleAddUI extends UIElement { //