summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--web/lib/api/db.rb4
-rw-r--r--web/lib/ui/reports.rb8
-rw-r--r--web/views/reports/index.erb2
-rw-r--r--web/views/reports/language_comparison_table_for_keys_in_the_wiki.erb72
-rw-r--r--web/views/reports/wiki_pages_about_non-existing_keys.erb49
5 files changed, 133 insertions, 2 deletions
diff --git a/web/lib/api/db.rb b/web/lib/api/db.rb
index 04bcc45..6678590 100644
--- a/web/lib/api/db.rb
+++ b/web/lib/api/db.rb
@@ -3,7 +3,9 @@ class Taginfo < Sinatra::Base
@@filters = {
:characters_space => "characters='space'",
- :characters_problematic => "characters='problem'"
+ :characters_problematic => "characters='problem'",
+ :in_wiki => "in_wiki=1",
+ :not_in_db => "count_all=0"
}
get '/api/2/db/keys' do
diff --git a/web/lib/ui/reports.rb b/web/lib/ui/reports.rb
index 983a2f6..82485c5 100644
--- a/web/lib/ui/reports.rb
+++ b/web/lib/ui/reports.rb
@@ -9,7 +9,13 @@ class Taginfo < Sinatra::Base
#--------------------------------------------------------------------------
- ['Frequently Used Keys Without Wiki Page', 'Characters in Keys', 'Key Lengths'].each do |title|
+ [
+ 'Frequently Used Keys Without Wiki Page',
+ 'Wiki Pages About Non-Existing Keys',
+ 'Language Comparison Table for Keys in the Wiki',
+ 'Characters in Keys',
+ 'Key Lengths'
+ ].each do |title|
name = title.gsub(/ /, '_').downcase
get '/reports/' + name do
@title = title
diff --git a/web/views/reports/index.erb b/web/views/reports/index.erb
index d054731..9040a1b 100644
--- a/web/views/reports/index.erb
+++ b/web/views/reports/index.erb
@@ -11,5 +11,7 @@
<ul>
<li><a href="/reports/frequently_used_keys_without_wiki_page">Frequently used keys without wiki page</a></li>
+ <li><a href="/reports/wiki_pages_about_non-existing_keys">Wiki pages about non-existing keys</a></li>
+ <li><a href="/reports/language_comparison_table_for_keys_in_the_wiki">Language comparison table for keys in the wiki</a></li>
</ul>
diff --git a/web/views/reports/language_comparison_table_for_keys_in_the_wiki.erb b/web/views/reports/language_comparison_table_for_keys_in_the_wiki.erb
new file mode 100644
index 0000000..6d60721
--- /dev/null
+++ b/web/views/reports/language_comparison_table_for_keys_in_the_wiki.erb
@@ -0,0 +1,72 @@
+<%
+ @languages = @db.execute('SELECT language FROM wiki_languages ORDER by language').map do |row|
+ row['language']
+ end
+
+ lang_lookup = Hash.new
+ @languages.each_with_index do |lang, idx|
+ lang_lookup[lang] = idx + 1
+ end
+ @languages_lookup = @languages.map{ |lang| "'#{lang}': #{lang_lookup[lang]}" }.join(', ')
+%>
+
+<h1><%= @title %></h1>
+
+<p>This table shows all tag keys for which there are wiki pages available and in what languages they are.</p>
+
+<table id="wiki-keys">
+</table>
+
+<p></p>
+
+<table>
+ <tr><td><img src="/img/sources/wiki/wiki-t.png" alt="[t]"/></td><td>Page in wiki available and contains standard template.</td></tr>
+ <tr><td><img src="/img/sources/wiki/wiki-e.png" alt="[e]"/></td><td>Page in wiki available and contains standard template, but couldn't be parsed.</td></tr>
+ <tr><td><img src="/img/sources/wiki/wiki-p.png" alt="[p]"/></td><td>Page in wiki available but doesn't contain standard template.</td></tr>
+ <tr><td><img src="/img/sources/wiki/wiki-r.png" alt="[r]"/></td><td>Page is a redirect.</td></tr>
+</table>
+
+<script type="text/javascript">
+ jQuery(document).ready(function() {
+ var lang_to_idx = {
+ <%= @languages_lookup %>
+ };
+ jQuery('#wiki-keys').flexigrid({
+ url: '/api/2/wiki/keys',
+ method: 'GET',
+ dataType: 'json',
+ colModel: [
+ { display: '<br/>Key', name: 'key', width: 200, sortable: true },
+ <% @languages.each do |lang| %>
+ { display: '<%= ::Language[lang].native_name %><br /><span class="lang" style="margin-top: 2px;"><%= lang %></span>', name: '<%= lang %>', align: 'center', width: 60, sortable: false },
+ <% end %>
+ ],
+ searchitems: [
+ { display: 'Key', name: 'key' }
+ ],
+ sortname: 'key',
+ sortorder: 'asc',
+ showToggleBtn: false,
+ showTableToggleBtn: false,
+ usepager: true,
+ useRp: true,
+ rpOptions: [10,15,20,25,50,100],
+ rp: 15,
+ height: 400,
+ preProcess: function(data) {
+ return {
+ total: data.total,
+ page: data.page,
+ rows: jQuery.map(data.data, function(row, i) {
+ d = [link_to_key(row.key) <%= @languages.map{ ", ''"}.join() %>];
+ for (var lang in row.lang) {
+ ptype = row.lang[lang];
+ d[lang_to_idx[lang]] = '<img src="/img/sources/wiki/wiki-' + ptype + '.png" alt="[' + ptype + ']"/>';
+ }
+ return { 'cell': d };
+ })
+ };
+ }
+ });
+ });
+</script>
diff --git a/web/views/reports/wiki_pages_about_non-existing_keys.erb b/web/views/reports/wiki_pages_about_non-existing_keys.erb
new file mode 100644
index 0000000..f04c13b
--- /dev/null
+++ b/web/views/reports/wiki_pages_about_non-existing_keys.erb
@@ -0,0 +1,49 @@
+<h1><%= @title %></h1>
+
+<p>This table shows keys for which a wiki page exists but there is not a single
+instance in the database. This is not necessarily an error (maybe somebody
+added the documentation in the wiki as preparation for using a key), but it can
+also be a typo or other error.</p>
+
+<table id="keys">
+</table>
+
+<script type="text/javascript">
+ jQuery(document).ready(function() {
+ jQuery('#keys').flexigrid({
+ url: '/api/2/db/keys?filters=in_wiki,not_in_db',
+ method: 'GET',
+ dataType: 'json',
+ colModel: [
+ { display: '<img src="/img/sources/wiki.16.png" alt="Wiki" title="Wiki"/>', name: 'in_wiki', width: 20, sortable: true, align: 'center' },
+ { display: '<img src="/img/sources/josm.16.png" alt="JOSM" title="JOSM"/>', name: 'in_josm', width: 20, sortable: true, align: 'center' },
+ // { display: '<img src="/img/sources/potlatch.16.png" alt="Potlatch 2" title="Potlatch 2"/>', name: 'in_potlatch', width: 20, sortable: true, align: 'center' },
+ // { display: '<img src="/img/sources/merkaartor.16.png" alt="Merkaartor" title="Merkaartor"/>', name: 'in_merkaartor', width: 20, sortable: true, align: 'center' },
+ { display: 'Key', name: 'key', width: 260, sortable: true, align: 'left' }
+ ],
+ searchitems: [
+ { display: 'Key', name: 'key' }
+ ],
+ sortname: 'count_all',
+ sortorder: 'desc',
+ showToggleBtn: false,
+ usepager: true,
+ useRp: true,
+ rp: 15,
+ rpOptions: [10,15,20,25,50,100],
+ height: 420,
+ preProcess: function(data) {
+ data.rows = jQuery.map(data.data, function(row, i) {
+ return { 'cell': [
+ row.in_wiki ? '&#x2714;' : '-',
+ row.in_josm ? '&#x2714;' : '-',
+ // row.in_potlatch ? '&#x2714;' : '-',
+ // row.in_merkaartor ? '&#x2714;' : '-',
+ link_to_key(row.key)
+ ] };
+ });
+ return data;
+ }
+ });
+ });
+</script>