forked from MapComplete/MapComplete
Porting cyclofix-shops to a .json definition, removing now unneeded classes
This commit is contained in:
parent
bb209ee731
commit
02c2e48293
23 changed files with 428 additions and 590 deletions
|
@ -18,7 +18,7 @@ import * as birdhides from "../../assets/layers/bird_hide/birdhides.json"
|
|||
import * as nature_reserve from "../../assets/layers/nature_reserve/nature_reserve.json"
|
||||
import * as bike_cafes from "../../assets/layers/bike_cafe/bike_cafes.json"
|
||||
import * as cycling_themed_objects from "../../assets/layers/cycling_themed_object/cycling_themed_objects.json"
|
||||
|
||||
import * as bike_shops from "../../assets/layers/bike_shop/bike_shop.json"
|
||||
import {Utils} from "../../Utils";
|
||||
import ImageCarouselWithUploadConstructor from "../../UI/Image/ImageCarouselWithUpload";
|
||||
import {ImageCarouselConstructor} from "../../UI/Image/ImageCarousel";
|
||||
|
@ -44,7 +44,8 @@ export class FromJSON {
|
|||
FromJSON.Layer(birdhides),
|
||||
FromJSON.Layer(nature_reserve),
|
||||
FromJSON.Layer(bike_cafes),
|
||||
FromJSON.Layer(cycling_themed_objects)
|
||||
FromJSON.Layer(cycling_themed_objects),
|
||||
FromJSON.Layer(bike_shops)
|
||||
];
|
||||
|
||||
for (const layer of sharedLayersList) {
|
||||
|
|
|
@ -1,16 +1,6 @@
|
|||
import {LayerDefinition} from "../LayerDefinition";
|
||||
import Translations from "../../UI/i18n/Translations";
|
||||
import {And, RegexTag, Tag} from "../../Logic/Tags";
|
||||
import ImageCarouselWithUploadConstructor from "../../UI/Image/ImageCarouselWithUpload";
|
||||
import ShopRetail from "../Questions/bike/ShopRetail";
|
||||
import ShopPump from "../Questions/bike/ShopPump";
|
||||
import ShopRental from "../Questions/bike/ShopRental";
|
||||
import ShopRepair from "../Questions/bike/ShopRepair";
|
||||
import ShopDiy from "../Questions/bike/ShopDiy";
|
||||
import ShopName from "../Questions/bike/ShopName";
|
||||
import ShopSecondHand from "../Questions/bike/ShopSecondHand";
|
||||
import {PhoneNumberQuestion} from "../Questions/PhoneNumberQuestion";
|
||||
import Website from "../Questions/Website";
|
||||
import {TagRenderingOptions} from "../TagRenderingOptions";
|
||||
|
||||
|
||||
|
@ -59,16 +49,15 @@ export default class BikeOtherShops extends LayerDefinition {
|
|||
})
|
||||
|
||||
this.elementsToShow = [
|
||||
new ImageCarouselWithUploadConstructor(),
|
||||
new ShopName(),
|
||||
new PhoneNumberQuestion("{name}"),
|
||||
new Website("{name}"),
|
||||
new ShopRetail(),
|
||||
new ShopRental(),
|
||||
new ShopRepair(),
|
||||
new ShopPump(),
|
||||
new ShopDiy(),
|
||||
new ShopSecondHand()
|
||||
// new ImageCarouselWithUploadConstructor(),
|
||||
// new PhoneNumberQuestion("{name}"),
|
||||
// new Website("{name}"),
|
||||
// ShopRetail
|
||||
// new ShopRental(),
|
||||
// new ShopRepair(),
|
||||
// new ShopPump(),
|
||||
// new ShopDiy(),
|
||||
// new ShopSecondHand()
|
||||
]
|
||||
}
|
||||
|
||||
|
|
|
@ -1,88 +0,0 @@
|
|||
import {LayerDefinition} from "../LayerDefinition";
|
||||
import Translations from "../../UI/i18n/Translations";
|
||||
import {And, Tag} from "../../Logic/Tags";
|
||||
import ImageCarouselWithUploadConstructor from "../../UI/Image/ImageCarouselWithUpload";
|
||||
import ShopRetail from "../Questions/bike/ShopRetail";
|
||||
import ShopPump from "../Questions/bike/ShopPump";
|
||||
import ShopRental from "../Questions/bike/ShopRental";
|
||||
import ShopRepair from "../Questions/bike/ShopRepair";
|
||||
import ShopDiy from "../Questions/bike/ShopDiy";
|
||||
import ShopName from "../Questions/bike/ShopName";
|
||||
import ShopSecondHand from "../Questions/bike/ShopSecondHand";
|
||||
import {PhoneNumberQuestion} from "../Questions/PhoneNumberQuestion";
|
||||
import Website from "../Questions/Website";
|
||||
import {EmailQuestion} from "../Questions/EmailQuestion";
|
||||
import {TagRenderingOptions} from "../TagRenderingOptions";
|
||||
|
||||
|
||||
export default class BikeShops extends LayerDefinition {
|
||||
private readonly sellsBikes = new Tag("service:bicycle:retail", "yes")
|
||||
|
||||
constructor() {
|
||||
super("bikeshop");
|
||||
this.name = Translations.t.cyclofix.shop.name
|
||||
this.icon = "./assets/bike/repair_shop.svg"
|
||||
this.overpassFilter = new Tag("shop", "bicycle");
|
||||
this.presets = [{
|
||||
title: Translations.t.cyclofix.shop.title,
|
||||
tags: [
|
||||
new Tag("shop", "bicycle"),
|
||||
]
|
||||
}]
|
||||
this.maxAllowedOverlapPercentage = 10
|
||||
this.wayHandling = LayerDefinition.WAYHANDLING_CENTER_AND_WAY
|
||||
|
||||
this.minzoom = 13;
|
||||
this.style = this.generateStyleFunction();
|
||||
this.title = new TagRenderingOptions({
|
||||
mappings: [
|
||||
{k: new And([new Tag("name", "*"), this.sellsBikes]), txt: Translations.t.cyclofix.shop.titleShopNamed},
|
||||
{
|
||||
k: new And([new Tag("name", "*"), new Tag("service:bicycle:retail", "")]),
|
||||
txt: Translations.t.cyclofix.shop.titleShop
|
||||
},
|
||||
{
|
||||
k: new And([new Tag("name", "*"), new Tag("service:bicycle:retail", "no")]),
|
||||
txt: Translations.t.cyclofix.shop.titleRepairNamed
|
||||
},
|
||||
{k: this.sellsBikes, txt: Translations.t.cyclofix.shop.titleShop},
|
||||
{k: new Tag("service:bicycle:retail", " "), txt: Translations.t.cyclofix.shop.title},
|
||||
{k: new Tag("service:bicycle:retail", "no"), txt: Translations.t.cyclofix.shop.titleRepair},
|
||||
]
|
||||
})
|
||||
|
||||
this.elementsToShow = [
|
||||
new ImageCarouselWithUploadConstructor(),
|
||||
new ShopName(),
|
||||
new Website("{name}"),
|
||||
new PhoneNumberQuestion("{name}"),
|
||||
new EmailQuestion("{name}"),
|
||||
new ShopRetail(),
|
||||
new ShopRental(),
|
||||
new ShopRepair(),
|
||||
new ShopPump(),
|
||||
new ShopDiy(),
|
||||
new ShopSecondHand()
|
||||
]
|
||||
}
|
||||
|
||||
private generateStyleFunction() {
|
||||
const self = this;
|
||||
return function (tags: any) {
|
||||
let icon = "assets/bike/repair_shop.svg";
|
||||
|
||||
if (self.sellsBikes.matchesProperties(tags)) {
|
||||
icon = "assets/bike/shop.svg";
|
||||
}
|
||||
|
||||
return {
|
||||
color: "#00bb00",
|
||||
icon: {
|
||||
iconUrl: icon,
|
||||
iconSize: [50, 50],
|
||||
iconAnchor: [25, 50]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,5 +1,4 @@
|
|||
import {Layout} from "../Layout";
|
||||
import BikeShops from "../Layers/BikeShops";
|
||||
import Translations from "../../UI/i18n/Translations";
|
||||
import Combine from "../../UI/Base/Combine";
|
||||
import BikeOtherShops from "../Layers/BikeOtherShops";
|
||||
|
@ -20,7 +19,7 @@ export default class Cyclofix extends Layout {
|
|||
"cyclofix",
|
||||
["en", "nl", "fr", "gl","de"],
|
||||
Translations.t.cyclofix.title,
|
||||
["bike_repair_station", "bike_cafes", new BikeShops(), "drinking_water", "bike_parking", new BikeOtherShops(),"bike_themed_object",
|
||||
["bike_repair_station", "bike_cafes", "bike_shops", "drinking_water", "bike_parking", new BikeOtherShops(),"bike_themed_object",
|
||||
// The first of november, halloween and the second of november, we remember our dead
|
||||
...(Cyclofix.RememberTheDead() ? ["ghost_bike"] : [])],
|
||||
16,
|
||||
|
|
|
@ -1,18 +0,0 @@
|
|||
import {UIElement} from "../../UI/UIElement";
|
||||
import Translations from "../../UI/i18n/Translations";
|
||||
import {TagRenderingOptions} from "../TagRenderingOptions";
|
||||
|
||||
export class EmailQuestion extends TagRenderingOptions {
|
||||
|
||||
constructor(category: string | UIElement) {
|
||||
super({
|
||||
question: Translations.t.general.questions.emailOf.Subs({category: category}),
|
||||
freeform: {
|
||||
renderTemplate: Translations.t.general.questions.emailIs.Subs({category: category}),
|
||||
template: "$email$",
|
||||
key: "email"
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
}
|
|
@ -1,18 +0,0 @@
|
|||
import {UIElement} from "../../UI/UIElement";
|
||||
import Translations from "../../UI/i18n/Translations";
|
||||
import {TagRenderingOptions} from "../TagRenderingOptions";
|
||||
|
||||
export class PhoneNumberQuestion extends TagRenderingOptions {
|
||||
|
||||
constructor(category: string | UIElement) {
|
||||
super({
|
||||
question: Translations.t.general.questions.phoneNumberOf.Subs({category: category}),
|
||||
freeform: {
|
||||
renderTemplate: Translations.t.general.questions.phoneNumberIs.Subs({category: category}),
|
||||
template: "$phone$",
|
||||
key: "phone"
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
}
|
|
@ -1,17 +0,0 @@
|
|||
import {UIElement} from "../../UI/UIElement";
|
||||
import Translations from "../../UI/i18n/Translations";
|
||||
import {TagRenderingOptions} from "../TagRenderingOptions";
|
||||
|
||||
|
||||
export default class Website extends TagRenderingOptions {
|
||||
constructor(category: string | UIElement) {
|
||||
super({
|
||||
question: Translations.t.general.questions.websiteOf.Subs({category: category}),
|
||||
freeform: {
|
||||
renderTemplate: Translations.t.general.questions.websiteIs,
|
||||
template: "$$$",
|
||||
key: "website"
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
|
@ -1,18 +0,0 @@
|
|||
import {Tag} from "../../../Logic/Tags";
|
||||
import Translations from "../../../UI/i18n/Translations";
|
||||
import {TagRenderingOptions} from "../../TagRenderingOptions";
|
||||
|
||||
|
||||
export default class ShopDiy extends TagRenderingOptions {
|
||||
constructor() {
|
||||
const key = 'service:bicycle:diy'
|
||||
const to = Translations.t.cyclofix.shop.diy
|
||||
super({
|
||||
question: to.question,
|
||||
mappings: [
|
||||
{k: new Tag(key, "yes"), txt: to.yes},
|
||||
{k: new Tag(key, "no"), txt: to.no},
|
||||
]
|
||||
});
|
||||
}
|
||||
}
|
|
@ -1,17 +0,0 @@
|
|||
import Translations from "../../../UI/i18n/Translations";
|
||||
import {TagRenderingOptions} from "../../TagRenderingOptions";
|
||||
|
||||
|
||||
export default class ShopPump extends TagRenderingOptions {
|
||||
constructor() {
|
||||
const to = Translations.t.cyclofix.shop.qName
|
||||
super({
|
||||
question: to.question,
|
||||
freeform: {
|
||||
key: "name",
|
||||
renderTemplate: to.render,
|
||||
template: to.template
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
|
@ -1,18 +0,0 @@
|
|||
import {Tag} from "../../../Logic/Tags";
|
||||
import Translations from "../../../UI/i18n/Translations";
|
||||
import {TagRenderingOptions} from "../../TagRenderingOptions";
|
||||
|
||||
|
||||
export default class ShopPump extends TagRenderingOptions {
|
||||
constructor() {
|
||||
const key = 'service:bicycle:pump'
|
||||
const to = Translations.t.cyclofix.shop.pump
|
||||
super({
|
||||
question: to.question,
|
||||
mappings: [
|
||||
{k: new Tag(key, "yes"), txt: to.yes},
|
||||
{k: new Tag(key, "no"), txt: to.no},
|
||||
]
|
||||
});
|
||||
}
|
||||
}
|
|
@ -1,18 +0,0 @@
|
|||
import {Tag} from "../../../Logic/Tags";
|
||||
import Translations from "../../../UI/i18n/Translations";
|
||||
import {TagRenderingOptions} from "../../TagRenderingOptions";
|
||||
|
||||
|
||||
export default class ShopRental extends TagRenderingOptions {
|
||||
constructor() {
|
||||
const key = 'service:bicycle:rental'
|
||||
const to = Translations.t.cyclofix.shop.rental
|
||||
super({
|
||||
question: to.question,
|
||||
mappings: [
|
||||
{k: new Tag(key, "yes"), txt: to.yes},
|
||||
{k: new Tag(key, "no"), txt: to.no},
|
||||
]
|
||||
});
|
||||
}
|
||||
}
|
|
@ -1,20 +0,0 @@
|
|||
import {Tag} from "../../../Logic/Tags";
|
||||
import Translations from "../../../UI/i18n/Translations";
|
||||
import {TagRenderingOptions} from "../../TagRenderingOptions";
|
||||
|
||||
|
||||
export default class ShopRepair extends TagRenderingOptions {
|
||||
constructor() {
|
||||
const key = 'service:bicycle:repair'
|
||||
const to = Translations.t.cyclofix.shop.repair
|
||||
super({
|
||||
question: to.question,
|
||||
mappings: [
|
||||
{k: new Tag(key, "yes"), txt: to.yes},
|
||||
{k: new Tag(key, "only_sold"), txt: to.sold},
|
||||
{k: new Tag(key, "brand"), txt: to.brand},
|
||||
{k: new Tag(key, "no"), txt: to.no},
|
||||
]
|
||||
});
|
||||
}
|
||||
}
|
|
@ -1,18 +0,0 @@
|
|||
import {Tag} from "../../../Logic/Tags";
|
||||
import Translations from "../../../UI/i18n/Translations";
|
||||
import {TagRenderingOptions} from "../../TagRenderingOptions";
|
||||
|
||||
|
||||
export default class ShopRetail extends TagRenderingOptions {
|
||||
constructor() {
|
||||
const key = 'service:bicycle:retail'
|
||||
const to = Translations.t.cyclofix.shop.retail
|
||||
super({
|
||||
question: to.question,
|
||||
mappings: [
|
||||
{k: new Tag(key, "yes"), txt: to.yes},
|
||||
{k: new Tag(key, "no"), txt: to.no},
|
||||
]
|
||||
});
|
||||
}
|
||||
}
|
|
@ -1,19 +0,0 @@
|
|||
import {Tag} from "../../../Logic/Tags";
|
||||
import Translations from "../../../UI/i18n/Translations";
|
||||
import {TagRenderingOptions} from "../../TagRenderingOptions";
|
||||
|
||||
|
||||
export default class ShopPump extends TagRenderingOptions {
|
||||
constructor() {
|
||||
const key = 'service:bicycle:second_hand'
|
||||
const to = Translations.t.cyclofix.shop.secondHand
|
||||
super({
|
||||
question: to.question,
|
||||
mappings: [
|
||||
{k: new Tag(key, "yes"), txt: to.yes},
|
||||
{k: new Tag(key, "no"), txt: to.no},
|
||||
{k: new Tag(key, "only"), txt: to.only},
|
||||
]
|
||||
});
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue