X-Git-Url: https://git.openstreetmap.org./nominatim-ui.git/blobdiff_plain/42f03f0660c5815d4a5faeb4a1c087f507ff59a0..200f60bc3a38adc7ae5e9acbbbf0565b715bdb80:/src/pages/DetailsPage.svelte?ds=inline diff --git a/src/pages/DetailsPage.svelte b/src/pages/DetailsPage.svelte index 585ce3b..a8bb120 100644 --- a/src/pages/DetailsPage.svelte +++ b/src/pages/DetailsPage.svelte @@ -4,21 +4,25 @@ import { osmLink, wikipediaLink, coverageType, isAdminBoundary, - formatAddressRank, formatKeywordToken + formatAddressRank, formatKeywordToken, formatOSMType } from '../lib/helpers.js'; + import Header from '../components/Header.svelte'; import MapIcon from '../components/MapIcon.svelte'; - import DetailsIndex from '../components/DetailsIndex.svelte'; + import SearchSectionDetails from '../components/SearchSectionDetails.svelte'; import DetailsOneRow from '../components/DetailsOneRow.svelte'; import DetailsLink from '../components/DetailsLink.svelte'; + import DetailsPostcodeHint from '../components/DetailsPostcodeHint.svelte'; + import InfoRow from '../components/DetailsInfoRow.svelte'; + import InfoRowList from '../components/DetailsInfoRowList.svelte'; import Map from '../components/Map.svelte'; let aPlace; - let errorResponse; - let base_url = window.location.search; - let current_result; + let base_url; + let api_request_params; + let api_request_finished = false; function loaddata(search_params) { - var api_request_params = { + api_request_params = { place_id: search_params.get('place_id'), osmtype: search_params.get('osmtype'), osmid: search_params.get('osmid'), @@ -30,6 +34,7 @@ polygon_geojson: 1, format: 'json' }; + api_request_finished = false; if (api_request_params.place_id || (api_request_params.osmtype && api_request_params.osmid)) { @@ -41,153 +46,121 @@ fetch_from_api('details', api_request_params, function (data) { window.scrollTo(0, 0); - if (data.error) { - errorResponse = data; - current_result = undefined; - } else { - aPlace = data; - errorResponse = undefined; - current_result = data; - } + api_request_finished = true; + aPlace = (data && !data.error) ? data : undefined; }); } else { aPlace = undefined; } } + function place_has_keywords(aThisPlace) { + // Return false if Nominatim API sends 'keywords: { name: [], address: [] }' + // Like no longer needed after Nominatim version 4.3 + return ( + aThisPlace.keywords && aThisPlace.keywords.name && aThisPlace.keywords.address + && (aThisPlace.keywords.name.length > 0 || aThisPlace.keywords.address.length > 0) + ); + } + + function country_code(aThisPlace) { + let aLine = aThisPlace.address.find((address_line) => address_line.type === 'country_code'); + return aLine ? aLine.localname : null; + } + $: { let pageinfo = $page; if (pageinfo.tab === 'details') { loaddata(pageinfo.params); + base_url = window.location.search; } } + $: reverse_only = Nominatim_Config.Reverse_Only; -{#if errorResponse} - {errorResponse.error.message} -{/if} -{#if aPlace} -
Name | -
- {#each Object.keys(aPlace.names) as name}
-
- {aPlace.names[name]} ({name})
-
- {/each}
- |
-
Type | -{aPlace.category}:{aPlace.type} | -
Last Updated | -{aPlace.indexed_date} | -
Admin Level | -{aPlace.admin_level} | -
Search Rank | -{aPlace.rank_search} | -
Address Rank | -{aPlace.rank_address} ({formatAddressRank(aPlace.rank_address)}) | -
Importance | -
+ |
-
Coverage | -{coverageType(aPlace)} | -
Centre Point (lat,lon) | -
+ |
-
OSM | -{@html osmLink(aPlace)} - |
- Place Id - (on this server) - | -{aPlace.place_id} | -
Wikipedia Calculated | -{@html wikipediaLink(aPlace)} | -
Computed Postcode | -{aPlace.calculated_postcode} | -
Address Tags | -
- {#each Object.keys(aPlace.addresstags) as name}
-
- {aPlace.addresstags[name]} ({name})
-
- {/each}
- |
-
Extra Tags | -
- {#each Object.keys(aPlace.extratags) as name}
-
- {aPlace.extratags[name]} ({name})
-
- {/each}
- |
-
Local name | @@ -202,59 +175,77 @@||||||
---|---|---|---|---|---|---|
Linked Places | ||||||
Linked Places | ||||||
Keywords | ||||||
Name Keywords | ||||||
{formatKeywordToken(keyword.token)} | - {#if keyword.id} -word id: {keyword.id} | - {/if} -|||||
Keywords | ||||||
Address Keywords | ||||||
{formatKeywordToken(keyword.token)} | - {#if keyword.id} -word id: {keyword.id} | + {#if place_has_keywords(aPlace)} +|||||
Name Keywords | ||||||
{formatKeywordToken(keyword.token)} | + {#if keyword.id} +word id: {keyword.id} | + {/if} +|||||
Address Keywords | ||||||
{formatKeywordToken(keyword.token)} | + {#if keyword.id} +word id: {keyword.id} | + {/if} +|||||
- display keywords - | -||||||
Place has no keywords | ||||||
+ display keywords + | +||||||
Parent Of | ||||||
{type} | ||||||
Parent Of | ||||||
{type} | ||||||
There are more child objects which are not shown. | ||||||
Place is not parent of other places | ||||||