]> git.openstreetmap.org Git - nominatim-ui.git/commitdiff
On Search page the 'deduplication' checkbox needs to be checked by default
authorMarc Tobias <mtmail@gmx.net>
Mon, 4 Apr 2022 22:50:30 +0000 (23:50 +0100)
committermtmail <mtmail@gmx.net>
Tue, 5 Apr 2022 18:33:19 +0000 (20:33 +0200)
CHANGES.md
package.json
src/components/SearchSection.svelte
src/components/UrlSubmitForm.svelte
src/lib/api_utils.js
src/pages/SearchPage.svelte
test/search.js

index 8490af6bd52e252eaae26a9543b729157b6055ea..ca94529197d38c4f9b4f5e4b86d6c44ecc036cd0 100644 (file)
@@ -1,5 +1,9 @@
 # CHANGES
 
+* version 3.2.2 - 2022-04-05
+
+    * Fix: On Search page the 'deduplication' checkbox needs to be checked by default
+
 * version 3.2.1 - 2021-05-11
 
     * Fix: some npm modules no longer support node version 10
index fcc6fe2a8f9f0d795cb2b6e3a91180fcbc081102..a1b31032c956d65b7476b5d989318f55fb043483 100644 (file)
@@ -1,7 +1,7 @@
 {
   "name": "nominatim-ui",
   "description": "Debug web interface for Nominatim geocoder",
-  "version": "3.2.1",
+  "version": "3.2.2",
   "license": "GPL-2.0",
   "scripts": {
     "build": "rollup -c",
index 6bf7bca0f2a06bcc1493c1a00d86e909c5daf6af..e7520ad487558e9c559dd288eca6115122ce71b0 100644 (file)
@@ -69,7 +69,7 @@
   }
 
   function set_dedupe(e) {
-    document.querySelector('input[name=dedupe]').value = e.target.checked ? 1 : '';
+    document.querySelector('input[name=dedupe]').value = e.target.checked ? 1 : 0;
   }
 
   function set_api_param(e) {
       <div class="col-auto">
         <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="{!api_request_params.dedupe ? '' : 1}" />
+        <input type="hidden" name="dedupe" value="{api_request_params.dedupe === 0 ? 0 : 1}" />
         <input type="hidden" name="bounded" value="{api_request_params.bounded ? 1 : ''}" />
         <input type="hidden" name="accept-language" value="{api_request_params['accept-language'] || ''}" />
         <input type="hidden" name="countrycodes" value="{api_request_params.countrycodes || ''}"
       <div class="col-auto">
         <button type="submit" class="btn btn-primary btn-sm">Search</button>
         <input type="hidden" name="viewbox" value="{sViewBox || ''}" />
-        <input type="hidden" name="dedupe" value="{!api_request_params.dedupe ? '' : 1}" />
+        <input type="hidden" name="dedupe" value="{api_request_params.dedupe === 0 ? 0 : 1}" />
         <input type="hidden" name="bounded" value="{api_request_params.bounded ? 1 : ''}" />
         <input type="hidden" name="accept-language" value="{api_request_params['accept-language'] || ''}" />
         <input type="hidden" name="countrycodes" value="{api_request_params.countrycodes || ''}"
       <div class="form-check form-check-inline">
         <label class="form-check-label" for="option_dedupe">deduplicate results</label>
         <input type="checkbox" class="form-check-input api-param-setting"
-               id="option_dedupe" checked={!!api_request_params.dedupe} on:change={set_dedupe}>
+               id="option_dedupe" checked={api_request_params.dedupe === 0 ? 0 : 1} on:change={set_dedupe}>
       </div>
     </li>
 
index a3dfaa07d5bb4f8f82b27d36ccf5bad2cd7d1e5c..01feea1e020935af537f0475b7df2bf2e46927a0 100644 (file)
@@ -12,6 +12,9 @@
       if (['checkbox', 'radio'].indexOf(field.type) > -1 && !field.checked) return;
       if (typeof field.value === 'undefined' || field.value === '') return;
 
+      // Default value for /search endpoint
+      if (field.name === 'dedupe' && (field.value === 1 || field.value === '1')) return;
+
       params.set(field.name, field.value);
     });
 
index 8de3f0f237e1880fa5bf539be9b09c434a105b2e..e6f8158ef8e4cbff9f87fa2c96cf966001b418ba 100644 (file)
@@ -83,6 +83,9 @@ export async function fetch_content_into_element(url, dom_element) {
 }
 
 function generate_nominatim_api_url(endpoint_name, params) {
+  // default value for /search
+  if (params.dedupe === 1) delete params.dedupe;
+
   extend_parameters(params, Nominatim_Config.Nominatim_API_Endpoint_Params);
   return Nominatim_Config.Nominatim_API_Endpoint + endpoint_name + '.php?'
          + Object.keys(clean_up_parameters(params)).map((k) => {
index 134ea8aab80ed8a8266f1875f4069eb5aa4b5048..e80729f26ec281cab1b7df2505ca977342af0582 100644 (file)
@@ -25,7 +25,7 @@
       polygon_geojson: Nominatim_Config.Search_AreaPolygons ? 1 : 0,
       viewbox: search_params.get('viewbox'),
       bounded: search_params.get('bounded'),
-      dedupe: search_params.get('dedupe'),
+      dedupe: (!search_params.has('dedupe') || search_params.get('dedupe') === '1') ? 1 : 0,
       'accept-language': search_params.get('accept-language'),
       countrycodes: search_params.get('countrycodes'),
       limit: search_params.get('limit'),
index e205b0c635d7447d7c9bcca0ac3e3bee6779bb7e..628edaafa00b380776cafedf06e403ab14b181ae 100644 (file)
@@ -111,6 +111,18 @@ describe('Search Page', function () {
       assert.equal((await page.$$('#map')).length, 1);
     });
 
+    it('should default to dedupe=1', async function () {
+      const checkbox_checked = await page.$eval('#option_dedupe', el => el.checked);
+      assert.equal(checkbox_checked, true);
+
+      const links_href = await page.$$eval('#api-request a', links => links.map(l => l.href));
+      let api_request_url = new URL(links_href[0]);
+      let debug_url = new URL(links_href[1]);
+
+      assert.deepStrictEqual(api_request_url.searchParams.has('dedupe'), false);
+      assert.deepStrictEqual(debug_url.searchParams.has('dedupe'), false);
+    });
+
     it('should have polygon and marker in map and minimap', async function () {
       assert.strictEqual((await page.$$('#map .leaflet-overlay-pane path')).length, 4);
     });