]> git.openstreetmap.org Git - nominatim-ui.git/commitdiff
details page: add -search by name- for address lines having no osm_id (#76)
authormtmail <mtmail@gmx.net>
Thu, 18 Feb 2021 15:31:34 +0000 (16:31 +0100)
committerGitHub <noreply@github.com>
Thu, 18 Feb 2021 15:31:34 +0000 (16:31 +0100)
src/components/DetailsOneRow.svelte
src/components/PageLink.svelte
src/lib/helpers.js

index 1ab566d57f70101595daa78bf8c84ad8f9ee1736..cd74d93ecdb65ccfef42f4fe9f0c287d3ba6a262 100644 (file)
@@ -1,19 +1,19 @@
 <script>
   import DetailsLink from '../components/DetailsLink.svelte';
+  import PageLink from '../components/PageLink.svelte';
+  import {
+    formatPlaceType, osmLink, formatAdminLevel, formatDistance
+  } from '../lib/helpers.js';
 
   export let addressLine;
   export let bDistanceInMeters;
 
   $: bAddressLineUsed = addressLine.isaddress;
 
-  import {
-    formatPlaceType, osmLink, formatAdminLevel, formatDistance
-  } from '../lib/helpers.js';
-
 </script>
 
 <tr class:notused={!bAddressLineUsed}>
-  <td class="name">
+  <td class="name font-weight-bold">
     {#if addressLine.localname}
       {addressLine.localname}
     {:else}
   <td>{addressLine.rank_address}</td>
   <td>{formatAdminLevel(addressLine.admin_level)}</td>
   <td>{@html formatDistance(addressLine.distance, bDistanceInMeters)}</td>
-  <td>{#if addressLine.osm_id}<DetailsLink feature={addressLine}>details</DetailsLink>{/if}</td>
+  <td>
+    {#if addressLine.osm_id}
+      <DetailsLink feature={addressLine}>details</DetailsLink>
+    {:else if addressLine.type.match(/^country/)}
+      <PageLink page='search', params_hash={{ country: addressLine.localname }}>search by name</PageLink>
+    {:else if addressLine.type === 'postcode'}
+      <PageLink page='search', params_hash={{ postalcode: addressLine.localname }}>search by name</PageLink>
+    {/if}
+  </td>
 </tr>
 
 <style>
   .notused {
     color:#ddd;
   }
-  .name{
-    font-weight: bold;
-  }
   .noname{
     color:#800;
   }
index bccddf2bb9056c988888274efcb3628dc0e6a837..df124f70e7e0a69e313e22712b76f02557e25fdb 100644 (file)
@@ -1,12 +1,19 @@
 <script>
-import { refresh_page } from '../lib/stores.js';
+  import { refresh_page } from '../lib/stores.js';
 
-export let page;
-export let extra_classes = '';
+  export let page;
+  export let params_hash = {};
+  export let extra_classes = '';
+  let href = page + '.html';
 
-function handleClick() {
-  refresh_page(page);
-}
+  function handleClick() {
+    refresh_page(page, new URLSearchParams(params_hash));
+  }
+
+  $: {
+    let param_str = new URLSearchParams(params_hash).toString();
+    href = page + '.html' + (param_str ? '?' : '') + param_str;
+  }
 </script>
 
-<a on:click|preventDefault|stopPropagation={handleClick} href="{page}.html" class={extra_classes}><slot></slot></a>
+<a on:click|preventDefault|stopPropagation={handleClick} href={href} class={extra_classes}><slot></slot></a>
index cbbdbc98ed81822d718d26523855ba0d1a6a9de1..a2e5d82c78d2bebc1427e167065e07a90edcc6d8 100644 (file)
@@ -100,7 +100,7 @@ function formatPlaceType(aPlace) {
 
 // Any over 15 are invalid data in OSM anyway
 function formatAdminLevel(iLevel) {
-  return (iLevel < 15 ? iLevel : '');
+  return (iLevel && iLevel < 15 ? iLevel : '');
 }
 
 function formatDistance(fDistance, bInMeters) {