Merge branches

This commit is contained in:
Pieter Vander Vennet 2020-12-14 00:54:13 +01:00
commit 77b708dc2d
47 changed files with 1234 additions and 523 deletions

File diff suppressed because one or more lines are too long

View file

@ -100,7 +100,7 @@ export default class LayerConfig {
}
this.tagRenderings = trs(json.tagRenderings).concat(roamingRenderings);
this.titleIcons = trs(json.titleIcons ?? ["wikipedialink","osmlink"]);
this.titleIcons = trs(json.titleIcons ?? ["phonelink","wikipedialink","osmlink", "sharelink"]);
function tr(key, deflt) {

View file

@ -121,6 +121,12 @@ export interface LayerConfigJson {
/**
* All the tag renderings.
* A tag rendering is a block that either shows the known value or asks a question.
*
* Refer to the class `TagRenderingConfigJson` to see the possibilities.
*
* Note that we can also use a string here - where the string refers to a tagrenering defined in `assets/questions/questions.json`,
* where a few very general questions are defined e.g. website, phone number, ...
*
*/
tagRenderings?: (string | TagRenderingConfigJson) []
}

View file

@ -15,6 +15,8 @@ import * as maps from "../assets/layers/maps/maps.json"
import * as information_boards from "../assets/layers/information_board/information_board.json"
import * as direction from "../assets/layers/direction/direction.json"
import * as surveillance_camera from "../assets/layers/surveillance_cameras/surveillance_cameras.json"
import * as toilets from "../assets/layers/toilets/toilets.json"
import LayerConfig from "./JSON/LayerConfig";
export default class SharedLayers {
@ -41,6 +43,7 @@ export default class SharedLayers {
new LayerConfig(maps,[], "shared_layers"),
new LayerConfig(direction,[], "shared_layers"),
new LayerConfig(information_boards,[], "shared_layers"),
new LayerConfig(toilets,[], "shared_layers"),
new LayerConfig(surveillance_camera,[], "shared_layers")
];

View file

@ -1,5 +1,6 @@
import * as questions from "../assets/questions/questions.json";
import TagRenderingConfig from "./JSON/TagRenderingConfig";
import * as questions from "../assets/tagRenderings/questions.json";
import * as icons from "../assets/tagRenderings/icons.json";
export default class SharedTagRenderings {
@ -7,13 +8,24 @@ export default class SharedTagRenderings {
private static generatedSharedFields() {
const dict = {}
for (const key in questions) {
function add(key, store){
try {
dict[key] = new TagRenderingConfig(questions[key])
dict[key] = new TagRenderingConfig(store[key])
} catch (e) {
console.error("COULD NOT PARSE", key, " FROM QUESTIONS:", e)
console.error("BUG: could not parse", key, " from questions.json or icons.json", e)
}
}
for (const key in questions) {
add(key, questions);
}
for (const key in icons) {
add(key, icons);
}
return dict;
}

View file

@ -85,6 +85,11 @@ export class InitUiElements {
throw "Incorrect layout"
}
const hashContent = QueryParameters.GetQueryParameter("hash_content", "", "A workaround for the share-api which doesn't share the hash...");
if((hashContent.data ?? "") !== ""){
window.location.hash = hashContent.data;
}
console.log("Using layout: ", layoutToUse.id, "LayoutFromBase64 is ", layoutFromBase64);
State.state = new State(layoutToUse);
@ -175,7 +180,7 @@ export class InitUiElements {
continue;
}
if(layer.title === null && layer.tagRenderings.length === 0){
if((layer.title ?? null) === null && layer.tagRenderings.length === 0){
continue;
}
@ -230,7 +235,6 @@ export class InitUiElements {
});
const marker = L.marker([home.lat, home.lon], {icon: icon})
marker.addTo(State.state.bm.map)
console.log(marker)
});
new GeoLocationHandler()
@ -300,7 +304,7 @@ export class InitUiElements {
]
if (State.state.featureSwitchShareScreen.data) {
tabs.push({header: Svg.share, content: new ShareScreen()});
tabs.push({header: Svg.share_img, content: new ShareScreen()});
}
if (State.state.featureSwitchMoreQuests.data) {

View file

@ -184,7 +184,9 @@ export class FilteredLayer {
if (feature.properties.id.replace(/\//g, "_") === Hash.Get().data) {
const center = GeoOperations.centerpoint(feature).geometry.coordinates;
popup.setLatLng({lat: center[1], lng: center[0]});
popup.openOn(State.state.bm.map)
popup.openOn(State.state.bm.map);
State.state.selectedElement.setData(feature);
uiElement.Update();
}
}

View file

@ -33,14 +33,10 @@ export class GeoLocationHandler extends UIElement {
function onAccuratePositionProgress(e) {
console.log(e.accuracy);
console.log(e.latlng);
State.state.currentGPSLocation.setData({latlng: e.latlng, accuracy: e.accuracy});
}
function onAccuratePositionFound(e) {
console.log(e.accuracy);
console.log(e.latlng);
State.state.currentGPSLocation.setData({latlng: e.latlng, accuracy: e.accuracy});
}

View file

@ -260,3 +260,6 @@ Shower icon (used in 'bike_cleaning.svg'):
https://commons.wikimedia.org/wiki/File:Shower_symbol.svg
Bench icons from StreetComplete: https://github.com/westnordost/StreetComplete/tree/v25.0-beta1/res/graphics/quest%20icons, GPLv3.0
Urinal icon: https://thenounproject.com/term/urinal/1307984/

View file

@ -23,7 +23,7 @@ export default class State {
// The singleton of the global state
public static state: State;
public static vNumber = "0.2.0";
public static vNumber = "0.2.2a";
// The user journey states thresholds when a new feature gets unlocked
public static userJourney = {

11
Svg.ts
View file

@ -14,7 +14,7 @@ export default class Svg {
public static addSmall_svg() { return new FixedUiElement(Svg.addSmall);}
public static addSmall_ui() { return new FixedUiElement(Svg.addSmall_img);}
public static ampersand = "e <svg xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:cc=\"http://creativecommons.org/ns#\" xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\" xmlns:svg=\"http://www.w3.org/2000/svg\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:sodipodi=\"http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd\" xmlns:inkscape=\"http://www.inkscape.org/namespaces/inkscape\" width=\"275.9444\" height=\"243.66881\" version=\"1.1\" id=\"svg6\" sodipodi:docname=\"Ampersand.svg\" inkscape:version=\"0.92.4 (5da689c313, 2019-01-14)\"> <metadata id=\"metadata12\"> <rdf:RDF> <cc:Work rdf:about=\"\"> <dc:format>image/svg+xml</dc:format> <dc:type rdf:resource=\"http://purl.org/dc/dcmitype/StillImage\" /> </cc:Work> </rdf:RDF> </metadata> <defs id=\"defs10\" /> <sodipodi:namedview pagecolor=\"#ffffff\" bordercolor=\"#666666\" borderopacity=\"1\" objecttolerance=\"10\" gridtolerance=\"10\" guidetolerance=\"10\" inkscape:pageopacity=\"0\" inkscape:pageshadow=\"2\" inkscape:window-width=\"1680\" inkscape:window-height=\"1013\" id=\"namedview8\" showgrid=\"false\" inkscape:zoom=\"0.5503876\" inkscape:cx=\"319.5\" inkscape:cy=\"120\" inkscape:window-x=\"1560\" inkscape:window-y=\"0\" inkscape:window-maximized=\"1\" inkscape:current-layer=\"svg6\" /> <path d=\"M 69.184621,88.05971 C 65.398038,84.28878 45.405425,62.369149 47.716835,38.654524 49.990823,15.323837 73.884556,1.2473955 95.97427,0.11693352 c 20.36977,-1.042443 43.85918,4.70805898 53.3103,24.39507048 10.11956,21.079395 -1.28925,45.999521 -18.03685,58.640336 -5.82684,4.398004 -7.18682,4.599329 -15.78717,8.35864 -12.3926,5.41695 -24.869636,10.70587 -37.591472,15.28724 -26.286247,9.46617 -46.329939,30.90918 -45.609377,60.10938 0.656673,26.61116 24.371436,47.43668 49.951101,51.46486 27.220348,4.28654 49.202778,-0.15657 67.923898,-21.02736 8.04442,-8.96814 24.45293,-23.68334 32.63281,-32.53125 14.48284,-15.66562 21.97669,-28.32038 27.29668,-49.45345 3.60407,-14.31675 -20.5185,-11.01811 -16.28105,-23.06216 25.44722,-2.93304 51.02915,-3.7848 76.5625,-5.66406 4.00323,11.84618 -9.36778,8.3653 -26.72951,23.04671 -19.60573,16.579 -28.72934,30.72561 -45.60418,49.85029 l -11.89837,13.48472 c -8.00837,9.07609 -21.15724,23.50336 -29.33044,32.43076 -17.4629,19.07433 -33.57017,30.64012 -59.50887,35.61559 -27.730664,5.31919 -60.623141,2.30496 -80.151308,-20.4437 C -3.6264102,196.44728 -7.0848351,156.57316 15.462826,132.33729 30.171306,116.52755 38.031184,108.84767 57.724466,100.76314 73.147466,94.43165 97.05575,88.100173 109.29677,82.829346 136.69178,71.033402 137.40896,42.147541 124.50818,21.048935 113.44184,2.9504655 80.908653,4.4216525 74.904904,25.669377 69.689417,44.127381 77.089538,56.651269 88.37226,69.60789 l 96.21768,110.49249 c 11.83509,14.20823 29.6542,37.45695 49.80585,41.07969 13.32763,2.39596 30.53611,-3.5713 39.88214,-12.02915 4.97541,9.00928 -2.24528,16.35839 -7.83854,22.01449 -18.29468,18.50022 -49.85481,14.73994 -70.12946,-0.0122 -12.30082,-8.95026 -20.35382,-15.29947 -31.35277,-27.32693 z\" id=\"path2\" inkscape:connector-curvature=\"0\" /> </svg> "
public static ampersand = " <svg xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:cc=\"http://creativecommons.org/ns#\" xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\" xmlns:svg=\"http://www.w3.org/2000/svg\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:sodipodi=\"http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd\" xmlns:inkscape=\"http://www.inkscape.org/namespaces/inkscape\" width=\"275.9444\" height=\"243.66881\" version=\"1.1\" id=\"svg6\" sodipodi:docname=\"Ampersand.svg\" inkscape:version=\"0.92.4 (5da689c313, 2019-01-14)\"> <metadata id=\"metadata12\"> <rdf:RDF> <cc:Work rdf:about=\"\"> <dc:format>image/svg+xml</dc:format> <dc:type rdf:resource=\"http://purl.org/dc/dcmitype/StillImage\" /> </cc:Work> </rdf:RDF> </metadata> <defs id=\"defs10\" /> <sodipodi:namedview pagecolor=\"#ffffff\" bordercolor=\"#666666\" borderopacity=\"1\" objecttolerance=\"10\" gridtolerance=\"10\" guidetolerance=\"10\" inkscape:pageopacity=\"0\" inkscape:pageshadow=\"2\" inkscape:window-width=\"1680\" inkscape:window-height=\"1013\" id=\"namedview8\" showgrid=\"false\" inkscape:zoom=\"0.5503876\" inkscape:cx=\"319.5\" inkscape:cy=\"120\" inkscape:window-x=\"1560\" inkscape:window-y=\"0\" inkscape:window-maximized=\"1\" inkscape:current-layer=\"svg6\" /> <path d=\"M 69.184621,88.05971 C 65.398038,84.28878 45.405425,62.369149 47.716835,38.654524 49.990823,15.323837 73.884556,1.2473955 95.97427,0.11693352 c 20.36977,-1.042443 43.85918,4.70805898 53.3103,24.39507048 10.11956,21.079395 -1.28925,45.999521 -18.03685,58.640336 -5.82684,4.398004 -7.18682,4.599329 -15.78717,8.35864 -12.3926,5.41695 -24.869636,10.70587 -37.591472,15.28724 -26.286247,9.46617 -46.329939,30.90918 -45.609377,60.10938 0.656673,26.61116 24.371436,47.43668 49.951101,51.46486 27.220348,4.28654 49.202778,-0.15657 67.923898,-21.02736 8.04442,-8.96814 24.45293,-23.68334 32.63281,-32.53125 14.48284,-15.66562 21.97669,-28.32038 27.29668,-49.45345 3.60407,-14.31675 -20.5185,-11.01811 -16.28105,-23.06216 25.44722,-2.93304 51.02915,-3.7848 76.5625,-5.66406 4.00323,11.84618 -9.36778,8.3653 -26.72951,23.04671 -19.60573,16.579 -28.72934,30.72561 -45.60418,49.85029 l -11.89837,13.48472 c -8.00837,9.07609 -21.15724,23.50336 -29.33044,32.43076 -17.4629,19.07433 -33.57017,30.64012 -59.50887,35.61559 -27.730664,5.31919 -60.623141,2.30496 -80.151308,-20.4437 C -3.6264102,196.44728 -7.0848351,156.57316 15.462826,132.33729 30.171306,116.52755 38.031184,108.84767 57.724466,100.76314 73.147466,94.43165 97.05575,88.100173 109.29677,82.829346 136.69178,71.033402 137.40896,42.147541 124.50818,21.048935 113.44184,2.9504655 80.908653,4.4216525 74.904904,25.669377 69.689417,44.127381 77.089538,56.651269 88.37226,69.60789 l 96.21768,110.49249 c 11.83509,14.20823 29.6542,37.45695 49.80585,41.07969 13.32763,2.39596 30.53611,-3.5713 39.88214,-12.02915 4.97541,9.00928 -2.24528,16.35839 -7.83854,22.01449 -18.29468,18.50022 -49.85481,14.73994 -70.12946,-0.0122 -12.30082,-8.95026 -20.35382,-15.29947 -31.35277,-27.32693 z\" id=\"path2\" inkscape:connector-curvature=\"0\" /> </svg> "
public static ampersand_img = Img.AsImageElement(Svg.ampersand)
public static ampersand_svg() { return new FixedUiElement(Svg.ampersand);}
public static ampersand_ui() { return new FixedUiElement(Svg.ampersand_img);}
@ -174,6 +174,11 @@ export default class Svg {
public static pencil_svg() { return new FixedUiElement(Svg.pencil);}
public static pencil_ui() { return new FixedUiElement(Svg.pencil_img);}
public static phone = " <svg xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:cc=\"http://creativecommons.org/ns#\" xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\" xmlns:svg=\"http://www.w3.org/2000/svg\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:sodipodi=\"http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd\" xmlns:inkscape=\"http://www.inkscape.org/namespaces/inkscape\" viewBox=\"0 -256 1792 1792\" id=\"svg3013\" version=\"1.1\" inkscape:version=\"0.48.3.1 r9886\" width=\"100%\" height=\"100%\" sodipodi:docname=\"phone_font_awesome.svg\"> <metadata id=\"metadata3023\"> <rdf:RDF> <cc:Work rdf:about=\"\"> <dc:format>image/svg+xml</dc:format> <dc:type rdf:resource=\"http://purl.org/dc/dcmitype/StillImage\" /> </cc:Work> </rdf:RDF> </metadata> <defs id=\"defs3021\" /> <sodipodi:namedview pagecolor=\"#ffffff\" bordercolor=\"#666666\" borderopacity=\"1\" objecttolerance=\"10\" gridtolerance=\"10\" guidetolerance=\"10\" inkscape:pageopacity=\"0\" inkscape:pageshadow=\"2\" inkscape:window-width=\"640\" inkscape:window-height=\"480\" id=\"namedview3019\" showgrid=\"false\" inkscape:zoom=\"0.13169643\" inkscape:cx=\"896\" inkscape:cy=\"896\" inkscape:window-x=\"0\" inkscape:window-y=\"25\" inkscape:window-maximized=\"0\" inkscape:current-layer=\"svg3013\" /> <g transform=\"matrix(1,0,0,-1,159.45763,1293.0169)\" id=\"g3015\"> <path d=\"m 1408,296 q 0,-27 -10,-70.5 Q 1388,182 1377,157 1356,107 1255,51 1161,0 1069,0 1042,0 1016.5,3.5 991,7 959,16 927,25 911.5,30.5 896,36 856,51 816,66 807,69 709,104 632,152 504,231 367.5,367.5 231,504 152,632 104,709 69,807 66,816 51,856 36,896 30.5,911.5 25,927 16,959 7,991 3.5,1016.5 0,1042 0,1069 q 0,92 51,186 56,101 106,122 25,11 68.5,21 43.5,10 70.5,10 14,0 21,-3 18,-6 53,-76 11,-19 30,-54 19,-35 35,-63.5 16,-28.5 31,-53.5 3,-4 17.5,-25 14.5,-21 21.5,-35.5 7,-14.5 7,-28.5 0,-20 -28.5,-50 -28.5,-30 -62,-55 -33.5,-25 -62,-53 -28.5,-28 -28.5,-46 0,-9 5,-22.5 5,-13.5 8.5,-20.5 3.5,-7 14,-24 10.5,-17 11.5,-19 76,-137 174,-235 98,-98 235,-174 2,-1 19,-11.5 17,-10.5 24,-14 7,-3.5 20.5,-8.5 13.5,-5 22.5,-5 18,0 46,28.5 28,28.5 53,62 25,33.5 55,62 30,28.5 50,28.5 14,0 28.5,-7 14.5,-7 35.5,-21.5 21,-14.5 25,-17.5 25,-15 53.5,-31 28.5,-16 63.5,-35 35,-19 54,-30 70,-35 76,-53 3,-7 3,-21 z\" id=\"path3017\" inkscape:connector-curvature=\"0\" style=\"fill:currentColor\" /> </g> </svg> "
public static phone_img = Img.AsImageElement(Svg.phone)
public static phone_svg() { return new FixedUiElement(Svg.phone);}
public static phone_ui() { return new FixedUiElement(Svg.phone_img);}
public static pop_out = " <!-- Svg Vector Icons : http://www.onlinewebfonts.com/icon --> <!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\"> <svg version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\" viewBox=\"0 0 1000 1000\" enable-background=\"new 0 0 1000 1000\" xml:space=\"preserve\"> <metadata> Svg Vector Icons : http://www.onlinewebfonts.com/icon </metadata> <g><g><path d=\"M485,379.5l130.6,130.6l245.8-245.8l126.9,126.9l0.2-379L607.1,10l123.8,123.7L485,379.5L485,379.5z M986.4,546.3l-94.1-95.4l1.7,441.3l-784.7,0.4l0.8-782.7l438.9-2l-98-98H108C53.9,10,10,54,10,108v784c0,54.1,43.9,98,98,98h784c54.1,0,98-43.9,98-98L986.4,546.3z\"/></g></g> </svg>"
public static pop_out_img = Img.AsImageElement(Svg.pop_out)
public static pop_out_svg() { return new FixedUiElement(Svg.pop_out);}
@ -189,7 +194,7 @@ export default class Svg {
public static search_svg() { return new FixedUiElement(Svg.search);}
public static search_ui() { return new FixedUiElement(Svg.search_img);}
public static share = " <!-- Created with Inkscape (http://www.inkscape.org/) --> <svg xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:cc=\"http://creativecommons.org/ns#\" xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\" xmlns:svg=\"http://www.w3.org/2000/svg\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:sodipodi=\"http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd\" xmlns:inkscape=\"http://www.inkscape.org/namespaces/inkscape\" width=\"100\" height=\"100\" viewBox=\"0 0 26.458333 26.458334\" version=\"1.1\" id=\"svg8\" inkscape:version=\"0.92.4 (5da689c313, 2019-01-14)\" sodipodi:docname=\"share.svg\"> <defs id=\"defs2\" /> <sodipodi:namedview id=\"base\" pagecolor=\"#ffffff\" bordercolor=\"#666666\" borderopacity=\"1.0\" inkscape:pageopacity=\"0.0\" inkscape:pageshadow=\"2\" inkscape:zoom=\"4\" inkscape:cx=\"-15.237738\" inkscape:cy=\"36.323203\" inkscape:document-units=\"px\" inkscape:current-layer=\"layer1\" showgrid=\"false\" units=\"px\" showguides=\"true\" inkscape:guide-bbox=\"true\" inkscape:window-width=\"1920\" inkscape:window-height=\"1001\" inkscape:window-x=\"0\" inkscape:window-y=\"1050\" inkscape:window-maximized=\"1\"> <sodipodi:guide position=\"13.229167,23.859748\" orientation=\"1,0\" id=\"guide815\" inkscape:locked=\"false\" /> <sodipodi:guide position=\"14.944824,13.229167\" orientation=\"0,1\" id=\"guide817\" inkscape:locked=\"false\" /> <sodipodi:guide position=\"19.182291,3.4395834\" orientation=\"1,0\" id=\"guide852\" inkscape:locked=\"false\" /> </sodipodi:namedview> <metadata id=\"metadata5\"> <rdf:RDF> <cc:Work rdf:about=\"\"> <dc:format>image/svg+xml</dc:format> <dc:type rdf:resource=\"http://purl.org/dc/dcmitype/StillImage\" /> <dc:title /> </cc:Work> </rdf:RDF> </metadata> <g inkscape:label=\"Layer 1\" inkscape:groupmode=\"layer\" id=\"layer1\" transform=\"translate(0,-270.54165)\"> <path style=\"fill: none !important;stroke-width:2.43863511;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1\" d=\"m 19.212364,278.17517 -11.9689358,5.52059 11.9388628,5.50669\" id=\"path819\" inkscape:connector-curvature=\"0\" sodipodi:nodetypes=\"ccc\" /> <circle style=\"fill-opacity:1;stroke:none;stroke-width:0.53329796;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.97014926\" id=\"path820\" cx=\"7.2434282\" cy=\"283.69574\" r=\"3.9119694\" /> <circle style=\"fill-opacity:1;stroke:none;stroke-width:0.53329796;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.97014926\" id=\"path820-3\" cx=\"19.48818\" cy=\"289.22873\" r=\"3.9119689\" /> <circle style=\"fill-opacity:1;stroke:none;stroke-width:0.53329796;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.97014926\" id=\"path820-3-6\" cx=\"19.48818\" cy=\"277.56281\" r=\"3.9119689\" /> </g> </svg> "
public static share = " <svg xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:cc=\"http://creativecommons.org/ns#\" xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\" xmlns:svg=\"http://www.w3.org/2000/svg\" xmlns=\"http://www.w3.org/2000/svg\" id=\"svg8\" version=\"1.1\" viewBox=\"0 0 20.06869 19.489862\" height=\"73.662468\" width=\"75.850166\"> <defs id=\"defs2\" /> <metadata id=\"metadata5\"> <rdf:RDF> <cc:Work rdf:about=\"\"> <dc:format>image/svg+xml</dc:format> <dc:type rdf:resource=\"http://purl.org/dc/dcmitype/StillImage\" /> <dc:title></dc:title> </cc:Work> </rdf:RDF> </metadata> <g transform=\"translate(-3.3314588,-273.65084)\" id=\"layer1\"> <path id=\"path819\" d=\"m 19.212364,278.17517 -11.9689358,5.52059 11.9388628,5.50669\" style=\"fill: none !important;stroke-width:2.43863511;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;stroke:#000000\" /> <circle r=\"3.9119694\" cy=\"283.69574\" cx=\"7.2434282\" id=\"path820\" style=\"fill-opacity:1;stroke:none;stroke-width:0.53329796;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1\" /> <circle r=\"3.9119689\" cy=\"289.22873\" cx=\"19.48818\" id=\"path820-3\" style=\"fill-opacity:1;stroke:none;stroke-width:0.53329796;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.97014926\" /> <circle r=\"3.9119689\" cy=\"277.56281\" cx=\"19.48818\" id=\"path820-3-6\" style=\"fill-opacity:1;stroke:none;stroke-width:0.53329796;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1\" /> </g> </svg> "
public static share_img = Img.AsImageElement(Svg.share)
public static share_svg() { return new FixedUiElement(Svg.share);}
public static share_ui() { return new FixedUiElement(Svg.share_img);}
@ -219,4 +224,4 @@ export default class Svg {
public static wikipedia_svg() { return new FixedUiElement(Svg.wikipedia);}
public static wikipedia_ui() { return new FixedUiElement(Svg.wikipedia_img);}
public static All = {"add.svg": Svg.add,"addSmall.svg": Svg.addSmall,"ampersand.svg": Svg.ampersand,"arrow-left-smooth.svg": Svg.arrow_left_smooth,"arrow-right-smooth.svg": Svg.arrow_right_smooth,"bug.svg": Svg.bug,"camera-plus.svg": Svg.camera_plus,"checkmark.svg": Svg.checkmark,"close.svg": Svg.close,"compass.svg": Svg.compass,"crosshair-blue-center.svg": Svg.crosshair_blue_center,"crosshair-blue.svg": Svg.crosshair_blue,"crosshair.svg": Svg.crosshair,"delete_icon.svg": Svg.delete_icon,"direction.svg": Svg.direction,"direction_gradient.svg": Svg.direction_gradient,"down.svg": Svg.down,"envelope.svg": Svg.envelope,"floppy.svg": Svg.floppy,"gear.svg": Svg.gear,"help.svg": Svg.help,"home.svg": Svg.home,"home_white_bg.svg": Svg.home_white_bg,"josm_logo.svg": Svg.josm_logo,"layers.svg": Svg.layers,"layersAdd.svg": Svg.layersAdd,"logo.svg": Svg.logo,"logout.svg": Svg.logout,"mapillary.svg": Svg.mapillary,"no_checkmark.svg": Svg.no_checkmark,"or.svg": Svg.or,"osm-logo-us.svg": Svg.osm_logo_us,"osm-logo.svg": Svg.osm_logo,"pencil.svg": Svg.pencil,"pop-out.svg": Svg.pop_out,"reload.svg": Svg.reload,"search.svg": Svg.search,"share.svg": Svg.share,"star.svg": Svg.star,"statistics.svg": Svg.statistics,"up.svg": Svg.up,"wikimedia-commons-white.svg": Svg.wikimedia_commons_white,"wikipedia.svg": Svg.wikipedia};}
public static All = {"add.svg": Svg.add,"addSmall.svg": Svg.addSmall,"ampersand.svg": Svg.ampersand,"arrow-left-smooth.svg": Svg.arrow_left_smooth,"arrow-right-smooth.svg": Svg.arrow_right_smooth,"bug.svg": Svg.bug,"camera-plus.svg": Svg.camera_plus,"checkmark.svg": Svg.checkmark,"close.svg": Svg.close,"compass.svg": Svg.compass,"crosshair-blue-center.svg": Svg.crosshair_blue_center,"crosshair-blue.svg": Svg.crosshair_blue,"crosshair.svg": Svg.crosshair,"delete_icon.svg": Svg.delete_icon,"direction.svg": Svg.direction,"direction_gradient.svg": Svg.direction_gradient,"down.svg": Svg.down,"envelope.svg": Svg.envelope,"floppy.svg": Svg.floppy,"gear.svg": Svg.gear,"help.svg": Svg.help,"home.svg": Svg.home,"home_white_bg.svg": Svg.home_white_bg,"josm_logo.svg": Svg.josm_logo,"layers.svg": Svg.layers,"layersAdd.svg": Svg.layersAdd,"logo.svg": Svg.logo,"logout.svg": Svg.logout,"mapillary.svg": Svg.mapillary,"no_checkmark.svg": Svg.no_checkmark,"or.svg": Svg.or,"osm-logo-us.svg": Svg.osm_logo_us,"osm-logo.svg": Svg.osm_logo,"pencil.svg": Svg.pencil,"phone.svg": Svg.phone,"pop-out.svg": Svg.pop_out,"reload.svg": Svg.reload,"search.svg": Svg.search,"share.svg": Svg.share,"star.svg": Svg.star,"statistics.svg": Svg.statistics,"up.svg": Svg.up,"wikimedia-commons-white.svg": Svg.wikimedia_commons_white,"wikipedia.svg": Svg.wikipedia};}

View file

@ -16,26 +16,15 @@ export class FullScreenMessageBox extends UIElement {
this.HideOnEmpty(true);
this.returnToTheMap =
new Combine([Translations.t.general.returnToTheMap.Clone().SetStyle("font-size:xx-large")])
.SetStyle("background:var(--catch-detail-color);" +
"position: fixed;" +
"z-index: 10000;" +
"bottom: 0;" +
"left: 0;" +
`height: var(--return-to-the-map-height);` +
"width: 100vw;" +
"color: var(--catch-detail-color-contrast);" +
"font-weight: bold;" +
"pointer-events: all;" +
"cursor: pointer;" +
"padding-top: 1.2em;" +
"text-align: center;" +
"padding-bottom: 1.2em;" +
"box-sizing:border-box")
new Combine([
// Wrapped another time to prevent the value of 'em' to fluctuate
Translations.t.general.returnToTheMap.Clone()
])
.onClick(() => {
State.state.fullScreenMessage.setData(undefined);
onClear();
});
})
.SetClass("to-the-map")
}
@ -45,25 +34,18 @@ export class FullScreenMessageBox extends UIElement {
return "";
}
this._content = State.state.fullScreenMessage.data;
const innerWrap = new Combine([this._content]).SetStyle(
"display: block;" +
"padding: 1em;" +
"padding-bottom: 6em; "
);
const uielement = new Combine([innerWrap]).SetStyle(
"display:block;" +
`margin-bottom: var(--return-to-the-map-height);` +
"box-sizing:border-box;" +
`height:calc(100vh - var(--return-to-the-map-height));` +
"overflow-y: auto;" +
"max-width:100vw;" +
"overflow-x:hidden;" +
"background:var(--background-color);" +
"color: var(--foreground-color);"
);
return new Combine([uielement, this.returnToTheMap])
const innerWrap = new Combine([this._content]).SetClass("fullscreenmessage-content")
return new Combine([innerWrap, this.returnToTheMap])
.SetStyle("display:block; height: 100%;")
.Render();
}
protected InnerUpdate(htmlElement: HTMLElement) {
super.InnerUpdate(htmlElement);
const height = htmlElement.getElementsByClassName("featureinfobox-titlebar")[0]?.clientHeight ?? 0;
htmlElement.style.setProperty("--variable-title-height", height+"px")
}
}

View file

@ -33,7 +33,7 @@ export default class EditableTagRendering extends UIElement {
this.dumbMode = false;
if (this._configuration.question !== undefined) {
if (State.state.featureSwitchUserbadge.data) {
if (State.state?.featureSwitchUserbadge?.data) {
// 2.3em total width
const self = this;
this._editButton =

View file

@ -44,9 +44,14 @@ export class FeatureInfoBox extends UIElement {
return new Combine([
new Combine([this._title, this._titleIcons])
.SetClass("featureinfobox-titlebar"),
new Combine([
...this._renderings,
this._questionBox,
]).Render();
this._questionBox
]
).SetClass("featureinfobox-content"),
]).SetClass("featureinfobox")
.Render();
}
}

41
UI/ShareButton.ts Normal file
View file

@ -0,0 +1,41 @@
import {UIElement} from "./UIElement";
export default class ShareButton extends UIElement{
private _embedded: UIElement;
private _shareData: { text: string; title: string; url: string };
constructor(embedded: UIElement, shareData: {
text: string,
title: string,
url: string
}) {
super();
this._embedded = embedded;
this._shareData = shareData;
if(this._shareData.url.indexOf("#")> 0){
this._shareData.url = this._shareData.url.replace("#","&hash_content=");
}
}
InnerRender(): string {
return `<button type="button" class="share-button" id="${this.id}">${this._embedded.Render()}</button>`
}
protected InnerUpdate(htmlElement: HTMLElement) {
super.InnerUpdate(htmlElement);
const self= this;
htmlElement.addEventListener('click', () => {
if (navigator.share) {
navigator.share(self._shareData).then(() => {
console.log('Thanks for sharing!');
})
.catch(err => {
console.log(`Couldn't share because of`, err.message);
});
} else {
console.log('web share not supported');
}
});
}
}

View file

@ -9,6 +9,9 @@ import {FixedUiElement} from "./Base/FixedUiElement";
import Locale from "../UI/i18n/Locale";
import {ImageUploadFlow} from "./Image/ImageUploadFlow";
import {Translation} from "./i18n/Translation";
import State from "../State";
import ShareButton from "./ShareButton";
import Svg from "../Svg";
export class SubstitutedTranslation extends UIElement {
private readonly tags: UIEventSource<any>;
@ -183,7 +186,36 @@ export default class SpecialVisualizations {
return new VariableUiElement(source.map(data => data[neededValue] ?? "Loading..."));
}
},
{
funcName: "share_link",
docs: "Creates a link that (attempts to) open the native 'share'-screen",
example: "{share_link()} to share the current page, {share_link(<some_url>)} to share the given url",
args: [
{
name: "url",
doc: "The url to share (defualt: current URL)",
}
],
constr: (tagSource: UIEventSource<any>, args) => {
if (window.navigator.share) {
const title = State.state.layoutToUse.data.title.txt;
let name = tagSource.data.name;
if(name){
name = `${name} (${title})`
}else{
name = title;
}
return new ShareButton(Svg.share_svg(), {
title: name,
url: args[0] ?? window.location.href,
text: State.state.layoutToUse.data.shortDescription.txt
})
} else {
return new FixedUiElement("")
}
}
}
]
static HelpMessage: UIElement = SpecialVisualizations.GenHelpMessage();

View file

@ -53,7 +53,8 @@ export class WelcomeMessage extends UIElement {
loginStatus,
this.tail,
"<br/>",
this.languagePicker
this.languagePicker,
Translations.t.general.customIntro as UIElement
]).Render()
}

View file

@ -89,6 +89,14 @@
}
]
},
"titleIcons": [
{
"render": "<a href='https://fietsambassade.gent.be/' target='_blank'><img src='./assets/themes/cyclofix/fietsambassade_gent_logo_small.svg'/></a>",
"condition": "operator=De Fietsambassade Gent"
},
"wikipedialink",
"osmlink"
],
"tagRenderings": [
"images",
{

View file

@ -12,6 +12,13 @@
"#": "We select all bicycle shops, sport shops (but we try to weed out non-bicycle related shops), and any shop with a bicycle related tag",
"or": [
"shop=bicycle",
{
"#": "A bicycle rental with a network is something such as villo, bluebike, ... We don't want them",
"and": [
"amenity=bicycle_rental",
"network="
]
},
{
"#": "if sport is defined and is not bicycle, it is retrackted; if bicycle retail/repair is marked as 'no', it is retracted too.",
"##": "There will be a few false-positives with this. They will get filtered out by people marking both 'not selling bikes' and 'not repairing bikes'. Furthermore, the OSMers will add a sports-subcategory on it",
@ -68,7 +75,12 @@
}
},
{
"if": "shop!~bicycle",
"if": {
"and": [
"shop!~bicycle",
"shop~*"
]
},
"then": "Other shop"
},
{
@ -127,6 +139,23 @@
"de": "Fahrradgeschäft"
}
},
{
"if": {
"and": [
"name~*",
{
"or": [
"service:bicycle:rental=yes",
"amenity=bicycle_rental"
]
}
]
},
"then": {
"nl": "Fietsverhuur <i>{name}</i>",
"en": "Bicycle rental <i>{name}</i>"
}
},
{
"if": "name~*",
"then": {
@ -141,37 +170,35 @@
},
"titleIcons": [
{
"mappings": [
{
"if": "service:bicycle:pump=yes",
"then": "<img src='./assets/layers/bike_shop/pump.svg'>"
}
]
"render": "<a href='https://fietsambassade.gent.be/' target='_blank'><img src='./assets/themes/cyclofix/fietsambassade_gent_logo_small.svg'/></a>",
"condition": "operator=De Fietsambassade Gent"
},
{
"mappings": [
{
"if": "service:bicycle:diy=yes",
"then": "<img src='./assets/layers/bike_shop/tools.svg'>"
}
"condition": {
"or": [
"service:bicycle:pump=yes",
"service:bicycle:pump=seperate"
]
},
"render": "<img src='./assets/layers/bike_shop/pump.svg'/>"
},
{
"mappings": [
"condition": "service:bicycle:diy=yes",
"render": "<img src='./assets/layers/bike_shop/tools.svg'/>"
},
{
"if": {
"condition": {
"or": [
"service:bicycle:cleaning=yes",
"service:bicycle:cleaning=diy"
]
},
"then": "<img src='./assets/layers/bike_shop/bike_cleaning.svg'>"
}
]
"render": "<img src='./assets/layers/bike_shop/bike_cleaning.svg'/>"
},
"phonelink",
"wikipedialink",
"osmlink"
"osmlink",
"sharelink"
],
"description": {
"en": "A shop specifically selling bicycles or related items",
@ -182,6 +209,7 @@
{
"condition": {
"and": [
"shop~*",
"shop!~bicycle",
"shop!~sports"
]
@ -257,6 +285,13 @@
"type": "opening_hours"
}
},
"description",
{
"render": "Enkel voor {access}",
"freeform": {
"key": "access"
}
},
{
"question": {
"en": "Does this shop sell bikes?",
@ -439,6 +474,13 @@
"gl": "Esta tenda non ofrece unha bomba de ar para uso de calquera persoa",
"de": "Dieses Geschäft bietet für niemanden eine Fahrradpumpe an"
}
},
{
"if": "service:bicycle:pump=seperate",
"then": {
"en": "There is bicycle pump, it is shown as a seperate point ",
"nl": "Er is een fietspomp, deze is apart aangeduid"
}
}
]
},
@ -470,6 +512,13 @@
"gl": "Non hai ferramentas aquí para arranxar a túa propia bicicleta",
"de": "Dieses Geschäft bietet keine Werkzeuge für Heimwerkerreparaturen an"
}
},
{
"if": "service:bicycle:diy=only_sold",
"then": {
"en": "Tools for DIY repair are only available if you bought/hire the bike in the shop",
"nl": "Het gereedschap aan om je fiets zelf te herstellen is enkel voor als je de fiets er kocht of huurt"
}
}
]
},
@ -521,6 +570,10 @@
"icon": {
"render": "./assets/layers/bike_shop/repair_shop.svg",
"mappings": [
{
"if": "operator=De Fietsambassade Gent",
"then": "./assets/themes/cyclofix/fietsambassade_gent_logo_small.svg"
},
{
"if": "service:bicycle:retail=yes",
"then": "./assets/layers/bike_shop/shop.svg"

View file

Before

Width:  |  Height:  |  Size: 8 KiB

After

Width:  |  Height:  |  Size: 8 KiB

View file

@ -7,7 +7,7 @@
"de": "Mit Fahrrad zusammenhängendes Objekt"
},
"minzoom": 13,
"overpassTags": "theme~cycling|bicycle",
"overpassTags": {"or": ["theme~cycling|bicycle", "sport=cycling"]},
"title": {
"render": {
"en": "Bike related object",
@ -18,12 +18,13 @@
"mappings": [
{
"if": "name~*",
"then":"<i>{name}</i>"
},
{
"if": "leisure=track",
"then": {
"en": "<i>{name}</i>",
"nl": "<i>{name}</i>",
"fr": "<i>{name}</i>",
"gl": "<i>{name}</i>",
"de": "<i>{name}</i>"
"nl": "Wielerpiste",
"en": "Cycle track"
}
}
]

View file

@ -0,0 +1,305 @@
{
"id": "toilets",
"name": {
"en": "Toilets",
"de": "Toiletten",
"fr": "Toilettes"
},
"overpassTags": "amenity=toilets",
"title": {
"render": {
"en": "Toilet",
"de": "Toilette",
"fr": "Toilettes"
}
},
"icon": {
"render": "./assets/layers/toilets/toilets.svg",
"mappings": [
{
"if": "wheelchair=yes",
"then": "./assets/layers/toilets/wheelchair.svg"
},
{
"if": "toilets:position=urinals",
"then": "./assets/layers/toilets/urinal.svg"
}
]
},
"color": {
"render": "#0000ff"
},
"minzoom": 12,
"wayHandling": 2,
"presets": [
{
"title": {
"en": "Toilet",
"de": "Toilette",
"fr": "Toilettes"
},
"tags": [
"amenity=toilets"
],
"description": {
"en": "A publicly accessible toilet or restroom",
"de": "Eine öffentlich zugängliche Toilette",
"fr": "Des toilettes"
}
},
{
"title": {
"en": "Toilets with wheelchair accessible toilet",
"de": "Toiletten mit rollstuhlgerechter Toilette",
"fr": "Toilettes accessible aux personnes à mobilité réduite"
},
"tags": [
"amenity=toilets",
"wheelchair=yes"
],
"description": {
"en": "A restroom which has at least one wheelchair-accessible toilet",
"de": "Eine Toilettenanlage mit mindestens einer rollstuhlgerechten Toilette",
"fr": "Toilettes avec au moins un WC accessible aux personnes à mobilité réduite"
}
}
],
"tagRenderings": [
"images",
{
"question": {
"en": "Are these toilets publicly accessible?",
"de": "Sind diese Toiletten öffentlich zugänglich?",
"fr": "Ces toilettes sont-elles accessibles publiquement ?"
},
"render": {
"en": "Access is {access}",
"de": "Zugang ist {access}",
"fr": "L'accès est {access}"
},
"freeform": {
"key": "access",
"addExtraTags": [
"fixme=the tag access was filled out by the user and might need refinement"
]
},
"mappings": [
{
"if": "access=yes",
"then": {
"en": "Public access",
"de": "Öffentlicher Zugang",
"fr": "Accès publique"
}
},
{
"if": "access=customers",
"then": {
"en": "Only access to customers",
"de": "Nur Zugang für Kunden",
"fr": "Accès réservé aux clients"
}
},
{
"if": "access=no",
"then": {
"en": "Not accessible",
"de": "Nicht zugänglich",
"fr": "WC privés"
}
},
{
"if": "access=key",
"then": {
"en": "Accessible, but one has to ask a key to enter",
"de": "Zugänglich, aber man muss einen Schlüssel für die Eingabe verlangen",
"fr": "Accessible, mais vous devez demander la clé"
}
}
]
},
{
"question": {
"en": "Are these toilets free to use?",
"de": "Können diese Toiletten kostenlos benutzt werden?",
"fr": "Ces toilettes sont-elles payantes"
},
"mappings": [
{
"then": {
"en": "These are paid toilets",
"de": "Dies sind bezahlte Toiletten",
"fr": "Toilettes payantes"
},
"if": "fee=yes"
},
{
"if": "fee=no",
"then": {
"en": "Free to use",
"de": "Kostenlose Nutzung",
"fr": "Toilettes gratuites"
}
}
]
},
{
"question": {
"en": "How much does one have to pay for these toilets?",
"de": "Wie viel muss man für diese Toiletten bezahlen?",
"fr": "Quel est le prix d'accès de ces toilettes ?"
},
"render": {
"en": "The fee is {charge}",
"de": "Die Gebühr beträgt {charge}",
"fr": "Le prix est {charge}"
},
"condition": "fee=yes",
"freeform": {
"key": "charge",
"type": "string"
}
},
{
"question": {
"en": "Is there a dedicated toilet for wheelchair users",
"de": "Gibt es eine Toilette für Rollstuhlfahrer?",
"fr": "Un WC réservé aux personnes à mobilité réduite est-il présent ?"
},
"mappings": [
{
"then": {
"en": "There is a dedicated toilet for wheelchair users",
"de": "Es gibt eine Toilette für Rollstuhlfahrer",
"fr": "Il y a un WC réservé pour les personnes à mobilité réduite"
},
"if": "wheelchair=yes"
},
{
"if": "wheelchair=no",
"then": {
"en": "No wheelchair access",
"de": "Kein Zugang für Rollstuhlfahrer",
"fr": "Non accessible aux personnes à mobilité réduite"
}
}
]
},
{
"question": {
"en": "Which kind of toilets are this?",
"de": "Welche Art von Toiletten sind das?",
"fr": "De quel type sont ces toilettes ?"
},
"mappings": [
{
"if": "toilets:position=seated",
"then": {
"en": "There are only seated toilets",
"de": "Es gibt nur Sitztoiletten",
"fr": "Il y a uniquement des WC assis"
}
},
{
"if": "toilets:position=urinals",
"then": {
"en": "There are only urinals here",
"de": "Hier gibt es nur Pissoirs",
"fr": "Il y a uniquement des urinoirs"
}
},
{
"if": "toilets:position=squat",
"then": {
"en": "There are only squat toilets here",
"de": "Es gibt hier nur Hocktoiletten.",
"fr": "Il y a uniquement des WC turques"
}
},
{
"if": "toilets:position=seated;urinals",
"then": {
"en": "Both seated toilets and urinals are available here",
"de": "Sowohl Sitztoiletten als auch Pissoirs sind hier verfügbar",
"fr": "Il y a des WC assis et des urinoirs"
}
}
]
},
{
"question": {
"en": "Is a changing table (to change diapers) available?",
"de": "Ist ein Wickeltisch (zum Wechseln der Windeln) vorhanden?",
"fr": "Ces WC disposent-ils d'une table à langer ?"
},
"mappings": [
{
"then": {
"en": "A changing table is available",
"de": "Ein Wickeltisch ist verfügbar",
"fr": "Une table à langer est disponible"
},
"if": "changing_table=yes"
},
{
"if": "changing_table=no",
"then": {
"en": "No changing table is available",
"de": "Es ist kein Wickeltisch verfügbar",
"fr": "Aucune table à langer"
}
}
]
},
{
"question": {
"en": "Where is the changing table located?",
"de": "Wo befindet sich der Wickeltisch?",
"fr": "Où se situe la table à langer ?"
},
"render": {
"en": "The changing table is located at {changing_table:location}",
"de": "Die Wickeltabelle befindet sich in {changing_table:location}",
"fr": "Emplacement de la table à langer : {changing_table:location}"
},
"condition": "changing_table=yes",
"freeform": {
"key": "changing_table:location"
},
"mappings": [
{
"then": {
"en": "The changing table is in the toilet for women. ",
"de": "Der Wickeltisch befindet sich in der Damentoilette. ",
"fr": "La table à langer se situe dans les WC pour femmes. "
},
"if": "changing_table:location=female_toilet"
},
{
"then": {
"en": "The changing table is in the toilet for men. ",
"de": "Der Wickeltisch befindet sich in der Herrentoilette. ",
"fr": "La table à langer se situe dans les WC pour hommes. "
},
"if": "changing_table:location=male_toilet"
},
{
"if": "changing_table:location=wheelchair_toilet",
"then": {
"en": "The changing table is in the toilet for wheelchair users. ",
"de": "Der Wickeltisch befindet sich in der Toilette für Rollstuhlfahrer. ",
"fr": "La table à langer se situe dans les WC pour personnes à mobilité réduite. "
}
},
{
"if": "changing_table:location=dedicated_room",
"then": {
"en": "The changing table is in a dedicated room. ",
"de": "Der Wickeltisch befindet sich in einem eigenen Raum. ",
"fr": "La table à langer se situe dans un espace dédié. "
}
}
]
}
]
}

View file

@ -0,0 +1,82 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
width="64"
height="64"
viewBox="0 0 64 64"
id="svg2"
sodipodi:docname="toilets.svg"
inkscape:version="0.92.4 (5da689c313, 2019-01-14)">
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1920"
inkscape:window-height="1001"
id="namedview7"
showgrid="false"
inkscape:zoom="2.6074563"
inkscape:cx="-96.695116"
inkscape:cy="91.228234"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="layer3" />
<metadata
id="metadata8">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs6" />
<g
inkscape:groupmode="layer"
id="layer2"
inkscape:label="background"
transform="translate(0,-64)">
<ellipse
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.23933503;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="path847"
cx="31.580557"
cy="96.215309"
rx="31.580557"
ry="31.513508" />
</g>
<g
inkscape:groupmode="layer"
id="layer3"
inkscape:label="icon"
transform="translate(0,-64)">
<rect
width="44.118912"
height="44.118912"
x="9.5211029"
y="74.2229"
id="canvas"
style="visibility:hidden;fill:none;stroke:none;stroke-width:2.75743198" />
<path
d="m 29.512484,76.980332 v 38.604048 h 4.136148 V 76.980332 Z m -10.34037,2.757432 c -2.284331,0 -4.136148,1.851809 -4.136148,4.136148 0,2.284339 1.851817,4.136148 4.136148,4.136148 2.284331,0 4.136148,-1.851809 4.136148,-4.136148 0,-2.284339 -1.851817,-4.136148 -4.136148,-4.136148 z m 24.816887,0 c -2.28433,0 -4.136148,1.851809 -4.136148,4.136148 0,2.284339 1.851818,4.136148 4.136148,4.136148 2.284331,0 4.136147,-1.851809 4.136147,-4.136148 0,-2.284339 -1.851816,-4.136148 -4.136147,-4.136148 z M 16.414682,90.767492 c -1.653692,0 -2.757432,1.567738 -2.757432,2.757432 0,1.454076 3.44679,4.126883 3.44679,5.514863 0,1.533053 -4.825506,2.757433 -4.825506,8.272293 h 4.825506 v 8.2723 h 4.136148 v -8.2723 h 4.825506 c 0,-5.51486 -4.825506,-6.8122 -4.825506,-8.272293 0,-1.460087 3.44679,-3.994691 3.44679,-5.514863 0,-1.123626 -1.171156,-2.757432 -2.757432,-2.757432 z m 23.438171,0 c -1.454087,0 -2.757431,1.324863 -2.757431,2.757432 0,2.757431 4.825505,11.074036 4.825505,13.787156 v 8.2723 h 4.136147 v -8.2723 c 0,-2.65943 4.825505,-11.029725 4.825505,-13.787156 0,-1.525908 -1.237249,-2.757432 -2.757431,-2.757432 z"
id="toilets"
style="fill:#734a08;fill-opacity:1;stroke:none;stroke-width:2.75743198"
inkscape:connector-curvature="0" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.4 KiB

View file

@ -0,0 +1,53 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
height="100.18594"
width="100.18594"
id="svg22"
xml:space="preserve"
enable-background="new 0 0 100 100"
viewBox="0 0 100.18594 100.18594"
y="0px"
x="0px"
version="1.1"><metadata
id="metadata28"><rdf:RDF><cc:Work
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs
id="defs26" /><g
transform="translate(0,0.0919838)"
id="layer1"><circle
r="50.092972"
cy="50.000988"
cx="50.092972"
id="path845"
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:5.08555174;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.98823529" /></g><g
transform="translate(0,0.0919838)"
id="layer2"><g
transform="matrix(1.0774227,0,0,1,-6.5327497,-2.3834746)"
id="g849"><circle
id="circle2"
r="6.8829999"
cy="20.633209"
cx="45.222931" fill="#734a08ff"/></g><path
style="stroke-width:1.03798974" fill="#734a08ff"
d="m 63.360093,62.535796 0.744233,-1.506117 c 0.03247,-0.03923 -1.837395,-1.305776 -1.867394,-1.264947 l -0.594756,1.578256 c 0.02894,-0.04064 1.750018,1.1577 1.717917,1.192808 z"
id="path4" /><path
style="stroke-width:1.03798974" fill="#734a08ff"
d="m 60.739166,60.844217 0.516546,-1.606098 c 0,0 -0.521003,-0.237131 -1.041486,-0.471307 -0.545369,-0.189171 -1.087902,-0.380873 -1.087902,-0.380873 l -0.357271,1.653154 c 0,0 0.503158,0.179353 1.004367,0.360064 0.483056,0.220467 0.965746,0.44506 0.965746,0.44506 z"
id="path6" /><path
style="stroke-width:1.03798974" fill="#734a08ff"
d="m 57.763048,59.750399 0.274951,-1.667072 c 0,0 -0.139693,-0.03528 -0.351095,-0.08634 -0.210149,-0.05636 -0.492219,-0.117309 -0.781965,-0.153545 -0.288667,-0.04252 -0.576272,-0.08523 -0.79215,-0.118241 -0.214817,-0.0332 -0.359526,-0.04729 -0.359526,-0.04729 l -0.107285,1.687263 c 0,0 0.53246,0.07874 1.066328,0.159253 0.269259,0.03173 0.532422,0.09093 0.72596,0.146159 0.193384,0.04815 0.324782,0.07981 0.324782,0.07981 z"
id="path8" /><path
style="stroke-width:1.03798974" fill="#734a08ff"
d="m 52.262826,57.706454 0.162629,1.679272 c -0.01946,-0.04836 2.163417,-0.133706 2.159193,-0.08321 l 0.02616,-1.68819 c 5.23e-4,-0.05289 -2.335967,0.03619 -2.347984,0.09212 z"
id="path10" /><path fill="#734a08ff"
style="stroke-width:1.03798974"
d="m 44.487525,32.636 v -0.06 -0.546 c 0,-2.926 -2.556724,-5.299 -5.709263,-5.299 -3.152539,0 -5.709263,2.373 -5.709263,5.299 v 0.546 L 35.690687,45.197688 33.068999,85.688 h 11.418526 l -0.0331,-26.43253 c 1.188486,3.790204 7.349685,4.322606 6.763764,-1.56947 z"
id="path12" /><path fill="#734a08ff"
style="stroke-width:1.49871337"
d="m 68.240384,43.32148 v 15.764528 c -3.446517,5.459344 -5.76619,4.074036 -10.247903,5.133803 1.652985,11.916006 8.426597,10.425906 10.341535,21.124208 v 0.06209 c 2.338689,-0.4811 6.021132,0.919057 6.10748,-2.71532 L 74.347864,43.32148 Z"
id="path14" /></g></svg>

After

Width:  |  Height:  |  Size: 3.4 KiB

View file

Before

Width:  |  Height:  |  Size: 3.3 KiB

After

Width:  |  Height:  |  Size: 3.3 KiB

View file

@ -1,4 +1,4 @@
e<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"

Before

Width:  |  Height:  |  Size: 3.2 KiB

After

Width:  |  Height:  |  Size: 3.2 KiB

59
assets/svg/phone.svg Normal file
View file

@ -0,0 +1,59 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
viewBox="0 -256 1792 1792"
id="svg3013"
version="1.1"
inkscape:version="0.48.3.1 r9886"
width="100%"
height="100%"
sodipodi:docname="phone_font_awesome.svg">
<metadata
id="metadata3023">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs3021" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="640"
inkscape:window-height="480"
id="namedview3019"
showgrid="false"
inkscape:zoom="0.13169643"
inkscape:cx="896"
inkscape:cy="896"
inkscape:window-x="0"
inkscape:window-y="25"
inkscape:window-maximized="0"
inkscape:current-layer="svg3013" />
<g
transform="matrix(1,0,0,-1,159.45763,1293.0169)"
id="g3015">
<path
d="m 1408,296 q 0,-27 -10,-70.5 Q 1388,182 1377,157 1356,107 1255,51 1161,0 1069,0 1042,0 1016.5,3.5 991,7 959,16 927,25 911.5,30.5 896,36 856,51 816,66 807,69 709,104 632,152 504,231 367.5,367.5 231,504 152,632 104,709 69,807 66,816 51,856 36,896 30.5,911.5 25,927 16,959 7,991 3.5,1016.5 0,1042 0,1069 q 0,92 51,186 56,101 106,122 25,11 68.5,21 43.5,10 70.5,10 14,0 21,-3 18,-6 53,-76 11,-19 30,-54 19,-35 35,-63.5 16,-28.5 31,-53.5 3,-4 17.5,-25 14.5,-21 21.5,-35.5 7,-14.5 7,-28.5 0,-20 -28.5,-50 -28.5,-30 -62,-55 -33.5,-25 -62,-53 -28.5,-28 -28.5,-46 0,-9 5,-22.5 5,-13.5 8.5,-20.5 3.5,-7 14,-24 10.5,-17 11.5,-19 76,-137 174,-235 98,-98 235,-174 2,-1 19,-11.5 17,-10.5 24,-14 7,-3.5 20.5,-8.5 13.5,-5 22.5,-5 18,0 46,28.5 28,28.5 53,62 25,33.5 55,62 30,28.5 50,28.5 14,0 28.5,-7 14.5,-7 35.5,-21.5 21,-14.5 25,-17.5 25,-15 53.5,-31 28.5,-16 63.5,-35 35,-19 54,-30 70,-35 76,-53 3,-7 3,-21 z"
id="path3017"
inkscape:connector-curvature="0"
style="fill:currentColor" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.5 KiB

View file

@ -1,60 +1,17 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="100"
height="100"
viewBox="0 0 26.458333 26.458334"
version="1.1"
id="svg8"
inkscape:version="0.92.4 (5da689c313, 2019-01-14)"
sodipodi:docname="share.svg">
version="1.1"
viewBox="0 0 20.06869 19.489862"
height="73.662468"
width="75.850166">
<defs
id="defs2" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="4"
inkscape:cx="-15.237738"
inkscape:cy="36.323203"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="false"
units="px"
showguides="true"
inkscape:guide-bbox="true"
inkscape:window-width="1920"
inkscape:window-height="1001"
inkscape:window-x="0"
inkscape:window-y="1050"
inkscape:window-maximized="1">
<sodipodi:guide
position="13.229167,23.859748"
orientation="1,0"
id="guide815"
inkscape:locked="false" />
<sodipodi:guide
position="14.944824,13.229167"
orientation="0,1"
id="guide817"
inkscape:locked="false" />
<sodipodi:guide
position="19.182291,3.4395834"
orientation="1,0"
id="guide852"
inkscape:locked="false" />
</sodipodi:namedview>
<metadata
id="metadata5">
<rdf:RDF>
@ -63,38 +20,34 @@
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(0,-270.54165)">
transform="translate(-3.3314588,-273.65084)"
id="layer1">
<path
style="fill:none;stroke-width:2.43863511;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 19.212364,278.17517 -11.9689358,5.52059 11.9388628,5.50669"
id="path819"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccc" />
d="m 19.212364,278.17517 -11.9689358,5.52059 11.9388628,5.50669"
style="fill:none;stroke-width:2.43863511;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;stroke:#000000" />
<circle
style="fill-opacity:1;stroke:none;stroke-width:0.53329796;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.97014926"
id="path820"
cx="7.2434282"
r="3.9119694"
cy="283.69574"
r="3.9119694" />
cx="7.2434282"
id="path820"
style="fill-opacity:1;stroke:none;stroke-width:0.53329796;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<circle
style="fill-opacity:1;stroke:none;stroke-width:0.53329796;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.97014926"
id="path820-3"
cx="19.48818"
r="3.9119689"
cy="289.22873"
r="3.9119689" />
<circle
style="fill-opacity:1;stroke:none;stroke-width:0.53329796;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.97014926"
id="path820-3-6"
cx="19.48818"
id="path820-3"
style="fill-opacity:1;stroke:none;stroke-width:0.53329796;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.97014926" />
<circle
r="3.9119689"
cy="277.56281"
r="3.9119689" />
cx="19.48818"
id="path820-3-6"
style="fill-opacity:1;stroke:none;stroke-width:0.53329796;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
</g>
</svg>

Before

Width:  |  Height:  |  Size: 3.3 KiB

After

Width:  |  Height:  |  Size: 1.9 KiB

View file

@ -0,0 +1,22 @@
{
"osmlink": {
"render": "<a href='https://openstreetmap.org/{id}' target='_blank'><img src='./assets/svg/osm-logo-us.svg'/></a>",
"mappings": [
{
"if": "id~=-",
"then": "<span class='alert'>Uploading...</alert>"
}
]
},
"wikipedialink": {
"render": "<a href='https://wikipedia.org/wiki/{wikipedia}' target='_blank'><img src='./assets/wikipedia.svg' alt='WP'/></a>",
"condition": "wikipedia~*"
},
"phonelink": {
"render": "<a href='tel:{phone}'><img src='./assets/svg/phone.svg'/></a>",
"condition": "phone~*"
},
"sharelink": {
"render": "{share_link()}"
}
}

View file

@ -2,7 +2,17 @@
"images": {
"render": "{image_carousel()}{image_upload()}"
},
"phone": {
"question": {
"en": "What is the phone number of {name}?",
"de": "Was ist die Telefonnummer von {name}?"
},
"render": "<a href='tel:{phone}'>{phone}</a>",
"freeform": {
"key": "phone",
"type": "phone"
}
},
"osmlink": {
"render": "<a href='https://openstreetmap.org/{id}' target='_blank'><img src='./assets/svg/osm-logo-us.svg'/></a>",
"mappings":[{
@ -15,19 +25,6 @@
"render": "<a href='https://wikipedia.org/wiki/{wikipedia}' target='_blank'><img src='./assets/wikipedia.svg' alt='WP'/></a>",
"condition": "wikipedia~*"
},
"phone": {
"question": {
"en": "What is the phone number of {name}?",
"de": "Was ist die Telefonnummer von {name}?"
},
"render": "<a href='tel:{phone}'>{phone}</a>",
"freeform": {
"key": "phone",
"type": "phone"
}
},
"email": {
"render": "<a href='mailto:{email}' target='_blank'>{email}</a>",
"freeform": {
@ -35,14 +32,12 @@
"type": "email"
}
},
"website": {
"question": {
"en": "What is the officical website of {name}?",
"de": "Was ist die offizielle Website von {name}?",
"nl": "Wat is de officiële website van {name}?",
"fr": "Quel est le site internet officiel de {name}?",
"gl": "Cal é a páxina web official de {name}?"
"en": "What is the website of {name}?",
"nl": "Wat is de website van {name}?",
"fr": "Quel est le site internet de {name}?",
"gl": "Cal é a páxina web de {name}?"
},
"render": "<a href='{website}' target='_blank'>{website}</a>",
"freeform": {
@ -51,6 +46,16 @@
}
},
"description": {
"question": {
"nl": "Zijn er extra zaken die je niet in de bovenstaande vragen kwijt kon? Zet deze in de description<span style='font-size: small'>Herhaal geen antwoorden die je reeds gaf</span>",
"en": "Is there still something relevant you couldn't give in the previous questions? Add it here.<br/><span style='font-size: small'>Don't repeat already stated facts</span>"
},
"render": "{description}",
"freeform": {
"key": "description"
}
},
"opening_hours": {
"question": {
"en": "What are the opening hours of {name}?",

View file

@ -202,7 +202,7 @@
"render": "40,40,center"
},
"color": {
"render": "#00f"
"render": "#d38d5fAA"
},
"presets": [
{
@ -221,7 +221,7 @@
}
}
],
"wayHandling": 1
"wayHandling": 2
},
{
"id": "climbing_gym",
@ -344,6 +344,86 @@
"color": {
"render": "#0f0"
}
},
{
"id": "maybe_climbing",
"name": {
"nl": "Klimgelegenheiden?",
"de": "Klettermöglichkeiten?",
"en": "Climbing opportunities?"
},
"minzoom": 19,
"overpassTags": {
"or": [
"leisure=sports_centre",
"barrier=wall",
"barrier=retaining_wall",
"natural=cliff",
"natural=rock",
"natural=stone"
]
},
"title": {
"render": {
"en": "Climbing opportunity?",
"nl": "Klimgelegenheid?",
"de": "Klettermöglichkeit?"
}
},
"description": {
"nl": "Een klimgelegenheid?",
"de": "Eine Klettergelegenheit?",
"en": "A climbing opportunity?"
},
"tagRenderings": [
{
"render": {
"en": "<strong>{name}</strong>",
"de": "<strong>{name}</strong>"
},
"condition": "name~*"
},
{
"question": {
"en": "Is climbing possible here?",
"de": "Kann hier geklettert werden?"
},
"mappings": [
{
"if": {
"and": [
"sport!~climbing"
]
},
"then": {
"en": "Climbing is not possible here",
"de": "Hier kann nicht geklettert werden"
},
"hideInAnswer": true
},
{
"if": {
"and": [
"sport=climbing"
]
},
"then": {
"en": "Climbing is possible here",
"de": "Hier kann geklettert werden"
}
}
]
}
],
"icon": "./assets/themes/climbing/climbing_unknown.svg",
"hideUnderlayingFeaturesMinPercentage": 0,
"width": {
"render": "2"
},
"color": {
"render": "#ddff55AA"
},
"wayHandling": 0
}
],
"roamingRenderings": [
@ -401,6 +481,7 @@
"en": "Is bouldering possible here?",
"nl": "Is het mogelijk om hier te bolderen?"
},
"condition": "sport=climbing",
"mappings": [
{
"if": "climbing:boulder=yes",
@ -436,6 +517,7 @@
}
},
{
"condition": "sport=climbing",
"question": {
"de": "Ist Toprope-Klettern hier möglich?",
"en": "Is toprope climbing possible here?",
@ -476,6 +558,7 @@
}
},
{
"condition": "sport=climbing",
"question": {
"de": "Ist hier Sportklettern möglich (feste Ankerpunkte)?",
"en": "Is sport climbing possible here on fixed anchors?",
@ -516,6 +599,7 @@
}
},
{
"condition": "sport=climbing",
"question": {
"de": "Ist hier traditionelles Klettern möglich (eigene Sicherung z.B. mit Klemmkleilen)?",
"en": "Is traditional climbing possible here (using own gear e.g. chocks)?",

View file

@ -0,0 +1,85 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
id="Layer_2"
x="0px"
y="0px"
width="400px"
height="400px"
viewBox="0 0 400 400"
enable-background="new 0 0 400 400"
xml:space="preserve"
sodipodi:docname="climbing_unknown.svg"
inkscape:version="1.0.1 (3bc2e813f5, 2020-09-07)"><metadata
id="metadata970"><rdf:RDF><cc:Work
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title /></cc:Work></rdf:RDF></metadata><defs
id="defs968" /><sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1916"
inkscape:window-height="1062"
id="namedview966"
showgrid="false"
inkscape:zoom="1.120976"
inkscape:cx="259.70656"
inkscape:cy="164.6459"
inkscape:window-x="0"
inkscape:window-y="16"
inkscape:window-maximized="1"
inkscape:current-layer="Layer_2"
inkscape:document-rotation="0" />
<g
id="g963"
style="fill:#502d16">
<circle
fill-rule="evenodd"
clip-rule="evenodd"
fill="#53C9ED"
cx="190.403"
cy="92.55"
r="23.05"
id="circle953"
style="fill:#502d16" />
<path
fill-rule="evenodd"
clip-rule="evenodd"
fill="#53C9ED"
d="M256.594,147.631l31.687-38.824 c3.497-4.285,10.495-4.362,15.628-0.171l1.643,1.34c5.135,4.191,6.461,11.062,2.965,15.346c0,0-37.64,46.27-38.512,46.778 c-4.412,4.632-8.461,6.728-13.859,4.187l-37.122-17.471V186h-60.72v-38.684l-54.157-72.381c-6.249-8.351-7.012-18.34-1.707-22.308 l1.697-1.271c5.308-3.972,14.674-0.419,20.923,7.934l48.777,65.191h34.097L256.594,147.631z"
id="path955"
style="fill:#502d16" />
<path
fill-rule="evenodd"
clip-rule="evenodd"
fill="#53C9ED"
d="M220.993,219.764l13.847,50.956l37.23,48.658 c3.849,5.028,1.842,13.032-4.484,17.874l-2.023,1.549c-6.326,4.839-14.574,4.686-18.425-0.347l-38.7-50.578 c-0.779-1.02-1.307-2.164-1.619-3.376c-0.717-0.833-1.25-1.784-1.539-2.848l-7.947-29.245c-3.057,0.421-6.562,0.693-10.292,0.765 l-3.824,0.073c-11.378,0.218-23.561-4.499-24.396-5.07l-22.519-15.411l-6.271,41.158c-0.878,5.765-7.974,9.467-15.849,8.268 l-2.52-0.384c-7.874-1.199-13.547-6.845-12.668-12.613l8.83-57.962c0.224-1.468,3.203-9.405,4.99-12.018l1.439-2.103 c4.498-6.573,11.845-9.371,16.41-6.246l27.638,18.915V197.5h60.72L220.993,219.764z"
id="path961"
style="fill:#502d16" />
</g>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:354.436px;line-height:125%;font-family:'Nimbus Sans';-inkscape-font-specification:'Nimbus Sans Bold';letter-spacing:0px;word-spacing:0px;fill:#ddff55;fill-opacity:1;stroke:#000000;stroke-width:4.0252;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
x="157.38054"
y="346.03113"
id="text974"
transform="scale(1.0009789,0.99902204)"><tspan
sodipodi:role="line"
id="tspan972"
x="157.38054"
y="346.03113"
style="fill:#ddff55;stroke:#000000;stroke-width:4.0252;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1">?</tspan></text></svg>

After

Width:  |  Height:  |  Size: 3.6 KiB

View file

@ -166,7 +166,7 @@
}
]
},
"icon": "./assets/pencil.svg",
"icon": "./assets/svg/pencil.svg",
"width": "5",
"color": {
"render": "#aaaaaa",

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 295.23 356.97"><defs><style>.cls-1{fill:#55bdc0;}.cls-2{fill:#fff;}</style></defs><title>Lg_fietsambassade_Q_blauw_neg</title><g id="Laag_2" data-name="Laag 2"><path class="cls-1" d="M120.08,121V357.28c0,26.31,21.73,54.33,64.59,83.3,20.52,13.87,61.09,37.34,83,37.34s62.52-23.47,83-37.34c42.86-29,64.59-57,64.59-83.3V121Z" transform="translate(-120.08 -120.95)"/><path class="cls-2" d="M315.94,292.51V269.8h8.12v-5.58h-21.9v5.58h8.12v22.71ZM250,287v-6.83h8.12v-5.49H250v-4.89h14v-5.54H244.31v28.29h20.25V287Zm-23.38-3.84h4.48c-.32,2.47-1.66,4.28-5.53,4.28-4.25,0-6.71-3.83-6.71-9.05s2.42-9,6.66-9c3.08,0,4.37,1.58,5.42,3.68l5.37-2.22c-1.85-4.37-4.93-7.07-10.7-7.07-7.4,0-12.57,6-12.57,14.58,0,8.93,5,14.59,12.36,14.59,6.55,0,11.36-4.12,11.36-11.4v-3.71H226.59Zm-61.89-68h-9.65l4.85-15.82Zm3.21,10.6h4l-9.52-29.51h-4.72l-9.56,29.51h3.77l2.32-7.55h11.49Zm22.78-7.68-6.48-21.83h-5.06l-2.48,29.51h3.51l1-13.3c.39-4.37.64-9.13.69-12.48l6.94,22.39h3.48L199,200c0,2.49.38,7.55.81,12.23l1.12,13.51h3.6l-2.57-29.51h-5.07Zm14.52-48.89c0,7.33-2.32,9.35-6.39,9.35h-2.06V160.06h2c3.95,0,6.44,1.72,6.44,9.14m8.19,0c0-12.27-7.59-14.8-15.66-14.8h-8.92v29.81h9.53c7.93,0,15.05-3.09,15.05-15m4.31,30h3.56c4.5,0,7.16,1,7.16,4.72,0,3.21-2.53,4.93-5.92,4.93h-4.8Zm0,12.52h5.19c3.65,0,6.73,1.46,6.73,5.67s-3.08,5.36-7.5,5.36h-4.42Zm3.17-15.48H214v29.51h8.11c6.77,0,11.45-2.23,11.45-8.36,0-5-3.35-6.7-6.82-7.25a6.48,6.48,0,0,0,5.49-6.48c0-5.11-4.2-7.42-11.37-7.42M236.69,160l.81-5.62H218.59v29.81h18.79v-5.62H226.52v-6.78h8.88v-5.44h-8.88V160Zm16.75,55.15h-9.65l4.84-15.82Zm7.16,10.6-9.52-29.51h-4.72l-9.56,29.51h3.77l2.32-7.55h11.49l2.27,7.55ZM271.73,160l.81-5.62H254.23v29.81h7.94V172.8h8.4v-5.62h-8.4V160Zm11.43,39.11a12.15,12.15,0,0,0-9-3.39c-5.37,0-9.14,3.18-9.14,7.6s2.87,6.69,8.66,8.45c5.06,1.54,6.52,2.87,6.52,5.91,0,3.65-2.92,5.5-6.52,5.5a10.51,10.51,0,0,1-7.67-3.09l-2.19,2.4a13.71,13.71,0,0,0,9.91,3.77c6.47,0,10.33-3.56,10.33-8.7,0-5.54-3.82-7.42-8.66-8.88-5.32-1.63-6.56-2.88-6.56-5.49,0-2.88,2.36-4.38,5.49-4.38a9.58,9.58,0,0,1,6.69,2.66Zm-6.37-14.92h7.93V154.4h-7.93Zm12.81,98.15c-.36-.72-1.29-2.14-2-3.19l-10-14.95h-5.41v28.29h5.57V280.06c0-1.58-.08-5.13-.08-6.18.37.72,1.29,2.14,2,3.19l10.39,15.44h5.05V264.22h-5.58v12c0,1.58.08,5.13.08,6.18m15.26-64.66c0,3.65-2.92,5.5-6.52,5.5a10.51,10.51,0,0,1-7.67-3.09l-2.19,2.4a13.7,13.7,0,0,0,9.9,3.77c6.48,0,10.34-3.56,10.34-8.7,0-5.54-3.82-7.42-8.66-8.88-5.32-1.63-6.56-2.88-6.56-5.49,0-2.88,2.36-4.38,5.49-4.38a9.58,9.58,0,0,1,6.69,2.66l2.1-2.36a12.15,12.15,0,0,0-9-3.39c-5.37,0-9.14,3.18-9.14,7.6s2.87,6.69,8.66,8.45c5.06,1.54,6.52,2.87,6.52,5.91M309.17,160l.81-5.62H291.07v29.81h18.79v-5.62H299v-6.78h8.88v-5.44H299V160Zm9.63,55.15,4.85-15.82,4.8,15.82Zm2.57-18.91-9.56,29.51h3.78l2.31-7.55h11.5l2.27,7.55h3.94l-9.52-29.51Zm14.27-35.81.81-6H313.2v6h7.47v23.76h7.93V160.45Zm11.4,1.41c0-1.63,1.29-2.53,3.61-2.53a9.92,9.92,0,0,1,6.43,2.45l3.6-4.21A14.54,14.54,0,0,0,350,153.63c-6.39,0-11.15,3.43-11.15,8.88,0,4.37,2.24,7.24,9.18,9.43,4.12,1.25,5.15,2.1,5.15,4.08s-1.5,3.21-4.25,3.21a10.87,10.87,0,0,1-7.37-3l-4,4.38A16.13,16.13,0,0,0,349.27,185c7.64,0,12.18-3.95,12.18-9.57,0-5.4-3-7.93-8.83-9.77-4.46-1.46-5.58-2.06-5.58-3.78m11.69,49c0,9.91-4.76,12-9.48,12h-3.47V199.26H349c4.8,0,9.78,1.42,9.78,11.58m4,0c0-12.22-7.16-14.58-14.54-14.58h-6.09v29.51H349c6.31,0,13.77-2.83,13.77-14.93M375,222.77V212.21h10.08v-3H375v-10h11.62l.43-3H371.3v29.51h16v-3Z" transform="translate(-120.08 -120.95)"/><path class="cls-2" d="M333.81,355.77a2.71,2.71,0,0,0,2.13,3.18l37.42,7.49a2.44,2.44,0,0,0,.53.05,2.71,2.71,0,0,0,.53-5.36L337,353.64a2.72,2.72,0,0,0-3.19,2.13m-54.08,40.14V421a2.71,2.71,0,0,0,5.41,0V395.91a2.71,2.71,0,0,0-5.41,0M265,391.49v33.9a2.71,2.71,0,0,0,5.42,0v-33.9a2.71,2.71,0,0,0-5.42,0m-14.74,4.42V421a2.71,2.71,0,0,0,5.42,0V395.91a2.71,2.71,0,0,0-5.42,0m-12,12a29.48,29.48,0,1,1,29.48,29.48A29.48,29.48,0,0,1,238.22,408m-7.79,0a37.27,37.27,0,1,0,37.27-37.27A37.31,37.31,0,0,0,230.43,408m-71.58-43.64a2.71,2.71,0,0,0,2.65,2.17,2.32,2.32,0,0,0,.53-.05L199.46,359a2.71,2.71,0,0,0-1.07-5.31L161,361.13a2.7,2.7,0,0,0-2.12,3.19M150,335a9.32,9.32,0,0,0,9.32,9.32h44a9.27,9.27,0,0,0,8.12-4.84c5.48,2.43,8.9,7.09,12.41,12,4.74,6.63,9.65,13.49,19.73,13.49h48.24c10.08,0,15-6.86,19.73-13.49,3.5-4.9,6.93-9.56,12.4-12a9.29,9.29,0,0,0,8.13,4.84h44a9.32,9.32,0,0,0,0-18.64h-44a9.28,9.28,0,0,0-9.22,8.34c-7.47,2.86-11.8,8.83-15.72,14.3-4.48,6.27-8,11.22-15.32,11.22H243.58c-7.29,0-10.84-4.95-15.33-11.22-3.91-5.47-8.25-11.44-15.71-14.3a9.29,9.29,0,0,0-9.22-8.34h-44A9.32,9.32,0,0,0,150,335" transform="translate(-120.08 -120.95)"/></g></svg>

After

Width:  |  Height:  |  Size: 4.5 KiB

View file

@ -0,0 +1,82 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
viewBox="0 0 295.368 232.39316"
version="1.1"
id="svg15"
sodipodi:docname="fietsambassade_gent_logo_small.svg"
width="295.36801"
height="232.39316"
inkscape:version="0.92.4 (5da689c313, 2019-01-14)">
<metadata
id="metadata19">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1920"
inkscape:window-height="1001"
id="namedview17"
showgrid="false"
showguides="true"
inkscape:guide-bbox="true"
inkscape:zoom="0.93496484"
inkscape:cx="-146.92431"
inkscape:cy="82.235797"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="svg15">
<sodipodi:guide
position="-5.4830949,207.9804"
orientation="-0.70710678,0.70710678"
id="guide829"
inkscape:locked="false" />
<sodipodi:guide
position="321.42428,190.39661"
orientation="0.70710678,0.70710678"
id="guide831"
inkscape:locked="false" />
</sodipodi:namedview>
<defs
id="defs4">
<style
id="style2">.cls-1{fill:#55bdc0;}.cls-2{fill:#fff;}</style>
</defs>
<title
id="title6">Lg_fietsambassade_Q_blauw_neg</title>
<path
style="fill:#55bdc0"
inkscape:connector-curvature="0"
id="path8"
d="M 0.09456096,18.8351 2.4670257e-5,111.75316 C -0.02674352,138.06315 21.730025,166.08316 64.590025,195.05316 c 20.52,13.87 61.089995,37.34 82.999995,37.34 21.91,0 62.52,-23.47 83,-37.34 42.86,-29 64.5384,-57.00005 64.59,-83.3 l 0.188,-95.81287 C 295.34552,6.77737 288.23263,8e-4 279.42773,0 L 18.693261,0.2364 C 8.8199886,0.3282 0.09456096,6.94637 0.09456096,18.8351 Z"
class="cls-1"
sodipodi:nodetypes="cscscscccc" />
<path
style="fill:#ffffff;stroke-width:1.15448177"
inkscape:connector-curvature="0"
id="path12"
d="m 223.56466,76.765023 c -0.33232,1.692354 0.76759,3.334455 2.45904,3.671251 l 43.20071,8.647067 c 0.20125,0.04156 0.40643,0.06084 0.61188,0.05772 3.72894,-0.04953 4.2589,-5.409161 0.61187,-6.18802 l -43.20071,-8.647069 c -1.69498,-0.332733 -3.34045,0.765976 -3.68279,2.459047 m -62.43438,46.340891 v 28.96595 c 0.23836,3.91825 6.00741,3.91825 6.24575,0 v -28.96594 c -0.23834,-3.91823 -6.00739,-3.91823 -6.24575,0 m -17.00551,-5.10281 v 39.13693 c 0,4.17153 6.25729,4.17153 6.25729,0 v -39.13693 c 0,-4.17153 -6.25729,-4.17153 -6.25729,0 m -17.01706,5.10281 v 28.96594 c 0,4.17154 6.25729,4.17154 6.25729,0 v -28.96594 c 0,-4.17153 -6.25729,-4.17153 -6.25729,0 m -13.85378,13.85378 c 0,-30.32327 36.65947,-45.503726 58.09866,-24.06453 9.73364,9.73363 12.64618,24.37161 7.37866,37.08902 -5.26753,12.71744 -17.67769,21.00963 -31.4432,21.00963 -18.77405,0.0256 -34.02301,-15.15624 -34.0803,-33.93022 m -8.99342,0 c 0,17.40301 10.48339,33.0925 26.56137,39.75197 16.07795,6.65944 34.58397,2.97727 46.88968,-9.32844 12.30573,-12.30573 15.9879,-30.81175 9.32846,-46.88969 -6.65947,-16.07799 -22.34897,-26.561373 -39.75197,-26.561373 -23.7529,0.02551 -43.00208,19.274643 -43.02754,43.027533 M 21.576541,86.682018 c 0.295929,1.455363 1.574237,2.502132 3.059376,2.505226 0.205498,0.0046 0.410808,-0.01501 0.611876,-0.05772 l 43.212252,-8.635521 c 3.919743,-0.932533 2.739705,-6.788607 -1.235296,-6.130299 l -43.166073,8.589345 c -1.69607,0.3363 -2.794318,1.988849 -2.447501,3.682794 M 11.359377,52.786436 c 0,5.942464 4.817313,10.75977 10.75977,10.75977 h 50.797197 c 3.911062,-0.0092 7.505358,-2.152104 9.374392,-5.587691 6.32656,2.80539 10.274888,8.185275 14.327108,13.853781 5.472246,7.654214 11.140746,15.573956 22.777926,15.573956 h 55.6922 c 11.63718,0 17.31723,-7.919742 22.77792,-15.573956 4.04069,-5.656961 8.00056,-11.036846 14.31558,-13.853781 1.87475,3.435622 5.47211,5.57722 9.38593,5.587691 h 50.7972 c 5.94247,0 10.75977,-4.817306 10.75977,-10.75977 0,-5.942452 -4.8173,-10.75977 -10.75977,-10.75977 h -50.7972 c -5.49132,0.0069 -10.08809,4.165301 -10.64432,9.628378 -8.62398,3.301818 -13.62288,10.194074 -18.14845,16.509089 -5.17208,7.238601 -9.23585,12.953286 -17.68666,12.953286 h -55.6922 c -8.41617,0 -12.51458,-5.714685 -17.69821,-12.953286 C 97.18354,61.849118 92.1731,54.956862 83.560666,51.655044 82.999343,46.194542 78.405613,42.039262 72.916344,42.026666 H 22.119147 c -5.942457,0 -10.75977,4.817318 -10.75977,10.75977"
class="cls-2"
sodipodi:nodetypes="cccccccccccccsssccsssccsscccsssccccccccccscccsscccssscccsscccsc" />
</svg>

After

Width:  |  Height:  |  Size: 5.1 KiB

View file

@ -6,12 +6,12 @@
"fr": "Carte des cartes"
},
"shortDescription": {
"en": "On this map, all the maps known by OpenStreetMap are shown",
"en": "This theme shows all (touristic) maps that OpenStreetMap knows of",
"nl": "Een kaart met alle kaarten die OpenStreetMap kent",
"fr": "Cette carte affiche toutes les cartes (plans) mappés dans OpenStreetMap"
},
"description": {
"en": "On this map you can find all maps OpenStreetMap knows.<br/><br/>If a map is missing, you can easily map this map on OpenStreetMap.",
"en": "On this map you can find all maps OpenStreetMap knows - typically a big map on an information board showing the area, city or region, e.g. a tourist map on the back of a billboard, a map of a nature reserve, a map of cycling networks in the region, ...) <br/><br/>If a map is missing, you can easily map this map on OpenStreetMap.",
"nl": "Op deze kaart kan je alle kaarten zien die OpenStreetMap kent.<br/><br/>Ontbreekt er een kaart, dan kan je die kaart hier ook gemakelijk aan deze kaart toevoegen.",
"fr": "Sur cette carte sont affichées les cartes (plans) mappées dans OpenStreetMap.<br/><br/>Si une carte est manquante, vous pouvez l'ajouer facilement avec un compte OpenStreetMap."
},

View file

@ -9,18 +9,3 @@ html {
--foreground-color: white !important;
--shadow-color: #0f0 !important;
}
#innercolor {
stop-color:#ff0000
}
.leaflet-div-icon svg {
width: calc(100% - 3px);
height: calc(100% + 3px);
}
/*
.leaflet-div-icon svg path {
fill: none !important;
stroke-width: 1px !important;
stroke: #0f0 !important;
}
*/

View file

@ -23,306 +23,6 @@
"widenFactor": 0.05,
"icon": "./assets/themes/toilets/toilets.svg",
"layers": [
{
"id": "Toilet",
"name": {
"en": "Toilets",
"de": "Toiletten",
"fr": "Toilettes"
},
"overpassTags": "amenity=toilets",
"title": {
"render": {
"en": "Toilet",
"de": "Toilette",
"fr": "Toilettes"
}
},
"icon": {
"render": "./assets/themes/toilets/toilets.svg",
"mappings": [
{
"if": "wheelchair=yes",
"then": "./assets/themes/toilets/wheelchair.svg"
}
]
},
"color": {
"render": "#0000ff"
},
"minzoom": 12,
"wayHandling": 2,
"presets": [
{
"title": {
"en": "Toilet",
"de": "Toilette",
"fr": "Toilettes"
},
"tags": [
"amenity=toilets"
],
"description": {
"en": "A publicly accessible toilet or restroom",
"de": "Eine öffentlich zugängliche Toilette",
"fr": "Des toilettes"
}
},
{
"title": {
"en": "Toilets with wheelchair accessible toilet",
"de": "Toiletten mit rollstuhlgerechter Toilette",
"fr": "Toilettes accessible aux personnes à mobilité réduite"
},
"tags": [
"amenity=toilets",
"wheelchair=yes"
],
"description": {
"en": "A restroom which has at least one wheelchair-accessible toilet",
"de": "Eine Toilettenanlage mit mindestens einer rollstuhlgerechten Toilette",
"fr": "Toilettes avec au moins un WC accessible aux personnes à mobilité réduite"
}
}
],
"tagRenderings": [
"images",
{
"question": {
"en": "Are these toilets publicly accessible?",
"de": "Sind diese Toiletten öffentlich zugänglich?",
"fr": "Ces toilettes sont-elles accessibles publiquement ?"
},
"render": {
"en": "Access is {access}",
"de": "Zugang ist {access}",
"fr": "L'accès est {access}"
},
"freeform": {
"key": "access",
"addExtraTags": [
"fixme=the tag access was filled out by the user and might need refinement"
]
},
"mappings": [
{
"if": "access=yes",
"then": {
"en": "Public access",
"de": "Öffentlicher Zugang",
"fr": "Accès publique"
}
},
{
"if": "access=customers",
"then": {
"en": "Only access to customers",
"de": "Nur Zugang für Kunden",
"fr": "Accès réservé aux clients"
}
},
{
"if": "access=no",
"then": {
"en": "Not accessible",
"de": "Nicht zugänglich",
"fr": "WC privés"
}
},
{
"if": "access=key",
"then": {
"en": "Accessible, but one has to ask a key to enter",
"de": "Zugänglich, aber man muss einen Schlüssel für die Eingabe verlangen",
"fr": "Accessible, mais vous devez demander la clé"
}
}
]
},
{
"question": {
"en": "Are these toilets free to use?",
"de": "Können diese Toiletten kostenlos benutzt werden?",
"fr": "Ces toilettes sont-elles payantes"
},
"mappings": [
{
"then": {
"en": "These are paid toilets",
"de": "Dies sind bezahlte Toiletten",
"fr": "Toilettes payantes"
},
"if": "fee=yes"
},
{
"if": "fee=no",
"then": {
"en": "Free to use",
"de": "Kostenlose Nutzung",
"fr": "Toilettes gratuites"
}
}
]
},
{
"question": {
"en": "How much does one have to pay for these toilets?",
"de": "Wie viel muss man für diese Toiletten bezahlen?",
"fr": "Quel est le prix d'accès de ces toilettes ?"
},
"render": {
"en": "The fee is {charge}",
"de": "Die Gebühr beträgt {charge}",
"fr": "Le prix est {charge}"
},
"condition": "fee=yes",
"freeform": {
"key": "charge",
"type": "string"
}
},
{
"question": {
"en": "Is there a dedicated toilet for wheelchair users",
"de": "Gibt es eine Toilette für Rollstuhlfahrer?",
"fr": "Un WC réservé aux personnes à mobilité réduite est-il présent ?"
},
"mappings": [
{
"then": {
"en": "There is a dedicated toilet for wheelchair users",
"de": "Es gibt eine Toilette für Rollstuhlfahrer",
"fr": "Il y a un WC réservé pour les personnes à mobilité réduite"
},
"if": "wheelchair=yes"
},
{
"if": "wheelchair=no",
"then": {
"en": "No wheelchair access",
"de": "Kein Zugang für Rollstuhlfahrer",
"fr": "Non accessible aux personnes à mobilité réduite"
}
}
]
},
{
"question": {
"en": "Which kind of toilets are this?",
"de": "Welche Art von Toiletten sind das?",
"fr": "De quel type sont ces toilettes ?"
},
"mappings": [
{
"if": "toilets:position=seated",
"then": {
"en": "There are only seated toilets",
"de": "Es gibt nur Sitztoiletten",
"fr": "Il y a uniquement des WC assis"
}
},
{
"if": "toilets:position=urinals",
"then": {
"en": "There are only urinals here",
"de": "Hier gibt es nur Pissoirs",
"fr": "Il y a uniquement des urinoirs"
}
},
{
"if": "toilets:position=squat",
"then": {
"en": "There are only squat toilets here",
"de": "Es gibt hier nur Hocktoiletten.",
"fr": "Il y a uniquement des WC turques"
}
},
{
"if": "toilets:position=seated;urinals",
"then": {
"en": "Both seated toilets and urinals are available here",
"de": "Sowohl Sitztoiletten als auch Pissoirs sind hier verfügbar",
"fr": "Il y a des WC assis et des urinoirs"
}
}
]
},
{
"question": {
"en": "Is a changing table (to change diapers) available?",
"de": "Ist ein Wickeltisch (zum Wechseln der Windeln) vorhanden?",
"fr": "Ces WC disposent-ils d'une table à langer ?"
},
"mappings": [
{
"then": {
"en": "A changing table is available",
"de": "Ein Wickeltisch ist verfügbar",
"fr": "Une table à langer est disponible"
},
"if": "changing_table=yes"
},
{
"if": "changing_table=no",
"then": {
"en": "No changing table is available",
"de": "Es ist kein Wickeltisch verfügbar",
"fr": "Aucune table à langer"
}
}
]
},
{
"question": {
"en": "Where is the changing table located?",
"de": "Wo befindet sich der Wickeltisch?",
"fr": "Où se situe la table à langer ?"
},
"render": {
"en": "The changing table is located at {changing_table:location}",
"de": "Die Wickeltabelle befindet sich in {changing_table:location}",
"fr": "Emplacement de la table à langer : {changing_table:location}"
},
"condition": "changing_table=yes",
"freeform": {
"key": "changing_table:location"
},
"mappings": [
{
"then": {
"en": "The changing table is in the toilet for women. ",
"de": "Der Wickeltisch befindet sich in der Damentoilette. ",
"fr": "La table à langer se situe dans les WC pour femmes. "
},
"if": "changing_table:location=female_toilet"
},
{
"then": {
"en": "The changing table is in the toilet for men. ",
"de": "Der Wickeltisch befindet sich in der Herrentoilette. ",
"fr": "La table à langer se situe dans les WC pour hommes. "
},
"if": "changing_table:location=male_toilet"
},
{
"if": "changing_table:location=wheelchair_toilet",
"then": {
"en": "The changing table is in the toilet for wheelchair users. ",
"de": "Der Wickeltisch befindet sich in der Toilette für Rollstuhlfahrer. ",
"fr": "La table à langer se situe dans les WC pour personnes à mobilité réduite. "
}
},
{
"if": "changing_table:location=dedicated_room",
"then": {
"en": "The changing table is in a dedicated room. ",
"de": "Der Wickeltisch befindet sich in einem eigenen Raum. ",
"fr": "La table à langer se situe dans un espace dédié. "
}
}
]
}
]
}
"toilets"
]
}

View file

@ -466,6 +466,10 @@
"de": "Die E-Mail-Adresse dieser {category} lautet <a href='mailto:{email}' target='_blank'>{email}</a>"
}
},
"customIntro": {
"en": "<p><strong>kletterspots.de</strong> is run by <a href='https://utopicode.de/en/?ref=kletterspots' target='_blank'>Christian Neumann</a>. Please <a href='https://utopicode.de/en/contact/?project=kletterspots&ref=kletterspots' target='blank'>get in touch</a> if you have feedback or questions.</p><p>The project uses data of the <a href='https://www.openstreetmap.org/' target='_blank'>OpenStreetMap</a> project and is based on the free software <a href='https://github.com/pietervdvn/MapComplete' target='_blank'>MapComplete</a>.</p>",
"de": "<p><strong>kletterspots.de</strong> wird betrieben von <a href='https://utopicode.de/?ref=kletterspots' target='_blank'>Christian Neumann</a>. Bitte <a href='https://utopicode.de/kontakt/?project=kletterspots&ref=kletterspots' target='blank'>melden Sie sich</a>, wenn Sie Feedback oder Fragen haben.</p><p>Das Projekt nutzt Daten des <a href='https://www.openstreetmap.org/' target='_blank'>OpenStreetMap</a> Projekts und basiert auf der freien Software <a href='https://github.com/pietervdvn/MapComplete' target='_blank'>MapComplete</a>.</p>"
},
"openStreetMapIntro": {
"en": "<h3>An Open Map</h3><p>Wouldn't it be cool if there was a single map, which everyone could freely use and edit? A single place to store all geo-information? Then, all those websites with different, small and incompatible maps (which are always outdated) wouldn't be needed anymore.</p><p><b><a href='https://OpenStreetMap.org' target='_blank'>OpenStreetMap</a></b> is this map. The map data can be used for free (with <a href='https://osm.org/copyright' target='_blank'>attribution and publication of changes to that data</a>). On top of that, everyone can freely add new data and fix errors. This website uses OpenStreetMap as well. All the data is from there, and your answers and corrections are added there as well.</p><p>A ton of people and application already use OpenStreetMap: <a href='https://maps.me/' target='_blank'>Maps.me</a>, <a href='https://osmAnd.net' target='_blank'>OsmAnd</a>, but also the maps at Facebook, Instagram, Apple-maps and Bing-maps are (partly) powered by OpenStreetMap.If you change something here, it'll be reflected in those applications too - after their next update!</p>",
"es": "<h3>Un mapa abierto</h3><p></p>¿No sería genial si hubiera un solo mapa, que todos pudieran usar y editar libremente?¿Un solo lugar para almacenar toda la información geográfica? Entonces, todos esos sitios web con mapas diferentes, pequeños e incompatibles (que siempre están desactualizados) ya no serían necesarios.</p><p><b><a href='https://OpenStreetMap.org' target='_blank'>OpenStreetMap</a></b> es ese mapa. Los datos del mapa se pueden utilizar de forma gratuita (con <a href='https://osm.org/copyright' target='_blank'> atribución y publicación de cambios en esos datos</a>).Además de eso, todos pueden agregar libremente nuevos datos y corregir errores. Este sitio web también usa OpenStreetMap. Todos los datos provienen de allí, y tus respuestas y correcciones también se añadirán allí.</p><p>Muchas personas y aplicaciones ya usan OpenStreetMap: <a href='https://maps.me/' target='_blank'>Maps.me</a>, <a href='https://osmAnd.net' target='_blank'>OsmAnd</a>, pero también los mapas de Facebook, Instagram, Apple y Bing son (en parte) impulsados por OpenStreetMap .Si cambias algo aquí, también se reflejará en esas aplicaciones, en su próxima actualización</p>",
@ -709,8 +713,8 @@
"de": "<h3>Kundenspezifische Themen</h3>Dies sind zuvor besuchte benutzergenerierte Themen"
},
"aboutMapcomplete": {
"en": "<h3>About MapComplete</h3><p>MapComplete is an OpenStreetMap editor that is meant to help everyone to easily add information on a <b>single theme.</b></p><p>Only features relevant to a single theme are shown with a few predefined questions, in order to keep things <b>simple and extremly user-friendly</b>.The theme maintainer can also choose a language for the interface, choose to disable elements or even to embed it into a different website without any UI-element at all.</p><p>However, another important part of MapComplete is to always <b>offer the next step</b> to learn more about OpenStreetMap:<ul><li>An iframe without UI-elements will link to a full-screen version</li><li>The fullscreen version offers information about OpenStreetMap</li><li>If you're not logged in, you're asked to log in</li><li>If you answered a single question, you are allowed to add points</li><li>At a certain point, the actual added tags appear which later get linked to the wiki...</li></ul></p><p>Do you notice an issue with MapComplete? Do you have a feature request? Do you want to help translating? Head over to <a href='https://github.com/pietervdvn/MapComplete' target='_blank'>the source code</a> or <a href='https://github.com/pietervdvn/MapComplete/issues' target='_blank'>issue tracker.</a></p>",
"nl": "<h3>Over MapComplete</h3><p>MapComplete is een OpenStreetMap-editor om eenvoudig informatie toe te voegen over <b>één enkel onderwerp</b>.</p><p>Om de editor zo <b>simpel en gebruiksvriendelijk mogelijk</b> te houden, worden enkel objecten relevant voor het thema getoond.Voor deze objecten kunnen dan vragen beantwoord worden, of men kan een nieuw punt van dit thema toevoegen.De maker van het thema kan er ook voor opteren om een aantal elementen van de gebruikersinterface uit te schakelen of de taal ervan in te stellen.</p><p>Een ander belangrijk aspect is om bezoekers stap voor stap meer te leren over OpenStreetMap:<ul><li>Een iframe zonder verdere uitleg linkt naar de volledige versie van MapComplete</li><li>De volledige versie heeft uitleg over OpenStreetMap</li><li>Als je niet aangemeld bent, wordt er je gevraagd dit te doen</li><li>Als je minstens één vraag hebt beantwoord, kan je punten gaan toevoegen.</li><li>Heb je genoeg changesets, dan verschijnen de tags die wat later doorlinken naar de wiki</li></ul></p><p>Merk je een bug of wil je een extra feature? Wil je helpen vertalen? Bezoek dan de <a href='https://github.com/pietervdvn/MapComplete' target='_blank'>broncode</a> en <a href='https://github.com/pietervdvn/MapComplete/issues' target='_blank'>issue tracker</a></p>",
"en": "<h3>About MapComplete</h3><p>MapComplete is an OpenStreetMap editor that is meant to help everyone to easily add information on a <b>single theme.</b></p><p>Only features relevant to a single theme are shown with a few predefined questions, in order to keep things <b>simple and extremly user-friendly</b>.The theme maintainer can also choose a language for the interface, choose to disable elements or even to embed it into a different website without any UI-element at all.</p><p>However, another important part of MapComplete is to always <b>offer the next step</b> to learn more about OpenStreetMap:<ul><li>An iframe without UI-elements will link to a full-screen version</li><li>The fullscreen version offers information about OpenStreetMap</li><li>If you're not logged in, you're asked to log in</li><li>If you answered a single question, you are allowed to add points</li><li>At a certain point, the actual added tags appear which later get linked to the wiki...</li></ul></p><p>Do you notice an issue with MapComplete? Do you have a feature request? Do you want to help translating? Head over to <a href='https://github.com/pietervdvn/MapComplete' target='_blank'>the source code</a> or <a href='https://github.com/pietervdvn/MapComplete/issues' target='_blank'>issue tracker.</a> Follow the edit count on <a href='https://osmcha.org/?filters=%7B%22date__gte%22%3A%5B%7B%22label%22%3A%222020-07-05%22%2C%22value%22%3A%222020-07-05%22%7D%5D%2C%22editor%22%3A%5B%7B%22label%22%3A%22mapcomplete%22%2C%22value%22%3A%22mapcomplete%22%7D%5D%7D' target='_blank' >OsmCha</a></p>",
"nl": "<h3>Over MapComplete</h3><p>MapComplete is een OpenStreetMap-editor om eenvoudig informatie toe te voegen over <b>één enkel onderwerp</b>.</p><p>Om de editor zo <b>simpel en gebruiksvriendelijk mogelijk</b> te houden, worden enkel objecten relevant voor het thema getoond.Voor deze objecten kunnen dan vragen beantwoord worden, of men kan een nieuw punt van dit thema toevoegen.De maker van het thema kan er ook voor opteren om een aantal elementen van de gebruikersinterface uit te schakelen of de taal ervan in te stellen.</p><p>Een ander belangrijk aspect is om bezoekers stap voor stap meer te leren over OpenStreetMap:<ul><li>Een iframe zonder verdere uitleg linkt naar de volledige versie van MapComplete</li><li>De volledige versie heeft uitleg over OpenStreetMap</li><li>Als je niet aangemeld bent, wordt er je gevraagd dit te doen</li><li>Als je minstens één vraag hebt beantwoord, kan je punten gaan toevoegen.</li><li>Heb je genoeg changesets, dan verschijnen de tags die wat later doorlinken naar de wiki</li></ul></p><p>Merk je een bug of wil je een extra feature? Wil je helpen vertalen? Bezoek dan de <a href='https://github.com/pietervdvn/MapComplete' target='_blank'>broncode</a> en <a href='https://github.com/pietervdvn/MapComplete/issues' target='_blank'>issue tracker</a>. Volg de edits <a href='https://osmcha.org/?filters=%7B%22date__gte%22%3A%5B%7B%22label%22%3A%222020-07-05%22%2C%22value%22%3A%222020-07-05%22%7D%5D%2C%22editor%22%3A%5B%7B%22label%22%3A%22mapcomplete%22%2C%22value%22%3A%22mapcomplete%22%7D%5D%7D' target='_blank' >op OsmCha</a></p>",
"de": "<h3>Über MapComplete</h3><p>MapComplete ist ein OpenStreetMap-Editor, der jedem helfen soll, auf einfache Weise Informationen zu einem <b>Einzelthema hinzuzufügen.</b></p><p>Nur Merkmale, die für ein einzelnes Thema relevant sind, werden mit einigen vordefinierten Fragen gezeigt, um die Dinge <b>einfach und extrem benutzerfreundlich</b> zu halten.Der Themen-Betreuer kann auch eine Sprache für die Schnittstelle wählen, Elemente deaktivieren oder sogar in eine andere Website ohne jegliches UI-Element einbetten.</p><p>Ein weiterer wichtiger Teil von MapComplete ist jedoch, immer <b>den nächsten Schritt anzubieten</b>um mehr über OpenStreetMap zu erfahren:<ul><li>Ein iframe ohne UI-Elemente verlinkt zu einer Vollbildversion</li><li>Die Vollbildversion bietet Informationen über OpenStreetMap</li><li>Wenn Sie nicht eingeloggt sind, werden Sie gebeten, sich einzuloggen</li><li>Wenn Sie eine einzige Frage beantwortet haben, dürfen Sie Punkte hinzufügen</li><li>An einem bestimmten Punkt erscheinen die tatsächlich hinzugefügten Tags, die später mit dem Wiki verlinkt werden...</li></ul></p><p>Fällt Ihnen ein Problem mit MapComplete auf? Haben Sie einen Feature-Wunsch? Wollen Sie beim Übersetzen helfen? Gehen Sie <a href='https://github.com/pietervdvn/MapComplete' target='_blank'>zum Quellcode</a> oder <a href='https://github.com/pietervdvn/MapComplete/issues' target='_blank'>zur Problemverfolgung</a>.</p>"
},
"backgroundMap": {

View file

@ -0,0 +1,57 @@
.fullscreenmessage-content {
max-height: calc(100vh - var(--return-to-the-map-height));
height: 100%;
overflow-y: auto;
overflow-x: hidden;
background-color: var(--background-color);
display: block;
}
.fullscreenmessage-content .featureinfobox {
padding: 1em;
position: relative;
}
.fullscreenmessage-content .featureinfobox-content {
padding: 1em;
top: var(--variable-title-height);
/* 2em extra: padding from the title */
max-height: calc(100vh - var(--variable-title-height) - var(--return-to-the-map-height) - 2em) !important;
display: block;
position: absolute;
overflow-y: auto;
}
.fullscreenmessage-content .featureinfobox-titlebar {
position: fixed;
top: 0;
left: 0;
z-index: 10001;
background-color: var(--background-color);
padding: 0.5em;
width: 100%;
box-sizing: border-box;
}
.to-the-map span {
font-size: xx-large;
}
.to-the-map {
background: var(--catch-detail-color);
height: var(--return-to-the-map-height);
position: fixed;
z-index: 10000;
bottom: 0;
left: 0;
width: 100vw;
color: var(--catch-detail-color-contrast);
font-weight: bold;
pointer-events: all;
cursor: pointer;
padding-top: 1.2em;
text-align: center;
padding-bottom: 1.2em;
box-sizing: border-box;
}

View file

@ -68,6 +68,7 @@ Contains tweaks for small screens
position: absolute;
z-index: 10000;
width: 100vw;
height: 100vh;
}
#welcomeMessage {

