on master help sign in
[mod] remove overpass API call

prepare the code the PR #90

commit878ba6a04a5a11be098d3f5859485c5f9b301ceb authorAlexandre Flament <alex@al-f.net> dateSat 29 May 2021, 15:22 (5 years ago) parentbb34685
7 files changed−368
searx/static/themes/oscar/js/searx.js−83 searx/static/themes/oscar/src/js/leaflet_map.js−83 searx/static/themes/simple/js/searx.js−87 searx/static/themes/simple/js/searx_src/searx_mapresult.js−87 searx/templates/oscar/result_templates/map.html−13 searx/templates/simple/result_templates/map.html−13 searx/webapp.py−2
searx/static/themes/oscar/js/searx.js−83
@@ -238,89 +238,6 @@ $(document).ready(function(){
238238 */
239239
240240$(document).ready(function(){
241− $(".searx_overpass_request").on( "click", function( event ) {
242− var overpass_url = "https://overpass-api.de/api/interpreter?data=";
243− var query_start = overpass_url + "[out:json][timeout:25];(";
244− var query_end = ");out meta;";
245−
246− var osm_id = $(this).data('osm-id');
247− var osm_type = $(this).data('osm-type');
248− var result_table = $(this).data('result-table');
249− var result_table_loadicon = "#" + $(this).data('result-table-loadicon');
250−
251− // tags which can be ignored
252− var osm_ignore_tags = [ "addr:city", "addr:country", "addr:housenumber", "addr:postcode", "addr:street" ];
253−
254− if(osm_id && osm_type && result_table) {
255− result_table = "#" + result_table;
256− var query = null;
257− switch(osm_type) {
258− case 'node':
259− query = query_start + "node(" + osm_id + ");" + query_end;
260− break;
261− case 'way':
262− query = query_start + "way(" + osm_id + ");" + query_end;
263− break;
264− case 'relation':
265− query = query_start + "relation(" + osm_id + ");" + query_end;
266− break;
267− default:
268− break;
269− }
270− if(query) {
271− //alert(query);
272− var ajaxRequest = $.ajax( query )
273− .done(function( html) {
274− if(html && html.elements && html.elements[0]) {
275− var element = html.elements[0];
276− var newHtml = $(result_table).html();
277− for (var row in element.tags) {
278− if(element.tags.name === null || osm_ignore_tags.indexOf(row) == -1) {
279− newHtml += "<tr><td>" + row + "</td><td>";
280− switch(row) {
281− case "phone":
282− case "fax":
283− newHtml += "<a href=\"tel:" + element.tags[row].replace(/ /g,'') + "\">" + element.tags[row] + "</a>";
284− break;
285− case "email":
286− newHtml += "<a href=\"mailto:" + element.tags[row] + "\">" + element.tags[row] + "</a>";
287− break;
288− case "website":
289− case "url":
290− newHtml += "<a href=\"" + element.tags[row] + "\">" + element.tags[row] + "</a>";
291− break;
292− case "wikidata":
293− newHtml += "<a href=\"https://www.wikidata.org/wiki/" + element.tags[row] + "\">" + element.tags[row] + "</a>";
294− break;
295− case "wikipedia":
296− if(element.tags[row].indexOf(":") != -1) {
297− newHtml += "<a href=\"https://" + element.tags[row].substring(0,element.tags[row].indexOf(":")) + ".wikipedia.org/wiki/" + element.tags[row].substring(element.tags[row].indexOf(":")+1) + "\">" + element.tags[row] + "</a>";
298− break;
299− }
300− /* jshint ignore:start */
301− default:
302− /* jshint ignore:end */
303− newHtml += element.tags[row];
304− break;
305− }
306− newHtml += "</td></tr>";
307− }
308− }
309− $(result_table).html(newHtml);
310− $(result_table).removeClass('hidden');
311− $(result_table_loadicon).addClass('hidden');
312− }
313− })
314− .fail(function() {
315− $(result_table_loadicon).html($(result_table_loadicon).html() + "<p class=\"text-muted\">"+searx.translations.could_not_load+"</p>");
316− });
317− }
318− }
319−
320− // this event occour only once per element
321− $( this ).off( event );
322− });
323−
324241 $(".searx_init_map").on( "click", function( event ) {
325242 var leaflet_target = $(this).data('leaflet-target');
326243 var map_lon = $(this).data('map-lon');
searx/static/themes/oscar/src/js/leaflet_map.js−83
@@ -16,89 +16,6 @@
1616 */
1717
1818$(document).ready(function(){
19− $(".searx_overpass_request").on( "click", function( event ) {
20− var overpass_url = "https://overpass-api.de/api/interpreter?data=";
21− var query_start = overpass_url + "[out:json][timeout:25];(";
22− var query_end = ");out meta;";
23−
24− var osm_id = $(this).data('osm-id');
25− var osm_type = $(this).data('osm-type');
26− var result_table = $(this).data('result-table');
27− var result_table_loadicon = "#" + $(this).data('result-table-loadicon');
28−
29− // tags which can be ignored
30− var osm_ignore_tags = [ "addr:city", "addr:country", "addr:housenumber", "addr:postcode", "addr:street" ];
31−
32− if(osm_id && osm_type && result_table) {
33− result_table = "#" + result_table;
34− var query = null;
35− switch(osm_type) {
36− case 'node':
37− query = query_start + "node(" + osm_id + ");" + query_end;
38− break;
39− case 'way':
40− query = query_start + "way(" + osm_id + ");" + query_end;
41− break;
42− case 'relation':
43− query = query_start + "relation(" + osm_id + ");" + query_end;
44− break;
45− default:
46− break;
47− }
48− if(query) {
49− //alert(query);
50− var ajaxRequest = $.ajax( query )
51− .done(function( html) {
52− if(html && html.elements && html.elements[0]) {
53− var element = html.elements[0];
54− var newHtml = $(result_table).html();
55− for (var row in element.tags) {
56− if(element.tags.name === null || osm_ignore_tags.indexOf(row) == -1) {
57− newHtml += "<tr><td>" + row + "</td><td>";
58− switch(row) {
59− case "phone":
60− case "fax":
61− newHtml += "<a href=\"tel:" + element.tags[row].replace(/ /g,'') + "\">" + element.tags[row] + "</a>";
62− break;
63− case "email":
64− newHtml += "<a href=\"mailto:" + element.tags[row] + "\">" + element.tags[row] + "</a>";
65− break;
66− case "website":
67− case "url":
68− newHtml += "<a href=\"" + element.tags[row] + "\">" + element.tags[row] + "</a>";
69− break;
70− case "wikidata":
71− newHtml += "<a href=\"https://www.wikidata.org/wiki/" + element.tags[row] + "\">" + element.tags[row] + "</a>";
72− break;
73− case "wikipedia":
74− if(element.tags[row].indexOf(":") != -1) {
75− newHtml += "<a href=\"https://" + element.tags[row].substring(0,element.tags[row].indexOf(":")) + ".wikipedia.org/wiki/" + element.tags[row].substring(element.tags[row].indexOf(":")+1) + "\">" + element.tags[row] + "</a>";
76− break;
77− }
78− /* jshint ignore:start */
79− default:
80− /* jshint ignore:end */
81− newHtml += element.tags[row];
82− break;
83− }
84− newHtml += "</td></tr>";
85− }
86− }
87− $(result_table).html(newHtml);
88− $(result_table).removeClass('hidden');
89− $(result_table_loadicon).addClass('hidden');
90− }
91− })
92− .fail(function() {
93− $(result_table_loadicon).html($(result_table_loadicon).html() + "<p class=\"text-muted\">"+searx.translations.could_not_load+"</p>");
94− });
95− }
96− }
97−
98− // this event occour only once per element
99− $( this ).off( event );
100− });
101−
10219 $(".searx_init_map").on( "click", function( event ) {
10320 var leaflet_target = $(this).data('leaflet-target');
10421 var map_lon = $(this).data('map-lon');
searx/static/themes/simple/js/searx.js−87
@@ -1085,93 +1085,6 @@ module.exports = AutoComplete;
10851085 'use strict';
10861086
10871087 searx.ready(function () {
1088− searx.on('.searx_overpass_request', 'click', function(event) {
1089− // no more request
1090− this.classList.remove("searx_overpass_request");
1091−
1092− //
1093− var overpass_url = "https://overpass-api.de/api/interpreter?data=";
1094− var query_start = overpass_url + "[out:json][timeout:25];(";
1095− var query_end = ");out meta;";
1096−
1097− var osm_id = this.dataset.osmId;
1098− var osm_type = this.dataset.osmType;
1099− var result_table = d.querySelector("#" + this.dataset.resultTable);
1100− var result_table_loadicon = d.querySelector("#" + this.dataset.resultTableLoadicon);
1101−
1102− // tags which can be ignored
1103− var osm_ignore_tags = [ "addr:city", "addr:country", "addr:housenumber", "addr:postcode", "addr:street" ];
1104−
1105− if(osm_id && osm_type && result_table) {
1106− var query = null;
1107− switch(osm_type) {
1108− case 'node':
1109− query = query_start + "node(" + osm_id + ");" + query_end;
1110− break;
1111− case 'way':
1112− query = query_start + "way(" + osm_id + ");" + query_end;
1113− break;
1114− case 'relation':
1115− query = query_start + "relation(" + osm_id + ");" + query_end;
1116− break;
1117− default:
1118− break;
1119− }
1120− if(query) {
1121− // console.log(query);
1122− searx.http( 'GET', query ).then(function(html, contentType) {
1123− html = JSON.parse(html);
1124− if(html && html.elements && html.elements[0]) {
1125− var element = html.elements[0];
1126− var newHtml = "";
1127− for (var row in element.tags) {
1128− if(element.tags.name === null || osm_ignore_tags.indexOf(row) == -1) {
1129− newHtml += "<tr><td>" + row + "</td><td>";
1130− switch(row) {
1131− case "phone":
1132− case "fax":
1133− newHtml += "<a href=\"tel:" + element.tags[row].replace(/ /g,'') + "\">" + element.tags[row] + "</a>";
1134− break;
1135− case "email":
1136− newHtml += "<a href=\"mailto:" + element.tags[row] + "\">" + element.tags[row] + "</a>";
1137− break;
1138− case "website":
1139− case "url":
1140− newHtml += "<a href=\"" + element.tags[row] + "\">" + element.tags[row] + "</a>";
1141− break;
1142− case "wikidata":
1143− newHtml += "<a href=\"https://www.wikidata.org/wiki/" + element.tags[row] + "\">" + element.tags[row] + "</a>";
1144− break;
1145− case "wikipedia":
1146− if(element.tags[row].indexOf(":") != -1) {
1147− newHtml += "<a href=\"https://" + element.tags[row].substring(0,element.tags[row].indexOf(":")) + ".wikipedia.org/wiki/" + element.tags[row].substring(element.tags[row].indexOf(":")+1) + "\">" + element.tags[row] + "</a>";
1148− break;
1149− }
1150− /* jshint ignore:start */
1151− default:
1152− /* jshint ignore:end */
1153− newHtml += element.tags[row];
1154− break;
1155− }
1156− newHtml += "</td></tr>";
1157− }
1158− }
1159− result_table_loadicon.parentNode.removeChild(result_table_loadicon);
1160− result_table.classList.remove('invisible');
1161− result_table.querySelector("tbody").innerHTML = newHtml;
1162− }
1163− })
1164− .catch(function() {
1165− result_table_loadicon.classList.remove('invisible');
1166− result_table_loadicon.innerHTML = could_not_load;
1167− });
1168− }
1169− }
1170−
1171− // this event occour only once per element
1172− event.preventDefault();
1173− });
1174−
11751088 searx.on('.searx_init_map', 'click', function(event) {
11761089 // no more request
11771090 this.classList.remove("searx_init_map");
searx/static/themes/simple/js/searx_src/searx_mapresult.js−87
@@ -19,93 +19,6 @@
1919 'use strict';
2020
2121 searx.ready(function () {
22− searx.on('.searx_overpass_request', 'click', function(event) {
23− // no more request
24− this.classList.remove("searx_overpass_request");
25−
26− //
27− var overpass_url = "https://overpass-api.de/api/interpreter?data=";
28− var query_start = overpass_url + "[out:json][timeout:25];(";
29− var query_end = ");out meta;";
30−
31− var osm_id = this.dataset.osmId;
32− var osm_type = this.dataset.osmType;
33− var result_table = d.querySelector("#" + this.dataset.resultTable);
34− var result_table_loadicon = d.querySelector("#" + this.dataset.resultTableLoadicon);
35−
36− // tags which can be ignored
37− var osm_ignore_tags = [ "addr:city", "addr:country", "addr:housenumber", "addr:postcode", "addr:street" ];
38−
39− if(osm_id && osm_type && result_table) {
40− var query = null;
41− switch(osm_type) {
42− case 'node':
43− query = query_start + "node(" + osm_id + ");" + query_end;
44− break;
45− case 'way':
46− query = query_start + "way(" + osm_id + ");" + query_end;
47− break;
48− case 'relation':
49− query = query_start + "relation(" + osm_id + ");" + query_end;
50− break;
51− default:
52− break;
53− }
54− if(query) {
55− // console.log(query);
56− searx.http( 'GET', query ).then(function(html, contentType) {
57− html = JSON.parse(html);
58− if(html && html.elements && html.elements[0]) {
59− var element = html.elements[0];
60− var newHtml = "";
61− for (var row in element.tags) {
62− if(element.tags.name === null || osm_ignore_tags.indexOf(row) == -1) {
63− newHtml += "<tr><td>" + row + "</td><td>";
64− switch(row) {
65− case "phone":
66− case "fax":
67− newHtml += "<a href=\"tel:" + element.tags[row].replace(/ /g,'') + "\">" + element.tags[row] + "</a>";
68− break;
69− case "email":
70− newHtml += "<a href=\"mailto:" + element.tags[row] + "\">" + element.tags[row] + "</a>";
71− break;
72− case "website":
73− case "url":
74− newHtml += "<a href=\"" + element.tags[row] + "\">" + element.tags[row] + "</a>";
75− break;
76− case "wikidata":
77− newHtml += "<a href=\"https://www.wikidata.org/wiki/" + element.tags[row] + "\">" + element.tags[row] + "</a>";
78− break;
79− case "wikipedia":
80− if(element.tags[row].indexOf(":") != -1) {
81− newHtml += "<a href=\"https://" + element.tags[row].substring(0,element.tags[row].indexOf(":")) + ".wikipedia.org/wiki/" + element.tags[row].substring(element.tags[row].indexOf(":")+1) + "\">" + element.tags[row] + "</a>";
82− break;
83− }
84− /* jshint ignore:start */
85− default:
86− /* jshint ignore:end */
87− newHtml += element.tags[row];
88− break;
89− }
90− newHtml += "</td></tr>";
91− }
92− }
93− result_table_loadicon.parentNode.removeChild(result_table_loadicon);
94− result_table.classList.remove('invisible');
95− result_table.querySelector("tbody").innerHTML = newHtml;
96− }
97− })
98− .catch(function() {
99− result_table_loadicon.classList.remove('invisible');
100− result_table_loadicon.innerHTML = could_not_load;
101− });
102− }
103− }
104−
105− // this event occour only once per element
106− event.preventDefault();
107− });
108−
10922 searx.on('.searx_init_map', 'click', function(event) {
11023 // no more request
11124 this.classList.remove("searx_init_map");
searx/templates/oscar/result_templates/map.html−13
@@ -7,10 +7,6 @@
77 <small> &bull; <a class="text-info btn-collapse collapsed searx_init_map cursor-pointer disabled_if_nojs" data-toggle="collapse" data-target="#result-map-{{ index }}" data-leaflet-target="osm-map-{{ index }}" data-map-lon="{{ result.longitude }}" data-map-lat="{{ result.latitude }}" {% if result.boundingbox %}data-map-boundingbox='{{ result.boundingbox|tojson|safe }}'{% endif %} {% if result.geojson %}data-map-geojson='{{ result.geojson|tojson|safe }}'{% endif %} data-btn-text-collapsed="{{ _('show map') }}" data-btn-text-not-collapsed="{{ _('hide map') }}">{{ icon('globe') }} {{ _('show map') }}</a></small>
88{%- endif -%}
99
10−{%- if result.osm and (result.osm.type and result.osm.id) -%}
11− <small> &bull; <a class="text-info btn-collapse collapsed cursor-pointer searx_overpass_request disabled_if_nojs" data-toggle="collapse" data-target="#result-overpass-{{ index }}" data-osm-type="{{ result.osm.type }}" data-osm-id="{{ result.osm.id }}" data-result-table="result-overpass-table-{{ index }}" data-result-table-loadicon="result-overpass-table-loading-{{ index }}" data-btn-text-collapsed="{{ _('show details') }}" data-btn-text-not-collapsed="{{ _('hide details') }}">{{ icon('map-marker') }} {{ _('show details') }}</a></small>
12−{%- endif -%}
13−
1410{# {% if (result.latitude and result.longitude) %}
1511 <small> &bull; <a class="text-info btn-collapse collapsed cursor-pointer disabled_if_nojs" data-toggle="collapse" data-target="#result-geodata-{{ index }}" data-btn-text-collapsed="{{ _('show geodata') }}" data-btn-text-not-collapsed="{{ _('hide geodata') }}">{{ icon('map-marker') }} {{ _('show geodata') }}</a></small>
1612{% endif %} #}
@@ -39,15 +35,6 @@
3935</p>
4036{%- endif %}
4137
42−{%- if result.osm and (result.osm.type and result.osm.id) -%}
43− <div class="row result-content collapse col-xs-12 col-sm-7 col-md-8" id="result-overpass-{{ index }}"{% if rtl %} dir="ltr"{% endif %}>
44− <div class="text-center" id="result-overpass-table-loading-{{ index }}"><img src="{{ url_for('static', filename='img/loader.gif') }}" alt="Loading ..."/></div>
45− <table class="table table-striped table-condensed hidden" id="result-overpass-table-{{ index }}">
46− <tr><th>key</th><th>value</th></tr>
47− </table>
48− </div>
49−{%- endif -%}
50−
5138{# {% if (result.latitude and result.longitude) %}
5239 <div class="row collapse col-xs-12 col-sm-5 col-md-4" id="result-geodata-{{ index }}">
5340 <strong>Longitude:</strong> {{ result.longitude }} <br/>
searx/templates/simple/result_templates/map.html−13
@@ -7,9 +7,6 @@
77 <small> &bull; <a class="btn-collapse collapsed searx_init_map hide_if_nojs" data-target="#result-map-{{ index }}" data-btn-text-collapsed="{{ _('show map') }}" data-btn-text-not-collapsed="{{ _('hide map') }}" data-leaflet-target="osm-map-{{ index }}" data-map-lon="{{ result.longitude }}" data-map-lat="{{ result.latitude }}" {% if result.boundingbox %}data-map-boundingbox='{{ result.boundingbox|tojson|safe }}'{% endif %} {% if result.geojson %}data-map-geojson='{{ result.geojson|tojson|safe }}'{% endif %}>{{ icon( 'globe') }} {{ _('show map') }}</a></small>
88{%- endif -%}
99
10−{%- if result.osm and (result.osm.type and result.osm.id) -%}
11− <small> &bull; <a class="btn-collapse collapsed hide_if_nojs searx_overpass_request" data-target="#result-overpass-{{ index }}" data-btn-text-collapsed="{{ _('show details') }}" data-btn-text-not-collapsed="{{ _('hide details') }}" data-osm-type="{{ result.osm.type }}" data-osm-id="{{ result.osm.id }}" data-result-table="result-overpass-table-{{ index }}" data-result-table-loadicon="result-overpass-table-loading-{{ index }}">{{ icon('location') }} {{ _('show details') }}</a></small>
12−{%- endif -%}
1310{#-
1411{% if (result.latitude and result.longitude) %}
1512 <small> &bull; <a class="btn-collapse disabled_if_nojs" data-target="#result-geodata-{{ index }}" data-btn-text-collapsed="{{ _('show geodata') }}" data-btn-text-not-collapsed="{{ _('hide geodata') }}">{{ icon('location') }} {{ _('show geodata') }}</a></small>
@@ -42,16 +39,6 @@
4239
4340{{- result_sub_footer(result, proxify) -}}
4441
45−{% if result.osm and (result.osm.type and result.osm.id) -%}
46− <div class="result-content invisible" id="result-overpass-{{ index }}"{% if rtl %} dir="ltr"{% endif %}>
47− <div id="result-overpass-table-loading-{{ index }}"><div class="loader">{{ _('Loading...') }}</div></div>
48− <table id="result-overpass-table-{{ index }}">
49− <tbody>
50− </tbody>
51− </table>
52− </div>
53−{%- endif %}
54−
5542{#-
5643{% if (result.latitude and result.longitude) -%}
5744 <div id="result-geodata-{{ index }}" class="invisible">
searx/webapp.py−2
@@ -371,8 +371,6 @@ def image_proxify(url):
371371
372372def get_translations():
373373 return {
374− # when overpass AJAX request fails (on a map result)
375− 'could_not_load': gettext('could not load data'),
376374 # when there is autocompletion
377375 'no_item_found': gettext('No item found')
378376 }