1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
|
<%
# 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('<span style="font-size: ' + size + '%;"> • </span>');
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 '<span style="font-size: ' + size + '%;"> ' + link_to_tag(d[0], d[1]) + ' </span>'
});
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();
}
|