<script>
- import { onMount } from 'svelte';
import { fetch_from_api, update_html_title } from '../lib/api_utils.js';
- import { current_result_store } from '../lib/stores.js';
+ import { page } from '../lib/stores.js';
- import { osmLink, detailsURL, wikipediaLink, coverageType, isAdminBoundary, formatAddressRank, formatKeywordToken } from '../lib/helpers.js';
+ import {
+ osmLink, wikipediaLink, coverageType, isAdminBoundary,
+ formatAddressRank, formatKeywordToken
+ } 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 Map from '../components/Map.svelte';
let aPlace;
+ let errorResponse;
let base_url = window.location.search;
+ let current_result;
+ let api_request_params;
- function loaddata() {
-
- var search_params = new URLSearchParams(window.location.search);
-
- var api_request_params = {
+ function loaddata(search_params) {
+ api_request_params = {
place_id: search_params.get('place_id'),
osmtype: search_params.get('osmtype'),
osmid: search_params.get('osmid'),
update_html_title('Details for ' + api_request_params.osmtype + api_request_params.osmid);
}
- fetch_from_api('details', api_request_params, function(data){
- aPlace = data;
- current_result_store.set(data);
+ 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;
+ }
});
} else {
aPlace = undefined;
}
}
- onMount(loaddata);
+ $: {
+ let pageinfo = $page;
+ if (pageinfo.tab === 'details') {
+ loaddata(pageinfo.params);
+ }
+ }
</script>
+<Header>
+ <SearchSectionDetails api_request_params={api_request_params}/>
+</Header>
+{#if errorResponse}
+ {errorResponse.error.message}
+{/if}
{#if aPlace}
<div class="container">
<div class="row">
<div class="col-sm-10">
<h1>
{aPlace.localname}
- <small><a href="{detailsURL(aPlace)}">link to this page</a></small>
+ <small><DetailsLink feature={aPlace}>link to this page</DetailsLink></small>
</h1>
</div>
<div class="col-sm-2 text-right">
</div>
<div class="col-md-6">
<div id="map-wrapper">
- <Map/>
+ <Map {current_result} />
</div>
</div>
</div>
</div>
</div>
</div>
-{:else if (location.search === '')}
- <DetailsIndex/>
+{:else if (window.location.search === '')}
+ <!-- <DetailsIndex/> -->
{:else}
No such place found.
{/if}
padding-left: 8px;
}
- h1 small a {
+ h1 small :global(a) {
font-size: 0.5em;
white-space: nowrap;
}
height:300px;
border: 1px solid #666;
}
-</style>
\ No newline at end of file
+</style>