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

113 lines
3.4 KiB
JavaScript

(function (context, $) {
"use strict";
context.JK = context.JK || {};
context.JK.JoinTestSessionDialog = function (app) {
var logger = context.JK.logger;
var rest = context.JK.Rest();
var $dialog = null;
var $joinTestSessionBtn = null;
function joinSession(sessionId) {
app.layout.closeDialog('join-test-session')
$joinTestSessionBtn.removeClass('disabled');
context.JK.GA.trackSessionCount(true, true, 0);
// we redirect to the session screen, which handles the REST call to POST /participants.
logger.debug("joining session screen: " + sessionId)
context.location = '/client#/session/' + sessionId;
};
function createSession(sessionId) {
var data = {};
data.name = 'First Session';
data.description = 'This is my first ever session on JamKazam, so please be gentle. :)';
data.genres = ['other']
data.musician_access = true;
data.approval_required = false;
data.fan_access = true;
data.fan_chat = true;
data.legal_policy = 'Standard'
data.legal_terms = true;
data.language = 'eng';
data.start = new Date().toDateString() + ' ' + context.JK.formatUtcTime(new Date(), false);
data.duration = "60";
data.recurring_mode = 'once'
data.music_notations = [];
data.timezone = 'Central Time (US & Canada),America/Chicago'
data.open_rsvps = true
data.rsvp_slots = [];
// auto pick an 'other' instrument
var otherId = context.JK.server_to_client_instrument_map.Other.server_id; // get server ID
var otherInstrumentInfo = context.JK.instrument_id_to_instrument[otherId]; // get display name
var beginnerLevel = 1; // default to beginner
var instruments = [ {id: otherId, name: otherInstrumentInfo.display, level: beginnerLevel} ];
$.each(instruments, function(index, instrument) {
var slot = {};
slot.instrument_id = instrument.id;
slot.proficiency_level = instrument.level;
slot.approve = true;
data.rsvp_slots.push(slot);
});
data.isUnstructuredRsvp = true;
rest.createScheduledSession(data)
.done(function(response) {
logger.debug("created test session on server");
//$('#create-session-buttons .btn-next').off('click');
var newSessionId = response.id;
joinSession(newSessionId);
})
.fail(function(jqXHR){
$joinTestSessionBtn.removeClass('disabled');
logger.debug("unable to schedule a test session")
app.notifyServerError(jqXHR, "Unable to schedule a test session");
})
}
function registerEvents() {
$joinTestSessionBtn.click(function() {
if($joinTestSessionBtn.is('.disabled')) return false;
$joinTestSessionBtn.addClass('disabled');
createSession();
return false;
})
}
function beforeShow() {
$joinTestSessionBtn.removeClass('disabled');
}
function beforeHide() {
}
function initialize() {
var dialogBindings = {
'beforeShow': beforeShow,
'beforeHide': beforeHide
};
app.bindDialog('join-test-session', dialogBindings);
$dialog = $('#join-test-session-dialog');
$joinTestSessionBtn = $dialog.find('.join-test-session')
registerEvents();
};
this.initialize = initialize;
}
return this;
})(window, jQuery);