forked from MapComplete/MapComplete
		
	Merge develop
This commit is contained in:
		
						commit
						5a9f8f0a0a
					
				
					 62 changed files with 4448 additions and 710 deletions
				
			
		
							
								
								
									
										25
									
								
								.versionrc.json
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										25
									
								
								.versionrc.json
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,25 @@ | |||
| { | ||||
|     "types": [ | ||||
|       {"type": "feat", "section": "Features"}, | ||||
|       {"type": "fix", "section": "Bug Fixes"}, | ||||
|       {"type": "themes", "section": "Theme improvements"}, | ||||
|       {"type": "UX", | ||||
|         "section": "User experience improvements" | ||||
|       }, | ||||
|       { | ||||
|         "type": "UI", | ||||
|         "section": "User interface improvements" | ||||
|       }, | ||||
|       {"type": "Search", | ||||
|         "section": "Search related features" | ||||
|       }, | ||||
|       {"type": "chore", "hidden": true}, | ||||
|       {"type": "docs", "hidden": true}, | ||||
|       {"type": "style", "hidden": true}, | ||||
|       {"type": "refactor", "hidden": true}, | ||||
|       {"type": "perf", "hidden": true}, | ||||
|       {"type": "test", "hidden": true} | ||||
|     ], | ||||
|     "commitUrlFormat": "https://github.com/USERNAME/REPOSITORY_NAME/commits{{hash}}", | ||||
|     "compareUrlFormat": "https://github.com/USERNAME/REPOSITORY_NAME/compare/{{previousTag}}...{{currentTag}}" | ||||
|   } | ||||
							
								
								
									
										631
									
								
								CHANGELOG.md
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										631
									
								
								CHANGELOG.md
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,631 @@ | |||
| # Changelog | ||||
| 
 | ||||
| All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. | ||||
| 
 | ||||
| ### [0.46.8](https://github.com/USERNAME/REPOSITORY_NAME/compare/v0.46.7...v0.46.8) (2024-09-13) | ||||
| 
 | ||||
| 
 | ||||
| ### Theme improvements | ||||
| 
 | ||||
