summaryrefslogtreecommitdiff
path: root/web/viewsjs/reports/key_lengths.js.erb
diff options
context:
space:
mode:
Diffstat (limited to 'web/viewsjs/reports/key_lengths.js.erb')
-rw-r--r--web/viewsjs/reports/key_lengths.js.erb148
1 files changed, 107 insertions, 41 deletions
diff --git a/web/viewsjs/reports/key_lengths.js.erb b/web/viewsjs/reports/key_lengths.js.erb
index 897df68..65ff8ce 100644
--- a/web/viewsjs/reports/key_lengths.js.erb
+++ b/web/viewsjs/reports/key_lengths.js.erb
@@ -1,49 +1,115 @@
var create_flexigrid_for = {
- reports: {
- key_lengths: {
- keys: function() {
- create_flexigrid('grid-keys', {
- url: '/api/2/db/keys?include=prevalent_values',
- colModel: [
- { display: 'Length', name: 'length', width: 60, sortable: true, align: 'right' },
- { display: texts.osm.key, name: 'key', width: 180, sortable: true },
- { display: 'Number of Objects', name: 'count_all', width: 250, sortable: true, align: 'center' },
- { 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 }
- ],
- searchitems: [
- { display: texts.osm.key, name: 'key' }
- ],
- sortname: 'length',
- sortorder: 'asc',
- 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),
- row.in_wiki ? '&#x2714;' : '-',
- row.in_josm ? '&#x2714;' : '-',
- // row.in_potlatch ? '&#x2714;' : '-',
- // row.in_merkaartor ? '&#x2714;' : '-',
- print_with_ts(row.values_all),
- print_prevalent_value_list(row.key, row.prevalent_values)
- ] };
- });
- return data;
- }
+ keys: function() {
+ create_flexigrid('grid-keys', {
+ url: '/api/2/db/keys?include=prevalent_values',
+ colModel: [
+ { display: 'Length', name: 'length', width: 60, sortable: true, align: 'right' },
+ { display: texts.osm.key, name: 'key', width: 180, sortable: true },
+ { display: 'Number of Objects', name: 'count_all', width: 250, sortable: true, align: 'center' },
+ { 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 }
+ ],
+ searchitems: [
+ { display: texts.osm.key, name: 'key' }
+ ],
+ sortname: 'length',
+ sortorder: 'asc',
+ 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),
+ row.in_wiki ? '&#x2714;' : '-',
+ row.in_josm ? '&#x2714;' : '-',
+ // row.in_potlatch ? '&#x2714;' : '-',
+ // row.in_merkaartor ? '&#x2714;' : '-',
+ print_with_ts(row.values_all),
+ print_prevalent_value_list(row.key, row.prevalent_values)
+ ] };
});
- },
- histogram: function() {
+ return data;
}
- }
+ });
}
};
+<%
+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 } %>
+
function page_init() {
- page_init2();
+ init_tabs([]);
+
+ var data = <%= hist.to_json %>;
+
+ var w=900, h=400, bar_width=6;
+
+ var vis = new pv.Panel()
+ .canvas('canvas')
+ .fillStyle('#ffffff')
+ .strokeStyle('#d0d0c8')
+ .width(w)
+ .height(h+4)
+ .top(10)
+ .right(15)
+ .bottom(40)
+ .left(60)
+ .lineWidth(1);
+
+ vis.add(pv.Label)
+ .data(['Key length'])
+ .font('12px Arial,sans-serif')
+ .bottom(-36)
+ .left(w/2)
+ .textAlign('center');
+
+ vis.add(pv.Label)
+ .data(['Number of keys'])
+ .font('12px Arial,sans-serif')
+ .left(-48)
+ .bottom(h/2)
+ .textAlign('center')
+ .textAngle(-Math.PI/2);
+
+ var x = pv.Scale.linear(0, <%= hist.size %>).range(bar_width, w - bar_width);
+ var y = pv.Scale.linear(0, <%= hist.max %>).range(0, h);
+
+ var bar = vis.add(pv.Bar)
+ .data(data)
+ .bottom(1)
+ .fillStyle('#083e76')
+ .left(function() { return x(this.index) - bar_width/2; })
+ .height(y)
+ .title(function(d) { return '' + d + ' keys of length ' + this.index; })
+ .width(bar_width);
+
+ vis.add(pv.Rule)
+ .data(y.ticks(10))
+ .bottom(y)
+ .left(-5)
+ .width(-5)
+ .anchor("left").add(pv.Label)
+ .font('10px Arial,sans-serif')
+ .textMargin(8)
+ .text(x.tickFormat);
+
+ vis.add(pv.Rule)
+ .data(x.ticks(10))
+ .left(x)
+ .bottom(-2)
+ .height(-5)
+ .anchor("bottom").add(pv.Label)
+ .font('10px Arial,sans-serif')
+ .textMargin(8)
+ .text(x.tickFormat);
+
+ vis.render();
}