%
# 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();
}