X-Git-Url: https://git.openstreetmap.org./nominatim-ui.git/blobdiff_plain/c061d3fd3d4c9135fdbda0af273d9fc0dc5b5535..f5a2de8df679bee5d57eb4f4134143991bfbb137:/src/pages/DetailsPage.svelte
diff --git a/src/pages/DetailsPage.svelte b/src/pages/DetailsPage.svelte
index d480050..aa3670f 100644
--- a/src/pages/DetailsPage.svelte
+++ b/src/pages/DetailsPage.svelte
@@ -4,20 +4,22 @@
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 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) {
api_request_params = {
@@ -32,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)) {
@@ -43,156 +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;
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 | @@ -207,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} | ||||||
Place is not parent of other places | ||||||