summaryrefslogtreecommitdiff
path: root/web/views/reports
diff options
context:
space:
mode:
authorJochen Topf <jochen@topf.org>2010-11-07 18:37:14 +0100
committerJochen Topf <jochen@topf.org>2010-11-07 18:37:14 +0100
commit0e893eb2b33c7fd0eb26e0b29ce7b400f07b14ae (patch)
tree215bc901df8cbc73b52fb2d2bd1d0cb578cd8689 /web/views/reports
parenta12227eb394955dfdff2a6032b75156754f8f804 (diff)
downloadtaginfo-0e893eb2b33c7fd0eb26e0b29ce7b400f07b14ae.tar
taginfo-0e893eb2b33c7fd0eb26e0b29ce7b400f07b14ae.tar.gz
Refactoring order_by
Diffstat (limited to 'web/views/reports')
-rw-r--r--web/views/reports/index.erb1
-rw-r--r--web/views/reports/key_lengths.erb111
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 ? '&#x2714;' : '-',
+ row.in_josm ? '&#x2714;' : '-',
+ // row.in_potlatch ? '&#x2714;' : '-',
+ // row.in_merkaartor ? '&#x2714;' : '-',
+ print_with_ts(row.values_all),
+ print_tag_list(row.key, row.prevalent_values)
+ ] };
+ });
+ return data;
+ }
+ });
+ });
+</script>