Merge master

This commit is contained in:
Pieter Vander Vennet 2023-07-28 01:05:11 +02:00
commit 9f2a720341
22 changed files with 602 additions and 350 deletions

View file

@ -54,6 +54,7 @@
+ [payment-options-split](#payment-options-split)
+ [denominations-coins](#denominations-coins)
+ [denominations-notes](#denominations-notes)
+ [survey_date](#survey_date)
+ [id_presets.shop_types](#id_presetsshop_types)
+ [school.capacity](#schoolcapacity)
+ [school.gender](#schoolgender)
@ -839,6 +840,17 @@
### survey_date
- recycling
### id_presets.shop_types

View file

@ -15,6 +15,7 @@ Fallback layer with items on which climbing _might_ be possible. It is loaded wh
- This layer is shown at zoomlevel **19** and higher
- This layer is needed as dependency for layer [climbing_route](#climbing_route)

View file

@ -15,6 +15,7 @@ A single climbing route and its properties. Some properties are derived from the
- This layer is shown at zoomlevel **18** and higher
- This layer will automatically load [climbing_opportunity](./climbing_opportunity.md) into the layout as it depends on it: a preset snaps to this layer (presets[0])
- This layer is needed as dependency for layer [climbing_area](#climbing_area)

View file

@ -26,6 +26,7 @@ Available languages:
- en
- de
This document is autogenerated from [assets/themes/elongated_coin/elongated_coin.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/elongated_coin/elongated_coin.json)

View file

@ -5,7 +5,7 @@
On this map you can find and add data of post offices and post boxes. You can use this map to find where you can mail your next postcard! :)<br/>Spotted an error or is a post box missing? You can edit this map with a free OpenStreetMap account.
On this map you can find and add data of post offices and post boxes. You can use this map to find where you can mail your next postcard! :)<br/>Spotted an error or is a post box missing? You can edit this map with a free OpenStreetMap account.
This theme contains the following layers:

View file

@ -27,6 +27,7 @@ Available languages:
- en
- nl
- de
This document is autogenerated from [assets/themes/vending_machine/vending_machine.json](https://github.com/pietervdvn/MapComplete/blob/develop/assets/themes/vending_machine/vending_machine.json)

View file

@ -90,7 +90,7 @@ This documentation is defined in the source code at [Locale.ts](/src/UI/i18n/Loc
If set, will show a translation button next to every string.
This documentation is defined in the source code at [QueryParameters.ts](/src/Logic/Web/QueryParameters.ts#L66)
This documentation is defined in the source code at [Locale.ts](/src/UI/i18n/Locale.ts#L70)
The default value is _false_
@ -112,7 +112,7 @@ This documentation is defined in the source code at [FeatureSwitchState.ts](/src
If true, 'dryrun' mode is activated and a fake user account is loaded
This documentation is defined in the source code at [QueryParameters.ts](/src/Logic/Web/QueryParameters.ts#L66)
This documentation is defined in the source code at [FeatureSwitchState.ts](/src/Logic/State/FeatureSwitchState.ts#L35)
The default value is _false_
@ -123,7 +123,7 @@ This documentation is defined in the source code at [QueryParameters.ts](/src/Lo
Disables/Enables the user information pill (userbadge) at the top left. Disabling this disables logging in and thus disables editing all together, effectively putting MapComplete into read-only mode.
This documentation is defined in the source code at [FeatureSwitchState.ts](/src/Logic/State/FeatureSwitchState.ts#L13)
This documentation is defined in the source code at [FeatureSwitchState.ts](/src/Logic/State/FeatureSwitchState.ts#L76)
The default value is _true_
@ -134,7 +134,7 @@ This documentation is defined in the source code at [FeatureSwitchState.ts](/src
Disables/Enables the search bar
This documentation is defined in the source code at [FeatureSwitchState.ts](/src/Logic/State/FeatureSwitchState.ts#L13)
This documentation is defined in the source code at [FeatureSwitchState.ts](/src/Logic/State/FeatureSwitchState.ts#L81)
The default value is _true_
@ -145,7 +145,7 @@ This documentation is defined in the source code at [FeatureSwitchState.ts](/src
Disables/Enables the background layer control
This documentation is defined in the source code at [FeatureSwitchState.ts](/src/Logic/State/FeatureSwitchState.ts#L13)
This documentation is defined in the source code at [FeatureSwitchState.ts](/src/Logic/State/FeatureSwitchState.ts#L86)
The default value is _true_
@ -156,7 +156,7 @@ This documentation is defined in the source code at [FeatureSwitchState.ts](/src
Disables/Enables the filter view
This documentation is defined in the source code at [FeatureSwitchState.ts](/src/Logic/State/FeatureSwitchState.ts#L13)
This documentation is defined in the source code at [FeatureSwitchState.ts](/src/Logic/State/FeatureSwitchState.ts#L92)
The default value is _true_
@ -167,7 +167,7 @@ This documentation is defined in the source code at [FeatureSwitchState.ts](/src
Disables/Enables the 'add new feature'-popup. (A theme without presets might not have it in the first place)
This documentation is defined in the source code at [FeatureSwitchState.ts](/src/Logic/State/FeatureSwitchState.ts#L13)
This documentation is defined in the source code at [FeatureSwitchState.ts](/src/Logic/State/FeatureSwitchState.ts#L97)
The default value is _true_
@ -178,7 +178,7 @@ This documentation is defined in the source code at [FeatureSwitchState.ts](/src
Disables/enables the help menu or welcome message
This documentation is defined in the source code at [FeatureSwitchState.ts](/src/Logic/State/FeatureSwitchState.ts#L13)
This documentation is defined in the source code at [FeatureSwitchState.ts](/src/Logic/State/FeatureSwitchState.ts#L102)
The default value is _true_
@ -189,7 +189,7 @@ This documentation is defined in the source code at [FeatureSwitchState.ts](/src
Disables/enables the button to get in touch with the community
This documentation is defined in the source code at [FeatureSwitchState.ts](/src/Logic/State/FeatureSwitchState.ts#L13)
This documentation is defined in the source code at [FeatureSwitchState.ts](/src/Logic/State/FeatureSwitchState.ts#L107)
The default value is _true_
@ -200,7 +200,7 @@ This documentation is defined in the source code at [FeatureSwitchState.ts](/src
Disables/Enables the extraLink button. By default, if in iframe mode and the welcome message is hidden, a popout button to the full mapcomplete instance is shown instead (unless disabled with this switch or another extraLink button is enabled)
This documentation is defined in the source code at [FeatureSwitchState.ts](/src/Logic/State/FeatureSwitchState.ts#L13)
This documentation is defined in the source code at [FeatureSwitchState.ts](/src/Logic/State/FeatureSwitchState.ts#L112)
The default value is _true_
@ -211,7 +211,7 @@ This documentation is defined in the source code at [FeatureSwitchState.ts](/src
Disables/Enables the 'More Quests'-tab in the welcome message
This documentation is defined in the source code at [FeatureSwitchState.ts](/src/Logic/State/FeatureSwitchState.ts#L13)
This documentation is defined in the source code at [FeatureSwitchState.ts](/src/Logic/State/FeatureSwitchState.ts#L117)
The default value is _true_
@ -222,7 +222,7 @@ This documentation is defined in the source code at [FeatureSwitchState.ts](/src
Disables/Enables the 'Share-screen'-tab in the welcome message
This documentation is defined in the source code at [FeatureSwitchState.ts](/src/Logic/State/FeatureSwitchState.ts#L13)
This documentation is defined in the source code at [FeatureSwitchState.ts](/src/Logic/State/FeatureSwitchState.ts#L122)
The default value is _true_
@ -233,7 +233,7 @@ This documentation is defined in the source code at [FeatureSwitchState.ts](/src
Disables/Enables the geolocation button
This documentation is defined in the source code at [FeatureSwitchState.ts](/src/Logic/State/FeatureSwitchState.ts#L13)
This documentation is defined in the source code at [FeatureSwitchState.ts](/src/Logic/State/FeatureSwitchState.ts#L127)
The default value is _true_
@ -244,7 +244,7 @@ This documentation is defined in the source code at [FeatureSwitchState.ts](/src
Always show all questions
This documentation is defined in the source code at [FeatureSwitchState.ts](/src/Logic/State/FeatureSwitchState.ts#L13)
This documentation is defined in the source code at [FeatureSwitchState.ts](/src/Logic/State/FeatureSwitchState.ts#L132)
The default value is _false_
@ -255,7 +255,7 @@ This documentation is defined in the source code at [FeatureSwitchState.ts](/src
Enable the export as GeoJSON and CSV button
This documentation is defined in the source code at [FeatureSwitchState.ts](/src/Logic/State/FeatureSwitchState.ts#L13)
This documentation is defined in the source code at [FeatureSwitchState.ts](/src/Logic/State/FeatureSwitchState.ts#L138)
The default value is _true_
@ -266,7 +266,7 @@ This documentation is defined in the source code at [FeatureSwitchState.ts](/src
If true, 'dryrun' mode is activated. The app will behave as normal, except that changes to OSM will be printed onto the console instead of actually uploaded to osm.org
This documentation is defined in the source code at [QueryParameters.ts](/src/Logic/Web/QueryParameters.ts#L66)
This documentation is defined in the source code at [FeatureSwitchState.ts](/src/Logic/State/FeatureSwitchState.ts#L153)
The default value is _false_
@ -277,7 +277,7 @@ This documentation is defined in the source code at [QueryParameters.ts](/src/Lo
If true, shows some extra debugging help such as all the available tags on every object
This documentation is defined in the source code at [QueryParameters.ts](/src/Logic/Web/QueryParameters.ts#L66)
This documentation is defined in the source code at [FeatureSwitchState.ts](/src/Logic/State/FeatureSwitchState.ts#L159)
The default value is _false_

View file

@ -247,7 +247,7 @@
{{service_item
|name= [https://mapcomplete.osm.be/elongated_coin elongated_coin]
|region= Worldwide
|lang= {{#language:en|en}}
|lang= {{#language:en|en}}, {{#language:de|en}}
|descr= A MapComplete theme: Find penny presses to create your own elongated coins
|material= {{yes|[https://mapcomplete.osm.be/ Yes]}}
|image= MapComplete_Screenshot.png
@ -499,7 +499,7 @@
{{service_item
|name= [https://mapcomplete.osm.be/vending_machine vending_machine]
|region= Worldwide
|lang= {{#language:en|en}}, {{#language:nl|en}}
|lang= {{#language:en|en}}, {{#language:nl|en}}, {{#language:de|en}}
|descr= A MapComplete theme: Find vending machines for everything
|material= {{yes|[https://mapcomplete.osm.be/ Yes]}}
|image= MapComplete_Screenshot.png

16
package-lock.json generated
View file

@ -1,12 +1,12 @@
{
"name": "mapcomplete",
"version": "0.31.0",
"version": "0.31.1",
"lockfileVersion": 2,
"requires": true,
"packages": {
"": {
"name": "mapcomplete",
"version": "0.31.0",
"version": "0.31.1",
"license": "GPL-3.0-or-later",
"dependencies": {
"@rgossiaux/svelte-headlessui": "^1.0.2",
@ -4511,9 +4511,9 @@
}
},
"node_modules/caniuse-lite": {
"version": "1.0.30001516",
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001516.tgz",
"integrity": "sha512-Wmec9pCBY8CWbmI4HsjBeQLqDTqV91nFVR83DnZpYyRnPI1wePDsTg0bGLPC5VU/3OIZV1fmxEea1b+tFKe86g==",
"version": "1.0.30001517",
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001517.tgz",
"integrity": "sha512-Vdhm5S11DaFVLlyiKu4hiUTkpZu+y1KA/rZZqVQfOD5YdDT/eQKlkt7NaE0WGOFgX32diqt9MiP9CAiFeRklaA==",
"dev": true,
"funding": [
{
@ -15736,9 +15736,9 @@
"integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA=="
},
"caniuse-lite": {
"version": "1.0.30001516",
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001516.tgz",
"integrity": "sha512-Wmec9pCBY8CWbmI4HsjBeQLqDTqV91nFVR83DnZpYyRnPI1wePDsTg0bGLPC5VU/3OIZV1fmxEea1b+tFKe86g==",
"version": "1.0.30001517",
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001517.tgz",
"integrity": "sha512-Vdhm5S11DaFVLlyiKu4hiUTkpZu+y1KA/rZZqVQfOD5YdDT/eQKlkt7NaE0WGOFgX32diqt9MiP9CAiFeRklaA==",
"dev": true
},
"canvg": {

View file

@ -1,6 +1,6 @@
{
"name": "mapcomplete",
"version": "0.31.1",
"version": "0.31.2",
"repository": "https://github.com/pietervdvn/MapComplete",
"description": "A small website to edit OSM easily",
"bugs": "https://github.com/pietervdvn/MapComplete/issues",

View file

@ -1,14 +1,14 @@
import {Store, UIEventSource} from "../Logic/UIEventSource"
import { Store, UIEventSource } from "../Logic/UIEventSource"
import LayerConfig from "./ThemeConfig/LayerConfig"
import {OsmConnection} from "../Logic/Osm/OsmConnection"
import {LocalStorageSource} from "../Logic/Web/LocalStorageSource"
import {QueryParameters} from "../Logic/Web/QueryParameters"
import {FilterConfigOption} from "./ThemeConfig/FilterConfig"
import {TagsFilter} from "../Logic/Tags/TagsFilter"
import {Utils} from "../Utils"
import {TagUtils} from "../Logic/Tags/TagUtils"
import {And} from "../Logic/Tags/And"
import {GlobalFilter} from "./GlobalFilter"
import { OsmConnection } from "../Logic/Osm/OsmConnection"
import { LocalStorageSource } from "../Logic/Web/LocalStorageSource"
import { QueryParameters } from "../Logic/Web/QueryParameters"
import { FilterConfigOption } from "./ThemeConfig/FilterConfig"
import { TagsFilter } from "../Logic/Tags/TagsFilter"
import { Utils } from "../Utils"
import { TagUtils } from "../Logic/Tags/TagUtils"
import { And } from "../Logic/Tags/And"
import { GlobalFilter } from "./GlobalFilter"
export default class FilteredLayer {
/**

View file

@ -7,7 +7,7 @@
import type { LayoutInformation } from "../../Models/ThemeConfig/LayoutConfig"
import Tr from "../Base/Tr.svelte"
import SubtleLink from "../Base/SubtleLink.svelte"
import Translations from "../i18n/Translations"
import Translations from "../i18n/Translations"
export let theme: LayoutInformation
export let isCustom: boolean = false

View file

@ -29,7 +29,7 @@
<div class="gap-4 md:grid md:grid-flow-row md:grid-cols-2 lg:grid-cols-3">
{#each filteredThemes as theme (theme.id)}
{#if theme !== undefined && !(hideThemes && theme?.hideFromOverview)}
<!-- TODO: doesn't work if first theme is hidden -->
<!-- TODO: doesn't work if first theme is hidden -->
{#if theme === firstTheme && !isCustom && $search !== "" && $search !== undefined}
<ThemeButton
{theme}

View file

@ -1,6 +1,6 @@
import BaseUIElement from "../BaseUIElement"
import {InputElement} from "./InputElement"
import {UIEventSource} from "../../Logic/UIEventSource"
import { InputElement } from "./InputElement"
import { UIEventSource } from "../../Logic/UIEventSource"
/**
* @deprecated
@ -67,20 +67,18 @@ export default class FileSelectorButton extends InputElement<FileList> {
if (actualInputElement.files !== null) {
self._value.setData(actualInputElement.files)
}
actualInputElement.classList.remove("glowing-shadow");
actualInputElement.classList.remove("glowing-shadow")
e.preventDefault()
})
el.appendChild(actualInputElement)
function setDrawAttention(isOn: boolean){
if(isOn){
function setDrawAttention(isOn: boolean) {
if (isOn) {
label.classList.add("glowing-shadow")
}else{
} else {
label.classList.remove("glowing-shadow")
}
}
@ -90,10 +88,9 @@ export default class FileSelectorButton extends InputElement<FileList> {
setDrawAttention(true)
// Style the drag-and-drop as a "copy file" operation.
event.dataTransfer.dropEffect = "copy"
})
window.document.addEventListener("dragenter", () =>{
window.document.addEventListener("dragenter", () => {
setDrawAttention(true)
})
@ -101,7 +98,6 @@ export default class FileSelectorButton extends InputElement<FileList> {
setDrawAttention(false)
})
el.addEventListener("drop", (event) => {
event.stopPropagation()
event.preventDefault()

View file

@ -1,79 +1,73 @@
<script lang="ts">
import {onDestroy, onMount} from "svelte"
import * as maplibre from "maplibre-gl"
import type {Map} from "maplibre-gl"
import type {Readable, Writable} from "svelte/store"
import {get, writable} from "svelte/store"
import {AvailableRasterLayers} from "../../Models/RasterLayers"
import {Utils} from "../../Utils";
import { onDestroy, onMount } from "svelte"
import * as maplibre from "maplibre-gl"
import type { Map } from "maplibre-gl"
import type { Readable, Writable } from "svelte/store"
import { get, writable } from "svelte/store"
import { AvailableRasterLayers } from "../../Models/RasterLayers"
import { Utils } from "../../Utils"
/**
* The 'MaplibreMap' maps various event sources onto MapLibre.
*/
/**
* The 'MaplibreMap' maps various event sources onto MapLibre.
*/
/**
* Beware: this map will _only_ be set by this component
* It should thus be treated as a 'store' by external parties
*/
export let map: Writable<Map>
/**
* Beware: this map will _only_ be set by this component
* It should thus be treated as a 'store' by external parties
*/
export let map: Writable<Map>
let container: HTMLElement
let container: HTMLElement
export let attribution = false
export let center: { lng: number; lat: number } | Readable<{ lng: number; lat: number }> =
writable({ lng: 0, lat: 0 })
export let zoom: Readable<number> = writable(1)
const styleUrl = AvailableRasterLayers.maplibre.properties.url
export let attribution = false
export let center: {lng: number, lat: number} | Readable<{ lng: number; lat: number }> = writable({lng: 0, lat: 0})
export let zoom: Readable<number> = writable(1)
const styleUrl = AvailableRasterLayers.maplibre.properties.url
let _map: Map
onMount(() => {
let _center: {lng: number, lat: number}
if(typeof center["lng"] === "number" && typeof center["lat"] === "number"){
_center = <any> center
}else{
_center = get(<any> center)
}
_map = new maplibre.Map({
container,
style: styleUrl,
zoom: get(zoom),
center: _center,
maxZoom: 24,
interactive: true,
attributionControl: false,
});
_map.on("load", function () {
_map.resize()
})
map.set(_map)
let _map: Map
onMount(() => {
let _center: { lng: number; lat: number }
if (typeof center["lng"] === "number" && typeof center["lat"] === "number") {
_center = <any>center
} else {
_center = get(<any>center)
}
_map = new maplibre.Map({
container,
style: styleUrl,
zoom: get(zoom),
center: _center,
maxZoom: 24,
interactive: true,
attributionControl: false,
})
onDestroy(async () => {
await Utils.waitFor(250);
if (_map) _map.remove();
map = null;
});
_map.on("load", function () {
_map.resize()
})
map.set(_map)
})
onDestroy(async () => {
await Utils.waitFor(250)
if (_map) _map.remove()
map = null
})
</script>
<svelte:head>
<link
href="./maplibre-gl.css"
rel="stylesheet"
/>
<link href="./maplibre-gl.css" rel="stylesheet" />
</svelte:head>
<div bind:this={container} class="map" id="map" style=" position: relative;
<div
bind:this={container}
class="map"
id="map"
style=" position: relative;
top: 0;
bottom: 0;
width: 100%;
height: 100%;"></div>
height: 100%;"
/>

View file

@ -161,13 +161,16 @@ class PointRenderingLayer {
})
}
const marker = new Marker({ element: el}).setLngLat(loc).setOffset(iconAnchor).addTo(this._map)
const marker = new Marker({ element: el })
.setLngLat(loc)
.setOffset(iconAnchor)
.addTo(this._map)
store
.map((tags) => this._config.pitchAlignment.GetRenderValue(tags).Subs(tags).txt)
.addCallbackAndRun((pitchAligment) => marker.setPitchAlignment(<any> pitchAligment))
.addCallbackAndRun((pitchAligment) => marker.setPitchAlignment(<any>pitchAligment))
store
.map((tags) => this._config.rotationAlignment.GetRenderValue(tags).Subs(tags).txt)
.addCallbackAndRun((pitchAligment) => marker.setRotationAlignment(<any> pitchAligment))
.addCallbackAndRun((pitchAligment) => marker.setRotationAlignment(<any>pitchAligment))
if (feature.geometry.type === "Point") {
// When the tags get 'pinged', check that the location didn't change
store.addCallbackAndRunD(() => {
@ -458,7 +461,6 @@ export default class ShowDataLayer {
features: FeatureSource,
doShowLayer?: Store<boolean>
): ShowDataLayer {
return new ShowDataLayer(map, {
layer: ShowDataLayer.rangeLayer,
features,

View file

@ -38,7 +38,7 @@
}
</script>
<div class="inline-flex flex-col w-full">
<div class="inline-flex w-full flex-col">
{#if inline}
<Inline key={config.freeform.key} {tags} template={config.render}>
<ValidatedInput

View file

@ -413,7 +413,7 @@
<div class="flex" slot="title2">
<ToSvelte construct={Svg.community_svg().SetClass("w-6 h-6")} />
<Tr t={Translations.t.communityIndex.title}/>
<Tr t={Translations.t.communityIndex.title} />
</div>
<div class="m-2" slot="content2">
<CommunityIndexView location={state.mapProperties.location} />

View file

@ -1,11 +1,11 @@
{
"contributors": [
{
"commits": 5753,
"commits": 5819,
"contributor": "Pieter Vander Vennet"
},
{
"commits": 371,
"commits": 384,
"contributor": "Robin van der Linde"
},
{

View file

@ -10,7 +10,7 @@
"fr": "français",
"gl": "lingua galega",
"hu": "magyar",
"id": "bahasa Indonesia",
"id": "Bahasa Indonesia",
"it": "italiano",
"ja": "日本語",
"nb_NO": "bokmål",

File diff suppressed because it is too large Load diff

View file

@ -1,11 +1,11 @@
{
"contributors": [
{
"commits": 283,
"commits": 286,
"contributor": "kjon"
},
{
"commits": 275,
"commits": 276,
"contributor": "Pieter Vander Vennet"
},
{
@ -53,7 +53,7 @@
"contributor": "Reza Almanda"
},
{
"commits": 23,
"commits": 24,
"contributor": "Lucas"
},
{
@ -204,6 +204,10 @@
"commits": 6,
"contributor": "lvgx"
},
{
"commits": 5,
"contributor": "deep map"
},
{
"commits": 5,
"contributor": "Piotr Strebski"
@ -272,6 +276,10 @@
"commits": 4,
"contributor": "Jan Zabel"
},
{
"commits": 3,
"contributor": "Emory Shaw"
},
{
"commits": 3,
"contributor": "Alexey Lutskyi"
@ -328,10 +336,6 @@
"commits": 3,
"contributor": "SiegbjornSitumeang"
},
{
"commits": 2,
"contributor": "Emory Shaw"
},
{
"commits": 2,
"contributor": "lmagreault"
@ -440,10 +444,6 @@
"commits": 1,
"contributor": "Stéphane De Greef"
},
{
"commits": 1,
"contributor": "deep map"
},
{
"commits": 1,
"contributor": "Falk Rund"