diff options
author | Jochen Topf <jochen@topf.org> | 2010-11-06 16:13:39 +0100 |
---|---|---|
committer | Jochen Topf <jochen@topf.org> | 2010-11-06 16:13:39 +0100 |
commit | 08f5fc6f39402873942051dbbd068c6f69766c9d (patch) | |
tree | c3a467b5b6a47e4642890899f7c65c21778362fc /web | |
parent | f58d0baf67458a504dfeb1b7277434e2ad062179 (diff) | |
download | taginfo-08f5fc6f39402873942051dbbd068c6f69766c9d.tar taginfo-08f5fc6f39402873942051dbbd068c6f69766c9d.tar.gz |
Begin of stats refactoring
Diffstat (limited to 'web')
-rw-r--r-- | web/lib/api/db.rb | 8 | ||||
-rw-r--r-- | web/lib/api/reports.rb | 2 | ||||
-rw-r--r-- | web/lib/sql.rb | 5 | ||||
-rwxr-xr-x | web/taginfo.rb | 4 | ||||
-rw-r--r-- | web/views/reports/characters_in_keys.erb | 24 | ||||
-rw-r--r-- | web/views/sources/db.erb | 24 |
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 (=+/&<>;'"?%#@\,) 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> |