]> git.openstreetmap.org Git - nominatim-ui.git/blobdiff - src/components/LastUpdated.svelte
Rebundle latest version
[nominatim-ui.git] / src / components / LastUpdated.svelte
index 3f914cebffe9faa546097f8dbb643f5f50ebcb0d..0d7768d3f34d76ac36d0a2d7f9840bb1c9f5582f 100644 (file)
@@ -1,15 +1,29 @@
 <script>
 <script>
+  import PageLink from './PageLink.svelte';
   import * as timeago from 'timeago.js';
   import { last_api_request_url_store } from '../lib/stores.js';
   import { fetch_from_api } from '../lib/api_utils.js';
 
   let last_updated_date;
   let last_api_request_url;
   import * as timeago from 'timeago.js';
   import { last_api_request_url_store } from '../lib/stores.js';
   import { fetch_from_api } from '../lib/api_utils.js';
 
   let last_updated_date;
   let last_api_request_url;
+  let fetch_running = false; // prevent multiple parallel fetch runs
 
   last_api_request_url_store.subscribe(url => {
     last_api_request_url = url;
 
   last_api_request_url_store.subscribe(url => {
     last_api_request_url = url;
+
+    if (last_api_request_url) {
+      last_api_request_url = new URL(last_api_request_url, window.location.origin);
+      last_api_request_url.searchParams.delete('polygon_geojson');
+      last_api_request_url = last_api_request_url.toString();
+    }
+
+    if (fetch_running || last_updated_date) return;
+
+    fetch_running = true;
+
     fetch_from_api('status', { format: 'json' }, function (data) {
       last_updated_date = data.data_updated;
     fetch_from_api('status', { format: 'json' }, function (data) {
       last_updated_date = data.data_updated;
+      fetch_running = false;
     });
   });
 </script>
     });
   });
 </script>
@@ -34,7 +48,7 @@
 
 <div id="last-updated" class="container-fluid py-2 px-4 mb-3">
   <div id="loading" class="py-2 px-4">
 
 <div id="last-updated" class="container-fluid py-2 px-4 mb-3">
   <div id="loading" class="py-2 px-4">
-    <div class="spinner-border spinner-border-sm text-primary mr-1" role="status"></div>
+    <div class="spinner-border spinner-border-sm text-primary me-1" role="status"></div>
     Loading data from API ...
   </div>
   <div class="row">
     Loading data from API ...
   </div>
   <div class="row">
         </div>
       {/if}
     </div>
         </div>
       {/if}
     </div>
-    <div class="col-sm-6 text-right">
+    <div class="col-sm-6 text-end">
       {#if last_updated_date}
         Data last updated:
       {#if last_updated_date}
         Data last updated:
-        <abbr id="data-date" title="{last_updated_date} (UTC timezone)">{timeago.format(new Date(last_updated_date))}</abbr>
+        <abbr id="data-date" title="{last_updated_date} (UTC timezone)">
+          {timeago.format(new Date(last_updated_date))}
+        </abbr>
       {/if}
       {/if}
+      (<PageLink page="status">Details</PageLink>)
     </div>
   </div>
 </div>
     </div>
   </div>
 </div>