diff --git a/scripts/generateDocs.ts b/scripts/generateDocs.ts index af268b27b6..0e5c303f90 100644 --- a/scripts/generateDocs.ts +++ b/scripts/generateDocs.ts @@ -31,6 +31,7 @@ import MarkdownUtils from "../src/Utils/MarkdownUtils" import { parse as parse_html } from "node-html-parser" import { AvailableRasterLayers } from "../src/Models/RasterLayers" import { ImmutableStore } from "../src/Logic/UIEventSource" +import * as unitUsage from "../Docs/Schemas/UnitConfigJson.schema.json" /** * Converts a markdown-file into a .json file, which a walkthrough/slideshow element can use @@ -268,7 +269,12 @@ export class GenerateDocs extends Script { private generateBuiltinUnits() { const layer = new LayerConfig(unit, "units", true) - const els: string[] = ["## " + layer.id] + const els: string[] = [ + "# Units", + "## How to use", + unitUsage.description, + "Units ", + "## " + layer.id] for (const unit of layer.units) { els.push("### " + unit.quantity) @@ -295,8 +301,8 @@ export class GenerateDocs extends Script { } } - this.WriteMarkdownFile("./Docs/builtin_units.md", ["# Units", ...els].join("\n\n"), [ - `assets/layers/unit/unit.json`, + this.WriteMarkdownFile("./Docs/builtin_units.md", els.join("\n\n"), [ + `assets/layers/unit/unit.json`, `src/Models/ThemeConfig/Json/UnitConfigJson.ts` ]) } diff --git a/scripts/generateTaginfoProjectFiles.ts b/scripts/generateTaginfoProjectFiles.ts index ff566e78e2..03da04ec60 100644 --- a/scripts/generateTaginfoProjectFiles.ts +++ b/scripts/generateTaginfoProjectFiles.ts @@ -74,7 +74,7 @@ function generateLayerUsage(layer: LayerConfig): TagInfoPrototype[] { const usesImageUpload = (tr.render?.txt?.indexOf("image_upload") ?? -2) > 0 if (usesImageCarousel || usesImageUpload) { - const descrNoUpload = `Images are displayed based on the keys image, image:0, image:1,..., panoramax, panoramax:0, panoramx:1, ... , wikidata, wikipedia, wikimedia_commons and mapillary` + const descrNoUpload = `Images are displayed based on the keys image, image:0, image:1,..., panoramax, panoramax:0, panoramx:1, ... , wikidata, wikipedia, wikimedia_commons and mapillary` const descrUpload = `${descrNoUpload} Furthermore, this layer shows images based on the keys panoramax, image, wikidata, wikipedia, wikimedia_commons and mapillary` const shownText = (usesImageUpload ? descrUpload : descrNoUpload) + condition diff --git a/src/Models/ThemeConfig/Conversion/Conversion.ts b/src/Models/ThemeConfig/Conversion/Conversion.ts index cfd6a3a500..5d78757576 100644 --- a/src/Models/ThemeConfig/Conversion/Conversion.ts +++ b/src/Models/ThemeConfig/Conversion/Conversion.ts @@ -151,7 +151,11 @@ export class Each extends Conversion { values[i]?.["id"] !== undefined ? values[i]?.["id"] : "" ) } - const r = step.convert(values[i], c.enter(i)) + let id = "" + if (values[i]?.["id"]) { + id = `(${values[i]?.["id"]})` + } + const r = step.convert(values[i], c.enter(i + id)) result.push(r) } return result diff --git a/src/Models/ThemeConfig/Json/UnitConfigJson.ts b/src/Models/ThemeConfig/Json/UnitConfigJson.ts index 5c95728330..8ac5d25c32 100644 --- a/src/Models/ThemeConfig/Json/UnitConfigJson.ts +++ b/src/Models/ThemeConfig/Json/UnitConfigJson.ts @@ -1,5 +1,5 @@ /** - * In some cases, a value is represented in a certain unit (such as meters for heigt/distance/..., km/h for speed, ...) + * In some cases, a value is represented in a certain unit (such as meters for height/distance/..., km/h for speed, ...) * * Sometimes, multiple denominations are possible (e.g. km/h vs mile/h; megawatt vs kilowatt vs gigawatt for power generators, ...) * @@ -14,9 +14,9 @@ * * # Usage * - * First of all, you define which keys have units applied, for example: + * First of all, you define which keys have units applied. This can be done centrally in the layer: * - * ``` + * ```json * units: [ * appliesTo: ["maxspeed", "maxspeed:hgv", "maxspeed:bus"] * applicableUnits: [ diff --git a/src/Models/ThemeConfig/TagRenderingConfig.ts b/src/Models/ThemeConfig/TagRenderingConfig.ts index 668a67b31b..d50296feb2 100644 --- a/src/Models/ThemeConfig/TagRenderingConfig.ts +++ b/src/Models/ThemeConfig/TagRenderingConfig.ts @@ -197,7 +197,7 @@ export default class TagRenderingConfig { json.freeform.key, Validators.availableTypes, (s) => s - )}` + )}. See https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/Docs/SpecialInputElements.md for more information` } const type: ValidatorType = json.freeform.type ?? "string" diff --git a/src/UI/InputElement/Validators/OpeningHoursValidator.ts b/src/UI/InputElement/Validators/OpeningHoursValidator.ts index a5956ed600..66990aaeb5 100644 --- a/src/UI/InputElement/Validators/OpeningHoursValidator.ts +++ b/src/UI/InputElement/Validators/OpeningHoursValidator.ts @@ -7,7 +7,7 @@ export default class OpeningHoursValidator extends Validator { "opening_hours", [ "Has extra elements to easily input when a POI is opened.", - "### Helper arguments", + "#### Helper arguments", "Only one helper argument named `options` can be provided. It is a JSON-object of type `{ prefix: string, postfix: string }`:", MarkdownUtils.table( ["subarg", "doc"], @@ -22,7 +22,7 @@ export default class OpeningHoursValidator extends Validator { ], ] ), - "### Example usage", + "#### Example usage", "To add a conditional (based on time) access restriction:\n\n```\n" + ` "freeform": { diff --git a/src/UI/InputElement/Validators/WikidataValidator.ts b/src/UI/InputElement/Validators/WikidataValidator.ts index 7a2d0b4aa9..acbaf9ffc1 100644 --- a/src/UI/InputElement/Validators/WikidataValidator.ts +++ b/src/UI/InputElement/Validators/WikidataValidator.ts @@ -1,17 +1,14 @@ -import Combine from "../../Base/Combine" import Wikidata, { WikidataResponse } from "../../../Logic/Web/Wikidata" import { Validator } from "../Validator" import { Translation } from "../../i18n/Translation" import Translations from "../../i18n/Translations" -import Title from "../../Base/Title" -import Table from "../../Base/Table" import MarkdownUtils from "../../../Utils/MarkdownUtils" export default class WikidataValidator extends Validator { public static readonly _searchCache = new Map>() - public static docs = [ - "### Helper arguments", + private static docs = [ + "#### Helper arguments", MarkdownUtils.table( ["name", "doc"], [ @@ -25,7 +22,7 @@ export default class WikidataValidator extends Validator { ], ] ), - "#### Suboptions", + "##### Suboptions", MarkdownUtils.table( ["subarg", "doc"], [ @@ -50,7 +47,7 @@ export default class WikidataValidator extends Validator { ), ].join("\n\n") private static readonly docsExampleUsage: string = - "### Example usage\n\n" + + "#### Example usage\n\n" + `The following is the 'freeform'-part of a layer config which will trigger a search for the wikidata item corresponding with the name of the selected feature. It will also remove '-street', '-square', ... if found at the end of the name \`\`\`json @@ -113,7 +110,7 @@ Another example is to search for species and trees: return !str.split(";").some((str) => Wikidata.ExtractKey(str) === undefined) } - getFeedback(s: string, _?: () => string): Translation | undefined { + getFeedback(s: string): Translation | undefined { const t = Translations.t.validation.wikidata if (s === "") { return t.empty