Porting repair_station to JSON configuration file

This commit is contained in:
Pieter Vander Vennet 2020-09-05 17:43:30 +02:00
parent b7b1bc13e4
commit 9e9d80c045
18 changed files with 455 additions and 503 deletions

View file

@ -5,19 +5,31 @@ import {TagRenderingConfigJson} from "../../Customizations/JSON/TagRenderingConf
export class GenerateEmpty {
public static createEmptyLayer(): LayerConfigJson {
return {
id: undefined,
name: undefined,
minzoom: 0,
id: "yourlayer",
name: "Layer",
minzoom: 12,
overpassTags: {and: [""]},
title: undefined,
title: "Layer",
description: {},
tagRenderings: [],
icon: {
render: "./assets/bug.svg"
},
width: {
render: "8"
},
iconSize:{
render: "40,40,center"
},
color:{
render: "#00f"
}
}
}
public static createEmptyLayout(): LayoutConfigJson {
return {
id: "",
id: "id",
title: {},
description: {},
language: [],

View file

@ -170,25 +170,29 @@ export default class LayerPanel extends UIElement {
{
title: "Icon",
description: "A visual representation for this layer and for the points on the map.",
disableQuestions: true
disableQuestions: true,
noLanguage: true
});
const size = new TagRenderingPanel(languages, currentlySelected, userDetails,
{
title: "Icon Size",
description: "The size of the icons on the map in pixels. Can vary based on the tagging",
disableQuestions: true
disableQuestions: true,
noLanguage: true
});
const color = new TagRenderingPanel(languages, currentlySelected, userDetails,
{
title: "Way and area color",
description: "The color or a shown way or area. Can vary based on the tagging",
disableQuestions: true
disableQuestions: true,
noLanguage: true
});
const stroke = new TagRenderingPanel(languages, currentlySelected, userDetails,
{
title: "Stroke width",
description: "The width of lines representing ways and the outline of areas. Can vary based on the tags",
disableQuestions: true
disableQuestions: true,
noLanguage: true
});
this.registerTagRendering(iconSelect);
this.registerTagRendering(size);
@ -201,9 +205,9 @@ export default class LayerPanel extends UIElement {
return new SettingsTable([
setting(iconSelect, "icon"),
setting(size, "size"),
setting(size, "iconSize"),
setting(color, "color"),
setting(stroke, "stroke")
setting(stroke, "width")
], currentlySelected);
}

View file

@ -31,7 +31,8 @@ export default class TagRenderingPanel extends InputElement<TagRenderingConfigJs
title?: string,
description?: string,
disableQuestions?: boolean,
isImage?: boolean
isImage?: boolean,
noLanguage?: boolean
}) {
super();
@ -56,8 +57,9 @@ export default class TagRenderingPanel extends InputElement<TagRenderingConfigJs
const questionSettings = [
setting(new MultiLingualTextFields(languages), "question", "Question", "If the key or mapping doesn't match, this question is asked"),
setting(options?.noLanguage ? TextField.StringInput() : new MultiLingualTextFields(languages)
, "question", "Question", "If the key or mapping doesn't match, this question is asked"),
setting(new AndOrTagInput(), "condition", "Condition",
"Only show this tag rendering if these tags matches. Optional field.<br/>Note that the Overpass-tags are already always included in this object"),
@ -76,7 +78,9 @@ export default class TagRenderingPanel extends InputElement<TagRenderingConfigJs
];
const settings: (string | SingleSetting<any>)[] = [
setting(new MultiLingualTextFields(languages), "render", "Value to show", " Renders this value. Note that <span class='literal-code'>{key}</span>-parts are substituted by the corresponding values of the element. If neither 'textFieldQuestion' nor 'mappings' are defined, this text is simply shown as default value."),
setting(
options?.noLanguage ? TextField.StringInput() :
new MultiLingualTextFields(languages), "render", "Value to show", " Renders this value. Note that <span class='literal-code'>{key}</span>-parts are substituted by the corresponding values of the element. If neither 'textFieldQuestion' nor 'mappings' are defined, this text is simply shown as default value."),
questionsNotUnlocked ? `You need at least ${State.userJourney.themeGeneratorFullUnlock} changesets to unlock the 'question'-field and to use your theme to edit OSM data`: "",
...(options?.disableQuestions ? [] : questionSettings),
@ -85,7 +89,7 @@ export default class TagRenderingPanel extends InputElement<TagRenderingConfigJs
setting(new MultiInput<{ if: AndOrTagConfigJson, then: (string | any), hideInAnswer?: boolean }>("Add a mapping",
() => ({if: undefined, then: undefined}),
() => new MappingInput(languages, options?.disableQuestions ?? false)), "mappings",
"Mappings", "")
"If a tag matches, then show the respective text", "")
];