diff --git a/Customizations/AllKnownLayouts.ts b/Customizations/AllKnownLayouts.ts
index 8fea419..fe6b632 100644
--- a/Customizations/AllKnownLayouts.ts
+++ b/Customizations/AllKnownLayouts.ts
@@ -14,9 +14,10 @@ export class AllKnownLayouts {
new Groen(),
new GRB(),
new BikePumpsLayout(),
+ new Bookcases()
/*new Toilets(),
new Statues(),
- new Bookcases()*/
+ */
];
const allSets = {};
for (const layout of layouts) {
diff --git a/Customizations/Layers/Bookcases.ts b/Customizations/Layers/Bookcases.ts
index 81015f1..fcd621c 100644
--- a/Customizations/Layers/Bookcases.ts
+++ b/Customizations/Layers/Bookcases.ts
@@ -3,6 +3,7 @@ import L from "leaflet";
import {Tag} from "../../Logic/TagsFilter";
import {QuestionDefinition} from "../../Logic/Question";
import {TagRenderingOptions} from "../TagRendering";
+import {NameInline} from "../Questions/NameInline";
export class Bookcases extends LayerDefinition {
@@ -10,21 +11,38 @@ export class Bookcases extends LayerDefinition {
super();
this.name = "boekenkast";
- this.newElementTags = [new Tag( "amenity", "public_bookcase")];
+ this.newElementTags = [new Tag("amenity", "public_bookcase")];
this.icon = "./assets/bookcase.svg";
- this.overpassFilter = new Tag("amenity","public_bookcase");
+ this.overpassFilter = new Tag("amenity", "public_bookcase");
this.minzoom = 13;
+ this.title = new NameInline("ruilboekenkastje");
+ this.elementsToShow = [
- this.questions = [
+ new TagRenderingOptions(
+ {
+ question: "Hoeveel boeken passen in dit boekenruilkastje?",
+ freeform: {
+ renderTemplate: "Er passen {capacity} boeken in dit boekenruilkastje",
+ template: "Er passen $$$ boeken in dit boekenruilkastje",
+ key: "capacity",
+ placeholder: "aantal"
+ },
+ priority: 15
+ }
+ )
+
+ ];
+
+ /* this.questions = [
QuestionDefinition.noNameOrNameQuestion("Wat is de naam van dit boekenruilkastje?", "Dit boekenruilkastje heeft niet echt een naam", 20),
- QuestionDefinition.textQuestion("Hoeveel boeken kunnen er in?", "capacity", 15),
QuestionDefinition.textQuestion("Heeft dit boekenkastje een peter, meter of voogd?", "operator", 10),
- // QuestionDefinition.textQuestion("Wie kunnen we (per email) contacteren voor dit boekenruilkastje?", "email", 5),
+ // QuestionDefinition.textQuestion("Wie kunnen we (per email) contacteren voor dit boekenruilkastje?", "email", 5),
- ]
+ ]
;
+ */
this.style = function (tags) {
return {
@@ -36,6 +54,7 @@ export class Bookcases extends LayerDefinition {
};
}
+ /*
this.elementsToShow = [
@@ -58,7 +77,7 @@ export class Bookcases extends LayerDefinition {
new TagMappingOptions({key: "description", template: "Extra beschrijving:
{description}
"}), ] - ; + ;*/ } diff --git a/Customizations/Layers/Park.ts b/Customizations/Layers/Park.ts index e46dc25..dcce5d1 100644 --- a/Customizations/Layers/Park.ts +++ b/Customizations/Layers/Park.ts @@ -9,18 +9,32 @@ import {NameInline} from "../Questions/NameInline"; export class Park extends LayerDefinition { - + private accessByDefault = new TagRenderingOptions({ question: "Is dit park publiek toegankelijk?", mappings: [ - {k: new Tag("access","yes"), txt: "Publiek toegankelijk"}, - {k: new Tag("access",""), txt: "Publiek toegankelijk"}, - {k: new Tag("access","no"), txt: "Niet-publiek toegankelijk park"}, - {k: new Tag("access","guided"), txt: "Enkel toegankelijk met een gids of op een activiteit"} + {k: new Tag("access", "yes"), txt: "Publiek toegankelijk"}, + {k: new Tag("access", ""), txt: "Publiek toegankelijk"}, + {k: new Tag("access", "no"), txt: "Niet publiek toegankelijk"}, + {k: new Tag("access", "guided"), txt: "Enkel toegankelijk met een gids of op een activiteit"} ] }) - - + + private operatorByDefault = new + + TagRenderingOptions({ + question: "Wie beheert dit park?", + freeform: { + key: "operator", + renderTemplate: "Dit park wordt beheerd door {operator}", + template: "$$$", + }, + mappings: [{ + k: null, txt: "De gemeente beheert dit park" + }] + }); + + constructor() { super(); this.name = "park"; @@ -35,8 +49,9 @@ export class Park extends LayerDefinition { this.style = this.generateStyleFunction(); this.title = new NameInline("park"); this.elementsToShow = [new NameQuestion(), - this.accessByDefault - + this.accessByDefault, + this.operatorByDefault + ]; } diff --git a/Customizations/Layouts/Groen.ts b/Customizations/Layouts/Groen.ts index 2432869..f27da74 100644 --- a/Customizations/Layouts/Groen.ts +++ b/Customizations/Layouts/Groen.ts @@ -6,7 +6,7 @@ import {Layout} from "../Layout"; export class Groen extends Layout { constructor() { - super("groen", + super("buurtnatuur", "Buurtnatuur", [new NatureReserves(), new Park(), new Bos()], 10, diff --git a/Customizations/TagRendering.ts b/Customizations/TagRendering.ts index f94b112..695c122 100644 --- a/Customizations/TagRendering.ts +++ b/Customizations/TagRendering.ts @@ -72,7 +72,7 @@ export class TagRenderingOptions { const tagsKV = TagUtils.proprtiesToKV(tags); for (const oneOnOneElement of this.options.mappings) { - if (oneOnOneElement.k.matches(tagsKV)) { + if (oneOnOneElement.k === null || oneOnOneElement.k.matches(tagsKV)) { return false; } } @@ -147,10 +147,9 @@ export class TagRendering extends UIElement { this.elementPriority = options.priority ?? 0; // Prepare the choices for the Radio buttons - let i = 0; const choices: UIElement[] = []; - const alreadyUsedTexts: string[] = []; - + const usedChoices: string [] = []; + for (const choice of options.mappings ?? []) { if (choice.k === null) { this._mapping.push(choice); @@ -167,15 +166,16 @@ export class TagRendering extends UIElement { } } - const txt = choiceSubbed.txt; - if (alreadyUsedTexts.indexOf(txt) < 0) { + + const txt = choiceSubbed.txt + // Choices is what is shown in the radio buttons + if (usedChoices.indexOf(txt) < 0) { + choices.push(new FixedUiElement(txt)); - alreadyUsedTexts.push(txt); + usedChoices.push(txt); + // This is used to convert the radio button index into tags needed to add + this._mapping.push(choiceSubbed); } - - - this._mapping.push(choiceSubbed); - i++; } // Map radiobutton choice and textfield answer onto tagfilter. That tagfilter will be pushed into the changes later on @@ -205,6 +205,7 @@ export class TagRendering extends UIElement { // Prepare the actual input element -> pick an appropriate implementation let inputElement: UIInputElement