]> git.openstreetmap.org Git - nominatim-ui.git/commitdiff
forward search: use tabs to switch between simple and structured
authormarc tobias <mtmail@gmx.net>
Sat, 20 Jun 2020 20:53:06 +0000 (22:53 +0200)
committermarc tobias <mtmail@gmx.net>
Sat, 20 Jun 2020 20:58:38 +0000 (22:58 +0200)
dist/assets/css/search.css
dist/assets/js/nominatim-ui.js
dist/search.html
dist/searchpage.hbs
src/assets/css/search.css
src/assets/js/searchpage.js
src/templates/searchpage.hbs

index 0e7d4376ae9905bf15be589bb709d0b3b2bda69d..dc3e54b7c0b7bb4c83735dce87b9614461b53ef1 100755 (executable)
@@ -7,9 +7,9 @@
   max-width: 500px;
 }
 
-.form-group-simple.hidden,
-.form-group-structured.hidden {
-  display: none;
+.tab-content {
+  border: 1px solid #ddd;
+  border-top: none;
 }
 
 form #q {
index 05019aa87ba63d7e7da6f95df422c1b644f8d4eb..9fff0c70342ea8431bf01def36f56e78de95ac65 100644 (file)
@@ -428,20 +428,6 @@ function init_map_on_search_page(is_reverse_search, nominatim_results, request_l
     update_viewbox_field();
   });
 
-  $("input[name='query-selector']").click(function () {
-    var query_val = $("input[name='query-selector']:checked").val();
-    if (query_val === 'simple') {
-      $('div.form-group-simple').removeClass('hidden');
-      $('div.form-group-structured').addClass('hidden');
-      $('.form-group-structured').find('input:text').val('');
-    } else if (query_val === 'structured') {
-      console.log('here');
-      $('div.form-group-simple').addClass('hidden');
-      $('div.form-group-structured').removeClass('hidden');
-      $('.form-group-simple').find('input:text').val('');
-    }
-  });
-
   function get_result_element(position) {
     return $('.result').eq(position);
   }
index afb6c33adb69e28514e988e0fb1b0d0622f374a9..e8aa46ac2d7aebe50d83b1ec912753ddcacff6d2 100644 (file)
   </div>
 {{/inline}}
 
