From fecb3a8ea10b0560f880b687fabaf4b45b7da834 Mon Sep 17 00:00:00 2001 From: Harish Krishna Date: Tue, 30 Sep 2014 17:42:09 -0400 Subject: [PATCH 1/6] work with precisions 1..9 based on the zoom levels --- query/suggest.js | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/query/suggest.js b/query/suggest.js index 9ba2e5c8..fe8e8d14 100644 --- a/query/suggest.js +++ b/query/suggest.js @@ -4,6 +4,14 @@ var logger = require('../src/logger'); // Build pelias suggest query function generate( params ){ + var getPrecision = function(zoom) { + if (zoom>=15) { + return 9; + } else { + return parseInt(zoom/2) || 1; + } + }; + var cmd = { 'pelias' : { 'text' : params.input, @@ -14,9 +22,7 @@ function generate( params ){ 'dataset': params.layers, 'location': { 'value': [ params.lon, params.lat ], - - // // commented out until they fix the precision bug in ES 1.3.3 - 'precision': 2 // params.zoom > 9 ? 3 : (params.zoom > 7 ? 2 : 1) + 'precision': getPrecision(params.zoom) } } } From e7e449a91421301aa16d9b518e88686e707829c1 Mon Sep 17 00:00:00 2001 From: Harish Krishna Date: Wed, 1 Oct 2014 10:40:40 -0400 Subject: [PATCH 2/6] using precision levels 1..5 only --- query/suggest.js | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/query/suggest.js b/query/suggest.js index fe8e8d14..246cff7e 100644 --- a/query/suggest.js +++ b/query/suggest.js @@ -5,13 +5,20 @@ var logger = require('../src/logger'); function generate( params ){ var getPrecision = function(zoom) { - if (zoom>=15) { - return 9; - } else { - return parseInt(zoom/2) || 1; + switch (true) { + case (zoom < 5): + return 1; // zoom: 1-3 + case (zoom < 6): + return 2; // zoom: 4-5 + case (zoom < 10): + return 3; // zoom: 6-9 + case (zoom < 16): + return 4; // zoom: 10-15 + default: + return 5; // zoom: >= 16 } }; - + var cmd = { 'pelias' : { 'text' : params.input, From ecda07a520fb78864160f3377614b2fa135a87eb Mon Sep 17 00:00:00 2001 From: Harish Krishna Date: Wed, 1 Oct 2014 10:46:59 -0400 Subject: [PATCH 3/6] fixing valid query test --- test/unit/query/suggest.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/unit/query/suggest.js b/test/unit/query/suggest.js index bb747c11..b8c3330f 100644 --- a/test/unit/query/suggest.js +++ b/test/unit/query/suggest.js @@ -14,7 +14,7 @@ module.exports.tests.query = function(test, common) { test('valid query', function(t) { var query = generate({ input: 'test', size: 10, - lat: 0, lon: 0, + lat: 0, lon: 0, zoom:1, layers: ['test'] }); var expected = { @@ -26,7 +26,7 @@ module.exports.tests.query = function(test, common) { context: { dataset: [ 'test' ], location: { - precision: 2, + precision: 1, value: [ 0, 0 ] } } From b4683fafb383a0270e97e5c370f4df5915a18a38 Mon Sep 17 00:00:00 2001 From: Harish Krishna Date: Wed, 1 Oct 2014 11:02:42 -0400 Subject: [PATCH 4/6] test precision (and while writing the test, caught/fixed the bug where zoom=4 ftw) --- query/suggest.js | 2 +- test/unit/query/suggest.js | 53 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 54 insertions(+), 1 deletion(-) diff --git a/query/suggest.js b/query/suggest.js index 246cff7e..44b22d67 100644 --- a/query/suggest.js +++ b/query/suggest.js @@ -6,7 +6,7 @@ function generate( params ){ var getPrecision = function(zoom) { switch (true) { - case (zoom < 5): + case (zoom < 4): return 1; // zoom: 1-3 case (zoom < 6): return 2; // zoom: 4-5 diff --git a/test/unit/query/suggest.js b/test/unit/query/suggest.js index b8c3330f..4af5d96d 100644 --- a/test/unit/query/suggest.js +++ b/test/unit/query/suggest.js @@ -38,6 +38,59 @@ module.exports.tests.query = function(test, common) { }); }; +module.exports.tests.precision = function(test, common) { + var inputs = [ + {zoom:1, precision:1}, + {zoom:2, precision:1}, + {zoom:3, precision:1}, + {zoom:4, precision:2}, + {zoom:5, precision:2}, + {zoom:6, precision:3}, + {zoom:7, precision:3}, + {zoom:8, precision:3}, + {zoom:9, precision:3}, + {zoom:10, precision:4}, + {zoom:11, precision:4}, + {zoom:12, precision:4}, + {zoom:13, precision:4}, + {zoom:14, precision:4}, + {zoom:15, precision:4}, + {zoom:16, precision:5}, + {zoom:17, precision:5}, + {zoom:18, precision:5}, + {zoom:19, precision:5}, + {zoom:20, precision:5} + ]; + + inputs.forEach( function( input ){ + test('valid precision where zoom = ' + input.zoom, function(t) { + var query = generate({ + input: 'test', size: 10, + lat: 0, lon: 0, zoom:input.zoom, + layers: ['test'] + }); + var expected = { + pelias: { + text: 'test', + completion: { + field: 'suggest', + size: 10, + context: { + dataset: [ 'test' ], + location: { + precision: input.precision, + value: [ 0, 0 ] + } + } + } + } + }; + t.deepEqual(query, expected, 'valid suggest query'); + t.end(); + }); + }); +}; + module.exports.all = function (tape, common) { function test(name, testFunction) { From 94ce548fceb1087f01372304c49fbac550f5ce4a Mon Sep 17 00:00:00 2001 From: Harish Krishna Date: Wed, 1 Oct 2014 14:17:23 -0400 Subject: [PATCH 5/6] better naming --- test/unit/query/suggest.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/test/unit/query/suggest.js b/test/unit/query/suggest.js index 4af5d96d..a9f3888b 100644 --- a/test/unit/query/suggest.js +++ b/test/unit/query/suggest.js @@ -39,7 +39,7 @@ module.exports.tests.query = function(test, common) { }; module.exports.tests.precision = function(test, common) { - var inputs = [ + var test_cases = [ {zoom:1, precision:1}, {zoom:2, precision:1}, {zoom:3, precision:1}, @@ -62,11 +62,11 @@ module.exports.tests.precision = function(test, common) { {zoom:20, precision:5} ]; - inputs.forEach( function( input ){ - test('valid precision where zoom = ' + input.zoom, function(t) { + test_cases.forEach( function( test_case ){ + test('valid precision where zoom = ' + test_case.zoom, function(t) { var query = generate({ input: 'test', size: 10, - lat: 0, lon: 0, zoom:input.zoom, + lat: 0, lon: 0, zoom:test_case.zoom, layers: ['test'] }); var expected = { @@ -78,7 +78,7 @@ module.exports.tests.precision = function(test, common) { context: { dataset: [ 'test' ], location: { - precision: input.precision, + precision: test_case.precision, value: [ 0, 0 ] } } From 0abe345c1c520e889e7b1ec4232c4ae5ead8a229 Mon Sep 17 00:00:00 2001 From: Harish Krishna Date: Wed, 1 Oct 2014 15:15:13 -0400 Subject: [PATCH 6/6] updating getPrecision() to handle null/undefined/empty zoom params --- query/suggest.js | 16 ++++++++-------- test/unit/query/suggest.js | 4 +++- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/query/suggest.js b/query/suggest.js index 44b22d67..ba086f88 100644 --- a/query/suggest.js +++ b/query/suggest.js @@ -6,16 +6,16 @@ function generate( params ){ var getPrecision = function(zoom) { switch (true) { - case (zoom < 4): - return 1; // zoom: 1-3 - case (zoom < 6): - return 2; // zoom: 4-5 - case (zoom < 10): - return 3; // zoom: 6-9 - case (zoom < 16): + case (zoom > 15): + return 5; // zoom: >= 16 + case (zoom > 9): return 4; // zoom: 10-15 + case (zoom > 5): + return 3; // zoom: 6-9 + case (zoom > 3): + return 2; // zoom: 4-5 default: - return 5; // zoom: >= 16 + return 1; // zoom: 1-3 or when zoom: undefined } }; diff --git a/test/unit/query/suggest.js b/test/unit/query/suggest.js index a9f3888b..74e138ff 100644 --- a/test/unit/query/suggest.js +++ b/test/unit/query/suggest.js @@ -59,7 +59,9 @@ module.exports.tests.precision = function(test, common) { {zoom:17, precision:5}, {zoom:18, precision:5}, {zoom:19, precision:5}, - {zoom:20, precision:5} + {zoom:'', precision:1}, + {zoom:null, precision:1}, + {zoom:undefined, precision:1} ]; test_cases.forEach( function( test_case ){