Reordered everything again.
This commit is contained in:
@@ -12,7 +12,9 @@ $(function() {
|
|||||||
CodeOceanEditorSubmissions,
|
CodeOceanEditorSubmissions,
|
||||||
CodeOceanEditorTurtle,
|
CodeOceanEditorTurtle,
|
||||||
CodeOceanEditorWebsocket,
|
CodeOceanEditorWebsocket,
|
||||||
CodeOceanEditorPrompt
|
CodeOceanEditorPrompt,
|
||||||
|
CodeOceanEditorCodePilot,
|
||||||
|
CodeOceanEditorRequestForComments
|
||||||
);
|
);
|
||||||
|
|
||||||
if ($('#editor').isPresent() && CodeOceanEditor) {
|
if ($('#editor').isPresent() && CodeOceanEditor) {
|
||||||
|
@@ -1,18 +1,19 @@
|
|||||||
var CodeOceanEditor = {
|
var CodeOceanEditor = {
|
||||||
|
//ACE-Editor-Path
|
||||||
ACE_FILES_PATH: '/assets/ace/',
|
ACE_FILES_PATH: '/assets/ace/',
|
||||||
|
THEME: 'ace/theme/textmate',
|
||||||
|
|
||||||
|
//Color-Encoding for Percentages in Progress Bars (For submissions)
|
||||||
ADEQUATE_PERCENTAGE: 50,
|
ADEQUATE_PERCENTAGE: 50,
|
||||||
ALT_1_KEY_CODE: 161,
|
SUCCESSFULL_PERCENTAGE: 90,
|
||||||
ALT_2_KEY_CODE: 8220,
|
|
||||||
ALT_3_KEY_CODE: 182,
|
//Key-Codes (for Hotkeys)
|
||||||
ALT_4_KEY_CODE: 162,
|
|
||||||
ALT_R_KEY_CODE: 174,
|
ALT_R_KEY_CODE: 174,
|
||||||
ALT_S_KEY_CODE: 8218,
|
ALT_S_KEY_CODE: 8218,
|
||||||
ALT_T_KEY_CODE: 8224,
|
ALT_T_KEY_CODE: 8224,
|
||||||
FILENAME_URL_PLACEHOLDER: '{filename}',
|
ENTER_KEY_CODE: 13,
|
||||||
SUCCESSFULL_PERCENTAGE: 90,
|
|
||||||
THEME: 'ace/theme/textmate',
|
//Request-For-Comments-Configuration
|
||||||
REMEMBER_TAB: false,
|
|
||||||
AUTOSAVE_INTERVAL: 15 * 1000,
|
|
||||||
REQUEST_FOR_COMMENTS_DELAY: 3 * 60 * 1000,
|
REQUEST_FOR_COMMENTS_DELAY: 3 * 60 * 1000,
|
||||||
REQUEST_TOOLTIP_TIME: 5000,
|
REQUEST_TOOLTIP_TIME: 5000,
|
||||||
|
|
||||||
@@ -24,19 +25,9 @@ var CodeOceanEditor = {
|
|||||||
active_file: undefined,
|
active_file: undefined,
|
||||||
active_frame: undefined,
|
active_frame: undefined,
|
||||||
running: false,
|
running: false,
|
||||||
output_mode_is_streaming: true,
|
|
||||||
|
|
||||||
numMessages: 0,
|
|
||||||
lastCopyText: null,
|
lastCopyText: null,
|
||||||
|
|
||||||
autosaveTimer: null,
|
|
||||||
autosaveLabel: "#autosave-label span",
|
|
||||||
|
|
||||||
ENTER_KEY_CODE: 13,
|
|
||||||
|
|
||||||
flowrResultHtml: '<div class="panel panel-default"><div id="{{headingId}}" role="tab" class="panel-heading"><h4 class="panel-title"><a data-toggle="collapse" data-parent="#flowrHint" href="#{{collapseId}}" aria-expanded="true" aria-controls="{{collapseId}}"></a></h4></div><div id="{{collapseId}}" role="tabpanel" aria-labelledby="{{headingId}}" class="panel-collapse collapse"><div class="panel-body"></div></div></div>',
|
|
||||||
|
|
||||||
|
|
||||||
configureEditors: function () {
|
configureEditors: function () {
|
||||||
_.each(['modePath', 'themePath', 'workerPath'], function (attribute) {
|
_.each(['modePath', 'themePath', 'workerPath'], function (attribute) {
|
||||||
ace.config.set(attribute, this.ACE_FILES_PATH);
|
ace.config.set(attribute, this.ACE_FILES_PATH);
|
||||||
@@ -50,7 +41,6 @@ var CodeOceanEditor = {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
||||||
confirmReset: function (event) {
|
confirmReset: function (event) {
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
if (confirm($('#start-over').data('message-confirm'))) {
|
if (confirm($('#start-over').data('message-confirm'))) {
|
||||||
@@ -171,21 +161,6 @@ var CodeOceanEditor = {
|
|||||||
$('button i.fa-spin').hide();
|
$('button i.fa-spin').hide();
|
||||||
},
|
},
|
||||||
|
|
||||||
resetSaveTimer: function () {
|
|
||||||
clearTimeout(this.autosaveTimer);
|
|
||||||
this.autosaveTimer = setTimeout(this.autosave.bind(this), this.AUTOSAVE_INTERVAL);
|
|
||||||
},
|
|
||||||
|
|
||||||
autosave: function () {
|
|
||||||
var date = new Date();
|
|
||||||
var autosaveLabel = $(this.autosaveLabel);
|
|
||||||
autosaveLabel.parent().css("visibility", "visible");
|
|
||||||
autosaveLabel.text(date.getHours() + ':' + date.getMinutes() + ':' + date.getSeconds());
|
|
||||||
autosaveLabel.text(date.toLocaleTimeString());
|
|
||||||
this.autosaveTimer = null;
|
|
||||||
this.createSubmission($('#autosave'), null);
|
|
||||||
},
|
|
||||||
|
|
||||||
resizeParentOfAceEditor: function (element){
|
resizeParentOfAceEditor: function (element){
|
||||||
// calculate needed size: window height - position of top of button-bar - 60 for bar itself and margins
|
// calculate needed size: window height - position of top of button-bar - 60 for bar itself and margins
|
||||||
var windowHeight = window.innerHeight - $('#editor-buttons').offset().top - 60;
|
var windowHeight = window.innerHeight - $('#editor-buttons').offset().top - 60;
|
||||||
@@ -588,10 +563,6 @@ var CodeOceanEditor = {
|
|||||||
this.renderScore();
|
this.renderScore();
|
||||||
this.showFirstFile();
|
this.showFirstFile();
|
||||||
|
|
||||||
$(window).on("beforeunload", function() {
|
$(window).on("beforeunload", this.unloadAutoSave.bind(this));
|
||||||
if(this.autosaveTimer != null){
|
|
||||||
this.autosave();
|
|
||||||
}
|
|
||||||
}.bind(this));
|
|
||||||
}
|
}
|
||||||
};
|
};
|
@@ -1,6 +1,19 @@
|
|||||||
CodeOceanEditorEvaluation = {
|
CodeOceanEditorEvaluation = {
|
||||||
chunkBuffer: [{streamedResponse: true}],
|
chunkBuffer: [{streamedResponse: true}],
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Scoring-Functions
|
||||||
|
*/
|
||||||
|
scoreCode: function (event) {
|
||||||
|
event.preventDefault();
|
||||||
|
this.createSubmission('#assess', null, function (response) {
|
||||||
|
this.showSpinner($('#assess'));
|
||||||
|
$('#score_div').removeClass('hidden');
|
||||||
|
var url = response.score_url;
|
||||||
|
this.initializeSocketForScoring(url);
|
||||||
|
}.bind(this));
|
||||||
|
},
|
||||||
|
|
||||||
handleScoringResponse: function (results) {
|
handleScoringResponse: function (results) {
|
||||||
this.printScoringResults(results);
|
this.printScoringResults(results);
|
||||||
var score = _.reduce(results, function (sum, result) {
|
var score = _.reduce(results, function (sum, result) {
|
||||||
@@ -10,40 +23,6 @@ CodeOceanEditorEvaluation = {
|
|||||||
this.renderScore();
|
this.renderScore();
|
||||||
},
|
},
|
||||||
|
|
||||||
handleTestResponse: function (result) {
|
|
||||||
this.clearOutput();
|
|
||||||
this.printOutput(result, false, 0);
|
|
||||||
if (this.qa_api) {
|
|
||||||
this.qa_api.executeCommand('syncOutput', [result]);
|
|
||||||
}
|
|
||||||
this.showStatus(result);
|
|
||||||
this.showOutputBar();
|
|
||||||
},
|
|
||||||
|
|
||||||
printOutput: function (output, colorize, index) {
|
|
||||||
var element = this.findOrCreateOutputElement(index);
|
|
||||||
if (!colorize) {
|
|
||||||
if (output.stdout != undefined && output.stdout != '') {
|
|
||||||
element.append(output.stdout)
|
|
||||||
}
|
|
||||||
|
|
||||||
if (output.stderr != undefined && output.stderr != '') {
|
|
||||||
element.append('There was an error: StdErr: ' + output.stderr);
|
|
||||||
}
|
|
||||||
|
|
||||||
} else if (output.stderr) {
|
|
||||||
element.addClass('text-warning').append(output.stderr);
|
|
||||||
this.flowrOutputBuffer += output.stderr;
|
|
||||||
this.QaApiOutputBuffer.stderr += output.stderr;
|
|
||||||
} else if (output.stdout) {
|
|
||||||
element.addClass('text-success').append(output.stdout);
|
|
||||||
this.flowrOutputBuffer += output.stdout;
|
|
||||||
this.QaApiOutputBuffer.stdout += output.stdout;
|
|
||||||
} else {
|
|
||||||
element.addClass('text-muted').text($('#output').data('message-no-output'));
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
printScoringResult: function (result, index) {
|
printScoringResult: function (result, index) {
|
||||||
$('#results').show();
|
$('#results').show();
|
||||||
var panel = $('#dummies').children().first().clone();
|
var panel = $('#dummies').children().first().clone();
|
||||||
@@ -98,16 +77,22 @@ CodeOceanEditorEvaluation = {
|
|||||||
this.renderProgressBar(score, maximum_score);
|
this.renderProgressBar(score, maximum_score);
|
||||||
},
|
},
|
||||||
|
|
||||||
scoreCode: function (event) {
|
/**
|
||||||
event.preventDefault();
|
* Testing-Logic
|
||||||
this.createSubmission('#assess', null, function (response) {
|
*/
|
||||||
this.showSpinner($('#assess'));
|
handleTestResponse: function (result) {
|
||||||
$('#score_div').removeClass('hidden');
|
this.clearOutput();
|
||||||
var url = response.score_url;
|
this.printOutput(result, false, 0);
|
||||||
this.initializeSocketForScoring(url);
|
if (this.qa_api) {
|
||||||
}.bind(this));
|
this.qa_api.executeCommand('syncOutput', [result]);
|
||||||
|
}
|
||||||
|
this.showStatus(result);
|
||||||
|
this.showOutputBar();
|
||||||
},
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Stop-Logic
|
||||||
|
*/
|
||||||
stopCode: function (event) {
|
stopCode: function (event) {
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
if (this.isActiveFileStoppable()) {
|
if (this.isActiveFileStoppable()) {
|
||||||
@@ -132,6 +117,9 @@ CodeOceanEditorEvaluation = {
|
|||||||
this.hidePrompt();
|
this.hidePrompt();
|
||||||
},
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Output-Logic
|
||||||
|
*/
|
||||||
renderWebsocketOutput: function(msg){
|
renderWebsocketOutput: function(msg){
|
||||||
var element = this.findOrCreateRenderElement(0);
|
var element = this.findOrCreateRenderElement(0);
|
||||||
element.append(msg.data);
|
element.append(msg.data);
|
||||||
@@ -149,6 +137,31 @@ CodeOceanEditorEvaluation = {
|
|||||||
|
|
||||||
clearOutput: function() {
|
clearOutput: function() {
|
||||||
$('#output pre').remove();
|
$('#output pre').remove();
|
||||||
|
},
|
||||||
|
|
||||||
|
printOutput: function (output, colorize, index) {
|
||||||
|
var element = this.findOrCreateOutputElement(index);
|
||||||
|
if (!colorize) {
|
||||||
|
if (output.stdout != undefined && output.stdout != '') {
|
||||||
|
element.append(output.stdout)
|
||||||
|
}
|
||||||
|
|
||||||
|
if (output.stderr != undefined && output.stderr != '') {
|
||||||
|
element.append('There was an error: StdErr: ' + output.stderr);
|
||||||
|
}
|
||||||
|
|
||||||
|
} else if (output.stderr) {
|
||||||
|
element.addClass('text-warning').append(output.stderr);
|
||||||
|
this.flowrOutputBuffer += output.stderr;
|
||||||
|
this.QaApiOutputBuffer.stderr += output.stderr;
|
||||||
|
} else if (output.stdout) {
|
||||||
|
element.addClass('text-success').append(output.stdout);
|
||||||
|
this.flowrOutputBuffer += output.stdout;
|
||||||
|
this.QaApiOutputBuffer.stdout += output.stdout;
|
||||||
|
} else {
|
||||||
|
element.addClass('text-muted').text($('#output').data('message-no-output'));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
@@ -1,5 +1,6 @@
|
|||||||
CodeOceanEditorFlowr = {
|
CodeOceanEditorFlowr = {
|
||||||
isFlowrEnabled: true,
|
isFlowrEnabled: true,
|
||||||
|
flowrResultHtml: '<div class="panel panel-default"><div id="{{headingId}}" role="tab" class="panel-heading"><h4 class="panel-title"><a data-toggle="collapse" data-parent="#flowrHint" href="#{{collapseId}}" aria-expanded="true" aria-controls="{{collapseId}}"></a></h4></div><div id="{{collapseId}}" role="tabpanel" aria-labelledby="{{headingId}}" class="panel-collapse collapse"><div class="panel-body"></div></div></div>',
|
||||||
|
|
||||||
handleStderrOutputForFlowr: function () {
|
handleStderrOutputForFlowr: function () {
|
||||||
if (!this.isFlowrEnabled) return;
|
if (!this.isFlowrEnabled) return;
|
||||||
|
93
app/assets/javascripts/editor/paiticipantsupport.js.erb
Normal file
93
app/assets/javascripts/editor/paiticipantsupport.js.erb
Normal file
@@ -0,0 +1,93 @@
|
|||||||
|
CodeOceanEditorFlowr = {
|
||||||
|
isFlowrEnabled: true,
|
||||||
|
flowrResultHtml: '<div class="panel panel-default"><div id="{{headingId}}" role="tab" class="panel-heading"><h4 class="panel-title"><a data-toggle="collapse" data-parent="#flowrHint" href="#{{collapseId}}" aria-expanded="true" aria-controls="{{collapseId}}"></a></h4></div><div id="{{collapseId}}" role="tabpanel" aria-labelledby="{{headingId}}" class="panel-collapse collapse"><div class="panel-body"></div></div></div>',
|
||||||
|
|
||||||
|
handleStderrOutputForFlowr: function () {
|
||||||
|
if (!this.isFlowrEnabled) return;
|
||||||
|
|
||||||
|
var flowrUrl = $('#flowrHint').data('url');
|
||||||
|
var flowrHintBody = $('#flowrHint .panel-body');
|
||||||
|
var queryParameters = {
|
||||||
|
query: this.flowrOutputBuffer
|
||||||
|
};
|
||||||
|
|
||||||
|
flowrHintBody.empty();
|
||||||
|
|
||||||
|
jQuery.getJSON(flowrUrl, queryParameters, function (data) {
|
||||||
|
jQuery.each(data.queryResults, function (index, question) {
|
||||||
|
var collapsibleTileHtml = this.flowrResultHtml.replace(/{{collapseId}}/g, 'collapse-' + question).replace(/{{headingId}}/g, 'heading-' + question);
|
||||||
|
var resultTile = $(collapsibleTileHtml);
|
||||||
|
|
||||||
|
resultTile.find('h4 > a').text(question.title + ' | Found via ' + question.source);
|
||||||
|
resultTile.find('.panel-body').html(question.body);
|
||||||
|
resultTile.find('.panel-body').append('<a href="' + question.url + '" class="btn btn-primary btn-block">Open this question</a>');
|
||||||
|
|
||||||
|
flowrHintBody.append(resultTile);
|
||||||
|
});
|
||||||
|
|
||||||
|
if (data.queryResults.length !== 0) {
|
||||||
|
$('#flowrHint').fadeIn();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
this.flowrOutputBuffer = '';
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
CodeOceanEditorCodePilot = {
|
||||||
|
qa_api: undefined,
|
||||||
|
QaApiOutputBuffer: {'stdout': '', 'stderr': ''},
|
||||||
|
|
||||||
|
initializeCodePilot: function () {
|
||||||
|
if ($('#questions-column').isPresent() && (typeof QaApi != 'undefined') && QaApi.isBrowserSupported()) {
|
||||||
|
$('#editor-column').addClass('col-md-10').removeClass('col-md-12');
|
||||||
|
$('#questions-column').addClass('col-md-2');
|
||||||
|
|
||||||
|
var node = document.getElementById('questions-holder');
|
||||||
|
var url = $('#questions-holder').data('url');
|
||||||
|
|
||||||
|
this.qa_api = new QaApi(node, url);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
handleQaApiOutput: function () {
|
||||||
|
if (this.qa_api) {
|
||||||
|
this.qa_api.executeCommand('syncOutput', [[this.QaApiOutputBuffer]]);
|
||||||
|
// reset the object
|
||||||
|
}
|
||||||
|
this.QaApiOutputBuffer = {'stdout': '', 'stderr': ''};
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
CodeOceanEditorRequestForComments = {
|
||||||
|
requestComments: function () {
|
||||||
|
var user_id = $('#editor').data('user-id');
|
||||||
|
var exercise_id = $('#editor').data('exercise-id');
|
||||||
|
var file_id = $('.editor').data('id');
|
||||||
|
var question = $('#question').val();
|
||||||
|
|
||||||
|
var createRequestForComments = function (submission) {
|
||||||
|
$.ajax({
|
||||||
|
method: 'POST',
|
||||||
|
url: '/request_for_comments',
|
||||||
|
data: {
|
||||||
|
request_for_comment: {
|
||||||
|
exercise_id: exercise_id,
|
||||||
|
file_id: file_id,
|
||||||
|
submission_id: submission.id,
|
||||||
|
question: question
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}).done(function () {
|
||||||
|
this.hideSpinner();
|
||||||
|
$.flash.success({text: $('#askForCommentsButton').data('message-success')});
|
||||||
|
}.bind(this)).error(this.ajaxError.bind(this));
|
||||||
|
};
|
||||||
|
|
||||||
|
this.createSubmission($('.requestCommentsButton'), null, createRequestForComments.bind(this));
|
||||||
|
|
||||||
|
$('#comment-modal').modal('hide');
|
||||||
|
var button = $('#requestComments');
|
||||||
|
button.prop('disabled', true);
|
||||||
|
},
|
||||||
|
};
|
@@ -1,17 +1,13 @@
|
|||||||
|
|
||||||
CodeOceanEditorSubmissions = {
|
CodeOceanEditorSubmissions = {
|
||||||
collectFiles: function() {
|
FILENAME_URL_PLACEHOLDER: '{filename}',
|
||||||
var editable_editors = _.filter(this.editors, function(editor) {
|
|
||||||
return !editor.getReadOnly();
|
|
||||||
});
|
|
||||||
return _.map(editable_editors, function(editor) {
|
|
||||||
return {
|
|
||||||
content: editor.getValue(),
|
|
||||||
file_id: $(editor.container).data('file-id')
|
|
||||||
};
|
|
||||||
});
|
|
||||||
},
|
|
||||||
|
|
||||||
|
AUTOSAVE_INTERVAL: 15 * 1000,
|
||||||
|
autosaveTimer: null,
|
||||||
|
autosaveLabel: "#autosave-label span",
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Submission-Creation
|
||||||
|
*/
|
||||||
createSubmission: function (initiator, filter, callback) {
|
createSubmission: function (initiator, filter, callback) {
|
||||||
this.showSpinner(initiator);
|
this.showSpinner(initiator);
|
||||||
var jqxhr = this.ajax({
|
var jqxhr = this.ajax({
|
||||||
@@ -36,6 +32,18 @@ CodeOceanEditorSubmissions = {
|
|||||||
jqxhr.fail(this.ajaxError.bind(this));
|
jqxhr.fail(this.ajaxError.bind(this));
|
||||||
},
|
},
|
||||||
|
|
||||||
|
collectFiles: function() {
|
||||||
|
var editable_editors = _.filter(this.editors, function(editor) {
|
||||||
|
return !editor.getReadOnly();
|
||||||
|
});
|
||||||
|
return _.map(editable_editors, function(editor) {
|
||||||
|
return {
|
||||||
|
content: editor.getValue(),
|
||||||
|
file_id: $(editor.container).data('file-id')
|
||||||
|
};
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
createSubmissionCallback: function(data){
|
createSubmissionCallback: function(data){
|
||||||
// set all frames context types to submission
|
// set all frames context types to submission
|
||||||
$('.frame').each(function(index, element) {
|
$('.frame').each(function(index, element) {
|
||||||
@@ -69,6 +77,9 @@ CodeOceanEditorSubmissions = {
|
|||||||
this.toggleButtonStates();
|
this.toggleButtonStates();
|
||||||
},
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* File-Management
|
||||||
|
*/
|
||||||
destroyFile: function() {
|
destroyFile: function() {
|
||||||
this.createSubmission($('#destroy-file'), function(files) {
|
this.createSubmission($('#destroy-file'), function(files) {
|
||||||
return _.reject(files, function(file) {
|
return _.reject(files, function(file) {
|
||||||
@@ -125,7 +136,9 @@ CodeOceanEditorSubmissions = {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
//Todo Split up in submitpart and run part
|
/**
|
||||||
|
* Execution-Logic
|
||||||
|
*/
|
||||||
runCode: function(event) {
|
runCode: function(event) {
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
if ($('#run').is(':visible')) {
|
if ($('#run').is(':visible')) {
|
||||||
@@ -172,34 +185,27 @@ CodeOceanEditorSubmissions = {
|
|||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
|
||||||
requestComments: function () {
|
/**
|
||||||
var user_id = $('#editor').data('user-id');
|
* Autosave-Logic
|
||||||
var exercise_id = $('#editor').data('exercise-id');
|
*/
|
||||||
var file_id = $('.editor').data('id');
|
resetSaveTimer: function () {
|
||||||
var question = $('#question').val();
|
clearTimeout(this.autosaveTimer);
|
||||||
|
this.autosaveTimer = setTimeout(this.autosave.bind(this), this.AUTOSAVE_INTERVAL);
|
||||||
|
},
|
||||||
|
|
||||||
var createRequestForComments = function (submission) {
|
unloadAutoSave: function() {
|
||||||
$.ajax({
|
if(this.autosaveTimer != null){
|
||||||
method: 'POST',
|
this.autosave();
|
||||||
url: '/request_for_comments',
|
}
|
||||||
data: {
|
},
|
||||||
request_for_comment: {
|
|
||||||
exercise_id: exercise_id,
|
|
||||||
file_id: file_id,
|
|
||||||
submission_id: submission.id,
|
|
||||||
question: question
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}).done(function () {
|
|
||||||
this.hideSpinner();
|
|
||||||
$.flash.success({text: $('#askForCommentsButton').data('message-success')});
|
|
||||||
}.bind(this)).error(this.ajaxError.bind(this));
|
|
||||||
};
|
|
||||||
|
|
||||||
this.createSubmission($('.requestCommentsButton'), null, createRequestForComments.bind(this));
|
autosave: function () {
|
||||||
|
var date = new Date();
|
||||||
$('#comment-modal').modal('hide');
|
var autosaveLabel = $(this.autosaveLabel);
|
||||||
var button = $('#requestComments');
|
autosaveLabel.parent().css("visibility", "visible");
|
||||||
button.prop('disabled', true);
|
autosaveLabel.text(date.getHours() + ':' + date.getMinutes() + ':' + date.getSeconds());
|
||||||
|
autosaveLabel.text(date.toLocaleTimeString());
|
||||||
|
this.autosaveTimer = null;
|
||||||
|
this.createSubmission($('#autosave'), null);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
Reference in New Issue
Block a user