Documentation updates

This commit is contained in:
Pieter Vander Vennet 2021-11-08 02:36:01 +01:00
parent 78c689b7e8
commit 09eee08fbc
32 changed files with 600 additions and 87 deletions

View file

@ -17,6 +17,10 @@ import LineRenderingConfigJson from "./Json/LineRenderingConfigJson";
import {TagRenderingConfigJson} from "./Json/TagRenderingConfigJson";
import {UIEventSource} from "../../Logic/UIEventSource";
import BaseUIElement from "../../UI/BaseUIElement";
import Combine from "../../UI/Base/Combine";
import Title from "../../UI/Base/Title";
import List from "../../UI/Base/List";
import Link from "../../UI/Base/Link";
export default class LayerConfig extends WithContextLoader {
@ -369,6 +373,41 @@ export default class LayerConfig extends WithContextLoader {
}
public GenerateDocumentation(usedInThemes: string[], addedByDefault = false, canBeIncluded = true): BaseUIElement {
const extraProps = []
if (canBeIncluded) {
if (this.title === undefined) {
extraProps.push("Not clickable by default. If you import this layer in your theme, override `title` to make this clickable")
}
if (this.name === undefined) {
extraProps.push("Not visible in the layer selection by default. If you want to make this layer toggable, override `name`")
}
if (this.mapRendering.length === 0) {
extraProps.push("Not rendered on the map by default. If you want to rendering this on the map, override `mapRenderings`")
}
} else {
extraProps.push("This layer can **not** be included in a theme. It is solely used by [special renderings](SpecialRenderings.md) showing a minimap with custom data.")
}
let usingLayer: BaseUIElement[] = []
if (usedInThemes?.length > 0 && !addedByDefault) {
usingLayer = [new Title("Themes using this layer", 4),
new List((usedInThemes ?? []).map(id => new Link(id, "https://mapcomplete.osm.be/" + id)))
]
}
return new Combine([
new Title(this.id, 3),
addedByDefault ? "**This layer is included automatically in every theme. This layer might contain no points**" : undefined,
new Link("Go to the source code", `../assets/layers/${this.id}/${this.id}.json`),
this.description,
new List(extraProps),
...usingLayer
])
}
public CustomCodeSnippets(): string[] {
if (this.calculatedTags === undefined) {
return [];

View file

@ -160,12 +160,16 @@ export default class LayoutConfig {
if (typeof layer === "string") {
if (AllKnownLayers.sharedLayersJson.get(layer) !== undefined) {
if (json.overrideAll !== undefined) {
let lyr = JSON.parse(JSON.stringify(AllKnownLayers.sharedLayersJson[layer]));
let lyr = JSON.parse(JSON.stringify(AllKnownLayers.sharedLayersJson.get(layer)));
const newLayer = new LayerConfig(Utils.Merge(json.overrideAll, lyr), `${json.id}+overrideAll.layers[${i}]`, official)
result.push(newLayer)
return
} else {
result.push(AllKnownLayers.sharedLayers[layer])
const shared = AllKnownLayers.sharedLayers.get(layer)
if(shared === undefined){
throw `Shared layer ${layer} not found (at ${context}.layers[${i}])`
}
result.push(shared)
return
}
} else {
@ -179,8 +183,7 @@ export default class LayoutConfig {
layer = Utils.Merge(json.overrideAll, layer);
}
// @ts-ignore
const newLayer = new LayerConfig(layer, `${json.id}.layers[${i}]`, official)
result.push(newLayer)
result.push(new LayerConfig(layer, `${json.id}.layers[${i}]`, official))
return
}
@ -204,13 +207,19 @@ export default class LayoutConfig {
if (json.overrideAll !== undefined) {
newLayer = Utils.Merge(json.overrideAll, newLayer);
}
// @ts-ignore
const layerConfig = new LayerConfig(newLayer, `${json.id}.layers[${i}]`, official)
result.push(layerConfig)
result.push(new LayerConfig(newLayer, `${json.id}.layers[${i}]`, official))
return
})
});
// Some special layers which are always included by default
for (const defaultLayer of AllKnownLayers.added_by_default) {
if(result.some(l => l?.id === defaultLayer)){
continue; // Already added
}
result.push(AllKnownLayers.sharedLayers.get(defaultLayer))
}
return {layers: result, extractAllNodes: exportAllNodes}
}