X-Git-Url: https://git.openstreetmap.org./nominatim-ui.git/blobdiff_plain/bd60ecbb7e649f42071eadae874815b890f19da4..13014639687c0607d0a617ffebc68d9d529a69da:/dist/assets/js/nominatim-ui.js diff --git a/dist/assets/js/nominatim-ui.js b/dist/assets/js/nominatim-ui.js index d16de70..54eaa75 100644 --- a/dist/assets/js/nominatim-ui.js +++ b/dist/assets/js/nominatim-ui.js @@ -96,18 +96,36 @@ function generate_full_api_url(endpoint_name, params) { return api_url; } -function fetch_from_api(endpoint_name, params, callback) { +function update_last_updated(endpoint_name, params) { + if (endpoint_name === 'status') return; + var api_url = generate_full_api_url(endpoint_name, params); - if (endpoint_name !== 'status') { - $('#api-request-link').attr('href', api_url); + $('#last-updated').show(); + + $('#api-request a').attr('href', api_url); + $('#api-request').show(); + + if (endpoint_name === 'search' || endpoint_name === 'reverse') { + $('#api-request-debug a').attr('href', api_url + '&debug=1'); + $('#api-request-debug').show(); + } else { + $('#api-request-debug').hide(); } +} + +function fetch_from_api(endpoint_name, params, callback) { + var api_url = generate_full_api_url(endpoint_name, params); $.get(api_url, function (data) { + if (endpoint_name !== 'status') { + update_last_updated(endpoint_name, params); + } callback(data); }); } function update_data_date() { fetch_from_api('status', { format: 'json' }, function (data) { + $('#last-updated').show(); $('#data-date').text(data.data_updated); }); } @@ -139,6 +157,8 @@ function hide_error() { jQuery(document).ready(function () { hide_error(); + $('#last-updated').hide(); + $(document).ajaxStart(function () { $('#loading').fadeIn('fast'); }).ajaxComplete(function () { @@ -215,6 +235,7 @@ function details_page_load() { place_id: search_params.get('place_id'), osmtype: search_params.get('osmtype'), osmid: search_params.get('osmid'), + class: search_params.get('class'), keywords: search_params.get('keywords'), addressdetails: 1, hierarchy: (search_params.get('hierarchy') === '1' ? 1 : 0), @@ -310,7 +331,7 @@ function display_map_position(mouse_lat_lng) { }; $('#switch-to-reverse').attr('href', 'reverse.html?' + $.param(reverse_params)); - $('input#use_viewbox').trigger('change'); + $('input.api-param-setting').trigger('change'); } function init_map_on_search_page(is_reverse_search, nominatim_results, request_lat, @@ -435,6 +456,23 @@ function init_map_on_search_page(is_reverse_search, nominatim_results, request_l update_viewbox_field(); }); + $('input#option_bounded').on('change', function () { + $('input[name=bounded]') + .val($('input#option_bounded') + .prop('checked') ? '1' : ''); + }); + + $('input#option_dedupe').on('change', function () { + $('input[name=dedupe]') + .val($('input#option_dedupe') + .prop('checked') ? '' : '0'); + }); + + $('input[data-api-param]').on('change', function (e) { + $('input[name=' + $(e.target).data('api-param') + ']').val(e.target.value); + }); + + function get_result_element(position) { return $('.result').eq(position); } @@ -586,11 +624,6 @@ function search_page_load() { format: 'jsonv2' }; - if (search_params.get('debug') === '1') { - window.location.href = generate_full_api_url('reverse', api_request_params); - return; - } - context = { // aPlace: aPlace, fLat: api_request_params.lat, @@ -651,18 +684,25 @@ function search_page_load() { postalcode: search_params.get('postalcode'), polygon_geojson: get_config_value('Search_AreaPolygons', false) ? 1 : 0, viewbox: search_params.get('viewbox'), + bounded: search_params.get('bounded'), + dedupe: search_params.get('dedupe'), + 'accept-language': search_params.get('accept-language'), + countrycodes: search_params.get('countrycodes'), + limit: search_params.get('limit'), + polygon_threshold: search_params.get('polygon_threshold'), exclude_place_ids: search_params.get('exclude_place_ids'), format: 'jsonv2' }; - if (search_params.get('debug') === '1') { - window.location.href = generate_full_api_url('search', api_request_params); - return; - } - context = { sQuery: api_request_params.q, sViewBox: search_params.get('viewbox'), + sBounded: search_params.get('bounded'), + sDedupe: search_params.get('dedupe'), + sLang: search_params.get('accept-language'), + sCCode: search_params.get('countrycodes'), + sLimit: search_params.get('limit'), + sPolyThreshold: search_params.get('polygon_threshold'), env: {} }; @@ -685,19 +725,20 @@ function search_page_load() { context.bSearchRan = true; context.aSearchResults = aResults; - if (aResults.length >= 10) { - var aExcludePlaceIds = []; - if (search_params.has('exclude_place_ids')) { - aExcludePlaceIds = search_params.get('exclude_place_ids').split(','); - } - for (var i = 0; i < aResults.length; i += 1) { - aExcludePlaceIds.push(aResults[i].place_id); - } - - var parsed_url = new URLSearchParams(window.location.search); - parsed_url.set('exclude_place_ids', aExcludePlaceIds.join(',')); - context.sMoreURL = '?' + parsed_url.toString(); + // lonvia wrote: https://github.com/osm-search/nominatim-ui/issues/24 + // I would suggest to remove the guessing and always show the link. Nominatim only returns + // one or two results when it believes the result to be a good enough match. + // if (aResults.length >= 10) { + var aExcludePlaceIds = []; + if (search_params.has('exclude_place_ids')) { + aExcludePlaceIds = search_params.get('exclude_place_ids').split(','); + } + for (var i = 0; i < aResults.length; i += 1) { + aExcludePlaceIds.push(aResults[i].place_id); } + var parsed_url = new URLSearchParams(window.location.search); + parsed_url.set('exclude_place_ids', aExcludePlaceIds.join(',')); + context.sMoreURL = '?' + parsed_url.toString(); render_template($('main'), 'searchpage-template', context); update_html_title('Result for ' + api_request_params.q); @@ -832,6 +873,7 @@ jQuery(document).ready(function () { $(document).on('click', 'a', function (e) { var target_url = $(this).attr('href'); if (!is_relative_url(target_url)) return; + if ($(this).parents('#last-updated').length !== 0) return; e.preventDefault(); e.stopPropagation();