jam-cloud/web/app/assets/javascripts/dialog/rsvpCancelDialog.js

116 lines
3.2 KiB
JavaScript

(function(context,$) {
"use strict";
context.JK = context.JK || {};
context.JK.RsvpCancelDialog = function(app, sessionId, rsvpRequestId) {
var EVENTS = context.JK.EVENTS;
var logger = context.JK.logger;
var rest = context.JK.Rest();
var $dialog = null;
var dialogId = 'rsvp-cancel-dialog';
var $btnCancel = $("#btnCancelRsvp");
function beforeShow(data) {
}
function afterShow(data) {
rest.getSessionHistory(sessionId)
.done(function(response) {
if (response) {
$('.session-name', $dialog).html(response.name);
$('.scheduled-start', $dialog).html(response.pretty_scheduled_start_with_timezone);
if (response.recurring_mode !== null && response.recurring_mode !== 'once') {
$('.schedule-recurrence', $dialog).html("Recurs " + response.recurring_mode + " on this day at this time");
}
}
})
.fail(function(xhr) {
});
}
function afterHide() {
}
function showDialog() {
return app.layout.showDialog(dialogId);
}
function events() {
$btnCancel.unbind('click');
$btnCancel.click(function(e) {
e.preventDefault();
var error = false;
var cancelOption = $('input[name="cancel"]:checked', $dialog).val();
rest.cancelRsvpRequest(sessionId, rsvpRequestId, cancelOption)
.done(function(response) {
var comment = $.trim($('#txtComment', $dialog).val());
if (comment.length > 0) {
rest.addSessionInfoComment(sessionId, comment)
.done(function(response) {
})
.fail(function(xhr) {
error = true;
$('.error', $dialog).html("Unexpected error occurred while saving message (" + xhr.status + ")");
$('.error', $dialog).show();
});
}
if (!error) {
$dialog.triggerHandler(EVENTS.RSVP_CANCELED);
app.layout.closeDialog(dialogId);
}
})
.fail(function(xhr) {
if (xhr.status == 400) {
var errorText = "";
$.each(xhr.responseJSON, function(key, value) {
errorText += value + ", ";
});
app.notify(
{
title: "Unable to Cancel RSVP",
text: errorText
}
);
}
else {
$('.error', $dialog).html("Unexpected error occurred while cancelling RSVP request (" + xhr.status + ")");
$('.error', $dialog).show();
}
});
return false;
});
}
function initialize() {
var dialogBindings = {
'beforeShow' : beforeShow,
'afterShow' : afterShow,
'afterHide': afterHide
};
app.bindDialog(dialogId, dialogBindings);
$dialog = $('[layout-id="' + dialogId + '"]');
$dialog.iCheck({
checkboxClass: 'icheckbox_minimal',
radioClass: 'iradio_minimal',
inheritClass: true
});
events();
}
this.initialize = initialize;
this.showDialog = showDialog;
}
return this;
})(window,jQuery);