scinote-web/app/assets/javascripts/application.js.erb

295 lines
8 KiB
Text
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// jquery.turbolinks MUST IMMEDIATELY FOLLOW jquery inclusion
// turbolinks MUST BE THE LAST inclusion
//= require jquery
//= require jquery.turbolinks
//= require jquery_ujs
//= require jquery.remotipart
//= require jquery.mousewheel.min
//= require jquery.scrollTo
//= require jquery.autosize
//= require jquery-ui/widget
//= require jquery-ui/mouse
//= require jquery-ui/draggable
//= require jquery-ui/droppable
//= require jquery.ui.touch-punch.min
//= require jquery.caret.min
//= require jquery.atwho.min
//= require hammer
//= require introjs
//= require js.cookie
//= require spin
//= require jquery.spin
//= require bootstrap-sprockets
//= require moment
//= require bootstrap-datetimepicker
//= require bootstrap-colorselector
//= require bootstrap-tagsinput.min
//= require bootstrap-checkbox.min
//= require typeahead.bundle.min
//= require nested_form_fields
//= require highlight.pack
//= require tinymce-jquery
//= require_directory ./sitewide
//= require jquery.dataTables.yadcf
//= require datatables
//= require dataTables.noSearchHidden
//= require bootstrap-select
//= require underscore
//= require i18n.js
//= require i18n/translations
//= require turbolinks
// Initialize links for submitting forms. This is useful for submitting
// forms with clicking on links outside form in cases when other than
// GET method is used.
function initFormSubmitLinks(el) {
el = el || $(document.body);
$(".form-submit-link", el).click(function () {
var val = true;
if ($(this).is("[data-confirm-form]")) {
val = confirm($(this).data("confirm-form"));
}
// Only submit form if confirmed
if (val) {
animateLoading();
$("#" + $(this).data("submit-form")).submit();
}
});
}
/* Enable loading bars */
Turbolinks.enableProgressBar();
$(document)
.bind("ajaxSend", function(){
animateLoading();
})
.bind("ajaxComplete", function(){
animateLoading(false);
});
/*
* Show/hide loading indicator on top of page.
*/
function animateLoading(start){
if (start === undefined)
start = true;
start = start !== false;
if (start) {
$("#loading-animation").addClass("animate");
}
else {
$("#loading-animation").removeClass("animate");
}
}
/*
* Show/hide spinner for a given element.
* Shows spinner if start is true or not given, hides it if false.
* Optional parameter options for spin.js options.
*/
function animateSpinner(el, start, options) {
// If overlaying the whole page, put the spinner in the middle of the page
var overlayPage = false;
if (_.isUndefined(el) || el === null) {
overlayPage = true;
if ($(document.body).has('.loading-overlay-center').length === 0) {
$(document.body).append('<div class="loading-overlay-center" />');
}
el = $(document.body).find('.loading-overlay-center');
}
if (_.isUndefined(start)) {
start = true;
}
if (start && options) {
$(el).spin(options);
}
else {
$(el).spin(start);
}
if (start) {
if (overlayPage) {
$(document.body).append('<div class="loading-overlay" />');
} else {
$(el).append('<div class="loading-overlay" />');
}
} else {
$(".loading-overlay").remove();
}
}
/**
* Automatic handling of show/hide spinner.
* @param {boolean} redirection Whether page is refreshed/redirected on success
* @param {boolean} onElement Whether spinner is fixed on the center of fn
* element or it's positions on the center of whole page
*/
$.fn.animateSpinner = function(redirection, onElement) {
redirection = _.isUndefined(redirection) ? false : redirection;
onElement = _.isUndefined(onElement) ? false : onElement;
$(this)
.on('ajax:beforeSend', function() {
onElement ? animateSpinner($(this)) : animateSpinner();
})
.on('ajax:error', function(e, data) {
animateSpinner(null, false);
})
.on('ajax:success', function(e, data) {
if (!redirection) {
animateSpinner(null, false);
}
});
}
/*
* Prevents user from accidentally leaving page when server is busy
* and notifies him with a message.
*
* NOTE: Don't prevent event propagation (ev.stopPropagation()), or
* else all events occurring when alert is up will be ignored.
*/
function preventLeavingPage(prevent, msg) {
busy = prevent;
if (busy && !_.isUndefined(msg)) {
busyMsg = msg;
}
}
var busy = false;
var busyMsg = I18n.t("general.busy");
window.onbeforeunload = function () {
if (busy) {
var currentMsg = busyMsg;
// Reset to default message
busyMsg = I18n.t("general.busy");
return currentMsg;
}
}
/*
* Disable Firefox caching to get rid of issues with pressing
* browser back, like opening canvas in edit mode.
*/
$(window).unload(function () {
$(window).unbind('unload');
});
$(document.body).ready(function () {
// Activity feed modal in main navigation menu
var activityModal = $('#activity-modal');
var activityModalBody = activityModal.find('.modal-body');
var initMoreBtn = function () {
activityModalBody.find('.btn-more-activities')
.on('ajax:success', function (e, data) {
$(data.html).insertBefore($(this).parents('li'));
$(this).attr('href', data.next_url);
if (data.activities_number < data.per_page) {
$(this).remove();
}
});
};
notificationAlertClose();
$('#main-menu .btn-activity')
.on('ajax:before', function () {
activityModal.modal('show');
})
.on('ajax:success', function (e, data) {
activityModalBody.html(data.html);
initMoreBtn();
});
activityModal.on('hidden.bs.modal', function () {
activityModalBody.html('');
});
});
$(document).ajaxComplete(function(){
notificationAlertClose();
});
function notificationAlertClose(){
$("#notifications .alert").on("closed.bs.alert", function () {
$("#content-wrapper")
.addClass("alert-hidden")
.removeClass("alert-shown");
});
}
var HelperModule = (function(){
var helpers = {};
helpers.treeLinkTruncation = function() {
$('.tree-link a').each( function(){
truncateLongString( $(this), <%= Constants::NAME_TRUNCATION_LENGTH %>);
});
$(".tree-link span").each( function(){
truncateLongString( $(this), <%= Constants::NAME_TRUNCATION_LENGTH %>);
});
}
helpers.hideFlashMsg = function() {
var flash = $('.alert');
if (flash.length > 0) {
window.setTimeout(function () {
flash.fadeTo(500, 0).slideUp(500, function () {
$(this).remove();
if($('.alert').length <= 0) {
$('#content-wrapper').removeClass('alert-shown');
}
});
}, 5000);
}
}
helpers.flashAlertMsg = function(message, type) {
var alertType;
var glyphSign;
$('#notifications').html('');
if (type === 'success') {
alertType = ' alert-success ';
glyphSign = ' glyphicon-ok-sign ';
} else if (type === 'danger') {
alertType = ' alert-danger ';
glyphSign = ' glyphicon-exclamation-sign ';
} else if (type === 'info') {
alertType = ' alert-info ';
glyphSign = ' glyphicon-exclamation-sign ';
}
var htmlSnippet = '<div class="alert alert' + alertType +
'alert-dismissable alert-floating">' +
'<div class="container">' +
'<button type="button" class="close" ' +
'data-dismiss="alert" aria-label="Close">' +
'<span aria-hidden="true">×</span></button>' +
'<span class="glyphicon' + glyphSign + '"></span>' +
'<span>' + message + '</span>' +
'</div>' +
'</div>';
$('#notifications').html(htmlSnippet);
$('#content-wrapper').addClass('alert-shown');
helpers.hideFlashMsg();
}
$( document ).ready(function() {
helpers.treeLinkTruncation();
helpers.hideFlashMsg();
});
return helpers;
})();
// initialize code markup in rich text fields
(function() {
$(document).ready(function() {
$('[class^=language]').each(function(i, block) {
hljs.highlightBlock(block);
});
});
})();