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

121 lines
3.3 KiB
JavaScript

(function (context, $) {
"use strict";
context.JK = context.JK || {};
context.JK.AccountSessions = function (app) {
var logger = context.JK.logger;
var $sessions = null;
var rest = context.JK.Rest();
var userId;
var scheduledSessions = {};
function beforeShow(data) {
userId = context.JK.currentUserId;
}
function afterShow(data) {
resetForm();
renderAccountIdentity();
}
function resetForm() {
// remove all display errors
$('#account-sessions-content-scroller form .error-text').remove()
$('#account-sessions-content-scroller form .error').removeClass("error")
}
function cancelSession(e) {
e.preventDefault();
var session_id = $(e.target).attr('session-id');
var cancelSessionDlg = new context.JK.SessionCancelDialog(app, session_id);
cancelSessionDlg.initialize();
context.JK.app.layout.showDialog('session-cancel-dialog');
}
function detailSession(e) {
e.preventDefault();
var session_id = $(e.target).attr('session-id');
window.location = '/client#/account/sessionDetail/' + session_id;
}
function events() {
}
function appendSessions(template) {
$("#account-scheduled-sessions table tbody").replaceWith(template);
$sessions.find(".session-cancel-button").on('click', cancelSession);
$sessions.find(".session-detail-button").on('click', detailSession);
}
function populateSessions(sessionList) {
$.each(sessionList, function(index, session) {
var hasPending = false;
if (session.user_id == context.JK.currentUserId) {
if (session.pending_rsvp_requests.length > 0) {
hasPending = true;
}
if (hasPending)
session.notification_msg = "You have new RSVPs to review and approve, see details.";
else
session.notification_msg = "";
}
else {
$.each(session.pending_rsvp_requests, function(request) {
if (request.user_id == context.JK.currentUserId) {
hasPending = true;
}
});
if (hasPending)
session.notification_msg = "Your RSVP has not been processed by session organizer yet";
else
session.notification_msg = "";
}
scheduledSessions[session.id] = session;
});
var template = context._.template(
$('#template-account-session').html(),
{sessions: sessionList, current_user: userId},
{variable: 'data'}
);
appendSessions(template);
}
function renderAccountIdentity() {
rest.findScheduledRsvpSessions({})
.done(populateSessions)
.fail(app.ajaxError);
}
function navToAccount() {
resetForm();
window.location = '/client#/account';
}
function initialize() {
var screenBindings = {
'beforeShow': beforeShow,
'afterShow': afterShow
};
app.bindScreen('account/sessions', screenBindings);
$sessions = $('.account-sessions');
events();
}
this.initialize = initialize;
this.beforeShow = beforeShow;
this.afterShow = afterShow;
$(document).on("sessionCancelEvent", function() {
location.reload();
});
return this;
};
})(window, jQuery);