From ea7c9f22240f550bce4ac99e8b5179111627ddf8 Mon Sep 17 00:00:00 2001 From: Aaron Lidman Date: Thu, 21 Nov 2013 18:36:39 -0800 Subject: [PATCH] Prevent name descriptions from matching in preset search --- js/id/presets/collection.js | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/js/id/presets/collection.js b/js/id/presets/collection.js index 6d389a53d..9194c58e7 100644 --- a/js/id/presets/collection.js +++ b/js/id/presets/collection.js @@ -25,10 +25,18 @@ iD.presets.Collection = function(collection) { return a.searchable !== false; }); + function namePrep(name) { + var nameArray = name.split(' - '); + if (nameArray.length > 1) { + name = nameArray.slice(0, nameArray.length-1).join(' - '); + } + return name.toLowerCase(); + } + var leading_name = _.filter(searchable, function(a) { - return leading(a.name().toLowerCase()); + return leading(namePrep(a.name())); }).sort(function(a, b) { - var i = a.name().toLowerCase().indexOf(value) - b.name().toLowerCase().indexOf(value); + var i = namePrep(a.name()).indexOf(value) - namePrep(b.name()).indexOf(value); if (i === 0) return a.name().length - b.name().length; else return i; }), @@ -44,7 +52,7 @@ iD.presets.Collection = function(collection) { var levenstein_name = searchable.map(function(a) { return { preset: a, - dist: iD.util.editDistance(value, a.name().toLowerCase()) + dist: iD.util.editDistance(value, namePrep(a.name())) }; }).filter(function(a) { return a.dist + Math.min(value.length - a.preset.name().length, 0) < 3;