80 lines
2.2 KiB
JavaScript
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); |