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