/*! ========================================================= * Paper Dashboard PRO - V1.2.1 ========================================================= * Product Page: https://www.creative-tim.com/product/paper-dashboard-pro * Available with purchase of license from https://www.creative-tim.com/product/paper-dashboard-pro * Copyright 2017 Creative Tim (https://www.creative-tim.com) * License Creative Tim (https://www.creative-tim.com/license) ========================================================= */ var fixedTop = false; var mobile_menu_visible = 0, mobile_menu_initialized = false, toggle_initialized = false, bootstrap_nav_initialized = false, $sidebar, isWindows; (function () { isWindows = navigator.platform.indexOf('Win') > -1 ? true : false; if (isWindows) { // if we are on windows OS we activate the perfectScrollbar function $('.sidebar .sidebar-wrapper, .main-panel').perfectScrollbar(); $('html').addClass('perfect-scrollbar-on'); } else { $('html').addClass('perfect-scrollbar-off'); } })(); $(document).ready(function () { window_width = $(window).width(); $sidebar = $('.sidebar'); // We put modals out of wrapper to working properly $('.modal').appendTo('body'); if ($('body').hasClass('sidebar-mini')) { pdp.misc.sidebar_mini_active = true; } pdp.initSidebarsCheck(); pdp.initMinimizeSidebar(); $('.form-control') .on('focus', function () { $(this).parent('.input-group').addClass('input-group-focus'); }) .on('blur', function () { $(this).parent('.input-group').removeClass('input-group-focus'); }); // Activate the tooltips $('[rel="tooltip"]').tooltip(); $('.switch').bootstrapSwitch({ onColor: 'primary', }); $('.switch-plain').bootstrapSwitch({ onColor: '', onText: '', offText: '', }); $('.switch-icon').bootstrapSwitch({ onColor: '', onText: '', offText: '', }); //Activate tags //removed class label and label-color from tag span and replaced with data-color if ($('.tagsinput').length != 0) { var tagClass = $('.tagsinput').data('color'); $('.tagsinput').tagsinput({ tagClass: ' tag-' + tagClass + ' ', }); } // Init Bootstrap Select Picker if ($('.selectpicker').length != 0) { $('.selectpicker').selectpicker(); } }); // activate collapse right menu when the windows is resized $(window).resize(function () { pdp.initSidebarsCheck(); }); pdp = { misc: { navbar_menu_visible: 0, active_collapse: true, disabled_collapse_init: 0, }, initSidebarsCheck: function () { // Init navigation toggle for small screens if ($(window).width() <= 991) { if ($sidebar.length != 0) { pdp.initSidebarMenu(); } else { pdp.initBootstrapNavbarMenu(); } } else if (mobile_menu_initialized == true) { // reset all the additions that we made for the sidebar wrapper only if the screen is bigger than 991px $sidebar_wrapper.find('.navbar-form').remove(); $sidebar_wrapper.find('.nav-mobile-menu').remove(); mobile_menu_initialized = false; } }, initMinimizeSidebar: function () { $('#minimizeSidebar').click(function () { var $btn = $(this); if (pdp.misc.sidebar_mini_active == true) { $('body').removeClass('sidebar-mini'); $btn.html(''); pdp.misc.sidebar_mini_active = false; } else { $('body').addClass('sidebar-mini'); $btn.html(''); pdp.misc.sidebar_mini_active = true; } // we simulate the window Resize so the charts will get updated in realtime. var simulateWindowResize = setInterval(function () { window.dispatchEvent(new Event('resize')); }, 180); // we stop the simulation of Window Resize after the animations are completed setTimeout(function () { clearInterval(simulateWindowResize); }, 1000); }); }, initSidebarMenu: function () { $sidebar_wrapper = $('.sidebar-wrapper'); if (!mobile_menu_initialized) { $navbar = $('nav').find('.navbar-collapse').first().clone(true); nav_content = ''; mobile_menu_content = ''; $navbar.children('ul').each(function () { content_buff = $(this).html(); nav_content = nav_content + content_buff; }); nav_content = '
'; $navbar_form = $('nav').find('.navbar-form').clone(true); $sidebar_nav = $sidebar_wrapper.find(' > .nav'); // insert the navbar form before the sidebar list $nav_content = $(nav_content); $nav_content.insertBefore($sidebar_nav); $navbar_form.insertBefore($nav_content); $('.sidebar-wrapper .dropdown .dropdown-menu > li > a').click(function (event) { event.stopPropagation(); }); mobile_menu_initialized = true; } else { if ($(window).width() > 991) { // reset all the additions that we made for the sidebar wrapper only if the screen is bigger than 991px $sidebar_wrapper.find('.navbar-form').remove(); $sidebar_wrapper.find('.nav-mobile-menu').remove(); mobile_menu_initialized = false; } } if (!toggle_initialized) { $toggle = $('.navbar-toggle'); $toggle.click(function () { if (mobile_menu_visible == 1) { $('html').removeClass('nav-open'); $('.close-layer').remove(); setTimeout(function () { $toggle.removeClass('toggled'); }, 400); mobile_menu_visible = 0; } else { setTimeout(function () { $toggle.addClass('toggled'); }, 430); main_panel_height = $('.main-panel')[0].scrollHeight; $layer = $(''); $layer.css('height', main_panel_height + 'px'); $layer.appendTo('.main-panel'); setTimeout(function () { $layer.addClass('visible'); }, 100); $layer.click(function () { $('html').removeClass('nav-open'); mobile_menu_visible = 0; $layer.removeClass('visible'); setTimeout(function () { $layer.remove(); $toggle.removeClass('toggled'); }, 400); }); $('html').addClass('nav-open'); mobile_menu_visible = 1; } }); toggle_initialized = true; } }, initBootstrapNavbarMenu: debounce(function () { if (!bootstrap_nav_initialized) { $navbar = $('nav').find('.navbar-collapse').first().clone(true); nav_content = ''; mobile_menu_content = ''; //add the content from the regular header to the mobile menu $navbar.children('ul').each(function () { content_buff = $(this).html(); nav_content = nav_content + content_buff; }); nav_content = ' '; $navbar.html(nav_content); $navbar.addClass('off-canvas-sidebar'); // append it to the body, so it will come from the right side of the screen $('body').append($navbar); $toggle = $('.navbar-toggle'); $navbar.find('a').removeClass('btn btn-round btn-default'); $navbar.find('button').removeClass('btn-round btn-fill btn-info btn-primary btn-success btn-danger btn-warning btn-neutral'); $navbar.find('button').addClass('btn-simple btn-block'); $toggle.click(function () { if (mobile_menu_visible == 1) { $('html').removeClass('nav-open'); $('.close-layer').remove(); setTimeout(function () { $toggle.removeClass('toggled'); }, 400); mobile_menu_visible = 0; } else { setTimeout(function () { $toggle.addClass('toggled'); }, 430); $layer = $(''); $layer.appendTo('.wrapper-full-page'); setTimeout(function () { $layer.addClass('visible'); }, 100); $layer.click(function () { $('html').removeClass('nav-open'); mobile_menu_visible = 0; $layer.removeClass('visible'); setTimeout(function () { $layer.remove(); $toggle.removeClass('toggled'); }, 400); }); $('html').addClass('nav-open'); mobile_menu_visible = 1; } }); bootstrap_nav_initialized = true; } }, 500), }; // Returns a function, that, as long as it continues to be invoked, will not // be triggered. The function will be called after it stops being called for // N milliseconds. If `immediate` is passed, trigger the function on the // leading edge, instead of the trailing. function debounce(func, wait, immediate) { var timeout; return function () { var context = this, args = arguments; clearTimeout(timeout); timeout = setTimeout(function () { timeout = null; if (!immediate) func.apply(context, args); }, wait); if (immediate && !timeout) func.apply(context, args); }; }