106 lines
3.0 KiB
JavaScript
106 lines
3.0 KiB
JavaScript
(function(context, $) {
|
|
|
|
"use strict";
|
|
|
|
context.JK = context.JK || {};
|
|
context.JK.FeedItemSessionTimer = null;
|
|
context.JK.FeedItemSession = function($parentElement, options){
|
|
|
|
var logger = context.JK.logger;
|
|
var rest = new context.JK.Rest();
|
|
|
|
var $feedItem = $parentElement;
|
|
var $description = $('.description', $feedItem)
|
|
var $musicians = $('.musician-detail', $feedItem)
|
|
var $controls = $('.session-controls', $feedItem);
|
|
var $status = $('.session-status', $feedItem);
|
|
var playing = false;
|
|
var toggledOpen = false;
|
|
var musicSessionId = $feedItem.attr('data-music-session');
|
|
|
|
if(!$feedItem.is('.feed-entry')) {
|
|
throw "$parentElement must be a .feed-entry"
|
|
}
|
|
|
|
function startPlay() {
|
|
var img = $('.play-icon', $feedItem);
|
|
img.attr('src', '/assets/content/icon_pausebutton.png');
|
|
$controls.trigger('play.listenBroadcast');
|
|
playing = true;
|
|
}
|
|
|
|
function stopPlay() {
|
|
var img = $('.play-icon', $feedItem);
|
|
img.attr('src', '/assets/content/icon_playbutton.png');
|
|
$controls.trigger('pause.listenBroadcast');
|
|
playing = false;
|
|
}
|
|
|
|
function togglePlay() {
|
|
if(playing) {
|
|
$status.text('SESSION IN PROGRESS');
|
|
stopPlay();
|
|
}
|
|
else {
|
|
startPlay();
|
|
}
|
|
return false;
|
|
}
|
|
|
|
function toggleDetails() {
|
|
if(toggledOpen) {
|
|
$feedItem.css('height', $feedItem.height() + 'px')
|
|
$feedItem.animate({'height': $feedItem.data('original-max-height')}).promise().done(function() {
|
|
$feedItem.css('height', 'auto').css('max-height', $feedItem.data('original-max-height'));
|
|
|
|
$musicians.hide();
|
|
$description.css('height', $description.data('original-height'));
|
|
$description.dotdotdot();
|
|
});
|
|
}
|
|
else {
|
|
$description.trigger('destroy.dot');
|
|
$description.data('original-height', $description.css('height')).css('height', 'auto');
|
|
$musicians.show();
|
|
$feedItem.animate({'max-height': '1000px'});
|
|
}
|
|
|
|
toggledOpen = !toggledOpen;
|
|
|
|
return false;
|
|
}
|
|
|
|
function stateChange(e, data) {
|
|
if(data.displayText) $status.text(data.displayText);
|
|
|
|
if(data.isEnd) stopPlay();
|
|
|
|
if(data.isSessionOver) {
|
|
$controls.removeClass('inprogress').addClass('ended')
|
|
}
|
|
}
|
|
|
|
function events() {
|
|
$('.details', $feedItem).click(toggleDetails);
|
|
$('.details-arrow', $feedItem).click(toggleDetails);
|
|
$('.play-button', $feedItem).click(togglePlay);
|
|
$controls.bind('statechange.listenBroadcast', stateChange);
|
|
}
|
|
|
|
function initialize() {
|
|
$('.timeago', $feedItem).timeago();
|
|
$('.dotdotdot', $feedItem).dotdotdot();
|
|
$controls.listenBroadcast();
|
|
context.JK.prettyPrintElements($('time.duration', $feedItem).show());
|
|
context.JK.setInstrumentAssetPath($('.instrument-icon', $feedItem));
|
|
|
|
$feedItem.data('original-max-height', $feedItem.css('height'));
|
|
|
|
events();
|
|
}
|
|
|
|
initialize();
|
|
|
|
return this;
|
|
}
|
|
})(window, jQuery); |