Spaces:
Running
Running
File size: 4,543 Bytes
11dee72 0df8086 11dee72 0df8086 11dee72 0df8086 11dee72 0df8086 11dee72 bc7cad0 11dee72 bc7cad0 11dee72 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 |
/* --------------------------------------------------*/
/* ------------- MEDIA PLAYBACK ----------------- */
/* ---------------------https://web.archive.org/web/20220121094229/ */
/* https://childes.talkbank.org/browser/index.php?url=Eng-UK/MPI-EVA-Manchester/Eleanor/020006b.cha */
/*-----------------------------*/
$(function (){
// Add "timeupdate" listener to "#speakera".
var vid = document.getElementById("speakera");
vid.addEventListener("timeupdate", function(){
updatePosition(this.currentTime);
});
// Listen for user to pause video.
vid.addEventListener("pause", function(){
$( '.movControl' ).removeClass( 'playing' ); // Mark all bullets as not "playing".
$( '.movControl' ).html("▶"); // Change all bullets to "play".
});
// Listen for user to play video. ** i added this
vid.addEventListener("play", function(){
$( '.movControl' ).html("■"); // Change all bullets to "stop".
});
// Click on the little 'play' character at end of utterance line.
//$("body").on('click', ".movControl",
$("body").on('click', 'span[name=utterance]',
function(event) {
var vid = document.getElementById("speakera");
// If user clicked "stop" on a playing line, pause video, remove ".playing", change icon to "play".
// if($(this).children(".movControl").hasClass('playing')) {
if(!vid.paused) {
vid.pause();
}
else {
var newTime = $(this).attr("beg");
vid.currentTime = newTime / 1000;
vid.play();
var segmentDur = $(this).attr("end") - newTime
setTimeout(function(){
document.getElementById('speakera').pause();
}, segmentDur);
}
/*
// If video currently paused, and click on highlighted line, then play video.
if(( vid.paused ) && ($(this).children(".movControl").hasClass('playing'))) {
vid.play();
}
// Set media to clicked location and pause video
else {
var newTime = $(this).attr("beg");
vid.currentTime = newTime / 1000;
vid.pause();
}
*/
}
);
getIntervals();
});
// Create "intervals[]" from each <span name="utterance"> using its id/class to get the begin/end times.
// Needs to be called whenever a new chat file is loaded.
var intervals = [];
function getIntervals() {
$( 'span[name=utterance]' ).each(function( index ) {
//console.log( index + ", begin: " + $( this ).prop('beg') + ", end: " + $( this ).prop('end'));
intervals.push({"begin": $( this ).prop('beg'), "end": $( this ).prop('end')});
});
//console.log(intervals);
}
// Set $ref as not playing.
function notPlaying($ref) {
$ref.removeClass('uttPlaying');
$ref.children(".movControl").html("▶"); // Show "play" icon.
$ref.children(".movControl").removeClass("playing");
}
// Set $ref as playing.
function isPlaying($ref) {
$ref.addClass('uttPlaying');
$ref.children(".movControl").html("■"); // Show "stop" icon.
$ref.children(".movControl").addClass("playing");
}
// Returns true if $elem is beyond the current scrolled view.
function isScrolledOutOfView($elem) {
var $window = $(window);
var windowTop = $window.scrollTop();
var windowBottom = windowTop + $window.height();
var elemTop = $elem.offset().top;
var elemBottom = elemTop + $elem.height();
return ((elemBottom > windowBottom) || (elemTop < windowTop));
}
// Callback function for timeupdate event.
function updatePosition( currentTime ) {
var msTime = currentTime * 1000;
for ( c = 0; c < intervals.length; c++ ) {
if ((msTime >= intervals[c].begin) && (msTime < intervals[c].end)) {
notPlaying($( 'span[name=utterance]' )); // Mark everything as "not playing".
isPlaying($( '#' + intervals[c].begin )); // Mark line corresponding to currentTime as "playing".
// Auto-scroll if playing line is out of view.
if (isScrolledOutOfView($('.playing'))) {
$('html, body').animate({
scrollTop: ($(".playing").offset().top - ($(window).height() / 2))
}, 500);
}
}
//$( 'span[name=utterance]' ).removeClass('uttPlaying'); // No interval defined at currentTime.
}
}
|