diff options
author | Jochen Topf <jochen@topf.org> | 2010-11-07 18:37:14 +0100 |
---|---|---|
committer | Jochen Topf <jochen@topf.org> | 2010-11-07 18:37:14 +0100 |
commit | 0e893eb2b33c7fd0eb26e0b29ce7b400f07b14ae (patch) | |
tree | 215bc901df8cbc73b52fb2d2bd1d0cb578cd8689 /web/views/reports | |
parent | a12227eb394955dfdff2a6032b75156754f8f804 (diff) | |
download | taginfo-0e893eb2b33c7fd0eb26e0b29ce7b400f07b14ae.tar taginfo-0e893eb2b33c7fd0eb26e0b29ce7b400f07b14ae.tar.gz |
Refactoring order_by
Diffstat (limited to 'web/views/reports')
-rw-r--r-- | web/views/reports/index.erb | 1 | ||||
-rw-r--r-- | web/views/reports/key_lengths.erb | 111 |
2 files changed, 112 insertions, 0 deletions
diff --git a/web/views/reports/index.erb b/web/views/reports/index.erb index 401bdd6..4a18155 100644 --- a/web/views/reports/index.erb +++ b/web/views/reports/index.erb @@ -4,6 +4,7 @@ <ul> <li><a href="/reports/characters_in_keys">Characters in keys</a></li> + <li><a href="/reports/key_lengths">Keys lengths</a></li> </ul> <h2>Wiki</h2> diff --git a/web/views/reports/key_lengths.erb b/web/views/reports/key_lengths.erb new file mode 100644 index 0000000..b4e6429 --- /dev/null +++ b/web/views/reports/key_lengths.erb @@ -0,0 +1,111 @@ +<h1><%= @title %></h1> + +<% + hist = Array.new + @db.execute('SELECT length(key) AS length, count(*) AS count FROM db.keys GROUP BY length(key) ORDER BY length(key)') do |row| + hist[row['length'].to_i] = row['count'].to_i + end + hist = hist.map{ |item| item.nil? ? 0 : item } +%> + +<div id="canvas"></div> + +<table id="keys"> +</table> + +<script type="text/javascript+protovis"> + +var data = <%= hist.to_json %>; + +var w=900, h=300; + +var vis = new pv.Panel() + .canvas('canvas') + .width(w) + .height(h) + .top(20) + .right(20) + .bottom(20) + .left(40); + +var x = pv.Scale.linear(0, <%= hist.size %>).range(0, w); +var y = pv.Scale.linear(0, <%= hist.max %>).range(0, h); + +var bar = vis.add(pv.Bar) + .data(data) + .bottom(0) + .left(function() x(this.index)-3) + .height(y) + .title(function(d) '' + d + ' keys of length ' + this.index ) + .width(6); + +vis.add(pv.Rule) + .data(y.ticks(10)) + .bottom(y) + .left(-5) + .width(-5) + .anchor("left").add(pv.Label) + .textMargin(8) + .text(x.tickFormat); + +vis.add(pv.Rule) + .data(x.ticks(10)) + .left(x) + .bottom(-2) + .height(-5) + .anchor("bottom").add(pv.Label) + .textMargin(8) + .text(x.tickFormat); + +vis.render(); + +</script> +<script type="text/javascript"> + jQuery(document).ready(function() { + jQuery('#keys').flexigrid({ + url: '/api/2/db/keys', + method: 'GET', + dataType: 'json', + colModel: [ + { display: 'Length', name: 'length', width: 60, sortable: true, align: 'right' }, + { display: 'Key', name: 'key', width: 180, sortable: true, align: 'left' }, + { display: '<span title="Number of objects with this key"><img src="/img/types/all.16.png" alt=""/> Total</span>', name: 'count_all', width: 250, sortable: true, align: 'center' }, + { display: 'Users', name: 'users_all', width: 44, sortable: true, align: 'right' }, + { 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: '<span title="Number of different values for this key">Values</span>', name: 'values_all', width: 70, sortable: true, align: 'right' }, + { display: 'Prevalent Values', name: 'prevalent_values', width: 500, sortable: true, align: 'left' } + ], + searchitems: [ + { display: 'Key', name: 'key' } + ], + sortname: 'length', + sortorder: 'asc', + 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.key.length, + link_to_key(row.key), + print_value_with_percent(row.count_all, row.count_all_fraction), + print_with_ts(row.users_all), + row.in_wiki ? '✔' : '-', + row.in_josm ? '✔' : '-', + // row.in_potlatch ? '✔' : '-', + // row.in_merkaartor ? '✔' : '-', + print_with_ts(row.values_all), + print_tag_list(row.key, row.prevalent_values) + ] }; + }); + return data; + } + }); + }); +</script> |