From 662cfeb5768aea59bf6044c973508162a7de24bb Mon Sep 17 00:00:00 2001 From: Tom MacWright Date: Wed, 6 Mar 2013 16:40:04 -0500 Subject: [PATCH] Improve preset searching Add preset searching of terms Add more synonyms, improve matching - levenstein for terms too. --- {presets => data/presets}/categories.json | 0 {presets => data/presets}/convert_josm.py | 0 {presets => data/presets}/convert_potlatch.py | 0 {presets => data/presets}/defaults.json | 0 {presets => data/presets}/editors/bus.json | 0 .../presets}/editors/cycle_route.json | 0 .../presets}/editors/cycling.json | 0 {presets => data/presets}/editors/rail.json | 0 {presets => data/presets}/editors/road.json | 0 {presets => data/presets}/forms.json | 0 {presets => data/presets}/josm.xml | 0 data/presets/lint.js | 11 + {presets => data/presets}/mapzen-license.txt | 0 {presets => data/presets}/node.json | 0 {presets => data/presets}/potlatch.xml | 0 {presets => data/presets}/prefs.json | 0 data/presets/presets.json | 1041 +++++++++++++++++ {presets => data/presets}/presets_josm.json | 0 .../presets}/presets_potlatch.json | 0 {presets => data/presets}/way.json | 0 .../presets}/ways/highway__bridleway.png | Bin .../presets}/ways/highway__cycleway.png | Bin .../presets}/ways/highway__footway.png | Bin .../presets}/ways/highway__light_rail.png | Bin .../presets}/ways/highway__living_street.png | Bin .../presets}/ways/highway__motorway.png | Bin .../presets}/ways/highway__pedestrian.png | Bin .../presets}/ways/highway__primary.png | Bin .../presets}/ways/highway__residential.png | Bin .../presets}/ways/highway__secondary.png | Bin .../presets}/ways/highway__service.png | Bin .../presets}/ways/highway__tertiary.png | Bin .../presets}/ways/highway__track.png | Bin .../presets}/ways/highway__trunk.png | Bin .../presets}/ways/highway__unclassified.png | Bin .../presets}/ways/railway__abandoned.png | Bin .../presets}/ways/railway__construction.png | Bin .../presets}/ways/railway__disused.png | Bin .../presets}/ways/railway__monorail.png | Bin .../presets}/ways/railway__narrow_gauge.png | Bin .../presets}/ways/railway__preserved.png | Bin .../presets}/ways/railway__rail.png | Bin .../presets}/ways/railway__spur.png | Bin .../presets}/ways/railway__tram.png | Bin .../presets}/ways/waterway__canal.png | Bin .../presets}/ways/waterway__river.png | Bin .../presets}/ways/waterway__stream.png | Bin index.html | 7 +- js/id/presets/collection.js | 43 +- presets/presets.json | 467 -------- 50 files changed, 1083 insertions(+), 486 deletions(-) rename {presets => data/presets}/categories.json (100%) rename {presets => data/presets}/convert_josm.py (100%) rename {presets => data/presets}/convert_potlatch.py (100%) rename {presets => data/presets}/defaults.json (100%) rename {presets => data/presets}/editors/bus.json (100%) rename {presets => data/presets}/editors/cycle_route.json (100%) rename {presets => data/presets}/editors/cycling.json (100%) rename {presets => data/presets}/editors/rail.json (100%) rename {presets => data/presets}/editors/road.json (100%) rename {presets => data/presets}/forms.json (100%) rename {presets => data/presets}/josm.xml (100%) create mode 100644 data/presets/lint.js rename {presets => data/presets}/mapzen-license.txt (100%) rename {presets => data/presets}/node.json (100%) rename {presets => data/presets}/potlatch.xml (100%) rename {presets => data/presets}/prefs.json (100%) create mode 100644 data/presets/presets.json rename {presets => data/presets}/presets_josm.json (100%) rename {presets => data/presets}/presets_potlatch.json (100%) rename {presets => data/presets}/way.json (100%) rename {presets => data/presets}/ways/highway__bridleway.png (100%) rename {presets => data/presets}/ways/highway__cycleway.png (100%) rename {presets => data/presets}/ways/highway__footway.png (100%) rename {presets => data/presets}/ways/highway__light_rail.png (100%) rename {presets => data/presets}/ways/highway__living_street.png (100%) rename {presets => data/presets}/ways/highway__motorway.png (100%) rename {presets => data/presets}/ways/highway__pedestrian.png (100%) rename {presets => data/presets}/ways/highway__primary.png (100%) rename {presets => data/presets}/ways/highway__residential.png (100%) rename {presets => data/presets}/ways/highway__secondary.png (100%) rename {presets => data/presets}/ways/highway__service.png (100%) rename {presets => data/presets}/ways/highway__tertiary.png (100%) rename {presets => data/presets}/ways/highway__track.png (100%) rename {presets => data/presets}/ways/highway__trunk.png (100%) rename {presets => data/presets}/ways/highway__unclassified.png (100%) rename {presets => data/presets}/ways/railway__abandoned.png (100%) rename {presets => data/presets}/ways/railway__construction.png (100%) rename {presets => data/presets}/ways/railway__disused.png (100%) rename {presets => data/presets}/ways/railway__monorail.png (100%) rename {presets => data/presets}/ways/railway__narrow_gauge.png (100%) rename {presets => data/presets}/ways/railway__preserved.png (100%) rename {presets => data/presets}/ways/railway__rail.png (100%) rename {presets => data/presets}/ways/railway__spur.png (100%) rename {presets => data/presets}/ways/railway__tram.png (100%) rename {presets => data/presets}/ways/waterway__canal.png (100%) rename {presets => data/presets}/ways/waterway__river.png (100%) rename {presets => data/presets}/ways/waterway__stream.png (100%) delete mode 100644 presets/presets.json diff --git a/presets/categories.json b/data/presets/categories.json similarity index 100% rename from presets/categories.json rename to data/presets/categories.json diff --git a/presets/convert_josm.py b/data/presets/convert_josm.py similarity index 100% rename from presets/convert_josm.py rename to data/presets/convert_josm.py diff --git a/presets/convert_potlatch.py b/data/presets/convert_potlatch.py similarity index 100% rename from presets/convert_potlatch.py rename to data/presets/convert_potlatch.py diff --git a/presets/defaults.json b/data/presets/defaults.json similarity index 100% rename from presets/defaults.json rename to data/presets/defaults.json diff --git a/presets/editors/bus.json b/data/presets/editors/bus.json similarity index 100% rename from presets/editors/bus.json rename to data/presets/editors/bus.json diff --git a/presets/editors/cycle_route.json b/data/presets/editors/cycle_route.json similarity index 100% rename from presets/editors/cycle_route.json rename to data/presets/editors/cycle_route.json diff --git a/presets/editors/cycling.json b/data/presets/editors/cycling.json similarity index 100% rename from presets/editors/cycling.json rename to data/presets/editors/cycling.json diff --git a/presets/editors/rail.json b/data/presets/editors/rail.json similarity index 100% rename from presets/editors/rail.json rename to data/presets/editors/rail.json diff --git a/presets/editors/road.json b/data/presets/editors/road.json similarity index 100% rename from presets/editors/road.json rename to data/presets/editors/road.json diff --git a/presets/forms.json b/data/presets/forms.json similarity index 100% rename from presets/forms.json rename to data/presets/forms.json diff --git a/presets/josm.xml b/data/presets/josm.xml similarity index 100% rename from presets/josm.xml rename to data/presets/josm.xml diff --git a/data/presets/lint.js b/data/presets/lint.js new file mode 100644 index 000000000..439db0b1a --- /dev/null +++ b/data/presets/lint.js @@ -0,0 +1,11 @@ +var fs = require('fs'); +var p = JSON.parse(fs.readFileSync('presets.json', 'utf8')); + +p = p.map(function(preset) { + preset.match.terms = (preset.match.terms || []).map(function(t) { + return t.trim(); + }); + return preset; +}); + +fs.writeFileSync('presets.json', JSON.stringify(p, null, 4)); diff --git a/presets/mapzen-license.txt b/data/presets/mapzen-license.txt similarity index 100% rename from presets/mapzen-license.txt rename to data/presets/mapzen-license.txt diff --git a/presets/node.json b/data/presets/node.json similarity index 100% rename from presets/node.json rename to data/presets/node.json diff --git a/presets/potlatch.xml b/data/presets/potlatch.xml similarity index 100% rename from presets/potlatch.xml rename to data/presets/potlatch.xml diff --git a/presets/prefs.json b/data/presets/prefs.json similarity index 100% rename from presets/prefs.json rename to data/presets/prefs.json diff --git a/data/presets/presets.json b/data/presets/presets.json new file mode 100644 index 000000000..6949e7801 --- /dev/null +++ b/data/presets/presets.json @@ -0,0 +1,1041 @@ +[ + { + "name": "cafe", + "match": { + "type": [ + "point", + "area" + ], + "terms": [ + "coffee", + "tea", + "coffee shop" + ], + "tags": { + "amenity": "cafe" + } + }, + "icon": "cafe", + "form": [ + "cuisine", + "internet_access", + "building_area", + "address" + ] + }, + { + "name": "park", + "match": { + "type": [ + "point", + "area" + ], + "terms": [ + "esplanade", + "estate", + "forest", + "garden", + "grass", + "green", + "grounds", + "lawn", + "lot", + "meadow", + "parkland", + "place", + "playground", + "plaza", + "pleasure garden", + "recreation area", + "square", + "tract", + "village green", + "woodland" + ], + "tags": { + "leisure": "park" + } + }, + "icon": "park" + }, + { + "name": "water", + "match": { + "type": [ + "point", + "area" + ], + "tags": { + "natural": "water" + }, + "terms": [] + }, + "icon": "" + }, + { + "name": "wetland", + "match": { + "type": [ + "point", + "area" + ], + "tags": { + "natural": "wetland" + }, + "terms": [] + }, + "icon": "" + }, + { + "name": "wood", + "match": { + "type": [ + "point", + "area" + ], + "tags": { + "natural": "wood" + }, + "terms": [] + }, + "icon": "" + }, + { + "name": "coastline", + "match": { + "type": [ + "line" + ], + "terms": [ + "shore" + ], + "tags": { + "natural": "coastline" + } + }, + "icon": "" + }, + { + "name": "supermarket", + "match": { + "type": [ + "point", + "area" + ], + "terms": [ + "bazaar", + "boutique", + "chain", + "co-op", + "cut-rate store", + "discount store", + "five-and-dime", + "flea market", + "galleria", + "mall", + "mart", + "outlet", + "outlet store", + "shop", + "shopping center", + "shopping plaza", + "stand", + "store", + "supermarket", + "thrift shop" + ], + "tags": { + "shop": "supermarket" + } + }, + "icon": "grocery", + "form": [ + "operator", + "building_area", + "address" + ] + }, + { + "name": "restaurant", + "match": { + "type": [ + "point", + "area" + ], + "terms": [ + "bar", + "cafeteria", + "café", + "canteen", + "chophouse", + "coffee shop", + "diner", + "dining room", + "dive*", + "doughtnut shop", + "drive-in", + "eatery", + "eating house", + "eating place", + "fast-food place", + "greasy spoon", + "grill", + "hamburger stand", + "hashery", + "hideaway", + "hotdog stand", + "inn", + "joint*", + "luncheonette", + "lunchroom", + "night club", + "outlet*", + "pizzeria", + "saloon", + "soda fountain", + "watering hole" + ], + "tags": { + "amenity": "restaurant" + } + }, + "icon": "restaurant", + "form": [ + "cuisine", + "building_area", + "address" + ] + }, + { + "name": "place of worship", + "match": { + "type": [ + "point", + "area" + ], + "terms": [ + "abbey", + "basilica", + "bethel", + "cathedral", + "chancel", + "chantry", + "chapel", + "fold", + "house of God", + "house of prayer", + "house of worship", + "minster", + "mission", + "mosque", + "oratory", + "parish", + "sacellum", + "sanctuary", + "shrine", + "synagogue", + "tabernacle", + "temple" + ], + "tags": { + "amenity": "place_of_worship" + } + }, + "icon": "place-of-worship", + "form": [ + "religion", + "denomination", + "building_area", + "address" + ] + }, + { + "name": "school", + "match": { + "type": [ + "point", + "area" + ], + "terms": [ + "academy", + "alma mater", + "blackboard", + "college", + "department", + "discipline", + "establishment", + "faculty", + "hall", + "halls of ivy", + "institute", + "institution", + "jail*", + "schoolhouse", + "seminary", + "university" + ], + "tags": { + "amenity": "school" + } + }, + "icon": "school", + "form": [ + "operator", + "building", + "address" + ] + }, + { + "name": "parking", + "match": { + "type": [ + "point", + "area" + ], + "tags": { + "amenity": "parking" + }, + "terms": [] + }, + "icon": "parking", + "form": [ + "fee", + "access", + "address" + ] + }, + { + "name": "bank", + "match": { + "type": [ + "point", + "area" + ], + "terms": [ + "coffer", + "countinghouse", + "credit union", + "depository", + "exchequer", + "fund", + "hoard", + "investment firm", + "repository", + "reserve", + "reservoir", + "safe", + "savings", + "stock", + "stockpile", + "store", + "storehouse", + "thrift", + "treasury", + "trust company", + "vault" + ], + "tags": { + "amenity": "bank" + } + }, + "icon": "bank", + "form": [ + "atm", + "building_area", + "address" + ] + }, + { + "name": "fast food", + "match": { + "type": [ + "point", + "area" + ], + "tags": { + "amenity": "fast_food" + }, + "terms": [] + }, + "icon": "fast-food", + "form": [ + "cuisine", + "building_area", + "address" + ] + }, + { + "name": "bar", + "match": { + "type": [ + "point", + "area" + ], + "tags": { + "amenity": "bar" + }, + "terms": [] + }, + "icon": "bar", + "form": [ + "building_area", + "address" + ] + }, + { + "name": "bus stop", + "match": { + "type": [ + "point" + ], + "tags": { + "highway": "bus_stop" + }, + "terms": [] + }, + "icon": "bus", + "form": [ + "operator", + "shelter" + ] + }, + { + "name": "cinema", + "match": { + "type": [ + "point", + "area" + ], + "terms": [ + "big screen", + "bijou", + "cine", + "drive-in", + "film", + "flicks", + "motion pictures", + "movie house", + "movie theater", + "moving pictures", + "nabes", + "photoplay", + "picture show", + "pictures", + "playhouse", + "show", + "silver screen" + ], + "tags": { + "amenity": "cinema" + } + }, + "icon": "cinema", + "form": [ + "building_area", + "address" + ] + }, + { + "name": "hospital", + "match": { + "type": [ + "point", + "area" + ], + "terms": [ + "clinic", + "emergency room", + "health service", + "hospice", + "infirmary", + "institution", + "nursing home", + "rest home", + "sanatorium", + "sanitarium", + "sick bay", + "surgery", + "ward" + ], + "tags": { + "amenity": "hospital" + } + }, + "icon": "hospital", + "form": [ + "emergency", + "building_area", + "address" + ] + }, + { + "name": "pharmacy", + "match": { + "type": [ + "point", + "area" + ], + "tags": { + "amenity": "pharmacy" + }, + "terms": [] + }, + "icon": "police", + "form": [ + "dispensing", + "operator", + "building_area", + "address" + ] + }, + { + "name": "fire station", + "match": { + "type": [ + "point", + "area" + ], + "tags": { + "amenity": "fire_station" + }, + "terms": [] + }, + "icon": "fire-station", + "form": [ + "operator", + "building_area", + "address" + ] + }, + { + "name": "police", + "match": { + "type": [ + "point", + "area" + ], + "terms": [ + "badge", + "bear", + "blue", + "bluecoat", + "bobby", + "boy scout", + "bull", + "constable", + "constabulary", + "cop", + "copper", + "corps", + "county mounty", + "detective", + "fed", + "flatfoot", + "force", + "fuzz", + "gendarme", + "gumshoe", + "heat", + "law", + "law enforcement", + "man", + "narc", + "officers", + "patrolman", + "police" + ], + "tags": { + "amenity": "police" + } + }, + "icon": "pharmacy", + "form": [ + "operator", + "building_area", + "address" + ] + }, + { + "name": "museum", + "match": { + "type": [ + "point", + "area" + ], + "terms": [ + "exhibition", + "exhibits archive", + "foundation", + "gallery", + "hall", + "institution", + "library", + "menagerie", + "repository", + "salon", + "storehouse", + "treasury", + "vault" + ], + "tags": { + "tourism": "museum" + } + }, + "icon": "museum", + "form": [ + "operator", + "building_area", + "address" + ] + }, + { + "name": "golf course", + "match": { + "type": [ + "point", + "area" + ], + "tags": { + "leisure": "golf_course" + }, + "terms": [] + }, + "icon": "golf", + "form": [ + "operator", + "address" + ] + }, + { + "name": "river", + "match": { + "type": [ + "line" + ], + "terms": [ + "beck", + "branch", + "brook", + "course", + "creek", + "estuary", + "rill", + "rivulet", + "run", + "runnel", + "stream", + "tributary", + "watercourse" + ], + "tags": { + "waterway": "river" + } + }, + "icon": "waterway-river" + }, + { + "name": "stream", + "match": { + "type": [ + "line" + ], + "terms": [ + "beck", + "branch", + "brook", + "burn", + "course", + "creek", + "current", + "drift", + "flood", + "flow", + "freshet", + "race", + "rill", + "rindle", + "rivulet", + "run", + "runnel", + "rush", + "spate", + "spritz", + "surge", + "tide", + "torrent", + "tributary", + "watercourse" + ], + "tags": { + "waterway": "stream" + } + }, + "icon": "waterway-river", + "form": [ + "layer" + ] + }, + { + "name": "motorway", + "match": { + "type": [ + "line" + ], + "tags": { + "highway": "motorway" + }, + "terms": [] + }, + "icon": "highway-motorway", + "form": [ + "oneway", + "bridge", + "tunnel", + "access", + "maxspeed" + ] + }, + { + "name": "residential road", + "match": { + "type": [ + "line" + ], + "tags": { + "highway": "residential" + }, + "terms": [] + }, + "icon": "highway-residential", + "form": [ + "oneway", + "bridge", + "tunnel", + "access", + "maxspeed" + ] + }, + { + "name": "primary road", + "match": { + "type": [ + "line" + ], + "tags": { + "highway": "primary" + }, + "terms": [] + }, + "icon": "highway-primary", + "form": [ + "oneway", + "bridge", + "tunnel", + "access", + "maxspeed" + ] + }, + { + "name": "secondary road", + "match": { + "type": [ + "line" + ], + "tags": { + "highway": "secondary" + }, + "terms": [] + }, + "icon": "highway-secondary", + "form": [ + "oneway", + "bridge", + "tunnel", + "access", + "maxspeed" + ] + }, + { + "name": "tertiary road", + "match": { + "type": [ + "line" + ], + "tags": { + "highway": "tertiary" + }, + "terms": [] + }, + "icon": "highway-tertiary", + "form": [ + "oneway", + "bridge", + "tunnel", + "access", + "maxspeed" + ] + }, + { + "name": "service road", + "match": { + "type": [ + "line" + ], + "tags": { + "highway": "service" + }, + "terms": [] + }, + "icon": "highway-service", + "form": [ + "oneway", + "bridge", + "tunnel", + "access", + "maxspeed" + ] + }, + { + "name": "track", + "match": { + "type": [ + "line" + ], + "tags": { + "highway": "track" + }, + "terms": [] + }, + "icon": "highway-track", + "form": [ + "oneway", + "bridge", + "tunnel", + "access", + "maxspeed" + ] + }, + { + "name": "rail", + "match": { + "type": [ + "line" + ], + "tags": { + "railway": "rail" + }, + "terms": [] + }, + "icon": "railway-rail" + }, + { + "name": "subway", + "match": { + "type": [ + "line" + ], + "tags": { + "railway": "subway" + }, + "terms": [] + }, + "icon": "railway-rail" + }, + { + "name": "trunk highway", + "match": { + "type": [ + "line" + ], + "tags": { + "highway": "trunk" + }, + "terms": [] + }, + "icon": "highway-trunk", + "form": [ + "oneway", + "bridge", + "tunnel", + "access", + "maxspeed" + ] + }, + { + "name": "foot path", + "match": { + "type": [ + "line" + ], + "terms": [ + "beaten path", + "boulevard", + "clearing", + "course", + "cut*", + "drag*", + "footpath", + "highway", + "lane", + "line", + "orbit", + "passage", + "pathway", + "rail", + "rails", + "road", + "roadway", + "route", + "street", + "thoroughfare", + "trackway", + "trail", + "trajectory", + "walk" + ], + "tags": { + "highway": "footway" + } + }, + "icon": "highway-footway" + }, + { + "name": "cycle path", + "match": { + "type": [ + "line" + ], + "tags": { + "highway": "cycleway" + }, + "terms": [] + }, + "icon": "highway-cycleway", + "form": [ + "oneway", + "bridge", + "tunnel", + "access", + "maxspeed" + ] + }, + { + "name": "sport pitch", + "match": { + "type": [ + "point", + "area" + ], + "tags": { + "leisure": "pitch" + }, + "terms": [] + }, + "icon": "pitch", + "form": [ + "surface" + ] + }, + { + "name": "basketball court", + "match": { + "type": [ + "point", + "area" + ], + "tags": { + "leisure": "pitch", + "sport": "basketball" + }, + "terms": [] + }, + "icon": "basketball", + "form": [ + "surface" + ] + }, + { + "name": "baseball diamond", + "match": { + "type": [ + "point", + "area" + ], + "tags": { + "leisure": "pitch", + "sport": "baseball" + }, + "terms": [] + }, + "icon": "baseball", + "form": [ + "surface" + ] + }, + { + "name": "soccer field", + "match": { + "type": [ + "point", + "area" + ], + "tags": { + "leisure": "pitch", + "sport": "soccer" + }, + "terms": [] + }, + "icon": "soccer", + "form": [ + "surface" + ] + }, + { + "name": "tennis court", + "match": { + "type": [ + "point", + "area" + ], + "tags": { + "leisure": "pitch", + "sport": "tennis" + }, + "terms": [] + }, + "icon": "tennis", + "form": [ + "surface" + ] + }, + { + "name": "building", + "match": { + "type": [ + "area" + ], + "tags": { + "building": "*" + }, + "terms": [] + }, + "icon": "warehouse", + "form": [ + "building_yes", + "address" + ] + }, + { + "name": "turning circle", + "match": { + "type": [ + "vertex" + ], + "tags": { + "highway": "turning_circle" + }, + "terms": [] + }, + "icon": "circle" + } +] diff --git a/presets/presets_josm.json b/data/presets/presets_josm.json similarity index 100% rename from presets/presets_josm.json rename to data/presets/presets_josm.json diff --git a/presets/presets_potlatch.json b/data/presets/presets_potlatch.json similarity index 100% rename from presets/presets_potlatch.json rename to data/presets/presets_potlatch.json diff --git a/presets/way.json b/data/presets/way.json similarity index 100% rename from presets/way.json rename to data/presets/way.json diff --git a/presets/ways/highway__bridleway.png b/data/presets/ways/highway__bridleway.png similarity index 100% rename from presets/ways/highway__bridleway.png rename to data/presets/ways/highway__bridleway.png diff --git a/presets/ways/highway__cycleway.png b/data/presets/ways/highway__cycleway.png similarity index 100% rename from presets/ways/highway__cycleway.png rename to data/presets/ways/highway__cycleway.png diff --git a/presets/ways/highway__footway.png b/data/presets/ways/highway__footway.png similarity index 100% rename from presets/ways/highway__footway.png rename to data/presets/ways/highway__footway.png diff --git a/presets/ways/highway__light_rail.png b/data/presets/ways/highway__light_rail.png similarity index 100% rename from presets/ways/highway__light_rail.png rename to data/presets/ways/highway__light_rail.png diff --git a/presets/ways/highway__living_street.png b/data/presets/ways/highway__living_street.png similarity index 100% rename from presets/ways/highway__living_street.png rename to data/presets/ways/highway__living_street.png diff --git a/presets/ways/highway__motorway.png b/data/presets/ways/highway__motorway.png similarity index 100% rename from presets/ways/highway__motorway.png rename to data/presets/ways/highway__motorway.png diff --git a/presets/ways/highway__pedestrian.png b/data/presets/ways/highway__pedestrian.png similarity index 100% rename from presets/ways/highway__pedestrian.png rename to data/presets/ways/highway__pedestrian.png diff --git a/presets/ways/highway__primary.png b/data/presets/ways/highway__primary.png similarity index 100% rename from presets/ways/highway__primary.png rename to data/presets/ways/highway__primary.png diff --git a/presets/ways/highway__residential.png b/data/presets/ways/highway__residential.png similarity index 100% rename from presets/ways/highway__residential.png rename to data/presets/ways/highway__residential.png diff --git a/presets/ways/highway__secondary.png b/data/presets/ways/highway__secondary.png similarity index 100% rename from presets/ways/highway__secondary.png rename to data/presets/ways/highway__secondary.png diff --git a/presets/ways/highway__service.png b/data/presets/ways/highway__service.png similarity index 100% rename from presets/ways/highway__service.png rename to data/presets/ways/highway__service.png diff --git a/presets/ways/highway__tertiary.png b/data/presets/ways/highway__tertiary.png similarity index 100% rename from presets/ways/highway__tertiary.png rename to data/presets/ways/highway__tertiary.png diff --git a/presets/ways/highway__track.png b/data/presets/ways/highway__track.png similarity index 100% rename from presets/ways/highway__track.png rename to data/presets/ways/highway__track.png diff --git a/presets/ways/highway__trunk.png b/data/presets/ways/highway__trunk.png similarity index 100% rename from presets/ways/highway__trunk.png rename to data/presets/ways/highway__trunk.png diff --git a/presets/ways/highway__unclassified.png b/data/presets/ways/highway__unclassified.png similarity index 100% rename from presets/ways/highway__unclassified.png rename to data/presets/ways/highway__unclassified.png diff --git a/presets/ways/railway__abandoned.png b/data/presets/ways/railway__abandoned.png similarity index 100% rename from presets/ways/railway__abandoned.png rename to data/presets/ways/railway__abandoned.png diff --git a/presets/ways/railway__construction.png b/data/presets/ways/railway__construction.png similarity index 100% rename from presets/ways/railway__construction.png rename to data/presets/ways/railway__construction.png diff --git a/presets/ways/railway__disused.png b/data/presets/ways/railway__disused.png similarity index 100% rename from presets/ways/railway__disused.png rename to data/presets/ways/railway__disused.png diff --git a/presets/ways/railway__monorail.png b/data/presets/ways/railway__monorail.png similarity index 100% rename from presets/ways/railway__monorail.png rename to data/presets/ways/railway__monorail.png diff --git a/presets/ways/railway__narrow_gauge.png b/data/presets/ways/railway__narrow_gauge.png similarity index 100% rename from presets/ways/railway__narrow_gauge.png rename to data/presets/ways/railway__narrow_gauge.png diff --git a/presets/ways/railway__preserved.png b/data/presets/ways/railway__preserved.png similarity index 100% rename from presets/ways/railway__preserved.png rename to data/presets/ways/railway__preserved.png diff --git a/presets/ways/railway__rail.png b/data/presets/ways/railway__rail.png similarity index 100% rename from presets/ways/railway__rail.png rename to data/presets/ways/railway__rail.png diff --git a/presets/ways/railway__spur.png b/data/presets/ways/railway__spur.png similarity index 100% rename from presets/ways/railway__spur.png rename to data/presets/ways/railway__spur.png diff --git a/presets/ways/railway__tram.png b/data/presets/ways/railway__tram.png similarity index 100% rename from presets/ways/railway__tram.png rename to data/presets/ways/railway__tram.png diff --git a/presets/ways/waterway__canal.png b/data/presets/ways/waterway__canal.png similarity index 100% rename from presets/ways/waterway__canal.png rename to data/presets/ways/waterway__canal.png diff --git a/presets/ways/waterway__river.png b/data/presets/ways/waterway__river.png similarity index 100% rename from presets/ways/waterway__river.png rename to data/presets/ways/waterway__river.png diff --git a/presets/ways/waterway__stream.png b/data/presets/ways/waterway__stream.png similarity index 100% rename from presets/ways/waterway__stream.png rename to data/presets/ways/waterway__stream.png diff --git a/index.html b/index.html index 83b50cecc..9a4e27c50 100644 --- a/index.html +++ b/index.html @@ -194,8 +194,11 @@ var id = iD(); - iD.util.asyncMap(['keys.json', 'presets/presets.json', 'presets/defaults.json', - 'presets/categories.json', 'presets/forms.json'], d3.json, function(err, data) { + iD.util.asyncMap(['keys.json', + 'data/presets/presets.json', + 'data/presets/defaults.json', + 'data/presets/categories.json', + 'data/presets/forms.json'], d3.json, function(err, data) { id.connection() .keys(data[0]); diff --git a/js/id/presets/collection.js b/js/id/presets/collection.js index ce683fcb9..6181ed327 100644 --- a/js/id/presets/collection.js +++ b/js/id/presets/collection.js @@ -39,25 +39,34 @@ iD.presets.Collection = function(collection) { value = value.toLowerCase(); - // Uses levenshtein distance, with a couple of hacks - // to prioritize exact substring matches - return iD.presets.Collection(collection.sort(function(a, b) { - var ia = a.name.indexOf(value) >= 0, - ib = b.name.indexOf(value) >= 0; + var substring_name = _.filter(collection, function(a) { + return a.name.indexOf(value) !== -1; + }), + substring_terms = _.filter(collection, function(a) { + return _.any(a.match.terms || [], function(b) { + return iD.util.editDistance(value, b) - b.length + value.length < 3; + }); + }), + levenstein_name = collection.map(function(a) { + return { preset: a, dist: iD.util.editDistance(value, a.name) }; + }).filter(function(a) { + return a.dist - a.preset.name.length + value.length < 3; + }).sort(function(a, b) { + return a.dist - b.dist; + }).map(function(a) { + return a.preset; + }), + other = _.find(collection, function(a) { + return a.name === 'other'; + }); - if (ia && !ib) { - return -1; - } else if (ib && !ia) { - return 1; - } - - return iD.util.editDistance(value, a.name) - iD.util.editDistance(value, b.name); - }).filter(function(d) { - return iD.util.editDistance(value, d.name) - d.name.length + value.length < 3 || - d.name === 'other'; - })); + return iD.presets.Collection( + _.unique( + substring_name.concat( + substring_terms, + levenstein_name, + other))); } - }; return presets; diff --git a/presets/presets.json b/presets/presets.json deleted file mode 100644 index 214e44153..000000000 --- a/presets/presets.json +++ /dev/null @@ -1,467 +0,0 @@ -[ -{ - "name": "cafe", - "match": { - "type": ["point", "area"], - "tags": { - "amenity": "cafe" - } - }, - "icon": "cafe", - "form": ["cuisine", "internet_access", "building_area", "address"] -}, -{ - "name": "park", - "match": { - "type": ["point", "area"], - "tags": { - "leisure": "park" - } - }, - "icon": "park" -}, -{ - "name": "water", - "match": { - "type": ["point", "area"], - "tags": { - "natural": "water" - } - }, - "icon": "" -}, -{ - "name": "wetland", - "match": { - "type": ["point", "area"], - "tags": { - "natural": "wetland" - } - }, - "icon": "" -}, -{ - "name": "wood", - "match": { - "type": ["point", "area"], - "tags": { - "natural": "wood" - } - }, - "icon": "" -}, -{ - "name": "coastline", - "match": { - "type": ["line"], - "tags": { - "natural": "coastline" - } - }, - "icon": "" -}, -{ - "name": "supermarket", - "match": { - "type": ["point", "area"], - "tags": { - "shop": "supermarket" - } - }, - "icon": "grocery", - "form": ["operator", "building_area", "address"] -}, -{ - "name": "restaurant", - "match": { - "type": ["point", "area"], - "tags": { - "amenity": "restaurant" - } - }, - "icon": "restaurant", - "form": ["cuisine", "building_area", "address"] -}, -{ - "name": "place of worship", - "match": { - "type": ["point", "area"], - "tags": { - "amenity": "place_of_worship" - } - }, - "icon": "place-of-worship", - "form": ["religion", "denomination", "building_area", "address"] -}, -{ - "name": "school", - "match": { - "type": ["point", "area"], - "tags": { - "amenity": "school" - } - }, - "icon": "school", - "form": ["operator", "building", "address"] -}, -{ - "name": "parking", - "match": { - "type": ["point", "area"], - "tags": { - "amenity": "parking" - } - }, - "icon": "parking", - "form": ["fee", "access", "address"] -}, -{ - "name": "bank", - "match": { - "type": ["point", "area"], - "tags": { - "amenity": "bank" - } - }, - "icon": "bank", - "form": ["atm", "building_area", "address"] -}, -{ - "name": "fast food", - "match": { - "type": ["point", "area"], - "tags": { - "amenity": "fast_food" - } - }, - "icon": "fast-food", - "form": ["cuisine", "building_area", "address"] -}, -{ - "name": "bar", - "match": { - "type": ["point", "area"], - "tags": { - "amenity": "bar" - } - }, - "icon": "bar", - "form": ["building_area", "address"] -}, -{ - "name": "bus stop", - "match": { - "type": ["point"], - "tags": { - "highway": "bus_stop" - } - }, - "icon": "bus", - "form": ["operator", "shelter"] -}, -{ - "name": "cinema", - "match": { - "type": ["point", "area"], - "tags": { - "amenity": "cinema" - } - }, - "icon": "cinema", - "form": ["building_area", "address"] -}, -{ - "name": "hospital", - "match": { - "type": ["point", "area"], - "tags": { - "amenity": "hospital" - } - }, - "icon": "hospital", - "form": ["emergency", "building_area", "address"] -}, -{ - "name": "pharmacy", - "match": { - "type": ["point", "area"], - "tags": { - "amenity": "pharmacy" - } - }, - "icon": "police", - "form": ["dispensing", "operator", "building_area", "address"] -}, -{ - "name": "fire station", - "match": { - "type": ["point", "area"], - "tags": { - "amenity": "fire_station" - } - }, - "icon": "fire-station", - "form": ["operator", "building_area", "address"] -}, -{ - "name": "police", - "match": { - "type": ["point", "area"], - "tags": { - "amenity": "police" - } - }, - "icon": "pharmacy", - "form": ["operator", "building_area", "address"] -}, -{ - "name": "museum", - "match": { - "type": ["point", "area"], - "tags": { - "tourism": "museum" - } - }, - "icon": "museum", - "form": ["operator", "building_area", "address"] -}, -{ - "name": "golf course", - "match": { - "type": ["point", "area"], - "tags": { - "leisure": "golf_course" - } - }, - "icon": "golf", - "form": ["operator", "address"] -}, -{ - "name": "river", - "match": { - "type": ["line"], - "tags": { - "waterway": "river" - } - }, - "icon": "waterway-river" -}, -{ - "name": "stream", - "match": { - "type": ["line"], - "tags": { - "waterway": "stream" - } - }, - "icon": "waterway-river", - "form": ["layer"] -}, -{ - "name": "motorway", - "match": { - "type": ["line"], - "tags": { - "highway": "motorway" - } - }, - "icon": "highway-motorway", - "form": ["oneway", "bridge", "tunnel", "access", "maxspeed"] -}, -{ - "name": "residential road", - "match": { - "type": ["line"], - "tags": { - "highway": "residential" - } - }, - "icon": "highway-residential", - "form": ["oneway", "bridge", "tunnel", "access", "maxspeed"] -}, -{ - "name": "primary road", - "match": { - "type": ["line"], - "tags": { - "highway": "primary" - } - }, - "icon": "highway-primary", - "form": ["oneway", "bridge", "tunnel", "access", "maxspeed"] -}, -{ - "name": "secondary road", - "match": { - "type": ["line"], - "tags": { - "highway": "secondary" - } - }, - "icon": "highway-secondary", - "form": ["oneway", "bridge", "tunnel", "access", "maxspeed"] -}, -{ - "name": "tertiary road", - "match": { - "type": ["line"], - "tags": { - "highway": "tertiary" - } - }, - "icon": "highway-tertiary", - "form": ["oneway", "bridge", "tunnel", "access", "maxspeed"] -}, -{ - "name": "service road", - "match": { - "type": ["line"], - "tags": { - "highway": "service" - } - }, - "icon": "highway-service", - "form": ["oneway", "bridge", "tunnel", "access", "maxspeed"] -}, -{ - "name": "track", - "match": { - "type": ["line"], - "tags": { - "highway": "track" - } - }, - "icon": "highway-track", - "form": ["oneway", "bridge", "tunnel", "access", "maxspeed"] -}, -{ - "name": "rail", - "match": { - "type": ["line"], - "tags": { - "railway": "rail" - } - }, - "icon": "railway-rail" -}, -{ - "name": "subway", - "match": { - "type": ["line"], - "tags": { - "railway": "subway" - } - }, - "icon": "railway-rail" -}, -{ - "name": "trunk highway", - "match": { - "type": ["line"], - "tags": { - "highway": "trunk" - } - }, - "icon": "highway-trunk", - "form": ["oneway", "bridge", "tunnel", "access", "maxspeed"] -}, -{ - "name": "foot path", - "match": { - "type": ["line"], - "tags": { - "highway": "footway" - } - }, - "icon": "highway-footway" -}, -{ - "name": "cycle path", - "match": { - "type": ["line"], - "tags": { - "highway": "cycleway" - } - }, - "icon": "highway-cycleway", - "form": ["oneway", "bridge", "tunnel", "access", "maxspeed"] -}, -{ - "name": "sport pitch", - "match": { - "type": ["point", "area"], - "tags": { "leisure": "pitch" } - }, - "icon": "pitch", - "form": ["surface"] -}, -{ - "name": "basketball court", - "match": { - "type": ["point", "area"], - "tags": { - "leisure": "pitch", - "sport": "basketball" - } - }, - "icon": "basketball", - "form": ["surface"] -}, -{ - "name": "baseball diamond", - "match": { - "type": ["point", "area"], - "tags": { - "leisure": "pitch", - "sport": "baseball" - } - }, - "icon": "baseball", - "form": ["surface"] -}, -{ - "name": "soccer field", - "match": { - "type": ["point", "area"], - "tags": { - "leisure": "pitch", - "sport": "soccer" - } - }, - "icon": "soccer", - "form": ["surface"] -}, -{ - "name": "tennis court", - "match": { - "type": ["point", "area"], - "tags": { - "leisure": "pitch", - "sport": "tennis" - } - }, - "icon": "tennis", - "form": ["surface"] -}, -{ - "name": "building", - "match": { - "type": ["area"], - "tags": { - "building": "*" - } - }, - "icon": "warehouse", - "form": ["building_yes", "address"] -}, -{ - "name": "turning circle", - "match": { - "type": ["vertex"], - "tags": { - "highway": "turning_circle" - } - }, - "icon": "circle" -} -]