summaryrefslogtreecommitdiff
path: root/web
diff options
context:
space:
mode:
authorJochen Topf <jochen@topf.org>2010-11-06 16:13:39 +0100
committerJochen Topf <jochen@topf.org>2010-11-06 16:13:39 +0100
commit08f5fc6f39402873942051dbbd068c6f69766c9d (patch)
treec3a467b5b6a47e4642890899f7c65c21778362fc /web
parentf58d0baf67458a504dfeb1b7277434e2ad062179 (diff)
downloadtaginfo-08f5fc6f39402873942051dbbd068c6f69766c9d.tar
taginfo-08f5fc6f39402873942051dbbd068c6f69766c9d.tar.gz
Begin of stats refactoring
Diffstat (limited to 'web')
-rw-r--r--web/lib/api/db.rb8
-rw-r--r--web/lib/api/reports.rb2
-rw-r--r--web/lib/sql.rb5
-rwxr-xr-xweb/taginfo.rb4
-rw-r--r--web/views/reports/characters_in_keys.erb24
-rw-r--r--web/views/sources/db.erb24
6 files changed, 35 insertions, 32 deletions
diff --git a/web/lib/api/db.rb b/web/lib/api/db.rb
index cc75952..a460b8b 100644
--- a/web/lib/api/db.rb
+++ b/web/lib/api/db.rb
@@ -19,13 +19,13 @@ class Taginfo < Sinatra::Base
:data => res.map{ |row| {
:key => row['key'],
:count_all => row['count_all'].to_i,
- :count_all_fraction => row['count_all'].to_f / @stats['objects'],
+ :count_all_fraction => row['count_all'].to_f / @db.stats('objects'),
:count_nodes => row['count_nodes'].to_i,
- :count_nodes_fraction => row['count_nodes'].to_f / @stats['nodes_with_tags'],
+ :count_nodes_fraction => row['count_nodes'].to_f / @db.stats('nodes_with_tags'),
:count_ways => row['count_ways'].to_i,
- :count_ways_fraction => row['count_ways'].to_f / @stats['ways'],
+ :count_ways_fraction => row['count_ways'].to_f / @db.stats('ways'),
:count_relations => row['count_relations'].to_i,
- :count_relations_fraction => row['count_relations'].to_f / @stats['relations'],
+ :count_relations_fraction => row['count_relations'].to_f / @db.stats('relations'),
:values_all => row['values_all'].to_i,
:users_all => row['users_all'].to_i,
:in_wiki => row['in_wiki'] == '1' ? true : false,
diff --git a/web/lib/api/reports.rb b/web/lib/api/reports.rb
index c16d85b..2044ca3 100644
--- a/web/lib/api/reports.rb
+++ b/web/lib/api/reports.rb
@@ -25,7 +25,7 @@ class Taginfo < Sinatra::Base
:data => res.map{ |row| {
:key => row['key'],
:count_all => row['count_all'].to_i,
- :count_all_fraction => row['count_all'].to_f / @stats['objects'],
+ :count_all_fraction => row['count_all'].to_f / @db.stats('objects'),
:values_all => row['values_all'].to_i,
:users_all => row['users_all'].to_i,
:prevalent_values => (row['prevalent_values'] || '').split('|').map{ |pv| pv }
diff --git a/web/lib/sql.rb b/web/lib/sql.rb
index 1b9db32..0ebc0d8 100644
--- a/web/lib/sql.rb
+++ b/web/lib/sql.rb
@@ -47,6 +47,10 @@ module SQL
Select.new(self, 'SELECT count(*) FROM ' + table)
end
+ def stats(key)
+ get_first_value('SELECT value FROM master_stats WHERE key=?', key).to_i
+ end
+
end
# Representation of a SELECT query.
@@ -153,4 +157,3 @@ module SQL
end
end
-
diff --git a/web/taginfo.rb b/web/taginfo.rb
index 81a2b6e..6ff55ab 100755
--- a/web/taginfo.rb
+++ b/web/taginfo.rb
@@ -72,8 +72,8 @@ class Taginfo < Sinatra::Base
@stats[row[0]] = row[1].to_i
end
- @stats['objects'] = @stats['nodes'] + @stats['ways'] + @stats['relations']
- @stats['object_tags'] = @stats['node_tags'] + @stats['way_tags'] + @stats['relation_tags']
+ @stats['objects'] = @stats['nodes'] + @stats['ways'] + @stats['relations'] # XXX to be removed
+ @stats['object_tags'] = @stats['node_tags'] + @stats['way_tags'] + @stats['relation_tags'] # XXX to be removed
@stats['nodes_with_tags_percent'] = (10000.0 * @stats['nodes_with_tags'] / @stats['nodes']).to_i.to_f / 100
@stats['tags_per_node'] = ( 100.0 * @stats['node_tags'] / @stats['nodes_with_tags']).to_i.to_f / 100
@stats['tags_per_way'] = ( 100.0 * @stats['way_tags'] / @stats['ways']).to_i.to_f / 100
diff --git a/web/views/reports/characters_in_keys.erb b/web/views/reports/characters_in_keys.erb
index 5c56710..c2bb497 100644
--- a/web/views/reports/characters_in_keys.erb
+++ b/web/views/reports/characters_in_keys.erb
@@ -6,33 +6,33 @@ case latin letters (a-z) and the underscore (_) are used, sometimes the colon
<table class="list">
<tr>
- <td class="number"><%= @stats['characters_in_keys_plain'] %></td>
- <td class="number"><%= sprintf '%.2f', @stats['characters_in_keys_plain'] * 100.0 / @stats['num_keys'] %>%</td>
+ <td class="number"><%= @db.stats('characters_in_keys_plain') %></td>
+ <td class="number"><%= sprintf '%.2f', @db.stats('characters_in_keys_plain') * 100.0 / @db.stats('num_keys') %>%</td>
<td>Plain keys (only latin lowercase letters (a-z) and underscore (_), first and last characters are letters).</td>
</tr>
<tr>
- <td class="number"><%= @stats['characters_in_keys_colon'] %></td>
- <td class="number"><%= sprintf '%.2f', @stats['characters_in_keys_colon'] * 100.0 / @stats['num_keys'] %>%</td>
+ <td class="number"><%= @db.stats('characters_in_keys_colon') %></td>
+ <td class="number"><%= sprintf '%.2f', @db.stats('characters_in_keys_colon') * 100.0 / @db.stats('num_keys') %>%</td>
<td>Like plain keys but with one or more colons (:) inside.</td>
</tr>
<tr>
- <td class="number"><%= @stats['characters_in_keys_letters'] %></td>
- <td class="number"><%= sprintf '%.2f', @stats['characters_in_keys_letters'] * 100.0 / @stats['num_keys'] %>%</td>
+ <td class="number"><%= @db.stats('characters_in_keys_letters') %></td>
+ <td class="number"><%= sprintf '%.2f', @db.stats('characters_in_keys_letters') * 100.0 / @db.stats('num_keys') %>%</td>
<td>Like plain keys but with uppercase latin letters or letters from other alphabets (and possibly with colons).</td>
</tr>
<tr>
- <td class="number"><%= @stats['characters_in_keys_space'] %></td>
- <td class="number"><%= sprintf '%.2f', @stats['characters_in_keys_space'] * 100.0 / @stats['num_keys'] %>%</td>
+ <td class="number"><%= @db.stats('characters_in_keys_space') %></td>
+ <td class="number"><%= sprintf '%.2f', @db.stats('characters_in_keys_space') * 100.0 / @db.stats('num_keys') %>%</td>
<td>Contains whitespace (space, tab, new line, carriage return, or whitespace characters from other alphabets).</td>
</tr>
<tr>
- <td class="number"><%= @stats['characters_in_keys_problem'] %></td>
- <td class="number"><%= sprintf '%.2f', @stats['characters_in_keys_problem'] * 100.0 / @stats['num_keys'] %>%</td>
+ <td class="number"><%= @db.stats('characters_in_keys_problem') %></td>
+ <td class="number"><%= sprintf '%.2f', @db.stats('characters_in_keys_problem') * 100.0 / @db.stats('num_keys') %>%</td>
<td>Contains possibly problematic characters (=+/&amp;&lt;&gt;;'"?%#@\,) or control characters.</td>
</tr>
<tr>
- <td class="number"><%= @stats['characters_in_keys_rest'] %></td>
- <td class="number"><%= sprintf '%.2f', @stats['characters_in_keys_rest'] * 100.0 / @stats['num_keys'] %>%</td>
+ <td class="number"><%= @db.stats('characters_in_keys_rest') %></td>
+ <td class="number"><%= sprintf '%.2f', @db.stats('characters_in_keys_rest') * 100.0 / @db.stats('num_keys') %>%</td>
<td>Everything else.</td>
</tr>
</table>
diff --git a/web/views/sources/db.erb b/web/views/sources/db.erb
index 46261f0..c0af281 100644
--- a/web/views/sources/db.erb
+++ b/web/views/sources/db.erb
@@ -7,34 +7,34 @@ of information about tags. It shows what tags are actually used.</p>
<div>
<h2><img class="icon_large" src="/img/types/all.24.png" alt=""/> Objects</h2>
<table class="stats">
- <tr><td style="width: 7em;">There are </td><td style="width: 7em;" class="number"><%= @stats['objects'].to_s_with_ts %></td><td> objects in the database</td></tr>
- <tr><td>with together </td><td class="number"><%= @stats['object_tags'].to_s_with_ts %></td><td> tags</td></tr>
+ <tr><td style="width: 7em;">There are </td><td style="width: 7em;" class="number"><%= @db.stats('objects').to_s_with_ts %></td><td> objects in the database</td></tr>
+ <tr><td>with together </td><td class="number"><%= @db.stats('object_tags').to_s_with_ts %></td><td> tags</td></tr>
</table>
</div>
<div>
<h2><img class="icon_large" src="/img/types/node.24.png" alt=""/> Nodes</h2>
<table class="stats">
- <tr><td style="width: 7em;">There are </td><td style="width: 7em;" class="number"><%= @stats['nodes'].to_s_with_ts %></td><td> nodes</td></tr>
- <tr><td>of which </td><td class="number"><%= @stats['nodes_with_tags'].to_s_with_ts %></td><td> have at least on tag</td></tr>
+ <tr><td style="width: 7em;">There are </td><td style="width: 7em;" class="number"><%= @db.stats('nodes').to_s_with_ts %></td><td> nodes</td></tr>
+ <tr><td>of which </td><td class="number"><%= @db.stats('nodes_with_tags').to_s_with_ts %></td><td> have at least on tag</td></tr>
<tr><td>(thats </td><td class="number"><%= @stats['nodes_with_tags_percent'] %></td><td> %)</td></tr>
- <tr><td>with together </td><td class="number"><%= @stats['node_tags'].to_s_with_ts %></td><td> tags</td></tr>
+ <tr><td>with together </td><td class="number"><%= @db.stats('node_tags').to_s_with_ts %></td><td> tags</td></tr>
<tr><td>(or about </td><td class="number"><%= @stats['tags_per_node'] %></td><td> tags per tagged node)</td></tr>
</table>
</div>
<div>
<h2><img class="icon_large" src="/img/types/way.24.png" alt=""/> Ways</h2>
<table class="stats">
- <tr><td style="width: 7em;">There are </td><td style="width: 7em;" class="number"><%= @stats['ways'].to_s_with_ts %></td><td> ways</td></tr>
- <tr><td>(of which </td><td class="number"><%= @stats['closed_ways'].to_s_with_ts %></td><td> are closed)</td></tr>
- <tr><td>with together </td><td class="number"><%= @stats['way_tags'].to_s_with_ts %></td><td> tags</td></tr>
+ <tr><td style="width: 7em;">There are </td><td style="width: 7em;" class="number"><%= @db.stats('ways').to_s_with_ts %></td><td> ways</td></tr>
+ <tr><td>(of which </td><td class="number"><%= @db.stats('closed_ways').to_s_with_ts %></td><td> are closed)</td></tr>
+ <tr><td>with together </td><td class="number"><%= @db.stats('way_tags').to_s_with_ts %></td><td> tags</td></tr>
<tr><td>(or about </td><td class="number"><%= @stats['tags_per_way'] %></td><td> tags per way)</td></tr>
</table>
</div>
<div>
<h2><img class="icon_large" src="/img/types/relation.24.png" alt=""/> Relations</h2>
<table class="stats">
- <tr><td style="width: 7em;">There are </td><td style="width: 7em;" class="number"><%= @stats['relations'].to_s_with_ts %></td><td> relations</td></tr>
- <tr><td>with together </td><td class="number"><%= @stats['relation_tags'].to_s_with_ts %></td><td> tags</td></tr>
+ <tr><td style="width: 7em;">There are </td><td style="width: 7em;" class="number"><%= @db.stats('relations').to_s_with_ts %></td><td> relations</td></tr>
+ <tr><td>with together </td><td class="number"><%= @db.stats('relation_tags').to_s_with_ts %></td><td> tags</td></tr>
<tr><td>(or about </td><td class="number"><%= @stats['tags_per_relation'] %></td><td> tags per relation)</td></tr>
</table>
</div>
@@ -44,8 +44,8 @@ of information about tags. It shows what tags are actually used.</p>
<div>
<h2><img class="icon_large" src="/img/types/tag.24.png" alt=""/> Tags</h2>
<table class="stats">
- <tr><td style="width: 7em;">There are </td><td style="width: 7em;" class="number"><%= @stats['num_keys'].to_s_with_ts %></td><td> different keys</td></tr>
- <tr><td>and </td><td class="number"><%= @stats['num_tags'].to_s_with_ts %></td><td> different tags</td></tr>
+ <tr><td style="width: 7em;">There are </td><td style="width: 7em;" class="number"><%= @db.stats('num_keys').to_s_with_ts %></td><td> different keys</td></tr>
+ <tr><td>and </td><td class="number"><%= @db.stats('num_tags').to_s_with_ts %></td><td> different tags</td></tr>
</table>
</div>
</div>