X-Git-Url: https://git.openstreetmap.org/nominatim-ui.git/blobdiff_plain/9205d199f03bcd7055b41d674d0a138b799fe602..469a261a4d5b0cb38cb612e0b5f57c69d92b609b:/src/pages/DetailsPage.svelte diff --git a/src/pages/DetailsPage.svelte b/src/pages/DetailsPage.svelte index 7fb30b0..e5325e2 100644 --- a/src/pages/DetailsPage.svelte +++ b/src/pages/DetailsPage.svelte @@ -4,17 +4,20 @@ 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 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 base_url = window.location.search; + let base_url; let api_request_params; let api_request_finished = false; @@ -51,12 +54,22 @@ } } + function place_has_keywords(aThisPlace) { + // Return false if Nominatim API sends 'keywords: { name: [], address: [] }' + return ( + aThisPlace.keywords && aThisPlace.keywords.name && aThisPlace.keywords.address + && (aThisPlace.keywords.name.length > 0 || aThisPlace.keywords.address.length > 0) + ); + } + $: { let pageinfo = $page; if (pageinfo.tab === 'details') { loaddata(pageinfo.params); + base_url = window.location.search; } } + $: reverse_only = Nominatim_Config.Reverse_Only;
@@ -68,110 +81,58 @@

- {aPlace.localname} + {aPlace.localname || `${formatOSMType(aPlace.osm_type)} ${aPlace.osm_id}` } link to this page

-
+
- +
- - - - - - - - - - - - + + {#if (Array.isArray(aPlace.names)) } + No Name + {:else} + + {/if} + + {aPlace.category}:{aPlace.type} + {aPlace.indexed_date} {#if (isAdminBoundary(aPlace)) } - - - - + {aPlace.admin_level} {/if} - - - - - - - - + {aPlace.rank_search} + {aPlace.rank_address} ({formatAddressRank(aPlace.rank_address)}) {#if aPlace.calculated_importance} - - - - + {/if} - - - - - - - - - - - - - - - + + {@html osmLink(aPlace)} + + {aPlace.place_id} + (on this server) + {#if aPlace.calculated_wikipedia} - - - - + {@html wikipediaLink(aPlace)} {/if} - - - - - - - - - - - - + + {#if aPlace.calculated_postcode} + {aPlace.calculated_postcode} + + {/if} + + +
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 + {aPlace.calculated_importance} {#if !aPlace.importance} (estimated){/if} -
Coverage{coverageType(aPlace)}
Centre Point (lat,lon) + {coverageType(aPlace)} + {aPlace.centroid.coordinates[1]},{aPlace.centroid.coordinates[0]} -
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} -
@@ -199,59 +160,71 @@ {#if aPlace.address} {#each aPlace.address as addressLine} - + {/each} {/if} {#if aPlace.linked_places} -

Linked Places

+

Linked Places

{#each aPlace.linked_places as addressLine} - + {/each} {/if} -

Keywords

- {#if aPlace.keywords} -

Name Keywords

- {#each aPlace.keywords.name as keyword} - - {formatKeywordToken(keyword.token)} - {#if keyword.id} - word id: {keyword.id} - {/if} - - {/each} + {#if !reverse_only} +

Keywords

+ {#if api_request_params.keywords} -

Address Keywords

- {#each aPlace.keywords.address as keyword} - - {formatKeywordToken(keyword.token)} - {#if keyword.id} - word id: {keyword.id} + {#if place_has_keywords(aPlace)} +

Name Keywords

+ {#each aPlace.keywords.name as keyword} + + {formatKeywordToken(keyword.token)} + {#if keyword.id} + word id: {keyword.id} + {/if} + + {/each} + + {#if aPlace.keywords.address} +

Address Keywords

+ {#each aPlace.keywords.address as keyword} + + {formatKeywordToken(keyword.token)} + {#if keyword.id} + word id: {keyword.id} + {/if} + + {/each} {/if} - - {/each} - {:else} - - - display keywords - - + {:else} + Place has no keywords + {/if} + {:else} + + + display keywords + + + {/if} {/if} -

Parent Of

- {#if aPlace.hierarchy} - - {#each Object.keys(aPlace.hierarchy) as type} -

{type}

- {#each aPlace.hierarchy[type] as line} - - {/each} - {/each} +

Parent Of

+ {#if api_request_params.hierarchy} + {#if aPlace.hierarchy && typeof (aPlace.hierarchy) === 'object' && Object.keys(aPlace.hierarchy).length} + {#each Object.keys(aPlace.hierarchy) as type} +

{type}

+ {#each aPlace.hierarchy[type] as line} + + {/each} + {/each} - {#if Object.keys(aPlace.hierarchy) > 500} -

There are more child objects which are not shown.

+ {#if Object.keys(aPlace.hierarchy) > 500} +

There are more child objects which are not shown.

+ {/if} + {:else} + Place is not parent of other places {/if} {:else} @@ -301,20 +274,12 @@ border-top: none !important; padding-left: 0 !important; } - - .table { - width: 100%; - } - .table td { - font-size: 0.9em; - } - .table>thead>tr>th, .table>tbody>tr>td { - padding: 2px 8px; - } - .name{ - font-weight: bold; + :global(span.noname){ + color:#800; } + #map-wrapper { + position: relative; width:100%; min-height: auto; height:300px;