| * improve note theme, fix [#2088](https://github.com/pietervdvn/MapComplete/issues/2088) ([e8099b9](https://github.com/USERNAME/REPOSITORY_NAME/commitse8099b9081ae25ff37f2b7a491f9301a29772080)) | ||||
| * update safe_loops svg ([70117ac](https://github.com/USERNAME/REPOSITORY_NAME/commits70117ac6874ec860a6f2497c2230d29248de71a7)) | ||||
| 
 | ||||
| ### 0.46.7 (2024-09-13) | ||||
| 
 | ||||
| 
 | ||||
| ### Features | ||||
| 
 | ||||
| * add bike_parking=safe_loops ([e4de3d8](https://github.com/USERNAME/REPOSITORY_NAME/commitse4de3d8e5f2b8e6002e68dba20ac659f57a3c8cc)) | ||||
| * add color for streets with no cycleways ([5d52462](https://github.com/USERNAME/REPOSITORY_NAME/commits5d524629b46d3e2e1d059f9db3010609e05ffb61)) | ||||
| * add prettier config ([d3f453a](https://github.com/USERNAME/REPOSITORY_NAME/commitsd3f453a4fb3f7eaac9031026dc95bff0a076dec3)) | ||||
| * Add printer cartridges to recycling ([28d6637](https://github.com/USERNAME/REPOSITORY_NAME/commits28d66373680dda160b4b899621c5c89aa1c52143)) | ||||
| * **themes:** add osm community index as a layer ([e85cf43](https://github.com/USERNAME/REPOSITORY_NAME/commitse85cf43ffbf9de86491a2d3aaa4b7f0a52082843)) | ||||
| * **themes:** add questionHint to give extra information about a question ([d7fe3a0](https://github.com/USERNAME/REPOSITORY_NAME/commitsd7fe3a056ef74d85f3d4e310a6e053b244b659f8)) | ||||
| 
 | ||||
| 
 | ||||
| ### Bug Fixes | ||||
| 
 | ||||
| * _actually_ fix [#1706](https://github.com/pietervdvn/MapComplete/issues/1706) ([6577007](https://github.com/USERNAME/REPOSITORY_NAME/commits6577007717910bf46086490da8e9d549b63f1891)) | ||||
| * _actually_ run the *.spec.ts-tests... ([82a860c](https://github.com/USERNAME/REPOSITORY_NAME/commits82a860cbf5bad2ab1b4d9b806e9f18e4d5cbc054)) | ||||
| * [#1093](https://github.com/pietervdvn/MapComplete/issues/1093) ([5a6ed7b](https://github.com/USERNAME/REPOSITORY_NAME/commits5a6ed7bf21aaaf677c05e572afacd53443eb2d59)) | ||||
| * [#1685](https://github.com/pietervdvn/MapComplete/issues/1685), fix oopsie ([d96fe61](https://github.com/USERNAME/REPOSITORY_NAME/commitsd96fe614624771bed99c418bbc9bb4f09ce7bd3a)) | ||||
| * a freeform key will mimick a mapping if appropriate (and avoid the 'addExtraTags') ([68ea4e3](https://github.com/USERNAME/REPOSITORY_NAME/commits68ea4e3d9f255e989cf158159b434ed6bfc6f55a)) | ||||
| * actually allow to login via prominent login button ([4be49a0](https://github.com/USERNAME/REPOSITORY_NAME/commits4be49a0561531c729d9d46d5e99571056d2492df)) | ||||
| * actually apply preferred background layer ([b69c2de](https://github.com/USERNAME/REPOSITORY_NAME/commitsb69c2de3f41e7737ceec919214f0748634d9dfd3)) | ||||
| * actually attempt to login when login button is pressed ([f1de8a3](https://github.com/USERNAME/REPOSITORY_NAME/commitsf1de8a3d9dafad4860ebb380c113ff2f253d13db)) | ||||
| * actually deploy on the production repo ([ca89956](https://github.com/USERNAME/REPOSITORY_NAME/commitsca899561d55626b9c2c14f90d60d01c8c1276823)) | ||||
| * actually include _all_ features ([8f7b731](https://github.com/USERNAME/REPOSITORY_NAME/commits8f7b731d29ca7daec1063a6833716e86333b0ffd)) | ||||
| * actually load geojson layers; formatting ([cbc4e6e](https://github.com/USERNAME/REPOSITORY_NAME/commitscbc4e6eb15a2a6d7f9693a24f35839886b4f3544)) | ||||
| * actually open usersettings when license is clicked ([c10fecb](https://github.com/USERNAME/REPOSITORY_NAME/commitsc10fecb7e8293190b07a2fc3ff90b6f830a75103)) | ||||
| * actually pass the initial coordinate in the locationInput element, fix [#1486](https://github.com/pietervdvn/MapComplete/issues/1486) ([68e07d7](https://github.com/USERNAME/REPOSITORY_NAME/commits68e07d7d7beca5b4ea26b9fc6ff964014d28af4b)) | ||||
| * Actually show errors in custom themes now ([6a79dde](https://github.com/USERNAME/REPOSITORY_NAME/commits6a79dde743264c272e461614ae718044d90a7080)) | ||||
| * actually show HD image for nearby streetview imager, add loading indicator ([8b6ee87](https://github.com/USERNAME/REPOSITORY_NAME/commits8b6ee877f08a584df7d3bc8706292b6eeb11f030)) | ||||
| * actually show polygon_centroid ([5a957d5](https://github.com/USERNAME/REPOSITORY_NAME/commits5a957d56c73771a1fa2560dbd8755a7eebe36285)) | ||||
| * actually show tags on changes when the user has enough changesets ([d702134](https://github.com/USERNAME/REPOSITORY_NAME/commitsd7021344e890bede888ea3412270420e033207f7)) | ||||
| * actually upload new themes ([6446586](https://github.com/USERNAME/REPOSITORY_NAME/commits6446586ac581fa3994e58dba62a365afde7d5937)) | ||||
| * add 'maxspeed=20' to living street ([fd9c48b](https://github.com/USERNAME/REPOSITORY_NAME/commitsfd9c48b5b56fe7a08e3532cad777246b82b3a073)) | ||||
| * add 'onbeforeunload' if images are uploading, see [#1841](https://github.com/pietervdvn/MapComplete/issues/1841) ([ce7bc8f](https://github.com/USERNAME/REPOSITORY_NAME/commitsce7bc8fb6cc373e96179e57395818d6e6befd942)) | ||||
| * add 'self' to connect-src ([3bca130](https://github.com/USERNAME/REPOSITORY_NAME/commits3bca1305b504ba08203a09916fe849365eca0458)) | ||||
| * add all global layers to CSP ([93630bd](https://github.com/USERNAME/REPOSITORY_NAME/commits93630bd1db9e71f5e62619b2d02aaf18b42222f6)) | ||||
| * add all needed urls again ([ce1855b](https://github.com/USERNAME/REPOSITORY_NAME/commitsce1855b2bd322044f9710a4dab38287298ad5fc6)) | ||||
| * add all vector layers to CSP ([2736740](https://github.com/USERNAME/REPOSITORY_NAME/commits2736740cd0d777450f8da7eea76f1defa7993944)) | ||||
| * add awaitAnimationFrame to fix non-working questions ([d744fd3](https://github.com/USERNAME/REPOSITORY_NAME/commitsd744fd3a42bedb64de7de1562b6f4ee31ba9d254)) | ||||
| * Add button to go back to the map when showing that a point is deleted, fix [#1417](https://github.com/pietervdvn/MapComplete/issues/1417) ([55903d4](https://github.com/USERNAME/REPOSITORY_NAME/commits55903d45f933ebbfd7971a14296fe2dac1b6fa96)) | ||||
| * add carto vector layers again ([5e2a989](https://github.com/USERNAME/REPOSITORY_NAME/commits5e2a98924c2a0efdb1f75a213efe7114df5e0cae)) | ||||
| * add check for missing 'noopener' attributes; add missing noopener attributes ([6e8617c](https://github.com/USERNAME/REPOSITORY_NAME/commits6e8617c93fd0fde8f0b27c035625e68d143f9b58)) | ||||
| * add check that no changeset is opened without actually having changes ([2843b01](https://github.com/USERNAME/REPOSITORY_NAME/commits2843b01586fd40a2e0d4dc92861b9d001d1684d3)) | ||||
| * add correct attribution for maptiler bg layer ([c90b334](https://github.com/USERNAME/REPOSITORY_NAME/commitsc90b334678ac44346d82302599647236b3c0df09)) | ||||
| * add default value for setStatus ([eede2d1](https://github.com/USERNAME/REPOSITORY_NAME/commitseede2d17dd411a3b27295a9efab8cb69df3b57c2)) | ||||
| * add dutch translation ([a55b84d](https://github.com/USERNAME/REPOSITORY_NAME/commitsa55b84dba18564e0959bd709b0da0e5b228d3ca0)) | ||||
| * add execute permissions to build script ([5567869](https://github.com/USERNAME/REPOSITORY_NAME/commits5567869bb4ede7a56c174b960aff734de06ea67f)) | ||||
| * add extra refresh:layeroverview in order to fix the favourites theme icons ([c65ccdb](https://github.com/USERNAME/REPOSITORY_NAME/commitsc65ccdbc240ad5406189e48bd92c40569d19bc3c)) | ||||
| * add glow effect to bench theme for selected object ([75b1a46](https://github.com/USERNAME/REPOSITORY_NAME/commits75b1a467e0307cee94a0af9e482a3ab5e8ac4ccd)) | ||||
| * add glow effect when dropping an image in the file selector; fix [#1496](https://github.com/pietervdvn/MapComplete/issues/1496) ([426620a](https://github.com/USERNAME/REPOSITORY_NAME/commits426620a76c4a6ca86181dec73da90d076f73c9aa)) | ||||
| * add language picker in settings page if logged out, fix [#1505](https://github.com/pietervdvn/MapComplete/issues/1505) ([a7ff3b8](https://github.com/USERNAME/REPOSITORY_NAME/commitsa7ff3b86faa90e70d3496f973c72b0265f993708)) | ||||
| * add links and overpass link to cafe_pub ([41b6eea](https://github.com/USERNAME/REPOSITORY_NAME/commits41b6eea430cbb6f504deb7a3e4fb5cf493004d6f)) | ||||
| * add maxzoom to osm.carto-layer, see [#1664](https://github.com/pietervdvn/MapComplete/issues/1664)$ ([5f918b6](https://github.com/USERNAME/REPOSITORY_NAME/commits5f918b607b9034c5a8ce6bcdd003caf8efe1466b)) | ||||
| * add missing assets ([f2b8c0d](https://github.com/USERNAME/REPOSITORY_NAME/commitsf2b8c0db0f80bf503f2b4332d66cbede0736f82a)) | ||||
| * add missing tag ([c5300a3](https://github.com/USERNAME/REPOSITORY_NAME/commitsc5300a3fd5b46e611a4604ad9c0483f823396dda)) | ||||
| * add new items works again, fix [#1593](https://github.com/pietervdvn/MapComplete/issues/1593) ([c527427](https://github.com/USERNAME/REPOSITORY_NAME/commitsc527427f70990006b9c71ef472bbe45d2c9bff70)) | ||||
| * add safety check to not overuse the OSM-api ([4602df3](https://github.com/USERNAME/REPOSITORY_NAME/commits4602df30469b57a57b9b8e1b8c6cc5c70ff901d7)) | ||||
| * add script integrity, add check to validate that script integrity is always in place ([08bbbca](https://github.com/USERNAME/REPOSITORY_NAME/commits08bbbcabc402abcf328274bb2990d59b47580376)) | ||||
| * add selection indicator to artwork ([ec99ab2](https://github.com/USERNAME/REPOSITORY_NAME/commitsec99ab24f806e8d43ae89ab8f33f570f43ce59fb)) | ||||
| * add support for legacy iconSize to fix some custom themes, see [#1494](https://github.com/pietervdvn/MapComplete/issues/1494) ([200361b](https://github.com/USERNAME/REPOSITORY_NAME/commits200361bf8dcd17f47574539137b2c42cb745143a)) | ||||
| * add text on cancel button ([1208e09](https://github.com/USERNAME/REPOSITORY_NAME/commits1208e095cf3fe87a2c9948a0c6666705c14c5e52)) | ||||
| * add the minimap again ([e83b8cb](https://github.com/USERNAME/REPOSITORY_NAME/commitse83b8cb19183b53c4d6b24b4f621900fd14280fa)) | ||||
| * addnewpoint-dialog works again ([8ed0a32](https://github.com/USERNAME/REPOSITORY_NAME/commits8ed0a32d153d4a434602c86a85eaf02881f6d480)) | ||||
| * alias 'urls' as 'website', fix [#246](https://github.com/pietervdvn/MapComplete/issues/246) ([87e79b8](https://github.com/USERNAME/REPOSITORY_NAME/commits87e79b8e8c981f5b0daa105097c514273ce6be3e)) | ||||
| * allow selection of the first radiobutton ([8fafd0a](https://github.com/USERNAME/REPOSITORY_NAME/commits8fafd0a8a5701323c6e25210ac6310dc418e31eb)) | ||||
| * allow to delete freeform values in more cases ([9b78838](https://github.com/USERNAME/REPOSITORY_NAME/commits9b78838745f41f3e42f158c9959c695e4160e7e8)) | ||||
| * allow to link multiple mapillary-images ([286fe72](https://github.com/USERNAME/REPOSITORY_NAME/commits286fe729359db1ec36328768a6a7662a9e951ce8)) | ||||
| * allow to move (non-snapped) points again after fixing [#1809](https://github.com/pietervdvn/MapComplete/issues/1809) ([77f07f5](https://github.com/USERNAME/REPOSITORY_NAME/commits77f07f55ecf9140c1c556fb4147c7d5cb74b0645)) | ||||
| * alltags shows objects as JSON instead as [object Object] ([1df28ab](https://github.com/USERNAME/REPOSITORY_NAME/commits1df28ab50199310928974a07809b65e854df1525)) | ||||
| * also copy png assets ([8f32916](https://github.com/USERNAME/REPOSITORY_NAME/commits8f32916454b63939d63c7496f7ba7b30f6f038cc)) | ||||
| * also show location info on shake if GPS is disabled ([4c5d24a](https://github.com/USERNAME/REPOSITORY_NAME/commits4c5d24a0a7dacc393c0a4328c99b5e5e08058b0b)) | ||||
| * always allow www.openstreetmap.org ([6b4be12](https://github.com/USERNAME/REPOSITORY_NAME/commits6b4be1200c60664bbbee87f9f8f8e3d821a277c3)) | ||||
| * always link to the wiki when tags are shown ([8dfef62](https://github.com/USERNAME/REPOSITORY_NAME/commits8dfef624323b8b93098150115d93f4089b846fb2)) | ||||
| * attempt to fix build ([0e8c3b1](https://github.com/USERNAME/REPOSITORY_NAME/commits0e8c3b10626f6f37e54b8ef96c11fb5dc113fe7a)) | ||||
| * attempt to fix build ([0e760b9](https://github.com/USERNAME/REPOSITORY_NAME/commits0e760b908c4955300b9d329f6d7eb9fb475713d3)) | ||||
| * attributes to answered questions didn't automatically show, questions which became available are now shown if they become avaible because of a tag change. Fix [#1587](https://github.com/pietervdvn/MapComplete/issues/1587) ([7de0af1](https://github.com/USERNAME/REPOSITORY_NAME/commits7de0af15f100815288fea4fdb13f3e845bc79088)) | ||||
| * await 'country' to be loaded ([3c5bde1](https://github.com/USERNAME/REPOSITORY_NAME/commits3c5bde1ae3ff3ed1aa72bb1463a4690e16f941e6)) | ||||
| * background layer csp fixe ([713e53c](https://github.com/USERNAME/REPOSITORY_NAME/commits713e53c41a840ae1e66cb9a36e06e0e9361285bd)) | ||||
| * better error handling and handling of changes ([7813653](https://github.com/USERNAME/REPOSITORY_NAME/commits78136532651ebcea6a2d2d94e42b2775bb9e92e3)) | ||||
| * better select available levels ([7b73578](https://github.com/USERNAME/REPOSITORY_NAME/commits7b73578f88b09ee65f923c363a884d91f20d2fae)) | ||||
| * broken titleIcons (fix [#1344](https://github.com/pietervdvn/MapComplete/issues/1344)) ([bdcf8a2](https://github.com/USERNAME/REPOSITORY_NAME/commitsbdcf8a26014b01e8128ece897e4b98286722d0e4)) | ||||
| * browser specific bug which caused the file selector to open twice on chromium; fix [#1771](https://github.com/pietervdvn/MapComplete/issues/1771) ([9893e43](https://github.com/USERNAME/REPOSITORY_NAME/commits9893e433f3bb43fbea80beb2a73ea4e271a01491)) | ||||
| * bug submitted comments on notes twice ([5be4b9d](https://github.com/USERNAME/REPOSITORY_NAME/commits5be4b9d1fb1e5a5e2cb03e314d4d65370aa44957)) | ||||
| * build ([cef7e01](https://github.com/USERNAME/REPOSITORY_NAME/commitscef7e01a2e7855d214d4a5ca75fc032a2b1d123a)) | ||||
| * build ([8556196](https://github.com/USERNAME/REPOSITORY_NAME/commits8556196acec5652ab39baaaa14ac911cb6dc5a15)) | ||||
| * build ([dbca260](https://github.com/USERNAME/REPOSITORY_NAME/commitsdbca2601324cd79d5d2d7d0398d002565d8825de)) | ||||
| * build ([2a21040](https://github.com/USERNAME/REPOSITORY_NAME/commits2a2104055185e1f9fa8f1cad620606b690527a0c)) | ||||
| * build ([29ee113](https://github.com/USERNAME/REPOSITORY_NAME/commits29ee113e30c11edc670331f1fb67f41e08f9ab50)) | ||||
| * build, some metatagging errors ([0d529e7](https://github.com/USERNAME/REPOSITORY_NAME/commits0d529e7cca4f044ab4c5fd4491e3704678598862)) | ||||
| * build; subtle bug ([5644c7a](https://github.com/USERNAME/REPOSITORY_NAME/commits5644c7a8b87a0fb17e846a4c370ac432cc03ca15)) | ||||
| * bypass missing favourites in custom theme loader ([6f59e46](https://github.com/USERNAME/REPOSITORY_NAME/commits6f59e46befd0ba1df57066400f3d2bbf00166f5b)) | ||||
| * charging station theme uses anchor too ([39024eb](https://github.com/USERNAME/REPOSITORY_NAME/commits39024eb5f3f68b5dba6b10d8dcf07fe2c5c67fbc)) | ||||
| * charging_station.protojson ([f042ca4](https://github.com/USERNAME/REPOSITORY_NAME/commitsf042ca40701e269a02254289a35acd43aaed05b0)) | ||||
| * chromium browsers don't handle spaces in `tel:`-links well ([4168ef0](https://github.com/USERNAME/REPOSITORY_NAME/commits4168ef01e333784f738fafa15d1eb7d7c4c527c7)) | ||||
| * cleanup merge ([e160510](https://github.com/USERNAME/REPOSITORY_NAME/commitse16051025a0f7c827c90db7251596be0c5e902c9)) | ||||
| * cleanup of wikipedia panel, fix [#1570](https://github.com/pietervdvn/MapComplete/issues/1570) ([203f24f](https://github.com/USERNAME/REPOSITORY_NAME/commits203f24fca01047edd2f01ed541fc93841ac1f17d)) | ||||
| * clicking the magnifying icon actually works now ([5478711](https://github.com/USERNAME/REPOSITORY_NAME/commits5478711bed8806d4cd5ae0ffe69ab64f3293fa69)) | ||||
| * compilation warning ([5851531](https://github.com/USERNAME/REPOSITORY_NAME/commits5851531306b2cb2cebfb459e5c5bef284b8c3e94)) | ||||
| * correct 'sync repo' step ([ecd84c2](https://github.com/USERNAME/REPOSITORY_NAME/commitsecd84c2cf6174bddad5d1759caeeeea761e1b9f1)) | ||||
| * correct CSP header for iOs/safari ([54868de](https://github.com/USERNAME/REPOSITORY_NAME/commits54868debec137c57b8dd45024332854150cc8f0f)) | ||||
| * correct default access assumption ([ea06152](https://github.com/USERNAME/REPOSITORY_NAME/commitsea061524737b343bec120356b8822d185cdefd85)) | ||||
| * correct default sed param for BSD sed flavor ([46fe1c5](https://github.com/USERNAME/REPOSITORY_NAME/commits46fe1c5795a110c541ed97548c426b205705ff2d)) | ||||
| * correct faulty name ([0952200](https://github.com/USERNAME/REPOSITORY_NAME/commits09522004db01453dcdb9a26670c3d7ef6f4e1eee)) | ||||
| * correct filters ([4d2d541](https://github.com/USERNAME/REPOSITORY_NAME/commits4d2d54175ca5b4af5a258bf7d1b89debab9f8f8e)) | ||||
| * correct maybe missing option in etymology layer ([a8ecab4](https://github.com/USERNAME/REPOSITORY_NAME/commitsa8ecab4d794c219301d636594933520c87fd8d75)) | ||||
| * correct merge conflict ([e6d8401](https://github.com/USERNAME/REPOSITORY_NAME/commitse6d84019a579daed01a34cf67825689511fd9c0a)) | ||||
| * correct minzoom on all themes ([bde5878](https://github.com/USERNAME/REPOSITORY_NAME/commitsbde5878fedae0eac20db8bb4c6eca81f904e20fd)) | ||||
| * correct sed command to be OSX compatible ([e21eb65](https://github.com/USERNAME/REPOSITORY_NAME/commitse21eb6596ee85471b8cbbd6776fa65647786bfda)) | ||||
| * correct typings ([2f17e6e](https://github.com/USERNAME/REPOSITORY_NAME/commits2f17e6e53259193c06d1764188a1a9602fbd97bb)) | ||||
| * Correctly calculate available levels, reselect last_click automatically ([4c962ea](https://github.com/USERNAME/REPOSITORY_NAME/commits4c962eab21af8146d9d57f7d12cd08cdd4a642d6)) | ||||
| * correctly escape markdown ([4d01d81](https://github.com/USERNAME/REPOSITORY_NAME/commits4d01d81e1e87ca5a18b6d0fd7b9f232c77cda936)) | ||||
| * correctly flatten special cases ([7ba0e73](https://github.com/USERNAME/REPOSITORY_NAME/commits7ba0e736a87492bc64e5f73811a6c790851c59d9)) | ||||
| * correctly flatten special cases ([593d7bd](https://github.com/USERNAME/REPOSITORY_NAME/commits593d7bd07ac520875c5acfcab5df364fb04dd77c)) | ||||
| * correctly interpret 'hideInAnswer'-conditions, recalculate them dynamically ([37dc6a7](https://github.com/USERNAME/REPOSITORY_NAME/commits37dc6a71616fc9510d1bf6e814060390dd329629)) | ||||
| * correctly optimize 'key=A&key!=B' into 'key=A' ([d8a5f3c](https://github.com/USERNAME/REPOSITORY_NAME/commitsd8a5f3c2be985c4fcbedfda09564ae5d02e6e5b4)) | ||||
| * correctly replace fields in filterview ([ae491f4](https://github.com/USERNAME/REPOSITORY_NAME/commitsae491f491652798344273d18fb42f1d27108ba4b)) | ||||
| * crash in new note flow, spotted by [@thibaultmolleman](https://github.com/thibaultmolleman) ([3e49929](https://github.com/USERNAME/REPOSITORY_NAME/commits3e49929f253f8ae1f945d9df4eb3398b39030a43)) | ||||
| * css-generate script; loading of stylesheet in style_test, add small buttons to style_test ([6bed170](https://github.com/USERNAME/REPOSITORY_NAME/commits6bed170910cdf6fd2ca68eb9d1b65779287afa5d)) | ||||
| * CSV download ([c1bce7a](https://github.com/USERNAME/REPOSITORY_NAME/commitsc1bce7abc76984ddb84f112d1b7367e5822d5763)) | ||||
| * decent PDF-export ([de20b00](https://github.com/USERNAME/REPOSITORY_NAME/commitsde20b00b8f8af6796cbab060262d85a5ab171c5d)) | ||||
| * direction input does not scroll anymore when dragged, fix [#1468](https://github.com/pietervdvn/MapComplete/issues/1468) ([102892e](https://github.com/USERNAME/REPOSITORY_NAME/commits102892ec774501b2811179b333217fb81efe33bb)) | ||||
| * disable 'delete'-button if no reason is selected, fix [#1631](https://github.com/pietervdvn/MapComplete/issues/1631) ([6b6b1e3](https://github.com/USERNAME/REPOSITORY_NAME/commits6b6b1e32862c7021cff99c2b340a50ae5822cf60)) | ||||
| * disable check ([b2e7b7d](https://github.com/USERNAME/REPOSITORY_NAME/commitsb2e7b7d221a6dbc12f73505522a5d29bd6d36244)) | ||||
| * disable rotation on mobile if the user enabled this ([93a30fd](https://github.com/USERNAME/REPOSITORY_NAME/commits93a30fdba5edfd91c19050013aa4f58123ce127c)) | ||||
| * don't attempt to show an osm wiki page as image, fix [#1776](https://github.com/pietervdvn/MapComplete/issues/1776) ([7dc43f9](https://github.com/USERNAME/REPOSITORY_NAME/commits7dc43f933e84b73f99935ceba4638fe85e376c94)) | ||||
| * don't count layers if they are not shown by default, fix [#1840](https://github.com/pietervdvn/MapComplete/issues/1840) ([d848171](https://github.com/USERNAME/REPOSITORY_NAME/commitsd848171c3d795e31a73b10d687b475de30e8f39c)) | ||||
| * don't crash if 't' is undefined ([b1c4097](https://github.com/USERNAME/REPOSITORY_NAME/commitsb1c4097cb480785d2e644a3da072055d1778a17c)) | ||||
| * don't crash if no features nearby ([b6a4cc1](https://github.com/USERNAME/REPOSITORY_NAME/commitsb6a4cc11bdf25c4cf09e55ad802eb0d460311c9d)) | ||||
| * don't crash if no features nearby ([c2001f1](https://github.com/USERNAME/REPOSITORY_NAME/commitsc2001f17a55937bbc09e52d730828c9234bf30ef)) | ||||
| * don't measure compass if alpha is null, fix [#1787](https://github.com/pietervdvn/MapComplete/issues/1787) ([3461ed6](https://github.com/USERNAME/REPOSITORY_NAME/commits3461ed60990fc91e399ef3c4cd082029db2059dd)) | ||||
| * don't move the map after we jumped to the current GPS location ([f31b025](https://github.com/USERNAME/REPOSITORY_NAME/commitsf31b025b8dba7218576c58ef6bc2b3101052beb7)) | ||||
| * don't set invalid coordinates ([fbc3bce](https://github.com/USERNAME/REPOSITORY_NAME/commitsfbc3bce5109ffa95491b792d4c7870167f9915ba)) | ||||
| * don't show both counts and summary at the same time ([d6dbeca](https://github.com/USERNAME/REPOSITORY_NAME/commitsd6dbecace26b9dc52da61d19b767469190a0e8be)) | ||||
| * don't show duplicate entry of default baselayer if already added ([7ef1628](https://github.com/USERNAME/REPOSITORY_NAME/commits7ef1628d87f32240746251b3e7b4bfdfdbebf6cb)) | ||||
| * Don't show item if there is no label ([7edc730](https://github.com/USERNAME/REPOSITORY_NAME/commits7edc7302bbb6f0884e6652a429e00705f64413bb)) | ||||
| * don't show preset_type special vis if no presets are given ([cf3b414](https://github.com/USERNAME/REPOSITORY_NAME/commitscf3b4145ff68871a2040b15ccb6d030b59c448ad)) | ||||
| * don't show radiobuttons if only one option is available ([8e68ca0](https://github.com/USERNAME/REPOSITORY_NAME/commits8e68ca03ab33cf91df83f1e1d2750723cfb0370b)) | ||||
| * don't store location 0,0 to prevent movement or cursor in addNew-dialog ([c19317b](https://github.com/USERNAME/REPOSITORY_NAME/commitsc19317bd04a10db89ecbb95eda9b3156f50c395b)) | ||||
| * don't throw an error if there is no parent element which can be scrolled ([3166918](https://github.com/USERNAME/REPOSITORY_NAME/commits3166918551aab57bdf0777e7bd378003779f8c10)) | ||||
| * drag & drop for file selector ([5be24db](https://github.com/USERNAME/REPOSITORY_NAME/commits5be24dbef1647cd2c6c869d86ea5b37f0e072106)) | ||||
| * dynamic filtering with non-string values ([58b94c3](https://github.com/USERNAME/REPOSITORY_NAME/commits58b94c38e50c5a9c66ac248fe8117b19bac7d05a)) | ||||
| * effectively show `contact:website` in title icons ([0027299](https://github.com/USERNAME/REPOSITORY_NAME/commits0027299a3e373e9cd19deec0b93dd7a7599ff78a)) | ||||
| * emit warning for invalid suggestions ([56ba426](https://github.com/USERNAME/REPOSITORY_NAME/commits56ba426ab5bb2f10ac38776728a67ff4558e0cfa)) | ||||
| * enable editing questions (and settings) again (oopsie) ([d079ba9](https://github.com/USERNAME/REPOSITORY_NAME/commitsd079ba91aa29395262b8084f811eec26e51750b9)) | ||||
| * enable external data sources from the ELI ([5ea0804](https://github.com/USERNAME/REPOSITORY_NAME/commits5ea08040d7ec40abaabf849ef20771c1a5112637)) | ||||
| * enable login on index screen ([aface6a](https://github.com/USERNAME/REPOSITORY_NAME/commitsaface6aea7f1774b62c9218e64cd65bf77b97c0b)) | ||||
| * enable rainbow question again, fix [#1453](https://github.com/pietervdvn/MapComplete/issues/1453) ([af447a9](https://github.com/USERNAME/REPOSITORY_NAME/commitsaf447a948f3d425565afe5620a97123111d6bf91)) | ||||
| * enable settings again, fix [#1815](https://github.com/pietervdvn/MapComplete/issues/1815) ([a118c29](https://github.com/USERNAME/REPOSITORY_NAME/commitsa118c295d641852584bbd16f07c419a3fa896591)) | ||||
| * error server properly names files, add status endpoint ([37c1d46](https://github.com/USERNAME/REPOSITORY_NAME/commits37c1d46dd43a9d75326a4f9187d4bb3846b4a211)) | ||||
| * escape special characters for wikipedia search, might improve [#1500](https://github.com/pietervdvn/MapComplete/issues/1500) ([ec94253](https://github.com/USERNAME/REPOSITORY_NAME/commitsec94253d6c5ef38ee5d5d1c7bc25fff53cd6be82)) | ||||
| * etymology theme now supports multi-apply again, uses lower zoom level for multiselect ([90869a1](https://github.com/USERNAME/REPOSITORY_NAME/commits90869a1c985d992063656d89fe0d95b73184304a)) | ||||
| * Expose all templates ([09a3e7f](https://github.com/USERNAME/REPOSITORY_NAME/commits09a3e7fba1464835bfad061110f4352d9a47e173)) | ||||
| * facade gardens: restore forgottne rendering ([f8fa184](https://github.com/USERNAME/REPOSITORY_NAME/commitsf8fa1841e4df8627a18ee57c7c2cb943176557be)) | ||||
| * fill in freeform value if already set ([e0527e9](https://github.com/USERNAME/REPOSITORY_NAME/commitse0527e964702427014220e2978680e3e6a7cc774)) | ||||
| * fix [#1471](https://github.com/pietervdvn/MapComplete/issues/1471): add option to bench for 'does probably not have an artwork' ([91892d5](https://github.com/USERNAME/REPOSITORY_NAME/commits91892d50c5a5c5071838c8a38a24c60f1f7ed717)) | ||||
| * fix [#1477](https://github.com/pietervdvn/MapComplete/issues/1477). Setting the background caused a map.resize(), which in turn caused the coordinates to be set to 0,0, which caused the location-correction to kick in, moving the location input towards null island ([d95d96f](https://github.com/USERNAME/REPOSITORY_NAME/commitsd95d96fb1ba1a8886f05b118c0650a4af1ae5dd7)) | ||||
| * fix [#1503](https://github.com/pietervdvn/MapComplete/issues/1503), fix [#1571](https://github.com/pietervdvn/MapComplete/issues/1571) ([382f965](https://github.com/USERNAME/REPOSITORY_NAME/commits382f96596ed474bef086d64cabb748257416f2de)) | ||||
| * fix [#1506](https://github.com/pietervdvn/MapComplete/issues/1506), language-URL-parameter works again and is properly documented ([2942a2d](https://github.com/USERNAME/REPOSITORY_NAME/commits2942a2dae77d7c79b3af47b0c518342fa6c87454)) | ||||
| * fix [#1528](https://github.com/pietervdvn/MapComplete/issues/1528): from weblate to theme files did not properly sync ([3c08c12](https://github.com/USERNAME/REPOSITORY_NAME/commits3c08c1297423d74348aa83e5932a7fbd94c260e5)) | ||||
| * fix [#1529](https://github.com/pietervdvn/MapComplete/issues/1529) ([05bf79f](https://github.com/USERNAME/REPOSITORY_NAME/commits05bf79f7616af06aefea8e9f095e2b467d84a5d7)) | ||||
| * fix [#1532](https://github.com/pietervdvn/MapComplete/issues/1532) ([5d00f3c](https://github.com/USERNAME/REPOSITORY_NAME/commits5d00f3cc6a75a22732ec7ffa63d9335d9d75853c)) | ||||
| * fix [#1580](https://github.com/pietervdvn/MapComplete/issues/1580) ([56934b7](https://github.com/USERNAME/REPOSITORY_NAME/commits56934b79f6911da6d182c4e3f28bbd6749932c3e)) | ||||
| * fix [#1596](https://github.com/pietervdvn/MapComplete/issues/1596) ([0727a22](https://github.com/USERNAME/REPOSITORY_NAME/commits0727a228fd8bf9b7dd7ecc5b42d9225eab00bae7)) | ||||
| * fix [#1627](https://github.com/pietervdvn/MapComplete/issues/1627) ([e37f908](https://github.com/USERNAME/REPOSITORY_NAME/commitse37f90855fb3b1fd59d19506aca0e2ccc6a12fb2)) | ||||
| * fix [#1675](https://github.com/pietervdvn/MapComplete/issues/1675) ([65250d7](https://github.com/USERNAME/REPOSITORY_NAME/commits65250d77beec81f9d336302c4b185dcd14518917)) | ||||
| * fix [#1684](https://github.com/pietervdvn/MapComplete/issues/1684); add 'openid' to auth-tokens (will be needed in the future for geovisio integration) ([0a82dd0](https://github.com/USERNAME/REPOSITORY_NAME/commits0a82dd0edfd67c18b2c59c903d506cbb0d46ffc1)) | ||||
| * fix [#1713](https://github.com/pietervdvn/MapComplete/issues/1713) ([2720f5d](https://github.com/USERNAME/REPOSITORY_NAME/commits2720f5dd19deb2ebdcf1eae2229e2fbdd0adc4dd)) | ||||
| * fix [#1779](https://github.com/pietervdvn/MapComplete/issues/1779), add check to prevent similar errors ([417dc16](https://github.com/USERNAME/REPOSITORY_NAME/commits417dc1633e05b1b4776449eb245739232dea975e)) | ||||
| * fix [#1813](https://github.com/pietervdvn/MapComplete/issues/1813). For some reason, importing a .js-file suddenly fails, so ported it to typescript ([cab414e](https://github.com/USERNAME/REPOSITORY_NAME/commitscab414e80895933b4ae874be5fd77b90b8c13f3f)) | ||||
| * fix [#1817](https://github.com/pietervdvn/MapComplete/issues/1817), some more improvements to the loading screen ([6394ee8](https://github.com/USERNAME/REPOSITORY_NAME/commits6394ee8e6800d2cd23d30383ffea9629964c4dc9)) | ||||
| * fix [#1844](https://github.com/pietervdvn/MapComplete/issues/1844) ([e11442e](https://github.com/USERNAME/REPOSITORY_NAME/commitse11442e1009465e8bc3e8823e8d66fe44fb5f9c2)) | ||||
| * fix [#1883](https://github.com/pietervdvn/MapComplete/issues/1883); display underground railway lines in a subtler rendering ([b3299cd](https://github.com/USERNAME/REPOSITORY_NAME/commitsb3299cdd733152820e30c18463e551059654d3fb)) | ||||
| * fix [#1906](https://github.com/pietervdvn/MapComplete/issues/1906) ([3ab1d15](https://github.com/USERNAME/REPOSITORY_NAME/commits3ab1d1591fde7e31efe4e6186af78b71987c1498)) | ||||
| * fix [#1917](https://github.com/pietervdvn/MapComplete/issues/1917) ([8c65448](https://github.com/USERNAME/REPOSITORY_NAME/commits8c6544883469d9634fca285b600fa05706dcdbfa)) | ||||
| * fix [#1917](https://github.com/pietervdvn/MapComplete/issues/1917) ([903a11d](https://github.com/USERNAME/REPOSITORY_NAME/commits903a11d4e7c832ad46d3afd4ed9786df6e6d1331)) | ||||
| * fix anonymous reviews; fix [#1868](https://github.com/pietervdvn/MapComplete/issues/1868) ([073cd69](https://github.com/USERNAME/REPOSITORY_NAME/commits073cd692e456ae63999bfc2770d0c204dc8a1793)) | ||||
| * fix back-button on the 404-page, remove some obsolete classes ([006f695](https://github.com/USERNAME/REPOSITORY_NAME/commits006f69561a08a1c3a3577ada83e9b3954d8332f2)) | ||||
| * fix bug icon ([1fea2b5](https://github.com/USERNAME/REPOSITORY_NAME/commits1fea2b56be82e8a9a5db2683ee55a5a81ec7e7f2)) | ||||
| * fix bug with incorrect translation context for themes ([368f9ad](https://github.com/USERNAME/REPOSITORY_NAME/commits368f9ad0c83eaeb40d4f7ae293d73d11714271e0)) | ||||
| * fix build ([0d705b9](https://github.com/USERNAME/REPOSITORY_NAME/commits0d705b97277a7c6cba5a57d071aeaace1a24fc5a)) | ||||
| * fix crash in studio ([b18d575](https://github.com/USERNAME/REPOSITORY_NAME/commitsb18d575ade434ec51a33684ff365ede7b93cfa79)) | ||||
| * fix dissappearing items to apply ([a935c03](https://github.com/USERNAME/REPOSITORY_NAME/commitsa935c03631614390a1ab43248f51e6ba0eb26956)) | ||||
| * fix domain name ([301f00f](https://github.com/USERNAME/REPOSITORY_NAME/commits301f00f6aef727981e2faa73e2093710ac25c337)) | ||||
| * fix file drag and drop, allow entire featurePopup for file drop ([859faea](https://github.com/USERNAME/REPOSITORY_NAME/commits859faead7fd8c6fa5ae73b70e41a753f34dfd5ff)) | ||||
| * fix icons in mappings which use a builtin svg ([ab28fbe](https://github.com/USERNAME/REPOSITORY_NAME/commitsab28fbe35c97de56e765bc3b35277489aebb1872)) | ||||
| * fix incorrectly linked translation in privacy policy ([e2aaa7d](https://github.com/USERNAME/REPOSITORY_NAME/commitse2aaa7d435ee91d20a62e8380300ec27418e93c1)) | ||||
| * fix link image action ([ce55b4c](https://github.com/USERNAME/REPOSITORY_NAME/commitsce55b4c7d8659044b93a03afaaa37d272a6b48ab)) | ||||
| * fix maps ([e48571a](https://github.com/USERNAME/REPOSITORY_NAME/commitse48571a80a03418d5c0c61304dbb166a67740ddc)) | ||||
| * fix move dialog ([084cd86](https://github.com/USERNAME/REPOSITORY_NAME/commits084cd86b71bbc26e3b7542a5f16ecc1715275a50)) | ||||
| * fix multi-visualisation ([872e36d](https://github.com/USERNAME/REPOSITORY_NAME/commits872e36dffa6810f599e06778010f8b00056b976c)) | ||||
| * fix nearby drinking water fountain detection ([13ebcff](https://github.com/USERNAME/REPOSITORY_NAME/commits13ebcffab102fdcda6263c22cdd12bc22a6f86f7)) | ||||
| * fix nearby drinking water fountain detection ([a5276eb](https://github.com/USERNAME/REPOSITORY_NAME/commitsa5276eb4e67ed939e5b34ad7ffca61d6e41d679d)) | ||||
| * fix query:licenses ([e0ee3ed](https://github.com/USERNAME/REPOSITORY_NAME/commitse0ee3edf71388614a1bc07dc43aaf18def1a630e)) | ||||
| * fix rainbow crossings theme ([5b29177](https://github.com/USERNAME/REPOSITORY_NAME/commits5b291777be5a1aa4826ba894af76dbf4c09b9a7c)) | ||||
| * fix reverse tabnabbing in most cases, add rel=noopener to most links to untrusted content ([d9b8257](https://github.com/USERNAME/REPOSITORY_NAME/commitsd9b8257e47f7c2e2ce06e4a0fcad8830764dae8e)) | ||||
| * fix scrolling for 'addNewPoint' ([637cebe](https://github.com/USERNAME/REPOSITORY_NAME/commits637cebefc7685d64ae5286c2a5f63afb3193a2db)) | ||||
| * fix scrolling for 'addNewPoint' ([f697d29](https://github.com/USERNAME/REPOSITORY_NAME/commitsf697d292a3ab6bf3114d5f7055c908203efbc8e0)) | ||||
| * fix settings menu ([2b728fd](https://github.com/USERNAME/REPOSITORY_NAME/commits2b728fdf8bd6effce1682119f7f0d67a13d1c97d)) | ||||
| * fix styling of translate button in titles ([0a8164c](https://github.com/USERNAME/REPOSITORY_NAME/commits0a8164c378ca4aaa1e34dc3bbd4e2741e5bc6318)) | ||||
| * fix tests; use OAuth client id from dedicated MapComplete account ([fc9dd46](https://github.com/USERNAME/REPOSITORY_NAME/commitsfc9dd462399a3b7ed8959c38c4a97f24895f9ca8)) | ||||
| * fix translate icon, fix [#1832](https://github.com/pietervdvn/MapComplete/issues/1832) ([064c601](https://github.com/USERNAME/REPOSITORY_NAME/commits064c60163c19e55d098e1b1061cf3b8df3dcf782)) | ||||
| * fix UK-Addresses themes again ([370b200](https://github.com/USERNAME/REPOSITORY_NAME/commits370b200bb33f26db448e5d3feda2107f2224d232)) | ||||
| * fix updating of styles ([650c1a6](https://github.com/USERNAME/REPOSITORY_NAME/commits650c1a675c783179482338f449ca1202246916a0)) | ||||
| * fix validation of question input; remove some obsolete logging; stabilize output of generate:translations wrt newlines ([1f39ba9](https://github.com/USERNAME/REPOSITORY_NAME/commits1f39ba9ab50f63e04be89f676aa82c04d5bb2f94)) | ||||
| * fixes to etymology: load wikidata on mobile (which uses m.wikidata.org, tripping the CSP); fix 'upload image of the streetsign' parameters ([480956d](https://github.com/USERNAME/REPOSITORY_NAME/commits480956d45dc767c77848ba32b176af373e73060a)) | ||||
| * force downloading (without cache) before uploading ([b85b2ac](https://github.com/USERNAME/REPOSITORY_NAME/commitsb85b2ace0b373aeae1b9cef8e748ddea7cd3ca5c)) | ||||
| * force redrawing the questions in a questionbox to avoid rendering artefacts and unselectable items ([f7e2dc7](https://github.com/USERNAME/REPOSITORY_NAME/commitsf7e2dc7457f366d9cf4722beccfe6b16467ab435)) | ||||
| * generate layeroverview ([ce654cb](https://github.com/USERNAME/REPOSITORY_NAME/commitsce654cbcf9d7164121ee539836c3f7775d93365d)) | ||||
| * generate layeroverview ([e71a1c7](https://github.com/USERNAME/REPOSITORY_NAME/commitse71a1c7a3d011b921c6ff08dcc54f93dd84971dc)) | ||||
| * generateCSP ([a612d4e](https://github.com/USERNAME/REPOSITORY_NAME/commitsa612d4e1c2f6469c7b2d1fc66c8fc416ccdcac1a)) | ||||
| * generating layeroverview; performance: do not try to download ratings if no ratings element is present ([fc62d41](https://github.com/USERNAME/REPOSITORY_NAME/commitsfc62d41e1b832278bb0c846ffcaa971273419730)) | ||||
| * giving a review is possible again ([0879ff9](https://github.com/USERNAME/REPOSITORY_NAME/commits0879ff97ed4b0b5de572dbf50cc45433b60423f2)) | ||||
| * giving a review is possible again ([a75fc0d](https://github.com/USERNAME/REPOSITORY_NAME/commitsa75fc0d21550495ea2e579922af9b27b2b2a6e22)) | ||||
| * gps-icon should turn into an arrow again ([ef93ad1](https://github.com/USERNAME/REPOSITORY_NAME/commitsef93ad126f5c6b973fb2f66c368522ebdee07543)) | ||||
| * handle NBSP in svg ([4190bf7](https://github.com/USERNAME/REPOSITORY_NAME/commits4190bf79339330601b4d6d426c45cfc6e431ef61)) | ||||
| * hash would not clear because the update method unregistered itself ([8dd7f34](https://github.com/USERNAME/REPOSITORY_NAME/commits8dd7f34ad733080e9e5e648a91942528d96857ed)) | ||||
| * hidden theme link not working ([d5e128b](https://github.com/USERNAME/REPOSITORY_NAME/commitsd5e128b1ed71fb7be7402bbe4ed86edcd6e5a6b0)) | ||||
| * hide 'addnewpoint'-icon when closing the dialog ([499ad85](https://github.com/USERNAME/REPOSITORY_NAME/commits499ad85f1efd0aefd2cf757198eaef5af037c7ee)) | ||||
| * hide some elements of the UI if they are disabled by a featureSwitch ([17503d5](https://github.com/USERNAME/REPOSITORY_NAME/commits17503d5bfb63c5c03968c96f15c2c5a674a3ede3)) | ||||
| * hide tag_apply_button when applied ([622df2d](https://github.com/USERNAME/REPOSITORY_NAME/commits622df2df19ce4fa7049447995194d0f28b91d59f)) | ||||
| * icons for rental in cyclofix theme ([02064a2](https://github.com/USERNAME/REPOSITORY_NAME/commits02064a2d8078b07aeb9e282700018c86638c4683)) | ||||
| * ifnot-value would show up together with the 'if'-value ([15f1a93](https://github.com/USERNAME/REPOSITORY_NAME/commits15f1a9362c624d3fec9680efa3e38edf912cbaf1)) | ||||
| * import ([98ca6aa](https://github.com/USERNAME/REPOSITORY_NAME/commits98ca6aa8aaac923b57d12f52b41f5ee13412b0a2)) | ||||
| * improve background layer switching code, might improve [#1481](https://github.com/pietervdvn/MapComplete/issues/1481) ([33fa11f](https://github.com/USERNAME/REPOSITORY_NAME/commits33fa11fc1728f017644977be2181c25441a76e18)) | ||||
| * improve deployscript for hetzner ([dcd02e9](https://github.com/USERNAME/REPOSITORY_NAME/commitsdcd02e9ad772346bc3f69ebd9563af80ea30810e)) | ||||
| * improve error message ([7f6c1f0](https://github.com/USERNAME/REPOSITORY_NAME/commits7f6c1f06e23cb249d2eadda9be08b1cafc680d30)) | ||||
| * improve first-sentence ([7aee442](https://github.com/USERNAME/REPOSITORY_NAME/commits7aee442ae49a7a68821917de9580ce9e62105edf)) | ||||
| * improve functionality of GRB-theme (WIP) ([b86e291](https://github.com/USERNAME/REPOSITORY_NAME/commitsb86e2910baba5fe37cf5c0f53a64966c85d159ce)) | ||||
| * improve optimization; add tests ([595503c](https://github.com/USERNAME/REPOSITORY_NAME/commits595503cfc35c8db3cb4ee4b28f82b7c91ee75dff)) | ||||
| * improve parsing of possible mapillary values ([3d54a83](https://github.com/USERNAME/REPOSITORY_NAME/commits3d54a8392be94a369bf388dad0f83f60fb5a5474)) | ||||
| * improve PDF-output functionality ([215286a](https://github.com/USERNAME/REPOSITORY_NAME/commits215286a5af46c58a197bf85b9561c26eff5bd8fe)) | ||||
| * include 'source' and tile URLs from vector tile sources into CSP, see [#1652](https://github.com/pietervdvn/MapComplete/issues/1652) ([09504e1](https://github.com/USERNAME/REPOSITORY_NAME/commits09504e18ecb4b85ceb6562fcdb0e21034e496ad8)) | ||||
| * include japanese dot as sentence separator ([d2c6689](https://github.com/USERNAME/REPOSITORY_NAME/commitsd2c668922b7ac5dc682461c6789fbbdb37fad8c3)) | ||||
| * include lod-proxy in CSp ([087c099](https://github.com/USERNAME/REPOSITORY_NAME/commits087c099e2e633237b00748ee5d3dbba454999881)) | ||||
| * incorrect path in error message ([5da8952](https://github.com/USERNAME/REPOSITORY_NAME/commits5da895276c5d5447bea7094d81d371e99458ff7e)) | ||||
| * **index:** search got confused as it didn't have an id for the list items ([6f42884](https://github.com/USERNAME/REPOSITORY_NAME/commits6f4288476eebf7b0e8af6177bff066d06f3823dc)) | ||||
| * init indexedFeatureStore with a default map as to fix crash upon loading if a pending change is present ([377c411](https://github.com/USERNAME/REPOSITORY_NAME/commits377c411143c577752014842bbc205093c9ebfdc4)) | ||||
| * initialize user settings with a strict value to be able to override it ([57e0093](https://github.com/USERNAME/REPOSITORY_NAME/commits57e0093e478f541c46145a72dbfb9fc70d467633)) | ||||
| * interpret missing level tag as 'level=0' ([5d8b422](https://github.com/USERNAME/REPOSITORY_NAME/commits5d8b42216236d49b6bcf328e8a009884f697e312)) | ||||
| * keep map mouse-interactive when panning with arrow keys, some CSS-tweaks ([512bb4c](https://github.com/USERNAME/REPOSITORY_NAME/commits512bb4c00e1fed39927c8bd40aaef378db64d648)) | ||||
| * layers now compile again ([1c99173](https://github.com/USERNAME/REPOSITORY_NAME/commits1c99173f32112b332ce38f926623fa2c27f89ab8)) | ||||
| * lines with opacity have colour again ([f0d9365](https://github.com/USERNAME/REPOSITORY_NAME/commitsf0d9365e06eb533f0bf0a47c21ce58834fc5cabd)) | ||||
| * load element if set in the hash ([9090dda](https://github.com/USERNAME/REPOSITORY_NAME/commits9090dda6889a4e4eda33b9d634fb22da3aedadd8)) | ||||
| * load translations for PDF-export internally ([d103911](https://github.com/USERNAME/REPOSITORY_NAME/commitsd103911d143803c9e0373a673110009a785f94da)) | ||||
| * loading oneway arrows on multiple layers; fix nullpointer ([1678427](https://github.com/USERNAME/REPOSITORY_NAME/commits16784270ce45560520d4e9b19d81bd04da7033ee)) | ||||
| * long domain names cause horizontal scroll with taghints ([eb47c4d](https://github.com/USERNAME/REPOSITORY_NAME/commitseb47c4d5b9a0379cc87b773c73638965fb247ee8)) | ||||
| * make levelselector clickable again, fix [#1416](https://github.com/pietervdvn/MapComplete/issues/1416) ([8b5daef](https://github.com/USERNAME/REPOSITORY_NAME/commits8b5daefc9063c818eeea6e044167787feb31d4b5)) | ||||
| * make sure that a 'hidden' tagRendering cannot be accidentally selected ([5585f02](https://github.com/USERNAME/REPOSITORY_NAME/commits5585f02cad0c737f99c16433d7a61f3a5f3743d3)) | ||||
| * make sure that the passed-in-location of the map is respected, prevents random jumps in the location input ([5c01f6a](https://github.com/USERNAME/REPOSITORY_NAME/commits5c01f6ada95ab1410310d4f084f593b6f561cc53)) | ||||
| * make sure the background is always below the rendered layers ([2769747](https://github.com/USERNAME/REPOSITORY_NAME/commits2769747737964a509897ccce4702a9ea9ebefcd8)) | ||||
| * make text a translation ([418e0cd](https://github.com/USERNAME/REPOSITORY_NAME/commits418e0cd149f1af50527e1f1f2c6fbec254779681)) | ||||
| * make top and bottom panels click-through ([0db6a89](https://github.com/USERNAME/REPOSITORY_NAME/commits0db6a8977716e33bfa775bd731e994bf9facf0c9)) | ||||
| * maproulette endpoints ([bbf6d62](https://github.com/USERNAME/REPOSITORY_NAME/commitsbbf6d62c866950476ee34ff735352d8cc38daa7a)) | ||||
| * maproulette import flow ([5f7cc35](https://github.com/USERNAME/REPOSITORY_NAME/commits5f7cc351c9fb3743ab1cba65327611f730440ec5)) | ||||
| * maproulette item ([b6b77da](https://github.com/USERNAME/REPOSITORY_NAME/commitsb6b77daef78bdc111530ec1fb17820c4fb042e57)) | ||||
| * markers can rotate again ([5e453d5](https://github.com/USERNAME/REPOSITORY_NAME/commits5e453d5cf19fb63ef7516ad11e53aad4e0006bdc)) | ||||
| * markers now appear correctly on PNG exports ([e5b3e15](https://github.com/USERNAME/REPOSITORY_NAME/commitse5b3e15c43672933fc3f1f6a59960514961ce377)) | ||||
| * MC would crash if a pending change was present; remember preferences in order to reuse the changeset ([f2375f4](https://github.com/USERNAME/REPOSITORY_NAME/commitsf2375f4877316193132f4ae4189ef5b65e7ef710)) | ||||
| * metatagging of width theme ([c4ff70c](https://github.com/USERNAME/REPOSITORY_NAME/commitsc4ff70ce656e941574a31120f3971375ecc7ba4c)) | ||||
| * minimap takes to much space ([037c593](https://github.com/USERNAME/REPOSITORY_NAME/commits037c593f61b3adfd4ac314aef063e20049ce3cb7)) | ||||
| * missing commas in elevator.json ([229e605](https://github.com/USERNAME/REPOSITORY_NAME/commits229e60538b4d9002875a63ad877324941dd4647d)) | ||||
| * Move image preview below FloatOver, the popup otherwise hides the image preview ([df1fef2](https://github.com/USERNAME/REPOSITORY_NAME/commitsdf1fef28c02b08a1ba13e4fbd8bc6f15d6c7913c)) | ||||
| * move lastClick to bottom anchor ([beea00c](https://github.com/USERNAME/REPOSITORY_NAME/commitsbeea00cbf079ad0c109c78d2828b7359479f0717)) | ||||
| * multianswer with a free textfield did not activate ([649ed1f](https://github.com/USERNAME/REPOSITORY_NAME/commits649ed1f53a7948bafda45aab36ed214d1808b51e)) | ||||
| * multianswer would not accept last option ([6f5c71e](https://github.com/USERNAME/REPOSITORY_NAME/commits6f5c71ed5a17147d5fc8c9da9f194a61f18fbb30)) | ||||
| * no more duplicate link showing up, avoid crash ([7be01d5](https://github.com/USERNAME/REPOSITORY_NAME/commits7be01d5b8f789576b8b74bf07824ed660d9339a1)) | ||||
| * normalization of URLs, formatting, stabilize inputHelper ([441c4df](https://github.com/USERNAME/REPOSITORY_NAME/commits441c4df4f6d3e26cf866418e5ddaea90bedd2c6a)) | ||||
| * only check browserLanguage if navigator is defined; fixes tests ([a1fa3b4](https://github.com/USERNAME/REPOSITORY_NAME/commitsa1fa3b494259d7cc8f4873af31d5c9a987cef972)) | ||||
| * only show 'newly created' if version number is 1 or unset ([1a78ecb](https://github.com/USERNAME/REPOSITORY_NAME/commits1a78ecb85806db67f6e51e39a0882c038589a058)) | ||||
| * only show fixmes on high zoom level (performance), add the option to remove a fixme ([2f5091a](https://github.com/USERNAME/REPOSITORY_NAME/commits2f5091a8cb484681d69db0ea6578dd7d26eacef7)) | ||||
| * only show website icon if a website is known ([46244b8](https://github.com/USERNAME/REPOSITORY_NAME/commits46244b8345c0005f3b3648a3379149d243cfe897)) | ||||
| * open correct menu if set in hash ([7a95334](https://github.com/USERNAME/REPOSITORY_NAME/commits7a953348824f6d601c16a0e632aac8353e0283fb)) | ||||
| * open settings again ([894d857](https://github.com/USERNAME/REPOSITORY_NAME/commits894d857cdc35864bbd778925ef84a042d6e04aaa)) | ||||
| * opening the popup if defined in the hash ([196d76d](https://github.com/USERNAME/REPOSITORY_NAME/commits196d76d9dc8736667956ad803cf5aed15f3b682e)) | ||||
| * ordering of baselayers ([8379a89](https://github.com/USERNAME/REPOSITORY_NAME/commits8379a894d0fc826e33d24d05b3e44852556a60b1)) | ||||
| * output tailwind into 'public/css/' instead of 'css/' ([a1f5032](https://github.com/USERNAME/REPOSITORY_NAME/commitsa1f50322321d878d823ac3fc70021683dbb6ab69)) | ||||
| * overpass feature source will redownload if the layers to download have changed ([bae4974](https://github.com/USERNAME/REPOSITORY_NAME/commitsbae49744d95e350f7b4c1b031b8e4a178879deea)) | ||||
| * overpass feature source will redownload if the layers to download have changed ([7ed5307](https://github.com/USERNAME/REPOSITORY_NAME/commits7ed53076fe206f0e260d329844eb1d8898206b01)) | ||||
| * pass along initial coordinates with the location input, prevents flashing of the ocean; fix [#1469](https://github.com/pietervdvn/MapComplete/issues/1469) ([790c276](https://github.com/USERNAME/REPOSITORY_NAME/commits790c2767e2dfbdca65f56ec95bf3cd69a98e4301)) | ||||
| * pass properties of snapping feature in newPointInput to render correctly ([c80085d](https://github.com/USERNAME/REPOSITORY_NAME/commitsc80085dfda58c9eb73fda466d8d81731095f1672)) | ||||
| * personal theme crashed due to unset defaultIcon ([6075b01](https://github.com/USERNAME/REPOSITORY_NAME/commits6075b016485808352ae84a12d5b872482693411a)) | ||||
| * png correctly outputs all markers now ([905f796](https://github.com/USERNAME/REPOSITORY_NAME/commits905f796baa26b8eedc177ce7f58353331e432535)) | ||||
| * precise location input picks correct location (and not the previous click) ([6d337e8](https://github.com/USERNAME/REPOSITORY_NAME/commits6d337e877589f49ed1b4b1dc60ae232dd6634342)) | ||||
| * preciseInputPicker will show correct icon if snapped or not snapped to a wall ([9870391](https://github.com/USERNAME/REPOSITORY_NAME/commits98703914ca48afefb614e1f19eb15663ab3280b7)) | ||||
| * presets will now also show if the layer doesn't have a name and is shown ([3f18ce7](https://github.com/USERNAME/REPOSITORY_NAME/commits3f18ce7fd387a4f60db5863cfa4f759eaf34edff)) | ||||
| * pressing enter would ignore input ([95c41d6](https://github.com/USERNAME/REPOSITORY_NAME/commits95c41d672ee7f5556645925d09610f0bf36ee1c0)) | ||||
| * probably fix black area outlines ([0bd9e1e](https://github.com/USERNAME/REPOSITORY_NAME/commits0bd9e1e667e659cf1b856e2aece94696089b9a20)) | ||||
| * properly add 'self' to connect-src ([441a9a5](https://github.com/USERNAME/REPOSITORY_NAME/commits441a9a5ed9e5b6a37356e0f15967f66799419572)) | ||||
| * properly add 'self' to connect-src (take 2) ([c823e74](https://github.com/USERNAME/REPOSITORY_NAME/commitsc823e745a3e0b562ddfdb489541182ed17449336)) | ||||
| * properly show hidden themes, drop 'custom theme generator'-button, drop 'professional services' button ([93adfd3](https://github.com/USERNAME/REPOSITORY_NAME/commits93adfd3da592cbf2f177123802f69a7c4fc72637)) | ||||
| * questions are shown if the condition is met, fix [#1630](https://github.com/pietervdvn/MapComplete/issues/1630) ([8500276](https://github.com/USERNAME/REPOSITORY_NAME/commits85002766a8d3b8d0d4ad31410437bad72ae7ca03)) | ||||
| * questions now appear when reselecting an item ([0c5e88d](https://github.com/USERNAME/REPOSITORY_NAME/commits0c5e88df7b5bdad82bf2e67b45aa817e29ca4fde)) | ||||
| * questions of charging stations are now shown separately again ([fe9afb4](https://github.com/USERNAME/REPOSITORY_NAME/commitsfe9afb415ff68c0b8e35fcb41fc68330a41a2b08)) | ||||
| * questions of charging stations are now shown separately again ([30af019](https://github.com/USERNAME/REPOSITORY_NAME/commits30af019cdfe8dea845e92645d0ec859e439a2b90)) | ||||
| * re-enable generate command ([13a35b9](https://github.com/USERNAME/REPOSITORY_NAME/commits13a35b94202ef775598fc7130b60b8839cef514a)) | ||||
| * re-enable reservation question ([cebd428](https://github.com/USERNAME/REPOSITORY_NAME/commitscebd428e9ec58b708637ae34055a5c689e3004cd)) | ||||
| * re-enable speed and heading in GPS-cursor ([ff47d75](https://github.com/USERNAME/REPOSITORY_NAME/commitsff47d75d41fc1fd4f576cd483150fe27cb3942d3)) | ||||
| * readd missing files ([7d802d4](https://github.com/USERNAME/REPOSITORY_NAME/commits7d802d418bd52bf29b147c245e548a7704e2d45f)) | ||||
| * redraw line layers on background change ([6e5fcde](https://github.com/USERNAME/REPOSITORY_NAME/commits6e5fcdef205d4616305d2bca39a1904d60954003)) | ||||
| * reinstantiate uploads ([871d511](https://github.com/USERNAME/REPOSITORY_NAME/commits871d511616ae48055095e8c3485db762adc6b140)) | ||||
| * remember map rotation setting ([c764839](https://github.com/USERNAME/REPOSITORY_NAME/commitsc764839fdcefff316b9458067e462f282a2fe7d5)) | ||||
| * remember previous, externally loaded themes ([b61c0a1](https://github.com/USERNAME/REPOSITORY_NAME/commitsb61c0a11807585a1832ff410be362e74ae2a810b)) | ||||
| * remove 'icons.defaults' from favourite layers, cleanup of various small typing errors ([e8569ec](https://github.com/USERNAME/REPOSITORY_NAME/commitse8569ec5404e632ebae0c71b040c1d9a9b891583)) | ||||
| * remove all html-attributes from shortDescriptions in the theme overview ([39572f4](https://github.com/USERNAME/REPOSITORY_NAME/commits39572f4767f270a4a5a40d8973ae9824ac3a43d1)) | ||||
| * remove empty license files, fix [#1135](https://github.com/pietervdvn/MapComplete/issues/1135) ([2eabfea](https://github.com/USERNAME/REPOSITORY_NAME/commits2eabfea8af22a3810487cdacd68d850f4432e624)) | ||||
| * remove ghost bike translations from translation files and resync them, should fix the build ([0487497](https://github.com/USERNAME/REPOSITORY_NAME/commits0487497e17ace04d381d2c9d43b02f8032874e2f)) | ||||
| * Remove isOpen from defaults ([11b8c61](https://github.com/USERNAME/REPOSITORY_NAME/commits11b8c619c165f6d66fed03061ad9afa052a7a096)) | ||||
| * remove no longer needed translation ([0e893f7](https://github.com/USERNAME/REPOSITORY_NAME/commits0e893f7903d68f37936c9b87883ffdc31b9ff088)) | ||||
| * remove no longer needed translations ([3c74a94](https://github.com/USERNAME/REPOSITORY_NAME/commits3c74a94eee676a8ff0fc2b0b85f1bf8d7487d216)) | ||||
| * remove trailing ';' for opening hours, as spotted by Midgard ([36b086e](https://github.com/USERNAME/REPOSITORY_NAME/commits36b086e4141e70253e68aec59d099638d46d14af)) | ||||
| * remove unneeded translation download, fix PDF-export ([1930f7b](https://github.com/USERNAME/REPOSITORY_NAME/commits1930f7bb53f4d477c2529471b478db77ddcc012b)) | ||||
| * remove unneeded URL parameter ([365d573](https://github.com/USERNAME/REPOSITORY_NAME/commits365d573b7c0d36bfa675cc637e6223abe770f3a0)) | ||||
| * remove unused property ([99b0135](https://github.com/USERNAME/REPOSITORY_NAME/commits99b0135fa9b44639189a1c9e690cf5829010c6e7)) | ||||
| * rendering of 'inline' was not dynamic ([60d825d](https://github.com/USERNAME/REPOSITORY_NAME/commits60d825de3c94afad79351f492c691af3d2109f60)) | ||||
| * rendering of indoor room icons ([6235e23](https://github.com/USERNAME/REPOSITORY_NAME/commits6235e231922b64adba86b012422175347a9887c1)) | ||||
| * replace all mentions of 'mapcomplete.osm.be' with 'mapcomplete.org' ([7321004](https://github.com/USERNAME/REPOSITORY_NAME/commits7321004c19212b0849394b9d541583e52e4ec5e6)) | ||||
| * reset translations ([ad952fc](https://github.com/USERNAME/REPOSITORY_NAME/commitsad952fcaf284b1669cee4657389cf36a52ee334c)) | ||||
| * resize svgs ([89186c8](https://github.com/USERNAME/REPOSITORY_NAME/commits89186c8610185e56bf9afa78b2765c45b2a939bd)) | ||||
| * restore loading of custom themes ([bcb2ecf](https://github.com/USERNAME/REPOSITORY_NAME/commitsbcb2ecf6ab6c372cd41dd79780b027c79cb4a49e)) | ||||
| * reviews need an uncertainty ([bc96288](https://github.com/USERNAME/REPOSITORY_NAME/commitsbc96288d3d75f24fb12620d050f472029c5df135)) | ||||
| * rotation of the GPS-marker ([bbc7698](https://github.com/USERNAME/REPOSITORY_NAME/commitsbbc7698b1281ad654c00c54bf58b9de7ba1e71e6)) | ||||
| * safari-specific fixes ([059ef2c](https://github.com/USERNAME/REPOSITORY_NAME/commits059ef2c1bc2ea5fb377a0f1e253652c0c243e250)) | ||||
| * schemaBasedArray ([a7599f6](https://github.com/USERNAME/REPOSITORY_NAME/commitsa7599f6d7f5a061cb1971ee8170f9f039ea2e2de)) | ||||
| * set share capability to 'no' if running from console, fixes tests ([af7bc0f](https://github.com/USERNAME/REPOSITORY_NAME/commitsaf7bc0f7ce686147608256e1c5dd0a9d24388945)) | ||||
| * setting the language does not overwrite the user setting anymore ([c6283ac](https://github.com/USERNAME/REPOSITORY_NAME/commitsc6283ac7205f69c1a42e8cf16e5f4f1ab2c239f8)) | ||||
| * share button ([84cbd2f](https://github.com/USERNAME/REPOSITORY_NAME/commits84cbd2fbc00d3d9e386a3b485dd4fa61c8000722)) | ||||
| * show add new point fullscreen again ([aad31f6](https://github.com/USERNAME/REPOSITORY_NAME/commitsaad31f649e733d108c63297aa6d25bf87ac73c34)) | ||||
| * show preferred languages (according to OSM) in usersettings ([0ea103f](https://github.com/USERNAME/REPOSITORY_NAME/commits0ea103f24780ef2c6ba191cbd4891716bb2d86f6)) | ||||
| * show tags that will be applied if setting is 'full' ([0b82661](https://github.com/USERNAME/REPOSITORY_NAME/commits0b826612e93c0b120f99b6927c57c13b60c2835f)) | ||||
| * show tags that will be deleted with strikethrough in TagHint ([15a481f](https://github.com/USERNAME/REPOSITORY_NAME/commits15a481f864b4afb7b650fd150f0ce7d46c9d1e78)) | ||||
| * size of new element picker map ([#1701](https://github.com/pietervdvn/MapComplete/issues/1701)), add debug info about GPS ([9407ed3](https://github.com/USERNAME/REPOSITORY_NAME/commits9407ed35b109660a9b23c2b71fd15f3ecf1dc0d0)) | ||||
| * small bug in script ([795d6d2](https://github.com/USERNAME/REPOSITORY_NAME/commits795d6d2e072d13c1d64259ac8ff960d618c2deba)) | ||||
| * small CSS fix ([1b8970b](https://github.com/USERNAME/REPOSITORY_NAME/commits1b8970b34aae337edfe5567315cc36319add1ff7)) | ||||
| * SPDX-compliance ([6c4b464](https://github.com/USERNAME/REPOSITORY_NAME/commits6c4b464f14ed2851980da34e12df355cb8137ba7)) | ||||
| * special loginbutton now actually works ([6a4def6](https://github.com/USERNAME/REPOSITORY_NAME/commits6a4def67ca97b55beb26445a0ddb713149527cc5)) | ||||
| * stabilize change injector ([efdff63](https://github.com/USERNAME/REPOSITORY_NAME/commitsefdff6335f5075f74156b5b1258ae69ab058705b)) | ||||
| * stabilize opening hours, make delete clickable again ([cc60d2a](https://github.com/USERNAME/REPOSITORY_NAME/commitscc60d2a5fbae3a14d63aa859fa02e2b09e1e48f9)) | ||||
| * stabilize rendering of linelayers ([055e5a8](https://github.com/USERNAME/REPOSITORY_NAME/commits055e5a801b60276cdfcf31870fae29e6af30521b)) | ||||
| * style issue, types ([5932dc7](https://github.com/USERNAME/REPOSITORY_NAME/commits5932dc7ad4b532c45d6e6bff95f46f6cb26645b2)) | ||||
| * style of tabbedGroup-elements needed an 'important' to work in production ([5a2e54b](https://github.com/USERNAME/REPOSITORY_NAME/commits5a2e54b00a86b4ac0f91b69aa55ff3c36939e8ab)) | ||||
| * style tweaks to link feature ([bd71645](https://github.com/USERNAME/REPOSITORY_NAME/commitsbd71645c04e819a28c355da5c898293092b51068)) | ||||
| * styling issues; refactoring: remove 'SearchAndGo' ([0e81b65](https://github.com/USERNAME/REPOSITORY_NAME/commits0e81b653631a97699ba07ce5d34b61bc4422a5d1)) | ||||
| * styling of OH input, fix [#1489](https://github.com/pietervdvn/MapComplete/issues/1489) ([064f875](https://github.com/USERNAME/REPOSITORY_NAME/commits064f87537f450e40b76d936d7793ea9036b2b181)) | ||||
| * styling of PH-input in OpeningHoursInput, fix [#1422](https://github.com/pietervdvn/MapComplete/issues/1422) ([a9c25d3](https://github.com/USERNAME/REPOSITORY_NAME/commitsa9c25d378a709e3ac7b4a76919ae10cf405dacec)) | ||||
| * substitute name ([408e782](https://github.com/USERNAME/REPOSITORY_NAME/commits408e7826269dc30d97f89e6e1fd097dae69b7923)) | ||||
| * substituteKeys works correctly if newline is in the text, fix 'send email to report broken'-button by porting it to svelte ([b4f65bf](https://github.com/USERNAME/REPOSITORY_NAME/commitsb4f65bf2f7ce2a6993906076353acc11a1d64d94)) | ||||
| * subtleLink should not open in a new tab ([61c417c](https://github.com/USERNAME/REPOSITORY_NAME/commits61c417c546e828dbed2356c35eebfe4cf2ef403d)) | ||||
| * Support contact:email and contact:phone in icons ([7bcefe5](https://github.com/USERNAME/REPOSITORY_NAME/commits7bcefe527ce080b3f7b7c48fdd1a828289b126c3)) | ||||
| * svg image generation script ([f9b1e9b](https://github.com/USERNAME/REPOSITORY_NAME/commitsf9b1e9b2de8f4aa657272d714385c1c7fbfdb3b3)) | ||||
| * temporarily only warn for incomplete translations ([adb5d89](https://github.com/USERNAME/REPOSITORY_NAME/commitsadb5d892fb39cdf63ea65d95ef5079f0efed6324)) | ||||
| * tests ([238de89](https://github.com/USERNAME/REPOSITORY_NAME/commits238de89ad54fd0c8c0d4bf75f49282d7921f21a2)) | ||||
| * tests ([841be16](https://github.com/USERNAME/REPOSITORY_NAME/commits841be16dffd8219713a1bc00b9a8409195a8f82d)) | ||||
| * tests ([1d54356](https://github.com/USERNAME/REPOSITORY_NAME/commits1d543563d702f6af424e1df041191632126ed805)) | ||||
| * tests ([2a73c43](https://github.com/USERNAME/REPOSITORY_NAME/commits2a73c43a5fc652f7d91c8d89cf47d0ce8853ee62)) | ||||
| * the search bar on the theme index was not clickable on wide screens as the 'centermessage' hovered over it invisibly ([af7672a](https://github.com/USERNAME/REPOSITORY_NAME/commitsaf7672a0e00de4e3d75a85678b4528093515fb7e)) | ||||
| * theme compilation ([86d0de3](https://github.com/USERNAME/REPOSITORY_NAME/commits86d0de380644c92fe90f4dd87aa4399074fdc42e)) | ||||
| * **themes:** remove 'unkown' mapping from hydrants, the unkown case is handled by MapComplete ([4850e50](https://github.com/USERNAME/REPOSITORY_NAME/commits4850e5094a49a16d3975795fd1f25a81f2e13a5a)) | ||||
| * turn favourites black again, sync them globally ([14594b2](https://github.com/USERNAME/REPOSITORY_NAME/commits14594b286dd2278bc64ed27f0305b76596d7e190)) | ||||
| * tweaking addNewPoint-flow ([d0e0abd](https://github.com/USERNAME/REPOSITORY_NAME/commitsd0e0abdece560799a9770b74d0992c42ebe89ed6)) | ||||
| * typo ([929093d](https://github.com/USERNAME/REPOSITORY_NAME/commits929093d36f13ab1861d533f4d93152a7ddd1e6dc)) | ||||
| * typo ([2671d01](https://github.com/USERNAME/REPOSITORY_NAME/commits2671d0158983c7befb9f5c8d3e91544a50408c6b)) | ||||
| * typo ([752de10](https://github.com/USERNAME/REPOSITORY_NAME/commits752de107ab6a50f8e513b0c7307b44dc6094d974)) | ||||
| * typo ([8531571](https://github.com/USERNAME/REPOSITORY_NAME/commits8531571c7be653339d752f953a8725d94eec692c)) | ||||
| * typo ([de99f56](https://github.com/USERNAME/REPOSITORY_NAME/commitsde99f56ca8fe34e361a7c6345d147f8295293f57)) | ||||
| * typo ([3a25106](https://github.com/USERNAME/REPOSITORY_NAME/commits3a25106a5ab7bd958cfe731d8e1e959b5b07b23e)) | ||||
| * typo in charging_station.protojson ([21d01a4](https://github.com/USERNAME/REPOSITORY_NAME/commits21d01a46f9164a872145c03fe845233c6cd47f8b)) | ||||
| * typo in elevator.json ([374a4eb](https://github.com/USERNAME/REPOSITORY_NAME/commits374a4eb22211ecfbe8a04569d89b8236f109b8ed)) | ||||
| * typo in filter ([366577f](https://github.com/USERNAME/REPOSITORY_NAME/commits366577f70b40765b3e10ccae222193ca07cae4bb)) | ||||
| * typo in tag ([a903112](https://github.com/USERNAME/REPOSITORY_NAME/commitsa9031129d3dddfdd0ab1d2d83d371b872a0d5180)) | ||||
| * **typo:** s/bick_wal/brick_wall/ ([753efef](https://github.com/USERNAME/REPOSITORY_NAME/commits753efef38f1f1a4f731c0c66408c7adddb26a967)) | ||||
| * undo accidental changes, fix saving preferences ([ff3a7f8](https://github.com/USERNAME/REPOSITORY_NAME/commitsff3a7f8f4372d46b0aba61aa12115da4207f2331)) | ||||
| * units which used a 'string'-validator might not detect the actual denomination. They have now been forbidden and fixed ([7b497f9](https://github.com/USERNAME/REPOSITORY_NAME/commits7b497f991d788c991457f1167d472a77f2789cdc)) | ||||
| * unselect layer, prevents that 'lastClick'-popup opens on map click ([63ffa11](https://github.com/USERNAME/REPOSITORY_NAME/commits63ffa11238766962cab6b1c8cedcd0153504d45e)) | ||||
| * update and simplification of sharescreen, rename some feature switches, remove some no longer relevant feature switches ([96d0367](https://github.com/USERNAME/REPOSITORY_NAME/commits96d036781f55987732629355be118373c363830d)) | ||||
| * upload flow deals better with point reuse: it actually opens the feature now ([c14cbc9](https://github.com/USERNAME/REPOSITORY_NAME/commitsc14cbc9fe95bf1d2432ea7290cae0d0f7a9b6ada)) | ||||
| * uploads were broken ([efd6b30](https://github.com/USERNAME/REPOSITORY_NAME/commitsefd6b30e1b41024ee4b7c0f6cf69a49f87f5da69)) | ||||
| * URL-parameter language disables the language picker, fix [#1506](https://github.com/pietervdvn/MapComplete/issues/1506) ([3ca8ba1](https://github.com/USERNAME/REPOSITORY_NAME/commits3ca8ba18fd6a1569214f5d6298eca291cb8ceefc)) | ||||
| * URL-parameter language disables the language picker, fix [#1506](https://github.com/pietervdvn/MapComplete/issues/1506) ([2f5c89f](https://github.com/USERNAME/REPOSITORY_NAME/commits2f5c89f8c5a7aa7adbe83d1b9cf98e198f9f1aab)) | ||||
| * use api.openstreetmap.org on many places, fix [#1573](https://github.com/pietervdvn/MapComplete/issues/1573) ([8fccf78](https://github.com/USERNAME/REPOSITORY_NAME/commits8fccf784786074e22a4d437dc8a38c58bf54c375)) | ||||
| * use correct backend address (including www.) ([c320239](https://github.com/USERNAME/REPOSITORY_NAME/commitsc320239610f15083d1d050f17e337780621f7dc3)) | ||||
| * use correct branch to deploy ([9c0dac2](https://github.com/USERNAME/REPOSITORY_NAME/commits9c0dac28ad0604026936cc68c5238927978b250a)) | ||||
| * use correct relocation icon again ([cdb1bb2](https://github.com/USERNAME/REPOSITORY_NAME/commitscdb1bb23b8e5df8bd1f2e0732ff14f3bd55935f5)) | ||||
| * use correct snapping ([ec2e0e1](https://github.com/USERNAME/REPOSITORY_NAME/commitsec2e0e1de168f9f4551f86ff73b070a6e4ccdd77)) | ||||
| * use https for extractGraph endpoint ([f89123d](https://github.com/USERNAME/REPOSITORY_NAME/commitsf89123d318ebb24553b842884e0aad3b9adf6570)) | ||||
| * use proper circle for bench and artwork ([e2a56f5](https://github.com/USERNAME/REPOSITORY_NAME/commitse2a56f5e5cc469c95974625f561a4a5229b5cb9a)) | ||||
| * use proper selected element ([dbff953](https://github.com/USERNAME/REPOSITORY_NAME/commitsdbff95309642178dcccb4a0a365a263c722c5a96)) | ||||
| * use theme.html?layout= instead of layout.html if a local deploy is detected ([db67600](https://github.com/USERNAME/REPOSITORY_NAME/commitsdb6760015f69239dc51cc47c866635927cd9dadf)) | ||||
| * use translated value for community index tab ([a3a7c53](https://github.com/USERNAME/REPOSITORY_NAME/commitsa3a7c536fbce04698a05847da429d1bacc851aad)) | ||||
| * use translated value for community index tab ([22ee806](https://github.com/USERNAME/REPOSITORY_NAME/commits22ee806090a8679ea2951d84af47e4de8314925c)) | ||||
| * use www.openstreetmap.org again, it doesnt work ([580b58e](https://github.com/USERNAME/REPOSITORY_NAME/commits580b58e86a974432b068b073a047c22864621126)) | ||||
| 
 | ||||
| 
 | ||||
| ### Theme improvements | ||||
| 
 | ||||
| * a few improvements to velopark ([e7a5712](https://github.com/USERNAME/REPOSITORY_NAME/commitse7a57125d797fdf3c31c66c1e0c54dfc5dc5a304)) | ||||
| * active 'browse and link streetview' on all themes ([eb2a582](https://github.com/USERNAME/REPOSITORY_NAME/commitseb2a582d4910edda5e8dd76d229c0637bc5ac4a5)) | ||||
| * Add 'access=permissive' to charging stations, fixes [#1255](https://github.com/pietervdvn/MapComplete/issues/1255) ([cc70e09](https://github.com/USERNAME/REPOSITORY_NAME/commitscc70e09e11f55c62276fe9fcc5cf4e9033ccc6f5)) | ||||
| * add 'allowMove' everywhere, make 'allowMove' obligated, see [#2121](https://github.com/pietervdvn/MapComplete/issues/2121) ([29d52e0](https://github.com/USERNAME/REPOSITORY_NAME/commits29d52e0fc69f16477fbfd6f5c08900890626f0be)) | ||||
| * add 'artwork' questions to drinking water fountains ([def640f](https://github.com/USERNAME/REPOSITORY_NAME/commitsdef640fb1c97c581e4688c8c0a50f4e295d9458b)) | ||||
| * add 'binding'-service question to copyshops ([7b1ca43](https://github.com/USERNAME/REPOSITORY_NAME/commits7b1ca43266f596c9b9b40a3a86c0f5cf6d213a3e)) | ||||
| * add 'fine-gravel' as option to sport-pitches ([679e371](https://github.com/USERNAME/REPOSITORY_NAME/commits679e371bd470976a41327494004054548e120401)) | ||||
| * add 'hacklab' as option to hackerspaces ([665cd3b](https://github.com/USERNAME/REPOSITORY_NAME/commits665cd3b0dd3bd2ad91c601554417cfec0eec54a2)) | ||||
| * add 'hoops' question to basketball pitches ([4df9632](https://github.com/USERNAME/REPOSITORY_NAME/commits4df9632d7c7093511b6e3b2349ee5d2fd99cb681)) | ||||
| * add 'link' as builtin, available Icon ([7872f22](https://github.com/USERNAME/REPOSITORY_NAME/commits7872f221512797ee82ea1e92455326baaa9874ab)) | ||||
| * add 'lock' and 'key' icon to toilets, fix [#2094](https://github.com/pietervdvn/MapComplete/issues/2094) ([577b596](https://github.com/USERNAME/REPOSITORY_NAME/commits577b596e7a8cdc2ea4cbd97c401422ee0ad06652)) | ||||
| * Add 'open_now' filter to bike-shop ([aa6902a](https://github.com/USERNAME/REPOSITORY_NAME/commitsaa6902a25c4b27ef9424d0cdfb68a83f44ec7405)) | ||||
| * add 'pedagogy', fix [#1839](https://github.com/pietervdvn/MapComplete/issues/1839) ([4644b6a](https://github.com/USERNAME/REPOSITORY_NAME/commits4644b6ae550fa53c042978317484f9a99eafe8c7)) | ||||
| * add 'skateboard' as sport pitch option ([f20219c](https://github.com/USERNAME/REPOSITORY_NAME/commitsf20219cf37711b42e8bf1d4a4a1c0379d7d8df0e)) | ||||
| * add 'website'-button which shows up by default if a website is known ([7c0d339](https://github.com/USERNAME/REPOSITORY_NAME/commits7c0d339976fb26a9fc9ab74a540c7d5b7d640f80)) | ||||
| * add ALPR-cameras to surveillance theme ([d1e91ee](https://github.com/USERNAME/REPOSITORY_NAME/commitsd1e91ee2f98936871941e4b7cd035ee4f1e35bbd)) | ||||
| * add ALPR-cameras to surveillance theme ([97236c8](https://github.com/USERNAME/REPOSITORY_NAME/commits97236c80a99686a1dc0c296bb4a730bc595884a5)) | ||||
| * add animal types to animal_shelter, include animal_shelter in pets, generate licenses, fix cycle_highways.json ([3968a1e](https://github.com/USERNAME/REPOSITORY_NAME/commits3968a1e841cef10e5fac08b7a2c8e6b685a4f07c)) | ||||
| * add animal_shelter, created by the studio ([c4d4a57](https://github.com/USERNAME/REPOSITORY_NAME/commitsc4d4a57a0804776c2eabb7cd7c11e269bac101d8)) | ||||
| * add atm-option to postoffice, add postoffices to ATM theme, fix [#1551](https://github.com/pietervdvn/MapComplete/issues/1551) ([c4a9fa8](https://github.com/USERNAME/REPOSITORY_NAME/commitsc4a9fa81f23ec8a5dcc685b6c42b9e1208337818)) | ||||
| * add baby icon to changing table question ([1b5a0a2](https://github.com/USERNAME/REPOSITORY_NAME/commits1b5a0a2a853237e9d51298f5e1b17c69afaafa71)) | ||||
| * Add badminton fields to filters ([b60a3aa](https://github.com/USERNAME/REPOSITORY_NAME/commitsb60a3aa5684d58e9fec146b06fe2d2993eafd72e)) | ||||
| * add before text on correct location ([6a2e372](https://github.com/USERNAME/REPOSITORY_NAME/commits6a2e3720622e404089c243dc1aa7e7ab282ba2f2)) | ||||
| * add benches on playground theme ([54a9edc](https://github.com/USERNAME/REPOSITORY_NAME/commits54a9edc687667372d0097fb51efb7b904005c9de)) | ||||
| * add bicycle self-repair workshops to the map (WIP) ([c11d7af](https://github.com/USERNAME/REPOSITORY_NAME/commitsc11d7af17531cf381ce03e37765c2e0f7efd1745)) | ||||
| * add camp site ([cfa1c28](https://github.com/USERNAME/REPOSITORY_NAME/commitscfa1c28789d2056e6b8ad7483360a007c639d73c)) | ||||
| * add cargo bike option to bicycle rental, fix [#2016](https://github.com/pietervdvn/MapComplete/issues/2016) ([b98aaff](https://github.com/USERNAME/REPOSITORY_NAME/commitsb98aaff8101255138c10704d2a02f9226b0fa7ec)) | ||||
| * add charge to bike_parking ([ed96859](https://github.com/USERNAME/REPOSITORY_NAME/commitsed96859233a921cbfc61046106b9202d40bbde6c)) | ||||
| * add compile time check for 'sameAs'-filters that the referenced layer actually exists ([e188b96](https://github.com/USERNAME/REPOSITORY_NAME/commitse188b9656122dd3f0a4cda55352bf81dad6dbc65)) | ||||
| * add condition that hoops are only asked on basketball courts, fix [#1577](https://github.com/pietervdvn/MapComplete/issues/1577) ([fb6f7ee](https://github.com/USERNAME/REPOSITORY_NAME/commitsfb6f7ee191554816581c955cfdfbb1a932981c77)) | ||||
| * add conveying as condition for stairs ([f95f631](https://github.com/USERNAME/REPOSITORY_NAME/commitsf95f631045e2a83424a6ac7ef3d607fcba18cc6f)) | ||||
| * add correct title for cafe, nightclub and bar if no name is present, fix [#1704](https://github.com/pietervdvn/MapComplete/issues/1704) ([0129845](https://github.com/USERNAME/REPOSITORY_NAME/commits0129845d22f028b213af59e57014ce8962b76327)) | ||||
| * add currency type which does some reformatting ([d40474d](https://github.com/USERNAME/REPOSITORY_NAME/commitsd40474d47e0b5ded963df2c4e76c6911de63dbca)) | ||||
| * add currently open badge ([d9d330e](https://github.com/USERNAME/REPOSITORY_NAME/commitsd9d330e91221fac741120c7e2cb0b394d0871406)) | ||||
| * add delete to banks ([68cada0](https://github.com/USERNAME/REPOSITORY_NAME/commits68cada0a0d8f7f57b2ed43eb459680764b2b3070)) | ||||
| * add dog icon into title-icons, add dog filter, see [#212](https://github.com/pietervdvn/MapComplete/issues/212) ([7e0120d](https://github.com/USERNAME/REPOSITORY_NAME/commits7e0120d0e8948510db1eb0c17090900127dc8ed8)) | ||||
| * add extra check so that  in a mapping cannot override the , fix two such instances ([56ea116](https://github.com/USERNAME/REPOSITORY_NAME/commits56ea1163bb7c272cec717076da452ba069e82b3c)) | ||||
| * add extra questions to 'map' layer based on custom theme ([10e0e27](https://github.com/USERNAME/REPOSITORY_NAME/commits10e0e277787f95e4da8b075edd308300dd6b0256)) | ||||
| * add filter for vegetable oil to fritures theme ([721a930](https://github.com/USERNAME/REPOSITORY_NAME/commits721a930d76fcd4fedada4044f1c6b2c6802cd022)) | ||||
| * add filters for 'wifi' and 'electricity' ([af2c6f4](https://github.com/USERNAME/REPOSITORY_NAME/commitsaf2c6f47829dd91e5fa0ac4dad2f23e18ebf1d3f)) | ||||
| * add fine_gravel as option for playground surface ([d8be0ac](https://github.com/USERNAME/REPOSITORY_NAME/commitsd8be0acdfef8a0a7f349d152abadf3e394c0145f)) | ||||
| * add first version of ski theme ([8f25006](https://github.com/USERNAME/REPOSITORY_NAME/commits8f250069988ea8e1b7f25e29db4e287200d354b8)) | ||||
| * add guidepost layer ([da39dde](https://github.com/USERNAME/REPOSITORY_NAME/commitsda39dde7b699e576e79eb5781933146fa9747ace)) | ||||
| * add guidepost layer ([a06e513](https://github.com/USERNAME/REPOSITORY_NAME/commitsa06e513c4f5a662e6d09908440f6b3394addf483)) | ||||
| * add guidepost theme ([ad239b2](https://github.com/USERNAME/REPOSITORY_NAME/commitsad239b230fd57233f377266dd68b15011136bbaa)) | ||||
| * add guideposts to climbing theme ([a96a214](https://github.com/USERNAME/REPOSITORY_NAME/commitsa96a214c03b3438f9ccf96f7c37a2e842ec224e1)) | ||||
| * add hostel, cleanup of hotel ([d167fe7](https://github.com/USERNAME/REPOSITORY_NAME/commitsd167fe77232b502ccef4ee051c8d73f948100dd0)) | ||||
| * add hostel, cleanup of hotel ([8e9ae05](https://github.com/USERNAME/REPOSITORY_NAME/commits8e9ae0529b95b8736ad6a2cabf9927a3a27e4c0c)) | ||||
| * add ice cream parlors ([69a7c9e](https://github.com/USERNAME/REPOSITORY_NAME/commits69a7c9efa3eb29c32f0256b1a956e9846cdf5260)) | ||||
| * add icons to access question in toilets ([2ba461d](https://github.com/USERNAME/REPOSITORY_NAME/commits2ba461d9578b515b23ff25a8a99d9a2b03779653)) | ||||
| * add icons to question ([246b163](https://github.com/USERNAME/REPOSITORY_NAME/commits246b16317d93b8e2effe9b41f7ed8c362a61cff6)) | ||||
| * add icons, add 'auto'-title-icons ([2c662c9](https://github.com/USERNAME/REPOSITORY_NAME/commits2c662c957860144a927260504ca30795f9249238)) | ||||
| * Add internet questions to hackerspace, fix [#1856](https://github.com/pietervdvn/MapComplete/issues/1856) ([c870544](https://github.com/USERNAME/REPOSITORY_NAME/commitsc870544d857a1c0f3f13e04da78db1a00f5e5342)) | ||||
| * add keycutting service tags ([d8ce6f0](https://github.com/USERNAME/REPOSITORY_NAME/commitsd8ce6f0da5887724778c03ea554add5fd5be16cd)) | ||||
| * add label support to questions.json; add opening hours for hospitals ([41fdeb9](https://github.com/USERNAME/REPOSITORY_NAME/commits41fdeb9cb5c664ca604da1f89f2724c0de3b1304)) | ||||
| * add maxstay for bicycle parkings ([a71ed5d](https://github.com/USERNAME/REPOSITORY_NAME/commitsa71ed5d53e0b238713cdd8741c7b05e9a9568c55)) | ||||
| * add memorial layer, use 'subject' instead of 'name' for ghost bikes ([a57dbe0](https://github.com/USERNAME/REPOSITORY_NAME/commitsa57dbe09d60734785420c4502699fcb6d89c6033)) | ||||
| * add memorials to artwork on high zoom ([29c5b88](https://github.com/USERNAME/REPOSITORY_NAME/commits29c5b884c404c14258dd116921990923c9a89181)) | ||||
| * add metal as material option ([6420b90](https://github.com/USERNAME/REPOSITORY_NAME/commits6420b906e055f5572d093e18febdbe5dba325bce)) | ||||
| * add minzoom to cafe_pub ([e2d3a71](https://github.com/USERNAME/REPOSITORY_NAME/commitse2d3a71c5b3a15b5a21db112baaf5a13dec55a3c)) | ||||
| * add minzoom to ski_piste and aerialway, fix [#1876](https://github.com/pietervdvn/MapComplete/issues/1876) ([d7982bf](https://github.com/USERNAME/REPOSITORY_NAME/commitsd7982bfd3e92a863e33e9154b2c9c4044cdb4951)) | ||||
| * add missing assets ([bc826be](https://github.com/USERNAME/REPOSITORY_NAME/commitsbc826bebed2c0f073da3163994be818d1c41c6f5)) | ||||
| * Add more memorial types, add freeform option, fix [#1824](https://github.com/pietervdvn/MapComplete/issues/1824) ([b0d0436](https://github.com/USERNAME/REPOSITORY_NAME/commitsb0d0436ebe79a44c1bfc6880ecbef66f85e159be)) | ||||
| * add more options for support in advertisement, add presets ([c26225c](https://github.com/USERNAME/REPOSITORY_NAME/commitsc26225ccf11987f8a2cbdf45820a2310428cf1c0)) | ||||
| * add more questions about drinking water ([9fabab3](https://github.com/USERNAME/REPOSITORY_NAME/commits9fabab3588a7cdc3d04bcbae19b6868694bbc95f)) | ||||
| * add mountain rescue stations to the ski map ([04509bc](https://github.com/USERNAME/REPOSITORY_NAME/commits04509bc3e7783f55e593679ddfba2263ecf7f3de)) | ||||
| * add name and title to assembly_point and disaster_response layers ([f087012](https://github.com/USERNAME/REPOSITORY_NAME/commitsf08701211632b8f8f35597d908160f8460934e04)) | ||||
| * add open love map, see https://github.com/thomersch/OpenLoveMap/issues/21 ([d6a55a5](https://github.com/USERNAME/REPOSITORY_NAME/commitsd6a55a5ee9ef03c0a813b0d95dffa42cb0b4955d)) | ||||
| * add operator question to bicycle parking ([ea00c71](https://github.com/USERNAME/REPOSITORY_NAME/commitsea00c717de78c06ded81fae56be1a05b8e50ae37)) | ||||
| * add OSM-carto again, fix [#1664](https://github.com/pietervdvn/MapComplete/issues/1664) ([376a683](https://github.com/USERNAME/REPOSITORY_NAME/commits376a683cce13921e644364c8342362f3a21b3ab3)) | ||||
| * add paid as option, fix [#2119](https://github.com/pietervdvn/MapComplete/issues/2119) ([a4018d8](https://github.com/USERNAME/REPOSITORY_NAME/commitsa4018d88b0f187b907c68a49dcfb496c0259bb91)) | ||||
| * add payment options and internet to climbing theme ([2337033](https://github.com/USERNAME/REPOSITORY_NAME/commits23370336e81fa865a62507bb6f4de5030ad48bb5)) | ||||
| * add payment options and internet to climbing theme ([1abcc76](https://github.com/USERNAME/REPOSITORY_NAME/commits1abcc766f98f27298eb82e70ad7c09520adb8377)) | ||||
| * add possibility to add an icon to 'render' (just like with mappings), add contact:mastodon support as general question, add mastodon question to hackerspaces ([03aafbe](https://github.com/USERNAME/REPOSITORY_NAME/commits03aafbe99c0d9f4fa5768d18e7bde093529ce93f)) | ||||
| * add possibility to enable terrain, some fixes to overlaymap and pitch control ([e3dec8a](https://github.com/USERNAME/REPOSITORY_NAME/commitse3dec8aafada699be3cddfc86aeb63938036e5c5)) | ||||
| * add proper 'image along way' possibility ([584fb3c](https://github.com/USERNAME/REPOSITORY_NAME/commits584fb3cb57e77ea4382fda152d8604ef8293f9b1)) | ||||
| * add question wether climbing ropes can be hired ([6425ad6](https://github.com/USERNAME/REPOSITORY_NAME/commits6425ad67e6a053e1b6cbbb038e0c544c0f07f10b)) | ||||
| * Add rubber;tartan surface to playgrounds, add checkdate to playgrounds, add tartan to sport pitches ([7859e7d](https://github.com/USERNAME/REPOSITORY_NAME/commits7859e7d06990666c1c40756795f993949abef434)) | ||||
| * add shoe repair services to the climbing map, add question if a shoemaker also repairs climbing shoes, add craft=shoemaker to shops theme ([3df5727](https://github.com/USERNAME/REPOSITORY_NAME/commits3df5727f40a29d190394c71cf99896261f78474d)) | ||||
| * add short description to velopark ([50e3c54](https://github.com/USERNAME/REPOSITORY_NAME/commits50e3c5483461cd085d3207fbd96f5b7fdfaebe57)) | ||||
| * add smoking to food-layer, fix [#1874](https://github.com/pietervdvn/MapComplete/issues/1874) ([f5a94c7](https://github.com/USERNAME/REPOSITORY_NAME/commitsf5a94c7b5f24c1846681f75f8f79bc1d870574c0)) | ||||
| * add some icons ([48df237](https://github.com/USERNAME/REPOSITORY_NAME/commits48df2379bf013006aad7e7bd68977e7a55a670d3)) | ||||
| * add speed_camera to surveillance theme, see [#1913](https://github.com/pietervdvn/MapComplete/issues/1913) ([9716bc5](https://github.com/USERNAME/REPOSITORY_NAME/commits9716bc5425967aa81b4885bff4063d8c0eebfd18)) | ||||
| * add Stamen Watercolor again, see [#1652](https://github.com/pietervdvn/MapComplete/issues/1652) ([d997c90](https://github.com/USERNAME/REPOSITORY_NAME/commitsd997c90352a0d70f2cd33108af4de16f58444868)) | ||||
| * add statistics on used version ([1a7acc8](https://github.com/USERNAME/REPOSITORY_NAME/commits1a7acc80c1933894aa71bdd9cdfc6bd6985f5a40)) | ||||
| * add sugar_free, gluten_free and lactose-free to shops- and food-layers ([b06784e](https://github.com/USERNAME/REPOSITORY_NAME/commitsb06784e7a06aaeb40a375210bc95538a73db9aed)) | ||||
| * add support for operator:email, mostly for velopark ([1c45f09](https://github.com/USERNAME/REPOSITORY_NAME/commits1c45f0963219f3aa743b2ddf9840e2d152b0fae5)) | ||||
| * add toilet questions into indoor theme ([8f93b0d](https://github.com/USERNAME/REPOSITORY_NAME/commits8f93b0d398aa16caa6e9167d96b02c7fc45182a4)) | ||||
| * add validation check if a mapping does not erase another mapping completely ([556f6d0](https://github.com/USERNAME/REPOSITORY_NAME/commits556f6d0b93aa7774b703e80590d2df1601d293c4)) | ||||
| * add validation for duplicate presets, fix [#1582](https://github.com/pietervdvn/MapComplete/issues/1582) ([2e8a331](https://github.com/USERNAME/REPOSITORY_NAME/commits2e8a3311e76c9065338ffce1388658269a05e261)) | ||||
| * add various services to hackerspaces and makerspaces, add icons, some fixes to make this work with expandRewrite ([8ceda1c](https://github.com/USERNAME/REPOSITORY_NAME/commits8ceda1cc5f7e549ccecc65b6469a7195de1022cc)) | ||||
| * add velopark import functionality ([4c5ebf0](https://github.com/USERNAME/REPOSITORY_NAME/commits4c5ebf05f5d818abd622bf9d8c8a96926e36ddd6)) | ||||
| * add velopark theme ([1c1cea7](https://github.com/USERNAME/REPOSITORY_NAME/commits1c1cea7f033ea19c74a6efb958a69a3a729bad3c)) | ||||
| * add warning if a tagRendering can be replaced by a direct value ([79e40d0](https://github.com/USERNAME/REPOSITORY_NAME/commits79e40d0fee2e40b32babc218a374095f6ca520a5)) | ||||
| * add wikipedia page for "subject:wikidata" on ghost bikes, specifically for the ghost bike of #Natenom ([d74cb00](https://github.com/USERNAME/REPOSITORY_NAME/commitsd74cb00df4fc55ca00082326da138b580fa39cc7)) | ||||
| * add year to units ([c8eef2c](https://github.com/USERNAME/REPOSITORY_NAME/commitsc8eef2c8f6866ded26276250d422bd4a97e5b08c)) | ||||
| * **advertising:** add (animated!) flag and screen icons ([090130d](https://github.com/USERNAME/REPOSITORY_NAME/commits090130d596bb5ab7d337c7c96a55b38ef6181231)) | ||||
| * **advertising:** boards are never animated ([b92e9b8](https://github.com/USERNAME/REPOSITORY_NAME/commitsb92e9b815da3e1b15c9859f6d4726bac09307b7b)) | ||||
| * **advertising:** Fix typos ([9e02c89](https://github.com/USERNAME/REPOSITORY_NAME/commits9e02c89fd5da5c7ad4623ed205ef610e4462b2a7)) | ||||
| * **advertising:** further refinements ([8127027](https://github.com/USERNAME/REPOSITORY_NAME/commits81270272518012cf2023be2888d2faa444ee012f)) | ||||
| * **advertising:** further refinements ([59eabc5](https://github.com/USERNAME/REPOSITORY_NAME/commits59eabc5daaa675880e1b684c3d8b4d3f0c1139ac)) | ||||
| * **advertising:** last icon ([3e72ba2](https://github.com/USERNAME/REPOSITORY_NAME/commits3e72ba2b464c819a09956fa22bb321ed68fe34a3)) | ||||
| * **advertising:** more icons, reordering of the questions ([7fc0770](https://github.com/USERNAME/REPOSITORY_NAME/commits7fc0770488ba99ea2d7aab658933d6e22c62cb3e)) | ||||
| * align iconbadge, fix [#1893](https://github.com/pietervdvn/MapComplete/issues/1893) ([ba098fc](https://github.com/USERNAME/REPOSITORY_NAME/commitsba098fc29ac4ea46b0ff19a918282b4f81fe8f10)) | ||||
| * allow multiple internet access types ([786b850](https://github.com/USERNAME/REPOSITORY_NAME/commits786b850dbeff9a92f761e65cd01a0e948140f37d)) | ||||
| * allow to add multiple changing table locations, see [#1756](https://github.com/pietervdvn/MapComplete/issues/1756) ([c62f7cc](https://github.com/USERNAME/REPOSITORY_NAME/commitsc62f7cce01da15ef3f123b95e08056ca5019b7c9)) | ||||
| * allow to add pictures to a 'shelter' ([39c079d](https://github.com/USERNAME/REPOSITORY_NAME/commits39c079db45aaadf98bf651d66d6bd88dbbe04bb2)) | ||||
| * Allow to delete tourism accomodation ([60eeab9](https://github.com/USERNAME/REPOSITORY_NAME/commits60eeab9aa79ab1a5fc65b7f5e6efb2ebb0b6e55e)) | ||||
| * allow to have a non-number type together with a unit ([4ccfe3e](https://github.com/USERNAME/REPOSITORY_NAME/commits4ccfe3efe446b407be1ca53d4ad2c3ee6fdde0b4)) | ||||
| * allow to move a shelter ([565dee8](https://github.com/USERNAME/REPOSITORY_NAME/commits565dee8854f605ea40570c0c82d225935e11dba0)) | ||||
| * allow to move and delete pharmacies ([5e95bd9](https://github.com/USERNAME/REPOSITORY_NAME/commits5e95bd99a2dcf424acbcad85aa96a3a36bd612a8)) | ||||
| * allow to move hydrants ([432f244](https://github.com/USERNAME/REPOSITORY_NAME/commits432f24456d75e131425f0f1fe0df15c448f593ef)) | ||||
| * also ask about menstrual products for toilet_at_amenity ([ae7cc95](https://github.com/USERNAME/REPOSITORY_NAME/commitsae7cc95727bc33c6d67a2ef24d2a2e0c2e3c3214)) | ||||
| * also show 'operator:website' and 'contact:website' as title icon if they are available ([8526f4e](https://github.com/USERNAME/REPOSITORY_NAME/commits8526f4e94140132c8abe880b93cbc45780f9686b)) | ||||
| * automatically derive source from presets if no source is given ([0689758](https://github.com/USERNAME/REPOSITORY_NAME/commits06897588be3e56570b973c8db08fce1e13b29c7b)) | ||||
| * automatically derive source from presets if no source is given ([8e18864](https://github.com/USERNAME/REPOSITORY_NAME/commits8e18864daa9d19c2d9ccc2eb6a8ee408e7038d5e)) | ||||
| * bench.json: decrease minzoom ([5b33d88](https://github.com/USERNAME/REPOSITORY_NAME/commits5b33d88ffbff285849d7bf5896df8e8e2e547cef)) | ||||
| * better support billboard on walls ([8816ad0](https://github.com/USERNAME/REPOSITORY_NAME/commits8816ad03ecaedfe248fff1b7b101a266a9a6f444)) | ||||
| * better support billboard on walls ([0a1c90b](https://github.com/USERNAME/REPOSITORY_NAME/commits0a1c90be9e1515b2f708e0f672b0732c7356101b)) | ||||
| * bicycle library: allow move, fix [#1768](https://github.com/pietervdvn/MapComplete/issues/1768) ([7ac84dd](https://github.com/USERNAME/REPOSITORY_NAME/commits7ac84dd675a68f47b6af0465e337561aa0dc9586)) | ||||
| * bicycle parking: add lockers as options, add operator:website (velopark features) ([22721cd](https://github.com/USERNAME/REPOSITORY_NAME/commits22721cd3ef604255bc88d5be995d0f2d65e68a83)) | ||||
| * change minzoom of second hand shops in circular economy ([0b2e878](https://github.com/USERNAME/REPOSITORY_NAME/commits0b2e878481e3cc32b7b37c8cdb28251daa1b02d7)) | ||||
| * Change text type ([c9751a3](https://github.com/USERNAME/REPOSITORY_NAME/commitsc9751a3eb570f1865966fa3861fac5ff5c761f1a)) | ||||
| * description is now a textarea ([0c1b5d1](https://github.com/USERNAME/REPOSITORY_NAME/commits0c1b5d1b6c0d12914845a19692670bd1931f532c)) | ||||
| * disable 'direction'-indicator for surveillance theme as it breaks selection, fix [#1458](https://github.com/pietervdvn/MapComplete/issues/1458) ([9e15353](https://github.com/USERNAME/REPOSITORY_NAME/commits9e15353588009e39cf4a8bc2569748f40759609a)) | ||||
| * disable 'disused' from delete config, delete less fast for shops but use softdeletion instead ([28e737e](https://github.com/USERNAME/REPOSITORY_NAME/commits28e737ed2eb6a3934fb650df9b1939a25f954d8c)) | ||||
| * disable maxspeed and cycleway question for pedestrian roads ([e580f55](https://github.com/USERNAME/REPOSITORY_NAME/commitse580f553197165d611258b8c68ed9f9a66ca42c4)) | ||||
| * don't count food for fritures ([98d441a](https://github.com/USERNAME/REPOSITORY_NAME/commits98d441a2602c360136db9f9cc883d2ef734137e5)) | ||||
| * don't enforce 'allowMove' on unofficial themes ([5b45e42](https://github.com/USERNAME/REPOSITORY_NAME/commits5b45e427a0185e224446aeecfe99e87d6077379a)) | ||||
| * don't inline text fields if they don't have text around them ([821ddcf](https://github.com/USERNAME/REPOSITORY_NAME/commits821ddcfaca11ca194b319bfa09f8b0a9fea01a41)) | ||||
| * don't show 'mark as unknown' if this would break the source-filter ([76a9a2e](https://github.com/USERNAME/REPOSITORY_NAME/commits76a9a2ee23dcf61097d33fcbe556df7a46d9a395)) | ||||
| * don't show favourite icon if not logged in ([b1d94b2](https://github.com/USERNAME/REPOSITORY_NAME/commitsb1d94b2121195a52ced59454b51844412b9018f3)) | ||||
| * don't show opening_hours_state title icon if seasonal is set and the item is closed due to seasonal restrictions ([1748e98](https://github.com/USERNAME/REPOSITORY_NAME/commits1748e98bfc714e147c12b8fc233432412ed186c2)) | ||||
| * don't use 'Yes' or 'No' as start ([f87e735](https://github.com/USERNAME/REPOSITORY_NAME/commitsf87e73596e65a12b7fb88456dfb21dcc1eb8a850)) | ||||
| * elevators: first ask if there is speech output/tactile writing before asking the relative languages ([8acaafe](https://github.com/USERNAME/REPOSITORY_NAME/commits8acaafe307826ac682f25eaa0b188278ca4056fe)) | ||||
| * enable 'guideposts' in nature theme ([94291de](https://github.com/USERNAME/REPOSITORY_NAME/commits94291de5a3451120b6abdb153ba57675949d3d5b)) | ||||
| * enable 'speciality'-filter in doctors, decrease minzoom ([4090a74](https://github.com/USERNAME/REPOSITORY_NAME/commits4090a7493253e2b5513307d013d0a0061394aed6)) | ||||
| * enable deletion of bike_cafes ([90c44cc](https://github.com/USERNAME/REPOSITORY_NAME/commits90c44cc8bdfb7b2447f1974ed94430e5b2fa3c6f)) | ||||
| * enable download functionality by default ([5504d49](https://github.com/USERNAME/REPOSITORY_NAME/commits5504d49d595fee66f0c43f3efbf6f130634497be)) | ||||
| * enable move on schools, tweak GRB for performance ([db98288](https://github.com/USERNAME/REPOSITORY_NAME/commitsdb982884a1eea2a6e37d67129256f9c6b192a841)) | ||||
| * enable reviews for climbing areas and gyms ([2a3a78b](https://github.com/USERNAME/REPOSITORY_NAME/commits2a3a78bc69eea38a83378f02717bc9fdc1cd5414)) | ||||
| * enable reviews on pharmacies-theme ([701f033](https://github.com/USERNAME/REPOSITORY_NAME/commits701f03397e0339cba98fc776f06b38ccb13511b2)) | ||||
| * enable snapping for facade gardens ([da68d36](https://github.com/USERNAME/REPOSITORY_NAME/commitsda68d365feab19a94ea85b2a756e3336bfb8b127)) | ||||
| * exclude 'advertising=no' from loading, fix [#1865](https://github.com/pietervdvn/MapComplete/issues/1865) ([eef9918](https://github.com/USERNAME/REPOSITORY_NAME/commitseef99186cfbc46b57a97d2df78c8ef9c69a4609b)) | ||||
| * exclude route relations from "toilets=yes". There are a few route relations with 'toilets' and those choke up MapComplete ([139b014](https://github.com/USERNAME/REPOSITORY_NAME/commits139b014c6c1f34fff08210c1c4915ea79534086c)) | ||||
| * explicitly set 'allowMove' for all layers, fix [#2121](https://github.com/pietervdvn/MapComplete/issues/2121) ([468b895](https://github.com/USERNAME/REPOSITORY_NAME/commits468b895302fff50bc68cbdf72998bc08590307d0)) | ||||
| * extract layers from camperssite ([82e6b2a](https://github.com/USERNAME/REPOSITORY_NAME/commits82e6b2af9b564117ebb5714b8a795b759ebf528d)) | ||||
| * extract layers from camperssite ([44f42ee](https://github.com/USERNAME/REPOSITORY_NAME/commits44f42ee2c946d3f37224ca41f603e9c907ed5214)) | ||||
| * first version of circular economy theme ([592be68](https://github.com/USERNAME/REPOSITORY_NAME/commits592be68f09b06f22d45d5d5c274c91315d1613f7)) | ||||
| * fix [#1362](https://github.com/pietervdvn/MapComplete/issues/1362) ([ff9ca5e](https://github.com/USERNAME/REPOSITORY_NAME/commitsff9ca5e5cd6abde6c578ae442fe0d06217015288)) | ||||
| * fix [#1866](https://github.com/pietervdvn/MapComplete/issues/1866) ([1cf7119](https://github.com/USERNAME/REPOSITORY_NAME/commits1cf71197f51646cfceb4b58267cf1bdd2223e12f)) | ||||
| * fix [#1910](https://github.com/pietervdvn/MapComplete/issues/1910) ([b484ea0](https://github.com/USERNAME/REPOSITORY_NAME/commitsb484ea005b6b91bad729b7b1923f71b8fc893870)) | ||||
| * fix badge, fix [#1894](https://github.com/pietervdvn/MapComplete/issues/1894) ([a2279ac](https://github.com/USERNAME/REPOSITORY_NAME/commitsa2279ac28bfb1d5dbc0ac47c2762a9104e4e54c5)) | ||||
| * fix calculated tags of climbing theme ([f800545](https://github.com/USERNAME/REPOSITORY_NAME/commitsf80054558fe8422c7c1dfa9e277bd772f157f436)) | ||||
| * fix compilation ([c300d90](https://github.com/USERNAME/REPOSITORY_NAME/commitsc300d901284dfbf05c5044da46e12ec8ca4469d1)) | ||||
| * fix conversion for legacy themes ([21c35fc](https://github.com/USERNAME/REPOSITORY_NAME/commits21c35fc2c56eea64d18ee0fc18d65b2cdb913c82)) | ||||
| * fix cycle rental which dissappears ([efce134](https://github.com/USERNAME/REPOSITORY_NAME/commitsefce134a6cc90d4c3794cac91fc0a9da10fdd3b1)) | ||||
| * fix cycle_highways ([61575a9](https://github.com/USERNAME/REPOSITORY_NAME/commits61575a9909d8c0206e45a8106ef369ef616f45d7)) | ||||
| * fix icon for shops layer ([d9d8c0a](https://github.com/USERNAME/REPOSITORY_NAME/commitsd9d8c0ad1f0af64f6d08364a6c64f59b748f001a)) | ||||
| * fix incorrect argument, might fix [#1881](https://github.com/pietervdvn/MapComplete/issues/1881) ([209cfe6](https://github.com/USERNAME/REPOSITORY_NAME/commits209cfe6b733b849e85854d7ab3eaf4987116226f)) | ||||
| * fix internet question ([b132590](https://github.com/USERNAME/REPOSITORY_NAME/commitsb13259083a8d7c3b42e4df618b88de06b00f1041)) | ||||
| * fix overrides, fix [#1705](https://github.com/pietervdvn/MapComplete/issues/1705) ([3334bfb](https://github.com/USERNAME/REPOSITORY_NAME/commits3334bfb8cae9a2c326764e7375829769ac96c400)) | ||||
| * fix rendering of charging station ([0c52051](https://github.com/USERNAME/REPOSITORY_NAME/commits0c5205136b1a18ee91df65de52e9e60f2036d3b7)) | ||||
| * fix some isCounted-typos ([20a462f](https://github.com/USERNAME/REPOSITORY_NAME/commits20a462fdf5683587e50b42171c109e87eb193422)) | ||||
| * fix titles and names for assembly points and disaster_response ([170c459](https://github.com/USERNAME/REPOSITORY_NAME/commits170c4592d13929810f6e822592cd1e2d1e83a1ac)) | ||||
| * fix typo in soft-deletion tag ([5f62712](https://github.com/USERNAME/REPOSITORY_NAME/commits5f627124e98e98f25e9e5a834f56e906237e0241)) | ||||
| * fix validation errors due to [#1779](https://github.com/pietervdvn/MapComplete/issues/1779) ([707d996](https://github.com/USERNAME/REPOSITORY_NAME/commits707d99619d7b5fa90891e93d5641f52715f04beb)) | ||||
| * fix: don't show irrelevant 'multilevel'-question anymore ([b5fca68](https://github.com/USERNAME/REPOSITORY_NAME/commitsb5fca68a82d529bd10f56ba0dd63d27ae11ea2a5)) | ||||
| * ghost signs: add wall-based artworks to be able to mark them as ghost sign and to avoid duplicates ([e68edeb](https://github.com/USERNAME/REPOSITORY_NAME/commitse68edeb29fa604daee0c7638999bcebab2fd7b11)) | ||||
| * ghost signs: add wall-based artworks to be able to mark them as ghost sign and to avoid duplicates ([8f95e85](https://github.com/USERNAME/REPOSITORY_NAME/commits8f95e8520a751ef9fef8cc7a8810322117c7b6c1)) | ||||
| * hackerspaces: more workshop types ([70fa180](https://github.com/USERNAME/REPOSITORY_NAME/commits70fa180b6a1e1a0db4e54f623797c05847b7face)) | ||||
| * Hide bike cleaning cost if we don't know if there is a bike cleaning service ([87aee9e](https://github.com/USERNAME/REPOSITORY_NAME/commits87aee9e2b72013e387fd3c196a9940bf477743c8)) | ||||
| * improve 'auto-type' special visualisation ([658db35](https://github.com/USERNAME/REPOSITORY_NAME/commits658db3561722ec5d220043969ed1154c9e7411af)) | ||||
| * improve 'tourism-accomodation', add many more categories as some people are using 'hotels' to also add other categories (see https://wiki.openstreetmap.org/wiki/Organised_Editing/Activities/Trziste_prace) ([53ffa06](https://github.com/USERNAME/REPOSITORY_NAME/commits53ffa06a49a670ff23e605595aea7919c84f20b5)) | ||||
| * improve 'tourism-accomodation', add many more categories as some people are using 'hotels' to also add other categories (see https://wiki.openstreetmap.org/wiki/Organised_Editing/Activities/Trziste_prace) ([bc54f79](https://github.com/USERNAME/REPOSITORY_NAME/commitsbc54f797d792ebeac4b043612df9682a1a4c79c6)) | ||||
| * improve ability of 'rewrite' config ([f015604](https://github.com/USERNAME/REPOSITORY_NAME/commitsf015604000e09b81625d8dc5617e7c999b27fc74)) | ||||
| * improve advertising theme, see [#1866](https://github.com/pietervdvn/MapComplete/issues/1866), translation reset for new presets ([05bba07](https://github.com/USERNAME/REPOSITORY_NAME/commits05bba071dc44897fe795974a39d472159cbaadd4)) | ||||
| * improve atm opening hours, add reviews to playgrounds ([9ce60b6](https://github.com/USERNAME/REPOSITORY_NAME/commits9ce60b6ffb175803fde11b9116a0e1390ade766c)) | ||||
| * improve benches ([9e10bf4](https://github.com/USERNAME/REPOSITORY_NAME/commits9e10bf421f9bcd1cadec10638eb520132c647c64)) | ||||
| * improve error messages ([6897b88](https://github.com/USERNAME/REPOSITORY_NAME/commits6897b888170399db9a5d4e649d89dee2f9d0b30f)) | ||||
| * improve favourite panel ([59090fd](https://github.com/USERNAME/REPOSITORY_NAME/commits59090fdb39a864b7d8b64a26fe35e98eacfa2121)) | ||||
| * improve information about indoor rooms ([47bf119](https://github.com/USERNAME/REPOSITORY_NAME/commits47bf1195bcc198446c35b31ebd7d446efde7dd9d)) | ||||
| * improve velopark usability ([c1003f8](https://github.com/USERNAME/REPOSITORY_NAME/commitsc1003f8fe79c4a2ce820d9764b51a4a25b6e7bbd)) | ||||
| * improvements to BBQ, different icons, add some questions, remove 'unknown'-options ([2db0b1a](https://github.com/USERNAME/REPOSITORY_NAME/commits2db0b1afcbbf7c8d8e6174080a1e62295c223e87)) | ||||
| * improvements to memorial theme ([59f56bd](https://github.com/USERNAME/REPOSITORY_NAME/commits59f56bd251c2523cb81ca07c74f9107c70560869)) | ||||
| * include love hotels in regular hotels theme (with a high minzoom) ([d48b8af](https://github.com/USERNAME/REPOSITORY_NAME/commitsd48b8aff922e3478a62ecc3e92f92b750e8eef8f)) | ||||
| * lint layers to use an array instead of a string for 'snapToLayers' ([d534842](https://github.com/USERNAME/REPOSITORY_NAME/commitsd534842d050f046ac5187ff8386c9edf052cdd23)) | ||||
| * make filters of public bookcase translatable ([7b3d07e](https://github.com/USERNAME/REPOSITORY_NAME/commits7b3d07e5c489c0d139543cb7e5481e522b435b12)) | ||||
| * make the selected note pulsate and have a different border when selected ([83fc189](https://github.com/USERNAME/REPOSITORY_NAME/commits83fc189fd332c0df2dc719a7ba676f3fad7cca32)) | ||||
| * more questions about climbing services ([3769bd1](https://github.com/USERNAME/REPOSITORY_NAME/commits3769bd1c4fc7976d8d980f049ca6a3ecbc8710f1)) | ||||
| * move all bike_shop questions into shops, reuse shops layer instead ([3c16e3d](https://github.com/USERNAME/REPOSITORY_NAME/commits3c16e3de686a903c1807d7a3a1397c6f350c8476)) | ||||
| * move some bicycle shop questions into the shops-layer so that those questions are asked there as well (and that both layers can be unified) ([6cd7828](https://github.com/USERNAME/REPOSITORY_NAME/commits6cd7828ed3576dd8abf36c24032f9ec1d4966684)) | ||||
| * move tagRenderings+ above leftover-questions ([f2f041f](https://github.com/USERNAME/REPOSITORY_NAME/commitsf2f041f9d0bfb557588ccd90b1d710498aa8edc0)) | ||||
| * only add rating-title-icon if 'review_list()' is used in the layer ([6c75553](https://github.com/USERNAME/REPOSITORY_NAME/commits6c75553f3fec7642c7bbb75d999781126a344065)) | ||||
| * phone validation now knows about some short-codes ([38b9523](https://github.com/USERNAME/REPOSITORY_NAME/commits38b9523b835b72bfe9f068b55015d8f7868951c9)) | ||||
| * pin more markers to new icon ([04ee3dc](https://github.com/USERNAME/REPOSITORY_NAME/commits04ee3dc32c7b1e8c6690a91624530309df65e813)) | ||||
| * properly show the name of the hospital ([9739973](https://github.com/USERNAME/REPOSITORY_NAME/commits9739973f2e9e1c98e0ae6ea58f55bf8588a9de14)) | ||||
| * re-enable terrain ([94bc6ee](https://github.com/USERNAME/REPOSITORY_NAME/commits94bc6ee31d36c56c31090ea07c7f2baecff99eb1)) | ||||
| * remove obsolete fields from drinking water theme ([66cc615](https://github.com/USERNAME/REPOSITORY_NAME/commits66cc615805246100634aaccd8426c59eec5c03ce)) | ||||
| * remove obsolete SOTM-events, fix [#1909](https://github.com/pietervdvn/MapComplete/issues/1909) ([5659dd8](https://github.com/USERNAME/REPOSITORY_NAME/commits5659dd8e8c2a1fbf596cf9fa2e3cb56ed2d95349)) | ||||
| * remove unneeded invalidValues ([4fe0c41](https://github.com/USERNAME/REPOSITORY_NAME/commits4fe0c41628ae0a9dc6985a10bb396ea96534dde9)) | ||||
| * show capacity:cargo_bike, allow to erase it ([58dfb93](https://github.com/USERNAME/REPOSITORY_NAME/commits58dfb93818e6f737b93c406b25bf4eb3c0572d7c)) | ||||
| * show keycutting service question ([5bcc617](https://github.com/USERNAME/REPOSITORY_NAME/commits5bcc617d22ce6596f48f8e68a21910cd744c4682)) | ||||
| * show maproulette marker in linking menu ([e327d38](https://github.com/USERNAME/REPOSITORY_NAME/commitse327d385d126864bb5e3ba17e3f3b2ff2fd7b5ae)) | ||||
| * show maproulette marker in linking menu ([ac6fdde](https://github.com/USERNAME/REPOSITORY_NAME/commitsac6fdde785ddf11b833501ac3de6c4a9bf84201d)) | ||||
| * show maproulette marker in linking menu ([8a4e2d8](https://github.com/USERNAME/REPOSITORY_NAME/commits8a4e2d8cb56c28b38ac03262dbfd76f874d3f2ef)) | ||||
| * show toilets only from zoomlevel >= 15 ([6760897](https://github.com/USERNAME/REPOSITORY_NAME/commits6760897a6f6427755b63c8cc7da37b9d39279083)) | ||||
| * small tweaks to fitness stations ([3f4410f](https://github.com/USERNAME/REPOSITORY_NAME/commits3f4410ff19e71c02e59df5fbe1ef77bcb2a53224)) | ||||
| * tweak zoomlevels ([303d3a0](https://github.com/USERNAME/REPOSITORY_NAME/commits303d3a0337afc388ed2158ab008a8a17684c6530)) | ||||
| * Update climbing_route.json: add snap to layer ([193b8b4](https://github.com/USERNAME/REPOSITORY_NAME/commits193b8b4672405abe0e54d3143c9faec88733e450)) | ||||
| * Update climbing.json: add layers ([bb9b1df](https://github.com/USERNAME/REPOSITORY_NAME/commitsbb9b1df4e0b26fff0a0e2e513b544c910f046f86)) | ||||
| * update some default background layers ([a855840](https://github.com/USERNAME/REPOSITORY_NAME/commitsa85584040d436012e3c68fe85e54e490529388db)) | ||||
| * update tagging of climbing shoe repair ([d1aa751](https://github.com/USERNAME/REPOSITORY_NAME/commitsd1aa751e1831cd1090ea5a738462b052fad2a4d9)) | ||||
| * Update velopark description ([9083e89](https://github.com/USERNAME/REPOSITORY_NAME/commits9083e8954971ad4bed1914bc7cd5c30397b23895)) | ||||
| * validate that a background layer actually exists, fix current-view button (GRB) ([fc483ed](https://github.com/USERNAME/REPOSITORY_NAME/commitsfc483ed54776ed78efb9d9f4b2b868ac85a0e6b3)) | ||||
| * validate that a background layer actually exists, fix current-view button (GRB) ([eb6194b](https://github.com/USERNAME/REPOSITORY_NAME/commitseb6194bf8f1752a7ef80583d8b878f75c146c7f8)) | ||||
| * various fixes to velopark, see [#1783](https://github.com/pietervdvn/MapComplete/issues/1783) ([2583fee](https://github.com/USERNAME/REPOSITORY_NAME/commits2583feef65e18f786253c93123e22d111e992ccf)) | ||||
| * various improvements ([d4895a0](https://github.com/USERNAME/REPOSITORY_NAME/commitsd4895a098916183cef47f5dc79d1870b99472be3)) | ||||
| * velopark: reorder attributes for a clearer view ([0929b55](https://github.com/USERNAME/REPOSITORY_NAME/commits0929b55b0807eb8cd9dea188d03339facf1113ce)) | ||||
| * vending machines: add meat as option, add operator phone number, add 'condom' icon, fix [#1584](https://github.com/pietervdvn/MapComplete/issues/1584) ([86d0e5d](https://github.com/USERNAME/REPOSITORY_NAME/commits86d0e5dc745805772f248d67eddfec88095657a6)) | ||||
| 
 | ||||
| ### [0.46.6](https://github.com/USERNAME/REPOSITORY_NAME/compare/v0.46.7...v0.46.6) (2024-09-13) | ||||
| 
 | ||||
| ### [0.46.7](https://github.com/USERNAME/REPOSITORY_NAME/compare/v0.46.6...v0.46.7) (2024-09-13) | ||||
|  | @ -43,6 +43,14 @@ | |||
|       "https://osoc.be/editions/2020/walk-by-brussels" | ||||
|     ] | ||||
|   }, | ||||
|   { | ||||
|     "path": "safe_loops.svg", | ||||
|     "license": "CC-BY-SA-4.0", | ||||
|     "authors": [ | ||||
|       "Robbert Gurdeep Singh" | ||||
|     ], | ||||
|     "sources": [] | ||||
|   }, | ||||
|   { | ||||
|     "path": "shed.svg", | ||||
|     "license": "CC-BY-SA-4.0", | ||||
|  | @ -82,13 +90,5 @@ | |||
|     "sources": [ | ||||
|       "https://osoc.be/editions/2020/walk-by-brussels" | ||||
|     ] | ||||
|   }, | ||||
|   { | ||||
|     "path": "safe_loops.svg", | ||||
|     "license": "CC-BY-SA", | ||||
|     "authors": [ | ||||
|       "Robbert Gurdeep Singh" | ||||
|     ], | ||||
|     "sources": [ ] | ||||
|   } | ||||
| ] | ||||
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							| Before Width: | Height: | Size: 6 KiB After Width: | Height: | Size: 3 KiB | 
							
								
								
									
										2
									
								
								assets/layers/bike_parking/safe_loops.svg.license
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								assets/layers/bike_parking/safe_loops.svg.license
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,2 @@ | |||
| SPDX-FileCopyrightText: Robbert Gurdeep Singh | ||||
| SPDX-License-Identifier: CC-BY-SA-4.0 | ||||
|  | @ -344,34 +344,34 @@ | |||
|           "if": "cuisine=pizza", | ||||
|           "icon": "🍕", | ||||
|           "then": { | ||||
|             "en": "This is a pizzeria", | ||||
|             "nl": "Dit is een pizzeria", | ||||
|             "de": "Dies ist eine Pizzeria", | ||||
|             "es": "Esto es una pizzería", | ||||
|             "fr": "C'est une pizzéria", | ||||
|             "ca": "Això és una pizzeria", | ||||
|             "pl": "To jest pizzeria", | ||||
|             "cs": "Tohle je pizzerie" | ||||
|             "en": "Pizzeria", | ||||
|             "nl": "Pizzeria", | ||||
|             "de": "Pizzeria", | ||||
|             "es": "Pizzería", | ||||
|             "fr": "Pizzéria", | ||||
|             "ca": "Pizzeria", | ||||
|             "pl": "Pizzeria", | ||||
|             "cs": "Pizzerie" | ||||
|           } | ||||
|         }, | ||||
|         { | ||||
|           "if": "cuisine=friture", | ||||
|           "icon": "🍟", | ||||
|           "then": { | ||||
|             "en": "This is a friture", | ||||
|             "nl": "Dit is een frituur", | ||||
|             "de": "Dies ist eine Pommesbude", | ||||
|             "fr": "C'est une friterie", | ||||
|             "ca": "Això és una fregiduria", | ||||
|             "cs": "Tohle je hranolkárna" | ||||
|             "en": "Friture", | ||||
|             "nl": "Frituur", | ||||
|             "de": "Pommesbude", | ||||
|             "fr": "Friterie", | ||||
|             "ca": "Fregiduria", | ||||
|             "cs": "Hranolkárna" | ||||
|           } | ||||
|         }, | ||||
|         { | ||||
|           "if": "cuisine=pasta", | ||||
|           "icon": "🍝", | ||||
|           "then": { | ||||
|             "en": "Mainly serves pasta", | ||||
|             "nl": "Dit is een pastazaak", | ||||
|             "en": "Serves mainly pasta", | ||||
|             "nl": "Pastazaak", | ||||
|             "de": "Bietet vorwiegend Pastagerichte an", | ||||
|             "es": "Principalmente sirve pasta", | ||||
|             "fr": "Restaurant Italien", | ||||
|  | @ -384,11 +384,11 @@ | |||
|           "if": "cuisine=kebab", | ||||
|           "icon": "🥙", | ||||
|           "then": { | ||||
|             "en": "This is kebab shop", | ||||
|             "nl": "Dit is een kebabzaak", | ||||
|             "de": "Das ist ein Dönerladen", | ||||
|             "es": "Esta es una tienda de kebak", | ||||
|             "fr": "C'est un resto kebab", | ||||
|             "en": "Kebab shop", | ||||
|             "nl": "Kebabzaak", | ||||
|             "de": "Dönerladen", | ||||
|             "es": "Tienda de kebak", | ||||
|             "fr": "Resto kebab", | ||||
|             "pl": "To jest stoisko z kebabem", | ||||
|             "ca": "Aquesta és una botiga de kebabs", | ||||
|             "cs": "Tohle je kebab" | ||||
|  | @ -398,11 +398,11 @@ | |||
|           "if": "cuisine=sandwich", | ||||
|           "icon": "🥪", | ||||
|           "then": { | ||||
|             "en": "This is a sandwich shop", | ||||
|             "nl": "Dit is een broodjeszaak", | ||||
|             "de": "Dies ist ein Sandwichladen", | ||||
|             "fr": "C'est une sandwicherie", | ||||
|             "ca": "Això és una botiga d'entrepans", | ||||
|             "en": "Sandwich shop", | ||||
|             "nl": "Broodjeszaak", | ||||
|             "de": "Sandwichladen", | ||||
|             "fr": "Sandwicherie", | ||||
|             "ca": "Botiga d'entrepans", | ||||
|             "cs": "Toto je obchod se sendviči" | ||||
|           } | ||||
|         }, | ||||
|  | @ -410,10 +410,9 @@ | |||
|           "if": "cuisine=burger", | ||||
|           "icon": "🍔", | ||||
|           "then": { | ||||
|             "en": "Burgers are served here", | ||||
|             "nl": "Dit is een hamburgerrestaurant", | ||||
|             "de": "Hier werden Burger serviert", | ||||
|             "es": "Aquí se sirven hamburguesas", | ||||
|             "en": "Burgersrestaurant", | ||||
|             "nl": "Hamburgerrestaurant", | ||||
|             "es": "Hamburguesas", | ||||
|             "fr": "Des hamburgers sont servis ici", | ||||
|             "ca": "Aquí es serveixen hamburgueses", | ||||
|             "pl": "Są tu podawane burgery", | ||||
|  | @ -424,8 +423,8 @@ | |||
|           "if": "cuisine=sushi", | ||||
|           "icon": "🍣", | ||||
|           "then": { | ||||
|             "en": "Sushi is served here", | ||||
|             "nl": "Dit is een sushirestaurant", | ||||
|             "en": "Sushi restaurant", | ||||
|             "nl": "Sushirestaurant", | ||||
|             "de": "Hier wird Sushi serviert", | ||||
|             "es": "Aquí se sirve sushi", | ||||
|             "fr": "Des sushis sont servis ici", | ||||
|  | @ -437,8 +436,8 @@ | |||
|           "if": "cuisine=coffee", | ||||
|           "icon": "☕", | ||||
|           "then": { | ||||
|             "en": "Coffee is served here", | ||||
|             "nl": "Dit is een koffiezaak", | ||||
|             "en": "Coffeebar", | ||||
|             "nl": "Koffiezaak", | ||||
|             "de": "Hier wird Kaffee serviert", | ||||
|             "es": "Aquí se sirve café", | ||||
|             "fr": "C'est un café", | ||||
|  | @ -450,8 +449,8 @@ | |||
|           "if": "cuisine=italian", | ||||
|           "icon": "🇮🇹", | ||||
|           "then": { | ||||
|             "en": "This is an Italian restaurant (which serves more than pasta and pizza)", | ||||
|             "nl": "Dit is een Italiaans restaurant (dat meer dan enkel pasta of pizza verkoopt)", | ||||
|             "en": "Italian restaurant (which serves more than pasta and pizza)", | ||||
|             "nl": "Italiaans restaurant (dat meer dan enkel pasta of pizza verkoopt)", | ||||
|             "de": "Dies ist ein italienisches Restaurant (das mehr als nur Pasta und Pizza serviert)", | ||||
|             "es": "Este es un restaurante italiano (que sirve algo más que pasta y pizza)", | ||||
|             "fr": "C'est un Restaurant Italien (qui sert plus que des pâtes et des pizzas)", | ||||
|  | @ -463,8 +462,8 @@ | |||
|           "if": "cuisine=french", | ||||
|           "icon": "🇫🇷", | ||||
|           "then": { | ||||
|             "en": "French dishes are served here", | ||||
|             "nl": "Dit is een Frans restaurant", | ||||
|             "en": "French restaurant", | ||||
|             "nl": "Frans restaurant", | ||||
|             "de": "Hier werden französische Gerichte serviert", | ||||
|             "es": "Aquí se sirven platos Franceses", | ||||
|             "fr": "Des plats français sont servis ici", | ||||
|  | @ -476,8 +475,8 @@ | |||
|           "if": "cuisine=chinese", | ||||
|           "icon": "🇨🇳", | ||||
|           "then": { | ||||
|             "en": "Chinese dishes are served here", | ||||
|             "nl": "Dit is een Chinees restaurant", | ||||
|             "en": "Chinese", | ||||
|             "nl": "Chinees restaurant", | ||||
|             "de": "Hier werden chinesische Gerichte serviert", | ||||
|             "es": "Aquí se sirven platos Chinos", | ||||
|             "fr": "Des plats chinois sont servis ici", | ||||
|  | @ -489,8 +488,8 @@ | |||
|           "if": "cuisine=greek", | ||||
|           "icon": "🇬🇷", | ||||
|           "then": { | ||||
|             "en": "Greek dishes are served here", | ||||
|             "nl": "Dit is een Grieks restaurant", | ||||
|             "en": "Greek", | ||||
|             "nl": "Grieks restaurant", | ||||
|             "de": "Hier werden griechische Gerichte serviert", | ||||
|             "es": "Aquí se sirven platos Griegos", | ||||
|             "fr": "Des plats grecs sont servis ici", | ||||
|  | @ -502,8 +501,8 @@ | |||
|           "if": "cuisine=indian", | ||||
|           "icon": "🇮🇳", | ||||
|           "then": { | ||||
|             "en": "Indian dishes are served here", | ||||
|             "nl": "Dit is een Indisch restaurant", | ||||
|             "en": "Indian", | ||||
|             "nl": "Indisch restaurant", | ||||
|             "de": "Hier werden indische Gerichte serviert", | ||||
|             "es": "Aquí se sirven platos Indios", | ||||
|             "fr": "Des plats indiens sont servis ici", | ||||
|  | @ -515,8 +514,8 @@ | |||
|           "if": "cuisine=turkish", | ||||
|           "icon": "🇹🇷", | ||||
|           "then": { | ||||
|             "en": "Turkish dishes are served here", | ||||
|             "nl": "Dit is een Turks restaurant (dat meer dan enkel kebab verkoopt)", | ||||
|             "en": "Turkish restaurant", | ||||
|             "nl": "Turks restaurant", | ||||
|             "de": "Hier werden türkische Gerichte serviert", | ||||
|             "es": "Aquí se sirven platos Turcos", | ||||
|             "fr": "Des plats turcs sont servis ici", | ||||
|  | @ -528,8 +527,8 @@ | |||
|           "if": "cuisine=thai", | ||||
|           "icon": "🇹🇭", | ||||
|           "then": { | ||||
|             "en": "Thai dishes are served here", | ||||
|             "nl": "Dit is een Thaïs restaurant", | ||||
|             "en": "Thai restaurant", | ||||
|             "nl": "Thaïs restaurant", | ||||
|             "de": "Hier werden thailändische Gerichte serviert", | ||||
|             "fr": "Des plats thaïlandais sont servis ici", | ||||
|             "ca": "Aquí es serveixen plats tailandesos", | ||||
|  |  | |||
							
								
								
									
										70
									
								
								assets/layers/geocoded_image/geocoded_image.json
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										70
									
								
								assets/layers/geocoded_image/geocoded_image.json
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,70 @@ | |||
| { | ||||
|   "id": "geocoded_image", | ||||
|   "source": "special", | ||||
|   "name": null, | ||||
|   "tagRenderings": [], | ||||
|   "pointRendering": [ | ||||
|     { | ||||
|       "location": [ | ||||
|         "point", | ||||
|         "centroid" | ||||
|       ], | ||||
|       "marker": [ | ||||
|         { | ||||
|           "icon": "direction_gradient", | ||||
|           "color": { | ||||
|             "render": "#44cc22", | ||||
|             "mappings": [ | ||||
|               { | ||||
|                 "if": "selected=yes", | ||||
|                 "then": "#cccc22" | ||||
|               } | ||||
|             ] | ||||
|           } | ||||
|         } | ||||
|       ], | ||||
|       "rotation": "{rotation}deg", | ||||
|       "rotationAlignment": "map", | ||||
|       "pitchAlignment": "map", | ||||
|       "iconSize": "60,60" | ||||
|     }, | ||||
|     { | ||||
|       "location": [ | ||||
|         "point", | ||||
|         "centroid" | ||||
|       ], | ||||
|       "rotationAlignment": "map", | ||||
|       "pitchAlignment": "map", | ||||
|       "marker": [ | ||||
|         { | ||||
|           "icon": "circle", | ||||
|           "color": { | ||||
|             "render": "#44cc22", | ||||
|             "mappings": [ | ||||
|               { | ||||
|                 "if": "selected=yes", | ||||
|                 "then": "#cccc22" | ||||
|               } | ||||
|             ] | ||||
|           } | ||||
|         } | ||||
|       ], | ||||
|       "iconSize": "14,14" | ||||
|     }, | ||||
|     { | ||||
|       "location": [ | ||||
|         "point", | ||||
|         "centroid" | ||||
|       ], | ||||
|       "rotationAlignment": "map", | ||||
|       "pitchAlignment": "map", | ||||
|       "marker": [ | ||||
|         { | ||||
|           "icon": "ring", | ||||
|           "color": "#000" | ||||
|         } | ||||
|       ], | ||||
|       "iconSize": "14,14" | ||||
|     } | ||||
|   ] | ||||
| } | ||||
|  | @ -13,18 +13,21 @@ | |||
|   "source": { | ||||
|     "osmTags": "date_created~*", | ||||
|     "geoJson": "https://api.openstreetmap.org/api/0.6/notes.json?limit=10000&closed=7&bbox={x_min},{y_min},{x_max},{y_max}", | ||||
|     "geoJsonZoomLevel": 12 | ||||
|     "geoJsonZoomLevel": 10 | ||||
|   }, | ||||
|   "calculatedTags": [ | ||||
|     "_total_comments:=get(feat)('comments').length", | ||||
|     "_first_comment:=get(feat)('comments')[0].text", | ||||
|     "_all_comments:=get(feat)('comments').map(c => c.text ?? '').join('\\n')", | ||||
|     "_all_usernames:=get(feat)('comments').map(c => c.user ?? 'Anonymous').join('\\n')", | ||||
|     "_opened_by_anonymous_user:=get(feat)('comments')[0].user === undefined", | ||||
|     "_first_user:=get(feat)('comments')[0].user", | ||||
|     "_last_user:=(() => {const comms = get(feat)('comments'); return comms[comms.length - 1].user})()", | ||||
|     "_last_change_date:=(() => {const comms = get(feat)('comments'); return comms[comms.length - 1].date})()", | ||||
|     "_first_user_id:=get(feat)('comments')[0].uid", | ||||
|     "_is_import_note:=(() => {const lines = feat.properties['_first_comment'].split('\\n'); const matchesMapCompleteURL = lines.map(l => l.match(\".*https://mapcomplete.\\(osm.be|org\\)/\\([a-zA-Z_-]+\\)\\(.html\\).*#import\")); const matchedIndexes = matchesMapCompleteURL.map((doesMatch, i) => [doesMatch !== null, i]).filter(v => v[0]).map(v => v[1]); return matchedIndexes[0] })()" | ||||
|   ], | ||||
|   "minzoom": 10, | ||||
|   "minzoom": 7, | ||||
|   "title": { | ||||
|     "render": { | ||||
|       "en": "Note", | ||||
|  | @ -158,183 +161,6 @@ | |||
|     } | ||||
|   ], | ||||
|   "filter": [ | ||||
|     { | ||||
|       "id": "search", | ||||
|       "options": [ | ||||
|         { | ||||
|           "osmTags": "_first_comment~i~.*{search}.*", | ||||
|           "fields": [ | ||||
|             { | ||||
|               "name": "search" | ||||
|             } | ||||
|           ], | ||||
|           "question": { | ||||
|             "en": "Should mention {search} in the first comment", | ||||
|             "nl": "Moet in de eerste opmerking \"{search}\" bevatten", | ||||
|             "de": "Sollte {search} im ersten Kommentar erwähnen", | ||||
|             "es": "Debe mencionar {search} en el primer comentario", | ||||
|             "ca": "Has de mencionar {search} en el primer comentari", | ||||
|             "cs": "Měl by se zmínit {search} v prvním komentáři" | ||||
|           } | ||||
|         } | ||||
|       ] | ||||
|     }, | ||||
|     { | ||||
|       "id": "not", | ||||
|       "options": [ | ||||
|         { | ||||
|           "osmTags": "_first_comment!~i~.*{search}.*", | ||||
|           "fields": [ | ||||
|             { | ||||
|               "name": "search" | ||||
|             } | ||||
|           ], | ||||
|           "question": { | ||||
|             "en": "Should <b>not</b> mention {search} in the first comment", | ||||
|             "nl": "Mag in de eerste opmerking <b>niet</b> \"{search}\" bevatten", | ||||
|             "de": "Sollte <b>nicht</b> {search} im ersten Kommentar erwähnen", | ||||
|             "es": "<b>No</b> debe mencionar {search} en el primer comentario", | ||||
|             "ca": "<b>No</b> s'ha de mencionar {search} al primer comentari", | ||||
|             "cs": "V prvním komentáři by jste <b>neměli</b> zmiňovat {search}" | ||||
|           } | ||||
|         } | ||||
|       ] | ||||
|     }, | ||||
|     { | ||||
|       "id": "opened_by", | ||||
|       "options": [ | ||||
|         { | ||||
|           "osmTags": "_first_user~i~.*{search}.*", | ||||
|           "fields": [ | ||||
|             { | ||||
|               "name": "search" | ||||
|             } | ||||
|           ], | ||||
|           "question": { | ||||
|             "en": "Opened by contributor {search}", | ||||
|             "nl": "Geopend door bijdrager {search}", | ||||
|             "de": "Erstellt von {search}", | ||||
|             "es": "Abierto por el contributor {search}", | ||||
|             "fr": "Ouverte par {search}", | ||||
|             "ca": "Obert pel contribuïdor {search}", | ||||
|             "cs": "Otevřeno přispěvatelem {search}" | ||||
|           } | ||||
|         } | ||||
|       ] | ||||
|     }, | ||||
|     { | ||||
|       "id": "not_opened_by", | ||||
|       "options": [ | ||||
|         { | ||||
|           "osmTags": "_first_user!~i~.*{search}.*", | ||||
|           "fields": [ | ||||
|             { | ||||
|               "name": "search" | ||||
|             } | ||||
|           ], | ||||
|           "question": { | ||||
|             "en": "<b>Not</b> opened by contributor {search}", | ||||
|             "nl": "<b>Niet</b> geopend door bijdrager {search}", | ||||
|             "de": "<b>Nicht</b> erstellt von {search}", | ||||
|             "es": "<b>No</b> abierto por el contributor {search}", | ||||
|             "ca": "<b>No</b> obert pel contribuïdor {search}", | ||||
|             "cs": "<b>Není</b> otevřeno přispěvatelem {search}", | ||||
|             "fr": "<b>Exclure</b>les notes ouvertes par {search}" | ||||
|           } | ||||
|         } | ||||
|       ] | ||||
|     }, | ||||
|     { | ||||
|       "id": "edited_by", | ||||
|       "options": [ | ||||
|         { | ||||
|           "osmTags": "_last_user~i~.*{search}.*", | ||||
|           "fields": [ | ||||
|             { | ||||
|               "name": "search" | ||||
|             } | ||||
|           ], | ||||
|           "question": { | ||||
|             "en": "Last edited by contributor {search}", | ||||
|             "nl": "Laatst bewerkt door bijdrager {search}", | ||||
|             "de": "Zuletzt bearbeitet von {search}", | ||||
|             "es": "Editada por última vez por el contributor {search}", | ||||
|             "ca": "Editat per última vega pel contribuïdor {search}", | ||||
|             "cs": "Naposledy upravil přispěvatel {search}", | ||||
|             "da": "Senest redigeret af bidragsyder {search}", | ||||
|             "fr": "Dernière modification par {search}" | ||||
|           } | ||||
|         } | ||||
|       ] | ||||
|     }, | ||||
|     { | ||||
|       "id": "not_edited_by", | ||||
|       "options": [ | ||||
|         { | ||||
|           "osmTags": "_last_user!~i~.*{search}.*", | ||||
|           "fields": [ | ||||
|             { | ||||
|               "name": "search" | ||||
|             } | ||||
|           ], | ||||
|           "question": { | ||||
|             "en": "Opened after {search}", | ||||
|             "nl": "Geopend na {search}", | ||||
|             "de": "Zuletzt bearbeitet nach dem {search}", | ||||
|             "es": "Abierta después de {search}", | ||||
|             "ca": "Oberta després de {search}", | ||||
|             "cs": "Otevřeno po {search}", | ||||
|             "fr": "Ouverte après le {search}" | ||||
|           } | ||||
|         } | ||||
|       ] | ||||
|     }, | ||||
|     { | ||||
|       "id": "opened_before", | ||||
|       "options": [ | ||||
|         { | ||||
|           "osmTags": "date_created<{search}", | ||||
|           "fields": [ | ||||
|             { | ||||
|               "name": "search", | ||||
|               "type": "date" | ||||
|             } | ||||
|           ], | ||||
|           "question": { | ||||
|             "en": "Created before {search}", | ||||
|             "nl": "Aangemaakt voor {search}", | ||||
|             "de": "Erstellt vor dem {search}", | ||||
|             "es": "Creada antes de {search}", | ||||
|             "ca": "Creada abans de {search}", | ||||
|             "cs": "Vytvořeno před {search}", | ||||
|             "fr": "Créée avant le {search}" | ||||
|           } | ||||
|         } | ||||
|       ] | ||||
|     }, | ||||
|     { | ||||
|       "id": "opened_after", | ||||
|       "options": [ | ||||
|         { | ||||
|           "osmTags": "date_created>{search}", | ||||
|           "fields": [ | ||||
|             { | ||||
|               "name": "search", | ||||
|               "type": "date" | ||||
|             } | ||||
|           ], | ||||
|           "question": { | ||||
|             "en": "Created after {search}", | ||||
|             "nl": "Aangemaakt na {search}", | ||||
|             "de": "Erstellt nach dem {search}", | ||||
|             "es": "Creada después de {search}", | ||||
|             "ca": "Creada després de {search}", | ||||
|             "cs": "Vytvořeno po {search}", | ||||
|             "fr": "Créée après le {search}" | ||||
|           } | ||||
|         } | ||||
|       ] | ||||
|     }, | ||||
|     { | ||||
|       "id": "anonymous", | ||||
|       "options": [ | ||||
|  | @ -406,6 +232,244 @@ | |||
|           } | ||||
|         } | ||||
|       ] | ||||
|     }, | ||||
|     { | ||||
|       "id": "search", | ||||
|       "options": [ | ||||
|         { | ||||
|           "osmTags": "_first_comment~i~.*{search}.*", | ||||
|           "fields": [ | ||||
|             { | ||||
|               "name": "search" | ||||
|             } | ||||
|           ], | ||||
|           "question": { | ||||
|             "en": "Should mention {search} in the first comment", | ||||
|             "nl": "Moet in de eerste opmerking \"{search}\" bevatten", | ||||
|             "de": "Sollte {search} im ersten Kommentar erwähnen", | ||||
|             "es": "Debe mencionar {search} en el primer comentario", | ||||
|             "ca": "Has de mencionar {search} en el primer comentari", | ||||
|             "cs": "Měl by se zmínit {search} v prvním komentáři" | ||||
|           } | ||||
|         } | ||||
|       ] | ||||
|     }, | ||||
|     { | ||||
|       "id": "search_any", | ||||
|       "options": [ | ||||
|         { | ||||
|           "osmTags": "_all_comments~i~.*{search}.*", | ||||
|           "fields": [ | ||||
|             { | ||||
|               "name": "search" | ||||
|             } | ||||
|           ], | ||||
|           "question": { | ||||
|             "en": "Should mention {search} in any comment" | ||||
|           } | ||||
|         } | ||||
|       ] | ||||
|     }, | ||||
| 
 | ||||
|     { | ||||
|       "id": "not", | ||||
|       "options": [ | ||||
|         { | ||||
|           "osmTags": "_first_comment!~i~.*{search}.*", | ||||
|           "fields": [ | ||||
|             { | ||||
|               "name": "search" | ||||
|             } | ||||
|           ], | ||||
|           "question": { | ||||
|             "en": "Should <b>not</b> mention {search} in the first comment", | ||||
|             "nl": "Mag in de eerste opmerking <b>niet</b> \"{search}\" bevatten", | ||||
|             "de": "Sollte <b>nicht</b> {search} im ersten Kommentar erwähnen", | ||||
|             "es": "<b>No</b> debe mencionar {search} en el primer comentario", | ||||
|             "ca": "<b>No</b> s'ha de mencionar {search} al primer comentari", | ||||
|             "cs": "V prvním komentáři by jste <b>neměli</b> zmiňovat {search}" | ||||
|           } | ||||
|         } | ||||
|       ] | ||||
|     }, | ||||
|     { | ||||
|       "id": "opened_by", | ||||
|       "options": [ | ||||
|         { | ||||
|           "osmTags": "_first_user~i~.*{search}.*", | ||||
|           "fields": [ | ||||
|             { | ||||
|               "name": "search" | ||||
|             } | ||||
|           ], | ||||
|           "question": { | ||||
|             "en": "Opened by contributor {search}", | ||||
|             "nl": "Geopend door bijdrager {search}", | ||||
|             "de": "Erstellt von {search}", | ||||
|             "es": "Abierto por el contributor {search}", | ||||
|             "fr": "Ouverte par {search}", | ||||
|             "ca": "Obert pel contribuïdor {search}", | ||||
|             "cs": "Otevřeno přispěvatelem {search}" | ||||
|           } | ||||
|         } | ||||
|       ] | ||||
|     }, | ||||
|     { | ||||
|       "id": "not_opened_by", | ||||
|       "options": [ | ||||
|         { | ||||
|           "osmTags": "_first_user!~i~.*{search}.*", | ||||
|           "fields": [ | ||||
|             { | ||||
|               "name": "search" | ||||
|             } | ||||
|           ], | ||||
|           "question": { | ||||
|             "en": "<b>Not</b> opened by contributor {search}", | ||||
|             "nl": "<b>Niet</b> geopend door bijdrager {search}", | ||||
|             "de": "<b>Nicht</b> erstellt von {search}", | ||||
|             "es": "<b>No</b> abierto por el contributor {search}", | ||||
|             "ca": "<b>No</b> obert pel contribuïdor {search}", | ||||
|             "cs": "<b>Není</b> otevřeno přispěvatelem {search}", | ||||
|             "fr": "<b>Exclure</b>les notes ouvertes par {search}" | ||||
|           } | ||||
|         } | ||||
|       ] | ||||
|     }, | ||||
|     { | ||||
|       "id": "edited_by_any", | ||||
|       "options": [ | ||||
|         { | ||||
|           "osmTags": "_all_usernames~i~.*{search}.*", | ||||
|           "fields": [ | ||||
|             { | ||||
|               "name": "search" | ||||
|             } | ||||
|           ], | ||||
|           "question": { | ||||
|             "en": "Edited or commented on by any user with name {search}" | ||||
|           } | ||||
|         } | ||||
|       ] | ||||
|     }, | ||||
|     { | ||||
|       "id": "last_edited_by", | ||||
|       "options": [ | ||||
|         { | ||||
|           "osmTags": "_last_user~i~.*{search}.*", | ||||
|           "fields": [ | ||||
|             { | ||||
|               "name": "search" | ||||
|             } | ||||
|           ], | ||||
|           "question": { | ||||
|             "en": "Last edited by contributor {search}", | ||||
|             "nl": "Laatst bewerkt door bijdrager {search}", | ||||
|             "de": "Zuletzt bearbeitet von {search}", | ||||
|             "es": "Editada por última vez por el contributor {search}", | ||||
|             "ca": "Editat per última vega pel contribuïdor {search}", | ||||
|             "cs": "Naposledy upravil přispěvatel {search}", | ||||
|             "da": "Senest redigeret af bidragsyder {search}", | ||||
|             "fr": "Dernière modification par {search}" | ||||
|           } | ||||
|         } | ||||
|       ] | ||||
|     }, | ||||
|     { | ||||
|       "id": "not_last_edited_by", | ||||
|       "options": [ | ||||
|         { | ||||
|           "osmTags": "_last_user!~i~.*{search}.*", | ||||
|           "fields": [ | ||||
|             { | ||||
|               "name": "search" | ||||
|             } | ||||
|           ], | ||||
|           "question": { | ||||
|             "en": "Not edited as last by {search}" | ||||
|           } | ||||
|         } | ||||
|       ] | ||||
|     }, | ||||
|     { | ||||
|       "id": "opened_before", | ||||
|       "options": [ | ||||
|         { | ||||
|           "osmTags": "date_created<{search}", | ||||
|           "fields": [ | ||||
|             { | ||||
|               "name": "search", | ||||
|               "type": "date" | ||||
|             } | ||||
|           ], | ||||
|           "question": { | ||||
|             "en": "Created before {search}", | ||||
|             "nl": "Aangemaakt voor {search}", | ||||
|             "de": "Erstellt vor dem {search}", | ||||
|             "es": "Creada antes de {search}", | ||||
|             "ca": "Creada abans de {search}", | ||||
|             "cs": "Vytvořeno před {search}", | ||||
|             "fr": "Créée avant le {search}" | ||||
|           } | ||||
|         } | ||||
|       ] | ||||
|     }, | ||||
|     { | ||||
|       "id": "opened_after", | ||||
|       "options": [ | ||||
|         { | ||||
|           "osmTags": "date_created>{search}", | ||||
|           "fields": [ | ||||
|             { | ||||
|               "name": "search", | ||||
|               "type": "date" | ||||
|             } | ||||
|           ], | ||||
|           "question": { | ||||
|             "en": "Created after {search}", | ||||
|             "nl": "Aangemaakt na {search}", | ||||
|             "de": "Erstellt nach dem {search}", | ||||
|             "es": "Creada después de {search}", | ||||
|             "ca": "Creada després de {search}", | ||||
|             "cs": "Vytvořeno po {search}", | ||||
|             "fr": "Créée après le {search}" | ||||
|           } | ||||
|         } | ||||
|       ] | ||||
|     }, | ||||
|     { | ||||
|       "id": "last_edited_before", | ||||
|       "options": [ | ||||
|         { | ||||
|           "osmTags": "_last_change_date<{search}", | ||||
|           "fields": [ | ||||
|             { | ||||
|               "name": "search", | ||||
|               "type": "date" | ||||
|             } | ||||
|           ], | ||||
|           "question": { | ||||
|             "en": "Last edited before {search}" | ||||
|           } | ||||
|         } | ||||
|       ] | ||||
|     }, | ||||
|     { | ||||
|       "id": "last_edited_after", | ||||
|       "options": [ | ||||
|         { | ||||
|           "osmTags": "_last_change_date>{search}", | ||||
|           "fields": [ | ||||
|             { | ||||
|               "name": "search", | ||||
|               "type": "date" | ||||
|             } | ||||
|           ], | ||||
|           "question": { | ||||
|             "en": "Last edited after {search}" | ||||
|           } | ||||
|         } | ||||
|       ] | ||||
|     } | ||||
|   ], | ||||
|   "allowMove": false | ||||
|  |  | |||
|  | @ -551,6 +551,31 @@ | |||
|         } | ||||
|       ] | ||||
|     }, | ||||
|     { | ||||
|       "id": "scalebar", | ||||
|       "question": { | ||||
|         "en": "Should a scale bar be shown on the map?", | ||||
|         "nl": "Moet er een schaalbalk weergegeven worden?" | ||||
|       }, | ||||
|       "mappings": [ | ||||
|         { | ||||
|           "if": "mapcomplete-preference-show-scale=true", | ||||
|           "then": { | ||||
|             "en": "Show the scalebar", | ||||
|             "nl": "Toon de schaalbalk" | ||||
|           } | ||||
|         }, | ||||
|         { | ||||
|           "if": "mapcomplete-preference-show-scale=false", | ||||
|           "alsoShowIf": "mapcomplete-preference-show-scale=", | ||||
| 
 | ||||
|           "then": { | ||||
|             "en": "Hide the scalebar", | ||||
|             "nl": "Verberg de schaalbalk" | ||||
|           } | ||||
|         } | ||||
|       ] | ||||
|     }, | ||||
|     { | ||||
|       "id": "title-editing", | ||||
|       "render": { | ||||
|  |  | |||
|  | @ -32,7 +32,7 @@ | |||
|      inkscape:window-maximized="1" | ||||
|      inkscape:current-layer="svg1" /> | ||||
|   <path | ||||
|      style="fill:#000000" | ||||
|      style="fill:#000000;" | ||||
|      class="selectable" | ||||
|      d="M 375,187.5 C 375,291.05469 291.05469,375 187.5,375 83.945312,375 0,291.05469 0,187.5 0,83.945312 83.945312,0 187.5,0 291.05469,0 375,83.945312 375,187.5 Z m 0,0" | ||||
|      id="path1" /> | ||||
|  |  | |||
| Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 1.2 KiB | 
|  | @ -1,101 +1,55 @@ | |||
| <?xml version="1.0" encoding="UTF-8" standalone="no"?> | ||||
| <svg | ||||
|         xmlns:dc="http://purl.org/dc/elements/1.1/" | ||||
|         xmlns:cc="http://creativecommons.org/ns#" | ||||
|         xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" | ||||
|         xmlns:xlink="http://www.w3.org/1999/xlink" | ||||
|         xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" | ||||
|         xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" | ||||
|         xmlns="http://www.w3.org/2000/svg" | ||||
|         version="1.0" | ||||
|         width="860.50732pt" | ||||
|         height="860.50732pt" | ||||
|         viewBox="0 0 860.50732 860.50732" | ||||
|         preserveAspectRatio="xMidYMid meet" | ||||
|         id="svg14" | ||||
|         sodipodi:docname="direction_gradient.svg" | ||||
|         inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)"> | ||||
|     <defs | ||||
|             id="defs18"> | ||||
|         <linearGradient | ||||
|                 inkscape:collect="always" | ||||
|                 id="linearGradient832"> | ||||
|             <stop | ||||
|                     style="stop-color:#000000;stop-opacity:1;" | ||||
|                     offset="0" | ||||
|                     id="stop828"/> | ||||
|             <stop | ||||
|                     style="stop-color:#000000;stop-opacity:0;" | ||||
|                     offset="1" | ||||
|                     id="stop830"/> | ||||
|         </linearGradient> | ||||
|         <radialGradient | ||||
|                 inkscape:collect="always" | ||||
|                 xlink:href="#linearGradient832" | ||||
|                 id="radialGradient838" | ||||
|                 cx="430.25363" | ||||
|                 cy="519.61188" | ||||
|                 fx="430.25363" | ||||
|                 fy="519.61188" | ||||
|                 r="305.54589" | ||||
|                 gradientTransform="matrix(0.95288409,-0.94890664,0.94542304,0.94938587,-470.98122,345.21193)" | ||||
|                 gradientUnits="userSpaceOnUse"/> | ||||
|     </defs> | ||||
|     <sodipodi:namedview | ||||
|             pagecolor="#ffffff" | ||||
|             bordercolor="#666666" | ||||
|             borderopacity="1" | ||||
|             objecttolerance="10" | ||||
|             gridtolerance="10" | ||||
|             guidetolerance="10" | ||||
|             inkscape:pageopacity="0" | ||||
|             inkscape:pageshadow="2" | ||||
|             inkscape:window-width="1920" | ||||
|             inkscape:window-height="999" | ||||
|             id="namedview16" | ||||
|             showgrid="false" | ||||
|             showguides="true" | ||||
|             inkscape:guide-bbox="true" | ||||
|             inkscape:zoom="0.70710678" | ||||
|             inkscape:cx="279.00239" | ||||
|             inkscape:cy="856.75313" | ||||
|             inkscape:window-x="0" | ||||
|             inkscape:window-y="0" | ||||
|             inkscape:window-maximized="1" | ||||
|             inkscape:current-layer="svg14"> | ||||
|         <sodipodi:guide | ||||
|                 position="430.25363,862.49682" | ||||
|                 orientation="1,0" | ||||
|                 id="guide832" | ||||
|                 inkscape:locked="false"/> | ||||
|         <sodipodi:guide | ||||
|                 position="-42.427977,430.25368" | ||||
|                 orientation="0,1" | ||||
|                 id="guide834" | ||||
|                 inkscape:locked="false"/> | ||||
|         <sodipodi:guide | ||||
|                 position="398.27788,720.18823" | ||||
|                 orientation="0,1" | ||||
|                 id="guide840" | ||||
|                 inkscape:locked="false"/> | ||||
|     </sodipodi:namedview> | ||||
|     <metadata | ||||
|             id="metadata2"> | ||||
|    version="1.0" | ||||
|    width="860.50732pt" | ||||
|    height="860.50732pt" | ||||
|    viewBox="0 0 860.50732 860.50732" | ||||
|    preserveAspectRatio="xMidYMid meet" | ||||
|    id="svg14" | ||||
|    xmlns:xlink="http://www.w3.org/1999/xlink" | ||||
|    xmlns="http://www.w3.org/2000/svg" | ||||
|    xmlns:svg="http://www.w3.org/2000/svg" | ||||
|    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" | ||||
|    xmlns:cc="http://creativecommons.org/ns#" | ||||
|    xmlns:dc="http://purl.org/dc/elements/1.1/"> | ||||
|   <defs | ||||
|      id="defs18"> | ||||
|     <linearGradient | ||||
|        id="linearGradient832"> | ||||
|       <stop | ||||
|          style="stop-color:#000000;stop-opacity:1;" | ||||
|          offset="0" | ||||
|          id="stop828" /> | ||||
|       <stop | ||||
|          style="stop-color:#000000;stop-opacity:0;" | ||||
|          offset="1" | ||||
|          id="stop830" /> | ||||
|     </linearGradient> | ||||
|     <radialGradient | ||||
|        xlink:href="#linearGradient832" | ||||
|        id="radialGradient838" | ||||
|        cx="430.25363" | ||||
|        cy="519.61188" | ||||
|        fx="430.25363" | ||||
|        fy="519.61188" | ||||
|        r="305.54589" | ||||
|        gradientTransform="matrix(0.95288409,-0.94890664,0.94542304,0.94938587,-470.98122,345.21193)" | ||||
|        gradientUnits="userSpaceOnUse" /> | ||||
|   </defs> | ||||
|   <metadata | ||||
|      id="metadata2"> | ||||
|         Created by potrace 1.15, written by Peter Selinger 2001-2017 | ||||
|         <rdf:RDF> | ||||
|             <cc:Work | ||||
|                     rdf:about=""> | ||||
|                 <dc:format>image/svg+xml</dc:format> | ||||
|                 <dc:type | ||||
|                         rdf:resource="http://purl.org/dc/dcmitype/StillImage"/> | ||||
|                 <dc:title/> | ||||
|             </cc:Work> | ||||
|         </rdf:RDF> | ||||
|     </metadata> | ||||
|     <path | ||||
|             style="fill:url(#radialGradient838);fill-opacity:1;stroke:none;stroke-width:2.83464575;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" | ||||
|             d="M 735.79979,124.70799 C 654.79116,43.598883 544.88842,-2.0206645 430.25389,-2.121103 315.61937,-2.0206592 205.71663,43.598888 124.70801,124.70799 l 305.54588,305.54589 z" | ||||
|             id="path836" | ||||
|             inkscape:connector-curvature="0" | ||||
|             sodipodi:nodetypes="ccccc"/> | ||||
|   <cc:Work | ||||
|      rdf:about=""> | ||||
|     <dc:format>image/svg+xml</dc:format> | ||||
|     <dc:type | ||||
|        rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> | ||||
|   </cc:Work> | ||||
| </rdf:RDF> | ||||
| </metadata> | ||||
|   <path | ||||
|      style="fill:url(#radialGradient838);fill-opacity:1;stroke:none;stroke-width:2.83464575;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" | ||||
|      d="M 735.79979,124.70799 C 654.79116,43.598883 544.88842,-2.0206645 430.25389,-2.121103 315.61937,-2.0206592 205.71663,43.598888 124.70801,124.70799 l 305.54588,305.54589 z" | ||||
|      id="path836" /> | ||||
| </svg> | ||||
|  |  | |||
| Before Width: | Height: | Size: 3.9 KiB After Width: | Height: | Size: 1.8 KiB | 
|  | @ -1,2 +1,2 @@ | |||
| SPDX-FileCopyrightText: Pieter Vander Vennet | ||||
| SPDX-License-Identifier: CC0 | ||||
| SPDX-License-Identifier: CC0-1.0 | ||||
|  | @ -234,7 +234,7 @@ | |||
|         { | ||||
|           "id": "nearby_images", | ||||
|           "render": { | ||||
|             "*": "{nearby_images(open,readonly)}" | ||||
|             "*": "{nearby_images(,readonly)}" | ||||
|           } | ||||
|         } | ||||
|       ], | ||||
|  |  | |||
|  | @ -643,7 +643,8 @@ | |||
|         "pointIsMoved": "Der Punkt wurde verschoben", | ||||
|         "reasons": { | ||||
|             "reasonInaccurate": "Der Standort ist um ein paar Meter ungenau", | ||||
|             "reasonRelocation": "Das Element wurde an einen völlig anderen Ort verlegt" | ||||
|             "reasonRelocation": "Das Element wurde an einen völlig anderen Ort verlegt", | ||||
|             "reasonSnapTo": "Dies sollte auf {name} fixiert werden" | ||||
|         }, | ||||
|         "selectReason": "Warum verschieben Sie dieses Element?", | ||||
|         "whyMove": "Warum wollen Sie diesen Punkt verschieben?", | ||||
|  | @ -778,6 +779,14 @@ | |||
|         "missing": "{count} nicht übersetzte Zeichenfolgen", | ||||
|         "notImmediate": "Die Übersetzung wird nicht direkt aktualisiert. Dies dauert in der Regel ein paar Tage" | ||||
|     }, | ||||
|     "unknown": { | ||||
|         "clear": "Antwort löschen", | ||||
|         "explanation": "Lösche dieses Informationsmerkmal, wenn die aktuelle Antwort falsch ist, aber der tatsächliche Wert nicht bekannt ist. Andere Informationen werden nicht entfernt.", | ||||
|         "keep": "Antwort behalten", | ||||
|         "markUnknown": "Als unbekannt markieren", | ||||
|         "removedKeys": "Die folgenden Einträge werden entfernt:", | ||||
|         "title": "Als unbekannt markieren?" | ||||
|     }, | ||||
|     "userinfo": { | ||||
|         "gotoInbox": "Deinen Posteingang öffnen", | ||||
|         "gotoSettings": "Einstellungen auf OpenStreetMap.org öffnen", | ||||
|  |  | |||
|  | @ -3926,10 +3926,10 @@ | |||
|             "Cuisine": { | ||||
|                 "mappings": { | ||||
|                     "0": { | ||||
|                         "then": "Això és una pizzeria" | ||||
|                         "then": "Pizzeria" | ||||
|                     }, | ||||
|                     "1": { | ||||
|                         "then": "Això és una fregiduria" | ||||
|                         "then": "Fregiduria" | ||||
|                     }, | ||||
|                     "10": { | ||||
|                         "then": "Aquí es serveixen plats xinesos" | ||||
|  | @ -3953,7 +3953,7 @@ | |||
|                         "then": "Aquesta és una botiga de kebabs" | ||||
|                     }, | ||||
|                     "4": { | ||||
|                         "then": "Això és una botiga d'entrepans" | ||||
|                         "then": "Botiga d'entrepans" | ||||
|                     }, | ||||
|                     "5": { | ||||
|                         "then": "Aquí es serveixen hamburgueses" | ||||
|  | @ -5126,18 +5126,32 @@ | |||
|             "0": { | ||||
|                 "options": { | ||||
|                     "0": { | ||||
|                         "question": "Has de mencionar {search} en el primer comentari" | ||||
|                         "question": "Sols mostrar les notes obertes per contribuïdors anònims" | ||||
|                     } | ||||
|                 } | ||||
|             }, | ||||
|             "1": { | ||||
|                 "options": { | ||||
|                     "0": { | ||||
|                         "question": "<b>No</b> s'ha de mencionar {search} al primer comentari" | ||||
|                         "question": "Sols mostra les notes obertes" | ||||
|                     } | ||||
|                 } | ||||
|             }, | ||||
|             "10": { | ||||
|             "11": { | ||||
|                 "options": { | ||||
|                     "0": { | ||||
|                         "question": "Creada abans de {search}" | ||||
|                     } | ||||
|                 } | ||||
|             }, | ||||
|             "12": { | ||||
|                 "options": { | ||||
|                     "0": { | ||||
|                         "question": "Creada després de {search}" | ||||
|                     } | ||||
|                 } | ||||
|             }, | ||||
|             "2": { | ||||
|                 "options": { | ||||
|                     "0": { | ||||
|                         "question": "Totes les notes" | ||||
|  | @ -5150,59 +5164,38 @@ | |||
|                     } | ||||
|                 } | ||||
|             }, | ||||
|             "2": { | ||||
|                 "options": { | ||||
|                     "0": { | ||||
|                         "question": "Obert pel contribuïdor {search}" | ||||
|                     } | ||||
|                 } | ||||
|             }, | ||||
|             "3": { | ||||
|                 "options": { | ||||
|                     "0": { | ||||
|                         "question": "<b>No</b> obert pel contribuïdor {search}" | ||||
|                     } | ||||
|                 } | ||||
|             }, | ||||
|             "4": { | ||||
|                 "options": { | ||||
|                     "0": { | ||||
|                         "question": "Editat per última vega pel contribuïdor {search}" | ||||
|                         "question": "Has de mencionar {search} en el primer comentari" | ||||
|                     } | ||||
|                 } | ||||
|             }, | ||||
|             "5": { | ||||
|                 "options": { | ||||
|                     "0": { | ||||
|                         "question": "Oberta després de {search}" | ||||
|                         "question": "<b>No</b> s'ha de mencionar {search} al primer comentari" | ||||
|                     } | ||||
|                 } | ||||
|             }, | ||||
|             "6": { | ||||
|                 "options": { | ||||
|                     "0": { | ||||
|                         "question": "Creada abans de {search}" | ||||
|                         "question": "Obert pel contribuïdor {search}" | ||||
|                     } | ||||
|                 } | ||||
|             }, | ||||
|             "7": { | ||||
|                 "options": { | ||||
|                     "0": { | ||||
|                         "question": "Creada després de {search}" | ||||
|                     } | ||||
|                 } | ||||
|             }, | ||||
|             "8": { | ||||
|                 "options": { | ||||
|                     "0": { | ||||
|                         "question": "Sols mostrar les notes obertes per contribuïdors anònims" | ||||
|                         "question": "<b>No</b> obert pel contribuïdor {search}" | ||||
|                     } | ||||
|                 } | ||||
|             }, | ||||
|             "9": { | ||||
|                 "options": { | ||||
|                     "0": { | ||||
|                         "question": "Sols mostra les notes obertes" | ||||
|                         "question": "Editat per última vega pel contribuïdor {search}" | ||||
|                     } | ||||
|                 } | ||||
|             } | ||||
|  |  | |||
|  | @ -4072,10 +4072,10 @@ | |||
|             "Cuisine": { | ||||
|                 "mappings": { | ||||
|                     "0": { | ||||
|                         "then": "Tohle je pizzerie" | ||||
|                         "then": "Pizzerie" | ||||
|                     }, | ||||
|                     "1": { | ||||
|                         "then": "Tohle je hranolkárna" | ||||
|                         "then": "Hranolkárna" | ||||
|                     }, | ||||
|                     "10": { | ||||
|                         "then": "Podávají se zde čínské pokrmy" | ||||
|  | @ -5352,18 +5352,32 @@ | |||
|             "0": { | ||||
|                 "options": { | ||||
|                     "0": { | ||||
|                         "question": "Měl by se zmínit {search} v prvním komentáři" | ||||
|                         "question": "Zobrazovat pouze poznámky otevřené anonymním přispěvatelem" | ||||
|                     } | ||||
|                 } | ||||
|             }, | ||||
|             "1": { | ||||
|                 "options": { | ||||
|                     "0": { | ||||
|                         "question": "V prvním komentáři by jste <b>neměli</b> zmiňovat {search}" | ||||
|                         "question": "Zobrazit pouze otevřené poznámky" | ||||
|                     } | ||||
|                 } | ||||
|             }, | ||||
|             "10": { | ||||
|             "11": { | ||||
|                 "options": { | ||||
|                     "0": { | ||||
|                         "question": "Vytvořeno před {search}" | ||||
|                     } | ||||
|                 } | ||||
|             }, | ||||
|             "12": { | ||||
|                 "options": { | ||||
|                     "0": { | ||||
|                         "question": "Vytvořeno po {search}" | ||||
|                     } | ||||
|                 } | ||||
|             }, | ||||
|             "2": { | ||||
|                 "options": { | ||||
|                     "0": { | ||||
|                         "question": "Všechny poznámky" | ||||
|  | @ -5376,59 +5390,38 @@ | |||
|                     } | ||||
|                 } | ||||
|             }, | ||||
|             "2": { | ||||
|                 "options": { | ||||
|                     "0": { | ||||
|                         "question": "Otevřeno přispěvatelem {search}" | ||||
|                     } | ||||
|                 } | ||||
|             }, | ||||
|             "3": { | ||||
|                 "options": { | ||||
|                     "0": { | ||||
|                         "question": "<b>Není</b> otevřeno přispěvatelem {search}" | ||||
|                     } | ||||
|                 } | ||||
|             }, | ||||
|             "4": { | ||||
|                 "options": { | ||||
|                     "0": { | ||||
|                         "question": "Naposledy upravil přispěvatel {search}" | ||||
|                         "question": "Měl by se zmínit {search} v prvním komentáři" | ||||
|                     } | ||||
|                 } | ||||
|             }, | ||||
|             "5": { | ||||
|                 "options": { | ||||
|                     "0": { | ||||
|                         "question": "Otevřeno po {search}" | ||||
|                         "question": "V prvním komentáři by jste <b>neměli</b> zmiňovat {search}" | ||||
|                     } | ||||
|                 } | ||||
|             }, | ||||
|             "6": { | ||||
|                 "options": { | ||||
|                     "0": { | ||||
|                         "question": "Vytvořeno před {search}" | ||||
|                         "question": "Otevřeno přispěvatelem {search}" | ||||
|                     } | ||||
|                 } | ||||
|             }, | ||||
|             "7": { | ||||
|                 "options": { | ||||
|                     "0": { | ||||
|                         "question": "Vytvořeno po {search}" | ||||
|                     } | ||||
|                 } | ||||
|             }, | ||||
|             "8": { | ||||
|                 "options": { | ||||
|                     "0": { | ||||
|                         "question": "Zobrazovat pouze poznámky otevřené anonymním přispěvatelem" | ||||
|                         "question": "<b>Není</b> otevřeno přispěvatelem {search}" | ||||
|                     } | ||||
|                 } | ||||
|             }, | ||||
|             "9": { | ||||
|                 "options": { | ||||
|                     "0": { | ||||
|                         "question": "Zobrazit pouze otevřené poznámky" | ||||
|                         "question": "Naposledy upravil přispěvatel {search}" | ||||
|                     } | ||||
|                 } | ||||
|             } | ||||
|  |  | |||
|  | @ -1640,7 +1640,7 @@ | |||
|     }, | ||||
|     "note": { | ||||
|         "filter": { | ||||
|             "4": { | ||||
|             "9": { | ||||
|                 "options": { | ||||
|                     "0": { | ||||
|                         "question": "Senest redigeret af bidragsyder {search}" | ||||
|  |  | |||
|  | @ -5147,10 +5147,10 @@ | |||
|             "Cuisine": { | ||||
|                 "mappings": { | ||||
|                     "0": { | ||||
|                         "then": "Dies ist eine Pizzeria" | ||||
|                         "then": "Pizzeria" | ||||
|                     }, | ||||
|                     "1": { | ||||
|                         "then": "Dies ist eine Pommesbude" | ||||
|                         "then": "Pommesbude" | ||||
|                     }, | ||||
|                     "10": { | ||||
|                         "then": "Hier werden chinesische Gerichte serviert" | ||||
|  | @ -5171,13 +5171,10 @@ | |||
|                         "then": "Bietet vorwiegend Pastagerichte an" | ||||
|                     }, | ||||
|                     "3": { | ||||
|                         "then": "Das ist ein Dönerladen" | ||||
|                         "then": "Dönerladen" | ||||
|                     }, | ||||
|                     "4": { | ||||
|                         "then": "Dies ist ein Sandwichladen" | ||||
|                     }, | ||||
|                     "5": { | ||||
|                         "then": "Hier werden Burger serviert" | ||||
|                         "then": "Sandwichladen" | ||||
|                     }, | ||||
|                     "6": { | ||||
|                         "then": "Hier wird Sushi serviert" | ||||
|  | @ -6769,18 +6766,32 @@ | |||
|             "0": { | ||||
|                 "options": { | ||||
|                     "0": { | ||||
|                         "question": "Sollte {search} im ersten Kommentar erwähnen" | ||||
|                         "question": "Nur Notizen anzeigen, die anonym erstellt wurden" | ||||
|                     } | ||||
|                 } | ||||
|             }, | ||||
|             "1": { | ||||
|                 "options": { | ||||
|                     "0": { | ||||
|                         "question": "Sollte <b>nicht</b> {search} im ersten Kommentar erwähnen" | ||||
|                         "question": "Nur offene Notizen anzeigen" | ||||
|                     } | ||||
|                 } | ||||
|             }, | ||||
|             "10": { | ||||
|             "11": { | ||||
|                 "options": { | ||||
|                     "0": { | ||||
|                         "question": "Erstellt vor dem {search}" | ||||
|                     } | ||||
|                 } | ||||
|             }, | ||||
|             "12": { | ||||
|                 "options": { | ||||
|                     "0": { | ||||
|                         "question": "Erstellt nach dem {search}" | ||||
|                     } | ||||
|                 } | ||||
|             }, | ||||
|             "2": { | ||||
|                 "options": { | ||||
|                     "0": { | ||||
|                         "question": "Alle Notizen" | ||||
|  | @ -6793,59 +6804,38 @@ | |||
|                     } | ||||
|                 } | ||||
|             }, | ||||
|             "2": { | ||||
|                 "options": { | ||||
|                     "0": { | ||||
|                         "question": "Erstellt von {search}" | ||||
|                     } | ||||
|                 } | ||||
|             }, | ||||
|             "3": { | ||||
|                 "options": { | ||||
|                     "0": { | ||||
|                         "question": "<b>Nicht</b> erstellt von {search}" | ||||
|                     } | ||||
|                 } | ||||
|             }, | ||||
|             "4": { | ||||
|                 "options": { | ||||
|                     "0": { | ||||
|                         "question": "Zuletzt bearbeitet von {search}" | ||||
|                         "question": "Sollte {search} im ersten Kommentar erwähnen" | ||||
|                     } | ||||
|                 } | ||||
|             }, | ||||
|             "5": { | ||||
|                 "options": { | ||||
|                     "0": { | ||||
|                         "question": "Zuletzt bearbeitet nach dem {search}" | ||||
|                         "question": "Sollte <b>nicht</b> {search} im ersten Kommentar erwähnen" | ||||
|                     } | ||||
|                 } | ||||
|             }, | ||||
|             "6": { | ||||
|                 "options": { | ||||
|                     "0": { | ||||
|                         "question": "Erstellt vor dem {search}" | ||||
|                         "question": "Erstellt von {search}" | ||||
|                     } | ||||
|                 } | ||||
|             }, | ||||
|             "7": { | ||||
|                 "options": { | ||||
|                     "0": { | ||||
|                         "question": "Erstellt nach dem {search}" | ||||
|                     } | ||||
|                 } | ||||
|             }, | ||||
|             "8": { | ||||
|                 "options": { | ||||
|                     "0": { | ||||
|                         "question": "Nur Notizen anzeigen, die anonym erstellt wurden" | ||||
|                         "question": "<b>Nicht</b> erstellt von {search}" | ||||
|                     } | ||||
|                 } | ||||
|             }, | ||||
|             "9": { | ||||
|                 "options": { | ||||
|                     "0": { | ||||
|                         "question": "Nur offene Notizen anzeigen" | ||||
|                         "question": "Zuletzt bearbeitet von {search}" | ||||
|                     } | ||||
|                 } | ||||
|             } | ||||
|  |  | |||
|  | @ -5149,25 +5149,25 @@ | |||
|             "Cuisine": { | ||||
|                 "mappings": { | ||||
|                     "0": { | ||||
|                         "then": "This is a pizzeria" | ||||
|                         "then": "Pizzeria" | ||||
|                     }, | ||||
|                     "1": { | ||||
|                         "then": "This is a friture" | ||||
|                         "then": "Friture" | ||||
|                     }, | ||||
|                     "10": { | ||||
|                         "then": "Chinese dishes are served here" | ||||
|                         "then": "Chinese" | ||||
|                     }, | ||||
|                     "11": { | ||||
|                         "then": "Greek dishes are served here" | ||||
|                         "then": "Greek" | ||||
|                     }, | ||||
|                     "12": { | ||||
|                         "then": "Indian dishes are served here" | ||||
|                         "then": "Indian" | ||||
|                     }, | ||||
|                     "13": { | ||||
|                         "then": "Turkish dishes are served here" | ||||
|                         "then": "Turkish restaurant" | ||||
|                     }, | ||||
|                     "14": { | ||||
|                         "then": "Thai dishes are served here" | ||||
|                         "then": "Thai restaurant" | ||||
|                     }, | ||||
|                     "15": { | ||||
|                         "then": "Mexican dishes are served here" | ||||
|  | @ -5182,28 +5182,28 @@ | |||
|                         "then": "Seafood dishes are served here" | ||||
|                     }, | ||||
|                     "2": { | ||||
|                         "then": "Mainly serves pasta" | ||||
|                         "then": "Serves mainly pasta" | ||||
|                     }, | ||||
|                     "3": { | ||||
|                         "then": "This is kebab shop" | ||||
|                         "then": "Kebab shop" | ||||
|                     }, | ||||
|                     "4": { | ||||
|                         "then": "This is a sandwich shop" | ||||
|                         "then": "Sandwich shop" | ||||
|                     }, | ||||
|                     "5": { | ||||
|                         "then": "Burgers are served here" | ||||
|                         "then": "Burgersrestaurant" | ||||
|                     }, | ||||
|                     "6": { | ||||
|                         "then": "Sushi is served here" | ||||
|                         "then": "Sushi restaurant" | ||||
|                     }, | ||||
|                     "7": { | ||||
|                         "then": "Coffee is served here" | ||||
|                         "then": "Coffeebar" | ||||
|                     }, | ||||
|                     "8": { | ||||
|                         "then": "This is an Italian restaurant (which serves more than pasta and pizza)" | ||||
|                         "then": "Italian restaurant (which serves more than pasta and pizza)" | ||||
|                     }, | ||||
|                     "9": { | ||||
|                         "then": "French dishes are served here" | ||||
|                         "then": "French restaurant" | ||||
|                     } | ||||
|                 }, | ||||
|                 "question": "What kind of food is served here?", | ||||
|  | @ -6791,18 +6791,53 @@ | |||
|             "0": { | ||||
|                 "options": { | ||||
|                     "0": { | ||||
|                         "question": "Should mention {search} in the first comment" | ||||
|                         "question": "Only show notes opened by an anonymous contributor" | ||||
|                     } | ||||
|                 } | ||||
|             }, | ||||
|             "1": { | ||||
|                 "options": { | ||||
|                     "0": { | ||||
|                         "question": "Should <b>not</b> mention {search} in the first comment" | ||||
|                         "question": "Only show open notes" | ||||
|                     } | ||||
|                 } | ||||
|             }, | ||||
|             "10": { | ||||
|                 "options": { | ||||
|                     "0": { | ||||
|                         "question": "Not edited as last by {search}" | ||||
|                     } | ||||
|                 } | ||||
|             }, | ||||
|             "11": { | ||||
|                 "options": { | ||||
|                     "0": { | ||||
|                         "question": "Created before {search}" | ||||
|                     } | ||||
|                 } | ||||
|             }, | ||||
|             "12": { | ||||
|                 "options": { | ||||
|                     "0": { | ||||
|                         "question": "Created after {search}" | ||||
|                     } | ||||
|                 } | ||||
|             }, | ||||
|             "13": { | ||||
|                 "options": { | ||||
|                     "0": { | ||||
|                         "question": "Last edited before {search}" | ||||
|                     } | ||||
|                 } | ||||
|             }, | ||||
|             "14": { | ||||
|                 "options": { | ||||
|                     "0": { | ||||
|                         "question": "Last edited after {search}" | ||||
|                     } | ||||
|                 } | ||||
|             }, | ||||
|             "2": { | ||||
|                 "options": { | ||||
|                     "0": { | ||||
|                         "question": "All Notes" | ||||
|  | @ -6815,59 +6850,52 @@ | |||
|                     } | ||||
|                 } | ||||
|             }, | ||||
|             "2": { | ||||
|                 "options": { | ||||
|                     "0": { | ||||
|                         "question": "Opened by contributor {search}" | ||||
|                     } | ||||
|                 } | ||||
|             }, | ||||
|             "3": { | ||||
|                 "options": { | ||||
|                     "0": { | ||||
|                         "question": "<b>Not</b> opened by contributor {search}" | ||||
|                         "question": "Should mention {search} in the first comment" | ||||
|                     } | ||||
|                 } | ||||
|             }, | ||||
|             "4": { | ||||
|                 "options": { | ||||
|                     "0": { | ||||
|                         "question": "Last edited by contributor {search}" | ||||
|                         "question": "Should mention {search} in any comment" | ||||
|                     } | ||||
|                 } | ||||
|             }, | ||||
|             "5": { | ||||
|                 "options": { | ||||
|                     "0": { | ||||
|                         "question": "Opened after {search}" | ||||
|                         "question": "Should <b>not</b> mention {search} in the first comment" | ||||
|                     } | ||||
|                 } | ||||
|             }, | ||||
|             "6": { | ||||
|                 "options": { | ||||
|                     "0": { | ||||
|                         "question": "Created before {search}" | ||||
|                         "question": "Opened by contributor {search}" | ||||
|                     } | ||||
|                 } | ||||
|             }, | ||||
|             "7": { | ||||
|                 "options": { | ||||
|                     "0": { | ||||
|                         "question": "Created after {search}" | ||||
|                         "question": "<b>Not</b> opened by contributor {search}" | ||||
|                     } | ||||
|                 } | ||||
|             }, | ||||
|             "8": { | ||||
|                 "options": { | ||||
|                     "0": { | ||||
|                         "question": "Only show notes opened by an anonymous contributor" | ||||
|                         "question": "Edited or commented on by any user with name {search}" | ||||
|                     } | ||||
|                 } | ||||
|             }, | ||||
|             "9": { | ||||
|                 "options": { | ||||
|                     "0": { | ||||
|                         "question": "Only show open notes" | ||||
|                         "question": "Last edited by contributor {search}" | ||||
|                     } | ||||
|                 } | ||||
|             } | ||||
|  | @ -11614,6 +11642,17 @@ | |||
|                     } | ||||
|                 } | ||||
|             }, | ||||
|             "scalebar": { | ||||
|                 "mappings": { | ||||
|                     "0": { | ||||
|                         "then": "Show the scalebar" | ||||
|                     }, | ||||
|                     "1": { | ||||
|                         "then": "Hide the scalebar" | ||||
|                     } | ||||
|                 }, | ||||
|                 "question": "Should a scale bar be shown on the map?" | ||||
|             }, | ||||
|             "settings-link": { | ||||
|                 "render": { | ||||
|                     "special": { | ||||
|  |  | |||
|  | @ -2707,7 +2707,7 @@ | |||
|             "Cuisine": { | ||||
|                 "mappings": { | ||||
|                     "0": { | ||||
|                         "then": "Esto es una pizzería" | ||||
|                         "then": "Pizzería" | ||||
|                     }, | ||||
|                     "10": { | ||||
|                         "then": "Aquí se sirven platos Chinos" | ||||
|  | @ -2725,10 +2725,10 @@ | |||
|                         "then": "Principalmente sirve pasta" | ||||
|                     }, | ||||
|                     "3": { | ||||
|                         "then": "Esta es una tienda de kebak" | ||||
|                         "then": "Tienda de kebak" | ||||
|                     }, | ||||
|                     "5": { | ||||
|                         "then": "Aquí se sirven hamburguesas" | ||||
|                         "then": "Hamburguesas" | ||||
|                     }, | ||||
|                     "6": { | ||||
|                         "then": "Aquí se sirve sushi" | ||||
|  | @ -3135,18 +3135,32 @@ | |||
|             "0": { | ||||
|                 "options": { | ||||
|                     "0": { | ||||
|                         "question": "Debe mencionar {search} en el primer comentario" | ||||
|                         "question": "Solo mostrar las notas abiertas por contributores anómimos" | ||||
|                     } | ||||
|                 } | ||||
|             }, | ||||
|             "1": { | ||||
|                 "options": { | ||||
|                     "0": { | ||||
|                         "question": "<b>No</b> debe mencionar {search} en el primer comentario" | ||||
|                         "question": "Solo mostrar las notas abiertas" | ||||
|                     } | ||||
|                 } | ||||
|             }, | ||||
|             "10": { | ||||
|             "11": { | ||||
|                 "options": { | ||||
|                     "0": { | ||||
|                         "question": "Creada antes de {search}" | ||||
|                     } | ||||
|                 } | ||||
|             }, | ||||
|             "12": { | ||||
|                 "options": { | ||||
|                     "0": { | ||||
|                         "question": "Creada después de {search}" | ||||
|                     } | ||||
|                 } | ||||
|             }, | ||||
|             "2": { | ||||
|                 "options": { | ||||
|                     "0": { | ||||
|                         "question": "Todas las notas" | ||||
|  | @ -3159,59 +3173,38 @@ | |||
|                     } | ||||
|                 } | ||||
|             }, | ||||
|             "2": { | ||||
|                 "options": { | ||||
|                     "0": { | ||||
|                         "question": "Abierto por el contributor {search}" | ||||
|                     } | ||||
|                 } | ||||
|             }, | ||||
|             "3": { | ||||
|                 "options": { | ||||
|                     "0": { | ||||
|                         "question": "<b>No</b> abierto por el contributor {search}" | ||||
|                     } | ||||
|                 } | ||||
|             }, | ||||
|             "4": { | ||||
|                 "options": { | ||||
|                     "0": { | ||||
|                         "question": "Editada por última vez por el contributor {search}" | ||||
|                         "question": "Debe mencionar {search} en el primer comentario" | ||||
|                     } | ||||
|                 } | ||||
|             }, | ||||
|             "5": { | ||||
|                 "options": { | ||||
|                     "0": { | ||||
|                         "question": "Abierta después de {search}" | ||||
|                         "question": "<b>No</b> debe mencionar {search} en el primer comentario" | ||||
|                     } | ||||
|                 } | ||||
|             }, | ||||
|             "6": { | ||||
|                 "options": { | ||||
|                     "0": { | ||||
|                         "question": "Creada antes de {search}" | ||||
|                         "question": "Abierto por el contributor {search}" | ||||
|                     } | ||||
|                 } | ||||
|             }, | ||||
|             "7": { | ||||
|                 "options": { | ||||
|                     "0": { | ||||
|                         "question": "Creada después de {search}" | ||||
|                     } | ||||
|                 } | ||||
|             }, | ||||
|             "8": { | ||||
|                 "options": { | ||||
|                     "0": { | ||||
|                         "question": "Solo mostrar las notas abiertas por contributores anómimos" | ||||
|                         "question": "<b>No</b> abierto por el contributor {search}" | ||||
|                     } | ||||
|                 } | ||||
|             }, | ||||
|             "9": { | ||||
|                 "options": { | ||||
|                     "0": { | ||||
|                         "question": "Solo mostrar las notas abiertas" | ||||
|                         "question": "Editada por última vez por el contributor {search}" | ||||
|                     } | ||||
|                 } | ||||
|             } | ||||
|  |  | |||
|  | @ -3560,10 +3560,10 @@ | |||
|             "Cuisine": { | ||||
|                 "mappings": { | ||||
|                     "0": { | ||||
|                         "then": "C'est une pizzéria" | ||||
|                         "then": "Pizzéria" | ||||
|                     }, | ||||
|                     "1": { | ||||
|                         "then": "C'est une friterie" | ||||
|                         "then": "Friterie" | ||||
|                     }, | ||||
|                     "10": { | ||||
|                         "then": "Des plats chinois sont servis ici" | ||||
|  | @ -3584,10 +3584,10 @@ | |||
|                         "then": "Restaurant Italien" | ||||
|                     }, | ||||
|                     "3": { | ||||
|                         "then": "C'est un resto kebab" | ||||
|                         "then": "Resto kebab" | ||||
|                     }, | ||||
|                     "4": { | ||||
|                         "then": "C'est une sandwicherie" | ||||
|                         "then": "Sandwicherie" | ||||
|                     }, | ||||
|                     "5": { | ||||
|                         "then": "Des hamburgers sont servis ici" | ||||
|  | @ -4425,68 +4425,61 @@ | |||
|     }, | ||||
|     "note": { | ||||
|         "filter": { | ||||
|             "10": { | ||||
|                 "options": { | ||||
|                     "0": { | ||||
|                         "question": "Toutes les notes" | ||||
|                     } | ||||
|                 } | ||||
|             }, | ||||
|             "2": { | ||||
|                 "options": { | ||||
|                     "0": { | ||||
|                         "question": "Ouverte par {search}" | ||||
|                     } | ||||
|                 } | ||||
|             }, | ||||
|             "3": { | ||||
|                 "options": { | ||||
|                     "0": { | ||||
|                         "question": "<b>Exclure</b>les notes ouvertes par {search}" | ||||
|                     } | ||||
|                 } | ||||
|             }, | ||||
|             "4": { | ||||
|                 "options": { | ||||
|                     "0": { | ||||
|                         "question": "Dernière modification par {search}" | ||||
|                     } | ||||
|                 } | ||||
|             }, | ||||
|             "5": { | ||||
|                 "options": { | ||||
|                     "0": { | ||||
|                         "question": "Ouverte après le {search}" | ||||
|                     } | ||||
|                 } | ||||
|             }, | ||||
|             "6": { | ||||
|                 "options": { | ||||
|                     "0": { | ||||
|                         "question": "Créée avant le {search}" | ||||
|                     } | ||||
|                 } | ||||
|             }, | ||||
|             "7": { | ||||
|                 "options": { | ||||
|                     "0": { | ||||
|                         "question": "Créée après le {search}" | ||||
|                     } | ||||
|                 } | ||||
|             }, | ||||
|             "8": { | ||||
|             "0": { | ||||
|                 "options": { | ||||
|                     "0": { | ||||
|                         "question": "Montrer uniquement les notes ouvertes par un contributeur anonyme" | ||||
|                     } | ||||
|                 } | ||||
|             }, | ||||
|             "9": { | ||||
|             "1": { | ||||
|                 "options": { | ||||
|                     "0": { | ||||
|                         "question": "Montrer uniquement les notes ouvertes" | ||||
|                     } | ||||
|                 } | ||||
|             }, | ||||
|             "11": { | ||||
|                 "options": { | ||||
|                     "0": { | ||||
|                         "question": "Créée avant le {search}" | ||||
|                     } | ||||
|                 } | ||||
|             }, | ||||
|             "12": { | ||||
|                 "options": { | ||||
|                     "0": { | ||||
|                         "question": "Créée après le {search}" | ||||
|                     } | ||||
|                 } | ||||
|             }, | ||||
|             "2": { | ||||
|                 "options": { | ||||
|                     "0": { | ||||
|                         "question": "Toutes les notes" | ||||
|                     } | ||||
|                 } | ||||
|             }, | ||||
|             "6": { | ||||
|                 "options": { | ||||
|                     "0": { | ||||
|                         "question": "Ouverte par {search}" | ||||
|                     } | ||||
|                 } | ||||
|             }, | ||||
|             "7": { | ||||
|                 "options": { | ||||
|                     "0": { | ||||
|                         "question": "<b>Exclure</b>les notes ouvertes par {search}" | ||||
|                     } | ||||
|                 } | ||||
|             }, | ||||
|             "9": { | ||||
|                 "options": { | ||||
|                     "0": { | ||||
|                         "question": "Dernière modification par {search}" | ||||
|                     } | ||||
|                 } | ||||
|             } | ||||
|         }, | ||||
|         "name": "Notes OpenStreetMap", | ||||
|  |  | |||
|  | @ -4289,25 +4289,25 @@ | |||
|             "Cuisine": { | ||||
|                 "mappings": { | ||||
|                     "0": { | ||||
|                         "then": "Dit is een pizzeria" | ||||
|                         "then": "Pizzeria" | ||||
|                     }, | ||||
|                     "1": { | ||||
|                         "then": "Dit is een frituur" | ||||
|                         "then": "Frituur" | ||||
|                     }, | ||||
|                     "10": { | ||||
|                         "then": "Dit is een Chinees restaurant" | ||||
|                         "then": "Chinees restaurant" | ||||
|                     }, | ||||
|                     "11": { | ||||
|                         "then": "Dit is een Grieks restaurant" | ||||
|                         "then": "Grieks restaurant" | ||||
|                     }, | ||||
|                     "12": { | ||||
|                         "then": "Dit is een Indisch restaurant" | ||||
|                         "then": "Indisch restaurant" | ||||
|                     }, | ||||
|                     "13": { | ||||
|                         "then": "Dit is een Turks restaurant (dat meer dan enkel kebab verkoopt)" | ||||
|                         "then": "Turks restaurant" | ||||
|                     }, | ||||
|                     "14": { | ||||
|                         "then": "Dit is een Thaïs restaurant" | ||||
|                         "then": "Thaïs restaurant" | ||||
|                     }, | ||||
|                     "15": { | ||||
|                         "then": "Dit is een mexicaans restaurant" | ||||
|  | @ -4322,28 +4322,28 @@ | |||
|                         "then": "Dit is een vis- en zeerestaurant" | ||||
|                     }, | ||||
|                     "2": { | ||||
|                         "then": "Dit is een pastazaak" | ||||
|                         "then": "Pastazaak" | ||||
|                     }, | ||||
|                     "3": { | ||||
|                         "then": "Dit is een kebabzaak" | ||||
|                         "then": "Kebabzaak" | ||||
|                     }, | ||||
|                     "4": { | ||||
|                         "then": "Dit is een broodjeszaak" | ||||
|                         "then": "Broodjeszaak" | ||||
|                     }, | ||||
|                     "5": { | ||||
|                         "then": "Dit is een hamburgerrestaurant" | ||||
|                         "then": "Hamburgerrestaurant" | ||||
|                     }, | ||||
|                     "6": { | ||||
|                         "then": "Dit is een sushirestaurant" | ||||
|                         "then": "Sushirestaurant" | ||||
|                     }, | ||||
|                     "7": { | ||||
|                         "then": "Dit is een koffiezaak" | ||||
|                         "then": "Koffiezaak" | ||||
|                     }, | ||||
|                     "8": { | ||||
|                         "then": "Dit is een Italiaans restaurant (dat meer dan enkel pasta of pizza verkoopt)" | ||||
|                         "then": "Italiaans restaurant (dat meer dan enkel pasta of pizza verkoopt)" | ||||
|                     }, | ||||
|                     "9": { | ||||
|                         "then": "Dit is een Frans restaurant" | ||||
|                         "then": "Frans restaurant" | ||||
|                     } | ||||
|                 }, | ||||
|                 "question": "Welk soort gerechten worden hier geserveerd?", | ||||
|  | @ -5555,18 +5555,32 @@ | |||
|             "0": { | ||||
|                 "options": { | ||||
|                     "0": { | ||||
|                         "question": "Moet in de eerste opmerking \"{search}\" bevatten" | ||||
|                         "question": "Toon enkel de Notes geopend door een anonieme bijdrager" | ||||
|                     } | ||||
|                 } | ||||
|             }, | ||||
|             "1": { | ||||
|                 "options": { | ||||
|                     "0": { | ||||
|                         "question": "Mag in de eerste opmerking <b>niet</b> \"{search}\" bevatten" | ||||
|                         "question": "Toon enkel open Notes" | ||||
|                     } | ||||
|                 } | ||||
|             }, | ||||
|             "10": { | ||||
|             "11": { | ||||
|                 "options": { | ||||
|                     "0": { | ||||
|                         "question": "Aangemaakt voor {search}" | ||||
|                     } | ||||
|                 } | ||||
|             }, | ||||
|             "12": { | ||||
|                 "options": { | ||||
|                     "0": { | ||||
|                         "question": "Aangemaakt na {search}" | ||||
|                     } | ||||
|                 } | ||||
|             }, | ||||
|             "2": { | ||||
|                 "options": { | ||||
|                     "0": { | ||||
|                         "question": "Alle Notes" | ||||
|  | @ -5579,59 +5593,38 @@ | |||
|                     } | ||||
|                 } | ||||
|             }, | ||||
|             "2": { | ||||
|                 "options": { | ||||
|                     "0": { | ||||
|                         "question": "Geopend door bijdrager {search}" | ||||
|                     } | ||||
|                 } | ||||
|             }, | ||||
|             "3": { | ||||
|                 "options": { | ||||
|                     "0": { | ||||
|                         "question": "<b>Niet</b> geopend door bijdrager {search}" | ||||
|                     } | ||||
|                 } | ||||
|             }, | ||||
|             "4": { | ||||
|                 "options": { | ||||
|                     "0": { | ||||
|                         "question": "Laatst bewerkt door bijdrager {search}" | ||||
|                         "question": "Moet in de eerste opmerking \"{search}\" bevatten" | ||||
|                     } | ||||
|                 } | ||||
|             }, | ||||
|             "5": { | ||||
|                 "options": { | ||||
|                     "0": { | ||||
|                         "question": "Geopend na {search}" | ||||
|                         "question": "Mag in de eerste opmerking <b>niet</b> \"{search}\" bevatten" | ||||
|                     } | ||||
|                 } | ||||
|             }, | ||||
|             "6": { | ||||
|                 "options": { | ||||
|                     "0": { | ||||
|                         "question": "Aangemaakt voor {search}" | ||||
|                         "question": "Geopend door bijdrager {search}" | ||||
|                     } | ||||
|                 } | ||||
|             }, | ||||
|             "7": { | ||||
|                 "options": { | ||||
|                     "0": { | ||||
|                         "question": "Aangemaakt na {search}" | ||||
|                     } | ||||
|                 } | ||||
|             }, | ||||
|             "8": { | ||||
|                 "options": { | ||||
|                     "0": { | ||||
|                         "question": "Toon enkel de Notes geopend door een anonieme bijdrager" | ||||
|                         "question": "<b>Niet</b> geopend door bijdrager {search}" | ||||
|                     } | ||||
|                 } | ||||
|             }, | ||||
|             "9": { | ||||
|                 "options": { | ||||
|                     "0": { | ||||
|                         "question": "Toon enkel open Notes" | ||||
|                         "question": "Laatst bewerkt door bijdrager {search}" | ||||
|                     } | ||||
|                 } | ||||
|             } | ||||
|  | @ -9276,6 +9269,17 @@ | |||
|                     } | ||||
|                 } | ||||
|             }, | ||||
|             "scalebar": { | ||||
|                 "mappings": { | ||||
|                     "0": { | ||||
|                         "then": "Toon de schaalbalk" | ||||
|                     }, | ||||
|                     "1": { | ||||
|                         "then": "Verberg de schaalbalk" | ||||
|                     } | ||||
|                 }, | ||||
|                 "question": "Moet er een schaalbalk weergegeven worden?" | ||||
|             }, | ||||
|             "settings-link": { | ||||
|                 "render": { | ||||
|                     "special": { | ||||
|  |  | |||
|  | @ -1998,7 +1998,7 @@ | |||
|             "Cuisine": { | ||||
|                 "mappings": { | ||||
|                     "0": { | ||||
|                         "then": "To jest pizzeria" | ||||
|                         "then": "Pizzeria" | ||||
|                     }, | ||||
|                     "2": { | ||||
|                         "then": "Podaje głównie makarony" | ||||
|  |  | |||
|  | @ -808,6 +808,133 @@ | |||
|         "description": "Leuchttürme sind hohe Gebäude mit einem Licht an der Spitze, das den Schiffsverkehr leitet.", | ||||
|         "title": "Leuchttürme" | ||||
|     }, | ||||
|     "mapcomplete-changes": { | ||||
|         "description": "Diese Karte zeigt alle mit MapComplete vorgenommenen Änderungen", | ||||
|         "layers": { | ||||
|             "0": { | ||||
|                 "description": "Zeigt alle MapComplete-Änderungen", | ||||
|                 "filter": { | ||||
|                     "0": { | ||||
|                         "options": { | ||||
|                             "0": { | ||||
|                                 "question": "Themenname enthält {search}" | ||||
|                             } | ||||
|                         } | ||||
|                     }, | ||||
|                     "1": { | ||||
|                         "options": { | ||||
|                             "0": { | ||||
|                                 "question": "Themename enthält <b>nicht</b> {search}" | ||||
|                             } | ||||
|                         } | ||||
|                     }, | ||||
|                     "10": { | ||||
|                         "options": { | ||||
|                             "0": { | ||||
|                                 "question": "Etymologie-Thema ausschließen" | ||||
|                             } | ||||
|                         } | ||||
|                     }, | ||||
|                     "2": { | ||||
|                         "options": { | ||||
|                             "0": { | ||||
|                                 "question": "Erstellt von Mitwirkendem {search}" | ||||
|                             } | ||||
|                         } | ||||
|                     }, | ||||
|                     "3": { | ||||
|                         "options": { | ||||
|                             "0": { | ||||
|                                 "question": "<b>Nicht</b> erstellt von Mitwirkendem {search}" | ||||
|                             } | ||||
|                         } | ||||
|                     }, | ||||
|                     "4": { | ||||
|                         "options": { | ||||
|                             "0": { | ||||
|                                 "question": "Erstellt vor {search}" | ||||
|                             } | ||||
|                         } | ||||
|                     }, | ||||
|                     "5": { | ||||
|                         "options": { | ||||
|                             "0": { | ||||
|                                 "question": "Erstellt nach {search}" | ||||
|                             } | ||||
|                         } | ||||
|                     }, | ||||
|                     "6": { | ||||
|                         "options": { | ||||
|                             "0": { | ||||
|                                 "question": "Benutzersprache (ISO-Code) {search}" | ||||
|                             } | ||||
|                         } | ||||
|                     }, | ||||
|                     "7": { | ||||
|                         "options": { | ||||
|                             "0": { | ||||
|                                 "question": "Erstellt mit Host {search}" | ||||
|                             } | ||||
|                         } | ||||
|                     }, | ||||
|                     "8": { | ||||
|                         "options": { | ||||
|                             "0": { | ||||
|                                 "question": "Changeset hat mindestens ein Bild hinzugefügt" | ||||
|                             } | ||||
|                         } | ||||
|                     }, | ||||
|                     "9": { | ||||
|                         "options": { | ||||
|                             "0": { | ||||
|                                 "question": "GRB-Thema ausschließen" | ||||
|                             } | ||||
|                         } | ||||
|                     } | ||||
|                 }, | ||||
|                 "name": "Changeset-Zentren", | ||||
|                 "tagRenderings": { | ||||
|                     "contributor": { | ||||
|                         "question": "Wer hat zu dieser Änderung beigetragen?", | ||||
|                         "render": "Änderung vorgenommen von <a href='https://openstreetmap.org/user/{user}' target='_blank'>{user}</a>" | ||||
|                     }, | ||||
|                     "host": { | ||||
|                         "question": "Bei welchem Host (Website) wurde diese Änderung vorgenommen?", | ||||
|                         "render": "Änderung mit <a href='{host}'>{host}</a>" | ||||
|                     }, | ||||
|                     "locale": { | ||||
|                         "question": "In welcher Sprache (Locale) wurde diese Änderung vorgenommen?", | ||||
|                         "render": "Die Benutzersprache ist {locale}" | ||||
|                     }, | ||||
|                     "show_changeset_id": { | ||||
|                         "render": "Änderungssatz <a href='https://openstreetmap.org/changeset/{id}' target='_blank'>{id}</a>" | ||||
|                     }, | ||||
|                     "theme-id": { | ||||
|                         "question": "Welches Thema wurde für diese Änderung verwendet?", | ||||
|                         "render": "Änderung mit Thema <a href='https://mapcomplete.org/{theme}'>{theme}</a>" | ||||
|                     }, | ||||
|                     "version": { | ||||
|                         "question": "Welche Version von MapComplete wurde verwendet, um diese Änderung vorzunehmen?", | ||||
|                         "render": "Erstellt mit {editor}" | ||||
|                     } | ||||
|                 }, | ||||
|                 "title": { | ||||
|                     "render": "Änderungssatz für {theme}" | ||||
|                 } | ||||
|             }, | ||||
|             "1": { | ||||
|                 "override": { | ||||
|                     "tagRenderings+": { | ||||
|                         "0": { | ||||
|                             "render": "Weitere Statistiken findest du <a href='https://github.com/pietervdvn/MapComplete/tree/develop/Docs/Tools/graphs' target='_blank'>hier</a>" | ||||
|                         } | ||||
|                     } | ||||
|                 } | ||||
|             } | ||||
|         }, | ||||
|         "shortDescription": "Zeigt die von MapComplete vorgenommenen Änderungen an", | ||||
|         "title": "Änderungen mit MapComplete" | ||||
|     }, | ||||
|     "maproulette": { | ||||
|         "description": "Thema mit MapRoulette-Aufgaben, die Sie suchen, filtern und beheben können.", | ||||
|         "title": "MapRoulette-Aufgaben" | ||||
|  |  | |||
							
								
								
									
										2541
									
								
								package-lock.json
									
										
									
										generated
									
									
									
								
							
							
						
						
									
										2541
									
								
								package-lock.json
									
										
									
										generated
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load diff
											
										
									
								
							|  | @ -1,6 +1,6 @@ | |||
| { | ||||
|   "name": "mapcomplete", | ||||
|   "version": "0.47.0", | ||||
|   "version": "0.46.8", | ||||
|   "repository": "https://github.com/pietervdvn/MapComplete", | ||||
|   "description": "A small website to edit OSM easily", | ||||
|   "bugs": "https://github.com/pietervdvn/MapComplete/issues", | ||||
|  | @ -123,6 +123,10 @@ | |||
|     "reuse-compliance": "reuse lint", | ||||
|     "housekeeping": "git pull && npx update-browserslist-db@latest && npm run weblate:merge-heavy && npm run generate && npm run generate:docs && npm run generate:schemas && npm run generate:contributor-list && vite-node scripts/fetchLanguages.ts && vite-node scripts/generateSunnyUnlabeled.ts && npm run format && git add assets/ langs/ Docs/ **/*.ts Docs/* src/* && git commit -m 'chore: automated housekeeping...'", | ||||
|     "###": "MICROSERVICES AND SERVER MAINTAINENCE", | ||||
|     "release": "standard-version", | ||||
|     "release:minor": "standard-version --release-as minor", | ||||
|     "release:patch": "standard-version --release-as patch", | ||||
|     "release:major": "standard-version --release-as major", | ||||
|     "server:summary": "vite-node scripts/osm2pgsql/tilecountServer.ts", | ||||
|     "server:ldjson": "vite-node scripts/serverLdScrape.ts", | ||||
|     "server:studio": "vite-node scripts/studioServer -- /root/git/MapComplete/assets", | ||||
|  | @ -252,6 +256,7 @@ | |||
|     "read-file": "^0.2.0", | ||||
|     "sass": "^1.58.0", | ||||
|     "sharp": "^0.32.6", | ||||
|     "standard-version": "^9.5.0", | ||||
|     "svelte": "^3.55.1", | ||||
|     "svelte-check": "^3.0.2", | ||||
|     "svelte-preprocess": "^5.0.1", | ||||
|  |  | |||
|  | @ -1769,14 +1769,14 @@ input[type="range"].range-lg::-moz-range-thumb { | |||
|   height: 3.5rem; | ||||
| } | ||||
| 
 | ||||
| .h-16 { | ||||
|   height: 4rem; | ||||
| } | ||||
| 
 | ||||
| .h-48 { | ||||
|   height: 12rem; | ||||
| } | ||||
| 
 | ||||
| .h-16 { | ||||
|   height: 4rem; | ||||
| } | ||||
| 
 | ||||
| .h-40 { | ||||
|   height: 10rem; | ||||
| } | ||||
|  | @ -4040,6 +4040,10 @@ input[type="range"].range-lg::-moz-range-thumb { | |||
|   padding-right: 1rem; | ||||
| } | ||||
| 
 | ||||
| .pt-2 { | ||||
|   padding-top: 0.5rem; | ||||
| } | ||||
| 
 | ||||
| .pl-1 { | ||||
|   padding-left: 0.25rem; | ||||
| } | ||||
|  | @ -4723,11 +4727,6 @@ input[type="range"].range-lg::-moz-range-thumb { | |||
|   box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); | ||||
| } | ||||
| 
 | ||||
| .shadow-transparent { | ||||
|   --tw-shadow-color: transparent; | ||||
|   --tw-shadow: var(--tw-shadow-colored); | ||||
| } | ||||
| 
 | ||||
| .shadow-gray-300 { | ||||
|   --tw-shadow-color: #D1D5DB; | ||||
|   --tw-shadow: var(--tw-shadow-colored); | ||||
|  | @ -8153,6 +8152,10 @@ svg.apply-fill path { | |||
|     height: 2.75rem; | ||||
|   } | ||||
| 
 | ||||
|   .sm\:h-32 { | ||||
|     height: 8rem; | ||||
|   } | ||||
| 
 | ||||
|   .sm\:h-64 { | ||||
|     height: 16rem; | ||||
|   } | ||||
|  | @ -8346,6 +8349,10 @@ svg.apply-fill path { | |||
|     display: none; | ||||
|   } | ||||
| 
 | ||||
|   .md\:h-64 { | ||||
|     height: 16rem; | ||||
|   } | ||||
| 
 | ||||
|   .md\:h-auto { | ||||
|     height: auto; | ||||
|   } | ||||
|  |  | |||
|  | @ -2,14 +2,15 @@ | |||
| 
 | ||||
| # Creates various empty (stub) version of files | ||||
| 
 | ||||
| mkdir -p ./src/assets/generated/layers; | ||||
| mkdir -p ./src/assets/generated/layers | ||||
| echo '{"themes":[]}' > ./src/assets/generated/known_themes.json | ||||
|  echo '{"layers": []}' > ./src/assets/generated/known_layers.json | ||||
|  rm -f ./src/assets/generated/layers/*.json  | ||||
|  rm -f ./src/assets/generated/themes/*.json  | ||||
|  cp ./assets/layers/usersettings/usersettings.json ./src/assets/generated/layers/usersettings.json  | ||||
|  echo '{}' > ./src/assets/generated/layers/favourite.json  | ||||
|  echo '{}' > ./src/assets/generated/layers/summary.json  | ||||
|  echo '{}' > ./src/assets/generated/layers/last_click.json  | ||||
| echo '{"layers": []}' > ./src/assets/generated/known_layers.json | ||||
| rm -f ./src/assets/generated/layers/*.json | ||||
| rm -f ./src/assets/generated/themes/*.json | ||||
| cp ./assets/layers/usersettings/usersettings.json ./src/assets/generated/layers/usersettings.json | ||||
| echo '{}' > ./src/assets/generated/layers/favourite.json | ||||
| echo '{}' > ./src/assets/generated/layers/summary.json | ||||
| echo '{}' > ./src/assets/generated/layers/last_click.json | ||||
| echo '{}' > ./src/assets/generated/layers/search.json | ||||
|  echo '[]' > ./src/assets/generated/theme_overview.json | ||||
| echo '[]' > ./src/assets/generated/theme_overview.json | ||||
| echo '{}' > ./src/assets/generated/layers/geocoded_image.json | ||||
|  |  | |||
|  | @ -9,7 +9,14 @@ export interface ProvidedImage { | |||
|     key: string | ||||
|     provider: ImageProvider | ||||
|     id: string | ||||
|     date?: Date | ||||
|     date?: Date, | ||||
|     /** | ||||
|      * Compass angle of the taken image | ||||
|      * 0 = north, 90° = East | ||||
|      */ | ||||
|     rotation?: number | ||||
|     lat?: number, | ||||
|     lon?: number | ||||
| } | ||||
| 
 | ||||
| export default abstract class ImageProvider { | ||||
|  |  | |||
|  | @ -162,12 +162,14 @@ export class Mapillary extends ImageProvider { | |||
|         const metadataUrl = | ||||
|             "https://graph.mapillary.com/" + | ||||
|             mapillaryId + | ||||
|             "?fields=thumb_1024_url,thumb_original_url,captured_at,creator&access_token=" + | ||||
|             "?fields=thumb_1024_url,thumb_original_url,captured_at,compass_angle,geometry,creator&access_token=" + | ||||
|             Constants.mapillary_client_token_v4 | ||||
|         const response = await Utils.downloadJsonCached(metadataUrl, 60 * 60) | ||||
|         const url = <string>response["thumb_1024_url"] | ||||
|         const url_hd = <string>response["thumb_original_url"] | ||||
|         const date = new Date() | ||||
|         const rotation = (720 - Number(response["compass_angle"])) % 360 | ||||
|         const geometry = response["geometry"] | ||||
|         date.setTime(response["captured_at"]) | ||||
|         return <ProvidedImage>{ | ||||
|             id: "" + mapillaryId, | ||||
|  | @ -176,6 +178,9 @@ export class Mapillary extends ImageProvider { | |||
|             provider: this, | ||||
|             date, | ||||
|             key, | ||||
|             rotation, | ||||
|             lat: geometry.coordinates[1], | ||||
|             lon: geometry.coordinates[0] | ||||
|         } | ||||
|     } | ||||
| } | ||||
|  |  | |||
|  | @ -4,11 +4,14 @@ import { WikimediaImageProvider } from "./WikimediaImageProvider" | |||
| import Wikidata from "../Web/Wikidata" | ||||
| import SvelteUIElement from "../../UI/Base/SvelteUIElement" | ||||
| import * as Wikidata_icon from "../../assets/svg/Wikidata.svelte" | ||||
| import { Utils } from "../../Utils" | ||||
| 
 | ||||
| export class WikidataImageProvider extends ImageProvider { | ||||
|     public static readonly singleton = new WikidataImageProvider() | ||||
|     public readonly defaultKeyPrefixes = ["wikidata"] | ||||
|     public readonly name = "Wikidata" | ||||
|     private static readonly keyBlacklist: ReadonlySet<string> = new Set( | ||||
|         ["mapillary", ...Utils.Times(i => "mapillary:" + i, 10)]) | ||||
| 
 | ||||
|     private constructor() { | ||||
|         super() | ||||
|  | @ -23,6 +26,9 @@ export class WikidataImageProvider extends ImageProvider { | |||
|     } | ||||
| 
 | ||||
|     public async ExtractUrls(key: string, value: string): Promise<Promise<ProvidedImage>[]> { | ||||
|         if (WikidataImageProvider.keyBlacklist.has(key)) { | ||||
|             return [] | ||||
|         } | ||||
|         const entity = await Wikidata.LoadWikidataEntryAsync(value) | ||||
|         if (entity === undefined) { | ||||
|             return [] | ||||
|  |  | |||
|  | @ -164,6 +164,8 @@ export default class UserRelatedState { | |||
|         "button" | "button_click_right" | "button_click" | "click" | "click_right" | ||||
|     >("button_click_right") | ||||
| 
 | ||||
|     public readonly showScale : UIEventSource<boolean> | ||||
| 
 | ||||
|     /** | ||||
|      * Preferences as tags exposes many preferences and state properties as record. | ||||
|      * This is used to bridge the internal state with the usersettings.json layerconfig file | ||||
|  | @ -209,6 +211,7 @@ export default class UserRelatedState { | |||
|             "preferences-add-new-mode", | ||||
|             "button_click_right", | ||||
|         ) | ||||
|         this.showScale = UIEventSource.asBoolean(this.osmConnection.GetPreference("preference-show-scale","false")) | ||||
| 
 | ||||
|         this.imageLicense = this.osmConnection.getPreference("pictures-license", "CC0") | ||||
|         this.installedUserThemes = UserRelatedState.initInstalledUserThemes(osmConnection) | ||||
|  |  | |||
|  | @ -56,7 +56,7 @@ export interface P4CPicture { | |||
|     author? | ||||
|     license? | ||||
|     detailsUrl?: string | ||||
|     direction? | ||||
|     direction?: number, | ||||
|     osmTags?: object /*To copy straight into OSM!*/ | ||||
|     thumbUrl: string | ||||
|     details: { | ||||
|  |  | |||
|  | @ -26,7 +26,8 @@ export default class Constants { | |||
|         "last_click", | ||||
|         "favourite", | ||||
|         "summary", | ||||
|         "search" | ||||
|         "search", | ||||
|         "geocoded_image" | ||||
|     ] as const | ||||
|     /** | ||||
|      * Special layers which are not included in a theme by default | ||||
|  |  | |||
|  | @ -22,6 +22,7 @@ export interface MapProperties { | |||
|     readonly lastClickLocation: Store<{ lon: number; lat: number }> | ||||
|     readonly allowZooming: UIEventSource<true | boolean> | ||||
|     readonly useTerrain: Store<boolean> | ||||
|     readonly showScale: UIEventSource<boolean> | ||||
| 
 | ||||
|     /** | ||||
|      * Triggered when the user navigated by using the keyboard. | ||||
|  |  | |||
|  | @ -722,7 +722,7 @@ export class ValidatePointRendering extends DesugaringStep<PointRenderingConfigJ | |||
|         if (json.marker && !Array.isArray(json.marker)) { | ||||
|             context.enter("marker").err("The marker in a pointRendering should be an array") | ||||
|         } | ||||
|         if (json.location.length == 0) { | ||||
|         if (!(json.location?.length > 0)) { | ||||
|             context | ||||
|                 .enter("location") | ||||
|                 .err( | ||||
|  |  | |||
|  | @ -9,6 +9,7 @@ import { QueryParameters } from "../../Logic/Web/QueryParameters" | |||
| import { Utils } from "../../Utils" | ||||
| import { RegexTag } from "../../Logic/Tags/RegexTag" | ||||
| import MarkdownUtils from "../../Utils/MarkdownUtils" | ||||
| import Validators, { ValidatorType } from "../../UI/InputElement/Validators" | ||||
| 
 | ||||
| export type FilterConfigOption = { | ||||
|     question: Translation | ||||
|  | @ -18,7 +19,7 @@ export type FilterConfigOption = { | |||
|     osmTags: TagsFilter | undefined | ||||
|     /* Only set if fields are present. Used to create `osmTags` (which are used to _actually_ filter) when the field is written*/ | ||||
|     readonly originalTagsSpec: TagConfigJson | ||||
|     fields: { name: string; type: string }[] | ||||
|     fields: { name: string; type: ValidatorType }[] | ||||
| } | ||||
| export default class FilterConfig { | ||||
|     public readonly id: string | ||||
|  | @ -58,8 +59,11 @@ export default class FilterConfig { | |||
|                 throw `Invalid filter: no question given at ${ctx}` | ||||
|             } | ||||
| 
 | ||||
|             const fields: { name: string; type: string }[] = (option.fields ?? []).map((f, i) => { | ||||
|                 const type = f.type ?? "string" | ||||
|             const fields: { name: string; type: ValidatorType }[] = (option.fields ?? []).map((f, i) => { | ||||
|                 const type = <ValidatorType> f.type ?? "string" | ||||
|                 if(Validators.availableTypes.indexOf(type) < 0){ | ||||
|                     throw `Invalid filter: type is not a valid validator. Did you mean one of ${Utils.sortedByLevenshteinDistance(type, <any>Validators.availableTypes, x => x).slice(0, 3)}` | ||||
|                 } | ||||
|                 // Type is validated against 'ValidatedTextField' in Validation.ts, in ValidateFilterConfig
 | ||||
|                 if (f.name === undefined || f.name === "" || f.name.match(/[a-z0-9_-]+/) == null) { | ||||
|                     throw `Invalid filter: a variable name should match [a-z0-9_-]+ at ${ctx}.fields[${i}]` | ||||
|  |  | |||
|  | @ -926,7 +926,7 @@ export default class TagRenderingConfig { | |||
|      * Might give undefined if setting to unknown is not possible | ||||
|      */ | ||||
|     public removeToSetUnknown(partOfLayer: LayerConfig, currentTags: Record<string, string>): string[] | undefined { | ||||
|         if(!partOfLayer?.source || !currentTags){ | ||||
|         if (!partOfLayer?.source || !currentTags) { | ||||
|             return | ||||
|         } | ||||
|         const toDelete = new Set<string>() | ||||
|  | @ -1001,12 +1001,17 @@ export class TagRenderingConfigUtils { | |||
|             // The original mappings get "priorityIf" set
 | ||||
|             const oldMappingsCloned = | ||||
|                 clone.mappings?.map( | ||||
|                     (m) => | ||||
|                         <Mapping>{ | ||||
|                     (m) => { | ||||
|                         const mapping = { | ||||
|                             ...m, | ||||
|                             addExtraTags: [new Tag("nobrand", "")], | ||||
|                             priorityIf: m.priorityIf ?? TagUtils.Tag("id~*"), | ||||
|                         }, | ||||
|                         } | ||||
|                         if (m.if.usedKeys().indexOf("nobrand") < 0) { | ||||
|                             // Erase 'nobrand=yes', unless this option explicitly sets it
 | ||||
|                             mapping["addExtraTags"] = [new Tag("nobrand", "")] | ||||
|                         } | ||||
|                         return <Mapping>mapping | ||||
|                     }, | ||||
|                 ) ?? [] | ||||
|             clone.mappings = [...oldMappingsCloned, ...extraMappings] | ||||
|             return clone | ||||
|  |  | |||
|  | @ -2,7 +2,11 @@ import LayoutConfig from "./ThemeConfig/LayoutConfig" | |||
| import { SpecialVisualizationState } from "../UI/SpecialVisualization" | ||||
| import { Changes } from "../Logic/Osm/Changes" | ||||
| import { Store, UIEventSource } from "../Logic/UIEventSource" | ||||
| import { FeatureSource, IndexedFeatureSource, WritableFeatureSource } from "../Logic/FeatureSource/FeatureSource" | ||||
| import { | ||||
|     FeatureSource, | ||||
|     IndexedFeatureSource, | ||||
|     WritableFeatureSource | ||||
| } from "../Logic/FeatureSource/FeatureSource" | ||||
| import { OsmConnection } from "../Logic/Osm/OsmConnection" | ||||
| import { ExportableMap, MapProperties } from "./MapProperties" | ||||
| import LayerState from "../Logic/State/LayerState" | ||||
|  | @ -46,7 +50,9 @@ import BackgroundLayerResetter from "../Logic/Actors/BackgroundLayerResetter" | |||
| import SaveFeatureSourceToLocalStorage from "../Logic/FeatureSource/Actors/SaveFeatureSourceToLocalStorage" | ||||
| import BBoxFeatureSource from "../Logic/FeatureSource/Sources/TouchesBboxFeatureSource" | ||||
| import ThemeViewStateHashActor from "../Logic/Web/ThemeViewStateHashActor" | ||||
| import NoElementsInViewDetector, { FeatureViewState } from "../Logic/Actors/NoElementsInViewDetector" | ||||
| import NoElementsInViewDetector, { | ||||
|     FeatureViewState | ||||
| } from "../Logic/Actors/NoElementsInViewDetector" | ||||
| import FilteredLayer from "./FilteredLayer" | ||||
| import { PreferredRasterLayerSelector } from "../Logic/Actors/PreferredRasterLayerSelector" | ||||
| import { ImageUploadManager } from "../Logic/ImageProviders/ImageUploadManager" | ||||
|  | @ -150,6 +156,10 @@ export default class ThemeViewState implements SpecialVisualizationState { | |||
|     public readonly toCacheSavers: ReadonlyMap<string, SaveFeatureSourceToLocalStorage> | ||||
| 
 | ||||
|     public readonly nearbyImageSearcher: CombinedFetcher | ||||
|     /** | ||||
|      * Geocoded images that should be shown on the main map; probably only the currently hovered image | ||||
|      */ | ||||
|     public readonly geocodedImages: UIEventSource<Feature[]> = new UIEventSource<Feature[]>([    ]) | ||||
| 
 | ||||
|     public readonly searchState: SearchState | ||||
| 
 | ||||
|  | @ -773,6 +783,7 @@ export default class ThemeViewState implements SpecialVisualizationState { | |||
|             gps_location: this.geolocation.currentUserLocation, | ||||
|             gps_location_history: this.geolocation.historicalUserLocations, | ||||
|             gps_track: this.geolocation.historicalUserLocationsTrack, | ||||
|             geocoded_image: new StaticFeatureSource(this.geocodedImages), | ||||
|             selected_element: new StaticFeatureSource( | ||||
|                 this.selectedElement.map((f) => (f === undefined ? empty : [f])) | ||||
|             ), | ||||
|  | @ -898,6 +909,7 @@ export default class ThemeViewState implements SpecialVisualizationState { | |||
|         this.selectedElement.addCallback((selected) => { | ||||
|             if (selected === undefined) { | ||||
|                 this.focusOnMap() | ||||
|                 this.geocodedImages.set([]) | ||||
|             } else { | ||||
|                 this.lastClickObject.clear() | ||||
|             } | ||||
|  | @ -934,6 +946,9 @@ export default class ThemeViewState implements SpecialVisualizationState { | |||
|             this.userRelatedState.recentlyVisitedSearch.add(r) | ||||
|         }) | ||||
| 
 | ||||
|         this.userRelatedState.showScale.addCallbackAndRun(showScale => { | ||||
|             this.mapProperties.showScale.set(showScale) | ||||
|         }) | ||||
|         new ThemeViewStateHashActor(this) | ||||
|         new MetaTagging(this) | ||||
|         new TitleHandler(this.selectedElement, this.featureProperties, this) | ||||
|  |  | |||
|  | @ -6,7 +6,8 @@ | |||
|   import { UIEventSource } from "../../Logic/UIEventSource" | ||||
|   import { onDestroy } from "svelte" | ||||
|   import { Utils } from "../../Utils" | ||||
|   import Tr from "../Base/Tr.svelte" | ||||
|   import type { ValidatorType } from "../InputElement/Validators" | ||||
|   import InputHelper from "../InputElement/InputHelper.svelte" | ||||
| 
 | ||||
|   export let filteredLayer: FilteredLayer | ||||
|   export let option: FilterConfigOption | ||||
|  | @ -18,7 +19,7 @@ | |||
|     parts = Utils.splitIntoSubstitutionParts(template) | ||||
|   } | ||||
|   let fieldValues: Record<string, UIEventSource<string>> = {} | ||||
|   let fieldTypes: Record<string, string> = {} | ||||
|   let fieldTypes: Record<string, ValidatorType> = {} | ||||
|   let appliedFilter = <UIEventSource<string>>filteredLayer.appliedFilters.get(id) | ||||
|   let initialState: Record<string, string> = JSON.parse(appliedFilter?.data ?? "{}") | ||||
| 
 | ||||
|  | @ -35,25 +36,30 @@ | |||
|     appliedFilter?.setData(FilteredLayer.fieldsToString(properties)) | ||||
|   } | ||||
| 
 | ||||
|   let firstValue : UIEventSource<string> | ||||
|   for (const field of option.fields) { | ||||
|     // A bit of cheating: the 'parts' will have '}' suffixed for fields | ||||
|     const src = new UIEventSource<string>(initialState[field.name] ?? "") | ||||
|     firstValue ??= src | ||||
|     fieldTypes[field.name] = field.type | ||||
|     console.log(field.name, "-->", field.type) | ||||
|     fieldValues[field.name] = src | ||||
|     onDestroy( | ||||
|       src.stabilized(200).addCallback(() => { | ||||
|         setFields() | ||||
|       }) | ||||
|       }), | ||||
|     ) | ||||
|   } | ||||
| </script> | ||||
| 
 | ||||
| <div> | ||||
| <div class="low-interaction p-1 rounded-2xl px-3" class:interactive={$firstValue?.length > 0}> | ||||
|   {#each parts as part, i} | ||||
|     {#if part["subs"]} | ||||
|       <!-- This is a field! --> | ||||
|       <span class="mx-1"> | ||||
|         <ValidatedInput value={fieldValues[part["subs"]]} type={fieldTypes[part["subs"]]} /> | ||||
|         <InputHelper value={fieldValues[part["subs"]]} type={fieldTypes[part["subs"]]}> | ||||
|           <ValidatedInput slot="fallback" value={fieldValues[part["subs"]]} type={fieldTypes[part["subs"]]} /> | ||||
|         </InputHelper> | ||||
|       </span> | ||||
|     {:else} | ||||
|       {@html part["message"]} | ||||
|  |  | |||
|  | @ -34,7 +34,12 @@ | |||
|   export let coordinate: { lon: number; lat: number } = undefined | ||||
| 
 | ||||
|   /** | ||||
|    * The center of the map at all times | ||||
|    * Max distance that one is allowed to move, to prevent to stray too much | ||||
|    */ | ||||
|   export let maxDistanceInMeters = 50 | ||||
| 
 | ||||
|   /** | ||||
|    * The resulting location; either the map center or the snapped coordinate | ||||
|    * If undefined at the beginning, 'coordinate' will be used | ||||
|    */ | ||||
|   export let value: UIEventSource<{ lon: number; lat: number }> | ||||
|  | @ -57,11 +62,6 @@ | |||
| 
 | ||||
|   export let snappedTo: UIEventSource<WayId | undefined> | ||||
| 
 | ||||
|   let preciseLocation: UIEventSource<{ lon: number; lat: number }> = new UIEventSource<{ | ||||
|     lon: number | ||||
|     lat: number | ||||
|   }>(undefined) | ||||
| 
 | ||||
|   const map: UIEventSource<MlMap> = new UIEventSource<MlMap>(undefined) | ||||
|   export let mapProperties: Partial<MapProperties> & { location } = { | ||||
|     zoom: new UIEventSource<number>(19), | ||||
|  | @ -69,10 +69,7 @@ | |||
|     /*If no snapping needed: the value is simply the map location; | ||||
|      * If snapping is needed: the value will be set later on by the snapping feature source | ||||
|      * */ | ||||
|     location: | ||||
|       snapToLayers?.length > 0 | ||||
|         ? new UIEventSource<{ lon: number; lat: number }>(coordinate) | ||||
|         : value, | ||||
|     location: new UIEventSource<{ lon: number; lat: number }>(coordinate), | ||||
|     bounds: new UIEventSource<BBox>(undefined), | ||||
|     allowMoving: new UIEventSource<boolean>(true), | ||||
|     allowZooming: new UIEventSource<boolean>(true), | ||||
|  | @ -143,15 +140,16 @@ | |||
|     }) | ||||
|     withCorrectedAttributes.features.addCallbackAndRunD((f) => console.log("Snapped point is", f)) | ||||
|   } | ||||
| 
 | ||||
| </script> | ||||
| 
 | ||||
| <LocationInput | ||||
|   {map} | ||||
|   on:click | ||||
|   {mapProperties} | ||||
|   value={preciseLocation} | ||||
|   value={ snapToLayers?.length > 0 ? new UIEventSource(undefined) : value} | ||||
|   initialCoordinate={coordinate} | ||||
|   maxDistanceInMeters={50} | ||||
|   {maxDistanceInMeters} | ||||
| > | ||||
|   <slot name="image" slot="image"> | ||||
|     <Move_arrows class="h-full max-h-24" /> | ||||
|  |  | |||
|  | @ -132,6 +132,7 @@ | |||
|         <div class="flex h-32 w-max gap-x-2"> | ||||
|           {#each $unknownImages as image (image)} | ||||
|             <AttributedImage | ||||
|               {state} | ||||
|               imgClass="h-32 w-max shrink-0" | ||||
|               image={{ url: image }} | ||||
|               previewedImage={state.previewedImage} | ||||
|  |  | |||
|  | @ -7,10 +7,12 @@ | |||
|   import { Mapillary } from "../../Logic/ImageProviders/Mapillary" | ||||
|   import { UIEventSource } from "../../Logic/UIEventSource" | ||||
|   import { MagnifyingGlassPlusIcon } from "@babeard/svelte-heroicons/outline" | ||||
|   import { CloseButton, Modal } from "flowbite-svelte" | ||||
|   import { CloseButton } from "flowbite-svelte" | ||||
|   import ImageOperations from "./ImageOperations.svelte" | ||||
|   import Popup from "../Base/Popup.svelte" | ||||
|   import { onDestroy } from "svelte" | ||||
|   import type { SpecialVisualizationState } from "../SpecialVisualization" | ||||
|   import type { Feature, Point } from "geojson" | ||||
| 
 | ||||
|   export let image: Partial<ProvidedImage> | ||||
|   let fallbackImage: string = undefined | ||||
|  | @ -20,19 +22,43 @@ | |||
| 
 | ||||
|   let imgEl: HTMLImageElement | ||||
|   export let imgClass: string = undefined | ||||
|   export let state: SpecialVisualizationState = undefined | ||||
|   export let attributionFormat: "minimal" | "medium" | "large" = "medium" | ||||
|   export let previewedImage: UIEventSource<ProvidedImage> | ||||
|   export let canZoom = previewedImage !== undefined | ||||
|   let loaded = false | ||||
|   let showBigPreview =  new UIEventSource(false) | ||||
|   onDestroy(showBigPreview.addCallbackAndRun(shown=>{ | ||||
|     if(!shown){ | ||||
|   let showBigPreview = new UIEventSource(false) | ||||
|   onDestroy(showBigPreview.addCallbackAndRun(shown => { | ||||
|     if (!shown) { | ||||
|       previewedImage.set(false) | ||||
|     } | ||||
|   })) | ||||
|   onDestroy(previewedImage.addCallbackAndRun(previewedImage => { | ||||
|     showBigPreview.set(previewedImage?.id === image.id) | ||||
|   })) | ||||
| 
 | ||||
|   function highlight(entered: boolean = true) { | ||||
|     if (!entered) { | ||||
|       state?.geocodedImages.set([]) | ||||
|       return | ||||
|     } | ||||
|     if (isNaN(image.lon) || isNaN(image.lat)) { | ||||
|       return | ||||
|     } | ||||
|     const f: Feature<Point> = { | ||||
|       type: "Feature", | ||||
|       properties: { | ||||
|         id: image.id, | ||||
|         rotation: image.rotation | ||||
|       }, | ||||
|       geometry: { | ||||
|         type: "Point", | ||||
|         coordinates: [image.lon, image.lat] | ||||
|       } | ||||
|     } | ||||
|     console.log(f) | ||||
|     state?.geocodedImages.set([f]) | ||||
|   } | ||||
| </script> | ||||
| 
 | ||||
| <Popup shown={showBigPreview} bodyPadding="p-0" dismissable={true}> | ||||
|  | @ -48,7 +74,10 @@ | |||
|   </div> | ||||
| </Popup> | ||||
| <div class="relative shrink-0"> | ||||
|   <div class="relative w-fit"> | ||||
|   <div class="relative w-fit" | ||||
|        on:mouseenter={() => highlight()} | ||||
|        on:mouseleave={() => highlight(false)} | ||||
|   > | ||||
|     <img | ||||
|       bind:this={imgEl} | ||||
|       on:load={() => (loaded = true)} | ||||
|  | @ -68,7 +97,7 @@ | |||
|     {#if canZoom && loaded} | ||||
|       <div | ||||
|         class="bg-black-transparent absolute right-0 top-0 rounded-bl-full" | ||||
|            on:click={() => previewedImage.set(image)}> | ||||
|         on:click={() => previewedImage.set(image)}> | ||||
|         <MagnifyingGlassPlusIcon class="h-8 w-8 cursor-zoom-in pl-3 pb-3" color="white" /> | ||||
|       </div> | ||||
|     {/if} | ||||
|  |  | |||
|  | @ -8,7 +8,6 @@ import ImageProvider, { ProvidedImage } from "../../Logic/ImageProviders/ImagePr | |||
| import { OsmConnection } from "../../Logic/Osm/OsmConnection" | ||||
| import { Changes } from "../../Logic/Osm/Changes" | ||||
| import LayoutConfig from "../../Models/ThemeConfig/LayoutConfig" | ||||
| import { Feature } from "geojson" | ||||
| import SvelteUIElement from "../Base/SvelteUIElement" | ||||
| import AttributedImage from "./AttributedImage.svelte" | ||||
| 
 | ||||
|  | @ -30,6 +29,7 @@ export class ImageCarousel extends Toggle { | |||
|                     try { | ||||
|                         let image: BaseUIElement = new SvelteUIElement(AttributedImage, { | ||||
|                             image: url, | ||||
|                             state, | ||||
|                             previewedImage: state?.previewedImage, | ||||
|                         }) | ||||
| 
 | ||||
|  |  | |||
|  | @ -14,8 +14,8 @@ | |||
|   import AttributedImage from "./AttributedImage.svelte" | ||||
|   import SpecialTranslation from "../Popup/TagRendering/SpecialTranslation.svelte" | ||||
|   import LoginToggle from "../Base/LoginToggle.svelte" | ||||
|   import ImagePreview from "./ImagePreview.svelte" | ||||
|   import FloatOver from "../Base/FloatOver.svelte" | ||||
|   import { onDestroy } from "svelte" | ||||
|   import { Utils } from "../../Utils" | ||||
| 
 | ||||
|   export let tags: UIEventSource<OsmTags> | ||||
|   export let state: SpecialVisualizationState | ||||
|  | @ -23,6 +23,8 @@ | |||
|   export let feature: Feature | ||||
|   export let layer: LayerConfig | ||||
| 
 | ||||
|   export let highlighted: UIEventSource<string> = undefined | ||||
| 
 | ||||
|   export let linkable = true | ||||
|   let targetValue = Object.values(image.osmTags)[0] | ||||
|   let isLinked = new UIEventSource(Object.values(tags.data).some((v) => targetValue === v)) | ||||
|  | @ -33,7 +35,7 @@ | |||
|     key: undefined, | ||||
|     provider: AllImageProviders.byName(image.provider), | ||||
|     date: new Date(image.date), | ||||
|     id: Object.values(image.osmTags)[0], | ||||
|     id: Object.values(image.osmTags)[0] | ||||
|   } | ||||
| 
 | ||||
|   async function applyLink(isLinked: boolean) { | ||||
|  | @ -44,7 +46,7 @@ | |||
|     if (isLinked) { | ||||
|       const action = new LinkImageAction(currentTags.id, key, url, tags, { | ||||
|         theme: tags.data._orig_theme ?? state.layout.id, | ||||
|         changeType: "link-image", | ||||
|         changeType: "link-image" | ||||
|       }) | ||||
|       await state.changes.applyAction(action) | ||||
|     } else { | ||||
|  | @ -53,7 +55,7 @@ | |||
|         if (v === url) { | ||||
|           const action = new ChangeTagAction(currentTags.id, new Tag(k, ""), currentTags, { | ||||
|             theme: tags.data._orig_theme ?? state.layout.id, | ||||
|             changeType: "remove-image", | ||||
|             changeType: "remove-image" | ||||
|           }) | ||||
|           state.changes.applyAction(action) | ||||
|         } | ||||
|  | @ -62,16 +64,30 @@ | |||
|   } | ||||
| 
 | ||||
|   isLinked.addCallback((isLinked) => applyLink(isLinked)) | ||||
| 
 | ||||
|   let element: HTMLDivElement | ||||
|   if (highlighted) { | ||||
| 
 | ||||
|     onDestroy( | ||||
|       highlighted.addCallbackD(highlightedUrl => { | ||||
|         if (highlightedUrl === image.pictureUrl) { | ||||
|           Utils.scrollIntoView(element) | ||||
|         } | ||||
|       }) | ||||
|     ) | ||||
|   } | ||||
| </script> | ||||
| 
 | ||||
| <div | ||||
|   class="flex w-fit shrink-0 flex-col overflow-hidden rounded-lg" | ||||
|   class:border-interactive={$isLinked} | ||||
|   class:border-interactive={$isLinked || $highlighted === image.pictureUrl} | ||||
|   style="border-width: 2px" | ||||
|   bind:this={element} | ||||
| > | ||||
|   <AttributedImage | ||||
|     {state} | ||||
|     image={providedImage} | ||||
|     imgClass="max-h-64 w-auto" | ||||
|     imgClass="max-h-64 w-auto sm:h-32 md:h-64" | ||||
|     previewedImage={state.previewedImage} | ||||
|     attributionFormat="minimal" | ||||
|   > | ||||
|  |  | |||
|  | @ -7,13 +7,23 @@ | |||
|   import type { SpecialVisualizationState } from "../SpecialVisualization" | ||||
|   import type { P4CPicture } from "../../Logic/Web/NearbyImagesSearch" | ||||
|   import LinkableImage from "./LinkableImage.svelte" | ||||
|   import type { Feature } from "geojson" | ||||
|   import type { Feature, Point } from "geojson" | ||||
|   import LayerConfig from "../../Models/ThemeConfig/LayerConfig" | ||||
|   import Loading from "../Base/Loading.svelte" | ||||
|   import AllImageProviders from "../../Logic/ImageProviders/AllImageProviders" | ||||
|   import Tr from "../Base/Tr.svelte" | ||||
|   import Translations from "../i18n/Translations" | ||||
|   import MapillaryLink from "../BigComponents/MapillaryLink.svelte" | ||||
|   import MaplibreMap from "../Map/MaplibreMap.svelte" | ||||
|   import { Map as MlMap } from "maplibre-gl" | ||||
|   import { MapLibreAdaptor } from "../Map/MapLibreAdaptor" | ||||
|   import ShowDataLayer from "../Map/ShowDataLayer" | ||||
|   import StaticFeatureSource from "../../Logic/FeatureSource/Sources/StaticFeatureSource" | ||||
|   import * as geocoded_image from "../../assets/generated/layers/geocoded_image.json" | ||||
|   import type { LayerConfigJson } from "../../Models/ThemeConfig/Json/LayerConfigJson" | ||||
|   import { onDestroy } from "svelte" | ||||
|   import { BBox } from "../../Logic/BBox" | ||||
| 
 | ||||
| 
 | ||||
|   export let tags: UIEventSource<OsmTags> | ||||
|   export let state: SpecialVisualizationState | ||||
|  | @ -42,12 +52,100 @@ | |||
|     [loadedImages] | ||||
|   ) | ||||
| 
 | ||||
|   let asFeatures = result.map(p4cs => p4cs.map(p4c => (<Feature<Point>>{ | ||||
|     type: "Feature", | ||||
|     geometry: { | ||||
|       type: "Point", | ||||
|       coordinates: [p4c.coordinates.lng, p4c.coordinates.lat] | ||||
|     }, | ||||
|     properties: { | ||||
|       id: p4c.pictureUrl, | ||||
|       rotation: p4c.direction | ||||
|     } | ||||
|   }))) | ||||
| 
 | ||||
|   let selected = new UIEventSource<P4CPicture>(undefined) | ||||
|   let selectedAsFeature = selected.mapD(s => { | ||||
|     return [<Feature<Point>>{ | ||||
|       type: "Feature", | ||||
|       geometry: { | ||||
|         type: "Point", | ||||
|         coordinates: [s.coordinates.lng, s.coordinates.lat] | ||||
|       }, | ||||
|       properties: { | ||||
|         id: s.pictureUrl, | ||||
|         selected: "yes", | ||||
|         rotation: s.direction | ||||
|       } | ||||
|     }] | ||||
|   }) | ||||
| 
 | ||||
|   let someLoading = imageState.state.mapD((stateRecord) => | ||||
|     Object.values(stateRecord).some((v) => v === "loading") | ||||
|   ) | ||||
|   let errors = imageState.state.mapD((stateRecord) => | ||||
|     Object.keys(stateRecord).filter((k) => stateRecord[k] === "error") | ||||
|   ) | ||||
|   let highlighted = new UIEventSource<string>(undefined) | ||||
| 
 | ||||
|   onDestroy(highlighted.addCallbackD(hl => { | ||||
|       const p4c = result.data?.find(i => i.pictureUrl === hl) | ||||
|       selected.set(p4c) | ||||
|     } | ||||
|   )) | ||||
| 
 | ||||
|   let map: UIEventSource<MlMap> = new UIEventSource<MlMap>(undefined) | ||||
|   let mapProperties = new MapLibreAdaptor(map, { | ||||
|     rasterLayer: state.mapProperties.rasterLayer, | ||||
|     rotation: state.mapProperties.rotation, | ||||
|     pitch: state.mapProperties.pitch, | ||||
|     zoom: new UIEventSource<number>(16), | ||||
|     location: new UIEventSource({ lon, lat }), | ||||
|   }) | ||||
| 
 | ||||
| 
 | ||||
|   const geocodedImageLayer = new LayerConfig(<LayerConfigJson>geocoded_image) | ||||
|   new ShowDataLayer(map, { | ||||
|     features: new StaticFeatureSource(asFeatures), | ||||
|     layer: geocodedImageLayer, | ||||
|     zoomToFeatures: true, | ||||
|     onClick: (feature) => { | ||||
|       highlighted.set(feature.properties.id) | ||||
|     } | ||||
|   }) | ||||
| 
 | ||||
| 
 | ||||
|   ShowDataLayer.showMultipleLayers( | ||||
|     map, | ||||
|     new StaticFeatureSource([feature]), | ||||
|     state.layout.layers | ||||
|   ) | ||||
| 
 | ||||
|   onDestroy( | ||||
|   asFeatures.addCallbackAndRunD(features => { | ||||
|     if(features.length == 0){ | ||||
|       return | ||||
|     } | ||||
|     let bbox = BBox.get(features[0]) | ||||
|     for (const f of features) { | ||||
|       bbox = bbox.unionWith(BBox.get(f)) | ||||
|     } | ||||
|     mapProperties.maxbounds.set(bbox.pad(1.1)) | ||||
|   }) | ||||
| 
 | ||||
|   ) | ||||
| 
 | ||||
|   new ShowDataLayer(map, { | ||||
|     features: new StaticFeatureSource(selectedAsFeature), | ||||
|     layer: geocodedImageLayer, | ||||
|     onClick: (feature) => { | ||||
|       highlighted.set(feature.properties.id) | ||||
|     } | ||||
|   }) | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| </script> | ||||
| 
 | ||||
| <div class="flex flex-col"> | ||||
|  | @ -62,12 +160,24 @@ | |||
|   {:else} | ||||
|     <div class="flex w-full space-x-4 overflow-x-auto" style="scroll-snap-type: x proximity"> | ||||
|       {#each $result as image (image.pictureUrl)} | ||||
|         <span class="w-fit shrink-0" style="scroll-snap-align: start"> | ||||
|           <LinkableImage {tags} {image} {state} {feature} {layer} {linkable} /> | ||||
|         <span class="w-fit shrink-0" style="scroll-snap-align: start" | ||||
|               on:mouseenter={() => {highlighted.set(image.pictureUrl)}} | ||||
|               on:mouseleave={() =>{ highlighted.set(undefined); selected.set(undefined)}} | ||||
|         > | ||||
|           <LinkableImage {tags} {image} {state} {feature} {layer} {linkable} {highlighted} /> | ||||
|         </span> | ||||
|       {/each} | ||||
|     </div> | ||||
|   {/if} | ||||
|   <span class="self-end pt-2"> | ||||
| 
 | ||||
|   <MapillaryLink | ||||
|     large={false} | ||||
|     mapProperties={{ zoom: new ImmutableStore(16), location: new ImmutableStore({ lon, lat }) }} | ||||
|   /> | ||||
|   </span> | ||||
| 
 | ||||
| 
 | ||||
|   <div class="my-2 flex justify-between"> | ||||
|     <div> | ||||
|       {#if $someLoading && $result.length > 0} | ||||
|  | @ -80,9 +190,10 @@ | |||
|         /> | ||||
|       {/if} | ||||
|     </div> | ||||
|     <MapillaryLink | ||||
|       large={false} | ||||
|       mapProperties={{ zoom: new ImmutableStore(16), location: new ImmutableStore({ lon, lat }) }} | ||||
|     /> | ||||
|   </div> | ||||
| 
 | ||||
| 
 | ||||
|   <div class="h-48"> | ||||
|     <MaplibreMap interactive={false} {map} {mapProperties} /> | ||||
|   </div> | ||||
| </div> | ||||
|  |  | |||
|  | @ -11,8 +11,9 @@ | |||
|   import Camera_plus from "../../assets/svg/Camera_plus.svelte" | ||||
|   import LoginToggle from "../Base/LoginToggle.svelte" | ||||
|   import { ariaLabel } from "../../Utils/ariaLabel" | ||||
|   import { Accordion, AccordionItem } from "flowbite-svelte" | ||||
|   import { Accordion, AccordionItem, Modal } from "flowbite-svelte" | ||||
|   import AccordionSingle from "../Flowbite/AccordionSingle.svelte" | ||||
|   import Popup from "../Base/Popup.svelte" | ||||
| 
 | ||||
|   export let tags: UIEventSource<OsmTags> | ||||
|   export let state: SpecialVisualizationState | ||||
|  | @ -24,15 +25,16 @@ | |||
|   export let layer: LayerConfig | ||||
|   const t = Translations.t.image.nearby | ||||
| 
 | ||||
|   let expanded = false | ||||
|   let enableLogin = state.featureSwitches.featureSwitchEnableLogin | ||||
|   export let shown = new UIEventSource(false) | ||||
| </script> | ||||
| 
 | ||||
| {#if enableLogin.data} | ||||
|   <AccordionSingle> | ||||
|     <span slot="header" class="p-2 text-base"> | ||||
|   <button on:click={() => {shown.set(!shown.data)}}><Tr t={t.seeNearby}/> </button> | ||||
|   <Popup {shown} bodyPadding="p-4"> | ||||
|     <span slot="header"> | ||||
|       <Tr t={t.seeNearby} /> | ||||
|     </span> | ||||
|     <NearbyImages {tags} {state} {lon} {lat} {feature} {linkable} {layer} /> | ||||
|   </AccordionSingle> | ||||
|   </Popup> | ||||
| {/if} | ||||
|  |  | |||
|  | @ -18,9 +18,15 @@ | |||
|   /** | ||||
|    * A visualisation to pick a location on a map background | ||||
|    */ | ||||
|   /** | ||||
|    * The center of the map. If it contains a value (and initialCoordinate is not given), this will be used as start coordinate | ||||
|    */ | ||||
|   export let value: UIEventSource<{ lon: number; lat: number }> | ||||
|   export let initialCoordinate: { lon: number; lat: number } | ||||
|   export let initialCoordinate: { lon: number; lat: number } = undefined | ||||
|   initialCoordinate = initialCoordinate ?? value.data | ||||
|   /** | ||||
|    * Max distance that one is allowed to stray from the initial coordinate | ||||
|    */ | ||||
|   export let maxDistanceInMeters: number = undefined | ||||
|   export let mapProperties: Partial<MapProperties> & { | ||||
|     readonly location: UIEventSource<{ lon: number; lat: number }> | ||||
|  |  | |||
|  | @ -23,9 +23,9 @@ | |||
|   export let type: ValidatorType | ||||
|   export let value: UIEventSource<string | object> | ||||
| 
 | ||||
|   export let feature: Feature | ||||
|   export let feature: Feature = undefined | ||||
|   export let args: (string | number | boolean)[] = undefined | ||||
|   export let state: SpecialVisualizationState | ||||
|   export let state: SpecialVisualizationState = undefined | ||||
| </script> | ||||
| 
 | ||||
| {#if type === "translation"} | ||||
|  | @ -51,4 +51,6 @@ | |||
|   <SlopeInput {value} {feature} {state} /> | ||||
| {:else if type === "wikidata"} | ||||
|   <WikidataInputHelper {value} {feature} {state} {args} /> | ||||
| {:else} | ||||
|   <slot name="fallback" /> | ||||
| {/if} | ||||
|  |  | |||
|  | @ -125,7 +125,7 @@ | |||
|     <HeartOutlineIcon style="--svg-color: {color}" class={twMerge(clss, "apply-fill")} /> | ||||
|   {:else if icon === "confirm"} | ||||
|     <Confirm class={clss} {color} /> | ||||
|   {:else if icon === "direction"} | ||||
|   {:else if icon === "direction" || icon === "direction_gradient"} | ||||
|     <Direction_gradient class={clss} {color} /> | ||||
|   {:else if icon === "not_found"} | ||||
|     <Not_found class={twMerge(clss, "no-image-background")} {color} /> | ||||
|  |  | |||
|  | @ -1,5 +1,5 @@ | |||
| import { ImmutableStore, Store, UIEventSource } from "../../Logic/UIEventSource" | ||||
| import maplibregl, { Map as MLMap, Map as MlMap, SourceSpecification } from "maplibre-gl" | ||||
| import maplibregl, { Map as MLMap, Map as MlMap, ScaleControl, SourceSpecification } from "maplibre-gl" | ||||
| import { RasterLayerPolygon } from "../../Models/RasterLayers" | ||||
| import { Utils } from "../../Utils" | ||||
| import { BBox } from "../../Logic/BBox" | ||||
|  | @ -48,6 +48,7 @@ export class MapLibreAdaptor implements MapProperties, ExportableMap { | |||
|     readonly rotation: UIEventSource<number> | ||||
|     readonly pitch: UIEventSource<number> | ||||
|     readonly useTerrain: Store<boolean> | ||||
|     readonly showScale: UIEventSource<boolean> | ||||
| 
 | ||||
|     private static pmtilesInited = false | ||||
|     /** | ||||
|  | @ -93,6 +94,7 @@ export class MapLibreAdaptor implements MapProperties, ExportableMap { | |||
|         this.useTerrain = state?.useTerrain ?? new ImmutableStore<boolean>(false) | ||||
|         this.rasterLayer = | ||||
|             state?.rasterLayer ?? new UIEventSource<RasterLayerPolygon | undefined>(undefined) | ||||
|         this.showScale = state?.showScale ?? new UIEventSource<boolean>(false) | ||||
| 
 | ||||
|         const lastClickLocation = new UIEventSource<{ | ||||
|             lat: number | ||||
|  | @ -131,6 +133,7 @@ export class MapLibreAdaptor implements MapProperties, ExportableMap { | |||
|                 self.setMaxzoom(self.maxzoom.data) | ||||
|                 self.setBounds(self.bounds.data) | ||||
|                 self.setTerrain(self.useTerrain.data) | ||||
|                 self.setScale(self.showScale.data) | ||||
|                 this.updateStores(true) | ||||
|             }) | ||||
|             self.MoveMapToCurrentLoc(self.location.data) | ||||
|  | @ -144,6 +147,7 @@ export class MapLibreAdaptor implements MapProperties, ExportableMap { | |||
|             self.setBounds(self.bounds.data) | ||||
|             self.SetRotation(self.rotation.data) | ||||
|             self.setTerrain(self.useTerrain.data) | ||||
|             self.setScale(self.showScale.data) | ||||
|             this.updateStores(true) | ||||
|             map.on("movestart", () => { | ||||
|                 this.isFlying.setData(true) | ||||
|  | @ -221,6 +225,7 @@ export class MapLibreAdaptor implements MapProperties, ExportableMap { | |||
|         this.allowZooming.addCallbackAndRun((allowZooming) => self.setAllowZooming(allowZooming)) | ||||
|         this.bounds.addCallbackAndRunD((bounds) => self.setBounds(bounds)) | ||||
|         this.useTerrain?.addCallbackAndRun((useTerrain) => self.setTerrain(useTerrain)) | ||||
|         this.showScale?.addCallbackAndRun(showScale => self.setScale(showScale)) | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|  | @ -703,6 +708,32 @@ export class MapLibreAdaptor implements MapProperties, ExportableMap { | |||
|         } | ||||
|     } | ||||
| 
 | ||||
|     private scaleControl: maplibregl.ScaleControl = undefined | ||||
| 
 | ||||
|     private setScale(showScale: boolean) { | ||||
|         const map = this._maplibreMap.data | ||||
|         if (!map) { | ||||
|             return | ||||
|         } | ||||
|         if (!showScale) { | ||||
|             if(this.scaleControl){ | ||||
|                 map.removeControl(this.scaleControl) | ||||
|                 this.scaleControl = undefined | ||||
|             } | ||||
|             return | ||||
|         } | ||||
|         if (this.scaleControl === undefined) { | ||||
| 
 | ||||
|             this.scaleControl = new ScaleControl({ | ||||
|                 maxWidth: 100, | ||||
|                 unit: "metric" | ||||
|             }) | ||||
|         } | ||||
|         if (!map.hasControl(this.scaleControl)) { | ||||
|             map.addControl(this.scaleControl, "bottom-right") | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     public flyTo(lon: number, lat: number, zoom: number) { | ||||
|         this.lockZoom() | ||||
|         window.requestAnimationFrame(() => { | ||||
|  |  | |||
|  | @ -159,10 +159,9 @@ class PointRenderingLayer { | |||
|         }) | ||||
| 
 | ||||
|         if (this._onClick) { | ||||
|             const self = this | ||||
|             el.addEventListener("click", function (ev) { | ||||
|             el.addEventListener("click",  (ev)=> { | ||||
|                 ev.preventDefault() | ||||
|                 self._onClick(feature) | ||||
|                 this._onClick(feature) | ||||
|                 // Workaround to signal the MapLibreAdaptor to ignore this click
 | ||||
|                 ev["consumed"] = true | ||||
|             }) | ||||
|  |  | |||
|  | @ -104,6 +104,7 @@ | |||
|                 snapToLayers={$reason.snapTo} | ||||
|                 targetLayer={layer} | ||||
|                 dontShow={[id]} | ||||
|                 maxDistanceInMeters={200} | ||||
|               /> | ||||
|               <div class="absolute bottom-0 left-0"> | ||||
|                 <OpenBackgroundSelectorButton {state} /> | ||||
|  |  | |||
|  | @ -48,16 +48,14 @@ | |||
|   } | ||||
| 
 | ||||
|   let htmlElem: HTMLDivElement | ||||
|   $: { | ||||
|     if (editMode && htmlElem !== undefined && config.IsKnown($tags)) { | ||||
|       // EditMode switched to true yet the answer is already known, so the person wants to make a change | ||||
|       // Make sure that the question is in the scrollview! | ||||
| 
 | ||||
|   function enableEditMode(){ | ||||
|     editMode = true | ||||
|     // EditMode switched to true yet the answer is already known, so the person wants to make a change | ||||
|     // Make sure that the question is in the scrollview! | ||||
|     window.setTimeout(() => { | ||||
|       // Some delay is applied to give Svelte the time to render the _question_ | ||||
|       window.setTimeout(() => { | ||||
|         Utils.scrollIntoView(<any>htmlElem) | ||||
|       }, 50) | ||||
|     } | ||||
|       Utils.scrollIntoView(<any>htmlElem) | ||||
|     }, 50) | ||||
|   } | ||||
| 
 | ||||
|   const _htmlElement = new UIEventSource<HTMLElement>(undefined) | ||||
|  | @ -132,9 +130,7 @@ | |||
|           <EditButton | ||||
|             arialabel={config.editButtonAriaLabel} | ||||
|             ariaLabelledBy={answerId} | ||||
|             on:click={() => { | ||||
|               editMode = true | ||||
|             }} | ||||
|             on:click={() => enableEditMode()} | ||||
|           /> | ||||
|         {/if} | ||||
|       </div> | ||||
|  |  | |||
|  | @ -343,7 +343,7 @@ | |||
| {#if question !== undefined} | ||||
|   <div class={clss}> | ||||
|     <form | ||||
|       class="relative flex flex-col overflow-y-auto px-2" | ||||
|       class="relative flex flex-col overflow-y-auto px-4" | ||||
|       style="max-height: 75vh" | ||||
|       on:submit|preventDefault={() => { | ||||
|         /*onSave(); This submit is not needed and triggers too early, causing bugs: see #1808*/ | ||||
|  | @ -351,7 +351,7 @@ | |||
|     > | ||||
|       <fieldset> | ||||
|         <legend> | ||||
|           <div class="sticky top-0 justify-between pt-1 font-bold" style="z-index: 11"> | ||||
|           <div class="sticky top-0 justify-between pt-4 pb-2 font-bold" style="z-index: 11"> | ||||
|             <SpecialTranslation t={question} {tags} {state} {layer} feature={selectedElement} /> | ||||
|           </div> | ||||
| 
 | ||||
|  | @ -557,7 +557,7 @@ | |||
|             {/if} | ||||
| 
 | ||||
| 
 | ||||
|             <div class="flex flex-wrap-reverse items-stretch justify-end sm:flex-nowrap self-end flex-grow"> | ||||
|             <div class="flex flex-wrap-reverse items-stretch justify-end sm:flex-nowrap self-end flex-grow mt-4 mb-2"> | ||||
| 
 | ||||
|               <!-- TagRenderingQuestion-buttons --> | ||||
|               <slot name="cancel" /> | ||||
|  | @ -590,7 +590,7 @@ | |||
|               <TagHint {state} tags={selectedTags} currentProperties={$tags} /> | ||||
|               <span class="flex flex-wrap"> | ||||
|                 {#if $featureSwitchIsTesting} | ||||
|                   <div class="alert">Testmode  </div> | ||||
|                   <div class="alert" style="padding: 0; margin: 0; margin-right:  0.5rem">Testmode  </div> | ||||
|                 {/if} | ||||
|                 {#if $featureSwitchIsTesting || $featureSwitchIsDebugging} | ||||
|                   <a class="small" on:click={() => console.log("Configuration is ", config)}> | ||||
|  |  | |||
|  | @ -84,6 +84,7 @@ export interface SpecialVisualizationState { | |||
|     readonly previewedImage: UIEventSource<ProvidedImage> | ||||
|     readonly nearbyImageSearcher: CombinedFetcher | ||||
|     readonly geolocation: GeoLocationHandler | ||||
|     readonly geocodedImages : UIEventSource<Feature[]> | ||||
|     readonly searchState: SearchState | ||||
| 
 | ||||
|     getMatchingLayer(properties: Record<string, string>); | ||||
|  |  | |||
|  | @ -32,12 +32,23 @@ | |||
|     return type.some((t) => mightBeBoolean(t)) | ||||
|   } | ||||
| 
 | ||||
|   function mightBeTag(){ | ||||
|     const t = schema.type | ||||
|     if(!Array.isArray(t)){ | ||||
|       return false | ||||
|     } | ||||
|     const hasAnd = t.some(obj => obj["$ref"] === "#/definitions/{and:TagConfigJson[];}") | ||||
|     const hasOr = t.some(obj => obj["$ref"] === "#/definitions/{or:TagConfigJson[];}") | ||||
|     const hasString = t.some(obj => obj["type"] === "string") | ||||
|     return hasAnd && hasOr && hasString | ||||
|   } | ||||
| 
 | ||||
|   const isTranslation = | ||||
|     schema.hints?.typehint === "translation" || | ||||
|     schema.hints?.typehint === "rendered" || | ||||
|     ConfigMetaUtils.isTranslation(schema) | ||||
|   let type = schema.hints.typehint ?? "string" | ||||
| 
 | ||||
|   let type = schema.hints.typehint ?? (mightBeTag() ? "tag" : "string") | ||||
|   let rendervalue = | ||||
|     (schema.hints.inline ?? schema.path.join(".")) + | ||||
|     (isTranslation ? " <b>{translated(value)}</b>" : " <b>{value}</b>") | ||||
|  |  | |||
|  | @ -310,6 +310,11 @@ | |||
|             {/if} | ||||
|           </div> | ||||
|         </If> | ||||
|         <If condition={state.mapProperties.showScale}> | ||||
|           <div class="h-6"> | ||||
|             <!-- Empty. We just provide some space for the maplibre scalecontrol --> | ||||
|           </div> | ||||
|         </If> | ||||
|       </div> | ||||
|     </div> | ||||
| 
 | ||||
|  |  | |||
|  | @ -1275,7 +1275,7 @@ In the case that MapComplete is pointed to the testing grounds, the edit will be | |||
| 
 | ||||
|     public static sortedByLevenshteinDistance<T>( | ||||
|         reference: string, | ||||
|         ts: T[], | ||||
|         ts: ReadonlyArray<T>, | ||||
|         getName: (t: T) => string | ||||
|     ): T[] { | ||||
|         const withDistance: [T, number][] = ts.map((t) => [ | ||||
|  | @ -1464,6 +1464,7 @@ In the case that MapComplete is pointed to the testing grounds, the edit will be | |||
|         if (!element) { | ||||
|             return | ||||
|         } | ||||
|         console.log("Scrolling into view:", element) | ||||
|         // Is the element completely in the view?
 | ||||
|         const parentRect = Utils.findParentWithScrolling(element)?.getBoundingClientRect() | ||||
|         if (!parentRect) { | ||||
|  | @ -1474,7 +1475,9 @@ In the case that MapComplete is pointed to the testing grounds, the edit will be | |||
|         // Check if the element is within the vertical bounds of the parent element
 | ||||
|         const topIsVisible = elementRect.top >= parentRect.top | ||||
|         const bottomIsVisible = elementRect.bottom <= parentRect.bottom | ||||
|         const inView = topIsVisible && bottomIsVisible | ||||
|         const leftIsVisible = elementRect.left >= parentRect.left | ||||
|         const rightIsVisible = elementRect.right <= parentRect.right | ||||
|         const inView = topIsVisible && bottomIsVisible && leftIsVisible && rightIsVisible | ||||
|         if (inView) { | ||||
|             return | ||||
|         } | ||||
|  |  | |||
|  | @ -1,4 +1,4 @@ | |||
| <script> | ||||
| export let color = "#000000" | ||||
| </script> | ||||
|  <svg {...$$restProps} on:click on:mouseover on:mouseenter on:mouseleave on:keydown on:focus         xmlns:dc="http://purl.org/dc/elements/1.1/"         xmlns:cc="http://creativecommons.org/ns#"         xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"         xmlns:xlink="http://www.w3.org/1999/xlink"         xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"         xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"         xmlns="http://www.w3.org/2000/svg"         version="1.0"         width="860.50732pt"         height="860.50732pt"         viewBox="0 0 860.50732 860.50732"         preserveAspectRatio="xMidYMid meet"         id="svg14"         sodipodi:docname="direction_gradient.svg"         inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)">     <defs             id="defs18">         <linearGradient                 inkscape:collect="always"                 id="linearGradient832">             <stop                     style="stop-color:{color};stop-opacity:1;"                     offset="0"                     id="stop828"/>             <stop                     style="stop-color:{color};stop-opacity:0;"                     offset="1"                     id="stop830"/>         </linearGradient>         <radialGradient                 inkscape:collect="always"                 xlink:href="#linearGradient832"                 id="radialGradient838"                 cx="430.25363"                 cy="519.61188"                 fx="430.25363"                 fy="519.61188"                 r="305.54589"                 gradientTransform="matrix(0.95288409,-0.94890664,0.94542304,0.94938587,-470.98122,345.21193)"                 gradientUnits="userSpaceOnUse"/>     </defs>     <sodipodi:namedview             pagecolor="#ffffff"             bordercolor="#666666"             borderopacity="1"             objecttolerance="10"             gridtolerance="10"             guidetolerance="10"             inkscape:pageopacity="0"             inkscape:pageshadow="2"             inkscape:window-width="1920"             inkscape:window-height="999"             id="namedview16"             showgrid="false"             showguides="true"             inkscape:guide-bbox="true"             inkscape:zoom="0.70710678"             inkscape:cx="279.00239"             inkscape:cy="856.75313"             inkscape:window-x="0"             inkscape:window-y="0"             inkscape:window-maximized="1"             inkscape:current-layer="svg14">         <sodipodi:guide                 position="430.25363,862.49682"                 orientation="1,0"                 id="guide832"                 inkscape:locked="false"/>         <sodipodi:guide                 position="-42.427977,430.25368"                 orientation="0,1"                 id="guide834"                 inkscape:locked="false"/>         <sodipodi:guide                 position="398.27788,720.18823"                 orientation="0,1"                 id="guide840"                 inkscape:locked="false"/>     </sodipodi:namedview>     <metadata             id="metadata2">         Created by potrace 1.15, written by Peter Selinger 2001-2017         <rdf:RDF>             <cc:Work                     rdf:about="">                 <dc:format>image/svg+xml</dc:format>                 <dc:type                         rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>                 <dc:title/>             </cc:Work>         </rdf:RDF>     </metadata>     <path             style="fill:url(#radialGradient838);fill-opacity:1;stroke:none;stroke-width:2.83464575;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"             d="M 735.79979,124.70799 C 654.79116,43.598883 544.88842,-2.0206645 430.25389,-2.121103 315.61937,-2.0206592 205.71663,43.598888 124.70801,124.70799 l 305.54588,305.54589 z"             id="path836"             inkscape:connector-curvature="0"             sodipodi:nodetypes="ccccc"/> </svg>  | ||||
|  <svg {...$$restProps} on:click on:mouseover on:mouseenter on:mouseleave on:keydown on:focus    version="1.0"    width="860.50732pt"    height="860.50732pt"    viewBox="0 0 860.50732 860.50732"    preserveAspectRatio="xMidYMid meet"    id="svg14"    xmlns:xlink="http://www.w3.org/1999/xlink"    xmlns="http://www.w3.org/2000/svg"    xmlns:svg="http://www.w3.org/2000/svg"    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"    xmlns:cc="http://creativecommons.org/ns#"    xmlns:dc="http://purl.org/dc/elements/1.1/">   <defs      id="defs18">     <linearGradient        id="linearGradient832">       <stop          style="stop-color:{color};stop-opacity:1;"          offset="0"          id="stop828" />       <stop          style="stop-color:{color};stop-opacity:0;"          offset="1"          id="stop830" />     </linearGradient>     <radialGradient        xlink:href="#linearGradient832"        id="radialGradient838"        cx="430.25363"        cy="519.61188"        fx="430.25363"        fy="519.61188"        r="305.54589"        gradientTransform="matrix(0.95288409,-0.94890664,0.94542304,0.94938587,-470.98122,345.21193)"        gradientUnits="userSpaceOnUse" />   </defs>   <metadata      id="metadata2">         Created by potrace 1.15, written by Peter Selinger 2001-2017         <rdf:RDF>   <cc:Work      rdf:about="">     <dc:format>image/svg+xml</dc:format>     <dc:type        rdf:resource="http://purl.org/dc/dcmitype/StillImage" />   </cc:Work> </rdf:RDF> </metadata>   <path      style="fill:url(#radialGradient838);fill-opacity:1;stroke:none;stroke-width:2.83464575;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"      d="M 735.79979,124.70799 C 654.79116,43.598883 544.88842,-2.0206645 430.25389,-2.121103 315.61937,-2.0206592 205.71663,43.598888 124.70801,124.70799 l 305.54588,305.54589 z"      id="path836" /> </svg>  | ||||
							
								
								
									
										4
									
								
								src/assets/svg/Unsnap.svelte
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								src/assets/svg/Unsnap.svelte
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,4 @@ | |||
| <script> | ||||
| export let color = "#000000" | ||||
| </script> | ||||
|  <!-- Created with Inkscape (http://www.inkscape.org/) -->  <svg {...$$restProps} on:click on:mouseover on:mouseenter on:mouseleave on:keydown on:focus    width="120"    height="120"    viewBox="0 0 120 120"    version="1.1"    id="svg1"    xml:space="preserve"    inkscape:version="1.3.2 (1:1.3.2+202311252150+091e20ef0f)"    sodipodi:docname="unsnap.svg"    xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"    xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"    xmlns="http://www.w3.org/2000/svg"    xmlns:svg="http://www.w3.org/2000/svg"><sodipodi:namedview      id="namedview1"      pagecolor="#ffffff"      bordercolor="#999999"      borderopacity="1"      inkscape:showpageshadow="2"      inkscape:pageopacity="0"      inkscape:pagecheckerboard="0"      inkscape:deskcolor="#d1d1d1"      inkscape:document-units="px"      showguides="true"      inkscape:zoom="4.5168066"      inkscape:cx="51.695815"      inkscape:cy="69.186048"      inkscape:window-width="1920"      inkscape:window-height="995"      inkscape:window-x="0"      inkscape:window-y="0"      inkscape:window-maximized="1"      inkscape:current-layer="layer1"><sodipodi:guide        position="315.49944,61.936443"        orientation="0,-1"        id="guide2"        inkscape:locked="false" /></sodipodi:namedview><defs      id="defs1" /><g      inkscape:label="Layer 1"      inkscape:groupmode="layer"      id="layer1"      transform="translate(-5,-5)"><path        id="path1-2"        style="fill:{color};fill-opacity:1;stroke-width:3.93092"        d="m 91.670867,40.074491 c 0.948679,0.909931 1.380066,2.234124 1.148907,3.527969 l -3.447995,17.260743 c -0.381611,2.137177 -2.526217,4.001294 -4.081205,2.486091 L 79.257979,57.469775 64.262133,72.31877 c -1.383257,1.369713 -3.807955,0.909932 -4.298111,0.288099 -1.707154,-2.165786 -0.138139,-3.968458 0.177549,-4.304093 L 74.600311,52.930303 68.567707,47.05079 c -1.554665,-1.51554 0.253754,-3.707343 2.380393,-4.143751 l 17.16644,-3.89041 c 1.287478,-0.264342 2.622313,0.132882 3.556328,1.057866 z"        sodipodi:nodetypes="cccccsssccccc" /><g        id="g8"        transform="matrix(-1,0,0,1,132.686,0)" /><g        id="g10"        transform="matrix(0.99755231,-0.06992414,-0.06992414,-0.99755231,14.642674,124.44485)"><path          style="color:{color};fill:{color};stroke-linecap:round;-inkscape-stroke:none"          d="M 10,90 45,10"          id="path3" /><path          id="path4"          style="color:{color};fill:#808080;stroke-linecap:round;-inkscape-stroke:none;stroke:none;stroke-opacity:1;fill-opacity:1"          d="M 45.097656,5.0019531 A 5,5 0 0 0 43.177734,5.34375 5,5 0 0 0 40.419922,7.9960938 L 35.865234,18.40625 c 3.405007,0.669609 6.469474,2.331825 8.867188,4.679688 L 49.580078,12.003906 A 5,5 0 0 0 47.003906,5.4199219 5,5 0 0 0 45.097656,5.0019531 Z M 22.177734,49.691406 5.4199219,87.996094 a 5,5 0 0 0 2.5761719,6.583984 5,5 0 0 0 6.5839842,-2.576172 L 31.621094,53.052734 c -3.513941,-0.175553 -6.76611,-1.396873 -9.44336,-3.361328 z" /><path          style="fill:#808080;fill-opacity:1;stroke:{color};stroke-width:0;stroke-linecap:round;stroke-opacity:1"          id="path9"          sodipodi:type="arc"          sodipodi:cx="32.616085"          sodipodi:cy="35.55938"          sodipodi:rx="12.741771"          sodipodi:ry="12.741771"          sodipodi:start="0"          sodipodi:end="6.26046"          sodipodi:open="true"          sodipodi:arc-type="arc"          d="M 45.357856,35.55938 A 12.741771,12.741771 0 0 1 32.688475,48.300945 12.741771,12.741771 0 0 1 19.875137,35.704157 12.741771,12.741771 0 0 1 32.398925,22.81946 12.741771,12.741771 0 0 1 45.354566,35.269844" /></g><path        style="fill:{color};fill-opacity:1;stroke:{color};stroke-width:0;stroke-linecap:round;stroke-opacity:1"        id="path10"        sodipodi:type="arc"        sodipodi:cx="-106.61823"        sodipodi:cy="26.136267"        sodipodi:rx="12.741771"        sodipodi:ry="12.741771"        sodipodi:start="0"        sodipodi:end="6.26046"        sodipodi:open="true"        sodipodi:arc-type="arc"        d="m -93.876462,26.136267 a 12.741771,12.741771 0 0 1 -12.669378,12.741565 12.741771,12.741771 0 0 1 -12.81334,-12.596788 12.741771,12.741771 0 0 1 12.52379,-12.884697 12.741771,12.741771 0 0 1 12.955638,12.450384"        transform="scale(-1,1)" /></g></svg>  | ||||
|  | @ -158,7 +158,7 @@ describe("ImageProviders", () => { | |||
|         ) | ||||
| 
 | ||||
|         Utils.injectJsonDownloadForTests( | ||||
|             "https://graph.mapillary.com/196804715753265?fields=thumb_1024_url,thumb_original_url,captured_at,creator&access_token=MLY|4441509239301885|b40ad2d3ea105435bd40c7e76993ae85", | ||||
|             "https://graph.mapillary.com/196804715753265?fields=thumb_1024_url,thumb_original_url,captured_at,compass_angle,geometry,creator&access_token=MLY|4441509239301885|b40ad2d3ea105435bd40c7e76993ae85", | ||||
|             { | ||||
|                 thumb_1024_url: | ||||
|                     "https://scontent-bru2-1.xx.fbcdn.net/m1/v/t6/An8HQ3DrfU76tWMC602spvM_e_rqOHyiUcYUTetXM7K52DDBEY5J4FWg4WKQqVUlMsWJn4nLXk0pxlBLx31146FqZ2Kg65z7lJUfR6wpW6WPSR5_y7RKdv4YEuzPjwIN0lagBnQONV3UjmXnEGpMouU?stp=s1024x768&ccb=10-5&oh=d460b401c505714ee1cb8bd6baf8ae5d&oe=61731FC3&_nc_sid=122ab1", | ||||
|  | @ -167,6 +167,14 @@ describe("ImageProviders", () => { | |||
| 
 | ||||
|                 id: "196804715753265", | ||||
|                 captured_at: 1627748022000, | ||||
|                 "compass_angle": 0, | ||||
|                 "geometry": { | ||||
|                     "type": "Point", | ||||
|                     "coordinates": [ | ||||
|                         3.2153751999722, | ||||
|                         51.215653199972 | ||||
|                     ] | ||||
|                 }, | ||||
|                 creator: { | ||||
|                     username: "filipc", | ||||
|                     id: "109372117958792", | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue