Merge branch 'develop' into feature/nsi
This commit is contained in:
commit
22c2f5166d
116 changed files with 5653 additions and 1538 deletions
|
@ -6,7 +6,7 @@ runs:
|
|||
- name: Set up Node.js
|
||||
uses: actions/setup-node@v3
|
||||
with:
|
||||
node-version: "16"
|
||||
node-version: "20"
|
||||
cache: "npm"
|
||||
cache-dependency-path: package-lock.json
|
||||
|
||||
|
|
2
.github/workflows/deploy_dev.yml
vendored
2
.github/workflows/deploy_dev.yml
vendored
|
@ -13,7 +13,7 @@ jobs:
|
|||
- name: Set up Node.js
|
||||
uses: actions/setup-node@v3
|
||||
with:
|
||||
node-version: "16"
|
||||
node-version: "20"
|
||||
cache: "npm"
|
||||
cache-dependency-path: package-lock.json
|
||||
|
||||
|
|
2
.github/workflows/deploy_pietervdvn.yml
vendored
2
.github/workflows/deploy_pietervdvn.yml
vendored
|
@ -19,7 +19,7 @@ jobs:
|
|||
- name: Set up Node.js
|
||||
uses: actions/setup-node@v3
|
||||
with:
|
||||
node-version: "16"
|
||||
node-version: "20"
|
||||
cache: "npm"
|
||||
cache-dependency-path: package-lock.json
|
||||
|
||||
|
|
2
.github/workflows/deploy_prod.yml
vendored
2
.github/workflows/deploy_prod.yml
vendored
|
@ -13,7 +13,7 @@ jobs:
|
|||
- name: Set up Node.js
|
||||
uses: actions/setup-node@v3
|
||||
with:
|
||||
node-version: "16"
|
||||
node-version: "20"
|
||||
cache: "npm"
|
||||
cache-dependency-path: package-lock.json
|
||||
|
||||
|
|
2
.github/workflows/validate-pr.yml
vendored
2
.github/workflows/validate-pr.yml
vendored
|
@ -11,7 +11,7 @@ jobs:
|
|||
- name: Set up Node.js
|
||||
uses: actions/setup-node@v3
|
||||
with:
|
||||
node-version: "16"
|
||||
node-version: "20"
|
||||
cache: "npm"
|
||||
cache-dependency-path: package-lock.json
|
||||
|
||||
|
|
2
.nvmrc
2
.nvmrc
|
@ -1 +1 @@
|
|||
16.9.1
|
||||
20.12.2
|
||||
|
|
|
@ -204,7 +204,7 @@
|
|||
"type": "boolean"
|
||||
},
|
||||
"presets": {
|
||||
"description": "<div class='flex'>\n <div>\nPresets for this layer.\n\nA preset consists of one or more attributes (tags), a title and optionally a description and optionally example images.\n\nWhen the contributor wishes to add a point to OpenStreetMap, they'll:\n\n1. Press the 'add new point'-button\n2. Choose a preset from the list of all presets\n3. Confirm the choice. In this step, the `description` (if set) and `exampleImages` (if given) will be shown\n4. Confirm the location\n5. A new point will be created with the attributes that were defined in the preset\n\nIf no presets are defined, the button which invites to add a new preset will not be shown.\n</div>\n<a class='block m-2 min-w-64' href='./Docs/Screenshots/AddNewItemScreencast.webm' target='_blank'> <video controls autoplay muted src='./Docs/Screenshots/AddNewItemScreencast.webm' class='w-64'/></a>\n</div>\n\ngroup: presets",
|
||||
"description": "<div class='flex'>\n <div>\nPresets for this layer.\n\nA preset consists of one or more attributes (tags), a title and optionally a description and optionally example images.\n\nWhen the contributor wishes to add a point to OpenStreetMap, they'll:\n\n1. Press the 'add new point'-button\n2. Choose a preset from the list of all presets\n3. Confirm the choice. In this step, the `description` (if set) and `exampleImages` (if given) will be shown\n4. Confirm the location\n5. A new point will be created with the attributes that were defined in the preset\n\nIf no presets are defined, the button which invites to add a new preset will not be shown.\n</div>\n<video controls autoplay muted src='./Docs/Screenshots/AddNewItemScreencast.webm' class='w-64'/>\n</div>\n\ngroup: presets",
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "object",
|
||||
|
@ -379,7 +379,7 @@
|
|||
"type": "boolean"
|
||||
},
|
||||
"units": {
|
||||
"description": "Either a list with [{\"key\": \"unitname\", \"key2\": {\"quantity\": \"unitname\", \"denominations\": [\"denom\", \"denom\"]}}]",
|
||||
"description": "Either a list with [{\"key\": \"unitname\", \"key2\": {\"quantity\": \"unitname\", \"denominations\": [\"denom\", \"denom\"]}}]\n\nUse `\"inverted\": true` if the amount should be _divided_ by the denomination, e.g. for charge over time (`€5/day`)",
|
||||
"type": "array",
|
||||
"items": {
|
||||
"anyOf": [
|
||||
|
@ -387,7 +387,7 @@
|
|||
"$ref": "#/definitions/default_2"
|
||||
},
|
||||
{
|
||||
"$ref": "#/definitions/Record<string,string|{quantity:string;denominations:string[];canonical?:string|undefined;}>"
|
||||
"$ref": "#/definitions/Record<string,string|{quantity:string;denominations:string[];canonical?:string|undefined;inverted?:boolean|undefined;}>"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
@ -703,7 +703,7 @@
|
|||
]
|
||||
},
|
||||
"condition": {
|
||||
"description": "question: When should this item be shown?\ntype: tag\nifunset: No specific condition set; always show this tagRendering or ask the question if unkown\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```",
|
||||
"description": "question: When should this item be shown?\ntype: tag\nifunset: No specific condition set; always show this tagRendering or show this question if unknown\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```",
|
||||
"anyOf": [
|
||||
{
|
||||
"$ref": "#/definitions/{and:TagConfigJson[];}"
|
||||
|
@ -717,7 +717,7 @@
|
|||
]
|
||||
},
|
||||
"metacondition": {
|
||||
"description": "question: When should this item be shown (including special conditions)?\ntype: tag\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_",
|
||||
"description": "question: When should this item be shown (including special conditions)?\ntype: tag\nifunset: No specific metacondition set which is evaluated against the <i>usersettings/application state</i>; always show this tagRendering or show this question if unknown\n\nIf set, this tag will be evaluated against the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options (at the settings-tab).\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_",
|
||||
"anyOf": [
|
||||
{
|
||||
"$ref": "#/definitions/{and:TagConfigJson[];}"
|
||||
|
@ -1238,7 +1238,7 @@
|
|||
"type": "string"
|
||||
},
|
||||
"placeholder": {
|
||||
"description": "question: What placeholder text should be shown in the input-element if there is no input?\nA (translated) text that is shown (as gray text) within the textfield\ntype: translation\ngroup: expert",
|
||||
"description": "question: What placeholder text should be shown in the input-element if there is no input?\nA (translated) text that is shown (as gray text) within the textfield\ntype: translation\ngroup: expert\nifunset: No specific placeholder is set, show the type of the textfield",
|
||||
"anyOf": [
|
||||
{
|
||||
"$ref": "#/definitions/Record<string,string>"
|
||||
|
@ -1386,7 +1386,7 @@
|
|||
]
|
||||
},
|
||||
"condition": {
|
||||
"description": "question: When should this item be shown?\ntype: tag\nifunset: No specific condition set; always show this tagRendering or ask the question if unkown\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```",
|
||||
"description": "question: When should this item be shown?\ntype: tag\nifunset: No specific condition set; always show this tagRendering or show this question if unknown\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```",
|
||||
"anyOf": [
|
||||
{
|
||||
"$ref": "#/definitions/{and:TagConfigJson[];}"
|
||||
|
@ -1400,7 +1400,7 @@
|
|||
]
|
||||
},
|
||||
"metacondition": {
|
||||
"description": "question: When should this item be shown (including special conditions)?\ntype: tag\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_",
|
||||
"description": "question: When should this item be shown (including special conditions)?\ntype: tag\nifunset: No specific metacondition set which is evaluated against the <i>usersettings/application state</i>; always show this tagRendering or show this question if unknown\n\nIf set, this tag will be evaluated against the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options (at the settings-tab).\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_",
|
||||
"anyOf": [
|
||||
{
|
||||
"$ref": "#/definitions/{and:TagConfigJson[];}"
|
||||
|
@ -1464,7 +1464,7 @@
|
|||
"type": "string"
|
||||
},
|
||||
"placeholder": {
|
||||
"description": "question: What placeholder text should be shown in the input-element if there is no input?\nA (translated) text that is shown (as gray text) within the textfield\ntype: translation\ngroup: expert",
|
||||
"description": "question: What placeholder text should be shown in the input-element if there is no input?\nA (translated) text that is shown (as gray text) within the textfield\ntype: translation\ngroup: expert\nifunset: No specific placeholder is set, show the type of the textfield",
|
||||
"anyOf": [
|
||||
{
|
||||
"$ref": "#/definitions/Record<string,string>"
|
||||
|
@ -1612,7 +1612,7 @@
|
|||
]
|
||||
},
|
||||
"condition": {
|
||||
"description": "question: When should this item be shown?\ntype: tag\nifunset: No specific condition set; always show this tagRendering or ask the question if unkown\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```",
|
||||
"description": "question: When should this item be shown?\ntype: tag\nifunset: No specific condition set; always show this tagRendering or show this question if unknown\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```",
|
||||
"anyOf": [
|
||||
{
|
||||
"$ref": "#/definitions/{and:TagConfigJson[];}"
|
||||
|
@ -1626,7 +1626,7 @@
|
|||
]
|
||||
},
|
||||
"metacondition": {
|
||||
"description": "question: When should this item be shown (including special conditions)?\ntype: tag\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_",
|
||||
"description": "question: When should this item be shown (including special conditions)?\ntype: tag\nifunset: No specific metacondition set which is evaluated against the <i>usersettings/application state</i>; always show this tagRendering or show this question if unknown\n\nIf set, this tag will be evaluated against the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options (at the settings-tab).\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_",
|
||||
"anyOf": [
|
||||
{
|
||||
"$ref": "#/definitions/{and:TagConfigJson[];}"
|
||||
|
@ -1950,7 +1950,7 @@
|
|||
],
|
||||
"additionalProperties": false
|
||||
},
|
||||
"Record<string,string|{quantity:string;denominations:string[];canonical?:string|undefined;}>": {
|
||||
"Record<string,string|{quantity:string;denominations:string[];canonical?:string|undefined;inverted?:boolean|undefined;}>": {
|
||||
"type": "object",
|
||||
"additionalProperties": false
|
||||
}
|
||||
|
|
|
@ -204,7 +204,7 @@ export default {
|
|||
"type": "boolean"
|
||||
},
|
||||
"presets": {
|
||||
"description": "<div class='flex'>\n <div>\nPresets for this layer.\n\nA preset consists of one or more attributes (tags), a title and optionally a description and optionally example images.\n\nWhen the contributor wishes to add a point to OpenStreetMap, they'll:\n\n1. Press the 'add new point'-button\n2. Choose a preset from the list of all presets\n3. Confirm the choice. In this step, the `description` (if set) and `exampleImages` (if given) will be shown\n4. Confirm the location\n5. A new point will be created with the attributes that were defined in the preset\n\nIf no presets are defined, the button which invites to add a new preset will not be shown.\n</div>\n<a class='block m-2 min-w-64' href='./Docs/Screenshots/AddNewItemScreencast.webm' target='_blank'> <video controls autoplay muted src='./Docs/Screenshots/AddNewItemScreencast.webm' class='w-64'/></a>\n</div>\n\ngroup: presets",
|
||||
"description": "<div class='flex'>\n <div>\nPresets for this layer.\n\nA preset consists of one or more attributes (tags), a title and optionally a description and optionally example images.\n\nWhen the contributor wishes to add a point to OpenStreetMap, they'll:\n\n1. Press the 'add new point'-button\n2. Choose a preset from the list of all presets\n3. Confirm the choice. In this step, the `description` (if set) and `exampleImages` (if given) will be shown\n4. Confirm the location\n5. A new point will be created with the attributes that were defined in the preset\n\nIf no presets are defined, the button which invites to add a new preset will not be shown.\n</div>\n<video controls autoplay muted src='./Docs/Screenshots/AddNewItemScreencast.webm' class='w-64'/>\n</div>\n\ngroup: presets",
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "object",
|
||||
|
@ -379,7 +379,7 @@ export default {
|
|||
"type": "boolean"
|
||||
},
|
||||
"units": {
|
||||
"description": "Either a list with [{\"key\": \"unitname\", \"key2\": {\"quantity\": \"unitname\", \"denominations\": [\"denom\", \"denom\"]}}]",
|
||||
"description": "Either a list with [{\"key\": \"unitname\", \"key2\": {\"quantity\": \"unitname\", \"denominations\": [\"denom\", \"denom\"]}}]\n\nUse `\"inverted\": true` if the amount should be _divided_ by the denomination, e.g. for charge over time (`€5/day`)",
|
||||
"type": "array",
|
||||
"items": {
|
||||
"anyOf": [
|
||||
|
@ -387,7 +387,7 @@ export default {
|
|||
"$ref": "#/definitions/default_2"
|
||||
},
|
||||
{
|
||||
"$ref": "#/definitions/Record<string,string|{quantity:string;denominations:string[];canonical?:string|undefined;}>"
|
||||
"$ref": "#/definitions/Record<string,string|{quantity:string;denominations:string[];canonical?:string|undefined;inverted?:boolean|undefined;}>"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
@ -696,7 +696,7 @@ export default {
|
|||
]
|
||||
},
|
||||
"condition": {
|
||||
"description": "question: When should this item be shown?\ntype: tag\nifunset: No specific condition set; always show this tagRendering or ask the question if unkown\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```",
|
||||
"description": "question: When should this item be shown?\ntype: tag\nifunset: No specific condition set; always show this tagRendering or show this question if unknown\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```",
|
||||
"anyOf": [
|
||||
{
|
||||
"$ref": "#/definitions/{and:TagConfigJson[];}"
|
||||
|
@ -710,7 +710,7 @@ export default {
|
|||
]
|
||||
},
|
||||
"metacondition": {
|
||||
"description": "question: When should this item be shown (including special conditions)?\ntype: tag\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_",
|
||||
"description": "question: When should this item be shown (including special conditions)?\ntype: tag\nifunset: No specific metacondition set which is evaluated against the <i>usersettings/application state</i>; always show this tagRendering or show this question if unknown\n\nIf set, this tag will be evaluated against the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options (at the settings-tab).\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_",
|
||||
"anyOf": [
|
||||
{
|
||||
"$ref": "#/definitions/{and:TagConfigJson[];}"
|
||||
|
@ -1225,7 +1225,7 @@ export default {
|
|||
"type": "string"
|
||||
},
|
||||
"placeholder": {
|
||||
"description": "question: What placeholder text should be shown in the input-element if there is no input?\nA (translated) text that is shown (as gray text) within the textfield\ntype: translation\ngroup: expert",
|
||||
"description": "question: What placeholder text should be shown in the input-element if there is no input?\nA (translated) text that is shown (as gray text) within the textfield\ntype: translation\ngroup: expert\nifunset: No specific placeholder is set, show the type of the textfield",
|
||||
"anyOf": [
|
||||
{
|
||||
"$ref": "#/definitions/Record<string,string>"
|
||||
|
@ -1373,7 +1373,7 @@ export default {
|
|||
]
|
||||
},
|
||||
"condition": {
|
||||
"description": "question: When should this item be shown?\ntype: tag\nifunset: No specific condition set; always show this tagRendering or ask the question if unkown\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```",
|
||||
"description": "question: When should this item be shown?\ntype: tag\nifunset: No specific condition set; always show this tagRendering or show this question if unknown\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```",
|
||||
"anyOf": [
|
||||
{
|
||||
"$ref": "#/definitions/{and:TagConfigJson[];}"
|
||||
|
@ -1387,7 +1387,7 @@ export default {
|
|||
]
|
||||
},
|
||||
"metacondition": {
|
||||
"description": "question: When should this item be shown (including special conditions)?\ntype: tag\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_",
|
||||
"description": "question: When should this item be shown (including special conditions)?\ntype: tag\nifunset: No specific metacondition set which is evaluated against the <i>usersettings/application state</i>; always show this tagRendering or show this question if unknown\n\nIf set, this tag will be evaluated against the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options (at the settings-tab).\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_",
|
||||
"anyOf": [
|
||||
{
|
||||
"$ref": "#/definitions/{and:TagConfigJson[];}"
|
||||
|
@ -1450,7 +1450,7 @@ export default {
|
|||
"type": "string"
|
||||
},
|
||||
"placeholder": {
|
||||
"description": "question: What placeholder text should be shown in the input-element if there is no input?\nA (translated) text that is shown (as gray text) within the textfield\ntype: translation\ngroup: expert",
|
||||
"description": "question: What placeholder text should be shown in the input-element if there is no input?\nA (translated) text that is shown (as gray text) within the textfield\ntype: translation\ngroup: expert\nifunset: No specific placeholder is set, show the type of the textfield",
|
||||
"anyOf": [
|
||||
{
|
||||
"$ref": "#/definitions/Record<string,string>"
|
||||
|
@ -1598,7 +1598,7 @@ export default {
|
|||
]
|
||||
},
|
||||
"condition": {
|
||||
"description": "question: When should this item be shown?\ntype: tag\nifunset: No specific condition set; always show this tagRendering or ask the question if unkown\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```",
|
||||
"description": "question: When should this item be shown?\ntype: tag\nifunset: No specific condition set; always show this tagRendering or show this question if unknown\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```",
|
||||
"anyOf": [
|
||||
{
|
||||
"$ref": "#/definitions/{and:TagConfigJson[];}"
|
||||
|
@ -1612,7 +1612,7 @@ export default {
|
|||
]
|
||||
},
|
||||
"metacondition": {
|
||||
"description": "question: When should this item be shown (including special conditions)?\ntype: tag\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_",
|
||||
"description": "question: When should this item be shown (including special conditions)?\ntype: tag\nifunset: No specific metacondition set which is evaluated against the <i>usersettings/application state</i>; always show this tagRendering or show this question if unknown\n\nIf set, this tag will be evaluated against the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options (at the settings-tab).\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_",
|
||||
"anyOf": [
|
||||
{
|
||||
"$ref": "#/definitions/{and:TagConfigJson[];}"
|
||||
|
@ -1930,7 +1930,7 @@ export default {
|
|||
"applicableUnits"
|
||||
]
|
||||
},
|
||||
"Record<string,string|{quantity:string;denominations:string[];canonical?:string|undefined;}>": {
|
||||
"Record<string,string|{quantity:string;denominations:string[];canonical?:string|undefined;inverted?:boolean|undefined;}>": {
|
||||
"type": "object"
|
||||
}
|
||||
},
|
||||
|
|
|
@ -593,7 +593,7 @@
|
|||
]
|
||||
},
|
||||
"condition": {
|
||||
"description": "question: When should this item be shown?\ntype: tag\nifunset: No specific condition set; always show this tagRendering or ask the question if unkown\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```",
|
||||
"description": "question: When should this item be shown?\ntype: tag\nifunset: No specific condition set; always show this tagRendering or show this question if unknown\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```",
|
||||
"anyOf": [
|
||||
{
|
||||
"$ref": "#/definitions/{and:TagConfigJson[];}"
|
||||
|
@ -607,7 +607,7 @@
|
|||
]
|
||||
},
|
||||
"metacondition": {
|
||||
"description": "question: When should this item be shown (including special conditions)?\ntype: tag\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_",
|
||||
"description": "question: When should this item be shown (including special conditions)?\ntype: tag\nifunset: No specific metacondition set which is evaluated against the <i>usersettings/application state</i>; always show this tagRendering or show this question if unknown\n\nIf set, this tag will be evaluated against the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options (at the settings-tab).\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_",
|
||||
"anyOf": [
|
||||
{
|
||||
"$ref": "#/definitions/{and:TagConfigJson[];}"
|
||||
|
@ -1128,7 +1128,7 @@
|
|||
"type": "string"
|
||||
},
|
||||
"placeholder": {
|
||||
"description": "question: What placeholder text should be shown in the input-element if there is no input?\nA (translated) text that is shown (as gray text) within the textfield\ntype: translation\ngroup: expert",
|
||||
"description": "question: What placeholder text should be shown in the input-element if there is no input?\nA (translated) text that is shown (as gray text) within the textfield\ntype: translation\ngroup: expert\nifunset: No specific placeholder is set, show the type of the textfield",
|
||||
"anyOf": [
|
||||
{
|
||||
"$ref": "#/definitions/Record<string,string>"
|
||||
|
@ -1276,7 +1276,7 @@
|
|||
]
|
||||
},
|
||||
"condition": {
|
||||
"description": "question: When should this item be shown?\ntype: tag\nifunset: No specific condition set; always show this tagRendering or ask the question if unkown\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```",
|
||||
"description": "question: When should this item be shown?\ntype: tag\nifunset: No specific condition set; always show this tagRendering or show this question if unknown\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```",
|
||||
"anyOf": [
|
||||
{
|
||||
"$ref": "#/definitions/{and:TagConfigJson[];}"
|
||||
|
@ -1290,7 +1290,7 @@
|
|||
]
|
||||
},
|
||||
"metacondition": {
|
||||
"description": "question: When should this item be shown (including special conditions)?\ntype: tag\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_",
|
||||
"description": "question: When should this item be shown (including special conditions)?\ntype: tag\nifunset: No specific metacondition set which is evaluated against the <i>usersettings/application state</i>; always show this tagRendering or show this question if unknown\n\nIf set, this tag will be evaluated against the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options (at the settings-tab).\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_",
|
||||
"anyOf": [
|
||||
{
|
||||
"$ref": "#/definitions/{and:TagConfigJson[];}"
|
||||
|
@ -1354,7 +1354,7 @@
|
|||
"type": "string"
|
||||
},
|
||||
"placeholder": {
|
||||
"description": "question: What placeholder text should be shown in the input-element if there is no input?\nA (translated) text that is shown (as gray text) within the textfield\ntype: translation\ngroup: expert",
|
||||
"description": "question: What placeholder text should be shown in the input-element if there is no input?\nA (translated) text that is shown (as gray text) within the textfield\ntype: translation\ngroup: expert\nifunset: No specific placeholder is set, show the type of the textfield",
|
||||
"anyOf": [
|
||||
{
|
||||
"$ref": "#/definitions/Record<string,string>"
|
||||
|
@ -1502,7 +1502,7 @@
|
|||
]
|
||||
},
|
||||
"condition": {
|
||||
"description": "question: When should this item be shown?\ntype: tag\nifunset: No specific condition set; always show this tagRendering or ask the question if unkown\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```",
|
||||
"description": "question: When should this item be shown?\ntype: tag\nifunset: No specific condition set; always show this tagRendering or show this question if unknown\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```",
|
||||
"anyOf": [
|
||||
{
|
||||
"$ref": "#/definitions/{and:TagConfigJson[];}"
|
||||
|
@ -1516,7 +1516,7 @@
|
|||
]
|
||||
},
|
||||
"metacondition": {
|
||||
"description": "question: When should this item be shown (including special conditions)?\ntype: tag\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_",
|
||||
"description": "question: When should this item be shown (including special conditions)?\ntype: tag\nifunset: No specific metacondition set which is evaluated against the <i>usersettings/application state</i>; always show this tagRendering or show this question if unknown\n\nIf set, this tag will be evaluated against the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options (at the settings-tab).\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_",
|
||||
"anyOf": [
|
||||
{
|
||||
"$ref": "#/definitions/{and:TagConfigJson[];}"
|
||||
|
@ -1840,7 +1840,7 @@
|
|||
],
|
||||
"additionalProperties": false
|
||||
},
|
||||
"Record<string,string|{quantity:string;denominations:string[];canonical?:string|undefined;}>": {
|
||||
"Record<string,string|{quantity:string;denominations:string[];canonical?:string|undefined;inverted?:boolean|undefined;}>": {
|
||||
"type": "object",
|
||||
"additionalProperties": false
|
||||
},
|
||||
|
@ -2095,7 +2095,7 @@
|
|||
"type": "boolean"
|
||||
},
|
||||
"presets": {
|
||||
"description": "<div class='flex'>\n <div>\nPresets for this layer.\n\nA preset consists of one or more attributes (tags), a title and optionally a description and optionally example images.\n\nWhen the contributor wishes to add a point to OpenStreetMap, they'll:\n\n1. Press the 'add new point'-button\n2. Choose a preset from the list of all presets\n3. Confirm the choice. In this step, the `description` (if set) and `exampleImages` (if given) will be shown\n4. Confirm the location\n5. A new point will be created with the attributes that were defined in the preset\n\nIf no presets are defined, the button which invites to add a new preset will not be shown.\n</div>\n<a class='block m-2 min-w-64' href='./Docs/Screenshots/AddNewItemScreencast.webm' target='_blank'> <video controls autoplay muted src='./Docs/Screenshots/AddNewItemScreencast.webm' class='w-64'/></a>\n</div>\n\ngroup: presets",
|
||||
"description": "<div class='flex'>\n <div>\nPresets for this layer.\n\nA preset consists of one or more attributes (tags), a title and optionally a description and optionally example images.\n\nWhen the contributor wishes to add a point to OpenStreetMap, they'll:\n\n1. Press the 'add new point'-button\n2. Choose a preset from the list of all presets\n3. Confirm the choice. In this step, the `description` (if set) and `exampleImages` (if given) will be shown\n4. Confirm the location\n5. A new point will be created with the attributes that were defined in the preset\n\nIf no presets are defined, the button which invites to add a new preset will not be shown.\n</div>\n<video controls autoplay muted src='./Docs/Screenshots/AddNewItemScreencast.webm' class='w-64'/>\n</div>\n\ngroup: presets",
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "object",
|
||||
|
@ -2270,7 +2270,7 @@
|
|||
"type": "boolean"
|
||||
},
|
||||
"units": {
|
||||
"description": "Either a list with [{\"key\": \"unitname\", \"key2\": {\"quantity\": \"unitname\", \"denominations\": [\"denom\", \"denom\"]}}]",
|
||||
"description": "Either a list with [{\"key\": \"unitname\", \"key2\": {\"quantity\": \"unitname\", \"denominations\": [\"denom\", \"denom\"]}}]\n\nUse `\"inverted\": true` if the amount should be _divided_ by the denomination, e.g. for charge over time (`€5/day`)",
|
||||
"type": "array",
|
||||
"items": {
|
||||
"anyOf": [
|
||||
|
@ -2278,7 +2278,7 @@
|
|||
"$ref": "#/definitions/default_2"
|
||||
},
|
||||
{
|
||||
"$ref": "#/definitions/Record<string,string|{quantity:string;denominations:string[];canonical?:string|undefined;}>"
|
||||
"$ref": "#/definitions/Record<string,string|{quantity:string;denominations:string[];canonical?:string|undefined;inverted?:boolean|undefined;}>"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
@ -2514,7 +2514,7 @@
|
|||
"type": "boolean"
|
||||
},
|
||||
"presets": {
|
||||
"description": "<div class='flex'>\n <div>\nPresets for this layer.\n\nA preset consists of one or more attributes (tags), a title and optionally a description and optionally example images.\n\nWhen the contributor wishes to add a point to OpenStreetMap, they'll:\n\n1. Press the 'add new point'-button\n2. Choose a preset from the list of all presets\n3. Confirm the choice. In this step, the `description` (if set) and `exampleImages` (if given) will be shown\n4. Confirm the location\n5. A new point will be created with the attributes that were defined in the preset\n\nIf no presets are defined, the button which invites to add a new preset will not be shown.\n</div>\n<a class='block m-2 min-w-64' href='./Docs/Screenshots/AddNewItemScreencast.webm' target='_blank'> <video controls autoplay muted src='./Docs/Screenshots/AddNewItemScreencast.webm' class='w-64'/></a>\n</div>\n\ngroup: presets",
|
||||
"description": "<div class='flex'>\n <div>\nPresets for this layer.\n\nA preset consists of one or more attributes (tags), a title and optionally a description and optionally example images.\n\nWhen the contributor wishes to add a point to OpenStreetMap, they'll:\n\n1. Press the 'add new point'-button\n2. Choose a preset from the list of all presets\n3. Confirm the choice. In this step, the `description` (if set) and `exampleImages` (if given) will be shown\n4. Confirm the location\n5. A new point will be created with the attributes that were defined in the preset\n\nIf no presets are defined, the button which invites to add a new preset will not be shown.\n</div>\n<video controls autoplay muted src='./Docs/Screenshots/AddNewItemScreencast.webm' class='w-64'/>\n</div>\n\ngroup: presets",
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "object",
|
||||
|
@ -2689,7 +2689,7 @@
|
|||
"type": "boolean"
|
||||
},
|
||||
"units": {
|
||||
"description": "Either a list with [{\"key\": \"unitname\", \"key2\": {\"quantity\": \"unitname\", \"denominations\": [\"denom\", \"denom\"]}}]",
|
||||
"description": "Either a list with [{\"key\": \"unitname\", \"key2\": {\"quantity\": \"unitname\", \"denominations\": [\"denom\", \"denom\"]}}]\n\nUse `\"inverted\": true` if the amount should be _divided_ by the denomination, e.g. for charge over time (`€5/day`)",
|
||||
"type": "array",
|
||||
"items": {
|
||||
"anyOf": [
|
||||
|
@ -2697,7 +2697,7 @@
|
|||
"$ref": "#/definitions/default_2"
|
||||
},
|
||||
{
|
||||
"$ref": "#/definitions/Record<string,string|{quantity:string;denominations:string[];canonical?:string|undefined;}>"
|
||||
"$ref": "#/definitions/Record<string,string|{quantity:string;denominations:string[];canonical?:string|undefined;inverted?:boolean|undefined;}>"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
|
@ -586,7 +586,7 @@ export default {
|
|||
]
|
||||
},
|
||||
"condition": {
|
||||
"description": "question: When should this item be shown?\ntype: tag\nifunset: No specific condition set; always show this tagRendering or ask the question if unkown\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```",
|
||||
"description": "question: When should this item be shown?\ntype: tag\nifunset: No specific condition set; always show this tagRendering or show this question if unknown\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```",
|
||||
"anyOf": [
|
||||
{
|
||||
"$ref": "#/definitions/{and:TagConfigJson[];}"
|
||||
|
@ -600,7 +600,7 @@ export default {
|
|||
]
|
||||
},
|
||||
"metacondition": {
|
||||
"description": "question: When should this item be shown (including special conditions)?\ntype: tag\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_",
|
||||
"description": "question: When should this item be shown (including special conditions)?\ntype: tag\nifunset: No specific metacondition set which is evaluated against the <i>usersettings/application state</i>; always show this tagRendering or show this question if unknown\n\nIf set, this tag will be evaluated against the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options (at the settings-tab).\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_",
|
||||
"anyOf": [
|
||||
{
|
||||
"$ref": "#/definitions/{and:TagConfigJson[];}"
|
||||
|
@ -1115,7 +1115,7 @@ export default {
|
|||
"type": "string"
|
||||
},
|
||||
"placeholder": {
|
||||
"description": "question: What placeholder text should be shown in the input-element if there is no input?\nA (translated) text that is shown (as gray text) within the textfield\ntype: translation\ngroup: expert",
|
||||
"description": "question: What placeholder text should be shown in the input-element if there is no input?\nA (translated) text that is shown (as gray text) within the textfield\ntype: translation\ngroup: expert\nifunset: No specific placeholder is set, show the type of the textfield",
|
||||
"anyOf": [
|
||||
{
|
||||
"$ref": "#/definitions/Record<string,string>"
|
||||
|
@ -1263,7 +1263,7 @@ export default {
|
|||
]
|
||||
},
|
||||
"condition": {
|
||||
"description": "question: When should this item be shown?\ntype: tag\nifunset: No specific condition set; always show this tagRendering or ask the question if unkown\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```",
|
||||
"description": "question: When should this item be shown?\ntype: tag\nifunset: No specific condition set; always show this tagRendering or show this question if unknown\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```",
|
||||
"anyOf": [
|
||||
{
|
||||
"$ref": "#/definitions/{and:TagConfigJson[];}"
|
||||
|
@ -1277,7 +1277,7 @@ export default {
|
|||
]
|
||||
},
|
||||
"metacondition": {
|
||||
"description": "question: When should this item be shown (including special conditions)?\ntype: tag\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_",
|
||||
"description": "question: When should this item be shown (including special conditions)?\ntype: tag\nifunset: No specific metacondition set which is evaluated against the <i>usersettings/application state</i>; always show this tagRendering or show this question if unknown\n\nIf set, this tag will be evaluated against the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options (at the settings-tab).\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_",
|
||||
"anyOf": [
|
||||
{
|
||||
"$ref": "#/definitions/{and:TagConfigJson[];}"
|
||||
|
@ -1340,7 +1340,7 @@ export default {
|
|||
"type": "string"
|
||||
},
|
||||
"placeholder": {
|
||||
"description": "question: What placeholder text should be shown in the input-element if there is no input?\nA (translated) text that is shown (as gray text) within the textfield\ntype: translation\ngroup: expert",
|
||||
"description": "question: What placeholder text should be shown in the input-element if there is no input?\nA (translated) text that is shown (as gray text) within the textfield\ntype: translation\ngroup: expert\nifunset: No specific placeholder is set, show the type of the textfield",
|
||||
"anyOf": [
|
||||
{
|
||||
"$ref": "#/definitions/Record<string,string>"
|
||||
|
@ -1488,7 +1488,7 @@ export default {
|
|||
]
|
||||
},
|
||||
"condition": {
|
||||
"description": "question: When should this item be shown?\ntype: tag\nifunset: No specific condition set; always show this tagRendering or ask the question if unkown\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```",
|
||||
"description": "question: When should this item be shown?\ntype: tag\nifunset: No specific condition set; always show this tagRendering or show this question if unknown\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```",
|
||||
"anyOf": [
|
||||
{
|
||||
"$ref": "#/definitions/{and:TagConfigJson[];}"
|
||||
|
@ -1502,7 +1502,7 @@ export default {
|
|||
]
|
||||
},
|
||||
"metacondition": {
|
||||
"description": "question: When should this item be shown (including special conditions)?\ntype: tag\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_",
|
||||
"description": "question: When should this item be shown (including special conditions)?\ntype: tag\nifunset: No specific metacondition set which is evaluated against the <i>usersettings/application state</i>; always show this tagRendering or show this question if unknown\n\nIf set, this tag will be evaluated against the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options (at the settings-tab).\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_",
|
||||
"anyOf": [
|
||||
{
|
||||
"$ref": "#/definitions/{and:TagConfigJson[];}"
|
||||
|
@ -1820,7 +1820,7 @@ export default {
|
|||
"applicableUnits"
|
||||
]
|
||||
},
|
||||
"Record<string,string|{quantity:string;denominations:string[];canonical?:string|undefined;}>": {
|
||||
"Record<string,string|{quantity:string;denominations:string[];canonical?:string|undefined;inverted?:boolean|undefined;}>": {
|
||||
"type": "object"
|
||||
},
|
||||
"default": {
|
||||
|
@ -2073,7 +2073,7 @@ export default {
|
|||
"type": "boolean"
|
||||
},
|
||||
"presets": {
|
||||
"description": "<div class='flex'>\n <div>\nPresets for this layer.\n\nA preset consists of one or more attributes (tags), a title and optionally a description and optionally example images.\n\nWhen the contributor wishes to add a point to OpenStreetMap, they'll:\n\n1. Press the 'add new point'-button\n2. Choose a preset from the list of all presets\n3. Confirm the choice. In this step, the `description` (if set) and `exampleImages` (if given) will be shown\n4. Confirm the location\n5. A new point will be created with the attributes that were defined in the preset\n\nIf no presets are defined, the button which invites to add a new preset will not be shown.\n</div>\n<a class='block m-2 min-w-64' href='./Docs/Screenshots/AddNewItemScreencast.webm' target='_blank'> <video controls autoplay muted src='./Docs/Screenshots/AddNewItemScreencast.webm' class='w-64'/></a>\n</div>\n\ngroup: presets",
|
||||
"description": "<div class='flex'>\n <div>\nPresets for this layer.\n\nA preset consists of one or more attributes (tags), a title and optionally a description and optionally example images.\n\nWhen the contributor wishes to add a point to OpenStreetMap, they'll:\n\n1. Press the 'add new point'-button\n2. Choose a preset from the list of all presets\n3. Confirm the choice. In this step, the `description` (if set) and `exampleImages` (if given) will be shown\n4. Confirm the location\n5. A new point will be created with the attributes that were defined in the preset\n\nIf no presets are defined, the button which invites to add a new preset will not be shown.\n</div>\n<video controls autoplay muted src='./Docs/Screenshots/AddNewItemScreencast.webm' class='w-64'/>\n</div>\n\ngroup: presets",
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "object",
|
||||
|
@ -2248,7 +2248,7 @@ export default {
|
|||
"type": "boolean"
|
||||
},
|
||||
"units": {
|
||||
"description": "Either a list with [{\"key\": \"unitname\", \"key2\": {\"quantity\": \"unitname\", \"denominations\": [\"denom\", \"denom\"]}}]",
|
||||
"description": "Either a list with [{\"key\": \"unitname\", \"key2\": {\"quantity\": \"unitname\", \"denominations\": [\"denom\", \"denom\"]}}]\n\nUse `\"inverted\": true` if the amount should be _divided_ by the denomination, e.g. for charge over time (`€5/day`)",
|
||||
"type": "array",
|
||||
"items": {
|
||||
"anyOf": [
|
||||
|
@ -2256,7 +2256,7 @@ export default {
|
|||
"$ref": "#/definitions/default_2"
|
||||
},
|
||||
{
|
||||
"$ref": "#/definitions/Record<string,string|{quantity:string;denominations:string[];canonical?:string|undefined;}>"
|
||||
"$ref": "#/definitions/Record<string,string|{quantity:string;denominations:string[];canonical?:string|undefined;inverted?:boolean|undefined;}>"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
@ -2491,7 +2491,7 @@ export default {
|
|||
"type": "boolean"
|
||||
},
|
||||
"presets": {
|
||||
"description": "<div class='flex'>\n <div>\nPresets for this layer.\n\nA preset consists of one or more attributes (tags), a title and optionally a description and optionally example images.\n\nWhen the contributor wishes to add a point to OpenStreetMap, they'll:\n\n1. Press the 'add new point'-button\n2. Choose a preset from the list of all presets\n3. Confirm the choice. In this step, the `description` (if set) and `exampleImages` (if given) will be shown\n4. Confirm the location\n5. A new point will be created with the attributes that were defined in the preset\n\nIf no presets are defined, the button which invites to add a new preset will not be shown.\n</div>\n<a class='block m-2 min-w-64' href='./Docs/Screenshots/AddNewItemScreencast.webm' target='_blank'> <video controls autoplay muted src='./Docs/Screenshots/AddNewItemScreencast.webm' class='w-64'/></a>\n</div>\n\ngroup: presets",
|
||||
"description": "<div class='flex'>\n <div>\nPresets for this layer.\n\nA preset consists of one or more attributes (tags), a title and optionally a description and optionally example images.\n\nWhen the contributor wishes to add a point to OpenStreetMap, they'll:\n\n1. Press the 'add new point'-button\n2. Choose a preset from the list of all presets\n3. Confirm the choice. In this step, the `description` (if set) and `exampleImages` (if given) will be shown\n4. Confirm the location\n5. A new point will be created with the attributes that were defined in the preset\n\nIf no presets are defined, the button which invites to add a new preset will not be shown.\n</div>\n<video controls autoplay muted src='./Docs/Screenshots/AddNewItemScreencast.webm' class='w-64'/>\n</div>\n\ngroup: presets",
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "object",
|
||||
|
@ -2666,7 +2666,7 @@ export default {
|
|||
"type": "boolean"
|
||||
},
|
||||
"units": {
|
||||
"description": "Either a list with [{\"key\": \"unitname\", \"key2\": {\"quantity\": \"unitname\", \"denominations\": [\"denom\", \"denom\"]}}]",
|
||||
"description": "Either a list with [{\"key\": \"unitname\", \"key2\": {\"quantity\": \"unitname\", \"denominations\": [\"denom\", \"denom\"]}}]\n\nUse `\"inverted\": true` if the amount should be _divided_ by the denomination, e.g. for charge over time (`€5/day`)",
|
||||
"type": "array",
|
||||
"items": {
|
||||
"anyOf": [
|
||||
|
@ -2674,7 +2674,7 @@ export default {
|
|||
"$ref": "#/definitions/default_2"
|
||||
},
|
||||
{
|
||||
"$ref": "#/definitions/Record<string,string|{quantity:string;denominations:string[];canonical?:string|undefined;}>"
|
||||
"$ref": "#/definitions/Record<string,string|{quantity:string;denominations:string[];canonical?:string|undefined;inverted?:boolean|undefined;}>"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
|
@ -379,7 +379,7 @@
|
|||
]
|
||||
},
|
||||
"condition": {
|
||||
"description": "question: When should this item be shown?\ntype: tag\nifunset: No specific condition set; always show this tagRendering or ask the question if unkown\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```",
|
||||
"description": "question: When should this item be shown?\ntype: tag\nifunset: No specific condition set; always show this tagRendering or show this question if unknown\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```",
|
||||
"anyOf": [
|
||||
{
|
||||
"$ref": "#/definitions/{and:TagConfigJson[];}"
|
||||
|
@ -393,7 +393,7 @@
|
|||
]
|
||||
},
|
||||
"metacondition": {
|
||||
"description": "question: When should this item be shown (including special conditions)?\ntype: tag\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_",
|
||||
"description": "question: When should this item be shown (including special conditions)?\ntype: tag\nifunset: No specific metacondition set which is evaluated against the <i>usersettings/application state</i>; always show this tagRendering or show this question if unknown\n\nIf set, this tag will be evaluated against the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options (at the settings-tab).\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_",
|
||||
"anyOf": [
|
||||
{
|
||||
"$ref": "#/definitions/{and:TagConfigJson[];}"
|
||||
|
|
|
@ -372,7 +372,7 @@ export default {
|
|||
]
|
||||
},
|
||||
"condition": {
|
||||
"description": "question: When should this item be shown?\ntype: tag\nifunset: No specific condition set; always show this tagRendering or ask the question if unkown\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```",
|
||||
"description": "question: When should this item be shown?\ntype: tag\nifunset: No specific condition set; always show this tagRendering or show this question if unknown\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```",
|
||||
"anyOf": [
|
||||
{
|
||||
"$ref": "#/definitions/{and:TagConfigJson[];}"
|
||||
|
@ -386,7 +386,7 @@ export default {
|
|||
]
|
||||
},
|
||||
"metacondition": {
|
||||
"description": "question: When should this item be shown (including special conditions)?\ntype: tag\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_",
|
||||
"description": "question: When should this item be shown (including special conditions)?\ntype: tag\nifunset: No specific metacondition set which is evaluated against the <i>usersettings/application state</i>; always show this tagRendering or show this question if unknown\n\nIf set, this tag will be evaluated against the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options (at the settings-tab).\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_",
|
||||
"anyOf": [
|
||||
{
|
||||
"$ref": "#/definitions/{and:TagConfigJson[];}"
|
||||
|
|
|
@ -406,7 +406,7 @@
|
|||
]
|
||||
},
|
||||
"condition": {
|
||||
"description": "question: When should this item be shown?\ntype: tag\nifunset: No specific condition set; always show this tagRendering or ask the question if unkown\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```",
|
||||
"description": "question: When should this item be shown?\ntype: tag\nifunset: No specific condition set; always show this tagRendering or show this question if unknown\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```",
|
||||
"anyOf": [
|
||||
{
|
||||
"$ref": "#/definitions/{and:TagConfigJson[];}"
|
||||
|
@ -420,7 +420,7 @@
|
|||
]
|
||||
},
|
||||
"metacondition": {
|
||||
"description": "question: When should this item be shown (including special conditions)?\ntype: tag\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_",
|
||||
"description": "question: When should this item be shown (including special conditions)?\ntype: tag\nifunset: No specific metacondition set which is evaluated against the <i>usersettings/application state</i>; always show this tagRendering or show this question if unknown\n\nIf set, this tag will be evaluated against the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options (at the settings-tab).\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_",
|
||||
"anyOf": [
|
||||
{
|
||||
"$ref": "#/definitions/{and:TagConfigJson[];}"
|
||||
|
|
|
@ -399,7 +399,7 @@ export default {
|
|||
]
|
||||
},
|
||||
"condition": {
|
||||
"description": "question: When should this item be shown?\ntype: tag\nifunset: No specific condition set; always show this tagRendering or ask the question if unkown\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```",
|
||||
"description": "question: When should this item be shown?\ntype: tag\nifunset: No specific condition set; always show this tagRendering or show this question if unknown\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```",
|
||||
"anyOf": [
|
||||
{
|
||||
"$ref": "#/definitions/{and:TagConfigJson[];}"
|
||||
|
@ -413,7 +413,7 @@ export default {
|
|||
]
|
||||
},
|
||||
"metacondition": {
|
||||
"description": "question: When should this item be shown (including special conditions)?\ntype: tag\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_",
|
||||
"description": "question: When should this item be shown (including special conditions)?\ntype: tag\nifunset: No specific metacondition set which is evaluated against the <i>usersettings/application state</i>; always show this tagRendering or show this question if unknown\n\nIf set, this tag will be evaluated against the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options (at the settings-tab).\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_",
|
||||
"anyOf": [
|
||||
{
|
||||
"$ref": "#/definitions/{and:TagConfigJson[];}"
|
||||
|
|
|
@ -453,7 +453,7 @@
|
|||
]
|
||||
},
|
||||
"condition": {
|
||||
"description": "question: When should this item be shown?\ntype: tag\nifunset: No specific condition set; always show this tagRendering or ask the question if unkown\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```",
|
||||
"description": "question: When should this item be shown?\ntype: tag\nifunset: No specific condition set; always show this tagRendering or show this question if unknown\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```",
|
||||
"anyOf": [
|
||||
{
|
||||
"$ref": "#/definitions/{and:TagConfigJson[];}"
|
||||
|
@ -467,7 +467,7 @@
|
|||
]
|
||||
},
|
||||
"metacondition": {
|
||||
"description": "question: When should this item be shown (including special conditions)?\ntype: tag\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_",
|
||||
"description": "question: When should this item be shown (including special conditions)?\ntype: tag\nifunset: No specific metacondition set which is evaluated against the <i>usersettings/application state</i>; always show this tagRendering or show this question if unknown\n\nIf set, this tag will be evaluated against the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options (at the settings-tab).\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_",
|
||||
"anyOf": [
|
||||
{
|
||||
"$ref": "#/definitions/{and:TagConfigJson[];}"
|
||||
|
|
|
@ -446,7 +446,7 @@ export default {
|
|||
]
|
||||
},
|
||||
"condition": {
|
||||
"description": "question: When should this item be shown?\ntype: tag\nifunset: No specific condition set; always show this tagRendering or ask the question if unkown\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```",
|
||||
"description": "question: When should this item be shown?\ntype: tag\nifunset: No specific condition set; always show this tagRendering or show this question if unknown\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```",
|
||||
"anyOf": [
|
||||
{
|
||||
"$ref": "#/definitions/{and:TagConfigJson[];}"
|
||||
|
@ -460,7 +460,7 @@ export default {
|
|||
]
|
||||
},
|
||||
"metacondition": {
|
||||
"description": "question: When should this item be shown (including special conditions)?\ntype: tag\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_",
|
||||
"description": "question: When should this item be shown (including special conditions)?\ntype: tag\nifunset: No specific metacondition set which is evaluated against the <i>usersettings/application state</i>; always show this tagRendering or show this question if unknown\n\nIf set, this tag will be evaluated against the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options (at the settings-tab).\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_",
|
||||
"anyOf": [
|
||||
{
|
||||
"$ref": "#/definitions/{and:TagConfigJson[];}"
|
||||
|
|
|
@ -29,7 +29,7 @@
|
|||
"type": "string"
|
||||
},
|
||||
"placeholder": {
|
||||
"description": "question: What placeholder text should be shown in the input-element if there is no input?\nA (translated) text that is shown (as gray text) within the textfield\ntype: translation\ngroup: expert",
|
||||
"description": "question: What placeholder text should be shown in the input-element if there is no input?\nA (translated) text that is shown (as gray text) within the textfield\ntype: translation\ngroup: expert\nifunset: No specific placeholder is set, show the type of the textfield",
|
||||
"anyOf": [
|
||||
{
|
||||
"$ref": "#/definitions/Record<string,string>"
|
||||
|
@ -177,7 +177,7 @@
|
|||
]
|
||||
},
|
||||
"condition": {
|
||||
"description": "question: When should this item be shown?\ntype: tag\nifunset: No specific condition set; always show this tagRendering or ask the question if unkown\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```",
|
||||
"description": "question: When should this item be shown?\ntype: tag\nifunset: No specific condition set; always show this tagRendering or show this question if unknown\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```",
|
||||
"anyOf": [
|
||||
{
|
||||
"$ref": "#/definitions/{and:TagConfigJson[];}"
|
||||
|
@ -191,7 +191,7 @@
|
|||
]
|
||||
},
|
||||
"metacondition": {
|
||||
"description": "question: When should this item be shown (including special conditions)?\ntype: tag\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_",
|
||||
"description": "question: When should this item be shown (including special conditions)?\ntype: tag\nifunset: No specific metacondition set which is evaluated against the <i>usersettings/application state</i>; always show this tagRendering or show this question if unknown\n\nIf set, this tag will be evaluated against the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options (at the settings-tab).\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_",
|
||||
"anyOf": [
|
||||
{
|
||||
"$ref": "#/definitions/{and:TagConfigJson[];}"
|
||||
|
@ -510,7 +510,7 @@
|
|||
]
|
||||
},
|
||||
"condition": {
|
||||
"description": "question: When should this item be shown?\ntype: tag\nifunset: No specific condition set; always show this tagRendering or ask the question if unkown\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```",
|
||||
"description": "question: When should this item be shown?\ntype: tag\nifunset: No specific condition set; always show this tagRendering or show this question if unknown\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```",
|
||||
"anyOf": [
|
||||
{
|
||||
"$ref": "#/definitions/{and:TagConfigJson[];}"
|
||||
|
@ -524,7 +524,7 @@
|
|||
]
|
||||
},
|
||||
"metacondition": {
|
||||
"description": "question: When should this item be shown (including special conditions)?\ntype: tag\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_",
|
||||
"description": "question: When should this item be shown (including special conditions)?\ntype: tag\nifunset: No specific metacondition set which is evaluated against the <i>usersettings/application state</i>; always show this tagRendering or show this question if unknown\n\nIf set, this tag will be evaluated against the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options (at the settings-tab).\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_",
|
||||
"anyOf": [
|
||||
{
|
||||
"$ref": "#/definitions/{and:TagConfigJson[];}"
|
||||
|
|
|
@ -29,7 +29,7 @@ export default {
|
|||
"type": "string"
|
||||
},
|
||||
"placeholder": {
|
||||
"description": "question: What placeholder text should be shown in the input-element if there is no input?\nA (translated) text that is shown (as gray text) within the textfield\ntype: translation\ngroup: expert",
|
||||
"description": "question: What placeholder text should be shown in the input-element if there is no input?\nA (translated) text that is shown (as gray text) within the textfield\ntype: translation\ngroup: expert\nifunset: No specific placeholder is set, show the type of the textfield",
|
||||
"anyOf": [
|
||||
{
|
||||
"$ref": "#/definitions/Record<string,string>"
|
||||
|
@ -177,7 +177,7 @@ export default {
|
|||
]
|
||||
},
|
||||
"condition": {
|
||||
"description": "question: When should this item be shown?\ntype: tag\nifunset: No specific condition set; always show this tagRendering or ask the question if unkown\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```",
|
||||
"description": "question: When should this item be shown?\ntype: tag\nifunset: No specific condition set; always show this tagRendering or show this question if unknown\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```",
|
||||
"anyOf": [
|
||||
{
|
||||
"$ref": "#/definitions/{and:TagConfigJson[];}"
|
||||
|
@ -191,7 +191,7 @@ export default {
|
|||
]
|
||||
},
|
||||
"metacondition": {
|
||||
"description": "question: When should this item be shown (including special conditions)?\ntype: tag\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_",
|
||||
"description": "question: When should this item be shown (including special conditions)?\ntype: tag\nifunset: No specific metacondition set which is evaluated against the <i>usersettings/application state</i>; always show this tagRendering or show this question if unknown\n\nIf set, this tag will be evaluated against the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options (at the settings-tab).\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_",
|
||||
"anyOf": [
|
||||
{
|
||||
"$ref": "#/definitions/{and:TagConfigJson[];}"
|
||||
|
@ -503,7 +503,7 @@ export default {
|
|||
]
|
||||
},
|
||||
"condition": {
|
||||
"description": "question: When should this item be shown?\ntype: tag\nifunset: No specific condition set; always show this tagRendering or ask the question if unkown\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```",
|
||||
"description": "question: When should this item be shown?\ntype: tag\nifunset: No specific condition set; always show this tagRendering or show this question if unknown\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```",
|
||||
"anyOf": [
|
||||
{
|
||||
"$ref": "#/definitions/{and:TagConfigJson[];}"
|
||||
|
@ -517,7 +517,7 @@ export default {
|
|||
]
|
||||
},
|
||||
"metacondition": {
|
||||
"description": "question: When should this item be shown (including special conditions)?\ntype: tag\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_",
|
||||
"description": "question: When should this item be shown (including special conditions)?\ntype: tag\nifunset: No specific metacondition set which is evaluated against the <i>usersettings/application state</i>; always show this tagRendering or show this question if unknown\n\nIf set, this tag will be evaluated against the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options (at the settings-tab).\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_",
|
||||
"anyOf": [
|
||||
{
|
||||
"$ref": "#/definitions/{and:TagConfigJson[];}"
|
||||
|
|
|
@ -332,7 +332,7 @@
|
|||
]
|
||||
},
|
||||
"condition": {
|
||||
"description": "question: When should this item be shown?\ntype: tag\nifunset: No specific condition set; always show this tagRendering or ask the question if unkown\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```",
|
||||
"description": "question: When should this item be shown?\ntype: tag\nifunset: No specific condition set; always show this tagRendering or show this question if unknown\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```",
|
||||
"anyOf": [
|
||||
{
|
||||
"$ref": "#/definitions/{and:TagConfigJson[];}"
|
||||
|
@ -346,7 +346,7 @@
|
|||
]
|
||||
},
|
||||
"metacondition": {
|
||||
"description": "question: When should this item be shown (including special conditions)?\ntype: tag\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_",
|
||||
"description": "question: When should this item be shown (including special conditions)?\ntype: tag\nifunset: No specific metacondition set which is evaluated against the <i>usersettings/application state</i>; always show this tagRendering or show this question if unknown\n\nIf set, this tag will be evaluated against the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options (at the settings-tab).\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_",
|
||||
"anyOf": [
|
||||
{
|
||||
"$ref": "#/definitions/{and:TagConfigJson[];}"
|
||||
|
|
|
@ -325,7 +325,7 @@ export default {
|
|||
]
|
||||
},
|
||||
"condition": {
|
||||
"description": "question: When should this item be shown?\ntype: tag\nifunset: No specific condition set; always show this tagRendering or ask the question if unkown\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```",
|
||||
"description": "question: When should this item be shown?\ntype: tag\nifunset: No specific condition set; always show this tagRendering or show this question if unknown\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```",
|
||||
"anyOf": [
|
||||
{
|
||||
"$ref": "#/definitions/{and:TagConfigJson[];}"
|
||||
|
@ -339,7 +339,7 @@ export default {
|
|||
]
|
||||
},
|
||||
"metacondition": {
|
||||
"description": "question: When should this item be shown (including special conditions)?\ntype: tag\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_",
|
||||
"description": "question: When should this item be shown (including special conditions)?\ntype: tag\nifunset: No specific metacondition set which is evaluated against the <i>usersettings/application state</i>; always show this tagRendering or show this question if unknown\n\nIf set, this tag will be evaluated against the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options (at the settings-tab).\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_",
|
||||
"anyOf": [
|
||||
{
|
||||
"$ref": "#/definitions/{and:TagConfigJson[];}"
|
||||
|
|
|
@ -64,7 +64,7 @@
|
|||
]
|
||||
},
|
||||
"condition": {
|
||||
"description": "question: When should this item be shown?\ntype: tag\nifunset: No specific condition set; always show this tagRendering or ask the question if unkown\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```",
|
||||
"description": "question: When should this item be shown?\ntype: tag\nifunset: No specific condition set; always show this tagRendering or show this question if unknown\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```",
|
||||
"anyOf": [
|
||||
{
|
||||
"$ref": "#/definitions/{and:TagConfigJson[];}"
|
||||
|
@ -78,7 +78,7 @@
|
|||
]
|
||||
},
|
||||
"metacondition": {
|
||||
"description": "question: When should this item be shown (including special conditions)?\ntype: tag\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_",
|
||||
"description": "question: When should this item be shown (including special conditions)?\ntype: tag\nifunset: No specific metacondition set which is evaluated against the <i>usersettings/application state</i>; always show this tagRendering or show this question if unknown\n\nIf set, this tag will be evaluated against the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options (at the settings-tab).\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_",
|
||||
"anyOf": [
|
||||
{
|
||||
"$ref": "#/definitions/{and:TagConfigJson[];}"
|
||||
|
|
|
@ -64,7 +64,7 @@ export default {
|
|||
]
|
||||
},
|
||||
"condition": {
|
||||
"description": "question: When should this item be shown?\ntype: tag\nifunset: No specific condition set; always show this tagRendering or ask the question if unkown\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```",
|
||||
"description": "question: When should this item be shown?\ntype: tag\nifunset: No specific condition set; always show this tagRendering or show this question if unknown\n\nOnly show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.\n\nThis is useful to ask a follow-up question.\nFor example, within toilets, asking _where_ the diaper changing table is is only useful _if_ there is one.\nThis can be done by adding `\"condition\": \"changing_table=yes\"`\n\nA full example would be:\n```json\n {\n \"question\": \"Where is the changing table located?\",\n \"render\": \"The changing table is located at {changing_table:location}\",\n \"condition\": \"changing_table=yes\",\n \"freeform\": {\n \"key\": \"changing_table:location\",\n \"inline\": true\n },\n \"mappings\": [\n {\n \"then\": \"The changing table is in the toilet for women.\",\n \"if\": \"changing_table:location=female_toilet\"\n },\n {\n \"then\": \"The changing table is in the toilet for men.\",\n \"if\": \"changing_table:location=male_toilet\"\n },\n {\n \"if\": \"changing_table:location=wheelchair_toilet\",\n \"then\": \"The changing table is in the toilet for wheelchair users.\",\n },\n {\n \"if\": \"changing_table:location=dedicated_room\",\n \"then\": \"The changing table is in a dedicated room. \",\n }\n ],\n \"id\": \"toilet-changing_table:location\"\n },\n```",
|
||||
"anyOf": [
|
||||
{
|
||||
"$ref": "#/definitions/{and:TagConfigJson[];}"
|
||||
|
@ -78,7 +78,7 @@ export default {
|
|||
]
|
||||
},
|
||||
"metacondition": {
|
||||
"description": "question: When should this item be shown (including special conditions)?\ntype: tag\n\nIf set, this tag will be evaluated agains the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options.\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_",
|
||||
"description": "question: When should this item be shown (including special conditions)?\ntype: tag\nifunset: No specific metacondition set which is evaluated against the <i>usersettings/application state</i>; always show this tagRendering or show this question if unknown\n\nIf set, this tag will be evaluated against the _usersettings/application state_ table.\nEnable 'show debug info' in user settings to see available options (at the settings-tab).\nNote that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_",
|
||||
"anyOf": [
|
||||
{
|
||||
"$ref": "#/definitions/{and:TagConfigJson[];}"
|
||||
|
|
|
@ -46,3 +46,9 @@ mapcomplete.osm.be {
|
|||
to http://127.0.0.1:1236
|
||||
}
|
||||
}
|
||||
|
||||
cache.mapcomplete.org {
|
||||
reverse_proxy /summary/* {
|
||||
to http://127.0.0.1:2345
|
||||
}
|
||||
}
|
||||
|
|
|
@ -3,3 +3,10 @@
|
|||
This server hosts the studio files and is used for expermintal builds.
|
||||
|
||||
For used hosts, see the Caddyfile
|
||||
|
||||
|
||||
## Cache forwarding
|
||||
|
||||
As the ISP of Nerdlab is a bit picky, we use SSH-port-forwarding on the cache server:
|
||||
|
||||
`ssh -R 5445:127.0.0.1:5445 hetzner`
|
||||
|
|
|
@ -13,9 +13,9 @@ This theme contains the following layers:
|
|||
|
||||
|
||||
|
||||
- [walls_and_buildings](../Layers/walls_and_buildings.md)
|
||||
- [advertising](../Layers/advertising.md)
|
||||
- [shelter](../Layers/shelter.md)
|
||||
- [walls_and_buildings](../Layers/walls_and_buildings.md)
|
||||
- [selected_element](../Layers/selected_element.md)
|
||||
- [gps_location](../Layers/gps_location.md)
|
||||
- [gps_location_history](../Layers/gps_location_history.md)
|
||||
|
|
|
@ -13,8 +13,8 @@ This theme contains the following layers:
|
|||
|
||||
|
||||
|
||||
- [walls_and_buildings](../Layers/walls_and_buildings.md)
|
||||
- [defibrillator](../Layers/defibrillator.md)
|
||||
- [walls_and_buildings](../Layers/walls_and_buildings.md)
|
||||
- [selected_element](../Layers/selected_element.md)
|
||||
- [gps_location](../Layers/gps_location.md)
|
||||
- [gps_location_history](../Layers/gps_location_history.md)
|
||||
|
|
|
@ -13,8 +13,8 @@ This theme contains the following layers:
|
|||
|
||||
|
||||
|
||||
- [walls_and_buildings](../Layers/walls_and_buildings.md)
|
||||
- [artwork](../Layers/artwork.md)
|
||||
- [walls_and_buildings](../Layers/walls_and_buildings.md)
|
||||
- [selected_element](../Layers/selected_element.md)
|
||||
- [gps_location](../Layers/gps_location.md)
|
||||
- [gps_location_history](../Layers/gps_location_history.md)
|
||||
|
|
|
@ -13,8 +13,8 @@ This theme contains the following layers:
|
|||
|
||||
|
||||
|
||||
- [walls_and_buildings](../Layers/walls_and_buildings.md)
|
||||
- [clock](../Layers/clock.md)
|
||||
- [walls_and_buildings](../Layers/walls_and_buildings.md)
|
||||
- [selected_element](../Layers/selected_element.md)
|
||||
- [gps_location](../Layers/gps_location.md)
|
||||
- [gps_location_history](../Layers/gps_location_history.md)
|
||||
|
|
|
@ -13,8 +13,8 @@ This theme contains the following layers:
|
|||
|
||||
|
||||
|
||||
- [walls_and_buildings](../Layers/walls_and_buildings.md)
|
||||
- [facadegardens](../Layers/facadegardens.md)
|
||||
- [walls_and_buildings](../Layers/walls_and_buildings.md)
|
||||
- [selected_element](../Layers/selected_element.md)
|
||||
- [gps_location](../Layers/gps_location.md)
|
||||
- [gps_location_history](../Layers/gps_location_history.md)
|
||||
|
|
|
@ -13,9 +13,9 @@ This theme contains the following layers:
|
|||
|
||||
|
||||
|
||||
- [walls_and_buildings](../Layers/walls_and_buildings.md)
|
||||
- [ghostsigns](../Layers/ghostsigns.md)
|
||||
- [advertising_wall_paintings](../Layers/advertising_wall_paintings.md)
|
||||
- [walls_and_buildings](../Layers/walls_and_buildings.md)
|
||||
- [selected_element](../Layers/selected_element.md)
|
||||
- [gps_location](../Layers/gps_location.md)
|
||||
- [gps_location_history](../Layers/gps_location_history.md)
|
||||
|
|
|
@ -13,7 +13,6 @@ This theme contains the following layers:
|
|||
|
||||
|
||||
|
||||
- [named_streets](../Layers/named_streets.md)
|
||||
- [osm_buildings_no_points](../Layers/osm_buildings_no_points.md)
|
||||
- [grb](../Layers/grb.md)
|
||||
- [service_ways](../Layers/service_ways.md)
|
||||
|
@ -21,6 +20,7 @@ This theme contains the following layers:
|
|||
- [address](../Layers/address.md)
|
||||
- [crab_address](../Layers/crab_address.md)
|
||||
- [current_view](../Layers/current_view.md)
|
||||
- [named_streets](../Layers/named_streets.md)
|
||||
- [selected_element](../Layers/selected_element.md)
|
||||
- [gps_location](../Layers/gps_location.md)
|
||||
- [gps_location_history](../Layers/gps_location_history.md)
|
||||
|
|
|
@ -13,7 +13,6 @@ This theme contains the following layers:
|
|||
|
||||
|
||||
|
||||
- [walls_and_buildings](../Layers/walls_and_buildings.md)
|
||||
- [indoors](../Layers/indoors.md)
|
||||
- [stairs](../Layers/stairs.md)
|
||||
- [pedestrian_path](../Layers/pedestrian_path.md)
|
||||
|
@ -36,6 +35,7 @@ This theme contains the following layers:
|
|||
- [bench](../Layers/bench.md)
|
||||
- [drinking_water](../Layers/drinking_water.md)
|
||||
- [departures_board](../Layers/departures_board.md)
|
||||
- [walls_and_buildings](../Layers/walls_and_buildings.md)
|
||||
- [selected_element](../Layers/selected_element.md)
|
||||
- [gps_location](../Layers/gps_location.md)
|
||||
- [gps_location_history](../Layers/gps_location_history.md)
|
||||
|
|
|
@ -13,9 +13,9 @@ This theme contains the following layers:
|
|||
|
||||
|
||||
|
||||
- [walls_and_buildings](../Layers/walls_and_buildings.md)
|
||||
- [surveillance_camera](../Layers/surveillance_camera.md)
|
||||
- [speed_camera](../Layers/speed_camera.md)
|
||||
- [walls_and_buildings](../Layers/walls_and_buildings.md)
|
||||
- [selected_element](../Layers/selected_element.md)
|
||||
- [gps_location](../Layers/gps_location.md)
|
||||
- [gps_location_history](../Layers/gps_location_history.md)
|
||||
|
|
|
@ -13,11 +13,11 @@ This theme contains the following layers:
|
|||
|
||||
|
||||
|
||||
- [address](../Layers/address.md)
|
||||
- [raw_inspire_polygons](../Layers/raw_inspire_polygons.md)
|
||||
- [to_import](../Layers/to_import.md)
|
||||
- [uk_address](../Layers/uk_address.md)
|
||||
- [named_streets](../Layers/named_streets.md)
|
||||
- [address](../Layers/address.md)
|
||||
- [selected_element](../Layers/selected_element.md)
|
||||
- [gps_location](../Layers/gps_location.md)
|
||||
- [gps_location_history](../Layers/gps_location_history.md)
|
||||
|
|
|
@ -13,10 +13,10 @@ This theme contains the following layers:
|
|||
|
||||
|
||||
|
||||
- [indoors](../Layers/indoors.md)
|
||||
- [pedestrian_path](../Layers/pedestrian_path.md)
|
||||
- [walls_and_buildings](../Layers/walls_and_buildings.md)
|
||||
- [entrance](../Layers/entrance.md)
|
||||
- [indoors](../Layers/indoors.md)
|
||||
- [pedestrian_path](../Layers/pedestrian_path.md)
|
||||
- [selected_element](../Layers/selected_element.md)
|
||||
- [gps_location](../Layers/gps_location.md)
|
||||
- [gps_location_history](../Layers/gps_location_history.md)
|
||||
|
|
|
@ -291,7 +291,7 @@ z
|
|||
|
||||
The initial/current zoom level
|
||||
|
||||
This documentation is defined in the source code at [InitialMapPositioning.ts](/src/Logic/Actors/InitialMapPositioning.ts#L28)
|
||||
This documentation is defined in the source code at [InitialMapPositioning.ts](/src/Logic/Actors/InitialMapPositioning.ts#L34)
|
||||
|
||||
The default value is _1_
|
||||
|
||||
|
@ -300,7 +300,7 @@ lat
|
|||
|
||||
The initial/current latitude
|
||||
|
||||
This documentation is defined in the source code at [InitialMapPositioning.ts](/src/Logic/Actors/InitialMapPositioning.ts#L28)
|
||||
This documentation is defined in the source code at [InitialMapPositioning.ts](/src/Logic/Actors/InitialMapPositioning.ts#L34)
|
||||
|
||||
The default value is _0_
|
||||
|
||||
|
@ -309,7 +309,7 @@ lon
|
|||
|
||||
The initial/current longitude of the app
|
||||
|
||||
This documentation is defined in the source code at [InitialMapPositioning.ts](/src/Logic/Actors/InitialMapPositioning.ts#L28)
|
||||
This documentation is defined in the source code at [InitialMapPositioning.ts](/src/Logic/Actors/InitialMapPositioning.ts#L34)
|
||||
|
||||
The default value is _0_
|
||||
|
||||
|
|
|
@ -155,8 +155,8 @@
|
|||
{
|
||||
"if": "backrest=yes",
|
||||
"then": {
|
||||
"en": "Does have a backrest",
|
||||
"de": "Die Sitzbank hat eine Rückenlehne",
|
||||
"en": "This bench does have a backrest",
|
||||
"de": "Diese Sitzbank hat eine Rückenlehne",
|
||||
"fr": "Dossier : Oui",
|
||||
"nl": "Heeft een rugleuning",
|
||||
"es": "Tiene respaldo",
|
||||
|
@ -186,8 +186,8 @@
|
|||
"two_sided="
|
||||
],
|
||||
"then": {
|
||||
"en": "Does <b>not</b> have a backrest",
|
||||
"de": "Die Sitzbank hat <b>keine</b> Rückenlehne",
|
||||
"en": "This bench does <b>not</b> have a backrest",
|
||||
"de": "Diese Sitzbank hat <b>keine</b> Rückenlehne",
|
||||
"fr": "Dossier : Non",
|
||||
"nl": "Heeft <b>geen</b> rugleuning",
|
||||
"es": "<b>No</b> tiene respaldo",
|
||||
|
@ -236,8 +236,8 @@
|
|||
},
|
||||
{
|
||||
"render": {
|
||||
"en": "{seats} seats",
|
||||
"de": "Die Sitzbank hat {seats} Sitzplätze",
|
||||
"en": "This bench has {seats} seats",
|
||||
"de": "Diese Sitzbank hat {seats} Sitzplätze",
|
||||
"fr": "{seats} places",
|
||||
"nl": "{seats} zitplaatsen",
|
||||
"es": "{seats} asientos",
|
||||
|
@ -882,7 +882,7 @@
|
|||
"bench-questions"
|
||||
],
|
||||
"render": {
|
||||
"en": "This bench does have the following inscription:<br/><p><i>{inscription}</i></p>",
|
||||
"en": "This bench has the following inscription:<br/><p><i>{inscription}</i></p>",
|
||||
"nl": "Deze bank heeft een inscriptie: <br/><p><i>{inscription}</i></p>",
|
||||
"de": "Diese Bank hat folgende Inschrift:<br/><p><i>{inscription}</i></p>",
|
||||
"fr": "Ce banc a l'inscription suivante :<br/><p><i>{inscription}</i></p>",
|
||||
|
@ -931,7 +931,7 @@
|
|||
{
|
||||
"if": "inscription=",
|
||||
"then": {
|
||||
"en": "This bench does <span class='subtle'>(probably)</span> not have an inscription",
|
||||
"en": "This bench <span class='subtle'>(probably)</span> does not not have an inscription",
|
||||
"nl": "Deze bank heeft <span class='subtle'>(waarschijnlijk)</span> geen inscriptie",
|
||||
"de": "Diese Bank hat <span class='subtle'>(wahrscheinlich)</span> keine Inschrift",
|
||||
"fr": "Ce banc n'a <span class='subtle'>(probablement)</span> pas d'inscription",
|
||||
|
|
|
@ -998,6 +998,16 @@
|
|||
"weeks",
|
||||
"months"
|
||||
]
|
||||
},
|
||||
"charge": {
|
||||
"quantity": "duration",
|
||||
"inverted": true,
|
||||
"denominations": [
|
||||
"days",
|
||||
"weeks",
|
||||
"months",
|
||||
"years"
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
|
|
|
@ -5,12 +5,7 @@
|
|||
"nl": "Oplaadpunten",
|
||||
"de": "Ladestationen"
|
||||
},
|
||||
"description": {
|
||||
"en": "A charging station",
|
||||
"nl": "Oplaadpunten",
|
||||
"ca": "Una estació de càrrega",
|
||||
"de": "Eine Ladestation"
|
||||
},
|
||||
"minzoom": 10,
|
||||
"source": {
|
||||
"osmTags": {
|
||||
"and": [
|
||||
|
@ -25,7 +20,6 @@
|
|||
]
|
||||
}
|
||||
},
|
||||
"minzoom": 10,
|
||||
"title": {
|
||||
"render": {
|
||||
"en": "Charging station",
|
||||
|
@ -71,103 +65,13 @@
|
|||
}
|
||||
]
|
||||
},
|
||||
"pointRendering": [
|
||||
{
|
||||
"location": [
|
||||
"point",
|
||||
"centroid"
|
||||
],
|
||||
"marker": [
|
||||
{
|
||||
"icon": "pin",
|
||||
"color": "#fff"
|
||||
},
|
||||
{
|
||||
"icon": {
|
||||
"render": "./assets/themes/charging_stations/plug.svg",
|
||||
"mappings": [
|
||||
{
|
||||
"if": "bicycle=yes",
|
||||
"then": "./assets/themes/charging_stations/bicycle.svg"
|
||||
},
|
||||
{
|
||||
"if": {
|
||||
"or": [
|
||||
"car=yes",
|
||||
"motorcar=yes"
|
||||
]
|
||||
},
|
||||
"then": "./assets/themes/charging_stations/car.svg"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
],
|
||||
"iconBadges": [
|
||||
{
|
||||
"if": {
|
||||
"or": [
|
||||
"disused:amenity=charging_station",
|
||||
"operational_status=broken"
|
||||
]
|
||||
},
|
||||
"then": "close:#c22;"
|
||||
},
|
||||
{
|
||||
"if": {
|
||||
"or": [
|
||||
"proposed:amenity=charging_station",
|
||||
"planned:amenity=charging_station"
|
||||
]
|
||||
},
|
||||
"then": "./assets/layers/charging_station/under_construction.svg"
|
||||
},
|
||||
{
|
||||
"if": {
|
||||
"and": [
|
||||
"bicycle=yes",
|
||||
{
|
||||
"or": [
|
||||
"motorcar=yes",
|
||||
"car=yes"
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
"then": "circle:#fff;./assets/themes/charging_stations/car.svg"
|
||||
}
|
||||
],
|
||||
"anchor": "bottom",
|
||||
"iconSize": "50,50"
|
||||
}
|
||||
],
|
||||
"lineRendering": [],
|
||||
"presets": [
|
||||
{
|
||||
"tags": [
|
||||
"amenity=charging_station",
|
||||
"motorcar=no",
|
||||
"bicycle=yes"
|
||||
],
|
||||
"title": {
|
||||
"en": "charging station for electrical bikes",
|
||||
"nl": "oplaadpunt voor elektrische fietsen",
|
||||
"de": "Ladestation für Elektrofahrräder"
|
||||
}
|
||||
},
|
||||
{
|
||||
"tags": [
|
||||
"amenity=charging_station",
|
||||
"motorcar=yes",
|
||||
"bicycle=no"
|
||||
],
|
||||
"title": {
|
||||
"en": "charging station for cars",
|
||||
"nl": "oplaadstation voor elektrische auto's",
|
||||
"de": "Ladestation für Autos"
|
||||
}
|
||||
}
|
||||
],
|
||||
"description": {
|
||||
"en": "A charging station",
|
||||
"nl": "Oplaadpunten",
|
||||
"ca": "Una estació de càrrega",
|
||||
"de": "Eine Ladestation"
|
||||
},
|
||||
"#": "no-question-hint-check",
|
||||
"tagRenderings": [
|
||||
"images",
|
||||
{
|
||||
|
@ -2509,6 +2413,103 @@
|
|||
}
|
||||
}
|
||||
],
|
||||
"lineRendering": [],
|
||||
"pointRendering": [
|
||||
{
|
||||
"location": [
|
||||
"point",
|
||||
"centroid"
|
||||
],
|
||||
"marker": [
|
||||
{
|
||||
"icon": "pin",
|
||||
"color": "#fff"
|
||||
},
|
||||
{
|
||||
"icon": {
|
||||
"render": "./assets/themes/charging_stations/plug.svg",
|
||||
"mappings": [
|
||||
{
|
||||
"if": "bicycle=yes",
|
||||
"then": "./assets/themes/charging_stations/bicycle.svg"
|
||||
},
|
||||
{
|
||||
"if": {
|
||||
"or": [
|
||||
"car=yes",
|
||||
"motorcar=yes"
|
||||
]
|
||||
},
|
||||
"then": "./assets/themes/charging_stations/car.svg"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
],
|
||||
"iconBadges": [
|
||||
{
|
||||
"if": {
|
||||
"or": [
|
||||
"disused:amenity=charging_station",
|
||||
"operational_status=broken"
|
||||
]
|
||||
},
|
||||
"then": "close:#c22;"
|
||||
},
|
||||
{
|
||||
"if": {
|
||||
"or": [
|
||||
"proposed:amenity=charging_station",
|
||||
"planned:amenity=charging_station"
|
||||
]
|
||||
},
|
||||
"then": "./assets/layers/charging_station/under_construction.svg"
|
||||
},
|
||||
{
|
||||
"if": {
|
||||
"and": [
|
||||
"bicycle=yes",
|
||||
{
|
||||
"or": [
|
||||
"motorcar=yes",
|
||||
"car=yes"
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
"then": "circle:#fff;./assets/themes/charging_stations/car.svg"
|
||||
}
|
||||
],
|
||||
"anchor": "bottom",
|
||||
"iconSize": "50,50"
|
||||
}
|
||||
],
|
||||
"presets": [
|
||||
{
|
||||
"tags": [
|
||||
"amenity=charging_station",
|
||||
"motorcar=no",
|
||||
"bicycle=yes"
|
||||
],
|
||||
"title": {
|
||||
"en": "charging station for electrical bikes",
|
||||
"nl": "oplaadpunt voor elektrische fietsen",
|
||||
"de": "Ladestation für Elektrofahrräder"
|
||||
}
|
||||
},
|
||||
{
|
||||
"tags": [
|
||||
"amenity=charging_station",
|
||||
"motorcar=yes",
|
||||
"bicycle=no"
|
||||
],
|
||||
"title": {
|
||||
"en": "charging station for cars",
|
||||
"nl": "oplaadstation voor elektrische auto's",
|
||||
"de": "Ladestation für Autos"
|
||||
}
|
||||
}
|
||||
],
|
||||
"filter": [
|
||||
{
|
||||
"id": "vehicle-type",
|
||||
|
@ -2714,19 +2715,6 @@
|
|||
]
|
||||
}
|
||||
],
|
||||
"deletion": {
|
||||
"softDeletionTags": {
|
||||
"and": [
|
||||
"amenity=",
|
||||
"disused:amenity=charging_station"
|
||||
]
|
||||
},
|
||||
"neededChangesets": 10
|
||||
},
|
||||
"allowMove": {
|
||||
"enableRelocation": false,
|
||||
"enableImproveAccuracy": true
|
||||
},
|
||||
"units": [
|
||||
{
|
||||
"maxstay": {
|
||||
|
@ -2885,5 +2873,17 @@
|
|||
}
|
||||
}
|
||||
],
|
||||
"#": "no-question-hint-check"
|
||||
}
|
||||
"allowMove": {
|
||||
"enableRelocation": false,
|
||||
"enableImproveAccuracy": true
|
||||
},
|
||||
"deletion": {
|
||||
"softDeletionTags": {
|
||||
"and": [
|
||||
"amenity=",
|
||||
"disused:amenity=charging_station"
|
||||
]
|
||||
},
|
||||
"neededChangesets": 10
|
||||
}
|
||||
}
|
|
@ -3,14 +3,17 @@
|
|||
"title": {
|
||||
"en": "Changes made with MapComplete"
|
||||
},
|
||||
"description": {
|
||||
"en": "This maps shows all the changes made with MapComplete"
|
||||
},
|
||||
"shortDescription": {
|
||||
"en": "Shows changes made by MapComplete"
|
||||
},
|
||||
"description": {
|
||||
"en": "This maps shows all the changes made with MapComplete"
|
||||
},
|
||||
"icon": "./assets/svg/logo.svg",
|
||||
"hideFromOverview": true,
|
||||
"startLat": 0,
|
||||
"startLon": 0,
|
||||
"startZoom": 1,
|
||||
"layers": [
|
||||
{
|
||||
"id": "mapcomplete-changes",
|
||||
|
|
|
@ -9225,4 +9225,4 @@
|
|||
"render": "Turbina eòlica"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -9481,4 +9481,4 @@
|
|||
"render": "větrná turbína"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2713,4 +2713,4 @@
|
|||
"render": "vindmølle"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -845,10 +845,10 @@
|
|||
"then": "Diese Bank ist zweiseitig und teilt sich die Rückenlehne"
|
||||
},
|
||||
"1": {
|
||||
"then": "Die Sitzbank hat eine Rückenlehne"
|
||||
"then": "Diese Sitzbank hat eine Rückenlehne"
|
||||
},
|
||||
"2": {
|
||||
"then": "Die Sitzbank hat <b>keine</b> Rückenlehne"
|
||||
"then": "Diese Sitzbank hat <b>keine</b> Rückenlehne"
|
||||
}
|
||||
},
|
||||
"question": "Hat diese Sitzbank eine Rückenlehne?"
|
||||
|
@ -942,7 +942,7 @@
|
|||
}
|
||||
},
|
||||
"question": "Wie viele Sitzplätze hat diese Bank?",
|
||||
"render": "Die Sitzbank hat {seats} Sitzplätze"
|
||||
"render": "Diese Sitzbank hat {seats} Sitzplätze"
|
||||
},
|
||||
"bench-survey:date": {
|
||||
"mappings": {
|
||||
|
|
|
@ -393,27 +393,6 @@
|
|||
}
|
||||
},
|
||||
"question": "What is the purpose of the animal shelter?"
|
||||
},
|
||||
"boarded_animals": {
|
||||
"mappings": {
|
||||
"0": {
|
||||
"then": "Dogs are kept here"
|
||||
},
|
||||
"1": {
|
||||
"then": "Cats are kept here"
|
||||
},
|
||||
"2": {
|
||||
"then": "Horses are kept here"
|
||||
},
|
||||
"3": {
|
||||
"then": "Birds are kept here"
|
||||
},
|
||||
"4": {
|
||||
"then": "Wild animals are kept here"
|
||||
}
|
||||
},
|
||||
"question": "Which animals are accepted here?",
|
||||
"render": "{animal_shelter} is kept here"
|
||||
}
|
||||
},
|
||||
"title": {
|
||||
|
@ -866,10 +845,10 @@
|
|||
"then": "This bench is two-sided and shares the backrest"
|
||||
},
|
||||
"1": {
|
||||
"then": "Does have a backrest"
|
||||
"then": "This bench does have a backrest"
|
||||
},
|
||||
"2": {
|
||||
"then": "Does <b>not</b> have a backrest"
|
||||
"then": "This bench does <b>not</b> have a backrest"
|
||||
}
|
||||
},
|
||||
"question": "Does this bench have a backrest?"
|
||||
|
@ -914,12 +893,12 @@
|
|||
"then": "This bench does not have an inscription"
|
||||
},
|
||||
"1": {
|
||||
"then": "This bench does <span class='subtle'>(probably)</span> not have an inscription"
|
||||
"then": "This bench <span class='subtle'>(probably)</span> does not not have an inscription"
|
||||
}
|
||||
},
|
||||
"question": "Does this bench have an inscription?",
|
||||
"questionHint": "E.g. on a mounted plaque, in the backrest, …",
|
||||
"render": "This bench does have the following inscription:<br/><p><i>{inscription}</i></p>"
|
||||
"render": "This bench has the following inscription:<br/><p><i>{inscription}</i></p>"
|
||||
},
|
||||
"bench-material": {
|
||||
"mappings": {
|
||||
|
@ -963,7 +942,7 @@
|
|||
}
|
||||
},
|
||||
"question": "How many seats does this bench have?",
|
||||
"render": "{seats} seats"
|
||||
"render": "This bench has {seats} seats"
|
||||
},
|
||||
"bench-survey:date": {
|
||||
"mappings": {
|
||||
|
@ -1511,18 +1490,10 @@
|
|||
},
|
||||
"question": "Are these bicycle parkings free to use?"
|
||||
},
|
||||
"maxstay": {
|
||||
"question": "What is the maximum allowed parking duration?",
|
||||
"questionHint": "If the bicycle is parked for a longer amount, it might be removed by the operator",
|
||||
"render": "A bike can be parked here for at most {canonical(maxstay)}"
|
||||
},
|
||||
"operator": {
|
||||
"question": "Who maintains this bicycle parking?",
|
||||
"render": "This bicycle parking is maintained by {operator}"
|
||||
},
|
||||
"operator_email": {
|
||||
"question": "What is the email address of the operator of this bicycle parking?"
|
||||
},
|
||||
"operator_phone": {
|
||||
"question": "What is the phone number of the operator of this bicycle parking?",
|
||||
"questionHint": "One might be able to call this number in case of problems, e.g. to remove unmaintained bicycles"
|
||||
|
@ -2190,9 +2161,6 @@
|
|||
},
|
||||
"16": {
|
||||
"question": "Has a <div style='display: inline-block'><b><b>Bosch Active Connect with 5 pins</b> and cable</b> <img style='width:1rem; display: inline-block' src='./assets/layers/charging_station/bosch-5pin.svg'/></div> connector"
|
||||
},
|
||||
"17": {
|
||||
"question": "Has a <div style='display: inline-block'><b><b>BS1363</b> (Type G)</b> <img style='width:1rem; display: inline-block' src='./assets/layers/charging_station/bs1363.svg'/></div> connector"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -2337,12 +2305,6 @@
|
|||
},
|
||||
"31": {
|
||||
"then": "<b>Bosch Active Connect with 5 pins</b> and cable"
|
||||
},
|
||||
"32": {
|
||||
"then": "<b>BS1363</b> (Type G)"
|
||||
},
|
||||
"33": {
|
||||
"then": "<b>BS1363</b> (Type G)"
|
||||
}
|
||||
},
|
||||
"question": "Which charging connections are available here?"
|
||||
|
@ -2577,9 +2539,6 @@
|
|||
},
|
||||
"15": {
|
||||
"2": "<b>Bosch Active Connect with 5 pins</b> and cable"
|
||||
},
|
||||
"16": {
|
||||
"2": "<b>BS1363</b> (Type G)"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -5154,22 +5113,6 @@
|
|||
"render": "Restaurant"
|
||||
}
|
||||
},
|
||||
"food_courts": {
|
||||
"description": "Food courts with a variety of food options.",
|
||||
"name": "Food Courts",
|
||||
"tagRenderings": {
|
||||
"name": {
|
||||
"freeform": {
|
||||
"placeholder": "Name of the food court"
|
||||
},
|
||||
"question": "What is the name of this food court?",
|
||||
"render": "This food court is called <b>{name}</b>."
|
||||
}
|
||||
},
|
||||
"title": {
|
||||
"render": "Food Court"
|
||||
}
|
||||
},
|
||||
"ghost_bike": {
|
||||
"description": "A layer showing memorials for cyclists, killed in road accidents",
|
||||
"name": "Ghost bikes",
|
||||
|
@ -6682,74 +6625,6 @@
|
|||
"render": "OSM Community Index"
|
||||
}
|
||||
},
|
||||
"outdoor_seating": {
|
||||
"description": "Outdoor seating areas, usually located near cafes and restaurants.",
|
||||
"name": "Outdoor Seating",
|
||||
"tagRenderings": {
|
||||
"access": {
|
||||
"mappings": {
|
||||
"0": {
|
||||
"then": "Anyone can use this outdoor seating area."
|
||||
},
|
||||
"1": {
|
||||
"then": "Only customers can use this outdoor seating area."
|
||||
},
|
||||
"2": {
|
||||
"then": "This outdoor seating area is private."
|
||||
}
|
||||
},
|
||||
"question": "Who can use this outdoor seating area?"
|
||||
},
|
||||
"covered": {
|
||||
"mappings": {
|
||||
"0": {
|
||||
"then": "This outdoor seating area is covered."
|
||||
},
|
||||
"1": {
|
||||
"then": "This outdoor seating area is not covered."
|
||||
}
|
||||
},
|
||||
"question": "Is this outdoor seating area covered?"
|
||||
},
|
||||
"heating": {
|
||||
"mappings": {
|
||||
"0": {
|
||||
"then": "This outdoor seating area is heated."
|
||||
},
|
||||
"1": {
|
||||
"then": "This outdoor seating area is not heated."
|
||||
}
|
||||
},
|
||||
"question": "Is this outdoor seating area heated?"
|
||||
},
|
||||
"seasonal": {
|
||||
"mappings": {
|
||||
"0": {
|
||||
"then": "This outdoor seating area is available all year round."
|
||||
},
|
||||
"1": {
|
||||
"then": "This outdoor seating area is available in spring."
|
||||
},
|
||||
"2": {
|
||||
"then": "This outdoor seating area is available in summer."
|
||||
},
|
||||
"3": {
|
||||
"then": "This outdoor seating area is available in autumn."
|
||||
},
|
||||
"4": {
|
||||
"then": "This outdoor seating area is available in winter."
|
||||
},
|
||||
"5": {
|
||||
"then": "This outdoor seating area is available in the dry season."
|
||||
}
|
||||
},
|
||||
"question": "Is this outdoor seating area seasonal?"
|
||||
}
|
||||
},
|
||||
"title": {
|
||||
"render": "Outdoor Seating area"
|
||||
}
|
||||
},
|
||||
"parcel_lockers": {
|
||||
"description": "Layer showing parcel lockers for collecting and sending parcels.",
|
||||
"name": "Parcel Lockers",
|
||||
|
@ -9068,10 +8943,6 @@
|
|||
}
|
||||
},
|
||||
"tagRenderings": {
|
||||
"camera_direction": {
|
||||
"question": "In which geographical direction does this camera film?",
|
||||
"render": "Films to a compass heading of {direction}"
|
||||
},
|
||||
"maxspeed": {
|
||||
"freeform": {
|
||||
"placeholder": "Maximum speed allowed"
|
||||
|
@ -11395,4 +11266,4 @@
|
|||
"render": "wind turbine"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -275,4 +275,4 @@
|
|||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -4884,4 +4884,4 @@
|
|||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -289,4 +289,4 @@
|
|||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -126,4 +126,4 @@
|
|||
"render": "Asetukset"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -135,4 +135,4 @@
|
|||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -394,4 +394,4 @@
|
|||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -484,4 +484,4 @@
|
|||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -968,4 +968,4 @@
|
|||
"render": "szélerőmű"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -942,4 +942,4 @@
|
|||
"render": "turbin angin"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -3102,4 +3102,4 @@
|
|||
"render": "pala eolica"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -642,4 +642,4 @@
|
|||
"render": "店"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -847,4 +847,4 @@
|
|||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1227,18 +1227,10 @@
|
|||
},
|
||||
"question": "Is deze fietsenstalling gratis te gebruiken?"
|
||||
},
|
||||
"maxstay": {
|
||||
"question": "Wat is de toegestane, maximale parkeerduur?",
|
||||
"questionHint": "Indien een fiets langer geparkeerd staat, kan deze verwijderd worden door de beheerder",
|
||||
"render": "Een fiets mag hier maximaal {canonical(maxstay)} parkeren"
|
||||
},
|
||||
"operator": {
|
||||
"question": "Wie beheert deze fietsenstalling?",
|
||||
"render": "Deze fietsenstalling wordt beheerd door {operator}"
|
||||
},
|
||||
"operator_email": {
|
||||
"question": "Wat is het emailadres van de beheerder van deze parking?"
|
||||
},
|
||||
"operator_phone": {
|
||||
"question": "Wat is het telefoonnummer van de operator van deze fietsenstalling?",
|
||||
"questionHint": "Men kan dit nummer bellen om bv. fietswrakken of defecten te melden"
|
||||
|
@ -1882,9 +1874,6 @@
|
|||
},
|
||||
"16": {
|
||||
"question": "Heeft een <div style='display: inline-block'><b><b>Bosch Active Connect met 5 pinnen</b> aan een kabel</b> <img style='width:1rem; display: inline-block' src='./assets/layers/charging_station/bosch-5pin.svg'/></div>"
|
||||
},
|
||||
"17": {
|
||||
"question": "Heeft een <div style='display: inline-block'><b><b>BS1363</b> (VK 3-pin)</b> <img style='width:1rem; display: inline-block' src='./assets/layers/charging_station/bs1363.svg'/></div>"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -2029,12 +2018,6 @@
|
|||
},
|
||||
"31": {
|
||||
"then": "<b>Bosch Active Connect met 5 pinnen</b> aan een kabel"
|
||||
},
|
||||
"32": {
|
||||
"then": "<b>BS1363</b> (VK 3-pin)"
|
||||
},
|
||||
"33": {
|
||||
"then": "<b>BS1363</b> (VK 3-pin)"
|
||||
}
|
||||
},
|
||||
"question": "Welke aansluitingen zijn hier beschikbaar?"
|
||||
|
@ -2269,9 +2252,6 @@
|
|||
},
|
||||
"15": {
|
||||
"2": "<b>Bosch Active Connect met 5 pinnen</b> aan een kabel"
|
||||
},
|
||||
"16": {
|
||||
"2": "<b>BS1363</b> (VK 3-pin)"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -7349,10 +7329,6 @@
|
|||
}
|
||||
},
|
||||
"tagRenderings": {
|
||||
"camera_direction": {
|
||||
"question": "In welke geografische richting filmt deze camera?",
|
||||
"render": "Filmt in kompasrichting {direction}"
|
||||
},
|
||||
"maxspeed": {
|
||||
"freeform": {
|
||||
"placeholder": "Maximum toegestane snelheid"
|
||||
|
@ -9433,4 +9409,4 @@
|
|||
"render": "windturbine"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -293,4 +293,4 @@
|
|||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2718,4 +2718,4 @@
|
|||
"render": "turbina wiatrowa"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1925,4 +1925,4 @@
|
|||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1589,4 +1589,4 @@
|
|||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1970,4 +1970,4 @@
|
|||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -463,4 +463,4 @@
|
|||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -137,4 +137,4 @@
|
|||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -6,4 +6,4 @@
|
|||
"artwork": {
|
||||
"description": "ⵢⴰⵜ ⵜⴽⴰⵕⴹⴰ ⵉⵕⵥⵎⵏ ⵅⴼ ⵉⵙⴼⵔⵉⵙⵏ, ⵉⵖⵔⴰⵙⵏ ⴷ ⵜⵡⵓⵔⵉⵡⵉⵏ ⵜⵉⵏⴰⵥⵓⵕⵉⵏ ⵢⴰⴹⵏⵉⵏ ⴳ ⵓⵎⴰⴹⴰⵍ"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -627,4 +627,4 @@
|
|||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -856,4 +856,4 @@
|
|||
"render": "風機"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -899,6 +899,33 @@
|
|||
"onwheels": {
|
||||
"description": "En aquest mapa, es mostren llocs públics accessibles per a cadira de rodes i es poden afegir fàcilment",
|
||||
"layers": {
|
||||
"19": {
|
||||
"override": {
|
||||
"=title": {
|
||||
"render": "Estadístiques"
|
||||
}
|
||||
}
|
||||
},
|
||||
"20": {
|
||||
"override": {
|
||||
"+tagRenderings": {
|
||||
"0": {
|
||||
"render": {
|
||||
"special": {
|
||||
"text": "Importar"
|
||||
}
|
||||
}
|
||||
},
|
||||
"1": {
|
||||
"render": {
|
||||
"special": {
|
||||
"message": "Afegiu totes les etiquetes suggerides"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"4": {
|
||||
"override": {
|
||||
"filter": {
|
||||
|
@ -941,33 +968,6 @@
|
|||
"override": {
|
||||
"name": "Places d'aparcament per a minusvàlids"
|
||||
}
|
||||
},
|
||||
"19": {
|
||||
"override": {
|
||||
"=title": {
|
||||
"render": "Estadístiques"
|
||||
}
|
||||
}
|
||||
},
|
||||
"20": {
|
||||
"override": {
|
||||
"+tagRenderings": {
|
||||
"0": {
|
||||
"render": {
|
||||
"special": {
|
||||
"text": "Importar"
|
||||
}
|
||||
}
|
||||
},
|
||||
"1": {
|
||||
"render": {
|
||||
"special": {
|
||||
"message": "Afegiu totes les etiquetes suggerides"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"title": "Sobre rodes"
|
||||
|
@ -1128,10 +1128,6 @@
|
|||
"stations": {
|
||||
"description": "Veure, editar i afegir detalls a una estació de tren",
|
||||
"layers": {
|
||||
"3": {
|
||||
"description": "Capa que mostra les estacions de tren",
|
||||
"name": "Estació de tren"
|
||||
},
|
||||
"16": {
|
||||
"description": "Pantalles que mostren els trens que sortiran de l'estació",
|
||||
"name": "Taulers de sortides",
|
||||
|
@ -1163,6 +1159,10 @@
|
|||
"title": {
|
||||
"render": "Tauler de sortides"
|
||||
}
|
||||
},
|
||||
"3": {
|
||||
"description": "Capa que mostra les estacions de tren",
|
||||
"name": "Estació de tren"
|
||||
}
|
||||
},
|
||||
"title": "Estacions de tren"
|
||||
|
@ -1284,4 +1284,4 @@
|
|||
"shortDescription": "Un mapa amb papereres",
|
||||
"title": "Papepera"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -906,6 +906,33 @@
|
|||
"onwheels": {
|
||||
"description": "Na této mapě jsou zobrazena veřejně přístupná místa pro vozíčkáře, a lze je také snadno přidat",
|
||||
"layers": {
|
||||
"19": {
|
||||
"override": {
|
||||
"=title": {
|
||||
"render": "Statistiky"
|
||||
}
|
||||
}
|
||||
},
|
||||
"20": {
|
||||
"override": {
|
||||
"+tagRenderings": {
|
||||
"0": {
|
||||
"render": {
|
||||
"special": {
|
||||
"text": "Dovoz"
|
||||
}
|
||||
}
|
||||
},
|
||||
"1": {
|
||||
"render": {
|
||||
"special": {
|
||||
"message": "Přidat všechny navrhované značky"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"4": {
|
||||
"override": {
|
||||
"filter": {
|
||||
|
@ -948,33 +975,6 @@
|
|||
"override": {
|
||||
"name": "Parkovací místa pro osoby se zdravotním postižením"
|
||||
}
|
||||
},
|
||||
"19": {
|
||||
"override": {
|
||||
"=title": {
|
||||
"render": "Statistiky"
|
||||
}
|
||||
}
|
||||
},
|
||||
"20": {
|
||||
"override": {
|
||||
"+tagRenderings": {
|
||||
"0": {
|
||||
"render": {
|
||||
"special": {
|
||||
"text": "Dovoz"
|
||||
}
|
||||
}
|
||||
},
|
||||
"1": {
|
||||
"render": {
|
||||
"special": {
|
||||
"message": "Přidat všechny navrhované značky"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"title": "Na kolečkách"
|
||||
|
@ -1135,10 +1135,6 @@
|
|||
"stations": {
|
||||
"description": "Zobrazení, úprava a přidání podrobností o vlakovém nádraží",
|
||||
"layers": {
|
||||
"3": {
|
||||
"description": "Vrstva zobrazující vlaková nádraží",
|
||||
"name": "Vlaková nádraží"
|
||||
},
|
||||
"16": {
|
||||
"description": "Zobrazuje vlaky odjíždějící z této stanice",
|
||||
"name": "Odjezdové tabule",
|
||||
|
@ -1170,6 +1166,10 @@
|
|||
"title": {
|
||||
"render": "Odjezdová tabule"
|
||||
}
|
||||
},
|
||||
"3": {
|
||||
"description": "Vrstva zobrazující vlaková nádraží",
|
||||
"name": "Vlaková nádraží"
|
||||
}
|
||||
},
|
||||
"title": "Vlaková nádraží"
|
||||
|
@ -1306,4 +1306,4 @@
|
|||
"shortDescription": "Mapa odpadkových košů",
|
||||
"title": "Odpadkový koš"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -631,6 +631,33 @@
|
|||
"onwheels": {
|
||||
"description": "På dette kort vises steder, der er offentligt tilgængelige for kørestolsbrugere, og de kan nemt tilføjes",
|
||||
"layers": {
|
||||
"19": {
|
||||
"override": {
|
||||
"=title": {
|
||||
"render": "Statistikker"
|
||||
}
|
||||
}
|
||||
},
|
||||
"20": {
|
||||
"override": {
|
||||
"+tagRenderings": {
|
||||
"0": {
|
||||
"render": {
|
||||
"special": {
|
||||
"text": "Importere"
|
||||
}
|
||||
}
|
||||
},
|
||||
"1": {
|
||||
"render": {
|
||||
"special": {
|
||||
"message": "Tilføj alle de foreslåede tags"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"4": {
|
||||
"override": {
|
||||
"filter": {
|
||||
|
@ -668,33 +695,6 @@
|
|||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"19": {
|
||||
"override": {
|
||||
"=title": {
|
||||
"render": "Statistikker"
|
||||
}
|
||||
}
|
||||
},
|
||||
"20": {
|
||||
"override": {
|
||||
"+tagRenderings": {
|
||||
"0": {
|
||||
"render": {
|
||||
"special": {
|
||||
"text": "Importere"
|
||||
}
|
||||
}
|
||||
},
|
||||
"1": {
|
||||
"render": {
|
||||
"special": {
|
||||
"message": "Tilføj alle de foreslåede tags"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -915,4 +915,4 @@
|
|||
"shortDescription": "Et kort med affaldskurve",
|
||||
"title": "Affaldskurv"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -975,6 +975,133 @@
|
|||
},
|
||||
"title": "Bordsteine und Überwege"
|
||||
},
|
||||
"mapcomplete-changes": {
|
||||
"description": "Diese Karte zeigt alle mit MapComplete vorgenommenen Änderungen",
|
||||
"layers": {
|
||||
"0": {
|
||||
"description": "Alle MapComplete-Änderungen anzeigen",
|
||||
"filter": {
|
||||
"0": {
|
||||
"options": {
|
||||
"0": {
|
||||
"question": "Themenname enthält {search}"
|
||||
}
|
||||
}
|
||||
},
|
||||
"1": {
|
||||
"options": {
|
||||
"0": {
|
||||
"question": "Themename enthält <b>not</b> {search}"
|
||||
}
|
||||
}
|
||||
},
|
||||
"10": {
|
||||
"options": {
|
||||
"0": {
|
||||
"question": "Etymologie-Thema ausschließen"
|
||||
}
|
||||
}
|
||||
},
|
||||
"2": {
|
||||
"options": {
|
||||
"0": {
|
||||
"question": "Erstellt vom Mitwirkenden {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": "Änderungssatz hat mindestens ein Bild hinzugefügt"
|
||||
}
|
||||
}
|
||||
},
|
||||
"9": {
|
||||
"options": {
|
||||
"0": {
|
||||
"question": "GRB-Thema ausschließen"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"name": "Zentrum der Änderungssätze",
|
||||
"tagRenderings": {
|
||||
"contributor": {
|
||||
"question": "Welcher Mitwirkende hat diese Änderung vorgenommen?",
|
||||
"render": "Änderung vorgenommen von <a href='https://openstreetmap.org/user/{user}' target='_blank'>{user}</a>"
|
||||
},
|
||||
"host": {
|
||||
"question": "Über welchen Host (Webseite) wurde diese Änderung vorgenommen?",
|
||||
"render": "Änderung über <a href='{host}'>{host}</a>"
|
||||
},
|
||||
"locale": {
|
||||
"question": "In welcher Benutzersprache wurde die Änderung vorgenommen?",
|
||||
"render": "Benutzersprache {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 die Änderung verwendet?",
|
||||
"render": "Geändert mit Thema <a href='https://mapcomplete.osm.be/{theme}'>{theme}</a>"
|
||||
},
|
||||
"version": {
|
||||
"question": "Mit welcher MapComplete Version wurde die Änderung vorgenommen?",
|
||||
"render": "Erstellt mit {editor}"
|
||||
}
|
||||
},
|
||||
"title": {
|
||||
"render": "Änderungssatz für {theme}"
|
||||
}
|
||||
},
|
||||
"1": {
|
||||
"override": {
|
||||
"tagRenderings+": {
|
||||
"0": {
|
||||
"render": "Weitere Statistiken gibt es <a href='https://github.com/pietervdvn/MapComplete/tree/develop/Docs/Tools/graphs' target='_blank'>hier</a>"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"shortDescription": "Änderungen von MapComplete anzeigen",
|
||||
"title": "Änderungen mit MapComplete"
|
||||
},
|
||||
"maproulette": {
|
||||
"description": "Thema mit MapRoulette-Aufgaben, die Sie suchen, filtern und beheben können.",
|
||||
"title": "MapRoulette-Aufgaben"
|
||||
|
@ -1010,6 +1137,33 @@
|
|||
"onwheels": {
|
||||
"description": "Auf dieser Karte können Sie öffentlich zugängliche Orte für Rollstuhlfahrer ansehen, bearbeiten oder hinzufügen",
|
||||
"layers": {
|
||||
"19": {
|
||||
"override": {
|
||||
"=title": {
|
||||
"render": "Statistik"
|
||||
}
|
||||
}
|
||||
},
|
||||
"20": {
|
||||
"override": {
|
||||
"+tagRenderings": {
|
||||
"0": {
|
||||
"render": {
|
||||
"special": {
|
||||
"text": "Import"
|
||||
}
|
||||
}
|
||||
},
|
||||
"1": {
|
||||
"render": {
|
||||
"special": {
|
||||
"message": "Alle vorgeschlagenen Tags hinzufügen"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"4": {
|
||||
"override": {
|
||||
"filter": {
|
||||
|
@ -1052,33 +1206,6 @@
|
|||
"override": {
|
||||
"name": "Barrierefreie Parkplätze"
|
||||
}
|
||||
},
|
||||
"19": {
|
||||
"override": {
|
||||
"=title": {
|
||||
"render": "Statistik"
|
||||
}
|
||||
}
|
||||
},
|
||||
"20": {
|
||||
"override": {
|
||||
"+tagRenderings": {
|
||||
"0": {
|
||||
"render": {
|
||||
"special": {
|
||||
"text": "Import"
|
||||
}
|
||||
}
|
||||
},
|
||||
"1": {
|
||||
"render": {
|
||||
"special": {
|
||||
"message": "Alle vorgeschlagenen Tags hinzufügen"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"title": "Auf Rädern"
|
||||
|
@ -1320,10 +1447,6 @@
|
|||
"stations": {
|
||||
"description": "Bahnhofsdetails ansehen, bearbeiten und hinzufügen",
|
||||
"layers": {
|
||||
"3": {
|
||||
"description": "Ebene mit Bahnhöfen",
|
||||
"name": "Bahnhöfe"
|
||||
},
|
||||
"16": {
|
||||
"description": "Anzeigen der Züge, die von diesem Bahnhof abfahren",
|
||||
"name": "Abfahrtstafeln",
|
||||
|
@ -1355,6 +1478,10 @@
|
|||
"title": {
|
||||
"render": "Abfahrtstafel"
|
||||
}
|
||||
},
|
||||
"3": {
|
||||
"description": "Ebene mit Bahnhöfen",
|
||||
"name": "Bahnhöfe"
|
||||
}
|
||||
},
|
||||
"title": "Bahnhöfe"
|
||||
|
|
|
@ -676,7 +676,7 @@
|
|||
},
|
||||
"5": {
|
||||
"override": {
|
||||
"=name": "Toursistic places without etymology information"
|
||||
"=name": "Touristic places without etymology information"
|
||||
}
|
||||
},
|
||||
"6": {
|
||||
|
@ -995,6 +995,13 @@
|
|||
}
|
||||
}
|
||||
},
|
||||
"10": {
|
||||
"options": {
|
||||
"0": {
|
||||
"question": "Exclude etymology theme"
|
||||
}
|
||||
}
|
||||
},
|
||||
"2": {
|
||||
"options": {
|
||||
"0": {
|
||||
|
@ -1050,13 +1057,6 @@
|
|||
"question": "Exclude GRB theme"
|
||||
}
|
||||
}
|
||||
},
|
||||
"10": {
|
||||
"options": {
|
||||
"0": {
|
||||
"question": "Exclude etymology theme"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"name": "Changeset centers",
|
||||
|
@ -1137,6 +1137,33 @@
|
|||
"onwheels": {
|
||||
"description": "On this map, publicly weelchair accessible places are shown and can be easily added",
|
||||
"layers": {
|
||||
"19": {
|
||||
"override": {
|
||||
"=title": {
|
||||
"render": "Statistics"
|
||||
}
|
||||
}
|
||||
},
|
||||
"20": {
|
||||
"override": {
|
||||
"+tagRenderings": {
|
||||
"0": {
|
||||
"render": {
|
||||
"special": {
|
||||
"text": "Import"
|
||||
}
|
||||
}
|
||||
},
|
||||
"1": {
|
||||
"render": {
|
||||
"special": {
|
||||
"message": "Add all the suggested tags"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"4": {
|
||||
"override": {
|
||||
"filter": {
|
||||
|
@ -1179,33 +1206,6 @@
|
|||
"override": {
|
||||
"name": "Disabled parking spaces"
|
||||
}
|
||||
},
|
||||
"19": {
|
||||
"override": {
|
||||
"=title": {
|
||||
"render": "Statistics"
|
||||
}
|
||||
}
|
||||
},
|
||||
"20": {
|
||||
"override": {
|
||||
"+tagRenderings": {
|
||||
"0": {
|
||||
"render": {
|
||||
"special": {
|
||||
"text": "Import"
|
||||
}
|
||||
}
|
||||
},
|
||||
"1": {
|
||||
"render": {
|
||||
"special": {
|
||||
"message": "Add all the suggested tags"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"title": "OnWheels"
|
||||
|
@ -1447,10 +1447,6 @@
|
|||
"stations": {
|
||||
"description": "View, edit and add details to a train station",
|
||||
"layers": {
|
||||
"3": {
|
||||
"description": "Layer showing train stations",
|
||||
"name": "Train Stations"
|
||||
},
|
||||
"16": {
|
||||
"description": "Displays showing the trains that will leave from this station",
|
||||
"name": "Departures boards",
|
||||
|
@ -1482,6 +1478,10 @@
|
|||
"title": {
|
||||
"render": "Departures board"
|
||||
}
|
||||
},
|
||||
"3": {
|
||||
"description": "Layer showing train stations",
|
||||
"name": "Train Stations"
|
||||
}
|
||||
},
|
||||
"title": "Train Stations"
|
||||
|
@ -1660,4 +1660,4 @@
|
|||
"shortDescription": "A map with waste baskets",
|
||||
"title": "Waste Baskets"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -956,6 +956,33 @@
|
|||
"onwheels": {
|
||||
"description": "En este mapa se muestran los lugares accesibles al público en silla de ruedas, que pueden añadirse fácilmente",
|
||||
"layers": {
|
||||
"19": {
|
||||
"override": {
|
||||
"=title": {
|
||||
"render": "Estadísticas"
|
||||
}
|
||||
}
|
||||
},
|
||||
"20": {
|
||||
"override": {
|
||||
"+tagRenderings": {
|
||||
"0": {
|
||||
"render": {
|
||||
"special": {
|
||||
"text": "Importar"
|
||||
}
|
||||
}
|
||||
},
|
||||
"1": {
|
||||
"render": {
|
||||
"special": {
|
||||
"message": "Añadir todas las etiquetas sugeridas"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"4": {
|
||||
"override": {
|
||||
"filter": {
|
||||
|
@ -998,33 +1025,6 @@
|
|||
"override": {
|
||||
"name": "Plazas de aparcamiento para discapacitados"
|
||||
}
|
||||
},
|
||||
"19": {
|
||||
"override": {
|
||||
"=title": {
|
||||
"render": "Estadísticas"
|
||||
}
|
||||
}
|
||||
},
|
||||
"20": {
|
||||
"override": {
|
||||
"+tagRenderings": {
|
||||
"0": {
|
||||
"render": {
|
||||
"special": {
|
||||
"text": "Importar"
|
||||
}
|
||||
}
|
||||
},
|
||||
"1": {
|
||||
"render": {
|
||||
"special": {
|
||||
"message": "Añadir todas las etiquetas sugeridas"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"title": "Sobre ruedas"
|
||||
|
@ -1240,10 +1240,6 @@
|
|||
"stations": {
|
||||
"description": "Ver, editar y añadir detalles a una estación de tren",
|
||||
"layers": {
|
||||
"3": {
|
||||
"description": "Capa que muestra las estaciones de tren",
|
||||
"name": "Estación de Tren"
|
||||
},
|
||||
"16": {
|
||||
"description": "Pantallas que muestran los trenes que saldrán de esta estación",
|
||||
"name": "Tableros de salidas",
|
||||
|
@ -1275,6 +1271,10 @@
|
|||
"title": {
|
||||
"render": "Tablero de salidas"
|
||||
}
|
||||
},
|
||||
"3": {
|
||||
"description": "Capa que muestra las estaciones de tren",
|
||||
"name": "Estación de Tren"
|
||||
}
|
||||
},
|
||||
"title": "Estaciones de tren"
|
||||
|
@ -1453,4 +1453,4 @@
|
|||
"shortDescription": "Un mapa con papeleras",
|
||||
"title": "Papeleras"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -93,6 +93,9 @@
|
|||
"shortDescription": "Carte des bancs",
|
||||
"title": "Bancs"
|
||||
},
|
||||
"bicycle_parkings": {
|
||||
"title": "Stationnement vélo"
|
||||
},
|
||||
"bicycle_rental": {
|
||||
"description": "Vous trouverez sur cette carte toutes les stations de location de vélo telles qu'elles sont référencées dans OpenStreetMap",
|
||||
"shortDescription": "Une carte avec des stations et magasins de location de vélos",
|
||||
|
@ -861,6 +864,33 @@
|
|||
"onwheels": {
|
||||
"description": "Sur cette carte nous pouvons voir et ajouter les différents endroits publiques accessibles aux chaises roulantes",
|
||||
"layers": {
|
||||
"19": {
|
||||
"override": {
|
||||
"=title": {
|
||||
"render": "Statistiques"
|
||||
}
|
||||
}
|
||||
},
|
||||
"20": {
|
||||
"override": {
|
||||
"+tagRenderings": {
|
||||
"0": {
|
||||
"render": {
|
||||
"special": {
|
||||
"text": "Importation"
|
||||
}
|
||||
}
|
||||
},
|
||||
"1": {
|
||||
"render": {
|
||||
"special": {
|
||||
"message": "Ajouter tous les attributs suggérés"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"4": {
|
||||
"override": {
|
||||
"filter": {
|
||||
|
@ -903,33 +933,6 @@
|
|||
"override": {
|
||||
"name": "Places de stationnement pour personnes handicapées"
|
||||
}
|
||||
},
|
||||
"19": {
|
||||
"override": {
|
||||
"=title": {
|
||||
"render": "Statistiques"
|
||||
}
|
||||
}
|
||||
},
|
||||
"20": {
|
||||
"override": {
|
||||
"+tagRenderings": {
|
||||
"0": {
|
||||
"render": {
|
||||
"special": {
|
||||
"text": "Importation"
|
||||
}
|
||||
}
|
||||
},
|
||||
"1": {
|
||||
"render": {
|
||||
"special": {
|
||||
"message": "Ajouter tous les attributs suggérés"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"title": "OnWheels"
|
||||
|
@ -1090,10 +1093,6 @@
|
|||
"stations": {
|
||||
"description": "Voir, modifier et ajouter des détails à une gare ferroviaire",
|
||||
"layers": {
|
||||
"3": {
|
||||
"description": "Couche montrant les gares",
|
||||
"name": "Gares ferroviaires"
|
||||
},
|
||||
"16": {
|
||||
"description": "Panneau affichant les trains au départ depuis cette gare",
|
||||
"name": "Panneaux des départs",
|
||||
|
@ -1125,6 +1124,10 @@
|
|||
"title": {
|
||||
"render": "Tableau des départs"
|
||||
}
|
||||
},
|
||||
"3": {
|
||||
"description": "Couche montrant les gares",
|
||||
"name": "Gares ferroviaires"
|
||||
}
|
||||
},
|
||||
"title": "Gares ferroviaires"
|
||||
|
@ -1246,4 +1249,4 @@
|
|||
"shortDescription": "Une carte des poubelles",
|
||||
"title": "Poubelles"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -494,19 +494,6 @@
|
|||
},
|
||||
"onwheels": {
|
||||
"layers": {
|
||||
"4": {
|
||||
"override": {
|
||||
"filter": {
|
||||
"0": {
|
||||
"options": {
|
||||
"1": {
|
||||
"question": "Uten breddeinfo"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"19": {
|
||||
"override": {
|
||||
"=title": {
|
||||
|
@ -533,6 +520,19 @@
|
|||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"4": {
|
||||
"override": {
|
||||
"filter": {
|
||||
"0": {
|
||||
"options": {
|
||||
"1": {
|
||||
"question": "Uten breddeinfo"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"title": "På hjul"
|
||||
|
@ -626,10 +626,6 @@
|
|||
},
|
||||
"stations": {
|
||||
"layers": {
|
||||
"3": {
|
||||
"description": "Lag som viser togstasjoner",
|
||||
"name": "Togstasjoner"
|
||||
},
|
||||
"16": {
|
||||
"tagRenderings": {
|
||||
"type": {
|
||||
|
@ -640,6 +636,10 @@
|
|||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"3": {
|
||||
"description": "Lag som viser togstasjoner",
|
||||
"name": "Togstasjoner"
|
||||
}
|
||||
},
|
||||
"title": "Togstasjoner"
|
||||
|
@ -735,4 +735,4 @@
|
|||
"shortDescription": "Oversikt over søppelkurver",
|
||||
"title": "Søppelkurv"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -908,6 +908,33 @@
|
|||
"onwheels": {
|
||||
"description": "Op deze kaart kan je informatie rond rolstoeltoegankelijkheid zien, zoals toegangsdeuren met hun breedte en drempelhoogte, toiletten met toegankelijkheidsinformatie, recepties maar ook winkels, cafés en restaurants.",
|
||||
"layers": {
|
||||
"19": {
|
||||
"override": {
|
||||
"=title": {
|
||||
"render": "Statistieken"
|
||||
}
|
||||
}
|
||||
},
|
||||
"20": {
|
||||
"override": {
|
||||
"+tagRenderings": {
|
||||
"0": {
|
||||
"render": {
|
||||
"special": {
|
||||
"text": "Importeren"
|
||||
}
|
||||
}
|
||||
},
|
||||
"1": {
|
||||
"render": {
|
||||
"special": {
|
||||
"message": "Voeg alle gesuggereerde tags toe"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"4": {
|
||||
"override": {
|
||||
"filter": {
|
||||
|
@ -950,33 +977,6 @@
|
|||
"override": {
|
||||
"name": "Parkeerplaatsen voor personen met een beperking"
|
||||
}
|
||||
},
|
||||
"19": {
|
||||
"override": {
|
||||
"=title": {
|
||||
"render": "Statistieken"
|
||||
}
|
||||
}
|
||||
},
|
||||
"20": {
|
||||
"override": {
|
||||
"+tagRenderings": {
|
||||
"0": {
|
||||
"render": {
|
||||
"special": {
|
||||
"text": "Importeren"
|
||||
}
|
||||
}
|
||||
},
|
||||
"1": {
|
||||
"render": {
|
||||
"special": {
|
||||
"message": "Voeg alle gesuggereerde tags toe"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"title": "OnWheels"
|
||||
|
@ -1183,10 +1183,6 @@
|
|||
"stations": {
|
||||
"description": "Bekijk, bewerk en voeg details to aan een treinstation",
|
||||
"layers": {
|
||||
"3": {
|
||||
"description": "Laag met treinstations",
|
||||
"name": "Treinstations"
|
||||
},
|
||||
"16": {
|
||||
"description": "Schermen die treinen tonen die van dit station vertrekken",
|
||||
"name": "Vertrektijdenborden",
|
||||
|
@ -1218,6 +1214,10 @@
|
|||
"title": {
|
||||
"render": "Vertrektijdenbord"
|
||||
}
|
||||
},
|
||||
"3": {
|
||||
"description": "Laag met treinstations",
|
||||
"name": "Treinstations"
|
||||
}
|
||||
},
|
||||
"title": "Treinstations"
|
||||
|
@ -1387,4 +1387,4 @@
|
|||
"shortDescription": "Een kaart met vuilnisbakken",
|
||||
"title": "Vuilnisbakken"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -875,6 +875,33 @@
|
|||
"onwheels": {
|
||||
"description": "Na tej mapie pokazane są miejsca publicznie dostępne dla wózków inwalidzkich, które można łatwo dodać",
|
||||
"layers": {
|
||||
"19": {
|
||||
"override": {
|
||||
"=title": {
|
||||
"render": "Statystyki"
|
||||
}
|
||||
}
|
||||
},
|
||||
"20": {
|
||||
"override": {
|
||||
"+tagRenderings": {
|
||||
"0": {
|
||||
"render": {
|
||||
"special": {
|
||||
"text": "Import"
|
||||
}
|
||||
}
|
||||
},
|
||||
"1": {
|
||||
"render": {
|
||||
"special": {
|
||||
"message": "Dodaj wszystkie sugerowane znaczniki"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"4": {
|
||||
"override": {
|
||||
"filter": {
|
||||
|
@ -917,33 +944,6 @@
|
|||
"override": {
|
||||
"name": "Miejsca parkingowe dla niepełnosprawnych"
|
||||
}
|
||||
},
|
||||
"19": {
|
||||
"override": {
|
||||
"=title": {
|
||||
"render": "Statystyki"
|
||||
}
|
||||
}
|
||||
},
|
||||
"20": {
|
||||
"override": {
|
||||
"+tagRenderings": {
|
||||
"0": {
|
||||
"render": {
|
||||
"special": {
|
||||
"text": "Import"
|
||||
}
|
||||
}
|
||||
},
|
||||
"1": {
|
||||
"render": {
|
||||
"special": {
|
||||
"message": "Dodaj wszystkie sugerowane znaczniki"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"title": "Na kółkach"
|
||||
|
@ -1104,10 +1104,6 @@
|
|||
"stations": {
|
||||
"description": "Przeglądaj, edytuj i dodawaj szczegóły do stacji kolejowej",
|
||||
"layers": {
|
||||
"3": {
|
||||
"description": "Warstwa pokazująca stacje kolejowe",
|
||||
"name": "Stacje Kolejowe"
|
||||
},
|
||||
"16": {
|
||||
"description": "Ekrany wyświetlające pokazujące pociągi, które odjadą z tej stacji",
|
||||
"name": "Tablice odjazdów",
|
||||
|
@ -1139,6 +1135,10 @@
|
|||
"title": {
|
||||
"render": "Tablica odjazdów"
|
||||
}
|
||||
},
|
||||
"3": {
|
||||
"description": "Warstwa pokazująca stacje kolejowe",
|
||||
"name": "Stacje Kolejowe"
|
||||
}
|
||||
},
|
||||
"title": "Stacje Kolejowe"
|
||||
|
@ -1260,4 +1260,4 @@
|
|||
"shortDescription": "Mapa koszy na śmieci",
|
||||
"title": "Kosz na śmieci"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
3988
package-lock.json
generated
3988
package-lock.json
generated
File diff suppressed because it is too large
Load diff
|
@ -173,6 +173,7 @@
|
|||
"marked": "^12.0.2",
|
||||
"monaco-editor": "^0.46.0",
|
||||
"name-suggestion-index": "^6.0.20240422",
|
||||
"npm": "^10.7.0",
|
||||
"opening_hours": "^3.6.0",
|
||||
"osm-auth": "^2.2.0",
|
||||
"osmtogeojson": "^3.0.0-beta.5",
|
||||
|
|
|
@ -31,7 +31,7 @@
|
|||
|
||||
::before,
|
||||
::after {
|
||||
--tw-content: "";
|
||||
--tw-content: '';
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -50,12 +50,10 @@ html {
|
|||
/* 3 */
|
||||
tab-size: 4;
|
||||
/* 3 */
|
||||
font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto,
|
||||
"Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji",
|
||||
"Segoe UI Symbol", "Noto Color Emoji";
|
||||
font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
|
||||
/* 4 */
|
||||
-webkit-font-feature-settings: normal;
|
||||
font-feature-settings: normal;
|
||||
font-feature-settings: normal;
|
||||
/* 5 */
|
||||
}
|
||||
|
||||
|
@ -92,7 +90,7 @@ Add the correct text decoration in Chrome, Edge, and Safari.
|
|||
|
||||
abbr:where([title]) {
|
||||
-webkit-text-decoration: underline dotted;
|
||||
text-decoration: underline dotted;
|
||||
text-decoration: underline dotted;
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -136,8 +134,7 @@ code,
|
|||
kbd,
|
||||
samp,
|
||||
pre {
|
||||
font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono",
|
||||
"Courier New", monospace;
|
||||
font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
|
||||
/* 1 */
|
||||
font-size: 1em;
|
||||
/* 2 */
|
||||
|
@ -228,9 +225,9 @@ select {
|
|||
*/
|
||||
|
||||
button,
|
||||
[type="button"],
|
||||
[type="reset"],
|
||||
[type="submit"] {
|
||||
[type='button'],
|
||||
[type='reset'],
|
||||
[type='submit'] {
|
||||
-webkit-appearance: button;
|
||||
/* 1 */
|
||||
background-color: transparent;
|
||||
|
@ -277,7 +274,7 @@ Correct the cursor style of increment and decrement buttons in Safari.
|
|||
2. Correct the outline style in Safari.
|
||||
*/
|
||||
|
||||
[type="search"] {
|
||||
[type='search'] {
|
||||
-webkit-appearance: textfield;
|
||||
/* 1 */
|
||||
outline-offset: -2px;
|
||||
|
@ -362,8 +359,7 @@ textarea {
|
|||
2. Set the default placeholder color to the user's configured gray 400 color.
|
||||
*/
|
||||
|
||||
input::-webkit-input-placeholder,
|
||||
textarea::-webkit-input-placeholder {
|
||||
input::-webkit-input-placeholder, textarea::-webkit-input-placeholder {
|
||||
opacity: 1;
|
||||
/* 1 */
|
||||
color: #9ca3af;
|
||||
|
@ -431,9 +427,7 @@ video {
|
|||
display: none;
|
||||
}
|
||||
|
||||
*,
|
||||
::before,
|
||||
::after {
|
||||
*, ::before, ::after {
|
||||
--tw-border-spacing-x: 0;
|
||||
--tw-border-spacing-y: 0;
|
||||
--tw-translate-x: 0;
|
||||
|
@ -443,16 +437,16 @@ video {
|
|||
--tw-skew-y: 0;
|
||||
--tw-scale-x: 1;
|
||||
--tw-scale-y: 1;
|
||||
--tw-pan-x: ;
|
||||
--tw-pan-y: ;
|
||||
--tw-pinch-zoom: ;
|
||||
--tw-pan-x: ;
|
||||
--tw-pan-y: ;
|
||||
--tw-pinch-zoom: ;
|
||||
--tw-scroll-snap-strictness: proximity;
|
||||
--tw-ordinal: ;
|
||||
--tw-slashed-zero: ;
|
||||
--tw-numeric-figure: ;
|
||||
--tw-numeric-spacing: ;
|
||||
--tw-numeric-fraction: ;
|
||||
--tw-ring-inset: ;
|
||||
--tw-ordinal: ;
|
||||
--tw-slashed-zero: ;
|
||||
--tw-numeric-figure: ;
|
||||
--tw-numeric-spacing: ;
|
||||
--tw-numeric-fraction: ;
|
||||
--tw-ring-inset: ;
|
||||
--tw-ring-offset-width: 0px;
|
||||
--tw-ring-offset-color: #fff;
|
||||
--tw-ring-color: rgb(59 130 246 / 0.5);
|
||||
|
@ -460,24 +454,24 @@ video {
|
|||
--tw-ring-shadow: 0 0 #0000;
|
||||
--tw-shadow: 0 0 #0000;
|
||||
--tw-shadow-colored: 0 0 #0000;
|
||||
--tw-blur: ;
|
||||
--tw-brightness: ;
|
||||
--tw-contrast: ;
|
||||
--tw-grayscale: ;
|
||||
--tw-hue-rotate: ;
|
||||
--tw-invert: ;
|
||||
--tw-saturate: ;
|
||||
--tw-sepia: ;
|
||||
--tw-drop-shadow: ;
|
||||
--tw-backdrop-blur: ;
|
||||
--tw-backdrop-brightness: ;
|
||||
--tw-backdrop-contrast: ;
|
||||
--tw-backdrop-grayscale: ;
|
||||
--tw-backdrop-hue-rotate: ;
|
||||
--tw-backdrop-invert: ;
|
||||
--tw-backdrop-opacity: ;
|
||||
--tw-backdrop-saturate: ;
|
||||
--tw-backdrop-sepia: ;
|
||||
--tw-blur: ;
|
||||
--tw-brightness: ;
|
||||
--tw-contrast: ;
|
||||
--tw-grayscale: ;
|
||||
--tw-hue-rotate: ;
|
||||
--tw-invert: ;
|
||||
--tw-saturate: ;
|
||||
--tw-sepia: ;
|
||||
--tw-drop-shadow: ;
|
||||
--tw-backdrop-blur: ;
|
||||
--tw-backdrop-brightness: ;
|
||||
--tw-backdrop-contrast: ;
|
||||
--tw-backdrop-grayscale: ;
|
||||
--tw-backdrop-hue-rotate: ;
|
||||
--tw-backdrop-invert: ;
|
||||
--tw-backdrop-opacity: ;
|
||||
--tw-backdrop-saturate: ;
|
||||
--tw-backdrop-sepia: ;
|
||||
}
|
||||
|
||||
::-webkit-backdrop {
|
||||
|
@ -490,16 +484,16 @@ video {
|
|||
--tw-skew-y: 0;
|
||||
--tw-scale-x: 1;
|
||||
--tw-scale-y: 1;
|
||||
--tw-pan-x: ;
|
||||
--tw-pan-y: ;
|
||||
--tw-pinch-zoom: ;
|
||||
--tw-pan-x: ;
|
||||
--tw-pan-y: ;
|
||||
--tw-pinch-zoom: ;
|
||||
--tw-scroll-snap-strictness: proximity;
|
||||
--tw-ordinal: ;
|
||||
--tw-slashed-zero: ;
|
||||
--tw-numeric-figure: ;
|
||||
--tw-numeric-spacing: ;
|
||||
--tw-numeric-fraction: ;
|
||||
--tw-ring-inset: ;
|
||||
--tw-ordinal: ;
|
||||
--tw-slashed-zero: ;
|
||||
--tw-numeric-figure: ;
|
||||
--tw-numeric-spacing: ;
|
||||
--tw-numeric-fraction: ;
|
||||
--tw-ring-inset: ;
|
||||
--tw-ring-offset-width: 0px;
|
||||
--tw-ring-offset-color: #fff;
|
||||
--tw-ring-color: rgb(59 130 246 / 0.5);
|
||||
|
@ -507,24 +501,24 @@ video {
|
|||
--tw-ring-shadow: 0 0 #0000;
|
||||
--tw-shadow: 0 0 #0000;
|
||||
--tw-shadow-colored: 0 0 #0000;
|
||||
--tw-blur: ;
|
||||
--tw-brightness: ;
|
||||
--tw-contrast: ;
|
||||
--tw-grayscale: ;
|
||||
--tw-hue-rotate: ;
|
||||
--tw-invert: ;
|
||||
--tw-saturate: ;
|
||||
--tw-sepia: ;
|
||||
--tw-drop-shadow: ;
|
||||
--tw-backdrop-blur: ;
|
||||
--tw-backdrop-brightness: ;
|
||||
--tw-backdrop-contrast: ;
|
||||
--tw-backdrop-grayscale: ;
|
||||
--tw-backdrop-hue-rotate: ;
|
||||
--tw-backdrop-invert: ;
|
||||
--tw-backdrop-opacity: ;
|
||||
--tw-backdrop-saturate: ;
|
||||
--tw-backdrop-sepia: ;
|
||||
--tw-blur: ;
|
||||
--tw-brightness: ;
|
||||
--tw-contrast: ;
|
||||
--tw-grayscale: ;
|
||||
--tw-hue-rotate: ;
|
||||
--tw-invert: ;
|
||||
--tw-saturate: ;
|
||||
--tw-sepia: ;
|
||||
--tw-drop-shadow: ;
|
||||
--tw-backdrop-blur: ;
|
||||
--tw-backdrop-brightness: ;
|
||||
--tw-backdrop-contrast: ;
|
||||
--tw-backdrop-grayscale: ;
|
||||
--tw-backdrop-hue-rotate: ;
|
||||
--tw-backdrop-invert: ;
|
||||
--tw-backdrop-opacity: ;
|
||||
--tw-backdrop-saturate: ;
|
||||
--tw-backdrop-sepia: ;
|
||||
}
|
||||
|
||||
::backdrop {
|
||||
|
@ -537,16 +531,16 @@ video {
|
|||
--tw-skew-y: 0;
|
||||
--tw-scale-x: 1;
|
||||
--tw-scale-y: 1;
|
||||
--tw-pan-x: ;
|
||||
--tw-pan-y: ;
|
||||
--tw-pinch-zoom: ;
|
||||
--tw-pan-x: ;
|
||||
--tw-pan-y: ;
|
||||
--tw-pinch-zoom: ;
|
||||
--tw-scroll-snap-strictness: proximity;
|
||||
--tw-ordinal: ;
|
||||
--tw-slashed-zero: ;
|
||||
--tw-numeric-figure: ;
|
||||
--tw-numeric-spacing: ;
|
||||
--tw-numeric-fraction: ;
|
||||
--tw-ring-inset: ;
|
||||
--tw-ordinal: ;
|
||||
--tw-slashed-zero: ;
|
||||
--tw-numeric-figure: ;
|
||||
--tw-numeric-spacing: ;
|
||||
--tw-numeric-fraction: ;
|
||||
--tw-ring-inset: ;
|
||||
--tw-ring-offset-width: 0px;
|
||||
--tw-ring-offset-color: #fff;
|
||||
--tw-ring-color: rgb(59 130 246 / 0.5);
|
||||
|
@ -554,24 +548,24 @@ video {
|
|||
--tw-ring-shadow: 0 0 #0000;
|
||||
--tw-shadow: 0 0 #0000;
|
||||
--tw-shadow-colored: 0 0 #0000;
|
||||
--tw-blur: ;
|
||||
--tw-brightness: ;
|
||||
--tw-contrast: ;
|
||||
--tw-grayscale: ;
|
||||
--tw-hue-rotate: ;
|
||||
--tw-invert: ;
|
||||
--tw-saturate: ;
|
||||
--tw-sepia: ;
|
||||
--tw-drop-shadow: ;
|
||||
--tw-backdrop-blur: ;
|
||||
--tw-backdrop-brightness: ;
|
||||
--tw-backdrop-contrast: ;
|
||||
--tw-backdrop-grayscale: ;
|
||||
--tw-backdrop-hue-rotate: ;
|
||||
--tw-backdrop-invert: ;
|
||||
--tw-backdrop-opacity: ;
|
||||
--tw-backdrop-saturate: ;
|
||||
--tw-backdrop-sepia: ;
|
||||
--tw-blur: ;
|
||||
--tw-brightness: ;
|
||||
--tw-contrast: ;
|
||||
--tw-grayscale: ;
|
||||
--tw-hue-rotate: ;
|
||||
--tw-invert: ;
|
||||
--tw-saturate: ;
|
||||
--tw-sepia: ;
|
||||
--tw-drop-shadow: ;
|
||||
--tw-backdrop-blur: ;
|
||||
--tw-backdrop-brightness: ;
|
||||
--tw-backdrop-contrast: ;
|
||||
--tw-backdrop-grayscale: ;
|
||||
--tw-backdrop-hue-rotate: ;
|
||||
--tw-backdrop-invert: ;
|
||||
--tw-backdrop-opacity: ;
|
||||
--tw-backdrop-saturate: ;
|
||||
--tw-backdrop-sepia: ;
|
||||
}
|
||||
|
||||
.container {
|
||||
|
@ -787,10 +781,6 @@ video {
|
|||
float: left;
|
||||
}
|
||||
|
||||
.m-2 {
|
||||
margin: 0.5rem;
|
||||
}
|
||||
|
||||
.m-4 {
|
||||
margin: 1rem;
|
||||
}
|
||||
|
@ -807,6 +797,10 @@ video {
|
|||
margin: 2rem;
|
||||
}
|
||||
|
||||
.m-2 {
|
||||
margin: 0.5rem;
|
||||
}
|
||||
|
||||
.m-1 {
|
||||
margin: 0.25rem;
|
||||
}
|
||||
|
@ -1332,40 +1326,32 @@ video {
|
|||
}
|
||||
|
||||
.transform {
|
||||
-webkit-transform: translate(var(--tw-translate-x), var(--tw-translate-y))
|
||||
rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y))
|
||||
scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
|
||||
transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate))
|
||||
skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x))
|
||||
scaleY(var(--tw-scale-y));
|
||||
-webkit-transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
|
||||
transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
|
||||
}
|
||||
|
||||
.\!transform {
|
||||
-webkit-transform: translate(var(--tw-translate-x), var(--tw-translate-y))
|
||||
rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y))
|
||||
scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)) !important;
|
||||
transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate))
|
||||
skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x))
|
||||
scaleY(var(--tw-scale-y)) !important;
|
||||
-webkit-transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)) !important;
|
||||
transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)) !important;
|
||||
}
|
||||
|
||||
@-webkit-keyframes spin {
|
||||
to {
|
||||
-webkit-transform: rotate(360deg);
|
||||
transform: rotate(360deg);
|
||||
transform: rotate(360deg);
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes spin {
|
||||
to {
|
||||
-webkit-transform: rotate(360deg);
|
||||
transform: rotate(360deg);
|
||||
transform: rotate(360deg);
|
||||
}
|
||||
}
|
||||
|
||||
.animate-spin {
|
||||
-webkit-animation: spin 1s linear infinite;
|
||||
animation: spin 1s linear infinite;
|
||||
animation: spin 1s linear infinite;
|
||||
}
|
||||
|
||||
.cursor-pointer {
|
||||
|
@ -1382,7 +1368,7 @@ video {
|
|||
|
||||
.appearance-none {
|
||||
-webkit-appearance: none;
|
||||
appearance: none;
|
||||
appearance: none;
|
||||
}
|
||||
|
||||
.grid-cols-3 {
|
||||
|
@ -1471,17 +1457,17 @@ video {
|
|||
|
||||
.gap-x-4 {
|
||||
-webkit-column-gap: 1rem;
|
||||
column-gap: 1rem;
|
||||
column-gap: 1rem;
|
||||
}
|
||||
|
||||
.gap-x-0\.5 {
|
||||
-webkit-column-gap: 0.125rem;
|
||||
column-gap: 0.125rem;
|
||||
column-gap: 0.125rem;
|
||||
}
|
||||
|
||||
.gap-x-0 {
|
||||
-webkit-column-gap: 0px;
|
||||
column-gap: 0px;
|
||||
column-gap: 0px;
|
||||
}
|
||||
|
||||
.gap-y-2 {
|
||||
|
@ -1490,12 +1476,12 @@ video {
|
|||
|
||||
.gap-x-1 {
|
||||
-webkit-column-gap: 0.25rem;
|
||||
column-gap: 0.25rem;
|
||||
column-gap: 0.25rem;
|
||||
}
|
||||
|
||||
.gap-x-2 {
|
||||
-webkit-column-gap: 0.5rem;
|
||||
column-gap: 0.5rem;
|
||||
column-gap: 0.5rem;
|
||||
}
|
||||
|
||||
.gap-y-8 {
|
||||
|
@ -2044,44 +2030,37 @@ video {
|
|||
|
||||
.ordinal {
|
||||
--tw-ordinal: ordinal;
|
||||
font-variant-numeric: var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure)
|
||||
var(--tw-numeric-spacing) var(--tw-numeric-fraction);
|
||||
font-variant-numeric: var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction);
|
||||
}
|
||||
|
||||
.slashed-zero {
|
||||
--tw-slashed-zero: slashed-zero;
|
||||
font-variant-numeric: var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure)
|
||||
var(--tw-numeric-spacing) var(--tw-numeric-fraction);
|
||||
font-variant-numeric: var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction);
|
||||
}
|
||||
|
||||
.lining-nums {
|
||||
--tw-numeric-figure: lining-nums;
|
||||
font-variant-numeric: var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure)
|
||||
var(--tw-numeric-spacing) var(--tw-numeric-fraction);
|
||||
font-variant-numeric: var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction);
|
||||
}
|
||||
|
||||
.oldstyle-nums {
|
||||
--tw-numeric-figure: oldstyle-nums;
|
||||
font-variant-numeric: var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure)
|
||||
var(--tw-numeric-spacing) var(--tw-numeric-fraction);
|
||||
font-variant-numeric: var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction);
|
||||
}
|
||||
|
||||
.proportional-nums {
|
||||
--tw-numeric-spacing: proportional-nums;
|
||||
font-variant-numeric: var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure)
|
||||
var(--tw-numeric-spacing) var(--tw-numeric-fraction);
|
||||
font-variant-numeric: var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction);
|
||||
}
|
||||
|
||||
.tabular-nums {
|
||||
--tw-numeric-spacing: tabular-nums;
|
||||
font-variant-numeric: var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure)
|
||||
var(--tw-numeric-spacing) var(--tw-numeric-fraction);
|
||||
font-variant-numeric: var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction);
|
||||
}
|
||||
|
||||
.diagonal-fractions {
|
||||
--tw-numeric-fraction: diagonal-fractions;
|
||||
font-variant-numeric: var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure)
|
||||
var(--tw-numeric-spacing) var(--tw-numeric-fraction);
|
||||
font-variant-numeric: var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction);
|
||||
}
|
||||
|
||||
.tracking-tight {
|
||||
|
@ -2140,8 +2119,7 @@ video {
|
|||
.shadow {
|
||||
--tw-shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);
|
||||
--tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);
|
||||
box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000),
|
||||
var(--tw-shadow);
|
||||
box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
|
||||
}
|
||||
|
||||
.outline-none {
|
||||
|
@ -2154,10 +2132,8 @@ video {
|
|||
}
|
||||
|
||||
.ring {
|
||||
--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width)
|
||||
var(--tw-ring-offset-color);
|
||||
--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width))
|
||||
var(--tw-ring-color);
|
||||
--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);
|
||||
--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color);
|
||||
box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);
|
||||
}
|
||||
|
||||
|
@ -2167,137 +2143,89 @@ video {
|
|||
|
||||
.blur {
|
||||
--tw-blur: blur(8px);
|
||||
-webkit-filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale)
|
||||
var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);
|
||||
filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale)
|
||||
var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);
|
||||
-webkit-filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);
|
||||
filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);
|
||||
}
|
||||
|
||||
.drop-shadow-md {
|
||||
--tw-drop-shadow: drop-shadow(0 4px 3px rgb(0 0 0 / 0.07))
|
||||
drop-shadow(0 2px 2px rgb(0 0 0 / 0.06));
|
||||
-webkit-filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale)
|
||||
var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);
|
||||
filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale)
|
||||
var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);
|
||||
--tw-drop-shadow: drop-shadow(0 4px 3px rgb(0 0 0 / 0.07)) drop-shadow(0 2px 2px rgb(0 0 0 / 0.06));
|
||||
-webkit-filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);
|
||||
filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);
|
||||
}
|
||||
|
||||
.drop-shadow-2xl {
|
||||
--tw-drop-shadow: drop-shadow(0 25px 25px rgb(0 0 0 / 0.15));
|
||||
-webkit-filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale)
|
||||
var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);
|
||||
filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale)
|
||||
var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);
|
||||
-webkit-filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);
|
||||
filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);
|
||||
}
|
||||
|
||||
.drop-shadow {
|
||||
--tw-drop-shadow: drop-shadow(0 1px 2px rgb(0 0 0 / 0.1)) drop-shadow(0 1px 1px rgb(0 0 0 / 0.06));
|
||||
-webkit-filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale)
|
||||
var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);
|
||||
filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale)
|
||||
var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);
|
||||
-webkit-filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);
|
||||
filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);
|
||||
}
|
||||
|
||||
.grayscale {
|
||||
--tw-grayscale: grayscale(100%);
|
||||
-webkit-filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale)
|
||||
var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);
|
||||
filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale)
|
||||
var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);
|
||||
-webkit-filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);
|
||||
filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);
|
||||
}
|
||||
|
||||
.invert {
|
||||
--tw-invert: invert(100%);
|
||||
-webkit-filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale)
|
||||
var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);
|
||||
filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale)
|
||||
var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);
|
||||
-webkit-filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);
|
||||
filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);
|
||||
}
|
||||
|
||||
.sepia {
|
||||
--tw-sepia: sepia(100%);
|
||||
-webkit-filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale)
|
||||
var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);
|
||||
filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale)
|
||||
var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);
|
||||
-webkit-filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);
|
||||
filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);
|
||||
}
|
||||
|
||||
.filter {
|
||||
-webkit-filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale)
|
||||
var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);
|
||||
filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale)
|
||||
var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);
|
||||
-webkit-filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);
|
||||
filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);
|
||||
}
|
||||
|
||||
.\!filter {
|
||||
-webkit-filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale)
|
||||
var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow) !important;
|
||||
filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale)
|
||||
var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow) !important;
|
||||
-webkit-filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow) !important;
|
||||
filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow) !important;
|
||||
}
|
||||
|
||||
.backdrop-blur {
|
||||
--tw-backdrop-blur: blur(8px);
|
||||
-webkit-backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness)
|
||||
var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate)
|
||||
var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate)
|
||||
var(--tw-backdrop-sepia);
|
||||
backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast)
|
||||
var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert)
|
||||
var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);
|
||||
-webkit-backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);
|
||||
backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);
|
||||
}
|
||||
|
||||
.backdrop-grayscale {
|
||||
--tw-backdrop-grayscale: grayscale(100%);
|
||||
-webkit-backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness)
|
||||
var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate)
|
||||
var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate)
|
||||
var(--tw-backdrop-sepia);
|
||||
backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast)
|
||||
var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert)
|
||||
var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);
|
||||
-webkit-backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);
|
||||
backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);
|
||||
}
|
||||
|
||||
.backdrop-invert {
|
||||
--tw-backdrop-invert: invert(100%);
|
||||
-webkit-backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness)
|
||||
var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate)
|
||||
var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate)
|
||||
var(--tw-backdrop-sepia);
|
||||
backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast)
|
||||
var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert)
|
||||
var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);
|
||||
-webkit-backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);
|
||||
backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);
|
||||
}
|
||||
|
||||
.backdrop-sepia {
|
||||
--tw-backdrop-sepia: sepia(100%);
|
||||
-webkit-backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness)
|
||||
var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate)
|
||||
var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate)
|
||||
var(--tw-backdrop-sepia);
|
||||
backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast)
|
||||
var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert)
|
||||
var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);
|
||||
-webkit-backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);
|
||||
backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);
|
||||
}
|
||||
|
||||
.backdrop-filter {
|
||||
-webkit-backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness)
|
||||
var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate)
|
||||
var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate)
|
||||
var(--tw-backdrop-sepia);
|
||||
backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast)
|
||||
var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert)
|
||||
var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);
|
||||
-webkit-backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);
|
||||
backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);
|
||||
}
|
||||
|
||||
.transition {
|
||||
transition-property: color, background-color, border-color, text-decoration-color, fill, stroke,
|
||||
opacity, box-shadow, -webkit-transform, -webkit-filter, -webkit-backdrop-filter;
|
||||
transition-property: color, background-color, border-color, text-decoration-color, fill, stroke,
|
||||
opacity, box-shadow, transform, filter, backdrop-filter;
|
||||
transition-property: color, background-color, border-color, text-decoration-color, fill, stroke,
|
||||
opacity, box-shadow, transform, filter, backdrop-filter, -webkit-transform, -webkit-filter,
|
||||
-webkit-backdrop-filter;
|
||||
transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, -webkit-transform, -webkit-filter, -webkit-backdrop-filter;
|
||||
transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter;
|
||||
transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter, -webkit-transform, -webkit-filter, -webkit-backdrop-filter;
|
||||
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
|
||||
transition-duration: 150ms;
|
||||
}
|
||||
|
@ -2428,7 +2356,7 @@ input {
|
|||
color: var(--foreground-color);
|
||||
}
|
||||
|
||||
input[type="text"] {
|
||||
input[type=text] {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
|
@ -2451,12 +2379,12 @@ input[type="text"] {
|
|||
|
||||
.low-interaction {
|
||||
background: var(--low-interaction-background);
|
||||
color: var(--low-interaction-foreground);
|
||||
color: var(--low-interaction-foreground)
|
||||
}
|
||||
|
||||
.interactive {
|
||||
background: var(--interactive-background);
|
||||
color: var(--interactive-foreground);
|
||||
color: var(--interactive-foreground)
|
||||
}
|
||||
|
||||
.border-interactive {
|
||||
|
@ -2475,8 +2403,7 @@ input[type="text"] {
|
|||
* This very important section defines what the various input elements look like within the 'low-interaction' and 'interactive'-blocks
|
||||
*/
|
||||
|
||||
button.small,
|
||||
.button.small {
|
||||
button.small, .button.small {
|
||||
line-height: 1rem;
|
||||
margin: 0;
|
||||
margin-left: 0.5rem;
|
||||
|
@ -2497,8 +2424,7 @@ button.small,
|
|||
color: var(--low-interaction-foreground);
|
||||
}
|
||||
|
||||
button,
|
||||
.button {
|
||||
button, .button {
|
||||
align-items: center;
|
||||
display: inline-flex;
|
||||
line-height: 1.25rem;
|
||||
|
@ -2521,72 +2447,60 @@ button,
|
|||
box-shadow: 0 5px 10px #88888888;
|
||||
}
|
||||
|
||||
button.selected,
|
||||
.button.selected {
|
||||
button.selected, .button.selected {
|
||||
background-color: var(--catch-detail-color);
|
||||
border-color: var(--catch-detail-color);
|
||||
color: var(--catch-detail-foregroundcolor);
|
||||
}
|
||||
|
||||
button.selected svg path,
|
||||
.button.selected svg path {
|
||||
button.selected svg path, .button.selected svg path {
|
||||
fill: var(--catch-detail-foregroundcolor) !important;
|
||||
}
|
||||
|
||||
button:not(.no-image-background):not(.soft) svg path,
|
||||
.button:not(.no-image-background):not(.soft) svg path {
|
||||
button:not(.no-image-background):not(.soft) svg path, .button:not(.no-image-background):not(.soft) svg path {
|
||||
fill: var(--interactive-foreground) !important;
|
||||
transition: all 250ms;
|
||||
}
|
||||
|
||||
.interactive button,
|
||||
.interactive .button {
|
||||
.interactive button, .interactive .button {
|
||||
background: var(--interactive-background);
|
||||
color: var(--interactive-foreground);
|
||||
}
|
||||
|
||||
button:hover,
|
||||
.button:hover {
|
||||
button:hover, .button:hover {
|
||||
background-color: var(--catch-detail-color);
|
||||
color: var(--catch-detail-foregroundcolor);
|
||||
border: 2px solid var(--catch-detail-color-contrast);
|
||||
}
|
||||
|
||||
button:hover:not(.no-image-background) img,
|
||||
.button:hover:not(.no-image-background) img {
|
||||
button:hover:not(.no-image-background) img, .button:hover:not(.no-image-background) img {
|
||||
background: var(--low-interaction-background);
|
||||
border-radius: 100rem;
|
||||
}
|
||||
|
||||
button:hover:not(.no-image-background) svg path,
|
||||
.button:hover:not(.no-image-background) svg path {
|
||||
button:hover:not(.no-image-background) svg path, .button:hover:not(.no-image-background) svg path {
|
||||
fill: var(--catch-detail-foregroundcolor) !important;
|
||||
}
|
||||
|
||||
button.disabled:hover:not(.no-image-background) svg path,
|
||||
.button.disabled:hover:not(.no-image-background) svg path {
|
||||
button.disabled:hover:not(.no-image-background) svg path, .button.disabled:hover:not(.no-image-background) svg path {
|
||||
fill: var(--low-interaction-foreground) !important;
|
||||
}
|
||||
|
||||
button.primary,
|
||||
.button.primary {
|
||||
button.primary, .button.primary {
|
||||
color: var(--button-foreground);
|
||||
background: var(--button-background);
|
||||
}
|
||||
|
||||
button.primary:not(.no-image-background) svg path,
|
||||
.button.primary:not(.no-image-background) svg path {
|
||||
button.primary:not(.no-image-background) svg path, .button.primary:not(.no-image-background) svg path {
|
||||
fill: var(--button-foreground) !important;
|
||||
transition: all 250ms;
|
||||
}
|
||||
|
||||
button.disabled.low-interaction,
|
||||
.button.disabled.low-interaction {
|
||||
button.disabled.low-interaction, .button.disabled.low-interaction {
|
||||
background-color: var(--low-interaction-background-50);
|
||||
}
|
||||
|
||||
button.disabled,
|
||||
.button.disabled {
|
||||
button.disabled, .button.disabled {
|
||||
cursor: default;
|
||||
border: 2px dashed var(--button-background);
|
||||
background: unset;
|
||||
|
@ -2594,8 +2508,7 @@ button.disabled,
|
|||
box-shadow: none;
|
||||
}
|
||||
|
||||
button.disabled:hover,
|
||||
.button.disabled:hover {
|
||||
button.disabled:hover, .button.disabled:hover {
|
||||
cursor: default;
|
||||
border: 2px dashed var(--button-background);
|
||||
background: unset;
|
||||
|
@ -2609,41 +2522,36 @@ button.link {
|
|||
}
|
||||
|
||||
button.link:hover {
|
||||
color: unset;
|
||||
color:unset;
|
||||
}
|
||||
|
||||
.interactive button.disabled svg path,
|
||||
.interactive .button.disabled svg path {
|
||||
.interactive button.disabled svg path, .interactive .button.disabled svg path {
|
||||
fill: var(--interactive-foreground) !important;
|
||||
}
|
||||
|
||||
.low-interaction button.disabled svg path,
|
||||
.low-interaction .button.disabled svg path {
|
||||
.low-interaction button.disabled svg path, .low-interaction .button.disabled svg path {
|
||||
fill: var(--low-interaction-foreground) !important;
|
||||
}
|
||||
|
||||
.normal-background button.disabled svg path,
|
||||
.normal-background .button.disabled svg path {
|
||||
.normal-background button.disabled svg path, .normal-background .button.disabled svg path {
|
||||
fill: var(--foreground-color) !important;
|
||||
}
|
||||
|
||||
.links-w-full a:not(.weblate-link) {
|
||||
display: flex;
|
||||
-webkit-column-gap: 0.25rem;
|
||||
column-gap: 0.25rem;
|
||||
column-gap: 0.25rem;
|
||||
padding-left: 0.5rem;
|
||||
padding-right: 0.5rem;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
button.soft,
|
||||
.button.soft {
|
||||
button.soft, .button.soft {
|
||||
border: 2px solid var(--interactive-background);
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
button.soft:hover,
|
||||
.button.soft:hover {
|
||||
button.soft:hover, .button.soft:hover {
|
||||
background-color: var(--interactive-background);
|
||||
color: var(--interactive-foreground);
|
||||
border: 2px solid var(--catch-detail-color-contrast);
|
||||
|
@ -2681,7 +2589,7 @@ select:hover {
|
|||
border-color: var(--catch-detail-color-contrast);
|
||||
}
|
||||
|
||||
.neutral-label {
|
||||
.neutral-label{
|
||||
/** This label styles as normal text. It's power comes from the many :not(.neutral-label) entries.
|
||||
* Placed here for autocompletion
|
||||
*/
|
||||
|
@ -2709,7 +2617,7 @@ label.button {
|
|||
label:hover:not(.neutral-label) {
|
||||
background-color: var(--catch-detail-color);
|
||||
color: var(--catch-detail-foregroundcolor);
|
||||
border: 2px solid var(--interactive-contrast);
|
||||
border: 2px solid var(--interactive-contrast)
|
||||
}
|
||||
|
||||
label:not(.no-image-background):not(.neutral-label) img {
|
||||
|
@ -2813,12 +2721,11 @@ textarea {
|
|||
|
||||
.link-underline .subtle a {
|
||||
-webkit-text-decoration: underline 1px #7193bb88;
|
||||
text-decoration: underline 1px #7193bb88;
|
||||
text-decoration: underline 1px #7193bb88;
|
||||
color: #7193bb;
|
||||
}
|
||||
|
||||
.literal-code,
|
||||
code {
|
||||
.literal-code, code {
|
||||
/* A codeblock */
|
||||
display: inline-block;
|
||||
background-color: lightgray;
|
||||
|
@ -2879,7 +2786,7 @@ code {
|
|||
border: unset;
|
||||
border-radius: 5rem;
|
||||
-webkit-backdrop-filter: var(--low-interaction-background);
|
||||
backdrop-filter: var(--low-interaction-background);
|
||||
backdrop-filter: var(--low-interaction-background);
|
||||
}
|
||||
|
||||
.no-weblate .weblate-link {
|
||||
|
@ -2888,12 +2795,12 @@ code {
|
|||
|
||||
.link-underline a {
|
||||
-webkit-text-decoration: underline 1px var(--foreground-color);
|
||||
text-decoration: underline 1px var(--foreground-color);
|
||||
text-decoration: underline 1px var(--foreground-color);
|
||||
}
|
||||
|
||||
a.link-underline {
|
||||
-webkit-text-decoration: underline 1px var(--foreground-color);
|
||||
text-decoration: underline 1px var(--foreground-color);
|
||||
text-decoration: underline 1px var(--foreground-color);
|
||||
}
|
||||
|
||||
.link-no-underline a {
|
||||
|
@ -2941,30 +2848,30 @@ a.link-underline {
|
|||
}
|
||||
|
||||
svg.apply-fill path {
|
||||
fill: var(--svg-color);
|
||||
fill: var(--svg-color)
|
||||
}
|
||||
|
||||
.compass_arrow {
|
||||
width: calc(2.5rem - 1px);
|
||||
height: calc(2.5rem - 1px);
|
||||
width: calc( 2.5rem - 1px ) ;
|
||||
height: calc( 2.5rem - 1px )
|
||||
}
|
||||
|
||||
@media (min-width: 640px) {
|
||||
.compass_arrow {
|
||||
width: calc(2.75rem - 1px);
|
||||
height: calc(2.75rem - 1px);
|
||||
width: calc( 2.75rem - 1px ) ;
|
||||
height: calc( 2.75rem - 1px )
|
||||
}
|
||||
}
|
||||
|
||||
@-webkit-keyframes glowing-drop-shadow {
|
||||
from {
|
||||
-webkit-filter: drop-shadow(5px 5px 60px rgb(128 128 128 / 0.6));
|
||||
filter: drop-shadow(5px 5px 60px rgb(128 128 128 / 0.6));
|
||||
filter: drop-shadow(5px 5px 60px rgb(128 128 128 / 0.6));
|
||||
}
|
||||
|
||||
to {
|
||||
-webkit-filter: drop-shadow(5px 5px 80px rgb(0.5 0.5 0.5 / 0.8));
|
||||
filter: drop-shadow(5px 5px 80px rgb(0.5 0.5 0.5 / 0.8));
|
||||
filter: drop-shadow(5px 5px 80px rgb(0.5 0.5 0.5 / 0.8));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -2973,12 +2880,12 @@ svg.apply-fill path {
|
|||
|
||||
from {
|
||||
-webkit-transform: translateX(0%);
|
||||
transform: translateX(0%);
|
||||
transform: translateX(0%);
|
||||
}
|
||||
|
||||
to {
|
||||
-webkit-transform: translateX(calc(-100% + 42px));
|
||||
transform: translateX(calc(-100% + 42px));
|
||||
transform: translateX(calc(-100% + 42px));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -2987,12 +2894,12 @@ svg.apply-fill path {
|
|||
|
||||
from {
|
||||
-webkit-transform: translateX(0%);
|
||||
transform: translateX(0%);
|
||||
transform: translateX(0%);
|
||||
}
|
||||
|
||||
to {
|
||||
-webkit-transform: translateX(calc(-100% + 42px));
|
||||
transform: translateX(calc(-100% + 42px));
|
||||
transform: translateX(calc(-100% + 42px));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -224,10 +224,12 @@ export default class ScriptUtils {
|
|||
})
|
||||
const timeoutPromise = new Promise<any>((resolve, reject) => {
|
||||
setTimeout(
|
||||
() =>
|
||||
timeoutSecs === undefined
|
||||
? reject(new Error("Timout reached"))
|
||||
: resolve("timeout"),
|
||||
() => {
|
||||
if(timeoutSecs === undefined){
|
||||
return // No resolve
|
||||
}
|
||||
resolve("timeout")
|
||||
},
|
||||
(timeoutSecs ?? 10) * 1000
|
||||
)
|
||||
})
|
||||
|
|
|
@ -38,6 +38,7 @@ class OsmPoiDatabase {
|
|||
this._client = new Client(connectionString)
|
||||
}
|
||||
|
||||
|
||||
async getCount(
|
||||
layer: string,
|
||||
bbox: [[number, number], [number, number]] = undefined
|
||||
|
|
|
@ -91,6 +91,12 @@ export class Server {
|
|||
|
||||
try {
|
||||
const result = await handler.handle(path, url.searchParams)
|
||||
if(result === undefined){
|
||||
res.writeHead(500)
|
||||
res.write("Could not fetch this website, probably blocked by them")
|
||||
res.end()
|
||||
return
|
||||
}
|
||||
if (typeof result !== "string") {
|
||||
console.error(
|
||||
"Internal server error: handling",
|
||||
|
@ -103,7 +109,7 @@ export class Server {
|
|||
}
|
||||
const extraHeaders = handler.addHeaders ?? {}
|
||||
res.writeHead(200, { "Content-Type": handler.mimetype, ...extraHeaders })
|
||||
res.write(result)
|
||||
res.write(""+result)
|
||||
res.end()
|
||||
} catch (e) {
|
||||
console.error("Could not handle request:", e)
|
||||
|
|
|
@ -4,26 +4,30 @@ import parse from "node-html-parser"
|
|||
import ScriptUtils from "./ScriptUtils"
|
||||
|
||||
class ServerLdScrape extends Script {
|
||||
|
||||
constructor() {
|
||||
super("Starts a server which fetches a webpage and returns embedded LD+JSON")
|
||||
}
|
||||
|
||||
private static async attemptDownload(url: string) {
|
||||
const host = new URL(url).host
|
||||
const random = Math.floor(Math.random()*100)
|
||||
const random1 = Math.floor(Math.random()*100)
|
||||
|
||||
const headers = [
|
||||
{
|
||||
"User-Agent":
|
||||
"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.52 Safari/537.36",
|
||||
`Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.${random}.${random1} Safari/537.36`,
|
||||
"accept": "application/html"
|
||||
},
|
||||
{
|
||||
}
|
||||
/* {
|
||||
"User-Agent": "MapComplete/openstreetmap scraper; pietervdvn@posteo.net; https://github.com/pietervdvn/MapComplete",
|
||||
"accept": "application/html"
|
||||
},
|
||||
{
|
||||
Host: host,
|
||||
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; rv:122.0) Gecko/20100101 Firefox/122.0",
|
||||
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8",
|
||||
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,* /*;q=0.8", TODO remove space in * /*
|
||||
"Accept-Language": "en-US,en;q=0.5",
|
||||
"Accept-Encoding": "gzip, deflate, br",
|
||||
"Alt-Used": host,
|
||||
|
@ -36,7 +40,7 @@ class ServerLdScrape extends Script {
|
|||
"Sec-Fetch-User":"?1",
|
||||
"TE": "trailers",
|
||||
Connection: "keep-alive"
|
||||
}
|
||||
}*/
|
||||
]
|
||||
for (let i = 0; i < headers.length; i++) {
|
||||
try {
|
||||
|
@ -47,7 +51,7 @@ class ServerLdScrape extends Script {
|
|||
10
|
||||
)
|
||||
} catch (e) {
|
||||
console.error("Could not download", url, "with headers", headers[i])
|
||||
console.error("Could not download", url, "with headers", headers[i], "due to", e)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -67,10 +71,9 @@ class ServerLdScrape extends Script {
|
|||
console.log("URL", url)
|
||||
if (cache[url] !== undefined) {
|
||||
const { date, contents } = cache[url]
|
||||
console.log(">>>", date, contents)
|
||||
// In seconds
|
||||
const tdiff = (new Date().getTime() - (date?.getTime() ?? 0)) / 1000
|
||||
if (tdiff < 24 * 60 * 60) {
|
||||
if (tdiff < 31 * 24 * 60 * 60) {
|
||||
return JSON.stringify(contents)
|
||||
}
|
||||
}
|
||||
|
@ -83,6 +86,9 @@ class ServerLdScrape extends Script {
|
|||
if (dloaded === "timeout") {
|
||||
return "{\"#\":\"timout reached\"}"
|
||||
}
|
||||
if(dloaded === undefined){
|
||||
return undefined
|
||||
}
|
||||
} while (dloaded["redirect"])
|
||||
|
||||
if (dloaded["content"].startsWith("{")) {
|
||||
|
|
|
@ -2,10 +2,15 @@ import { ImmutableStore, Store, UIEventSource } from "../UIEventSource"
|
|||
import LayoutConfig from "../../Models/ThemeConfig/LayoutConfig"
|
||||
import { LocalStorageSource } from "../Web/LocalStorageSource"
|
||||
import { QueryParameters } from "../Web/QueryParameters"
|
||||
import Hash from "../Web/Hash"
|
||||
import OsmObjectDownloader from "../Osm/OsmObjectDownloader"
|
||||
import { OsmObject } from "../Osm/OsmObject"
|
||||
import Constants from "../../Models/Constants"
|
||||
|
||||
/**
|
||||
* This actor is responsible to set the map location.
|
||||
* It will attempt to
|
||||
* - Set the map to the position of the selected element
|
||||
* - Set the map to the position as passed in by the query parameters (if available)
|
||||
* - Set the map to the position remembered in LocalStorage (if available)
|
||||
* - Set the map to the layout default
|
||||
|
@ -16,6 +21,7 @@ export default class InitialMapPositioning {
|
|||
public zoom: UIEventSource<number>
|
||||
public location: UIEventSource<{ lon: number; lat: number }>
|
||||
public useTerrain: Store<boolean>
|
||||
|
||||
constructor(layoutToUse: LayoutConfig) {
|
||||
function localStorageSynced(
|
||||
key: string,
|
||||
|
@ -38,6 +44,8 @@ export default class InitialMapPositioning {
|
|||
return src
|
||||
}
|
||||
|
||||
const initialHash = Hash.hash.data
|
||||
|
||||
// -- Location control initialization
|
||||
this.zoom = localStorageSynced(
|
||||
"z",
|
||||
|
@ -62,5 +70,19 @@ export default class InitialMapPositioning {
|
|||
lon.setData(loc.lon)
|
||||
})
|
||||
this.useTerrain = new ImmutableStore<boolean>(layoutToUse.enableTerrain)
|
||||
|
||||
if (initialHash?.match(/^(node|way|relation)\/[0-9]+$/)) {
|
||||
const [type, id] = initialHash.split("/")
|
||||
OsmObjectDownloader.RawDownloadObjectAsync(type, Number(id), Constants.osmAuthConfig.url + "/").then(osmObject => {
|
||||
if (osmObject === "deleted") {
|
||||
return
|
||||
}
|
||||
const targetLayer = layoutToUse.getMatchingLayer(osmObject.tags)
|
||||
this.zoom.setData(Math.max(this.zoom.data, targetLayer.minzoom))
|
||||
const [lat, lon] = osmObject.centerpoint()
|
||||
this.location.setData({ lon, lat })
|
||||
})
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
@ -127,7 +127,9 @@ export abstract class OsmObject {
|
|||
return result
|
||||
}
|
||||
|
||||
// The centerpoint of the feature, as [lat, lon]
|
||||
/** The centerpoint of the feature, as [lat, lon]
|
||||
*
|
||||
*/
|
||||
public abstract centerpoint(): [number, number]
|
||||
|
||||
public abstract asGeoJson(): any
|
||||
|
|
|
@ -62,7 +62,7 @@ export default class OsmObjectDownloader {
|
|||
if (idN < 0) {
|
||||
obj = this.constructObject(<"node" | "way" | "relation">type, idN)
|
||||
} else {
|
||||
obj = await this.RawDownloadObjectAsync(type, idN, maxCacheAgeInSecs)
|
||||
obj = await OsmObjectDownloader.RawDownloadObjectAsync(type, idN, this.backend, maxCacheAgeInSecs)
|
||||
}
|
||||
if (obj === "deleted") {
|
||||
return obj
|
||||
|
@ -211,13 +211,22 @@ export default class OsmObjectDownloader {
|
|||
}
|
||||
}
|
||||
|
||||
private async RawDownloadObjectAsync(
|
||||
/**
|
||||
* Only to be used in exceptional cases
|
||||
* @param type
|
||||
* @param idN
|
||||
* @param backend
|
||||
* @param maxCacheAgeInSecs
|
||||
* @constructor
|
||||
*/
|
||||
public static async RawDownloadObjectAsync(
|
||||
type: string,
|
||||
idN: number,
|
||||
backend: string,
|
||||
maxCacheAgeInSecs?: number
|
||||
): Promise<OsmObject | "deleted"> {
|
||||
const full = type !== "node" ? "/full" : ""
|
||||
const url = `${this.backend}api/0.6/${type}/${idN}${full}`
|
||||
const url = `${backend}api/0.6/${type}/${idN}${full}`
|
||||
const rawData = await Utils.downloadJsonCachedAdvanced(
|
||||
url,
|
||||
(maxCacheAgeInSecs ?? 10) * 1000
|
||||
|
@ -227,7 +236,7 @@ export default class OsmObjectDownloader {
|
|||
}
|
||||
// A full query might contain more then just the requested object (e.g. nodes that are part of a way, where we only want the way)
|
||||
const parsed = OsmObject.ParseObjects(rawData["content"].elements)
|
||||
// Lets fetch the object we need
|
||||
// Let us fetch the object we need
|
||||
for (const osmObject of parsed) {
|
||||
if (osmObject.type !== type) {
|
||||
continue
|
||||
|
|
|
@ -435,7 +435,7 @@ export default class SimpleMetaTaggers {
|
|||
() => feature.properties["_country"]
|
||||
)
|
||||
let canonical =
|
||||
denomination?.canonicalValue(value, defaultDenom == denomination) ??
|
||||
denomination?.canonicalValue(value, defaultDenom == denomination, unit.inverted) ??
|
||||
undefined
|
||||
if (canonical === value) {
|
||||
break
|
||||
|
|
|
@ -331,6 +331,9 @@ export default class LinkedDataLoader {
|
|||
return
|
||||
}
|
||||
output[key] = output[key].map((v) => applyF(v))
|
||||
if(!output[key].some(v => v !== undefined)){
|
||||
delete output[key]
|
||||
}
|
||||
}
|
||||
|
||||
function asBoolean(key: string, invert: boolean = false) {
|
||||
|
@ -379,6 +382,7 @@ export default class LinkedDataLoader {
|
|||
}
|
||||
return "€" + Number(p)
|
||||
})
|
||||
|
||||
if (output["charge"] && output["timeUnit"]) {
|
||||
const duration =
|
||||
Number(output["chargeEnd"] ?? "1") - Number(output["chargeStart"] ?? "0")
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
import { Translation, TypedTranslation } from "../UI/i18n/Translation"
|
||||
import { DenominationConfigJson } from "./ThemeConfig/Json/UnitConfigJson"
|
||||
import Translations from "../UI/i18n/Translations"
|
||||
import { Validator } from "../UI/InputElement/Validator"
|
||||
|
||||
/**
|
||||
* A 'denomination' is one way to write a certain quantity.
|
||||
|
@ -15,6 +16,7 @@ export class Denomination {
|
|||
public readonly alternativeDenominations: string[]
|
||||
public readonly human: TypedTranslation<{ quantity: string }>
|
||||
public readonly humanSingular?: Translation
|
||||
private readonly _validator: Validator
|
||||
|
||||
private constructor(
|
||||
canonical: string,
|
||||
|
@ -24,7 +26,8 @@ export class Denomination {
|
|||
addSpace: boolean,
|
||||
alternativeDenominations: string[],
|
||||
_human: TypedTranslation<{ quantity: string }>,
|
||||
_humanSingular?: Translation
|
||||
_humanSingular: Translation,
|
||||
validator: Validator
|
||||
) {
|
||||
this.canonical = canonical
|
||||
this._canonicalSingular = _canonicalSingular
|
||||
|
@ -34,9 +37,10 @@ export class Denomination {
|
|||
this.alternativeDenominations = alternativeDenominations
|
||||
this.human = _human
|
||||
this.humanSingular = _humanSingular
|
||||
this._validator = validator
|
||||
}
|
||||
|
||||
public static fromJson(json: DenominationConfigJson, context: string) {
|
||||
public static fromJson(json: DenominationConfigJson, validator: Validator, context: string) {
|
||||
context = `${context}.unit(${json.canonicalDenomination})`
|
||||
const canonical = json.canonicalDenomination.trim()
|
||||
if (canonical === undefined) {
|
||||
|
@ -68,7 +72,8 @@ export class Denomination {
|
|||
json.addSpace ?? false,
|
||||
json.alternativeDenomination?.map((v) => v.trim()) ?? [],
|
||||
humanTexts,
|
||||
Translations.T(json.humanSingular, context + "humanSingular")
|
||||
Translations.T(json.humanSingular, context + "humanSingular"),
|
||||
validator
|
||||
)
|
||||
}
|
||||
|
||||
|
@ -81,7 +86,8 @@ export class Denomination {
|
|||
this.addSpace,
|
||||
this.alternativeDenominations,
|
||||
this.human,
|
||||
this.humanSingular
|
||||
this.humanSingular,
|
||||
this._validator
|
||||
)
|
||||
}
|
||||
|
||||
|
@ -94,7 +100,8 @@ export class Denomination {
|
|||
this.addSpace,
|
||||
[this.canonical, ...this.alternativeDenominations],
|
||||
this.human,
|
||||
this.humanSingular
|
||||
this.humanSingular,
|
||||
this._validator
|
||||
)
|
||||
}
|
||||
|
||||
|
@ -103,19 +110,21 @@ export class Denomination {
|
|||
* @param value the value from OSM
|
||||
* @param actAsDefault if set and the value can be parsed as number, will be parsed and trimmed
|
||||
*
|
||||
* import Validators from "../UI/InputElement/Validators"
|
||||
*
|
||||
* const unit = Denomination.fromJson({
|
||||
* canonicalDenomination: "m",
|
||||
* alternativeDenomination: ["meter"],
|
||||
* human: {
|
||||
* en: "{quantity} meter"
|
||||
* }
|
||||
* }, "test")
|
||||
* unit.canonicalValue("42m", true) // =>"42 m"
|
||||
* unit.canonicalValue("42", true) // =>"42 m"
|
||||
* unit.canonicalValue("42 m", true) // =>"42 m"
|
||||
* unit.canonicalValue("42 meter", true) // =>"42 m"
|
||||
* unit.canonicalValue("42m", true) // =>"42 m"
|
||||
* unit.canonicalValue("42", true) // =>"42 m"
|
||||
* }, Validators.get("float"), "test")
|
||||
* unit.canonicalValue("42m", true, false) // =>"42 m"
|
||||
* unit.canonicalValue("42", true, false) // =>"42 m"
|
||||
* unit.canonicalValue("42 m", true, false) // =>"42 m"
|
||||
* unit.canonicalValue("42 meter", true, false) // =>"42 m"
|
||||
* unit.canonicalValue("42m", true, false) // =>"42 m"
|
||||
* unit.canonicalValue("42", true, false) // =>"42 m"
|
||||
*
|
||||
* // Should be trimmed if canonical is empty
|
||||
* const unit = Denomination.fromJson({
|
||||
|
@ -124,22 +133,26 @@ export class Denomination {
|
|||
* human: {
|
||||
* en: "{quantity} meter"
|
||||
* }
|
||||
* }, "test")
|
||||
* unit.canonicalValue("42m", true) // =>"42"
|
||||
* unit.canonicalValue("42", true) // =>"42"
|
||||
* unit.canonicalValue("42 m", true) // =>"42"
|
||||
* unit.canonicalValue("42 meter", true) // =>"42"
|
||||
* }, Validators.get("float"), "test")
|
||||
* unit.canonicalValue("42m", true, false) // =>"42"
|
||||
* unit.canonicalValue("42", true, false) // =>"42"
|
||||
* unit.canonicalValue("42 m", true, false) // =>"42"
|
||||
* unit.canonicalValue("42 meter", true, false) // =>"42"
|
||||
*
|
||||
*
|
||||
*/
|
||||
public canonicalValue(value: string, actAsDefault: boolean): string {
|
||||
public canonicalValue(value: string, actAsDefault: boolean, inverted: boolean): string {
|
||||
if (value === undefined) {
|
||||
return undefined
|
||||
}
|
||||
const stripped = this.StrippedValue(value, actAsDefault)
|
||||
const stripped = this.StrippedValue(value, actAsDefault, inverted)
|
||||
if (stripped === null) {
|
||||
return null
|
||||
}
|
||||
if(inverted){
|
||||
return (stripped + "/" + this.canonical).trim()
|
||||
|
||||
}
|
||||
if (stripped === "1" && this._canonicalSingular !== undefined) {
|
||||
return ("1 " + this._canonicalSingular).trim()
|
||||
}
|
||||
|
@ -153,8 +166,8 @@ export class Denomination {
|
|||
*
|
||||
* Returns null if it doesn't match this unit
|
||||
*/
|
||||
public StrippedValue(value: string, actAsDefault: boolean): string {
|
||||
if (value === undefined) {
|
||||
public StrippedValue(value: string, actAsDefault: boolean, inverted: boolean): string {
|
||||
if (value === undefined || value === "") {
|
||||
return undefined
|
||||
}
|
||||
|
||||
|
@ -171,10 +184,16 @@ export class Denomination {
|
|||
|
||||
function substr(key) {
|
||||
if (self.prefix) {
|
||||
return value.substr(key.length).trim()
|
||||
} else {
|
||||
return value.substring(0, value.length - key.length).trim()
|
||||
return value.substring(key.length).trim()
|
||||
}
|
||||
let trimmed = value.substring(0, value.length - key.length).trim()
|
||||
if(!inverted){
|
||||
return trimmed
|
||||
}
|
||||
if(trimmed.endsWith("/")){
|
||||
trimmed = trimmed.substring(0, trimmed.length - 1).trim()
|
||||
}
|
||||
return trimmed
|
||||
}
|
||||
|
||||
if (this.canonical !== "" && startsWith(this.canonical.toLowerCase())) {
|
||||
|
@ -199,11 +218,13 @@ export class Denomination {
|
|||
return null
|
||||
}
|
||||
|
||||
const parsed = Number(value.trim())
|
||||
if (!isNaN(parsed)) {
|
||||
return value.trim()
|
||||
if(!this._validator.isValid(value.trim())){
|
||||
return null
|
||||
}
|
||||
return this._validator.reformat(value.trim())
|
||||
}
|
||||
|
||||
return null
|
||||
withValidator(validator: Validator) {
|
||||
return new Denomination(this.canonical, this._canonicalSingular, this.useIfNoUnitGiven, this.prefix, this.addSpace, this.alternativeDenominations, this.human, this.humanSingular, validator)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -519,6 +519,7 @@ export interface LayerConfigJson {
|
|||
/**
|
||||
* Either a list with [{"key": "unitname", "key2": {"quantity": "unitname", "denominations": ["denom", "denom"]}}]
|
||||
*
|
||||
* Use `"inverted": true` if the amount should be _divided_ by the denomination, e.g. for charge over time (`€5/day`)
|
||||
*
|
||||
* @see UnitConfigJson
|
||||
*
|
||||
|
@ -526,7 +527,7 @@ export interface LayerConfigJson {
|
|||
*/
|
||||
units?: (
|
||||
| UnitConfigJson
|
||||
| Record<string, string | { quantity: string; denominations: string[]; canonical?: string }>
|
||||
| Record<string, string | { quantity: string; denominations: string[]; canonical?: string, inverted?: boolean }>
|
||||
)[]
|
||||
|
||||
/**
|
||||
|
|
|
@ -229,6 +229,7 @@ export interface QuestionableTagRenderingConfigJson extends TagRenderingConfigJs
|
|||
* A (translated) text that is shown (as gray text) within the textfield
|
||||
* type: translation
|
||||
* group: expert
|
||||
* ifunset: No specific placeholder is set, show the type of the textfield
|
||||
*/
|
||||
placeholder?: Translatable
|
||||
|
||||
|
|
|
@ -88,7 +88,7 @@ export interface TagRenderingConfigJson {
|
|||
*
|
||||
* question: When should this item be shown?
|
||||
* type: tag
|
||||
* ifunset: No specific condition set; always show this tagRendering or ask the question if unkown
|
||||
* ifunset: No specific condition set; always show this tagRendering or show this question if unknown
|
||||
*
|
||||
* Only show this tagrendering (or ask the question) if the selected object also matches the tags specified as `condition`.
|
||||
*
|
||||
|
@ -132,9 +132,10 @@ export interface TagRenderingConfigJson {
|
|||
|
||||
/** question: When should this item be shown (including special conditions)?
|
||||
* type: tag
|
||||
* ifunset: No specific metacondition set which is evaluated against the <i>usersettings/application state</i>; always show this tagRendering or show this question if unknown
|
||||
*
|
||||
* If set, this tag will be evaluated agains the _usersettings/application state_ table.
|
||||
* Enable 'show debug info' in user settings to see available options.
|
||||
* If set, this tag will be evaluated against the _usersettings/application state_ table.
|
||||
* Enable 'show debug info' in user settings to see available options (at the settings-tab).
|
||||
* Note that values with an underscore depicts _application state_ (including metainfo about the user) whereas values without an underscore depict _user settings_
|
||||
*/
|
||||
metacondition?: TagConfigJson
|
||||
|
|
|
@ -97,18 +97,6 @@ export default class LayerConfig extends WithContextLoader {
|
|||
|
||||
this.allowSplit = json.allowSplit ?? false
|
||||
this.name = Translations.T(json.name, translationContext + ".name")
|
||||
if (json.units !== undefined && !Array.isArray(json.units)) {
|
||||
throw (
|
||||
"At " +
|
||||
context +
|
||||
".units: the 'units'-section should be a list; you probably have an object there"
|
||||
)
|
||||
}
|
||||
this.units = [].concat(
|
||||
...(json.units ?? []).map((unitJson, i) =>
|
||||
Unit.fromJson(unitJson, `${context}.unit[${i}]`)
|
||||
)
|
||||
)
|
||||
|
||||
if (json.description !== undefined) {
|
||||
if (Object.keys(json.description).length === 0) {
|
||||
|
@ -280,6 +268,18 @@ export default class LayerConfig extends WithContextLoader {
|
|||
this.id + ".tagRenderings[" + i + "]"
|
||||
)
|
||||
)
|
||||
if (json.units !== undefined && !Array.isArray(json.units)) {
|
||||
throw (
|
||||
"At " +
|
||||
context +
|
||||
".units: the 'units'-section should be a list; you probably have an object there"
|
||||
)
|
||||
}
|
||||
this.units = [].concat(
|
||||
...(json.units ?? []).map((unitJson, i) =>
|
||||
Unit.fromJson(unitJson, this.tagRenderings,`${context}.unit[${i}]`)
|
||||
)
|
||||
)
|
||||
|
||||
if (
|
||||
json.filter !== undefined &&
|
||||
|
|
|
@ -2,6 +2,10 @@ import BaseUIElement from "../UI/BaseUIElement"
|
|||
import { Denomination } from "./Denomination"
|
||||
import UnitConfigJson from "./ThemeConfig/Json/UnitConfigJson"
|
||||
import unit from "../../assets/layers/unit/unit.json"
|
||||
import { QuestionableTagRenderingConfigJson } from "./ThemeConfig/Json/QuestionableTagRenderingConfigJson"
|
||||
import TagRenderingConfig from "./ThemeConfig/TagRenderingConfig"
|
||||
import Validators, { ValidatorType } from "../UI/InputElement/Validators"
|
||||
import { Validator } from "../UI/InputElement/Validator"
|
||||
|
||||
export class Unit {
|
||||
private static allUnits = this.initUnits()
|
||||
|
@ -10,14 +14,20 @@ export class Unit {
|
|||
public readonly denominationsSorted: Denomination[]
|
||||
public readonly eraseInvalid: boolean
|
||||
public readonly quantity: string
|
||||
private readonly _validator: Validator
|
||||
public readonly inverted: boolean
|
||||
|
||||
constructor(
|
||||
quantity: string,
|
||||
appliesToKeys: string[],
|
||||
applicableDenominations: Denomination[],
|
||||
eraseInvalid: boolean
|
||||
eraseInvalid: boolean,
|
||||
validator: Validator,
|
||||
inverted: boolean = false
|
||||
) {
|
||||
this.quantity = quantity
|
||||
this._validator = validator
|
||||
this.inverted = inverted
|
||||
this.appliesToKeys = new Set(appliesToKeys)
|
||||
this.denominations = applicableDenominations
|
||||
this.eraseInvalid = eraseInvalid
|
||||
|
@ -66,13 +76,47 @@ export class Unit {
|
|||
static fromJson(
|
||||
json:
|
||||
| UnitConfigJson
|
||||
| Record<string, string | { quantity: string; denominations: string[] }>,
|
||||
| Record<string, string | { quantity: string; denominations: string[], inverted?: boolean }>,
|
||||
tagRenderings: TagRenderingConfig[],
|
||||
ctx: string
|
||||
): Unit[] {
|
||||
if (!json.appliesToKey && !json.quantity) {
|
||||
return this.loadFromLibrary(<any>json, ctx)
|
||||
|
||||
let types: Record<string, ValidatorType> = {}
|
||||
for (const tagRendering of tagRenderings) {
|
||||
if (tagRendering.freeform?.type) {
|
||||
types[tagRendering.freeform.key] = tagRendering.freeform.type
|
||||
}
|
||||
}
|
||||
return [this.parse(<UnitConfigJson>json, ctx)]
|
||||
|
||||
if (!json.appliesToKey && !json.quantity) {
|
||||
return this.loadFromLibrary(<any>json, types, ctx)
|
||||
}
|
||||
return this.parse(<UnitConfigJson>json, types, ctx)
|
||||
}
|
||||
|
||||
private static parseDenomination(json: UnitConfigJson, validator: Validator, appliesToKey: string, ctx: string): Unit {
|
||||
const applicable = json.applicableUnits.map((u, i) =>
|
||||
Denomination.fromJson(u, validator, `${ctx}.units[${i}]`)
|
||||
)
|
||||
|
||||
if (
|
||||
json.defaultInput &&
|
||||
!applicable.some((denom) => denom.canonical.trim() === json.defaultInput)
|
||||
) {
|
||||
throw `${ctx}: no denomination has the specified default denomination. The default denomination is '${
|
||||
json.defaultInput
|
||||
}', but the available denominations are ${applicable
|
||||
.map((denom) => denom.canonical)
|
||||
.join(", ")}`
|
||||
}
|
||||
|
||||
return new Unit(
|
||||
json.quantity ?? "",
|
||||
appliesToKey === undefined ? undefined : [appliesToKey],
|
||||
applicable,
|
||||
json.eraseInvalidValues ?? false,
|
||||
validator
|
||||
)
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -113,7 +157,7 @@ export class Unit {
|
|||
* ]
|
||||
* }, "test")
|
||||
*/
|
||||
private static parse(json: UnitConfigJson, ctx: string): Unit {
|
||||
private static parse(json: UnitConfigJson, types: Record<string, ValidatorType>, ctx: string): Unit[] {
|
||||
const appliesTo = json.appliesToKey
|
||||
for (let i = 0; i < (appliesTo ?? []).length; i++) {
|
||||
let key = appliesTo[i]
|
||||
|
@ -127,32 +171,22 @@ export class Unit {
|
|||
}
|
||||
// Some keys do have unit handling
|
||||
|
||||
const applicable = json.applicableUnits.map((u, i) =>
|
||||
Denomination.fromJson(u, `${ctx}.units[${i}]`)
|
||||
)
|
||||
|
||||
if (
|
||||
json.defaultInput &&
|
||||
!applicable.some((denom) => denom.canonical.trim() === json.defaultInput)
|
||||
) {
|
||||
throw `${ctx}: no denomination has the specified default denomination. The default denomination is '${
|
||||
json.defaultInput
|
||||
}', but the available denominations are ${applicable
|
||||
.map((denom) => denom.canonical)
|
||||
.join(", ")}`
|
||||
const units: Unit[] = []
|
||||
if (appliesTo === undefined) {
|
||||
units.push(this.parseDenomination(json, Validators.get("float"), undefined, ctx))
|
||||
}
|
||||
return new Unit(
|
||||
json.quantity ?? "",
|
||||
appliesTo,
|
||||
applicable,
|
||||
json.eraseInvalidValues ?? false
|
||||
)
|
||||
for (const key of appliesTo ?? []) {
|
||||
const validator = Validators.get(types[key] ?? "float")
|
||||
units.push(this.parseDenomination(json, validator, undefined, ctx))
|
||||
}
|
||||
return units
|
||||
}
|
||||
|
||||
private static initUnits(): Map<string, Unit> {
|
||||
const m = new Map<string, Unit>()
|
||||
const units = (<UnitConfigJson[]>unit.units).map((json, i) =>
|
||||
this.parse(json, "unit.json.units." + i)
|
||||
const units = (<UnitConfigJson[]>unit.units).flatMap((json, i) =>
|
||||
this.parse(json, {}, "unit.json.units." + i)
|
||||
)
|
||||
|
||||
for (const unit of units) {
|
||||
|
@ -179,17 +213,19 @@ export class Unit {
|
|||
private static loadFromLibrary(
|
||||
spec: Record<
|
||||
string,
|
||||
string | { quantity: string; denominations: string[]; canonical?: string }
|
||||
string | { quantity: string; denominations: string[]; canonical?: string, inverted?: boolean }
|
||||
>,
|
||||
types: Record<string, ValidatorType>,
|
||||
ctx: string
|
||||
): Unit[] {
|
||||
const units: Unit[] = []
|
||||
for (const key in spec) {
|
||||
const toLoad = spec[key]
|
||||
const validator = Validators.get(types[key] ?? "float")
|
||||
if (typeof toLoad === "string") {
|
||||
const loaded = this.getFromLibrary(toLoad, ctx)
|
||||
units.push(
|
||||
new Unit(loaded.quantity, [key], loaded.denominations, loaded.eraseInvalid)
|
||||
new Unit(loaded.quantity, [key], loaded.denominations, loaded.eraseInvalid, validator, toLoad["inverted"])
|
||||
)
|
||||
continue
|
||||
}
|
||||
|
@ -213,12 +249,13 @@ export class Unit {
|
|||
const denoms = toLoad.denominations
|
||||
.map((d) => d.toLowerCase())
|
||||
.map((d) => fetchDenom(d))
|
||||
.map(d => d.withValidator(validator))
|
||||
|
||||
if (toLoad.canonical) {
|
||||
const canonical = fetchDenom(toLoad.canonical)
|
||||
const canonical = fetchDenom(toLoad.canonical).withValidator(validator)
|
||||
denoms.unshift(canonical.withBlankCanonical())
|
||||
}
|
||||
units.push(new Unit(loaded.quantity, [key], denoms, loaded.eraseInvalid))
|
||||
units.push(new Unit(loaded.quantity, [key], denoms, loaded.eraseInvalid, validator, toLoad["inverted"]))
|
||||
}
|
||||
return units
|
||||
}
|
||||
|
@ -240,7 +277,7 @@ export class Unit {
|
|||
}
|
||||
const defaultDenom = this.getDefaultDenomination(country)
|
||||
for (const denomination of this.denominationsSorted) {
|
||||
const bare = denomination.StrippedValue(valueWithDenom, defaultDenom === denomination)
|
||||
const bare = denomination.StrippedValue(valueWithDenom, defaultDenom === denomination, this.inverted)
|
||||
if (bare !== null) {
|
||||
return [bare, denomination]
|
||||
}
|
||||
|
@ -253,10 +290,13 @@ export class Unit {
|
|||
return undefined
|
||||
}
|
||||
const [stripped, denom] = this.findDenomination(value, country)
|
||||
const human = denom?.human
|
||||
if(this.inverted ){
|
||||
return human.Subs({quantity: stripped+"/"})
|
||||
}
|
||||
if (stripped === "1") {
|
||||
return denom?.humanSingular ?? stripped
|
||||
}
|
||||
const human = denom?.human
|
||||
if (human === undefined) {
|
||||
return stripped ?? value
|
||||
}
|
||||
|
@ -266,6 +306,10 @@ export class Unit {
|
|||
|
||||
public toOsm(value: string, denomination: string) {
|
||||
const denom = this.denominations.find((d) => d.canonical === denomination)
|
||||
if(this.inverted){
|
||||
return value+"/"+denom._canonicalSingular
|
||||
}
|
||||
|
||||
const space = denom.addSpace ? " " : ""
|
||||
if (denom.prefix) {
|
||||
return denom.canonical + space + value
|
||||
|
@ -273,7 +317,7 @@ export class Unit {
|
|||
return value + space + denom.canonical
|
||||
}
|
||||
|
||||
public getDefaultDenomination(country: () => string) {
|
||||
public getDefaultDenomination(country: () => string): Denomination {
|
||||
for (const denomination of this.denominations) {
|
||||
if (denomination.useIfNoUnitGiven === true) {
|
||||
return denomination
|
||||
|
|
55
src/UI/BigComponents/ExtraLinkButton.svelte
Normal file
55
src/UI/BigComponents/ExtraLinkButton.svelte
Normal file
|
@ -0,0 +1,55 @@
|
|||
<script lang="ts">
|
||||
import ExtraLinkConfig from "../../Models/ThemeConfig/ExtraLinkConfig"
|
||||
import Locale from "../i18n/Locale"
|
||||
import { Utils } from "../../Utils"
|
||||
import Translations from "../i18n/Translations"
|
||||
import type { SpecialVisualizationState } from "../SpecialVisualization"
|
||||
import Pop_out from "../../assets/svg/Pop_out.svelte"
|
||||
import Tr from "../Base/Tr.svelte"
|
||||
import Icon from "../Map/Icon.svelte"
|
||||
|
||||
|
||||
export let state: SpecialVisualizationState
|
||||
let theme = state.layout?.id ?? ""
|
||||
let config: ExtraLinkConfig = state.layout.extraLink
|
||||
const isIframe = window !== window.top
|
||||
let basepath = window.location.host
|
||||
let showWelcomeMessageSwitch = state.featureSwitches.featureSwitchWelcomeMessage
|
||||
|
||||
const t = Translations.t.general
|
||||
const href = state.mapProperties.location.map(
|
||||
(loc) => {
|
||||
const subs = {
|
||||
...loc,
|
||||
theme: theme,
|
||||
basepath,
|
||||
language: Locale.language.data
|
||||
}
|
||||
return Utils.SubstituteKeys(config.href, subs)
|
||||
},
|
||||
[state.mapProperties.zoom]
|
||||
)
|
||||
</script>
|
||||
|
||||
|
||||
{#if config !== undefined &&
|
||||
!(config.requirements.has("iframe") && !isIframe) &&
|
||||
!(config.requirements.has("no-iframe") && isIframe) &&
|
||||
!(config.requirements.has("welcome-message") && !$showWelcomeMessageSwitch) &&
|
||||
!(config.requirements.has("no-welcome-message") && $showWelcomeMessageSwitch)}
|
||||
<div class="links-as-button">
|
||||
|
||||
<a href={$href} target={config.newTab ? "_blank" : ""} rel="noopener"
|
||||
class="flex pointer-events-auto rounded-full border-black">
|
||||
|
||||
<Icon icon={config.icon} clss="w-6 h-6 m-2"/>
|
||||
|
||||
{#if config.text}
|
||||
<Tr t={config.text} />
|
||||
{:else}
|
||||
<Tr t={t.screenToSmall.Subs({theme: state.layout.title})} />
|
||||
{/if}
|
||||
|
||||
</a>
|
||||
</div>
|
||||
{/if}
|
|
@ -1,101 +0,0 @@
|
|||
import { UIElement } from "../UIElement"
|
||||
import BaseUIElement from "../BaseUIElement"
|
||||
import { Store } from "../../Logic/UIEventSource"
|
||||
import ExtraLinkConfig from "../../Models/ThemeConfig/ExtraLinkConfig"
|
||||
import Img from "../Base/Img"
|
||||
import { SubtleButton } from "../Base/SubtleButton"
|
||||
import Toggle from "../Input/Toggle"
|
||||
import Locale from "../i18n/Locale"
|
||||
import { Utils } from "../../Utils"
|
||||
import Svg from "../../Svg"
|
||||
import Translations from "../i18n/Translations"
|
||||
import { Translation } from "../i18n/Translation"
|
||||
|
||||
interface ExtraLinkButtonState {
|
||||
layout: { id: string; title: Translation }
|
||||
featureSwitches: { featureSwitchWelcomeMessage: Store<boolean> }
|
||||
mapProperties: {
|
||||
location: Store<{ lon: number; lat: number }>
|
||||
zoom: Store<number>
|
||||
}
|
||||
}
|
||||
export default class ExtraLinkButton extends UIElement {
|
||||
private readonly _config: ExtraLinkConfig
|
||||
private readonly state: ExtraLinkButtonState
|
||||
|
||||
constructor(state: ExtraLinkButtonState, config: ExtraLinkConfig) {
|
||||
super()
|
||||
this.state = state
|
||||
this._config = config
|
||||
}
|
||||
|
||||
protected InnerRender(): BaseUIElement {
|
||||
if (this._config === undefined) {
|
||||
return undefined
|
||||
}
|
||||
|
||||
const c = this._config
|
||||
|
||||
const isIframe = window !== window.top
|
||||
if (c.requirements?.has("iframe") && !isIframe) {
|
||||
return undefined
|
||||
}
|
||||
|
||||
if (c.requirements?.has("no-iframe") && isIframe) {
|
||||
return undefined
|
||||
}
|
||||
|
||||
let link: BaseUIElement
|
||||
const theme = this.state.layout?.id ?? ""
|
||||
const basepath = window.location.host
|
||||
const href = this.state.mapProperties.location.map(
|
||||
(loc) => {
|
||||
const subs = {
|
||||
...loc,
|
||||
theme: theme,
|
||||
basepath,
|
||||
language: Locale.language.data,
|
||||
}
|
||||
return Utils.SubstituteKeys(c.href, subs)
|
||||
},
|
||||
[this.state.mapProperties.zoom]
|
||||
)
|
||||
|
||||
let img: BaseUIElement = Svg.pop_out_svg()
|
||||
if (c.icon !== undefined) {
|
||||
img = new Img(c.icon).SetClass("h-6")
|
||||
}
|
||||
|
||||
let text: Translation
|
||||
if (c.text === undefined) {
|
||||
text = Translations.t.general.screenToSmall.Subs({
|
||||
theme: this.state.layout.title,
|
||||
})
|
||||
} else {
|
||||
text = c.text.Clone()
|
||||
}
|
||||
|
||||
link = new SubtleButton(img, text, {
|
||||
url: href,
|
||||
newTab: c.newTab,
|
||||
})
|
||||
|
||||
if (c.requirements?.has("no-welcome-message")) {
|
||||
link = new Toggle(
|
||||
undefined,
|
||||
link,
|
||||
this.state.featureSwitches.featureSwitchWelcomeMessage
|
||||
)
|
||||
}
|
||||
|
||||
if (c.requirements?.has("welcome-message")) {
|
||||
link = new Toggle(
|
||||
link,
|
||||
undefined,
|
||||
this.state.featureSwitches.featureSwitchWelcomeMessage
|
||||
)
|
||||
}
|
||||
|
||||
return link
|
||||
}
|
||||
}
|
|
@ -91,11 +91,6 @@
|
|||
return
|
||||
}
|
||||
|
||||
if (unit !== undefined && isNaN(Number(v))) {
|
||||
value.setData(undefined)
|
||||
return
|
||||
}
|
||||
|
||||
feedback?.setData(undefined)
|
||||
if (selectedUnit.data) {
|
||||
value.setData(unit.toOsm(v, selectedUnit.data))
|
||||
|
|
|
@ -34,6 +34,7 @@
|
|||
import { LinkIcon } from "@babeard/svelte-heroicons/mini"
|
||||
import Square_rounded from "../../assets/svg/Square_rounded.svelte"
|
||||
import Bug from "../../assets/svg/Bug.svelte"
|
||||
import Pop_out from "../../assets/svg/Pop_out.svelte"
|
||||
|
||||
/**
|
||||
* Renders a single icon.
|
||||
|
@ -123,6 +124,9 @@
|
|||
<AddSmall {color} class={clss} />
|
||||
{:else if icon === "link"}
|
||||
<LinkIcon style="--svg-color: {color}" class={twMerge(clss, "apply-fill")} />
|
||||
{:else if icon === "popout"}
|
||||
<LinkIcon style="--svg-color: {color}" />
|
||||
|
||||
{:else}
|
||||
<img class={clss ?? "h-full w-full"} src={icon} aria-hidden="true" alt="" />
|
||||
{/if}
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue