jam-cloud/web/app/assets/javascripts/jquery.lessonSessionActions.js

113 lines
2.9 KiB
JavaScript

(function(context, $) {
"use strict";
context.JK = context.JK || {};
// creates an iconic/graphical instrument selector. useful when there is minimal real-estate
$.fn.lessonSessionActions = function(options) {
return this.each(function(index) {
function close() {
$parent.btOff();
$parent.focus();
}
var $parent = $(this);
if($parent.data('lessonSessionActions')) {
//return;
}
$parent.data('lessonSessionActions', options)
function onLessonActionSelected() {
var $li = $(this);
var lessonAction = $li.attr('data-lesson-option');
close();
$parent.triggerHandler(context.JK.EVENTS.LESSON_SESSION_ACTION, {lessonAction: lessonAction, options: $parent.data('lessonSessionActions')});
return false;
};
// if the user goes into the bubble, remove
function waitForBubbleHover($bubble) {
$bubble.hoverIntent({
over: function() {
if(timeout) {
clearTimeout(timeout);
timeout = null;
}
},
out: function() {
$parent.btOff();
}});
}
var timeout = null;
var html = context._.template($('#template-lesson-session-actions').html(), options, { variable: 'data' })
var extraClasses = ' '
var width = 100;
var otherOverlap = 22;
if (options.attachments_only) {
extraClasses += 'attachments-only'
width = 120;
}
if(options.isRequested) {
extraClasses += 'is-requested '
width = 100;
}
else if(options.isScheduled) {
extraClasses += 'is-scheduled '
width = 120;
}
if(options.cardNotOk) {
extraClasses += 'not-card-ok '
width = 90;
}
if(options.isAdmin) {
extraClasses += 'is-admin '
width = 135;
}
if (options.chat_dialog) {
var $sidebar = $parent.closest('.dialog')
}
else if (options.attachments_only) {
var $sidebar = $parent.closest('#sidebar-div');
}
else {
var $sidebar = $parent.closest('.screen')
}
context.JK.hoverBubble($parent, html, {
trigger:'none',
cssClass: 'lesson-action-popup' + extraClasses,
spikeGirth:0,
spikeLength:0,
otherOverlap: ((width - 90) / 2) + 25,
overlap: -10,
width:width,
closeWhenOthersOpen: true,
offsetParent: $sidebar,
positions:['bottom'],
preShow: function() {
},
postShow:function(container) {
$(container).find('li').click(onLessonActionSelected)
if(timeout) {
clearTimeout(timeout);
timeout = null;
}
waitForBubbleHover($(container))
timeout = setTimeout(function() {$parent.btOff()}, 6000)
}
});
});
}
})(window, jQuery);