scinote-web/app/assets/javascripts/navigation.js

160 lines
4.2 KiB
JavaScript

(function(){
'use strict';
/* Loading overlay for search */
$("#search-bar").submit(function (){
if( $("#update-canvas") ){
$(document.body).spin(true);
setTimeout(function(){
$(".spinner").remove();
}, 1000);
} else {
animateSpinner();
}
});
function loadDropdownNotifications() {
var button = $('#notifications-dropdown');
var noRecentText =
$('.dropdown-notifications .notifications-no-recent');
button
.on('click', function() {
noRecentText.hide();
$.ajax({
url: button.attr('data-href'),
type: 'GET',
dataType: 'json',
beforeSend: animateSpinner($('.notifications-dropdown-header'), true),
success: function(data) {
$('.notifications-dropdown-header')
.nextAll('li.notification')
.remove();
$('.notifications-dropdown-header')
.after(data.html);
animateSpinner($('.notifications-dropdown-header'), false);
var ul = $('.dropdown-menu.dropdown-notifications');
if (ul.children('.notification').length === 0) {
noRecentText.show();
}
}
});
$('#count-notifications').hide();
toggleNotificationBellPosition();
});
}
function loadUnseenNotificationsNumber() {
var notificationCount = $('#count-notifications');
$.ajax({
url: notificationCount.attr('data-href'),
type: 'GET',
dataType: 'json',
success: function(data) {
notificationCount.html('');
if ( data.notificationNmber > 0 ) {
notificationCount.html(data.notificationNmber);
notificationCount.show();
toggleNotificationBellPosition();
} else {
notificationCount.hide();
}
}
});
}
function toggleNotificationBellPosition() {
var notificationCount = $('#count-notifications');
var button = $('#notifications-dropdown');
if ( notificationCount.is(":hidden") ) {
button
.find('.fa-bell')
.css('position', 'relative');
} else {
button
.find('.fa-bell')
.css('position', 'absolute');
}
}
function initGlobalSwitchForm() {
var teamSwitch = $('#team-switch');
teamSwitch
.find('.dropdown-menu .change-team')
.on('click', function(){
$('#user_current_team_id')
.val($(this).attr('data-id'));
teamSwitch
.find('form')
.submit();
});
}
function focusSearchInput() {
var searchIco = $('#search-ico');
searchIco
.on('shown.bs.dropdown', function() {
searchIco
.find('input.form-control')
.focus();
});
}
function initActivitiesButton() {
$(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');
});
}
}
// init
loadDropdownNotifications();
loadUnseenNotificationsNumber();
toggleNotificationBellPosition();
focusSearchInput();
initGlobalSwitchForm();
initActivitiesButton();
})();