]> git.openstreetmap.org Git - nominatim-ui.git/blob - src/assets/js/controller.js
4070d09ec79ff4164df14897a6602d271b323fc7
[nominatim-ui.git] / src / assets / js / controller.js
1 jQuery(document).ready(function () {
2   var myhistory = [];
3
4   function parse_url_and_load_page() {
5     // 'search', 'reverse', 'details'
6     var pagename = window.location.pathname.replace('.html', '').replace(/^\//, '');
7
8     $('body').attr('id', pagename + '-page');
9
10     if (pagename === 'search' || pagename === 'reverse') {
11       search_page_load();
12     } else if (pagename === 'details') {
13       details_page_load();
14     } else if (pagename === 'deletable') {
15       deletable_page_load();
16     } else if (pagename === 'polygons') {
17       polygons_page_load();
18     }
19   }
20
21   function is_relative_url(url) {
22     if (!url) return false;
23     if (url.indexOf('?') === 0) return true;
24     if (url.indexOf('/') === 0) return true;
25     if (url.match(/^http/)) return false;
26     if (!url.match(/\.html/)) return true;
27
28     return false;
29   }
30
31   parse_url_and_load_page();
32
33   // load page after form submit
34   $(document).on('submit', 'form', function (e) {
35     e.preventDefault();
36
37     window.history.pushState(myhistory, '', '?' + $(this).serialize());
38
39     parse_url_and_load_page();
40   });
41
42   // load page after click on relative URL
43   $(document).on('click', 'a', function (e) {
44     var target_url = $(this).attr('href');
45     if (!is_relative_url(target_url)) return;
46
47     e.preventDefault();
48     e.stopPropagation();
49
50     window.history.pushState(myhistory, '', target_url);
51
52     parse_url_and_load_page();
53   });
54
55   // deal with back-button and other user action
56   window.onpopstate = function () {
57     parse_url_and_load_page();
58   };
59 });
60