From d3bff90b3e91d122fe675fb1ee9c3350b7068483 Mon Sep 17 00:00:00 2001 From: Skylar Ittner Date: Sat, 5 Oct 2019 23:39:40 -0600 Subject: [PATCH] Add street autocomplete (close #4), update project properties --- nbproject/license-mpl.txt | 9 +++++ nbproject/project.properties | 5 ++- www/assets/js/autofill.js | 71 ++++++++++++++++++++++++++++++++++++ www/assets/js/list.js | 6 +-- www/assets/js/manage.js | 32 +++++++++++++++- www/assets/js/packages.js | 2 + www/index.html | 1 + www/pages/manage.html | 2 +- 8 files changed, 121 insertions(+), 7 deletions(-) create mode 100644 nbproject/license-mpl.txt create mode 100644 www/assets/js/autofill.js diff --git a/nbproject/license-mpl.txt b/nbproject/license-mpl.txt new file mode 100644 index 0000000..8fe23b3 --- /dev/null +++ b/nbproject/license-mpl.txt @@ -0,0 +1,9 @@ +<#if licenseFirst??> +${licenseFirst} + +${licensePrefix}This Source Code Form is subject to the terms of the Mozilla Public +${licensePrefix}License, v. 2.0. If a copy of the MPL was not distributed with this +${licensePrefix}file, You can obtain one at http://mozilla.org/MPL/2.0/. +<#if licenseLast??> +${licenseLast} + diff --git a/nbproject/project.properties b/nbproject/project.properties index c49dbc8..2a71db0 100644 --- a/nbproject/project.properties +++ b/nbproject/project.properties @@ -2,10 +2,11 @@ auxiliary.org-netbeans-modules-cordova.cordova_5f_build_5f_script_5f_version=52 auxiliary.org-netbeans-modules-cordova.phonegap=true auxiliary.org-netbeans-modules-javascript-nodejs.run_2e_enabled=false browser.run=true +file.reference.PackageHelper-www=www file.reference.PackageNotice-test=test file.reference.PackageNotice-www=www files.encoding=UTF-8 -site.root.folder=${file.reference.PackageNotice-www} +project.licensePath=./nbproject/license-mpl.txt +site.root.folder=${file.reference.PackageHelper-www} start.file=index.html -test.folder=${file.reference.PackageNotice-test} web.context.root=/PackageNotice diff --git a/www/assets/js/autofill.js b/www/assets/js/autofill.js new file mode 100644 index 0000000..89180a3 --- /dev/null +++ b/www/assets/js/autofill.js @@ -0,0 +1,71 @@ +/* + * 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 = {}; + +if (localStorage.getItem("autofill_db") != null) { + autofillDB = JSON.parse(localStorage.getItem("autofill_db")); +} + +function addressToNumberAndStreet(address) { + var number = ""; + var street = ""; + + var addressRegex = RegExp("^[0-9]+ .+$"); + if (addressRegex.test(address)) { + number = address.split(" ", 2)[0]; + street = address.substring(address.indexOf(' ') + 1); + } + + return [number, street]; +} + +function addAutofillEntry(address) { + var [number, street] = addressToNumberAndStreet(address); + + if (number == "" || street == "") { + return; + } + + if (typeof autofillDB[number] == 'undefined') { + autofillDB[number] = [ + [street, 1] + ]; + } else { + var found = false; + for (var i = 0; i < autofillDB[number].length; i++) { + if (autofillDB[number][i][0] == street) { + autofillDB[number][i][1]++; + found = true; + break; + } + } + + if (!found) { + autofillDB[number].push([street, 1]); + } + } + + localStorage.setItem("autofill_db", JSON.stringify(autofillDB)); +} + +function searchAutofill(number) { + if (typeof autofillDB[number] == 'undefined') { + return []; + } + + var sorted = autofillDB[number].sort(function (a, b) { + return b[1] - a[1]; + }); + + var streets = []; + + for (var i = 0; i < sorted.length; i++) { + streets.push(sorted[i][0]); + } + + return streets; +} \ No newline at end of file diff --git a/www/assets/js/list.js b/www/assets/js/list.js index a184305..c03af75 100644 --- a/www/assets/js/list.js +++ b/www/assets/js/list.js @@ -1,7 +1,7 @@ /* - * To change this license header, choose License Headers in Project Properties. - * To change this template file, choose Tools | Templates - * and open the template in the editor. + * 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/. */ $(".view-main").on("click", "#addresslist .package-list-item .deliver-btn", function () { diff --git a/www/assets/js/manage.js b/www/assets/js/manage.js index 38695ce..1ef9a6f 100644 --- a/www/assets/js/manage.js +++ b/www/assets/js/manage.js @@ -77,4 +77,34 @@ $(".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")); -} \ No newline at end of file +} + +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 diff --git a/www/assets/js/packages.js b/www/assets/js/packages.js index 87e97c3..6f131ae 100644 --- a/www/assets/js/packages.js +++ b/www/assets/js/packages.js @@ -148,6 +148,8 @@ function addPackage(address, latitude, longitude, type, callback) { packageID: packageID }); } + + addAutofillEntry(address); } function markDelivered(id, delivered) { diff --git a/www/index.html b/www/index.html index f5d607a..ab528af 100644 --- a/www/index.html +++ b/www/index.html @@ -34,6 +34,7 @@ + diff --git a/www/pages/manage.html b/www/pages/manage.html index 7d082b5..778db09 100644 --- a/www/pages/manage.html +++ b/www/pages/manage.html @@ -49,7 +49,7 @@
Street
- +