diff -r 8ee8c9ea2a9f -r cd85b780f4a5 js/playscreen.js --- a/js/playscreen.js Thu Apr 04 17:44:59 2013 +0200 +++ b/js/playscreen.js Wed Apr 10 15:39:28 2013 +0200 @@ -4,6 +4,20 @@ var deltaT = new Date("Wed, 02 May 2012 19:00:00 +0000") / 1000 + adjust; +function secsToString(seconds) { + var hours = Math.floor(seconds/3600), + minutes = Math.floor(seconds/60) % 60, + secs = Math.floor(seconds % 60); + function pad(n) { + var r = n.toString(); + while (r.length < 2) { + r = "0" + r; + } + return r; + } + return (hours ? (hours + ":") : "") + pad(minutes) + ":" + pad(secs); +} + function solrUrl(table, params) { var u = "http://159.217.144.101:8050/sia-solr/" + table + "/select?" + $.param(params) + "&wt=json&json.wrf=?"; console.log(u); @@ -12,6 +26,42 @@ function showData() { + data.chapters = []; + + data.segments.forEach(function(segment, index) { + var topics = segment.topics.filter(function(t) { + return t.topic !== topicPoubelle; + }).map(function(t) { + return t.topic + }); + var openchapters = data.chapters.filter(function(c) { + return c.open; + }); + openchapters.forEach(function(c) { + var i = topics.indexOf(c.topic); + if (i == -1) { + c.open = false; + } else { + c.endMMSO = index; + c.endTime = segment.end; + topics.splice(i, 1); + } + }); + + if (topics.length) { + topics.forEach(function(t) { + data.chapters.push({ + startMMSO: index, + endMMSO: index, + startTime: segment.start, + endTime: segment.end, + topic: t, + open: true + }) + }) + } + }); + data.topiclabels.forEach(function(v) { var words = _(v.words).map(function(v, k) { return { @@ -49,20 +99,6 @@ }) var ordertag = 0; - - function secsToString(seconds) { - var hours = Math.floor(seconds/3600), - minutes = Math.floor(seconds/60) % 60, - secs = Math.floor(seconds % 60); - function pad(n) { - var r = n.toString(); - while (r.length < 2) { - r = "0" + r; - } - return r; - } - return (hours ? (hours + ":") : "") + pad(minutes) + ":" + pad(secs); - } $(".duration").text(secsToString(data.duration)); @@ -120,10 +156,44 @@ return parseInt($(this).attr("data-topic-id")); }) ); - for (var i = 0; i < data.segments.length; i++) { - var mmso = data.segments[i]; - if (mmso.start >= player.currentTime && hasTopics(mmso, topics)) { - player.setCurrentTime(mmso.start); + for (var i = 0; i < data.chapters.length; i++) { + var chap = data.chapters[i]; + if (chap.startTime > player.currentTime && topics.indexOf(chap.topic) !== -1) { + player.setCurrentTime(chap.startTime); + throttledShowLocal(); + return; + } + } + /* If next not found, loop around ! */ + for (var i = 0; i < data.chapters.length; i++) { + var chap = data.chapters[i]; + if (topics.indexOf(chap.topic) !== -1) { + player.setCurrentTime(chap.startTime); + throttledShowLocal(); + return; + } + } + } + + function goToPrev() { + var topics = Array.prototype.slice.call( + $(".topic.selected").map(function() { + return parseInt($(this).attr("data-topic-id")); + }) + ); + for (var i = data.chapters.length; i--;) { + var chap = data.chapters[i]; + if (chap.startTime < (player.currentTime - 2) && topics.indexOf(chap.topic) !== -1) { + player.setCurrentTime(chap.startTime); + throttledShowLocal(); + return; + } + } + /* If previous not found, loop around ! */ + for (var i = data.chapters.length; i--;) { + var chap = data.chapters[i]; + if (topics.indexOf(chap.topic) !== -1) { + player.setCurrentTime(chap.startTime); throttledShowLocal(); return; } @@ -502,7 +572,9 @@ + '<% if (show_link) { %><% } %>' + '<% if (show_link) { %><% } %>' + '

<% if (show_link) { %><% } %>' - + '@<%- data.from_user_name %>:<% if (show_link) { %><% } %> <%= htext %>

'), + + '@<%- data.from_user_name %>:<% if (show_link) { %><% } %> <%= htext %>

' + + '<% if (show_time) { %>

<%- secsToString(timestamp) %>

<% } %>' + + ''), callnum = 0, tweetstructure = {}, requestedtweets = {}, @@ -563,6 +635,12 @@ var randtweets = data.randomtweets.filter(function(tw) { return (tw.timestamp > (localpos - localduration / 2)) && (tw.timestamp < (localpos + localduration / 2)) }); + if (selectedWord) { + var rx = new RegExp(selectedWord.replace(/(\W)/gm,'\\$1'),'im'); + randtweets = randtweets.filter(function(tw) { + return rx.test(tw.data.text); + }); + } var mod = Math.ceil(randtweets.length / 8); randtweets = randtweets.filter(function(v,k) { return !(k % mod); @@ -585,6 +663,7 @@ tweetstoshow.forEach(function(tw) { tw.show_link = true; + tw.show_time = false; }); tweetstoshow.sort(function(a, b) { @@ -755,10 +834,10 @@ player.duration = data.duration; player.on("play", function() { - $(".play-button").html("▐ ▌"); + $(".play-button").attr("title","Pause").addClass("playing"); }); player.on("pause", function() { - $(".play-button").text("▶"); + $(".play-button").attr("title","Lecture").removeClass("playing"); }); player.on("timeupdate", function(t) { playTime.text(secsToString(t)); @@ -779,10 +858,19 @@ } else { player.pause(); } + return false; }); - $(".next-button").click(goToNext); + $(".next-button").click(function() { + goToNext(); + return false; + }); + $(".prev-button").click(function() { + goToPrev(); + return false; + }); + $(".topics-block").on("mouseenter", ".topic", function() { var el = $(this); el.addClass("hover"); @@ -922,7 +1010,8 @@ weight: 0, data: tweet, htext: _(tweet.text).escape(), - show_link: false + show_link: false, + show_time: true }); },""); $(".user-tweets").show();