// turbolinks MUST BE THE LAST inclusion //= require hammer //= require js.cookie //= 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 jsPlumb-2.0.4-min //= require jsnetworkx //= require bootstrap-select //= require_directory ./repository_columns/columns_initializers //= require datatables //= require clndr.min //= require ajax-bootstrap-select.min //= require underscore //= require i18n.js //= require i18n/translations //= require users/settings/teams/invite_users_modal //= require repository_columns/index //= require perfect-scrollbar.min //= require shared/inline_editing //= require shared/barcode_search //= require activestorage //= require global_activities/side_pane //= require protocols/header //= require protocols/print //= require marvinjslauncher //= require jstree.min //= require_tree ./repositories/renderers //= require_directory ./shared //= require_directory ./repositories/validators //= require_directory ./dashboard //= require_directory ./sitewide //= require_directory ./access_permissions //= require sidebar //= 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 */ $(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) { // If overlaying the whole page, put the spinner in the middle of the page var overlayPage = _.isUndefined(el) || el === null; if (_.isUndefined(start)) start = true; if (start) { if (overlayPage) { $(document.body).append('
'); } else { $(el).append(''); } } 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'); }); var HelperModule = (function(){ var helpers = {}; helpers.hideFlashMsg = function() { var flash = $('.alert'); if (flash.length > 0) { window.setTimeout(function () { flash.fadeTo(500, 0).slideUp(500, function () { $(this).remove(); }); }, 3000); } } helpers.dismissAlert = function() { $('#alert-flash').on('click', function() { $('#alert-flash').alert('close'); }) } helpers.flashAlertMsg = function(message, type) { var alertType, fasSign; $('#notifications').html(''); if (type === 'success') { alertType = ' alert-success '; fasSign = ' fa-check-circle '; } else if (type === 'danger') { alertType = ' alert-danger '; fasSign = ' fa-exclamation-triangle '; } else if (type === 'info') { alertType = ' alert-info '; fasSign = ' fa-info-circle '; } else if (type === 'warning') { alertType = ' alert-warning '; fasSign = ' fa-exclamation-triangle '; } var htmlSnippet = '