summaryrefslogtreecommitdiff
path: root/web/viewsjs/test-index.js.erb
blob: 8920c3c8b0009e2b9bda70b52602207efe39e0b4 (plain)
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 + '%;"> &bull; </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();
}