diff --git a/www/assets/js/autofill.js b/www/assets/js/autofill.js index 89180a3..d323486 100644 --- a/www/assets/js/autofill.js +++ b/www/assets/js/autofill.js @@ -1,15 +1,20 @@ -/* +/* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ var autofillDB = {}; +var autofillStreetDB = []; if (localStorage.getItem("autofill_db") != null) { autofillDB = JSON.parse(localStorage.getItem("autofill_db")); } +if (localStorage.getItem("autofill_streetdb") != null) { + autofillStreetDB = JSON.parse(localStorage.getItem("autofill_streetdb")); +} + function addressToNumberAndStreet(address) { var number = ""; var street = ""; @@ -50,9 +55,39 @@ function addAutofillEntry(address) { } localStorage.setItem("autofill_db", JSON.stringify(autofillDB)); + + + var found = false; + for (var i = 0; i < autofillStreetDB.length; i++) { + if (autofillStreetDB[i][0] == street) { + autofillStreetDB[i][1]++; + found = true; + break; + } + } + + if (!found) { + autofillStreetDB.push([street, 1]); + } + + localStorage.setItem("autofill_streetdb", JSON.stringify(autofillStreetDB)); +} + +function searchAutofill(q, number) { + var byNumber = []; + if (typeof number != 'undefined') { + byNumber = searchAutofillByNumber(number); + } + + var byStreet = []; + if (q.length > 0) { + byStreet = searchAutofillByStreet(q); + } + + return byNumber.concat(byStreet.filter((item) => byNumber.indexOf(item) < 0)); } -function searchAutofill(number) { +function searchAutofillByNumber(number) { if (typeof autofillDB[number] == 'undefined') { return []; } @@ -67,5 +102,26 @@ function searchAutofill(number) { streets.push(sorted[i][0]); } + return streets; +} + +function searchAutofillByStreet(q) { + var streets = []; + + var sortedDB = autofillStreetDB.sort(function (a, b) { + return b[1] - a[1]; + }); + + console.log(sortedDB); + + q = q.toLowerCase(); + + for (var i = 0; i < sortedDB.length; i++) { + console.log(sortedDB[i][0].toLowerCase().indexOf(q)); + if (sortedDB[i][0].toLowerCase().includes(q)) { + streets.push(sortedDB[i][0]); + } + } + return streets; } \ No newline at end of file diff --git a/www/assets/js/manage.js b/www/assets/js/manage.js index 1ef9a6f..38695ce 100644 --- a/www/assets/js/manage.js +++ b/www/assets/js/manage.js @@ -77,34 +77,4 @@ $(".view-main").on("click", "#historylist .history-list-item", function () { // Restore user's last entered city/state combo if (localStorage.getItem("citystate") != null) { $("input[name=citystate]").val(localStorage.getItem("citystate")); -} - -var streetAutocomplete = app.autocomplete.create({ - inputEl: '#streetInput', - openIn: 'dropdown', - preloader: false, //enable preloader - /* If we set valueProperty to "id" then input value on select will be set according to this property */ - valueProperty: 'name', //object's "value" property name - textProperty: 'name', //object's "text" property name - limit: 10, //limit to 10 results - typeahead: true, - dropdownPlaceholderText: '', - source: function (query, render) { - var autocomplete = this; - - var streets = searchAutofill($("input[name=number]").val()); - - if (query.length === 0) { - render(streets); - return; - } - - var results = []; - for (var i = 0; i < streets.length; i++) { - if (streets[i].toLowerCase().indexOf(query.toLowerCase()) >= 0) { - results.push(streets[i]); - } - } - render(results); - } -}); \ No newline at end of file +} \ No newline at end of file diff --git a/www/pages/manage.html b/www/pages/manage.html index 6525dfb..5103925 100644 --- a/www/pages/manage.html +++ b/www/pages/manage.html @@ -41,7 +41,7 @@
Address Number
- +
@@ -50,7 +50,7 @@
Street
- +
@@ -59,7 +59,7 @@
City, State, ZIP
- +
diff --git a/www/routes.js b/www/routes.js index aab6657..062a23f 100644 --- a/www/routes.js +++ b/www/routes.js @@ -28,7 +28,26 @@ var routes = [ { path: '/manage', url: './pages/manage.html', - name: 'manage' + name: 'manage', + on: { + pageAfterIn: function () { + app.autocomplete.create({ + inputEl: '#streetInput', + openIn: 'dropdown', + /* If we set valueProperty to "id" then input value on select will be set according to this property */ + valueProperty: 'name', //object's "value" property name + textProperty: 'name', //object's "text" property name + limit: 10, //limit to 10 results + typeahead: true, + dropdownPlaceholderText: '', + source: function (query, render) { + var streets = searchAutofill(query, $("input[name=number]").val()); + + render(streets); + } + }); + } + } }, { path: '/list', @@ -64,7 +83,7 @@ var routes = [ } } }, - { + { path: '/credits', url: './pages/credits.html', name: 'credits'