View file

@ -1,19 +1,47 @@
.featureinfobox {
display: flex;
flex-direction: column;
}
.featureinfobox-title {
font-size: xx-large;
}
.featureinfobox-icons img{
max-height: 1.5em;
width: 1.5em;
}
.featureinfobox-icons {
}
.featureinfobox-icons span {
display: inline-block;
padding-right: 0.1em;
}
.featureinfobox-titlebar{
font-size: large;
font-weight: bold;
display: flex;
justify-content: space-between;
border-bottom: 2px solid var(--foreground-color);
}
.featureinfobox-content {
display:block;
max-height: 75vh;
overflow-y: auto;
overflow-x: hidden;
}
@media only screen and (max-width: 600px), only screen and (max-height: 600px) {
.featureinfobox-content {
display:block;
max-height: unset !important;
overflow-y: auto;
}
}
.answer {
display: flex;
width: 100%;
@ -43,6 +71,12 @@
height: 100%;
}
.question a {
pointer-events: none;
text-decoration: none;
color: var(--subtle-detail-color-contrast)
}
.question-text {
font-size: larger;
font-weight: bold;

View file

@ -10,6 +10,7 @@
--shadow-color: #00000066;
--return-to-the-map-height: 5em;
--variable-title-height: 0px; /*Set by javascript dynamically*/
}
html, body {
@ -408,10 +409,7 @@ a {
}
.leaflet-popup-content {
width: 40em !important;
max-height: 80vh;
overflow-y: auto;
overflow-x: hidden;
width: 45em !important;
}
.leaflet-div-icon {
@ -420,6 +418,11 @@ a {
}
.leaflet-div-icon svg {
width: calc(100%);
height: calc(100%);
}
/****** ShareScreen *****/
.literal-code {
@ -499,3 +502,35 @@ a {
max-width: 1em;
}
.share-button {
background-color: var(--subtle-detail-color);
border: none;
color: var(--subtle-detail-color-contrast);
text-decoration: none;
display: inline-block;
border-radius: 3em;
height: 2.5em;
width: 2.5em;
box-sizing: border-box;
padding:0;
}
.share-button svg {
height: 1.5em;
width: 1.5em;
padding: 0.5em;
padding-left: 0.4em;
fill: var(--subtle-detail-color-contrast);
stroke: var(--subtle-detail-color-contrast);
}
.share-button svg path{
fill: var(--subtle-detail-color-contrast);
stroke: var(--subtle-detail-color-contrast);
}
.share-button svg circle{
fill: var(--subtle-detail-color-contrast);
stroke: var(--subtle-detail-color-contrast);
}

View file

@ -14,9 +14,10 @@
<link rel="stylesheet" href="./css/openinghourstable.css"/>
<link rel="stylesheet" href="./css/tagrendering.css"/>
<link rel="stylesheet" href="./css/imageUploadFlow.css"/>
<link rel="stylesheet" href="./css/fullscreenmessagebox.css"/>
<!-- $$$CUSTOM-CSS -->
<link rel="manifest" href="./manifest.manifest">
<link rel="icon" href="assets/svg/add.svg" sizes="any" type="image/svg+xml">
<link rel="icon" href="assets/themes/climbing/climbing_no_rope.svg" sizes="any" type="image/svg+xml">
<meta property="og:type" content="website">
<!-- $$$OG-META -->
@ -28,6 +29,8 @@
}
</style>
<script async defer data-domain="kletterspots.de" src="https://plausible.io/js/plausible.outbound-links.js"></script>
</head>
<body>
@ -35,7 +38,7 @@
id="decoration-desktop">
<!-- A nice decoration while loading or on errors -->
<!-- DECORATION 0 START -->
<img src="./assets/svg/add.svg"/>
<img src="./assets/themes/climbing/climbing_no_rope.svg"/>
<!-- DECORATION 0 END -->
</div>
@ -58,7 +61,7 @@
<div id="layer-selection">
</div>
<div id="centermessage">Loading MapComplete, hang on...</div>
<div id="centermessage">Lade...</div>
<div id="top-right"></div>
<span id="geolocate-button"></span>
@ -66,7 +69,5 @@
<script src="./index.ts"></script>
<script data-goatcounter="https://pietervdvn.goatcounter.com/count" async src="//gc.zgo.at/count.js"></script>
</body>
</html>

View file

@ -8,7 +8,7 @@
"staticPath": [
{
"staticPath": "tiles/",
"staticOutDir": "./tiles/"
"staticOutDir": "tiles/"
}
]
},
@ -24,10 +24,8 @@
"build": "rm -rf dist/ && npm run generate && parcel build --public-url ./ *.html assets/** assets/**/** assets/**/**/** vendor/* vendor/*/*",
"prepare-deploy": "npm run generate && npm run build && rm -rf .cache",
"deploy:staging": "npm run prepare-deploy && rm -rf /home/pietervdvn/git/pietervdvn.github.io/Staging/* && cp -r dist/* /home/pietervdvn/git/pietervdvn.github.io/Staging/ && cd /home/pietervdvn/git/pietervdvn.github.io/ && git add * && git commit -m 'New MapComplete Version' && git push && cd - && npm run clean",
"deploy:production": "npm run prepare-deploy && npm run optimize-images && rm -rf /home/pietervdvn/git/pietervdvn.github.io/MapComplete/* && cp -r dist/* /home/pietervdvn/git/pietervdvn.github.io/MapComplete/ && cd /home/pietervdvn/git/pietervdvn.github.io/ && git add * && git commit -m 'New MapComplete Version' && git push && cd - && npm run clean",
"deploy:production": "rm -rf ./assets/generated && npm run prepare-deploy && npm run optimize-images && rm -rf /home/pietervdvn/git/pietervdvn.github.io/MapComplete/* && cp -r dist/* /home/pietervdvn/git/pietervdvn.github.io/MapComplete/ && cd /home/pietervdvn/git/pietervdvn.github.io/ && git add * && git commit -m 'New MapComplete Version' && git push && cd - && npm run clean",
"clean": "rm -rf .cache/ && (find *.html | grep -v \"\\(index\\|land\\|test\\|preferences\\|customGenerator\\).html\" | xargs rm) && (find *.webmanifest | xargs rm)"
},
"keywords": [
"OpenStreetMap",
@ -40,6 +38,7 @@
"codegrid-js": "git://github.com/hlaw/codegrid-js.git",
"country-language": "^0.1.7",
"email-validator": "^2.0.4",
"escape-html": "^1.0.3",
"i18next-client": "^1.11.4",
"jquery": "latest",
"leaflet": "^1.7.1",

View file

@ -6,7 +6,7 @@ import {UIEventSource} from "./Logic/UIEventSource";
import {VariableUiElement} from "./UI/Base/VariableUIElement";
const d = new UIEventSource("90");
new Direction(d, [51.21576,3.22001]).AttachTo("maindiv")
new Direction(d).AttachTo("maindiv")
new VariableUiElement(d.map(d => "" + d + "°")).AttachTo("extradiv")
UIEventSource.Chronic(25, () => {

View file

@ -1,6 +1,7 @@
import {UIElement} from "../UI/UIElement";
UIElement.runningFromConsole = true;
import {Img} from "../UI/Img";
Img.runningFromConsole = true;
import {equal} from "assert";
import T from "./TestHelper";
import {FromJSON} from "../Customizations/JSON/FromJSON";
@ -17,7 +18,6 @@ import {Utils} from "../Utils";
import {Translation} from "../UI/i18n/Translation";
new T([
["Tag replacement works in translation", () => {
const tr = new Translation({
@ -35,6 +35,15 @@ new T([
equal((and.and[0] as Tag).key, "key");
equal((and.and[1] as Tag).value, "y");
const notReg = FromJSON.Tag("x!~y") as And;
equal(notReg.matches([{k:"x",v:"y"}]), false)
equal(notReg.matches([{k:"x",v:"z"}]), true)
equal(notReg.matches([{k:"x",v:""}]), true)
equal(notReg.matches([]), true)
})],
["Is equivalent test", (() => {