summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--taginfo-config-example.json5
-rw-r--r--web/lib/utils.rb6
-rw-r--r--web/public/js/taginfo.js34
-rw-r--r--web/views/key.erb16
-rw-r--r--web/views/tag.erb14
5 files changed, 69 insertions, 6 deletions
diff --git a/taginfo-config-example.json b/taginfo-config-example.json
index 20ccfae..74789c2 100644
--- a/taginfo-config-example.json
+++ b/taginfo-config-example.json
@@ -38,6 +38,11 @@
"turbo": {
"url_prefix": "http://overpass-turbo.eu/?"
},
+ "level0": {
+ "max_results": 50,
+ "overpass_url_prefix": "http://overpass.osm.rambler.ru/cgi/interpreter?",
+ "level0_url_prefix": "http://level0.osmz.ru/?"
+ },
"opensearch": {
// For the OpenSearchDescription. You have to change at least the shortname and the contact for your instance.
"shortname": "Taginfo Test Instance",
diff --git a/web/lib/utils.rb b/web/lib/utils.rb
index 0c6f777..8f0629f 100644
--- a/web/lib/utils.rb
+++ b/web/lib/utils.rb
@@ -101,7 +101,11 @@ def turbo_link(filter, key, value=nil)
parameters[:template] = template
url = TaginfoConfig.get('turbo.url_prefix', 'http://overpass-turbo.eu/?') + Rack::Utils::build_query(parameters)
- return '<span class="button">' + external_link('turbo_button', '<img src="/img/turbo.png" title="overpass turbo"/>', url, true) + '</span>'
+ return '<span class="button">' + external_link('turbo_button', '<img src="/img/turbo.png"/> overpass turbo', url, true) + '</span>'
+end
+
+def level0_link()
+ return '<span class="button">' + external_link('level0_button', 'Level0 Editor', '#', false) + '</span>'
end
def external_link(id, title, link, new_window=false)
diff --git a/web/public/js/taginfo.js b/web/public/js/taginfo.js
index 1e6f6cd..fef20d3 100644
--- a/web/public/js/taginfo.js
+++ b/web/public/js/taginfo.js
@@ -530,6 +530,40 @@ function table_right() {
/* ============================ */
+function quote_double(text) {
+ return text.replace(/["\\]/, '\\$&', 'gm')
+}
+
+function level0_editor(overpass_url_prefix, level0_url_prefix, filter, key, value) {
+ var query = '["' + quote_double(key);
+ if (value !== undefined) {
+ query += '"="' + quote_double(value);
+ }
+ query += '"];'
+
+ if (filter == 'nodes') {
+ query = 'node' + query;
+ } else if (filter == 'ways') {
+ query = 'way' + query;
+ } else if (filter == 'relations') {
+ query = 'rel' + query;
+ } else {
+ query = '(node' + query + 'way' + query + 'rel' + query + ');';
+ }
+
+ var overpass_url = overpass_url_prefix + 'data=[out:json];' + query + 'out body;';
+
+ jQuery.getJSON(overpass_url, function(data) {
+ var objects = jQuery.map(data.elements, function(el) {
+ return el.type.substr(0,1) + el.id + (el.type == 'way' ? '!' : '');
+ });
+ var level0_url = level0_url_prefix + 'url=' + objects.join(',');
+ window.open(level0_url, '_blank');
+ });
+}
+
+/* ============================ */
+
function open_help() {
jQuery('#help').dialog({
modal: true,
diff --git a/web/views/key.erb b/web/views/key.erb
index 0c1c2f7..ba0e633 100644
--- a/web/views/key.erb
+++ b/web/views/key.erb
@@ -9,13 +9,18 @@
</select>
</form>
<div id="tools" class="no-print">
- <% if @count_all_values < TaginfoConfig.get('xapi.max_results', 1000) %>
+ <% if @count_all_values <= TaginfoConfig.get('xapi.max_results', 1000) %>
<%= xapi_link(@filter_xapi, @key) %> <%= josm_link(@filter_xapi, @key) %>
<% else %>
<span class="button disabled" title="Button disabled, because there are too many objects with this key">XAPI</span>
<span class="button disabled" title="Button disabled, because there are too many objects with this key">JOSM</span>
<% end %>
<%= turbo_link(@filter_type, @key) %>
+ <% if @count_all_values <= TaginfoConfig.get('level0.max_results', 10) %>
+ <%= level0_link() %>
+ <% else %>
+ <span class="button disabled" title="Button disabled, because there are too many objects with this key">Level0 Editor</span>
+ <% end %>
</div>
<h1></h1>
<p><%= @desc %></p>
@@ -105,9 +110,14 @@
<% javascript do
JS.raw(<<"JAVASCRIPT")
function page_init2() {
- var key = #{ @key.to_json };
+ var filter = #{ @filter_type.to_json },
+ key = #{ @key.to_json };
jQuery('h1').html(fmt_key(key));
- init_tabs([key, #{ @filter_type.to_json }, #{ r18n.locale.code.to_json }]);
+ jQuery('#level0_button').bind('click', function() {
+ level0_editor('#{ TaginfoConfig.get('level0.overpass_url_prefix') }', '#{ TaginfoConfig.get('level0.level0_url_prefix') }', filter, key, undefined);
+ });
+
+ init_tabs([key, filter, #{ r18n.locale.code.to_json }]);
create_chart({
key: key,
width: 160,
diff --git a/web/views/tag.erb b/web/views/tag.erb
index 0e1cf76..ad74217 100644
--- a/web/views/tag.erb
+++ b/web/views/tag.erb
@@ -16,6 +16,11 @@
<span class="button disabled" title="Button disabled, because there are too many objects with this key">JOSM</span>
<% end %>
<%= turbo_link(@filter_type, @key, @value) %>
+ <% if @count_all <= TaginfoConfig.get('level0.max_results', 10) %>
+ <%= level0_link() %>
+ <% else %>
+ <span class="button disabled" title="Button disabled, because there are too many objects with this key">Level0 Editor</span>
+ <% end %>
</div>
<h1></h1>
<p><%= @desc %></p>
@@ -102,13 +107,18 @@
<% javascript do
JS.raw(<<"JAVASCRIPT")
function page_init2() {
- var key = #{ @key.to_json },
+ var filter = #{ @filter_type.to_json },
+ key = #{ @key.to_json },
value = #{ @value.to_json };
up = function() { window.location = url_for_key(key); };
jQuery('h1').html(link_to_key(key) + '=' + fmt_value(value));
jQuery('span#keylink').html(link_to_key(key));
jQuery('span#relationlink').html(link_to_rtype(value));
- init_tabs([key, value, #{ @filter_type.to_json }]);
+ jQuery('#level0_button').bind('click', function() {
+ level0_editor('#{ TaginfoConfig.get('level0.overpass_url_prefix') }', '#{ TaginfoConfig.get('level0.level0_url_prefix') }', filter, key, undefined);
+ });
+
+ init_tabs([key, value, filter]);
}
JAVASCRIPT
end