js/startscreen.js
author veltr
Tue, 12 Mar 2013 18:29:44 +0100
branchold-fetch-method
changeset 8 ba3652cdd44b
parent 7 a2d5b669f663
child 11 9833f3e24105
permissions -rw-r--r--
Branch to keep old tweet fetch method
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
5
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
     1
var topicPoubelle = 13;
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
     2
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
     3
function showData() {
1
1f574d93e195 First tests
veltr
parents:
diff changeset
     4
    
5
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
     5
    var ordertag = 0;
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
     6
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
     7
    function secsToString(seconds) {
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
     8
        var hours = Math.floor(seconds/3600),
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
     9
            minutes = Math.floor(seconds/60) % 60,
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
    10
            secs = Math.floor(seconds % 60);
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
    11
        function pad(n) {
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
    12
            var r = n.toString();
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
    13
            while (r.length < 2) {
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
    14
                r = "0" + r;
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
    15
            }
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
    16
            return r;
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
    17
        }
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
    18
        return (hours ? (hours + ":") : "") + pad(minutes) + ":" + pad(secs);
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
    19
    }
1
1f574d93e195 First tests
veltr
parents:
diff changeset
    20
    
5
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
    21
    $(".duration").text(secsToString(data.duration));
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
    22
    
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
    23
    $(".topwords-list").on("click", "li", function() {
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
    24
        var el = $(this).toggleClass("selected");
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
    25
        wordFilter();
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
    26
    });
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
    27
    
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
    28
    var nmmso = data.segments.length;
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
    29
    
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
    30
    data.topics.forEach(function(topic) {
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
    31
        topic.score = 0;
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
    32
        topic.weights = [];
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
    33
        for (var i = 0; i < nmmso; i++) {
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
    34
            topic.weights.push(0);
2
0d947d167ec5 More tests
veltr
parents: 1
diff changeset
    35
        }
5
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
    36
    });
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
    37
    
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
    38
    data.segments.forEach(function(mmso, i) {
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
    39
        mmso.topics.forEach(function(t) {
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
    40
            data.topics[t.topic].weights[i] = t.weight;
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
    41
            data.topics[t.topic].score += t.weight;
2
0d947d167ec5 More tests
veltr
parents: 1
diff changeset
    42
        });
5
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
    43
        mmso.tweet_rate = mmso.tweet_count / mmso.duration; 
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
    44
    });
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
    45
    
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
    46
    var sortedTopics = data.topics.filter(function(t) {
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
    47
        return t.index !== topicPoubelle;
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
    48
    }).sort(function(a,b) {
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
    49
        return b.score - a.score;
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
    50
    });
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
    51
    
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
    52
    var selectedWords = [], searchString = "";
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
    53
    
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
    54
    function wordFilter() {
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
    55
        var selectedLis = $(".topwords-list li.selected");
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
    56
        searchString = $(".keyword-search").val() || "",
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
    57
        selectedWords = [];
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
    58
        if (searchString.length) {
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
    59
            selectedWords.push(searchString);
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
    60
        }
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
    61
        selectedLis.each(function() {
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
    62
            selectedWords.push($(this).text().trim());
1
1f574d93e195 First tests
veltr
parents:
diff changeset
    63
        });
5
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
    64
        if (selectedWords.length) {
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
    65
        /*
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
    66
            var topiclist = data.topics.filter(function(topic) {
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
    67
                if (topic.index === topicPoubelle) {
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
    68
                    return false;
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
    69
                }
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
    70
                var found = false,
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
    71
                    relevance = 0;
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
    72
                var foundWords = selectedWords.map(function() { return false });
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
    73
                topic.words.forEach(function(topicword) {
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
    74
                    selectedWords.forEach(function(selectedword, k) {
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
    75
                        if (topicword.word.search(selectedword) !== -1) {
4
26a901771957 Black Background
veltr
parents: 3
diff changeset
    76
                            found = true;
26a901771957 Black Background
veltr
parents: 3
diff changeset
    77
                            relevance += (.5 + topicword.weight);
26a901771957 Black Background
veltr
parents: 3
diff changeset
    78
                        }
2
0d947d167ec5 More tests
veltr
parents: 1
diff changeset
    79
                    });
4
26a901771957 Black Background
veltr
parents: 3
diff changeset
    80
                });
5
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
    81
                topic.relevance = relevance;
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
    82
                return found;
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
    83
            }).sort(function(a,b) {
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
    84
                return b.relevance - a.relevance;
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
    85
            });
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
    86
            */
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
    87
            TopicsBean.topicsForKeywords(selectedWords.join(","),{
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
    88
                callback: function(topicweights) {
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
    89
                    var topiclist = data.topics.filter(function(topic) {
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
    90
                        return topicweights[topic.index] > .01 && topic.index !== topicPoubelle;
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
    91
                    });
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
    92
                    topiclist.sort(function(a,b) {
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
    93
                        return topicweights[b.index] - topicweights[b.index]
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
    94
                    });
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
    95
                    showTopics(topiclist);
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
    96
                }
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
    97
            });
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
    98
        } else {
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
    99
            showTopics(sortedTopics);
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   100
        }
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   101
    }
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   102
    
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   103
    function showTopics(topiclist) {
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   104
        var topicHtmls = ["", "", ""];
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   105
        if (searchString.length) {
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   106
            var searchStringRx = new RegExp('(' + searchString.replace(/(\W)/g,'\\$1') + ')', "gim");
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   107
            $(".topwords-list li").each(function() {
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   108
                var el = $(this);
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   109
                el.html(el.text().replace(searchStringRx,'<span class="highlight">$1</span>'));
2
0d947d167ec5 More tests
veltr
parents: 1
diff changeset
   110
            });
5
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   111
        } else {
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   112
            $(".topwords-list li").each(function() {
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   113
                var el = $(this);
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   114
                el.text(el.text());
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   115
            });
2
0d947d167ec5 More tests
veltr
parents: 1
diff changeset
   116
        }
5
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   117
        var replaceRx = new RegExp('(' + selectedWords.map(function(w) {
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   118
            return w.replace(/(\W)/g,'\\$1')
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   119
        }).join("|") + ')', "gim");
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   120
        topiclist.forEach(function(topic,i) {
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   121
            var wordsToShow = topic.words.slice(0,8),
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   122
                max = wordsToShow[0].weight,
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   123
                min = Math.min(wordsToShow[wordsToShow.length - 1].weight, max - .01),
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   124
                scale = 10 / (max - min);
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   125
            var li = '<li class="shadow-block topic" data-topic-id="'
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   126
                + topic.index
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   127
                + '" data-timestamp="999999"><ul class="topic-words">'
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   128
                + wordsToShow.reduce(function(memwords, word) {
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   129
                    return memwords
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   130
                        + '<li style="font-size: '
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   131
                        + ( 10 + scale * (word.weight - min) )
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   132
                        + 'px;">'
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   133
                        + ( selectedWords.length
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   134
                            ? word.word.replace(replaceRx,'<span class="highlight">$1</span>')
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   135
                            : word.word )
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   136
                        + '</li>';
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   137
                },"")
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   138
                + '</ul></li>';
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   139
            topicHtmls[i % 3] += li;
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   140
        });
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   141
        var tb = $(".topics-block");
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   142
        tb.html(topicHtmls.reduce(function(mem,html) {
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   143
           return mem + '<ul class="topic-column">' + html + '</ul>' 
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   144
        },""));
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   145
        tb.css("top",0);
1
1f574d93e195 First tests
veltr
parents:
diff changeset
   146
        
5
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   147
        showTopicViz();
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   148
    }
6
14dd1980b0b9 MMSO Caching
veltr
parents: 5
diff changeset
   149
/*        
4
26a901771957 Black Background
veltr
parents: 3
diff changeset
   150
        var topwords = [], globwords = {};
26a901771957 Black Background
veltr
parents: 3
diff changeset
   151
        
26a901771957 Black Background
veltr
parents: 3
diff changeset
   152
        data.topics.forEach(function(topic) {
26a901771957 Black Background
veltr
parents: 3
diff changeset
   153
            topic.words.forEach(function(word) {
26a901771957 Black Background
veltr
parents: 3
diff changeset
   154
                globwords[word.word] = word.weight + (globwords[word.word] || 0)
26a901771957 Black Background
veltr
parents: 3
diff changeset
   155
            });
26a901771957 Black Background
veltr
parents: 3
diff changeset
   156
        })
26a901771957 Black Background
veltr
parents: 3
diff changeset
   157
        
26a901771957 Black Background
veltr
parents: 3
diff changeset
   158
        for (var w in globwords) {
26a901771957 Black Background
veltr
parents: 3
diff changeset
   159
            topwords.push({
26a901771957 Black Background
veltr
parents: 3
diff changeset
   160
                word : w,
26a901771957 Black Background
veltr
parents: 3
diff changeset
   161
                weight : globwords[w]
26a901771957 Black Background
veltr
parents: 3
diff changeset
   162
            });
26a901771957 Black Background
veltr
parents: 3
diff changeset
   163
        }
26a901771957 Black Background
veltr
parents: 3
diff changeset
   164
        topwords.sort(function(a, b) {
26a901771957 Black Background
veltr
parents: 3
diff changeset
   165
            return b.weight - a.weight;
26a901771957 Black Background
veltr
parents: 3
diff changeset
   166
        });
26a901771957 Black Background
veltr
parents: 3
diff changeset
   167
        
26a901771957 Black Background
veltr
parents: 3
diff changeset
   168
        $(".keyword-search").autocomplete({
26a901771957 Black Background
veltr
parents: 3
diff changeset
   169
            source: topwords.map(function(w) { return w.word })
26a901771957 Black Background
veltr
parents: 3
diff changeset
   170
        }).on("keyup change paste", wordFilter);
6
14dd1980b0b9 MMSO Caching
veltr
parents: 5
diff changeset
   171
 */
14dd1980b0b9 MMSO Caching
veltr
parents: 5
diff changeset
   172
// /*
14dd1980b0b9 MMSO Caching
veltr
parents: 5
diff changeset
   173
    var globwords = {};
5
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   174
    
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   175
    data.topics.forEach(function(topic) {
6
14dd1980b0b9 MMSO Caching
veltr
parents: 5
diff changeset
   176
        topic.words.forEach(function(topicword) {
14dd1980b0b9 MMSO Caching
veltr
parents: 5
diff changeset
   177
        	topicword.word.split(" ").filter(function(w) {
14dd1980b0b9 MMSO Caching
veltr
parents: 5
diff changeset
   178
        		return w.length > 2;
14dd1980b0b9 MMSO Caching
veltr
parents: 5
diff changeset
   179
        	}).forEach(function(w) {
14dd1980b0b9 MMSO Caching
veltr
parents: 5
diff changeset
   180
        		globwords[w] = 2 * topicword.weight + (globwords[w] || 0)
14dd1980b0b9 MMSO Caching
veltr
parents: 5
diff changeset
   181
        	});
5
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   182
        });
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   183
    });
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   184
    
6
14dd1980b0b9 MMSO Caching
veltr
parents: 5
diff changeset
   185
    var ntw = data.topwords.length;
14dd1980b0b9 MMSO Caching
veltr
parents: 5
diff changeset
   186
    
14dd1980b0b9 MMSO Caching
veltr
parents: 5
diff changeset
   187
    data.topwords.forEach(function(v, k) {
14dd1980b0b9 MMSO Caching
veltr
parents: 5
diff changeset
   188
    	var weight = (ntw - k)/ntw;
14dd1980b0b9 MMSO Caching
veltr
parents: 5
diff changeset
   189
    	v.split(" ").filter(function(w) {
14dd1980b0b9 MMSO Caching
veltr
parents: 5
diff changeset
   190
    		return w.length > 2;
14dd1980b0b9 MMSO Caching
veltr
parents: 5
diff changeset
   191
    	}).forEach(function(w) {
14dd1980b0b9 MMSO Caching
veltr
parents: 5
diff changeset
   192
    		globwords[w] = weight + (globwords[w] || 0)
14dd1980b0b9 MMSO Caching
veltr
parents: 5
diff changeset
   193
    	});
5
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   194
    });
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   195
    
6
14dd1980b0b9 MMSO Caching
veltr
parents: 5
diff changeset
   196
    delete globwords.des;
14dd1980b0b9 MMSO Caching
veltr
parents: 5
diff changeset
   197
    
14dd1980b0b9 MMSO Caching
veltr
parents: 5
diff changeset
   198
    var allwords = _(globwords).keys(),
14dd1980b0b9 MMSO Caching
veltr
parents: 5
diff changeset
   199
    	topwords = _(globwords).map(function(v, k) {
14dd1980b0b9 MMSO Caching
veltr
parents: 5
diff changeset
   200
    		return {
14dd1980b0b9 MMSO Caching
veltr
parents: 5
diff changeset
   201
    			word: k,
14dd1980b0b9 MMSO Caching
veltr
parents: 5
diff changeset
   202
    			weight: v
14dd1980b0b9 MMSO Caching
veltr
parents: 5
diff changeset
   203
    		}
14dd1980b0b9 MMSO Caching
veltr
parents: 5
diff changeset
   204
    	});
14dd1980b0b9 MMSO Caching
veltr
parents: 5
diff changeset
   205
    
14dd1980b0b9 MMSO Caching
veltr
parents: 5
diff changeset
   206
    topwords.sort(function(a,b) {
14dd1980b0b9 MMSO Caching
veltr
parents: 5
diff changeset
   207
    	return b.weight - a.weight
14dd1980b0b9 MMSO Caching
veltr
parents: 5
diff changeset
   208
    });
14dd1980b0b9 MMSO Caching
veltr
parents: 5
diff changeset
   209
    
5
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   210
    allwords.sort();
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   211
    
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   212
    $(".keyword-search").autocomplete({
7
a2d5b669f663 new data access method
veltr
parents: 6
diff changeset
   213
        source: allwords,
a2d5b669f663 new data access method
veltr
parents: 6
diff changeset
   214
        change: function() {
a2d5b669f663 new data access method
veltr
parents: 6
diff changeset
   215
        	window.setInterval(wordFilter,0);
a2d5b669f663 new data access method
veltr
parents: 6
diff changeset
   216
        }
5
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   217
    }).on("keyup change paste", wordFilter);
6
14dd1980b0b9 MMSO Caching
veltr
parents: 5
diff changeset
   218
// */
5
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   219
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   220
    var wordsToShow = topwords.slice(0,80),
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   221
        max = wordsToShow[0].weight,
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   222
        min = Math.min(wordsToShow[wordsToShow.length - 1].weight, max - .01),
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   223
        scale = 10 / (max - min);
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   224
    
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   225
    $(".topwords-list").html(wordsToShow.reduce(function(mem, d) {
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   226
        return mem
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   227
            + '<li style="font-size: '
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   228
            + ( 10 + scale * (d.weight - min) )
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   229
            + 'px;">'
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   230
            + d.word
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   231
            + '</li>'
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   232
    },""));
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   233
    
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   234
    function showTopicViz() {
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   235
        var selectedBlocks = $(".topic.selected, .topic.hover"),
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   236
            sbl = selectedBlocks.length,
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   237
            topicBlocks = $(".topic");
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   238
        if (!sbl && topicBlocks.length < sortedTopics.length) {
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   239
            selectedBlocks = topicBlocks;
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   240
            sbl = selectedBlocks.length;
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   241
        }
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   242
        var topicsAndColors = [];
7
a2d5b669f663 new data access method
veltr
parents: 6
diff changeset
   243
        selectedBlocks.each(function() {
5
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   244
            var el = $(this),
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   245
                topicid = parseInt(el.attr("data-topic-id"));
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   246
            topicsAndColors.push({
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   247
                "$": el,
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   248
                timestamp: parseInt(el.attr("data-timestamp")),
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   249
                hovered: el.hasClass("hover"),
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   250
                id: topicid,
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   251
                topic: data.topics[topicid]
4
26a901771957 Black Background
veltr
parents: 3
diff changeset
   252
            });
5
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   253
        });
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   254
        topicsAndColors.sort(function(a,b) {
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   255
           return ( a.timestamp - b.timestamp ) || ( a.id - b.id );
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   256
        });
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   257
        topicBlocks.css("background","");
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   258
        topicsAndColors.forEach(function(topic, i) {
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   259
            topic.color = topic.hovered ? "#ffff00" : colorset[i % colorset.length];
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   260
            topic.$.css("background", topic.color);
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   261
        });
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   262
        
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   263
        for (var i = 0; i < nmmso; i++) {
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   264
            var opacity = 0,
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   265
                rgb = [0,0,0];
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   266
            topicsAndColors.forEach(function(topic) {
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   267
                var c = Raphael.getRGB(topic.color),
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   268
                    o = topic.topic.weights[i];
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   269
                rgb[0] += c.r * o;
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   270
                rgb[1] += c.g * o;
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   271
                rgb[2] += c.b * o;
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   272
                opacity += o;
4
26a901771957 Black Background
veltr
parents: 3
diff changeset
   273
            });
5
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   274
            if (opacity) {
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   275
                color = Raphael.rgb.apply(Raphael, rgb.map(function(c) {
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   276
                    return c/opacity;
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   277
                }));
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   278
                segmentrects[i].show();
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   279
                segmentrects[i].attr({
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   280
                    fill: color,
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   281
                    opacity: .5 + .5 * opacity
4
26a901771957 Black Background
veltr
parents: 3
diff changeset
   282
                });
5
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   283
            } else {
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   284
                segmentrects[i].hide();
1
1f574d93e195 First tests
veltr
parents:
diff changeset
   285
            }
2
0d947d167ec5 More tests
veltr
parents: 1
diff changeset
   286
        }
0d947d167ec5 More tests
veltr
parents: 1
diff changeset
   287
        
7
a2d5b669f663 new data access method
veltr
parents: 6
diff changeset
   288
        var url = "playscreen.html#visibletopics="
a2d5b669f663 new data access method
veltr
parents: 6
diff changeset
   289
        	+ Array.prototype.join.call($(".topic:visible").map(function(){return $(this).attr("data-topic-id")}))
a2d5b669f663 new data access method
veltr
parents: 6
diff changeset
   290
        	+ "&selectedtopics="
a2d5b669f663 new data access method
veltr
parents: 6
diff changeset
   291
        	+ Array.prototype.slice.call(topicsAndColors.map(function(t){return t.id}))
a2d5b669f663 new data access method
veltr
parents: 6
diff changeset
   292
        	+ "&keywords="
a2d5b669f663 new data access method
veltr
parents: 6
diff changeset
   293
        	+ selectedWords.map(function(w) {
a2d5b669f663 new data access method
veltr
parents: 6
diff changeset
   294
        		return encodeURIComponent(w);
a2d5b669f663 new data access method
veltr
parents: 6
diff changeset
   295
        	}).join(",");
a2d5b669f663 new data access method
veltr
parents: 6
diff changeset
   296
        	
a2d5b669f663 new data access method
veltr
parents: 6
diff changeset
   297
    	$(".play-button").attr("href",url);
a2d5b669f663 new data access method
veltr
parents: 6
diff changeset
   298
        
5
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   299
    }
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   300
    
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   301
    var jqsvg = $(".start-svg");
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   302
        paper = new Raphael(jqsvg[0]),
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   303
        ph = jqsvg.height(),
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   304
        pw = jqsvg.width(),
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   305
        yscale = (ph - 20) / data.duration,
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   306
        mx = Math.max.apply(Math, data.minutes.map(function(s) { return s.count})),
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   307
        xscale = (pw - 50)/mx;
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   308
    
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   309
    var segmentrects = data.segments.map(function(mmso) {
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   310
        var rect = paper.rect(0, yscale * mmso.start, pw - 50, 1+yscale * mmso.duration);
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   311
        rect.attr({stroke: "none"});
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   312
        return rect;
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   313
    });
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   314
    
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   315
    var d = "M" + data.minutes.map(function(s) {
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   316
            var x = xscale * s.count;
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   317
            return x
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   318
                + ","
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   319
                + yscale * (s.from + 20)
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   320
                + "L"
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   321
                + x
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   322
                + ","
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   323
                + yscale * (s.from + 40);
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   324
        }).join("L");
2
0d947d167ec5 More tests
veltr
parents: 1
diff changeset
   325
        
5
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   326
    paper.path(d).attr({
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   327
        "stroke-width": 4,
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   328
        "stroke": "#000000",
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   329
        opacity: .5
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   330
    });
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   331
    paper.path(d).attr({
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   332
        "stroke-width": 1,
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   333
        "stroke": "#ffffff"
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   334
    });
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   335
    
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   336
    for (var i=0; i < data.duration; i += 1800) {
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   337
        var y = yscale * i;
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   338
        paper.path("M0," + y + "L" + pw + "," + y).attr({
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   339
            stroke: "#666"
4
26a901771957 Black Background
veltr
parents: 3
diff changeset
   340
        });
5
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   341
        paper.text(pw - 2, y + 6, secsToString(i)).attr({
4
26a901771957 Black Background
veltr
parents: 3
diff changeset
   342
            "text-anchor": "end",
26a901771957 Black Background
veltr
parents: 3
diff changeset
   343
            "fill": "#ffffff"
26a901771957 Black Background
veltr
parents: 3
diff changeset
   344
        });
5
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   345
    }
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   346
    paper.text(pw-2, ph-14, secsToString(data.duration)).attr({
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   347
        "text-anchor": "end",
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   348
        "fill": "#ffffff"
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   349
    });
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   350
    paper.path("M0," + (ph-20) + "L" + pw + "," + (ph-20)).attr({
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   351
        stroke: "#666"
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   352
    });
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   353
    paper.text(0, ph - 14,"tweets/min.").attr({
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   354
        "text-anchor": "start",
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   355
        "fill": "#ffffff"
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   356
    });
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   357
    
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   358
    for (var k = 2; k < 6; k++) {
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   359
        var x = xscale * k * 1000;
4
26a901771957 Black Background
veltr
parents: 3
diff changeset
   360
        paper.path("M" + x + ",0L" + x + "," + (ph - 10)).attr({
26a901771957 Black Background
veltr
parents: 3
diff changeset
   361
            stroke: "#666"
26a901771957 Black Background
veltr
parents: 3
diff changeset
   362
        });
26a901771957 Black Background
veltr
parents: 3
diff changeset
   363
        
5
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   364
        paper.text(x-2, ph - 14,k+"k").attr({
4
26a901771957 Black Background
veltr
parents: 3
diff changeset
   365
            "fill": "#ffffff"
2
0d947d167ec5 More tests
veltr
parents: 1
diff changeset
   366
        });
5
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   367
    }
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   368
    
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   369
    wordFilter();
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   370
    
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   371
    $(".topics-block").on("mouseenter", ".topic", function() {
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   372
        var el = $(this);
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   373
        el.addClass("hover");
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   374
        showTopicViz();
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   375
    }).on("mouseleave", ".topic", function() {
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   376
        $(this).removeClass("hover");
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   377
        showTopicViz();
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   378
    }).on("click", ".topic", function() {
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   379
        var el = $(this);
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   380
        $(this).toggleClass("selected");
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   381
        el.attr("data-timestamp", el.hasClass("selected") ? ++ordertag : 999999);
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   382
        showTopicViz();
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   383
    });
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   384
}
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   385
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   386
var data = { duration: 10200, topics: [] },
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   387
    colorset = ["#E41A1C", "#377EB8", "#4DAF4A", "#984EA3", "#FF7F00", "#A65628", "#F781BF"];
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   388
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   389
$(function() {
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   390
    
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   391
    $(".topics-block").draggable({axis:"y"});
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   392
    
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   393
    var loadedSteps = 0,
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   394
        stepsToFullyLoaded = 0;
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   395
    
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   396
    function checkIfLoaded() {
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   397
        loadedSteps++;
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   398
        if (loadedSteps >= stepsToFullyLoaded) {
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   399
            setTimeout(showData,0);
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   400
        }
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   401
    }
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   402
    
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   403
    function loadJson(url, propname, callback) {
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   404
        stepsToFullyLoaded++;
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   405
        $.getJSON(url, function(d) {
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   406
            if (callback) {
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   407
                var res = callback(d);
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   408
            } else {
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   409
                var res = d;
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   410
            }
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   411
            if (propname) {
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   412
                data[propname] = res;
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   413
            }
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   414
            checkIfLoaded();
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   415
        });
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   416
    }
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   417
    
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   418
    function solrUrl(table, params) {
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   419
        return "http://159.217.144.101:8050/sia-solr/" + table + "/select?" + $.param(params) + "&wt=json&json.wrf=?";
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   420
    }
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   421
    
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   422
    function loadFromTopicsBean(method, propname, args, callback) {
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   423
        stepsToFullyLoaded++;
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   424
        var arg = args || [],
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   425
            cb = function(d) {
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   426
                if (callback) {
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   427
                    var res = callback(d);
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   428
                } else {
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   429
                    var res = d;
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   430
                }
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   431
                if (propname) {
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   432
                    data[propname] = res;
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   433
                }
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   434
                checkIfLoaded();
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   435
            }
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   436
        arg.push({callback: cb});
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   437
        TopicsBean[method].apply(TopicsBean,arg);
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   438
    }
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   439
    
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   440
    loadJson("data/minutes.json", "minutes");
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   441
    
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   442
    loadJson(
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   443
        solrUrl("MMSO", {q: "*:*", fl: "topic*,MMSO_id,multimediaSegment", rows: 250 }),
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   444
        "segments",
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   445
        function(d) {
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   446
            return d.response.docs.map(function(mmso) {
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   447
                var tc = mmso.multimediaSegment.match(/\d+/g),
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   448
                    start = parseInt(tc[0]),
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   449
                    end = parseInt(tc[1]),
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   450
                    topics = [];
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   451
                for (var k in mmso) {
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   452
                    if (k.substr(0,5) === "topic" && mmso[k] > .01) {
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   453
                        topics.push({
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   454
                            topic: parseInt(k.substr(5)),
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   455
                            weight: mmso[k]
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   456
                        })
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   457
                    }
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   458
                }
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   459
                topics.sort(function(a,b) {
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   460
                    return b.weight - a.weight;
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   461
                });
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   462
/*                topics = topics.filter(function(t) {
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   463
                    return t.topic !== topicPoubelle
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   464
                }).slice(0,1);
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   465
                topics[0].weight = 1; */
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   466
                return {
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   467
                    id: mmso.MMSO_id,
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   468
                    start: start,
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   469
                    end: end,
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   470
                    duration: end - start,
6
14dd1980b0b9 MMSO Caching
veltr
parents: 5
diff changeset
   471
                    topics: topics
5
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   472
                }
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   473
            }).sort(function(a,b) {
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   474
                return a.start - b.start;
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   475
            });
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   476
        })
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   477
    
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   478
    dwr.engine.setTimeout(60000);
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   479
    TopicsBean._path = "http://159.217.144.101:8050/sia-solr/dwr";
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   480
    
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   481
    loadFromTopicsBean("getTopicsNumber",false,false,function(topic_count) {
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   482
        for (var i = 0; i < topic_count; i++) {
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   483
            data.topics.push(null);
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   484
        }
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   485
        data.topics.forEach(function(v, k) {
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   486
            loadFromTopicsBean("getTopicDistribution",false,[k, 50, false],function(topic) {
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   487
                var words = topic.match(/[^=,{]+=0.\d{0,8}/g);
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   488
                data.topics[k] = {
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   489
                    index: k,
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   490
                    words: words.map(function(w) {
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   491
                        var parts = w.split("=");
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   492
                        return {
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   493
                            word: parts[0].trim(),
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   494
                            weight: parseFloat(parts[1])
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   495
                        }
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   496
                    })
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   497
                }
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   498
            });
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   499
            
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   500
        });
2
0d947d167ec5 More tests
veltr
parents: 1
diff changeset
   501
        
1
1f574d93e195 First tests
veltr
parents:
diff changeset
   502
    });
5
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   503
    
6
14dd1980b0b9 MMSO Caching
veltr
parents: 5
diff changeset
   504
    loadFromTopicsBean("getTopWords","topwords",[200]);
5
490e4d1b6fee started work on "play" screen
veltr
parents: 4
diff changeset
   505
    
1
1f574d93e195 First tests
veltr
parents:
diff changeset
   506
});