mapcomplete/UI/QueryParameterDocumentation.ts

79 lines
3.1 KiB
TypeScript
Raw Normal View History

2022-09-08 21:40:48 +02:00
import BaseUIElement from "./BaseUIElement"
import Combine from "./Base/Combine"
import Title from "./Base/Title"
import List from "./Base/List"
import Translations from "./i18n/Translations"
import { QueryParameters } from "../Logic/Web/QueryParameters"
import FeatureSwitchState from "../Logic/State/FeatureSwitchState"
import LayoutConfig from "../Models/ThemeConfig/LayoutConfig"
import { DefaultGuiState } from "./DefaultGuiState"
2021-11-30 22:50:48 +01:00
export default class QueryParameterDocumentation {
2022-09-08 21:40:48 +02:00
private static QueryParamDocsIntro = [
2021-11-30 22:50:48 +01:00
new Title("URL-parameters and URL-hash", 1),
"This document gives an overview of which URL-parameters can be used to influence MapComplete.",
new Title("What is a URL parameter?", 2),
2022-09-08 21:40:48 +02:00
'"URL-parameters are extra parts of the URL used to set the state.',
2021-11-30 22:50:48 +01:00
"For example, if the url is `https://mapcomplete.osm.be/cyclofix?lat=51.0&lon=4.3&z=5&test=true#node/1234`, " +
2022-09-08 21:40:48 +02:00
"the URL-parameters are stated in the part between the `?` and the `#`. There are multiple, all separated by `&`, namely: ",
new List(
[
2021-11-30 22:50:48 +01:00
"The url-parameter `lat` is `51.0` in this instance",
"The url-parameter `lon` is `4.3` in this instance",
"The url-parameter `z` is `5` in this instance",
2022-09-08 21:40:48 +02:00
"The url-parameter `test` is `true` in this instance",
].map((s) => Translations.W(s))
2021-11-30 22:50:48 +01:00
),
2022-09-08 21:40:48 +02:00
"Finally, the URL-hash is the part after the `#`. It is `node/1234` in this case.",
]
2022-01-26 21:40:38 +01:00
public static UrlParamDocs(): Map<string, string> {
2022-05-18 01:56:09 +02:00
const dummyLayout = new LayoutConfig({
id: "&gt;theme&lt;",
2022-09-08 21:40:48 +02:00
title: { en: "<theme>" },
2022-05-18 01:56:09 +02:00
description: "A theme to generate docs with",
socialImage: "./assets/SocialImage.png",
startLat: 0,
startLon: 0,
startZoom: 0,
icon: undefined,
layers: [
{
name: "<layer>",
id: "&lt;layer&gt;",
source: {
2022-09-08 21:40:48 +02:00
osmTags: "id~*",
2022-05-18 01:56:09 +02:00
},
mapRendering: null,
2022-09-08 21:40:48 +02:00
},
],
2022-05-18 01:56:09 +02:00
})
2022-09-08 21:40:48 +02:00
new DefaultGuiState() // Init a featureSwitchState to init all the parameters
2022-05-18 01:56:09 +02:00
new FeatureSwitchState(dummyLayout)
2022-09-08 21:40:48 +02:00
QueryParameters.GetQueryParameter(
"layer-&lt;layer-id&gt;",
"true",
"Wether or not the layer with id <layer-id> is shown"
)
2022-05-18 01:56:09 +02:00
return QueryParameters.documentation
}
2021-11-30 22:50:48 +01:00
public static GenerateQueryParameterDocs(): BaseUIElement {
2022-09-08 21:40:48 +02:00
const docs: (string | BaseUIElement)[] = [
...QueryParameterDocumentation.QueryParamDocsIntro,
]
this.UrlParamDocs().forEach((value, key) => {
2021-11-30 22:50:48 +01:00
const c = new Combine([
new Title(key, 2),
value,
2022-09-08 21:40:48 +02:00
QueryParameters.defaults[key] === undefined
? "No default value set"
: `The default value is _${QueryParameters.defaults[key]}_`,
2021-11-30 22:50:48 +01:00
])
docs.push(c)
})
2021-11-30 22:50:48 +01:00
return new Combine(docs).SetClass("flex flex-col")
}
2022-09-08 21:40:48 +02:00
}