summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--web/i18n/en.yml18
-rw-r--r--web/lib/reports.rb1
-rw-r--r--web/views/key.erb6
-rw-r--r--web/views/reports/similar_keys.erb16
-rw-r--r--web/viewsjs/key.js.erb25
-rw-r--r--web/viewsjs/reports/similar_keys.js.erb36
6 files changed, 102 insertions, 0 deletions
diff --git a/web/i18n/en.yml b/web/i18n/en.yml
index cb7ec28..8c9103d 100644
--- a/web/i18n/en.yml
+++ b/web/i18n/en.yml
@@ -342,6 +342,13 @@ pages:
projects:
title: Projects using this key
description: How this key is used in the project
+ similar:
+ tab: Similar
+ title: Similar keys
+ other: Similar keys
+ count_all_tooltip: Number of objects with the similar key
+ similarity: Similarity
+ similarity_tooltip: Smaller numbers mean more similar
tag:
description_from_wiki: Description of this tag from the wiki (if available in your chosen language, otherwise in English).
no_description_in_wiki: No English language description for this tag in the wiki. (See also the "Wiki" tab.)
@@ -609,4 +616,15 @@ reports:
it just shows the building blocks that can be used to describe languages
irrespective of whether they are actually used in OSM.
</p>
+ similar_keys:
+ name: Similar keys
+ intro: |
+ This reports shows keys used very often and similar keys used very
+ rarely. This exposes many misspellings of common keys, but is not
+ perfect. Take care when fixing the data!
+ key_common: Commonly used keys
+ key_rare: Rarely used keys
+ count_common: Count
+ count_rare: Count
+ similarity: Similarity
diff --git a/web/lib/reports.rb b/web/lib/reports.rb
index 0611744..a822476 100644
--- a/web/lib/reports.rb
+++ b/web/lib/reports.rb
@@ -60,4 +60,5 @@ Report.new 'Language comparison table for keys in the wiki', :wiki
Report.new 'Languages', :wiki
Report.new 'Wiki pages about non-existing keys', :db, :wiki
Report.new 'Name tags'
+#Report.new 'Similar keys', :db
diff --git a/web/views/key.erb b/web/views/key.erb
index b13aaf5..8724b24 100644
--- a/web/views/key.erb
+++ b/web/views/key.erb
@@ -38,6 +38,7 @@
<li><a href="#overview"><%= h(t.taginfo.overview) %></a></li>
<li><a href="#values"><%= h(t.osm.values) %></a></li>
<li><a href="#combinations"><%= h(t.taginfo.key_combinations) %></a></li>
+<!-- <li><a href="#similar"><%= h(t.pages.key.similar.tab) %></a></li>-->
<li><a href="#map"><%= h(t.taginfo.map) %></a></li>
<li><a href="#wiki"><%= h(t.sources.wiki.name) %></a></li>
<li><a href="#projects"><%= h(t.taginfo.projects) %></a></li>
@@ -69,6 +70,11 @@
<table id="grid-keys">
</table>
</div>
+<!-- <div id="similar">
+ <h2><%= h(t.pages.key.similar.title) %></h2>
+ <table id="grid-similar">
+ </table>
+ </div>-->
<div id="map">
<h2><%= h(t.pages.key.geographic_distribution.title) %></h2>
<% if @filter_type == 'all' %>
diff --git a/web/views/reports/similar_keys.erb b/web/views/reports/similar_keys.erb
new file mode 100644
index 0000000..cc57929
--- /dev/null
+++ b/web/views/reports/similar_keys.erb
@@ -0,0 +1,16 @@
+<div class="pre">
+ <h1><%= t.reports.similar_keys.name %></h1>
+ <%= t.reports.similar_keys.intro %>
+</div>
+<div class="box resize">
+ <table id="grid-keys">
+ </table>
+</div>
+<% javascript do
+ JS.raw(<<"JAVASCRIPT")
+function page_init2() {
+// create_flexigrid();
+}
+JAVASCRIPT
+end
+%>
diff --git a/web/viewsjs/key.js.erb b/web/viewsjs/key.js.erb
index 165f91f..8f19ab2 100644
--- a/web/viewsjs/key.js.erb
+++ b/web/viewsjs/key.js.erb
@@ -83,6 +83,31 @@ var create_flexigrid_for = {
}
});
},
+ similar: function(key) {
+ create_flexigrid('grid-similar', {
+ url: '/api/4/key/similar?key=' + encodeURIComponent(key),
+ colModel: [
+ { display: '<%= h(page.similar.other) %>', name: 'other_key', width: 500, sortable: true },
+ { display: '<span title="<%= h(page.similar.count_all_tooltip) %>"><%= h(misc.count) %></span>', name: 'count_all', width: 160, sortable: true, align: 'right' },
+ { display: '<span title="<%= h(page.similar.similarity_tooltip) %>"><%= h(page.similar.similarity) %></span>', name: 'similarity', width: 100, sortable: true, align: 'right' }
+ ],
+ searchitems: [
+ { display: '<%= h(page.similar.other) %>', name: 'other_key' }
+ ],
+ sortname: 'other_key',
+ sortorder: 'asc',
+ preProcess: function(data) {
+ data.rows = jQuery.map(data.data, function(row, i) {
+ return { 'cell': [
+ link_to_key_with_highlight(row.other_key, key),
+ row.count_all,
+ row.similarity
+ ] };
+ });
+ return data;
+ }
+ });
+ },
wiki: function(key, filter_type) {
create_flexigrid('grid-wiki', {
url: '/api/4/key/wiki_pages?key=' + encodeURIComponent(key),
diff --git a/web/viewsjs/reports/similar_keys.js.erb b/web/viewsjs/reports/similar_keys.js.erb
new file mode 100644
index 0000000..1ea191e
--- /dev/null
+++ b/web/viewsjs/reports/similar_keys.js.erb
@@ -0,0 +1,36 @@
+<%
+ osm = @trans.t.osm
+ misc = @trans.t.misc
+ sim = @trans.t.reports.similar_keys
+ %>
+function page_init() {
+ up = function() { window.location = '/reports'; };
+ create_flexigrid('grid-keys', {
+ url: '/api/4/keys/similar',
+ colModel: [
+ { display: '<%= h(sim.key_common) %>', name: 'key_common', width: 350, sortable: true },
+ { display: '<%= h(sim.count_common) %>', name: 'count_all_common', width: 100, sortable: true, align: 'right' },
+ { display: '<%= h(sim.key_rare) %>', name: 'key_rare', width: 350, sortable: true },
+ { display: '<%= h(sim.count_rare) %>', name: 'count_all_rare', width: 100, sortable: true, align: 'right' },
+ { display: '<%= h(sim.similarity) %>', name: 'similarity', width: 100, sortable: true, align: 'right' }
+ ],
+ searchitems: [
+ { display: '<%= h(osm.key) %>', name: 'common_key' }
+ ],
+ sortname: 'count_all_common',
+ sortorder: 'desc',
+ preProcess: function(data) {
+ data.rows = jQuery.map(data.data, function(row, i) {
+ return { 'cell': [
+ link_to_key(row.key_common),
+ row.count_all_common,
+ link_to_key(row.key_rare),
+ row.count_all_rare,
+ row.similarity
+ ] };
+ });
+ return data;
+ }
+ });
+}
+