X-Git-Url: https://git.openstreetmap.org./nominatim-ui.git/blobdiff_plain/d7fc469d21068cd4812ede69677490c96292dd6d..23ad83a45b7cb0fb0c07109230e869ab2cb7b3b5:/src/lib/stores.js diff --git a/src/lib/stores.js b/src/lib/stores.js index 03f32cc..5e755c1 100644 --- a/src/lib/stores.js +++ b/src/lib/stores.js @@ -1,4 +1,5 @@ import { writable } from 'svelte/store'; +import { identifyLinkInQuery } from './helpers.js'; export const map_store = writable(); export const results_store = writable(); @@ -16,16 +17,27 @@ export const page = writable(); * the requested query parameters. It may also be omitted completely for a * link without query parameters. */ -const pagenames = ['search', 'reverse', 'details', 'deletable', 'polygons', 'status', 'about']; +const default_pagename = Nominatim_Config.Reverse_Only ? 'reverse' : 'search'; +const pagenames = [ + default_pagename, + 'reverse', + 'details', + 'deletable', + 'polygons', + 'status', + 'about' +]; export function refresh_page(pagename, params) { if (typeof pagename === 'undefined') { pagename = window.location.pathname.replace('.html', '').replace(/^.*\//, ''); - if (!pagenames.includes(pagename)) pagename = 'search'; + if (!pagenames.includes(pagename)) pagename = default_pagename; params = new URLSearchParams(window.location.search); } else { + if (!pagenames.includes(pagename)) pagename = default_pagename; + if (typeof params === 'undefined') { params = new URLSearchParams(); } @@ -43,6 +55,16 @@ export function refresh_page(pagename, params) { } } + if (pagename === 'search' && params.has('q')) { + const arrTypeAndId = identifyLinkInQuery(params.get('q')); + if (arrTypeAndId instanceof Array) { + pagename = 'details'; + params = new URLSearchParams(); + params.set('osmtype', arrTypeAndId[0]); + params.set('osmid', arrTypeAndId[1]); + } + } + page.set({ tab: pagename, params: params }); last_api_request_url_store.set(null); error_store.set(null);