-<div class="top-bar" id="structured-query-selector">
-  <div class="search-type-link">
-    <a id="switch-to-reverse" href="/reverse.html">reverse search</a>
-  </div>
-  <div class="form-check form-check-inline">
-    <input class="form-check-input" type="radio" name="query-selector"
-           id="simple" value="simple" {{#unless hStructured}}checked="checked"{{/unless}}>
-    <label class="form-check-label" for="simple">simple</label>
-  </div>
-  <div class="form-check form-check-inline">
-    <input class="form-check-input" type="radio" name="query-selector"
-            id="structured" value="structured" {{#if hStructured}}checked="checked"{{/if}}>
-    <label class="form-check-label" for="structured">structured</label>
-  </div>
-
-  <form class="form-inline" role="search" accept-charset="UTF-8" action="">
-    <div class="form-group-simple {{#if hStructured}}hidden{{/if}}">
-      <input id="q"
-             name="q"
-             type="text"
-             class="form-control form-control-sm"
-             placeholder="Search"
-             value="{{sQuery}}" />
+<div class="top-bar">
+  <ul class="nav nav-tabs">
+    <li class="nav-item">
+      <a class="nav-link {{#unless hStructured}}active{{/unless}}" data-toggle="tab" href="#simple">simple</a>
+    </li>
+    <li class="nav-item">
+      <a class="nav-link {{#if hStructured}}active{{/if}}" data-toggle="tab" href="#structured">structured</a>
+    </li>
+    <div class="search-type-link">
+      <a id="switch-to-reverse" href="/reverse.html">reverse search</a>
+    </div>
+  </ul>
+  <div class="tab-content p-2">
+    <div class="tab-pane {{#unless hStructured}}active{{/unless}}" id="simple" role="tabpanel">
+      <form class="form-inline" role="search" accept-charset="UTF-8" action="">
+        <input id="q"
+               name="q"
+               type="text"
+               class="form-control form-control-sm"
+               placeholder="Search"
+               value="{{sQuery}}" />
+
+        <div class="form-group search-button-group">
+          <button type="submit" class="btn btn-primary btn-sm mx-1">Search</button>
+          <input type="hidden" name="viewbox" value="{{sViewBox}}" />
+          <div class="form-check form-check-inline">
+            <input type="checkbox" class="form-check-input"
+                   id="use_viewbox" {{#if sViewBox}}checked="checked"{{/if}}>
+            <label class="form-check-label" for="use_viewbox">apply viewbox</label>
+          </div>
+        </div>
+      </form>
     </div>
-    <div class="form-group-structured {{#unless hStructured}}hidden{{/unless}}">
-      <div class="form-inline">
+    <div class="tab-pane {{#if hStructured}}active{{/if}}" id="structured" role="tabpanel">
+      <form class="form-inline" role="search" accept-charset="UTF-8" action="">
         <input name="street" type="text" class="form-control form-control-sm mr-1"
                placeholder="House number/Street"
                value="{{hStructured.street}}" />
         <input name="postalcode" type="text" class="form-control form-control-sm mr-1"
                placeholder="Postal Code"
                value="{{hStructured.postalcode}}" />
-      </div>
-    </div>
-    <div class="form-group search-button-group">
-            <button type="submit" class="btn btn-primary btn-sm mx-1">Search</button>
-      <input type="hidden" name="viewbox" value="{{sViewBox}}" />
-      <div class="form-check form-check-inline">
-        <input type="checkbox" class="form-check-input"
-               id="use_viewbox" {{#if sViewBox}}checked="checked"{{/if}}>
-        <label class="form-check-label" for="use_viewbox">apply viewbox</label>
-      </div>
+
+        <div class="form-group search-button-group">
+          <button type="submit" class="btn btn-primary btn-sm mx-1">Search</button>
+          <input type="hidden" name="viewbox" value="{{sViewBox}}" />
+          <div class="form-check form-check-inline">
+            <input type="checkbox" class="form-check-input"
+                   id="use_viewbox" {{#if sViewBox}}checked="checked"{{/if}}>
+            <label class="form-check-label" for="use_viewbox">apply viewbox</label>
+          </div>
+        </div>
+      </form>
     </div>
-  </form>
-</div>
+  </div> <!-- /tab-content -->
+</div> <!-- /top-bar -->
 
 <div id="content">
 
index 7451398d88c148222ec792eaf6a29aa7397ed56f..ce2fc473c1cbc083689d194281f44c24a0c51007 100644 (file)
   </div>
 {{/inline}}
 
-<div class="top-bar" id="structured-query-selector">
-  <div class="search-type-link">
-    <a id="switch-to-reverse" href="/reverse.html">reverse search</a>
-  </div>
-  <div class="form-check form-check-inline">
-    <input class="form-check-input" type="radio" name="query-selector"
-           id="simple" value="simple" {{#unless hStructured}}checked="checked"{{/unless}}>
-    <label class="form-check-label" for="simple">simple</label>
-  </div>
-  <div class="form-check form-check-inline">
-    <input class="form-check-input" type="radio" name="query-selector"
-            id="structured" value="structured" {{#if hStructured}}checked="checked"{{/if}}>
-    <label class="form-check-label" for="structured">structured</label>
-  </div>
+<div class="top-bar">
+  <ul class="nav nav-tabs">
+    <li class="nav-item">
+      <a class="nav-link {{#unless hStructured}}active{{/unless}}" data-toggle="tab" href="#simple">simple</a>
+    </li>
+    <li class="nav-item">
+      <a class="nav-link {{#if hStructured}}active{{/if}}" data-toggle="tab" href="#structured">structured</a>
+    </li>
+    <div class="search-type-link">
+      <a id="switch-to-reverse" href="/reverse.html">reverse search</a>
+    </div>
+  </ul>
+  <div class="tab-content p-2">
+    <div class="tab-pane {{#unless hStructured}}active{{/unless}}" id="simple" role="tabpanel">
+      <form class="form-inline" role="search" accept-charset="UTF-8" action="">
+        <input id="q"
+               name="q"
+               type="text"
+               class="form-control form-control-sm"
+               placeholder="Search"
+               value="{{sQuery}}" />
 
-  <form class="form-inline" role="search" accept-charset="UTF-8" action="">
-    <div class="form-group-simple {{#if hStructured}}hidden{{/if}}">
-      <input id="q"
-             name="q"
-             type="text"
-             class="form-control form-control-sm"
-             placeholder="Search"
-             value="{{sQuery}}" />
+        <div class="form-group search-button-group">
+          <button type="submit" class="btn btn-primary btn-sm mx-1">Search</button>
+          <input type="hidden" name="viewbox" value="{{sViewBox}}" />
+          <div class="form-check form-check-inline">
+            <input type="checkbox" class="form-check-input"
+                   id="use_viewbox" {{#if sViewBox}}checked="checked"{{/if}}>
+            <label class="form-check-label" for="use_viewbox">apply viewbox</label>
+          </div>
+        </div>
+      </form>
     </div>
-    <div class="form-group-structured {{#unless hStructured}}hidden{{/unless}}">
-      <div class="form-inline">
+    <div class="tab-pane {{#if hStructured}}active{{/if}}" id="structured" role="tabpanel">
+      <form class="form-inline" role="search" accept-charset="UTF-8" action="">
         <input name="street" type="text" class="form-control form-control-sm mr-1"
                placeholder="House number/Street"
                value="{{hStructured.street}}" />
         <input name="postalcode" type="text" class="form-control form-control-sm mr-1"
                placeholder="Postal Code"
                value="{{hStructured.postalcode}}" />
-      </div>
-    </div>
-    <div class="form-group search-button-group">
-            <button type="submit" class="btn btn-primary btn-sm mx-1">Search</button>
-      <input type="hidden" name="viewbox" value="{{sViewBox}}" />
-      <div class="form-check form-check-inline">
-        <input type="checkbox" class="form-check-input"
-               id="use_viewbox" {{#if sViewBox}}checked="checked"{{/if}}>
-        <label class="form-check-label" for="use_viewbox">apply viewbox</label>
-      </div>
+
+        <div class="form-group search-button-group">
+          <button type="submit" class="btn btn-primary btn-sm mx-1">Search</button>
+          <input type="hidden" name="viewbox" value="{{sViewBox}}" />
+          <div class="form-check form-check-inline">
+            <input type="checkbox" class="form-check-input"
+                   id="use_viewbox" {{#if sViewBox}}checked="checked"{{/if}}>
+            <label class="form-check-label" for="use_viewbox">apply viewbox</label>
+          </div>
+        </div>
+      </form>
     </div>
-  </form>
-</div>
+  </div> <!-- /tab-content -->
+</div> <!-- /top-bar -->
 
 <div id="content">
 
index 0e7d4376ae9905bf15be589bb709d0b3b2bda69d..dc3e54b7c0b7bb4c83735dce87b9614461b53ef1 100755 (executable)
@@ -7,9 +7,9 @@
   max-width: 500px;
 }
 
-.form-group-simple.hidden,
-.form-group-structured.hidden {
-  display: none;
+.tab-content {
+  border: 1px solid #ddd;
+  border-top: none;
 }
 
 form #q {
index 5455f8e8f6dc542170c4569f4b63cff4cb8d25a9..a315338d989db38139f7779127b7fb8bf2416422 100755 (executable)
@@ -170,20 +170,6 @@ function init_map_on_search_page(is_reverse_search, nominatim_results, request_l
     update_viewbox_field();
   });
 
-  $("input[name='query-selector']").click(function () {
-    var query_val = $("input[name='query-selector']:checked").val();
-    if (query_val === 'simple') {
-      $('div.form-group-simple').removeClass('hidden');
-      $('div.form-group-structured').addClass('hidden');
-      $('.form-group-structured').find('input:text').val('');
-    } else if (query_val === 'structured') {
-      console.log('here');
-      $('div.form-group-simple').addClass('hidden');
-      $('div.form-group-structured').removeClass('hidden');
-      $('.form-group-simple').find('input:text').val('');
-    }
-  });
-
   function get_result_element(position) {
     return $('.result').eq(position);
   }
index 7451398d88c148222ec792eaf6a29aa7397ed56f..ce2fc473c1cbc083689d194281f44c24a0c51007 100644 (file)
   </div>
 {{/inline}}
 
-<div class="top-bar" id="structured-query-selector">
-  <div class="search-type-link">
-    <a id="switch-to-reverse" href="/reverse.html">reverse search</a>
-  </div>
-  <div class="form-check form-check-inline">
-    <input class="form-check-input" type="radio" name="query-selector"
-           id="simple" value="simple" {{#unless hStructured}}checked="checked"{{/unless}}>
-    <label class="form-check-label" for="simple">simple</label>
-  </div>
-  <div class="form-check form-check-inline">
-    <input class="form-check-input" type="radio" name="query-selector"
-            id="structured" value="structured" {{#if hStructured}}checked="checked"{{/if}}>
-    <label class="form-check-label" for="structured">structured</label>
-  </div>
+<div class="top-bar">
+  <ul class="nav nav-tabs">
+    <li class="nav-item">
+      <a class="nav-link {{#unless hStructured}}active{{/unless}}" data-toggle="tab" href="#simple">simple</a>
+    </li>
+    <li class="nav-item">
+      <a class="nav-link {{#if hStructured}}active{{/if}}" data-toggle="tab" href="#structured">structured</a>
+    </li>
+    <div class="search-type-link">
+      <a id="switch-to-reverse" href="/reverse.html">reverse search</a>
+    </div>
+  </ul>
+  <div class="tab-content p-2">
+    <div class="tab-pane {{#unless hStructured}}active{{/unless}}" id="simple" role="tabpanel">
+      <form class="form-inline" role="search" accept-charset="UTF-8" action="">
+        <input id="q"
+               name="q"
+               type="text"
+               class="form-control form-control-sm"
+               placeholder="Search"
+               value="{{sQuery}}" />
 
-  <form class="form-inline" role="search" accept-charset="UTF-8" action="">
-    <div class="form-group-simple {{#if hStructured}}hidden{{/if}}">
-      <input id="q"
-             name="q"
-             type="text"
-             class="form-control form-control-sm"
-             placeholder="Search"
-             value="{{sQuery}}" />
+        <div class="form-group search-button-group">
+          <button type="submit" class="btn btn-primary btn-sm mx-1">Search</button>
+          <input type="hidden" name="viewbox" value="{{sViewBox}}" />
+          <div class="form-check form-check-inline">
+            <input type="checkbox" class="form-check-input"
+                   id="use_viewbox" {{#if sViewBox}}checked="checked"{{/if}}>
+            <label class="form-check-label" for="use_viewbox">apply viewbox</label>
+          </div>
+        </div>
+      </form>
     </div>
-    <div class="form-group-structured {{#unless hStructured}}hidden{{/unless}}">
-      <div class="form-inline">
+    <div class="tab-pane {{#if hStructured}}active{{/if}}" id="structured" role="tabpanel">
+      <form class="form-inline" role="search" accept-charset="UTF-8" action="">
         <input name="street" type="text" class="form-control form-control-sm mr-1"
                placeholder="House number/Street"
                value="{{hStructured.street}}" />
         <input name="postalcode" type="text" class="form-control form-control-sm mr-1"
                placeholder="Postal Code"
                value="{{hStructured.postalcode}}" />
-      </div>
-    </div>
-    <div class="form-group search-button-group">
-            <button type="submit" class="btn btn-primary btn-sm mx-1">Search</button>
-      <input type="hidden" name="viewbox" value="{{sViewBox}}" />
-      <div class="form-check form-check-inline">
-        <input type="checkbox" class="form-check-input"
-               id="use_viewbox" {{#if sViewBox}}checked="checked"{{/if}}>
-        <label class="form-check-label" for="use_viewbox">apply viewbox</label>
-      </div>
+
+        <div class="form-group search-button-group">
+          <button type="submit" class="btn btn-primary btn-sm mx-1">Search</button>
+          <input type="hidden" name="viewbox" value="{{sViewBox}}" />
+          <div class="form-check form-check-inline">
+            <input type="checkbox" class="form-check-input"
+                   id="use_viewbox" {{#if sViewBox}}checked="checked"{{/if}}>
+            <label class="form-check-label" for="use_viewbox">apply viewbox</label>
+          </div>
+        </div>
+      </form>
     </div>
-  </form>
-</div>
+  </div> <!-- /tab-content -->
+</div> <!-- /top-bar -->
 
 <div id="content">