]> git.openstreetmap.org Git - nominatim-ui.git/blobdiff - src/templates/searchpage.hbs
Add interface for setting advanced search options (#38)
[nominatim-ui.git] / src / templates / searchpage.hbs
index d1d70ae252bcccb9b71c7b4c90d9acad31849fd6..c8f52810f5df1e66ad1d0bf77ed8388620f8e082 100644 (file)
 {{#*inline "partial_one_result"}}
   <div class="result" data-position="{{iResNum}}">
-    {{#if aResult.icon}}
-      {{!-- <img src="{{env.Images_Base_Url}}{{aResult.icon}}" /> --}}
-      {{formatMapIcon aResult.icon}}
-    {{/if}}
+    {{formatMapIcon aResult}}
 
     <span class="name">{{aResult.display_name}}</span>
     <span class="type">({{formatLabel aResult}})</span>
     <p class="coords">{{aResult.lat}},{{aResult.lon}}</p>  
 
-    <a class="btn btn-default btn-xs details"
-       href="details.html?osmtype={{shortOSMType aResult.osm_type}}&osmid={{aResult.osm_id}}">details</a>
+    <a class="details btn btn-outline-secondary btn-sm" href="{{detailsURL aResult}}">details</a>
   </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="radio-inline"><input type="radio" name="query-selector" id="simple" value="simple" {{#unless hStructured}}checked="checked"{{/unless}}>
-  <label for="simple">simple</label></div>
-  <div class="radio-inline"><input type="radio" name="query-selector" id="structured" value="structured" {{#if hStructured}}checked="checked"{{/if}}>
-  <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 href="details.html" class="mr-2">search by id</a>
+      <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 input-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}}" />
+          <input type="hidden" name="dedupe" value="{{sDedupe}}" />
+          <input type="hidden" name="bounded" value="{{sBounded}}" />
+          <input type="hidden" name="accept-language" value="{{sLang}}" />
+          <input type="hidden" name="countrycodes" value="{{sCCode}}" />
+          <input type="hidden" name="limit" value="{{sLimit}}" />
+          <input type="hidden" name="polygon_threshold" value="{{sPolyThreshold}}" />
+        </div>
+      </form>
     </div>
-    <div class="form-group-structured {{#unless hStructured}}hidden{{/unless}}">
-      <div class="form-inline">
-        <input name="street" type="text" class="form-control input-sm"
+    <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="city" type="text" class="form-control input-sm"
+        <input name="city" type="text" class="form-control form-control-sm mr-1"
                placeholder="City"
                value="{{hStructured.city}}" />
-        <input id="county" name="county" type="text" class="form-control input-sm"
+        <input id="county" name="county" type="text" class="form-control form-control-sm mr-1"
                placeholder="County"
                value="{{hStructured.county}}" />
-        <input name="state" type="text" class="form-control input-sm"
+        <input name="state" type="text" class="form-control form-control-sm mr-1"
                placeholder="State"
                value="{{hStructured.state}}" />
-        <input name="country" type="text" class="form-control input-sm"
+        <input name="country" type="text" class="form-control form-control-sm mr-1"
                placeholder="Country"
                value="{{hStructured.country}}" />
-        <input name="postalcode" type="text" class="form-control input-sm"
+        <input name="postalcode" type="text" class="form-control form-control-sm mr-1"
                placeholder="Postal Code"
                value="{{hStructured.postalcode}}" />
-      </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}}" />
+          <input type="hidden" name="dedupe" value="{{#unless sDedupe}}0{{/unless}}" />
+          <input type="hidden" name="bounded" value="{{#if sBounded}}1{{/if}}" />
+          <input type="hidden" name="accept-language" value="{{sLang}}" />
+          <input type="hidden" name="countrycodes" value="{{sCCode}}" />
+          <input type="hidden" name="limit" value="{{sLimit}}" />
+          <input type="hidden" name="polygon_threshold" value="{{sPolyThreshold}}" />
+        </div>
+      </form>
     </div>
-    <div class="form-group search-button-group">
-      <button type="submit" class="btn btn-primary btn-sm">Search</button>
-      {{#if env.Search_AreaPolygons}}
-        <input type="hidden" value="1" name="polygon_geojson" />
-      {{/if}}
-      <input type="hidden" name="viewbox" value="{{sViewBox}}" />
-      <div class="checkbox-inline">
-        <input type="checkbox"
-               id="use_viewbox" {{#if sViewBox}}checked="checked"{{/if}}>
-        <label for="use_viewbox">apply viewbox</label>
-      </div>
+    <!-- Additional options -->
+    <a class="btn btn-outline-secondary btn-sm" data-toggle="collapse" data-target="#searchAdvancedOptions" role="button" aria-expanded="false" aria-controls="collapseAdvancedOptions">
+      Advanced options
+    </a>
+    <div class="collapse" id="searchAdvancedOptions">
+      <div id="searchAdvancedOptionsContent">
+          <div class="form-check form-check-inline">
+            <span><input type="checkbox" class="form-check-input api-param-setting"
+                   id="use_viewbox" {{#if sViewBox}}checked="checked"{{/if}}>
+            <label class="form-check-label" for="use_viewbox">apply viewbox</label></span>
+            <span><input type="checkbox" class="form-check-input api-param-setting"
+                   id="option_bounded" {{#if sBounded}}checked="checked"{{/if}}>
+            <label class="form-check-label" for="option_bounded">bounded to viewbox</label></span>
+            <span><input type="checkbox" class="form-check-input api-param-setting"
+                   id="option_dedupe" {{#unless sDedupe}}checked="checked"{{/unless}}>
+            <label class="form-check-label" for="option_dedupe">deduplicate results</label></span>
+          </div>
+          <div class="form-check form-check-inline">
+            <span><label class="form-check-label" for="option_limit">Maximum number of results: </label>
+            <input type="number" class="form-check-input api-param-setting" data-api-param="limit" id="option_limit" size="5" min="1" max="50" value="{{sLimit}}"></span>
+            <span><label class="form-check-label" for="option_polygon_threashold">Polygon simplification: </label>
+            <input type="number" class="form-check-input api-param-setting" data-api-param="polygon_threshold" id="option_polygon_threshold" size="5" min="0.0" step="0.01" value="{{sPolyThreshold}}"></span>
+          </div>
+          <div class="form-check form-check-inline">
+            <span><label class="form-check-label" for="accept_lang">Languages: </label>
+            <input type="text" placeholder="e.g. en,zh-Hant" class="form-check-input api-param-setting" data-api-param="accept-language" id="accept_lang" size="15" value="{{sLang}}"></span>
+            <span><label class="form-check-label" for="option_ccode">Countries: </label>
+            <input type="text" placeholder="e.g. de,gb" class="form-check-input api-param-setting" data-api-param="countrycodes" id="option_ccode" size="15" value="{{sCCode}}"></span>
+          </div>
+       </div>
     </div>
-  </form>
-</div>
+  </div> <!-- /tab-content -->
+</div> <!-- /top-bar -->
 
 <div id="content">
 
-  {{#if sQuery}}
+  {{#if bSearchRan}}
     <div id="searchresults" class="sidebar">
       {{#each aSearchResults as |aResult|}}
         {{>partial_one_result iResNum=@index aResult=aResult env=env}}