]> git.openstreetmap.org Git - nominatim-ui.git/blobdiff - src/lib/api_utils.js
version 2.1.0
[nominatim-ui.git] / src / lib / api_utils.js
index 9939b614949443114c6f42183336ffd060cd16b9..0317e13c031fccc7471f4f9edc3029710cf546cc 100644 (file)
@@ -1,37 +1,34 @@
 
 import { get_config_value } from './config_reader.js';
 
 import { get_config_value } from './config_reader.js';
-import { last_updated_store } from './stores.js';
+import { last_api_request_url_store } from './stores.js';
 
 
 
 
+function api_request_progress(status) {
+  var loading_el = document.getElementById('loading');
+  if (!loading_el) return; // might not be on page yet
+
+  loading_el.style.display = (status === 'start') ? 'block' : 'none';
+}
 
 export async function fetch_from_api(endpoint_name, params, callback) {
   var api_url = generate_nominatim_api_url(endpoint_name, params);
 
 
 export async function fetch_from_api(endpoint_name, params, callback) {
   var api_url = generate_nominatim_api_url(endpoint_name, params);
 
-  document.getElementById('loading').style.display = 'block';
+  api_request_progress('start');
+
   await fetch(api_url)
     .then(response => response.json())
     .then(data => {
       callback(data);
   await fetch(api_url)
     .then(response => response.json())
     .then(data => {
       callback(data);
-      document.getElementById('loading').style.display = 'none';
+      api_request_progress('finish');
     });
 
     });
 
-
-  fetch(generate_nominatim_api_url('status', {format: 'json'}))
-    .then(response => response.json())
-    .then(data => {
-      let last_updated = {
-        api_request_url: api_url,
-        api_request_url_debug: api_url + '&debug=1',
-        date: data.data_updated
-      };
-      last_updated_store.set(last_updated)
-    });
+  if (endpoint_name !== 'status') last_api_request_url_store.set(api_url);
 }
 
 function generate_nominatim_api_url(endpoint_name, params) {
   return get_config_value('Nominatim_API_Endpoint') + endpoint_name + '.php?'
 }
 
 function generate_nominatim_api_url(endpoint_name, params) {
   return get_config_value('Nominatim_API_Endpoint') + endpoint_name + '.php?'
-         + Object.keys(clean_up_parameters(params)).map( (k) => {
-           return encodeURIComponent(k) + '=' + encodeURIComponent(params[k])
+         + Object.keys(clean_up_parameters(params)).map((k) => {
+           return encodeURIComponent(k) + '=' + encodeURIComponent(params[k]);
          }).join('&');
 }
 
          }).join('&');
 }
 
@@ -44,7 +41,7 @@ function generate_nominatim_api_url(endpoint_name, params) {
 export function serialize_form(form) {
   var arr = [];
   Array.prototype.slice.call(form.elements).forEach(function (field) {
 export function serialize_form(form) {
   var arr = [];
   Array.prototype.slice.call(form.elements).forEach(function (field) {
-    if (!field.name || field.disabled || ['file', 'reset', 'submit', 'button'].indexOf(field.type) > -1) return;
+    if (!field.name || field.disabled || ['submit', 'button'].indexOf(field.type) > -1) return;
     // if (field.type === 'select-multiple') {
     //   Array.prototype.slice.call(field.options).forEach(function (option) {
     //     if (!option.selected) return;
     // if (field.type === 'select-multiple') {
     //   Array.prototype.slice.call(field.options).forEach(function (option) {
     //     if (!option.selected) return;
@@ -52,12 +49,12 @@ export function serialize_form(form) {
     //   });
     //   return;
     // }
     //   });
     //   return;
     // }
-    if (['checkbox', 'radio'].indexOf(field.type) >-1 && !field.checked) return;
-    if (typeof(field.value) === 'undefined') return;
+    if (['checkbox', 'radio'].indexOf(field.type) > -1 && !field.checked) return;
+    if (typeof field.value === 'undefined') return;
     arr.push(encodeURIComponent(field.name) + '=' + encodeURIComponent(field.value));
   });
   return arr.join('&');
     arr.push(encodeURIComponent(field.name) + '=' + encodeURIComponent(field.value));
   });
   return arr.join('&');
-};
+}
 
 
 // remove any URL paramters with empty values
 
 
 // remove any URL paramters with empty values
@@ -88,7 +85,7 @@ function clean_up_parameters(params) {
 
 export function update_html_title(title) {
   document.title = [title, 'OpenStreetMap Nominatim']
 
 export function update_html_title(title) {
   document.title = [title, 'OpenStreetMap Nominatim']
-                     .filter( (val) => val && val.length > 1 )
-                     .join(' | ');
+    .filter((val) => val && val.length > 1)
+    .join(' | ');
 }
 
 }