From 39f28a36ce98b7fb0c1bd7203084c291cd651c59 Mon Sep 17 00:00:00 2001 From: marc tobias Date: Fri, 8 May 2020 01:27:35 +0200 Subject: [PATCH] structured search form --- dist/assets/css/search.css | 26 ++++++++++-- dist/assets/js/nominatim-ui.js | 40 ++++++++++++++---- dist/search.html | 74 +++++++++++++++++++++++----------- dist/searchpage.hbs | 74 +++++++++++++++++++++++----------- src/assets/css/search.css | 26 ++++++++++-- src/assets/js/searchpage.js | 40 ++++++++++++++---- src/templates/searchpage.hbs | 74 +++++++++++++++++++++++----------- 7 files changed, 261 insertions(+), 93 deletions(-) diff --git a/dist/assets/css/search.css b/dist/assets/css/search.css index f7448f7..51a4490 100755 --- a/dist/assets/css/search.css +++ b/dist/assets/css/search.css @@ -1,9 +1,17 @@ - - -form { +.top-bar { width: 100%; padding: 1em 15px; } + +.top-bar #q { + max-width: 500px; +} + +.form-group-simple.hidden, +.form-group-structured.hidden { + display: none; +} + form #q { min-width: 500px; } @@ -140,6 +148,16 @@ form label { width: 100%; } .search-button-group { - display: inline + display: inline; } } + +.search-button-group { + margin-top: 3px; + box-sizing: content-box; + margin-bottom: 3px; +} + +label { + font-weight: normal; +} \ No newline at end of file diff --git a/dist/assets/js/nominatim-ui.js b/dist/assets/js/nominatim-ui.js index 56f731f..d61aac5 100644 --- a/dist/assets/js/nominatim-ui.js +++ b/dist/assets/js/nominatim-ui.js @@ -408,8 +408,19 @@ function init_map_on_search_page(is_reverse_search, nominatim_results, request_l update_viewbox_field(); }); - - + $("input[name='query-selector']").click(function () { + var query_val = $("input[name='query-selector']:checked").val(); + if (query_val === 'simple') { + $('div.form-group-simple').removeClass('hidden'); + $('div.form-group-structured').addClass('hidden'); + $('.form-group-structured').find('input:text').val(''); + } else if (query_val === 'structured') { + console.log('here'); + $('div.form-group-simple').addClass('hidden'); + $('div.form-group-structured').removeClass('hidden'); + $('.form-group-simple').find('input:text').val(''); + } + }); function get_result_element(position) { return $('.result').eq(position); @@ -534,9 +545,6 @@ function init_map_on_search_page(is_reverse_search, nominatim_results, request_l - - - jQuery(document).ready(function () { // if (!$('#search-page,#reverse-page').length) { return; } @@ -619,6 +627,12 @@ jQuery(document).ready(function () { } else { api_request_params = { q: search_params.get('q'), + street: search_params.get('street'), + city: search_params.get('city'), + county: search_params.get('county'), + state: search_params.get('state'), + country: search_params.get('country'), + postalcode: search_params.get('postalcode'), polygon_geojson: search_params.get('polygon_geojson') ? 1 : 0, viewbox: search_params.get('viewbox'), exclude_place_ids: search_params.get('exclude_place_ids'), @@ -626,14 +640,24 @@ jQuery(document).ready(function () { }; context = { - // aSearchResults: aResults, sQuery: api_request_params.q, sViewBox: search_params.get('viewbox'), env: Nominatim_Config - // sMoreURL: 'x' }; - if (api_request_params.q) { + if (api_request_params.street || api_request_params.city || api_request_params.county + || api_request_params.state || api_request_params.country || api_request_params.postalcode) { + context.hStructured = { + street: api_request_params.street, + city: api_request_params.city, + county: api_request_params.county, + state: api_request_params.state, + country: api_request_params.country, + postalcode: api_request_params.postalcode + }; + } + + if (api_request_params.q || context.hStructured) { fetch_from_api('search', api_request_params, function (aResults) { diff --git a/dist/search.html b/dist/search.html index f0282d0..b84e93c 100644 --- a/dist/search.html +++ b/dist/search.html @@ -133,32 +133,60 @@ {{/inline}} - -
diff --git a/dist/searchpage.hbs b/dist/searchpage.hbs index a4c220d..d1d70ae 100644 --- a/dist/searchpage.hbs +++ b/dist/searchpage.hbs @@ -14,32 +14,60 @@
{{/inline}} - -
diff --git a/src/assets/css/search.css b/src/assets/css/search.css index f7448f7..51a4490 100755 --- a/src/assets/css/search.css +++ b/src/assets/css/search.css @@ -1,9 +1,17 @@ - - -form { +.top-bar { width: 100%; padding: 1em 15px; } + +.top-bar #q { + max-width: 500px; +} + +.form-group-simple.hidden, +.form-group-structured.hidden { + display: none; +} + form #q { min-width: 500px; } @@ -140,6 +148,16 @@ form label { width: 100%; } .search-button-group { - display: inline + display: inline; } } + +.search-button-group { + margin-top: 3px; + box-sizing: content-box; + margin-bottom: 3px; +} + +label { + font-weight: normal; +} \ No newline at end of file diff --git a/src/assets/js/searchpage.js b/src/assets/js/searchpage.js index d76dffa..d909533 100755 --- a/src/assets/js/searchpage.js +++ b/src/assets/js/searchpage.js @@ -170,8 +170,19 @@ function init_map_on_search_page(is_reverse_search, nominatim_results, request_l update_viewbox_field(); }); - - + $("input[name='query-selector']").click(function () { + var query_val = $("input[name='query-selector']:checked").val(); + if (query_val === 'simple') { + $('div.form-group-simple').removeClass('hidden'); + $('div.form-group-structured').addClass('hidden'); + $('.form-group-structured').find('input:text').val(''); + } else if (query_val === 'structured') { + console.log('here'); + $('div.form-group-simple').addClass('hidden'); + $('div.form-group-structured').removeClass('hidden'); + $('.form-group-simple').find('input:text').val(''); + } + }); function get_result_element(position) { return $('.result').eq(position); @@ -296,9 +307,6 @@ function init_map_on_search_page(is_reverse_search, nominatim_results, request_l - - - jQuery(document).ready(function () { // if (!$('#search-page,#reverse-page').length) { return; } @@ -381,6 +389,12 @@ jQuery(document).ready(function () { } else { api_request_params = { q: search_params.get('q'), + street: search_params.get('street'), + city: search_params.get('city'), + county: search_params.get('county'), + state: search_params.get('state'), + country: search_params.get('country'), + postalcode: search_params.get('postalcode'), polygon_geojson: search_params.get('polygon_geojson') ? 1 : 0, viewbox: search_params.get('viewbox'), exclude_place_ids: search_params.get('exclude_place_ids'), @@ -388,14 +402,24 @@ jQuery(document).ready(function () { }; context = { - // aSearchResults: aResults, sQuery: api_request_params.q, sViewBox: search_params.get('viewbox'), env: Nominatim_Config - // sMoreURL: 'x' }; - if (api_request_params.q) { + if (api_request_params.street || api_request_params.city || api_request_params.county + || api_request_params.state || api_request_params.country || api_request_params.postalcode) { + context.hStructured = { + street: api_request_params.street, + city: api_request_params.city, + county: api_request_params.county, + state: api_request_params.state, + country: api_request_params.country, + postalcode: api_request_params.postalcode + }; + } + + if (api_request_params.q || context.hStructured) { fetch_from_api('search', api_request_params, function (aResults) { diff --git a/src/templates/searchpage.hbs b/src/templates/searchpage.hbs index a4c220d..d1d70ae 100644 --- a/src/templates/searchpage.hbs +++ b/src/templates/searchpage.hbs @@ -14,32 +14,60 @@
{{/inline}} - -
-- 2.39.5