jam-cloud/web/app/assets/javascripts/feed_item_session.js

80 lines
2.2 KiB
JavaScript

(function(context, $) {
"use strict";
context.JK = context.JK || {};
context.JK.FeedItemSession = function($parentElement, options){
var $feedItem = $parentElement;
var $description = $('.description', $feedItem)
var $musicians = $('.musician-detail', $feedItem)
var $controls = $('.session-controls', $feedItem);
var playing = false;
var toggledOpen = false;
if(!$feedItem.is('.feed-entry')) {
throw "$parentElement must be a .feed-entry"
}
function togglePlay() {
if(playing) {
var img = $('.play-icon', $(this));
img.attr('src', '/assets/content/icon_playbutton.png');
$controls.trigger('pause.listenBroadcast');
}
else {
var img = $('.play-icon', $(this));
img.attr('src', '/assets/content/icon_pausebutton.png');
$controls.trigger('play.listenBroadcast');
}
playing = !playing;
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.dotdotdot();
});
}
else {
$description.trigger('destroy.dot');
$musicians.show();
$feedItem.animate({'max-height': '1000px'});
}
toggledOpen = !toggledOpen;
return false;
}
function events() {
$('.details', $feedItem).click(toggleDetails);
$('.details-arrow', $feedItem).click(toggleDetails);
$('.play-button', $feedItem).click(togglePlay);
}
function initialize() {
$('.timeago', $feedItem).timeago();
$('.dotdotdot', $feedItem).dotdotdot();
$controls.listenBroadcast();
context.JK.prettyPrintElements($('time.duration', $feedItem));
context.JK.setInstrumentAssetPath($('.instrument-icon', $feedItem));
$feedItem.data('original-max-height', $feedItem.css('height'));
events();
}
initialize();
return this;
}
})(window, jQuery);