2016-08-16 15:48:19 +08:00
|
|
|
|
|
|
|
(function(){
|
|
|
|
|
|
|
|
// Create ajax hook on given 'element', which should return modal with 'id' =>
|
|
|
|
// show that modal
|
|
|
|
function initializeModal(element, id){
|
|
|
|
$(element)
|
|
|
|
.on("ajax:beforeSend", function(){
|
|
|
|
animateSpinner();
|
|
|
|
})
|
|
|
|
.on("ajax:success", function(e, data){
|
|
|
|
$('body').append($.parseHTML(data.html));
|
|
|
|
$(id).modal('show',{
|
|
|
|
backdrop: true,
|
|
|
|
keyboard: false,
|
|
|
|
});
|
2016-09-02 22:31:17 +08:00
|
|
|
validateMoveModal(id);
|
2016-08-16 15:48:19 +08:00
|
|
|
})
|
|
|
|
.on("ajax:error", function() {
|
|
|
|
animateSpinner(null, false);
|
|
|
|
// TODO
|
|
|
|
})
|
|
|
|
.on("ajax:complete", function(){
|
|
|
|
animateSpinner(null, false);
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
// Initialize dropdown actions on experiment:
|
|
|
|
// - edit
|
|
|
|
// - clone
|
|
|
|
function initializeDropdownActions(){
|
|
|
|
// { buttonClass: modalName } mappings
|
|
|
|
// click on buttonClass summons modalName dialog
|
|
|
|
modals = {
|
|
|
|
'.edit-experiment': '#edit-experiment-modal-',
|
|
|
|
'.clone-experiment': '#clone-experiment-modal-',
|
|
|
|
'.move-experiment': '#move-experiment-modal-'
|
2016-08-23 14:52:53 +08:00
|
|
|
};
|
2016-08-16 15:48:19 +08:00
|
|
|
|
|
|
|
$.each($(".dropdown-experiment-actions"), function(){
|
|
|
|
var $dropdown = $(this);
|
|
|
|
$.each(modals, function(buttonClass, modalName) {
|
|
|
|
var id = modalName + $dropdown.data('id');
|
|
|
|
initializeModal($dropdown.find(buttonClass), id);
|
|
|
|
});
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
2016-09-02 22:31:17 +08:00
|
|
|
// Validates move action
|
|
|
|
function validateMoveModal(modal){
|
|
|
|
if ( modal.match(/#move-experiment-modal-[0-9]*/) ) {
|
|
|
|
var form = $(modal).find("form");
|
|
|
|
form
|
|
|
|
.on('ajax:success', function(e, data) {
|
|
|
|
animateSpinner(form, true);
|
|
|
|
window.location.replace(data.path);
|
|
|
|
})
|
|
|
|
.on('ajax:error', function(e, error) {
|
|
|
|
var msg = JSON.parse(error.responseText);
|
|
|
|
renderFormError(e,
|
|
|
|
form.find("#experiment_project_id"),
|
|
|
|
msg.message.toString());
|
|
|
|
})
|
|
|
|
.clearFormErrors();
|
|
|
|
}
|
|
|
|
}
|
2016-08-23 14:52:53 +08:00
|
|
|
// Initialize no description edit link
|
|
|
|
function initEditNoDescription(){
|
|
|
|
var modal = "#edit-experiment-modal-";
|
|
|
|
$.each($(".no-description-experiment"), function(){
|
|
|
|
var id = modal + $(this).data("id");
|
|
|
|
initializeModal($(this), id);
|
|
|
|
});
|
|
|
|
}
|
2016-08-16 15:48:19 +08:00
|
|
|
// Bind modal to new-experiment action
|
|
|
|
initializeModal($("#new-experiment"), '#new-experiment-modal');
|
2016-09-02 22:31:17 +08:00
|
|
|
|
2016-08-22 21:22:05 +08:00
|
|
|
// Bind modal to big-plus new experiment actions
|
|
|
|
initializeModal('.big-plus', '#new-experiment-modal');
|
2016-08-16 15:48:19 +08:00
|
|
|
|
|
|
|
// Bind modal to all actions listed on dropdown accesible from experiment
|
|
|
|
// panel
|
|
|
|
initializeDropdownActions();
|
2016-08-23 14:52:53 +08:00
|
|
|
|
|
|
|
// init
|
|
|
|
initEditNoDescription();
|
2016-08-16 15:48:19 +08:00
|
|
|
})();
|