forked from MapComplete/MapComplete
chore: automated housekeeping...
This commit is contained in:
parent
e33d448055
commit
d2134668b1
25 changed files with 109 additions and 171 deletions
|
@ -211,7 +211,6 @@ The question is `What is the corresponding Wikidata entity?`
|
|||
The question is `What does this artwork depict?`
|
||||
*This artwork depicts {wikidata_label(subject:wikidata)}{wikipedia(subject:wikidata)}* is shown if `subject:wikidata` is set
|
||||
|
||||
This tagrendering is only visible in the popup if the following condition is met: subject:wikidata~.+
|
||||
This tagrendering has labels
|
||||
`artwork-question`
|
||||
|
||||
|
|
|
@ -214,7 +214,6 @@ The question is `What is the corresponding Wikidata entity?`
|
|||
The question is `What does this artwork depict?`
|
||||
*This artwork depicts {wikidata_label(subject:wikidata)}{wikipedia(subject:wikidata)}* is shown if `subject:wikidata` is set
|
||||
|
||||
This tagrendering is only visible in the popup if the following condition is met: subject:wikidata~.+
|
||||
This tagrendering has labels
|
||||
`artwork-question`
|
||||
|
||||
|
|
|
@ -1,67 +0,0 @@
|
|||
[//]: # (WARNING: this file is automatically generated. Please find the sources at the bottom and edit those sources)
|
||||
|
||||
# crab_address
|
||||
|
||||
Address data for Flanders by the governement, suited for import into OpenStreetMap. Datadump from 2021-10-26. This layer contains only visualisation logic. Import buttons should be added via an override. Note that HNRLABEL contains the original value, whereas _HNRLABEL contains a slightly cleaned version
|
||||
|
||||
- This layer is shown at zoomlevel **0** and higher
|
||||
- <img src='../warning.svg' height='1rem'/>
|
||||
|
||||
This layer is loaded from an external source, namely
|
||||
|
||||
`https://raw.githubusercontent.com/pietervdvn/MapComplete-data/main/CRAB_2021_10_26/tile_{z}_{x}_{y}.geojson`
|
||||
|
||||
## Table of contents
|
||||
|
||||
1. [Themes using this layer](#themes-using-this-layer)
|
||||
2. [Basic tags for this layer](#basic-tags-for-this-layer)
|
||||
3. [Supported attributes](#supported-attributes)
|
||||
4. [Featureview elements and TagRenderings](#featureview-elements-and-tagrenderings)
|
||||
- [render_crab](#render_crab)
|
||||
- [leftover-questions](#leftover-questions)
|
||||
- [lod](#lod)
|
||||
|
||||
## Themes using this layer
|
||||
|
||||
- [grb](https://mapcomplete.org/grb)
|
||||
|
||||
## Basic tags for this layer
|
||||
|
||||
Elements must match the expression **HUISNR~.+**
|
||||
|
||||
[Execute on overpass](http://overpass-turbo.eu/?Q=%5Bout%3Ajson%5D%5Btimeout%3A90%5D%3B%28%20%20%20%20nwr%5B%22HUISNR%22%5D%28%7B%7Bbbox%7D%7D%29%3B%0A%29%3Bout%20body%3B%3E%3Bout%20skel%20qt%3B)
|
||||
|
||||
## Supported attributes
|
||||
|
||||
## Featureview elements and TagRenderings
|
||||
|
||||
| id | question | labels | freeform key |
|
||||
-----|-----|-----|----- |
|
||||
| [render_crab](#render_crab) | _Volgens het CRAB ligt hier <b>{STRAATNM}</b> {HUISNR} (label: {HNRLABEL})_ | | _Multiple choice only_ |
|
||||
| [leftover-questions](#leftover-questions) | _{questions( ,hidden)}_ | ignore-docs, added_by_default | _Multiple choice only_ |
|
||||
| [lod](#lod) <br/> _(Original in [questions](./BuiltinQuestions.md#lod))_ | _{linked_data_from_website()}_ | added_by_default | _Multiple choice only_ |
|
||||
|
||||
### render_crab
|
||||
|
||||
_This tagrendering has no question and is thus read-only_
|
||||
*Volgens het CRAB ligt hier <b>{STRAATNM}</b> {HUISNR} (label: {HNRLABEL})*
|
||||
|
||||
### leftover-questions
|
||||
|
||||
_This tagrendering has no question and is thus read-only_
|
||||
*{questions( ,hidden)}*
|
||||
|
||||
This tagrendering has labels
|
||||
`ignore-docs`
|
||||
`added_by_default`
|
||||
|
||||
### lod
|
||||
|
||||
_This tagrendering has no question and is thus read-only_
|
||||
*{linked_data_from_website()}*
|
||||
|
||||
This tagrendering has labels
|
||||
`added_by_default`
|
||||
|
||||
|
||||
This document is autogenerated from [assets/layers/crab_address/crab_address.json](https://source.mapcomplete.org/MapComplete/MapComplete/src/branch/develop/assets/layers/crab_address/crab_address.json)
|
|
@ -418,7 +418,6 @@ The question is `What is the corresponding Wikidata entity?`
|
|||
The question is `What does this artwork depict?`
|
||||
*This artwork depicts {wikidata_label(subject:wikidata)}{wikipedia(subject:wikidata)}* is shown if `subject:wikidata` is set
|
||||
|
||||
This tagrendering is only visible in the popup if the following condition is met: subject:wikidata~.+
|
||||
This tagrendering has labels
|
||||
`artwork-question`
|
||||
|
||||
|
|
|
@ -13,7 +13,6 @@ This theme contains the following layers:
|
|||
- [service_ways (defined in this theme)](#service_ways)
|
||||
- [generic_osm_object (defined in this theme)](#generic_osm_object)
|
||||
- [address](../Layers/address.md)
|
||||
- [crab_address](../Layers/crab_address.md)
|
||||
- [current_view](../Layers/current_view.md)
|
||||
|
||||
Available languages:
|
||||
|
|
|
@ -419,7 +419,7 @@ The default value is _false_
|
|||
|
||||
The mode the application starts in, e.g. 'map', 'dashboard' or 'statistics'
|
||||
|
||||
This documentation is defined in the source code at [generateDocs.ts](ervdvn/git2/MapComplete/scripts/generateDocs.ts#L452)
|
||||
This documentation is defined in the source code at [generateDocs.ts](ervdvn/git2/MapComplete/scripts/generateDocs.ts#L455)
|
||||
|
||||
The default value is _map_
|
||||
|
||||
|
|
6
package-lock.json
generated
6
package-lock.json
generated
|
@ -12112,9 +12112,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/caniuse-lite": {
|
||||
"version": "1.0.30001716",
|
||||
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001716.tgz",
|
||||
"integrity": "sha512-49/c1+x3Kwz7ZIWt+4DvK3aMJy9oYXXG6/97JKsnjdCk/6n9vVyWL8NAwVt95Lwt9eigI10Hl782kDfZUUlRXw==",
|
||||
"version": "1.0.30001717",
|
||||
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001717.tgz",
|
||||
"integrity": "sha512-auPpttCq6BDEG8ZAuHJIplGw6GODhjw+/11e7IjpnYCxZcW/ONgPs0KVBJ0d1bY3e2+7PRe5RCLyP+PfwVgkYw==",
|
||||
"dev": true,
|
||||
"funding": [
|
||||
{
|
||||
|
|
|
@ -186,7 +186,13 @@ class VeloParkToGeojson extends Script {
|
|||
[6.15665815596, 51.4750237087],
|
||||
])
|
||||
|
||||
const alreadyLinkedQuery = new Overpass(Constants.defaultOverpassUrls[0], new RegexTag("ref:velopark", /.+/), [], new ImmutableStore(60 * 5), false)
|
||||
const alreadyLinkedQuery = new Overpass(
|
||||
Constants.defaultOverpassUrls[0],
|
||||
new RegexTag("ref:velopark", /.+/),
|
||||
[],
|
||||
new ImmutableStore(60 * 5),
|
||||
false
|
||||
)
|
||||
const alreadyLinkedFeatures = (await alreadyLinkedQuery.queryGeoJson(bboxBelgium))[0]
|
||||
const seenIds = new Set<string>(
|
||||
alreadyLinkedFeatures.features.map((f) => f.properties?.["ref:velopark"])
|
||||
|
|
|
@ -9,7 +9,7 @@ import { TagsFilter } from "../../Tags/TagsFilter"
|
|||
import { BBox } from "../../BBox"
|
||||
import { OsmTags } from "../../../Models/OsmFeature"
|
||||
|
||||
("use strict")
|
||||
;("use strict")
|
||||
|
||||
/**
|
||||
* A wrapper around the 'Overpass'-object.
|
||||
|
|
|
@ -286,7 +286,7 @@ export class ImageUploadManager {
|
|||
let absoluteUrl: string
|
||||
|
||||
try {
|
||||
({ key, value, absoluteUrl } = await this._uploader.uploadImage(
|
||||
;({ key, value, absoluteUrl } = await this._uploader.uploadImage(
|
||||
blob,
|
||||
location,
|
||||
author,
|
||||
|
|
|
@ -6,7 +6,7 @@ import osmtogeojson from "osmtogeojson"
|
|||
import { FeatureCollection, Geometry } from "geojson"
|
||||
import { OsmTags } from "../../Models/OsmFeature"
|
||||
|
||||
("use strict")
|
||||
;("use strict")
|
||||
/**
|
||||
* Interfaces overpass to get all the latest data
|
||||
*/
|
||||
|
|
|
@ -190,7 +190,7 @@ class ImagesFromPanoramaxFetcher implements ImageFetcher {
|
|||
provider: "panoramax",
|
||||
direction: imageData.properties["view:azimuth"],
|
||||
osmTags: {
|
||||
panoramax: imageData.id
|
||||
panoramax: imageData.id,
|
||||
},
|
||||
thumbUrl: imageData.assets.thumb.href,
|
||||
date: new Date(imageData.properties.datetime).getTime(),
|
||||
|
@ -199,22 +199,26 @@ class ImagesFromPanoramaxFetcher implements ImageFetcher {
|
|||
detailsUrl: imageData.id,
|
||||
details: {
|
||||
isSpherical:
|
||||
imageData.properties["exif"]["Xmp.GPano.ProjectionType"] === "equirectangular"
|
||||
}
|
||||
imageData.properties["exif"]["Xmp.GPano.ProjectionType"] === "equirectangular",
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
public async fetchImages(lat: number, lon: number): Promise<P4CPicture[]> {
|
||||
const radiusSettings = [{
|
||||
place_fov_tolerance: 180,
|
||||
radius: 15
|
||||
}, {
|
||||
place_fov_tolerance: 180,
|
||||
radius: 25
|
||||
}, {
|
||||
place_fov_tolerance: 90,
|
||||
radius: 50
|
||||
}]
|
||||
const radiusSettings = [
|
||||
{
|
||||
place_fov_tolerance: 180,
|
||||
radius: 15,
|
||||
},
|
||||
{
|
||||
place_fov_tolerance: 180,
|
||||
radius: 25,
|
||||
},
|
||||
{
|
||||
place_fov_tolerance: 90,
|
||||
radius: 50,
|
||||
},
|
||||
]
|
||||
const promises: Promise<ImageData[]>[] = []
|
||||
const maxRadius = this._radius
|
||||
let prevRadius = 0
|
||||
|
@ -223,7 +227,7 @@ class ImagesFromPanoramaxFetcher implements ImageFetcher {
|
|||
place: [lon, lat],
|
||||
place_distance: [prevRadius, Math.min(maxRadius, radiusSetting.radius)],
|
||||
place_fov_tolerance: radiusSetting.place_fov_tolerance,
|
||||
limit: 50
|
||||
limit: 50,
|
||||
})
|
||||
promises.push(promise)
|
||||
prevRadius = radiusSetting.radius
|
||||
|
|
|
@ -16,15 +16,23 @@ export default class PlantNet {
|
|||
url += "&images=" + encodeURIComponent(image)
|
||||
}
|
||||
|
||||
const result = await Utils.downloadJsonCachedAdvanced(url, 365 * 24 * 60 * 60 * 1000, undefined, true, 1)
|
||||
const result = await Utils.downloadJsonCachedAdvanced(
|
||||
url,
|
||||
365 * 24 * 60 * 60 * 1000,
|
||||
undefined,
|
||||
true,
|
||||
1
|
||||
)
|
||||
if (result["content"]) {
|
||||
return result["content"]
|
||||
}
|
||||
const errResult = <{
|
||||
"statusCode": 404,
|
||||
"error": "Not Found",
|
||||
"message": "Species not found" | string
|
||||
}>JSON.parse(result["errContent"])
|
||||
const errResult = <
|
||||
{
|
||||
statusCode: 404
|
||||
error: "Not Found"
|
||||
message: "Species not found" | string
|
||||
}
|
||||
>JSON.parse(result["errContent"])
|
||||
if (errResult.message === "Species not found") {
|
||||
return "no_plant_detected"
|
||||
}
|
||||
|
@ -32,7 +40,6 @@ export default class PlantNet {
|
|||
console.log("Get error result:", err, ">>>>", result["errContent"])
|
||||
throw err
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
export interface PlantNetSpeciesMatch {
|
||||
|
|
|
@ -105,7 +105,14 @@ export default class ThemeViewStateHashActor {
|
|||
if (found.properties.id.startsWith("last_click")) {
|
||||
return true
|
||||
}
|
||||
console.log("Setting selected element based on hash", hash, "; found", found, "current:", selectedElement.data?.properties?.id)
|
||||
console.log(
|
||||
"Setting selected element based on hash",
|
||||
hash,
|
||||
"; found",
|
||||
found,
|
||||
"current:",
|
||||
selectedElement.data?.properties?.id
|
||||
)
|
||||
selectedElement.setData(found)
|
||||
return true
|
||||
}
|
||||
|
|
|
@ -124,7 +124,7 @@ export default class DependencyCalculator {
|
|||
"] which calculates the value for " +
|
||||
currentKey,
|
||||
neededBy: layer.id,
|
||||
checkHasSnapName: false
|
||||
checkHasSnapName: false,
|
||||
})
|
||||
|
||||
return []
|
||||
|
@ -132,7 +132,7 @@ export default class DependencyCalculator {
|
|||
const params: ExtraFuncParams = {
|
||||
getFeatureById: () => undefined,
|
||||
getFeaturesWithin: detectNearyFeatures,
|
||||
getProbablyOverlapsWith: detectNearyFeatures
|
||||
getProbablyOverlapsWith: detectNearyFeatures,
|
||||
}
|
||||
const helpers = ExtraFunctions.constructHelpers(params)
|
||||
// ... Run the calculated tag code, which will trigger the getFeaturesWithin above...
|
||||
|
|
|
@ -105,9 +105,9 @@
|
|||
<Tr t={t.addPicture} />
|
||||
{/if}
|
||||
{#if noBlur}
|
||||
<span class="subtle text-sm">
|
||||
<Tr t={t.upload.noBlur} />
|
||||
</span>
|
||||
<span class="subtle text-sm">
|
||||
<Tr t={t.upload.noBlur} />
|
||||
</span>
|
||||
{/if}
|
||||
</div>
|
||||
</div>
|
||||
|
@ -124,20 +124,21 @@
|
|||
}}
|
||||
>
|
||||
<div class="hidden md:block">
|
||||
|
||||
<div class="flex w-full">
|
||||
{#if image !== undefined}
|
||||
<img alt="" src={image} aria-hidden="true" />
|
||||
{:else}
|
||||
<Camera class="h-12 w-12 p-1" aria-hidden="true" />
|
||||
{/if}
|
||||
<ArrowUpTray class="w-6 h-6 p-0.5 bg-white rounded-full self-end" style="margin-left: -1rem" />
|
||||
<ArrowUpTray
|
||||
class="h-6 w-6 self-end rounded-full bg-white p-0.5"
|
||||
style="margin-left: -1rem"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="flex flex-col ">
|
||||
|
||||
<div class="flex flex-col">
|
||||
{#if labelText}
|
||||
<div class="md:text-2xl text-center ">
|
||||
<div class="text-center md:text-2xl">
|
||||
{labelText}
|
||||
</div>
|
||||
<Tr t={t.selectFile} />
|
||||
|
@ -145,12 +146,11 @@
|
|||
<Tr cls="md:text-2xl text-center" t={t.selectFile} />
|
||||
{/if}
|
||||
{#if noBlur}
|
||||
<span class="subtle text-sm">
|
||||
<Tr t={t.upload.noBlur} />
|
||||
</span>
|
||||
<span class="subtle text-sm">
|
||||
<Tr t={t.upload.noBlur} />
|
||||
</span>
|
||||
{/if}
|
||||
</div>
|
||||
|
||||
</FileSelector>
|
||||
|
||||
<div class="subtle text-xs italic">
|
||||
|
|
|
@ -54,9 +54,8 @@
|
|||
{#if $pending - $failed > 0}
|
||||
<div class="alert">
|
||||
<Loading>
|
||||
<div class="w-full flex flex-col">
|
||||
|
||||
<div class="w-full flex justify-between gap-x-8">
|
||||
<div class="flex w-full flex-col">
|
||||
<div class="flex w-full justify-between gap-x-8">
|
||||
{#if $pending - $failed === 1}
|
||||
<Tr t={t.upload.one.uploading} />
|
||||
{:else if $pending - $failed > 1}
|
||||
|
@ -67,8 +66,8 @@
|
|||
{/if}
|
||||
</div>
|
||||
{#if $progress !== undefined}
|
||||
<div class="w-full low-interaction h-1 rounded-full overflow-hidden">
|
||||
<div class="bg-black h-1" style={`width: calc(${$progress}%)`}></div>
|
||||
<div class="low-interaction h-1 w-full overflow-hidden rounded-full">
|
||||
<div class="h-1 bg-black" style={`width: calc(${$progress}%)`} />
|
||||
</div>
|
||||
{/if}
|
||||
</div>
|
||||
|
|
|
@ -135,8 +135,11 @@
|
|||
|
||||
step.setData("loading")
|
||||
featuresStore.set([])
|
||||
const overpass = new Overpass(Constants.defaultOverpassUrls[0], undefined,
|
||||
user.split(";").map((user) => "nw(user_touched:\"" + user + "\");"))
|
||||
const overpass = new Overpass(
|
||||
Constants.defaultOverpassUrls[0],
|
||||
undefined,
|
||||
user.split(";").map((user) => 'nw(user_touched:"' + user + '");')
|
||||
)
|
||||
if (!maplibremap.bounds.data) {
|
||||
return
|
||||
}
|
||||
|
|
|
@ -48,7 +48,9 @@
|
|||
error = undefined
|
||||
running = true
|
||||
try {
|
||||
const result: PlantNetResult | "no_plant_detected" = await PlantNet.query(imageUrls.data.slice(0, 5))
|
||||
const result: PlantNetResult | "no_plant_detected" = await PlantNet.query(
|
||||
imageUrls.data.slice(0, 5)
|
||||
)
|
||||
if (result === "no_plant_detected") {
|
||||
error = "no_plant_detected"
|
||||
expandExplanation = true
|
||||
|
@ -65,26 +67,22 @@
|
|||
}
|
||||
</script>
|
||||
|
||||
<div class="flex flex-col mb-4">
|
||||
|
||||
<div class="mb-4 flex flex-col">
|
||||
<!-- Error message -->
|
||||
{#if error === "no_plant_detected"}
|
||||
<Tr cls="alert" t={t.noPlantDetected} />
|
||||
|
||||
{:else if error !== undefined}
|
||||
<Tr cls="alert" t={t.error.Subs({ error })} />
|
||||
{/if}
|
||||
|
||||
|
||||
<!-- Button. If 'done==false', the button should be shown, otherwise <PlantnetSpeciesList> will handle the flow -->
|
||||
{#if !done && !running && !selectedOption}
|
||||
<button class="w-full flex" on:click={detectSpecies}>
|
||||
<Plantnet_logo class="mr-2 shrink-0 h-8 w-8 rounded-full bg-white p-1" />
|
||||
<button class="flex w-full" on:click={detectSpecies}>
|
||||
<Plantnet_logo class="mr-2 h-8 w-8 shrink-0 rounded-full bg-white p-1" />
|
||||
<span class="flex flex-col items-center">
|
||||
<Tr t={t.button} />
|
||||
{#if error !== undefined}
|
||||
<div class="flex subtle mt-2">
|
||||
|
||||
<div class="subtle mt-2 flex">
|
||||
<ArrowPath class="h-6 w-6" />
|
||||
<Tr t={Translations.t.general.retry} />
|
||||
</div>
|
||||
|
@ -100,7 +98,9 @@
|
|||
<XCircleIcon
|
||||
slot="upper-right"
|
||||
class="m-4 h-8 w-8 cursor-pointer"
|
||||
on:click={() => {running = false}}
|
||||
on:click={() => {
|
||||
running = false
|
||||
}}
|
||||
/>
|
||||
</PlantNetSpeciesList>
|
||||
{:else if !done}
|
||||
|
@ -143,13 +143,12 @@
|
|||
{/if}
|
||||
|
||||
<!-- Explanation -->
|
||||
<div class="my-1 low-interaction">
|
||||
|
||||
<div class="low-interaction my-1">
|
||||
<AccordionSingle noBorder expanded={expandExplanation}>
|
||||
<div class="subtle flex justify-start text-sm p-1" slot="header">
|
||||
<div class="subtle flex justify-start p-1 text-sm" slot="header">
|
||||
<Tr t={t.howTo.title} />
|
||||
</div>
|
||||
<div class="p-4 border-low-interaction border-l border-r border-b flex flex-col">
|
||||
<div class="border-low-interaction flex flex-col border-b border-l border-r p-4">
|
||||
<Tr t={t.takeImages} />
|
||||
<Tr t={t.howTo.intro} />
|
||||
<ul>
|
||||
|
@ -170,14 +169,11 @@
|
|||
</li>
|
||||
</ul>
|
||||
<!-- Attribution -->
|
||||
<div class="low-interaction flex items-center self-end rounded-xl p-2 px-3 mt-4 w-fit">
|
||||
<div class="low-interaction mt-4 flex w-fit items-center self-end rounded-xl p-2 px-3">
|
||||
<Plantnet_logo class="mr-2 h-8 w-8 rounded-full bg-white p-1" />
|
||||
<Tr t={t.poweredByPlantnet} />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</AccordionSingle>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
|
25
src/Utils.ts
25
src/Utils.ts
|
@ -879,7 +879,7 @@ In the case that MapComplete is pointed to the testing grounds, the edit will be
|
|||
): Promise<
|
||||
| { content: string }
|
||||
| { redirect: string }
|
||||
| { error: string; url: string; statuscode?: number, errContent?: string }
|
||||
| { error: string; url: string; statuscode?: number; errContent?: string }
|
||||
> {
|
||||
let result = undefined
|
||||
for (let i = 0; i < maxAttempts; i++) {
|
||||
|
@ -917,7 +917,7 @@ In the case that MapComplete is pointed to the testing grounds, the edit will be
|
|||
): Promise<
|
||||
| { content: string }
|
||||
| { redirect: string }
|
||||
| { error: string; url: string; statuscode?: number, errContent: string }
|
||||
| { error: string; url: string; statuscode?: number; errContent: string }
|
||||
> {
|
||||
if (this.externalDownloadFunction !== undefined) {
|
||||
return this.externalDownloadFunction(url, headers)
|
||||
|
@ -931,13 +931,18 @@ In the case that MapComplete is pointed to the testing grounds, the edit will be
|
|||
} else if (xhr.status === 302) {
|
||||
resolve({ redirect: xhr.getResponseHeader("location") })
|
||||
} else if (xhr.status === 509 || xhr.status === 429) {
|
||||
resolve({ error: "rate limited", url, statuscode: xhr.status, errContent: xhr.responseText })
|
||||
resolve({
|
||||
error: "rate limited",
|
||||
url,
|
||||
statuscode: xhr.status,
|
||||
errContent: xhr.responseText,
|
||||
})
|
||||
} else {
|
||||
resolve({
|
||||
error: "other error: " + xhr.statusText + ", " + xhr.responseText,
|
||||
url,
|
||||
statuscode: xhr.status,
|
||||
errContent: xhr.responseText
|
||||
errContent: xhr.responseText,
|
||||
})
|
||||
}
|
||||
}
|
||||
|
@ -1013,7 +1018,9 @@ In the case that MapComplete is pointed to the testing grounds, the edit will be
|
|||
headers?: Record<string, string>,
|
||||
dontCacheErrors = false,
|
||||
maxAttempts = 3
|
||||
): Promise<{ content: T } | { error: string; url: string; statuscode?: number, errContent?: object }> {
|
||||
): Promise<
|
||||
{ content: T } | { error: string; url: string; statuscode?: number; errContent?: object }
|
||||
> {
|
||||
const cached = Utils._download_cache.get(url)
|
||||
if (cached !== undefined) {
|
||||
if (new Date().getTime() - cached.timestamp <= maxCacheTimeMs) {
|
||||
|
@ -1023,8 +1030,8 @@ In the case that MapComplete is pointed to the testing grounds, the edit will be
|
|||
const promise =
|
||||
/*NO AWAIT as we work with the promise directly */ Utils.downloadJsonAdvanced<T>(
|
||||
url,
|
||||
headers,
|
||||
maxAttempts
|
||||
headers,
|
||||
maxAttempts
|
||||
)
|
||||
Utils._download_cache.set(url, { promise, timestamp: new Date().getTime() })
|
||||
try {
|
||||
|
@ -1065,7 +1072,9 @@ In the case that MapComplete is pointed to the testing grounds, the edit will be
|
|||
url: string,
|
||||
headers?: Record<string, string>,
|
||||
maxAttempts = 3
|
||||
): Promise<{ content: T } | { error: string; url: string; statuscode?: number, errContent?: object }> {
|
||||
): Promise<
|
||||
{ content: T } | { error: string; url: string; statuscode?: number; errContent?: object }
|
||||
> {
|
||||
const injected = Utils.injectedDownloads[url]
|
||||
if (injected !== undefined) {
|
||||
return { content: injected }
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"contributors": [
|
||||
{
|
||||
"commits": 9694,
|
||||
"commits": 9721,
|
||||
"contributor": "Pieter Vander Vennet"
|
||||
},
|
||||
{
|
||||
|
|
|
@ -126,9 +126,6 @@
|
|||
"fr",
|
||||
"en"
|
||||
],
|
||||
"CN": [
|
||||
"zh"
|
||||
],
|
||||
"CO": [
|
||||
"es"
|
||||
],
|
||||
|
|
|
@ -13894,9 +13894,6 @@
|
|||
"zh_Hans": "中文",
|
||||
"zh_Hant": "中文",
|
||||
"_meta": {
|
||||
"countries": [
|
||||
"CN"
|
||||
],
|
||||
"dir": [
|
||||
"vertical right-to-left",
|
||||
"left-to-right"
|
||||
|
|
|
@ -10873,10 +10873,6 @@
|
|||
"if": "value=conflation",
|
||||
"then": "conflation - If the import-button moves OSM points, the imported way points or conflates, a preview is shown. This layer defines how this preview is rendered. This layer cannot be included in a theme."
|
||||
},
|
||||
{
|
||||
"if": "value=crab_address",
|
||||
"then": "crab_address - Address data for Flanders by the governement, suited for import into OpenStreetMap. Datadump from 2021-10-26. This layer contains only visualisation logic. Import buttons should be added via an override. Note that HNRLABEL contains the original value, whereas _HNRLABEL contains a slightly cleaned version"
|
||||
},
|
||||
{
|
||||
"if": "value=crossings",
|
||||
"then": "crossings - Crossings for pedestrians and cyclists"
|
||||
|
|
|
@ -752,10 +752,6 @@
|
|||
"if": "value=conflation",
|
||||
"then": "<b>conflation</b> (builtin) - If the import-button moves OSM points, the imported way points or conflates, a preview is shown. This layer defines how this preview is rendered. This layer cannot be included in a theme."
|
||||
},
|
||||
{
|
||||
"if": "value=crab_address",
|
||||
"then": "<b>crab_address</b> (builtin) - Address data for Flanders by the governement, suited for import into OpenStreetMap. Datadump from 2021-10-26. This layer contains only visualisation logic. Import buttons should be added via an override. Note that HNRLABEL contains the original value, whereas _HNRLABEL contains a slightly cleaned version"
|
||||
},
|
||||
{
|
||||
"if": "value=crossings",
|
||||
"then": "<b>crossings</b> (builtin) - Crossings for pedestrians and cyclists"
|
||||
|
@ -13529,10 +13525,6 @@
|
|||
"if": "value=conflation",
|
||||
"then": "conflation - If the import-button moves OSM points, the imported way points or conflates, a preview is shown. This layer defines how this preview is rendered. This layer cannot be included in a theme."
|
||||
},
|
||||
{
|
||||
"if": "value=crab_address",
|
||||
"then": "crab_address - Address data for Flanders by the governement, suited for import into OpenStreetMap. Datadump from 2021-10-26. This layer contains only visualisation logic. Import buttons should be added via an override. Note that HNRLABEL contains the original value, whereas _HNRLABEL contains a slightly cleaned version"
|
||||
},
|
||||
{
|
||||
"if": "value=crossings",
|
||||
"then": "crossings - Crossings for pedestrians and cyclists"
|
||||
|
@ -35342,10 +35334,6 @@
|
|||
"if": "value=conflation",
|
||||
"then": "conflation - If the import-button moves OSM points, the imported way points or conflates, a preview is shown. This layer defines how this preview is rendered. This layer cannot be included in a theme."
|
||||
},
|
||||
{
|
||||
"if": "value=crab_address",
|
||||
"then": "crab_address - Address data for Flanders by the governement, suited for import into OpenStreetMap. Datadump from 2021-10-26. This layer contains only visualisation logic. Import buttons should be added via an override. Note that HNRLABEL contains the original value, whereas _HNRLABEL contains a slightly cleaned version"
|
||||
},
|
||||
{
|
||||
"if": "value=crossings",
|
||||
"then": "crossings - Crossings for pedestrians and cyclists"
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue