mirror of
https://github.com/FoggedLens/iD.git
synced 2026-05-15 21:48:20 +02:00
Combine vertex and point geometries into a single Point fallback preset
This commit is contained in:
@@ -25,8 +25,6 @@ en:
|
||||
title: Point
|
||||
description: "Add restaurants, monuments, postal boxes or other points to the map."
|
||||
tail: Click on the map to add a point.
|
||||
add_vertex:
|
||||
title: Vertex
|
||||
add_note:
|
||||
title: Note
|
||||
description: "Spotted an issue? Let other mappers know."
|
||||
@@ -42,8 +40,6 @@ en:
|
||||
title: "Add {feature} as an area"
|
||||
building:
|
||||
title: "Add {feature} as a building"
|
||||
vertex:
|
||||
title: "Add {feature} as a vertex"
|
||||
browse:
|
||||
title: Browse
|
||||
description: Pan and zoom the map.
|
||||
|
||||
+3
-4
@@ -3137,6 +3137,7 @@ en:
|
||||
area:
|
||||
# area=yes
|
||||
name: Area
|
||||
# 'terms: polygon'
|
||||
terms: '<translate with synonyms or related terms for ''Area'', separated by commas>'
|
||||
area/highway:
|
||||
# 'area:highway=*'
|
||||
@@ -4896,6 +4897,7 @@ en:
|
||||
terms: '<translate with synonyms or related terms for ''Water Park'', separated by commas>'
|
||||
line:
|
||||
name: Line
|
||||
# 'terms: polyline'
|
||||
terms: '<translate with synonyms or related terms for ''Line'', separated by commas>'
|
||||
man_made:
|
||||
# man_made=*
|
||||
@@ -5640,6 +5642,7 @@ en:
|
||||
terms: '<translate with synonyms or related terms for ''Zip Wire'', separated by commas>'
|
||||
point:
|
||||
name: Point
|
||||
# 'terms: node,other,vertex,vertices'
|
||||
terms: '<translate with synonyms or related terms for ''Point'', separated by commas>'
|
||||
power:
|
||||
# power=*
|
||||
@@ -7040,10 +7043,6 @@ en:
|
||||
# type=waterway
|
||||
name: Waterway
|
||||
terms: '<translate with synonyms or related terms for ''Waterway'', separated by commas>'
|
||||
vertex:
|
||||
name: Vertex
|
||||
# 'terms: other'
|
||||
terms: '<translate with synonyms or related terms for ''Vertex'', separated by commas>'
|
||||
waterway:
|
||||
# waterway=*
|
||||
name: Waterway
|
||||
|
||||
@@ -46,7 +46,7 @@
|
||||
"traffic_calming",
|
||||
"highway/mini_roundabout",
|
||||
"highway/motorway_junction",
|
||||
"vertex"
|
||||
"point"
|
||||
],
|
||||
"relation": [
|
||||
"category-route",
|
||||
|
||||
@@ -221,7 +221,7 @@
|
||||
"amenity/waste/dog_excrement": {"icon": "maki-waste-basket", "fields": ["collection_times"], "geometry": ["point", "vertex", "area"], "tags": {"amenity": "waste_basket", "waste": "dog_excrement"}, "reference": {"key": "waste", "value": "dog_excrement"}, "terms": ["bin", "garbage", "rubbish", "litter", "trash", "poo", "dog"], "name": "Dog Excrement Bin"},
|
||||
"amenity/water_point": {"icon": "maki-drinking-water", "fields": ["operator", "fee", "payment_multi"], "geometry": ["area", "vertex", "point"], "tags": {"amenity": "water_point"}, "name": "RV Drinking Water"},
|
||||
"amenity/watering_place": {"icon": "maki-drinking-water", "fields": ["operator", "fee", "payment_multi"], "geometry": ["area", "vertex", "point"], "tags": {"amenity": "watering_place"}, "name": "Animal Watering Place"},
|
||||
"area": {"fields": ["name"], "geometry": ["area"], "tags": {"area": "yes"}, "name": "Area", "matchScore": 0.1},
|
||||
"area": {"fields": ["name"], "geometry": ["area"], "tags": {"area": "yes"}, "terms": ["polygon"], "name": "Area", "matchScore": 0.1},
|
||||
"area/highway": {"fields": ["name", "area/highway"], "geometry": ["area"], "tags": {"area:highway": "*"}, "name": "Road Surface"},
|
||||
"attraction/amusement_ride": {"icon": "maki-amusement-park", "geometry": ["point", "area"], "terms": ["theme park", "carnival ride"], "tags": {"attraction": "amusement_ride"}, "name": "Amusement Ride"},
|
||||
"attraction/animal": {"icon": "maki-zoo", "fields": ["name", "operator"], "geometry": ["point", "area"], "terms": ["amphibian", "animal park", "aquarium", "bear", "bird", "fish", "insect", "lion", "mammal", "monkey", "penguin", "reptile", "safari", "theme park", "tiger", "zoo"], "tags": {"attraction": "animal"}, "name": "Animal Enclosure"},
|
||||
@@ -610,7 +610,7 @@
|
||||
"leisure/track/horse_racing": {"icon": "maki-horse-riding", "fields": ["surface", "sport_racing_nonmotor", "lit", "width", "lanes"], "geometry": ["point", "line", "area"], "tags": {"leisure": "track", "sport": "horse_racing"}, "addTags": {"leisure": "track", "sport": "horse_racing", "highway": "bridleway"}, "removeTags": {"leisure": "track", "sport": "horse_racing", "highway": "bridleway"}, "terms": ["equestrian race track", "horse race betting", "horseracing", "horsetrack", "horse racetrack"], "name": "Horse Racing Track"},
|
||||
"leisure/track/running": {"icon": "maki-pitch", "fields": ["surface", "sport_racing_nonmotor", "lit", "width", "lanes"], "geometry": ["point", "line", "area"], "tags": {"leisure": "track", "sport": "running"}, "addTags": {"leisure": "track", "sport": "running", "highway": "footway"}, "removeTags": {"leisure": "track", "sport": "running", "highway": "footway"}, "terms": ["athletics track", "decathlon", "foot race", "long distance running", "marathon", "middle distance running", "racetrack", "running", "sprint", "track", "walking"], "name": "Running Track"},
|
||||
"leisure/water_park": {"icon": "maki-swimming", "fields": ["name", "operator", "address"], "moreFields": ["payment_multi", "brand", "website", "phone", "email", "fax"], "geometry": ["point", "area"], "terms": ["swim", "pool", "dive"], "tags": {"leisure": "water_park"}, "name": "Water Park"},
|
||||
"line": {"fields": ["name"], "geometry": ["line"], "tags": {}, "name": "Line", "matchScore": 0.1},
|
||||
"line": {"fields": ["name"], "geometry": ["line"], "tags": {}, "terms": ["polyline"], "name": "Line", "matchScore": 0.1},
|
||||
"man_made/adit": {"icon": "maki-triangle", "geometry": ["point", "area"], "fields": ["name", "operator", "resource", "direction"], "terms": ["cave", "horizontal mine entrance", "tunnel", "underground"], "tags": {"man_made": "adit"}, "name": "Adit"},
|
||||
"man_made/antenna": {"icon": "temaki-antenna", "fields": ["height", "communication_multi"], "geometry": ["point"], "terms": ["broadcast", "cell phone", "cell", "communication", "mobile phone", "radio", "television", "transmission", "tv"], "tags": {"man_made": "antenna"}, "name": "Antenna"},
|
||||
"man_made/breakwater": {"geometry": ["line", "area"], "tags": {"man_made": "breakwater"}, "name": "Breakwater"},
|
||||
@@ -771,7 +771,7 @@
|
||||
"playground/structure": {"icon": "maki-pitch", "geometry": ["point", "area"], "tags": {"playground": "structure"}, "name": "Play Structure"},
|
||||
"playground/swing": {"icon": "maki-playground", "fields": ["capacity", "playground/baby", "wheelchair"], "geometry": ["point"], "tags": {"playground": "swing"}, "name": "Swing"},
|
||||
"playground/zipwire": {"icon": "maki-playground", "geometry": ["point", "line"], "tags": {"playground": "zipwire"}, "name": "Zip Wire"},
|
||||
"point": {"fields": ["name"], "geometry": ["point"], "tags": {}, "name": "Point", "matchScore": 0.1},
|
||||
"point": {"fields": ["name"], "geometry": ["vertex", "point"], "tags": {}, "terms": ["node", "other", "vertex", "vertices"], "name": "Point", "matchScore": 0.1},
|
||||
"power/sub_station": {"icon": "temaki-power", "fields": ["substation", "operator", "building", "ref"], "geometry": ["point", "area"], "tags": {"power": "sub_station"}, "reference": {"key": "power", "value": "substation"}, "name": "Substation", "searchable": false},
|
||||
"power/cable/underground": {"fields": ["name", "operator", "voltage", "ref", "layer"], "geometry": ["line"], "tags": {"power": "cable", "location": "underground"}, "name": "Underground Power Cable"},
|
||||
"power/generator": {"icon": "temaki-power", "fields": ["operator", "generator/source", "generator/method", "generator/type", "generator/output/electricity", "ref"], "geometry": ["point", "vertex", "area"], "terms": ["hydro", "solar", "turbine", "wind"], "tags": {"power": "generator"}, "name": "Power Generator"},
|
||||
@@ -1078,7 +1078,6 @@
|
||||
"type/route/tram": {"icon": "iD-route-tram", "fields": ["name", "ref_route", "operator", "network", "to", "from"], "moreFields": ["colour", "interval", "opening_hours", "duration", "wheelchair"], "geometry": ["relation"], "tags": {"type": "route", "route": "tram"}, "name": "Tram Route"},
|
||||
"type/site": {"icon": "iD-relation", "fields": ["name", "site"], "geometry": ["relation"], "tags": {"type": "site"}, "name": "Site"},
|
||||
"type/waterway": {"icon": "iD-route-water", "fields": ["name", "waterway", "ref"], "geometry": ["relation"], "tags": {"type": "waterway"}, "name": "Waterway"},
|
||||
"vertex": {"moreFields": ["name"], "geometry": ["vertex"], "terms": ["other"], "tags": {}, "name": "Vertex", "matchScore": 0.1},
|
||||
"waterway/riverbank": {"icon": "maki-water", "geometry": ["area"], "tags": {"waterway": "riverbank"}, "name": "Riverbank", "searchable": false},
|
||||
"waterway/boatyard": {"icon": "maki-harbor", "fields": ["name", "operator"], "moreFields": ["address", "website", "phone", "email", "fax", "wheelchair"], "geometry": ["area", "vertex", "point"], "tags": {"waterway": "boatyard"}, "name": "Boatyard"},
|
||||
"waterway/canal": {"icon": "iD-waterway-canal", "fields": ["name", "width", "intermittent"], "moreFields": ["salt"], "geometry": ["line"], "tags": {"waterway": "canal"}, "name": "Canal"},
|
||||
|
||||
@@ -8,6 +8,9 @@
|
||||
"tags": {
|
||||
"area": "yes"
|
||||
},
|
||||
"terms": [
|
||||
"polygon"
|
||||
],
|
||||
"name": "Area",
|
||||
"matchScore": 0.1
|
||||
}
|
||||
|
||||
@@ -6,6 +6,9 @@
|
||||
"line"
|
||||
],
|
||||
"tags": {},
|
||||
"terms": [
|
||||
"polyline"
|
||||
],
|
||||
"name": "Line",
|
||||
"matchScore": 0.1
|
||||
}
|
||||
|
||||
@@ -3,9 +3,16 @@
|
||||
"name"
|
||||
],
|
||||
"geometry": [
|
||||
"vertex",
|
||||
"point"
|
||||
],
|
||||
"tags": {},
|
||||
"terms": [
|
||||
"node",
|
||||
"other",
|
||||
"vertex",
|
||||
"vertices"
|
||||
],
|
||||
"name": "Point",
|
||||
"matchScore": 0.1
|
||||
}
|
||||
|
||||
@@ -1,14 +0,0 @@
|
||||
{
|
||||
"moreFields": [
|
||||
"name"
|
||||
],
|
||||
"geometry": [
|
||||
"vertex"
|
||||
],
|
||||
"terms": [
|
||||
"other"
|
||||
],
|
||||
"tags": {},
|
||||
"name": "Vertex",
|
||||
"matchScore": 0.1
|
||||
}
|
||||
Vendored
+3
-13
@@ -31,9 +31,6 @@
|
||||
"description": "Add restaurants, monuments, postal boxes or other points to the map.",
|
||||
"tail": "Click on the map to add a point."
|
||||
},
|
||||
"add_vertex": {
|
||||
"title": "Vertex"
|
||||
},
|
||||
"add_note": {
|
||||
"title": "Note",
|
||||
"description": "Spotted an issue? Let other mappers know.",
|
||||
@@ -53,9 +50,6 @@
|
||||
},
|
||||
"building": {
|
||||
"title": "Add {feature} as a building"
|
||||
},
|
||||
"vertex": {
|
||||
"title": "Add {feature} as a vertex"
|
||||
}
|
||||
},
|
||||
"browse": {
|
||||
@@ -4825,7 +4819,7 @@
|
||||
},
|
||||
"area": {
|
||||
"name": "Area",
|
||||
"terms": ""
|
||||
"terms": "polygon"
|
||||
},
|
||||
"area/highway": {
|
||||
"name": "Road Surface",
|
||||
@@ -6381,7 +6375,7 @@
|
||||
},
|
||||
"line": {
|
||||
"name": "Line",
|
||||
"terms": ""
|
||||
"terms": "polyline"
|
||||
},
|
||||
"man_made/adit": {
|
||||
"name": "Adit",
|
||||
@@ -7025,7 +7019,7 @@
|
||||
},
|
||||
"point": {
|
||||
"name": "Point",
|
||||
"terms": ""
|
||||
"terms": "node,other,vertex,vertices"
|
||||
},
|
||||
"power/sub_station": {
|
||||
"name": "Substation",
|
||||
@@ -8251,10 +8245,6 @@
|
||||
"name": "Waterway",
|
||||
"terms": ""
|
||||
},
|
||||
"vertex": {
|
||||
"name": "Vertex",
|
||||
"terms": "other"
|
||||
},
|
||||
"waterway/riverbank": {
|
||||
"name": "Riverbank",
|
||||
"terms": ""
|
||||
|
||||
@@ -42,6 +42,11 @@ export function presetCollection(collection) {
|
||||
}));
|
||||
},
|
||||
|
||||
fallback: function(geometry) {
|
||||
var id = geometry;
|
||||
if (id === 'vertex') id = 'point';
|
||||
return this.item(id);
|
||||
},
|
||||
|
||||
search: function(value, geometry) {
|
||||
if (!value) return this;
|
||||
@@ -153,10 +158,10 @@ export function presetCollection(collection) {
|
||||
|
||||
if (geometry) {
|
||||
if (typeof geometry === 'string') {
|
||||
results.push(presets.item(geometry));
|
||||
results.push(presets.fallback(geometry));
|
||||
} else {
|
||||
geometry.forEach(function(geom) {
|
||||
results.push(presets.item(geom));
|
||||
results.push(presets.fallback(geom));
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -84,7 +84,7 @@ export function presetIndex(context) {
|
||||
if (address && (!match || match.isFallback())) {
|
||||
match = address;
|
||||
}
|
||||
return match || all.item(geometry);
|
||||
return match || all.fallback(geometry);
|
||||
};
|
||||
|
||||
all.allowsVertex = function(entity, resolver) {
|
||||
@@ -271,7 +271,7 @@ export function presetIndex(context) {
|
||||
all.defaults = function(geometry, n) {
|
||||
var rec = all.recent().matchGeometry(geometry).collection.slice(0, 4);
|
||||
var def = _uniq(rec.concat(_defaults[geometry].collection)).slice(0, n - 1);
|
||||
return presetCollection(_uniq(rec.concat(def).concat(all.item(geometry))));
|
||||
return presetCollection(_uniq(rec.concat(def).concat(all.fallback(geometry))));
|
||||
};
|
||||
|
||||
all.recent = function() {
|
||||
@@ -307,10 +307,16 @@ export function presetIndex(context) {
|
||||
function ribbonItemForMinified(d, source) {
|
||||
if (d && d.pID && d.geom) {
|
||||
var preset = all.item(d.pID);
|
||||
if (!preset) return null;
|
||||
|
||||
var geom = d.geom;
|
||||
// treat point and vertex features as one geometry
|
||||
if (geom === 'vertex') geom = 'point';
|
||||
|
||||
// iD's presets could have changed since this was saved,
|
||||
// so make sure it's still valid.
|
||||
if (preset && preset.matchGeometry(d.geom)) {
|
||||
return RibbonItem(preset, d.geom, source);
|
||||
if (preset.matchGeometry(geom) || (geom === 'point' && preset.matchGeometry('vertex'))) {
|
||||
return RibbonItem(preset, geom, source);
|
||||
}
|
||||
}
|
||||
return null;
|
||||
@@ -364,6 +370,7 @@ export function presetIndex(context) {
|
||||
};
|
||||
|
||||
all.toggleFavorite = function(preset, geometry) {
|
||||
geometry = all.fallback(geometry).id;
|
||||
var favs = all.getFavorites();
|
||||
var favorite = all.favoriteMatching(preset, geometry);
|
||||
if (favorite) {
|
||||
@@ -381,6 +388,7 @@ export function presetIndex(context) {
|
||||
};
|
||||
|
||||
all.removeFavorite = function(preset, geometry) {
|
||||
geometry = all.fallback(geometry).id;
|
||||
var item = all.favoriteMatching(preset, geometry);
|
||||
if (item) {
|
||||
var items = all.getFavorites();
|
||||
@@ -399,6 +407,7 @@ export function presetIndex(context) {
|
||||
};
|
||||
|
||||
all.favoriteMatching = function(preset, geometry) {
|
||||
geometry = all.fallback(geometry).id;
|
||||
var favs = all.getFavorites();
|
||||
for (var index in favs) {
|
||||
if (favs[index].matches(preset, geometry)) {
|
||||
@@ -408,6 +417,7 @@ export function presetIndex(context) {
|
||||
return null;
|
||||
};
|
||||
all.recentMatching = function(preset, geometry) {
|
||||
geometry = all.fallback(geometry).id;
|
||||
var items = all.getRecents();
|
||||
for (var index in items) {
|
||||
if (items[index].matches(preset, geometry)) {
|
||||
@@ -439,6 +449,7 @@ export function presetIndex(context) {
|
||||
};
|
||||
|
||||
all.setMostRecent = function(preset, geometry) {
|
||||
geometry = all.fallback(geometry).id;
|
||||
if (preset.searchable === false) return;
|
||||
|
||||
var items = all.getRecents();
|
||||
|
||||
+2
-2
@@ -121,7 +121,7 @@ export function uiModes(context) {
|
||||
if (d.preset.setTags({}, d.geometry).building) {
|
||||
tooltipTitleID = 'modes.add_preset.building.title';
|
||||
} else {
|
||||
tooltipTitleID = 'modes.add_preset.' + d.geometry + '.title';
|
||||
tooltipTitleID = 'modes.add_preset.' + context.presets().fallback(d.geometry).id + '.title';
|
||||
}
|
||||
}
|
||||
var protoMode = _clone(d);
|
||||
@@ -209,7 +209,7 @@ export function uiModes(context) {
|
||||
} else {
|
||||
d3_select(this)
|
||||
.call(uiPresetIcon()
|
||||
.geometry(d.geometry)
|
||||
.geometry((d.geometry === 'point' && !d.preset.matchGeometry(d.geometry)) ? 'vertex' : d.geometry)
|
||||
.preset(d.preset)
|
||||
.sizeClass('small')
|
||||
);
|
||||
|
||||
@@ -8,6 +8,8 @@ import { svgIcon } from '../svg';
|
||||
|
||||
export function uiPresetFavorite(preset, geom, context, klass) {
|
||||
|
||||
geom = context.presets().fallback(geom).id;
|
||||
|
||||
var presetFavorite = {};
|
||||
|
||||
var _button = d3_select(null);
|
||||
|
||||
@@ -361,7 +361,7 @@ export function uiSearchAdd(context) {
|
||||
if (d.preset.setTags({}, d.geometry).building) {
|
||||
return t('presets.presets.building.name');
|
||||
}
|
||||
return t('modes.add_' + d.geometry + '.title');
|
||||
return t('modes.add_' + context.presets().fallback(d.geometry).id + '.title');
|
||||
}
|
||||
return d.preset.name();
|
||||
});
|
||||
|
||||
+4
-4
@@ -60,9 +60,9 @@
|
||||
"concat-files": "^0.1.1",
|
||||
"d3": "4.13.0",
|
||||
"ecstatic": "^3.0.0",
|
||||
"editor-layer-index": "osmlab/editor-layer-index.git#gh-pages",
|
||||
"eslint": "^5.15.0",
|
||||
"esm": "~3.2.11",
|
||||
"editor-layer-index": "github:osmlab/editor-layer-index#gh-pages",
|
||||
"eslint": "^5.15.3",
|
||||
"esm": "^3.2.18",
|
||||
"gaze": "^1.1.1",
|
||||
"glob": "^7.1.0",
|
||||
"happen": "^0.3.1",
|
||||
@@ -91,7 +91,7 @@
|
||||
"smash": "0.0",
|
||||
"svg-sprite": "1.5.0",
|
||||
"temaki": "1.2.0",
|
||||
"uglify-js": "~3.4.0"
|
||||
"uglify-js": "^3.4.10"
|
||||
},
|
||||
"greenkeeper": {
|
||||
"label": "chore-greenkeeper",
|
||||
|
||||
@@ -42,14 +42,14 @@ describe('iD.presetIndex', function () {
|
||||
expect(presets.match(line, graph).id).to.eql('line');
|
||||
});
|
||||
|
||||
it('matches vertices on a line as vertices', function () {
|
||||
it('matches vertices on a line as points', function () {
|
||||
iD.data.presets = testPresets;
|
||||
var presets = iD.coreContext().presets();
|
||||
var point = iD.osmNode({ tags: { leisure: 'park' } });
|
||||
var line = iD.osmWay({ nodes: [point.id], tags: { 'highway': 'residential' } });
|
||||
var graph = iD.coreGraph([point, line]);
|
||||
|
||||
expect(presets.match(point, graph).id).to.eql('vertex');
|
||||
expect(presets.match(point, graph).id).to.eql('point');
|
||||
});
|
||||
|
||||
it('matches vertices on an addr:interpolation line as points', function () {
|
||||
|
||||
Reference in New Issue
Block a user