diff --git a/langs/en.json b/langs/en.json
index 1b3afef9e2..03c33ba8f3 100644
--- a/langs/en.json
+++ b/langs/en.json
@@ -779,6 +779,14 @@
"missing": "{count} untranslated strings",
"notImmediate": "Translations are not updated directly. This typically takes a few days"
},
+ "unknown": {
+ "clear": "Clear answer",
+ "explanation": "Clear this bit of information if the current answer is incorrect but the actual value is not known. No other information will be removed.",
+ "keep": "Keep answer",
+ "markUnknown": "Mark as unknown",
+ "removedKeys": "The following keys will be removed:",
+ "title": "Mark as unknown?"
+ },
"userinfo": {
"gotoInbox": "Open your inbox",
"gotoSettings": "Go to your settings on OpenStreetMap.org",
diff --git a/langs/layers/en.json b/langs/layers/en.json
index a985eba4e8..b4e12d146d 100644
--- a/langs/layers/en.json
+++ b/langs/layers/en.json
@@ -3027,6 +3027,7 @@
"climbing_opportunity": {
"description": "Fallback layer with items on which climbing _might_ be possible. It is loaded when zoomed in a lot, to prevent duplicate items to be added",
"name": "Climbing opportunities?",
+ "snapName": "a wall, cliff or rock",
"tagRenderings": {
"climbing-opportunity-name": {
"render": "{name}"
@@ -3428,6 +3429,7 @@
"cycleways_and_roads": {
"description": "All infrastructure that someone can cycle over, accompanied with questions about this infrastructure",
"name": "Cycleways and roads",
+ "snapName": "a road or a cycleway",
"tagRenderings": {
"Cycleway type for a road": {
"mappings": {
@@ -5907,6 +5909,7 @@
"indoors": {
"description": "Basic indoor mapping: shows room outlines",
"name": "Indoors",
+ "snapName": "an indoor wall",
"tagRenderings": {
"name": {
"freeform": {
@@ -6076,6 +6079,7 @@
"title": "a kerb"
}
},
+ "snapName": "a kerb",
"tagRenderings": {
"kerb-height": {
"freeform": {
@@ -7293,7 +7297,8 @@
},
"pedestrian_path": {
"description": "Pedestrian footpaths, especially used for indoor navigation and snapping entrances to this layer",
- "name": "Pedestrian paths"
+ "name": "Pedestrian paths",
+ "snapName": "a pedestrian path"
},
"pharmacy": {
"description": "A layer showing pharmacies, which (probably) dispense prescription drugs",
@@ -9034,6 +9039,7 @@
"shelter": {
"description": "Layer showing shelter structures",
"name": "Shelter",
+ "snapName": "a shelter",
"tagRenderings": {
"shelter-type": {
"mappings": {
diff --git a/langs/layers/nl.json b/langs/layers/nl.json
index 59d6c7fdac..6a27218b78 100644
--- a/langs/layers/nl.json
+++ b/langs/layers/nl.json
@@ -2960,6 +2960,7 @@
"cycleways_and_roads": {
"description": "Alle infrastructuur waar je over kunt fietsen, met vragen over die infrastructuur",
"name": "Fietspaden, straten en wegen",
+ "snapName": "een weg, straat of fietspad",
"tagRenderings": {
"Cycleway type for a road": {
"mappings": {
@@ -4910,6 +4911,7 @@
"indoors": {
"description": "Een basis voor indoor-navigatie: toont binnenruimtes",
"name": "Binnenruimtes",
+ "snapName": "een binnenmuur",
"tagRenderings": {
"name": {
"freeform": {
diff --git a/package.json b/package.json
index 975c3ef105..dbc8e02845 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "mapcomplete",
- "version": "0.46.2",
+ "version": "0.46.3",
"repository": "https://github.com/pietervdvn/MapComplete",
"description": "A small website to edit OSM easily",
"bugs": "https://github.com/pietervdvn/MapComplete/issues",
diff --git a/src/Models/ThemeConfig/TagRenderingConfig.ts b/src/Models/ThemeConfig/TagRenderingConfig.ts
index 1adc633476..b37997be08 100644
--- a/src/Models/ThemeConfig/TagRenderingConfig.ts
+++ b/src/Models/ThemeConfig/TagRenderingConfig.ts
@@ -84,7 +84,7 @@ export default class TagRenderingConfig {
| string
| TagRenderingConfigJson
| (QuestionableTagRenderingConfigJson & { questionHintIsMd?: boolean }),
- context?: string
+ context?: string,
) {
let json = config
if (json === undefined) {
@@ -143,7 +143,7 @@ export default class TagRenderingConfig {
this.description = Translations.T(json.description, translationKey + ".description")
this.editButtonAriaLabel = Translations.T(
json.editButtonAriaLabel,
- translationKey + ".editButtonAriaLabel"
+ translationKey + ".editButtonAriaLabel",
)
this.condition = TagUtils.Tag(json.condition ?? { and: [] }, `${context}.condition`)
@@ -159,7 +159,7 @@ export default class TagRenderingConfig {
}
this.metacondition = TagUtils.Tag(
json.metacondition ?? { and: [] },
- `${context}.metacondition`
+ `${context}.metacondition`,
)
if (json.freeform) {
if (
@@ -177,7 +177,7 @@ export default class TagRenderingConfig {
}, perhaps you meant ${Utils.sortedByLevenshteinDistance(
json.freeform.key,
Validators.availableTypes,
- (s) => s
+ (s) => s,
)}`
}
const type: ValidatorType = json.freeform.type ?? "string"
@@ -199,7 +199,7 @@ export default class TagRenderingConfig {
placeholder,
addExtraTags:
json.freeform.addExtraTags?.map((tg, i) =>
- TagUtils.ParseUploadableTag(tg, `${context}.extratag[${i}]`)
+ TagUtils.ParseUploadableTag(tg, `${context}.extratag[${i}]`),
) ?? [],
inline: json.freeform.inline ?? false,
default: json.freeform.default,
@@ -265,8 +265,8 @@ export default class TagRenderingConfig {
context,
this.multiAnswer,
this.question !== undefined,
- commonIconSize
- )
+ commonIconSize,
+ ),
)
} else {
this.mappings = []
@@ -292,7 +292,7 @@ export default class TagRenderingConfig {
for (const expectedKey of keys) {
if (usedKeys.indexOf(expectedKey) < 0) {
const msg = `${context}.mappings[${i}]: This mapping only defines values for ${usedKeys.join(
- ", "
+ ", ",
)}, but it should also give a value for ${expectedKey}`
this.configuration_warnings.push(msg)
}
@@ -339,7 +339,7 @@ export default class TagRenderingConfig {
context: string,
multiAnswer?: boolean,
isQuestionable?: boolean,
- commonSize: string = "small"
+ commonSize: string = "small",
): Mapping {
const ctx = `${translationKey}.mappings.${i}`
if (mapping.if === undefined) {
@@ -348,7 +348,7 @@ export default class TagRenderingConfig {
if (mapping.then === undefined) {
if (mapping["render"] !== undefined) {
throw `${ctx}: Invalid mapping: no 'then'-clause found. You might have typed 'render' instead of 'then', change it in ${JSON.stringify(
- mapping
+ mapping,
)}`
}
throw `${ctx}: Invalid mapping: no 'then'-clause found in ${JSON.stringify(mapping)}`
@@ -359,7 +359,7 @@ export default class TagRenderingConfig {
if (mapping["render"] !== undefined) {
throw `${ctx}: Invalid mapping: a 'render'-key is present, this is probably a bug: ${JSON.stringify(
- mapping
+ mapping,
)}`
}
if (typeof mapping.if !== "string" && mapping.if["length"] !== undefined) {
@@ -382,11 +382,11 @@ export default class TagRenderingConfig {
} else if (mapping.hideInAnswer !== undefined) {
hideInAnswer = TagUtils.Tag(
mapping.hideInAnswer,
- `${context}.mapping[${i}].hideInAnswer`
+ `${context}.mapping[${i}].hideInAnswer`,
)
}
const addExtraTags = (mapping.addExtraTags ?? []).map((str, j) =>
- TagUtils.SimpleTag(str, `${ctx}.addExtraTags[${j}]`)
+ TagUtils.SimpleTag(str, `${ctx}.addExtraTags[${j}]`),
)
if (hideInAnswer === true && addExtraTags.length > 0) {
throw `${ctx}: Invalid mapping: 'hideInAnswer' is set to 'true', but 'addExtraTags' is enabled as well. This means that extra tags will be applied if this mapping is chosen as answer, but it cannot be chosen as answer. This either indicates a thought error or obsolete code that must be removed.`
@@ -482,7 +482,7 @@ export default class TagRenderingConfig {
* @constructor
*/
public GetRenderValues(
- tags: Record
+ tags: Record,
): { then: Translation; icon?: string; iconClass?: string }[] {
if (!this.multiAnswer) {
return [this.GetRenderValueWithImage(tags)]
@@ -505,7 +505,7 @@ export default class TagRenderingConfig {
return mapping
}
return undefined
- })
+ }),
)
if (freeformKeyDefined && tags[this.freeform.key] !== undefined) {
@@ -513,7 +513,7 @@ export default class TagRenderingConfig {
applicableMappings
?.flatMap((m) => m.if?.usedTags() ?? [])
?.filter((kv) => kv.key === this.freeform.key)
- ?.map((kv) => kv.value)
+ ?.map((kv) => kv.value),
)
const freeformValues = tags[this.freeform.key].split(";")
@@ -522,7 +522,7 @@ export default class TagRenderingConfig {
applicableMappings.push({
then: new TypedTranslation