<% # This is the maximum number of keys/tags/relations in the lists. Javascript # code will only show as many of them as will fit in the window. tagcloud_number_of_keys = 100 tagcloud_number_of_tags = 100 tagcloud_number_of_rels = 100 keys = @db.select("SELECT key FROM popular_keys ORDER BY scale1 DESC LIMIT #{ tagcloud_number_of_keys }").execute() tags = @db.select("SELECT skey, svalue FROM top_tags WHERE skey NOT IN ('source', 'source_ref', 'attribution') ORDER BY count_all DESC LIMIT #{ tagcloud_number_of_tags }").execute() rels = @db.select("SELECT rtype FROM db.relation_types WHERE count >= 1000 ORDER BY count DESC LIMIT #{ tagcloud_number_of_rels }").execute() %> var data = { 'keys': <%= keys.map{ |tag| tag['key'] }.to_json %>, 'tags': <%= tags.map{ |entry| [ entry['skey'], entry['svalue'] ] }.to_json %>, 'rels': <%= rels.map{ |row| row['rtype'] }.to_json %> }; up = function() {}; function create_list(element, max_height, data, decrease, func) { var i = 0, size = 160; while (element.innerHeight() < max_height && data[i]) { element.append(func(data[i], size)); element.append(''); i++; size -= decrease; } element.append('...'); } function resize_home() { create_list(jQuery('#key_list').empty(), 120, data.keys, 1, function(d, size) { return link_to_key(d, { 'style': 'font-size: ' + size + "%;" }); }); create_list(jQuery('#tag_list').empty(), 120, data.tags, 2, function(d, size) { return ' ' + link_to_tag(d[0], d[1]) + ' ' }); create_list(jQuery('#relation_list').empty(), 120, data.rels, 5, function(d, size) { return link_to_rtype(d, { 'style': 'font-size: ' + size + "%;" }); }); } function page_init() { jQuery(window).resize(resize_home); resize_home(); }