/*!
=========================================================
* Material Dashboard PRO - v2.2.2
=========================================================
* Product Page: https://www.creative-tim.com/product/material-dashboard-pro
* Copyright 2020 Creative Tim (http://www.creative-tim.com)
* Designed by www.invisionapp.com Coded by www.creative-tim.com
=========================================================
* The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
*/
var isWindows = navigator.platform.indexOf('Win') > -1 ? true : false;
if (isWindows) {
// if we are on windows OS we activate the perfectScrollbar function
if ($(".main-panel").length != 0) {
var mainpanel = document.querySelector('.main-panel');
var ps = new PerfectScrollbar(mainpanel);
}
if ($(".sidebar").length != 0) {
var sidebar = document.querySelector('.sidebar');
var ps1 = new PerfectScrollbar(sidebar);
}
if ($(".sidebar-wrapper").length != 0) {
var sidebarwrapper = document.querySelector('.sidebar-wrapper');
var ps2 = new PerfectScrollbar(sidebarwrapper);
}
if ($(".dropdown-menu").length != 0) {
var dropdownmenu = document.querySelector('.dropdown-menu');
var ps3 = new PerfectScrollbar(dropdownmenu);
}
if ($(".page-header").length != 0) {
var pageheader = document.querySelector('.page-header');
var ps4 = new PerfectScrollbar(pageheader);
}
$('html').addClass('perfect-scrollbar-on');
} else {
$('html').addClass('perfect-scrollbar-off');
}
var breakCards = true;
var searchVisible = 0;
var transparent = true;
var transparentDemo = true;
var fixedTop = false;
var mobile_menu_visible = 0,
mobile_menu_initialized = false,
toggle_initialized = false,
bootstrap_nav_initialized = false;
var seq = 0,
delays = 80,
durations = 500;
var seq2 = 0,
delays2 = 80,
durations2 = 500;
$(document).ready(function () {
$sidebar = $('.sidebar');
window_width = $(window).width();
$('body').bootstrapMaterialDesign({
autofill: false
});
md.initSidebarsCheck();
window_width = $(window).width();
// check if there is an image set for the sidebar's background
md.checkSidebarImage();
md.initMinimizeSidebar();
// Multilevel Dropdown menu
$('.dropdown-menu a.dropdown-toggle').on('click', function (e) {
var $el = $(this);
var $parent = $(this).offsetParent(".dropdown-menu");
if (!$(this).next().hasClass('show')) {
$(this).parents('.dropdown-menu').first().find('.show').removeClass("show");
}
var $subMenu = $(this).next(".dropdown-menu");
$subMenu.toggleClass('show');
$(this).closest("a").toggleClass('open');
$(this).parents('a.dropdown-item.dropdown.show').on('hidden.bs.dropdown', function (e) {
$('.dropdown-menu .show').removeClass("show");
});
if (!$parent.parent().hasClass('navbar-nav')) {
$el.next().css({
"top": $el[0].offsetTop,
"left": $parent.outerWidth() - 4
});
}
return false;
});
// hide the siblings opened collapse
var $collapse = $('.collapse');
$collapse.on('show.bs.collapse', function () {
$(this).parent().siblings().children('.collapse').each(function () {
$(this).collapse('hide');
});
});
// Activate bootstrap-select
if ($(".selectpicker").length != 0) {
$(".selectpicker").selectpicker();
}
// Activate the tooltips
$('[rel="tooltip"]').tooltip();
// Activate Popovers
$('[data-toggle="popover"]').popover();
//Activate tags
// we style the badges with our colors
var tagClass = $('.tagsinput').data('color');
if ($(".tagsinput").length != 0) {
$('.tagsinput').tagsinput();
}
$('.bootstrap-tagsinput').addClass('' + tagClass + '-badge');
// Activate bootstrap-select
$(".select").dropdown({
"dropdownClass": "dropdown-menu",
"optionClass": ""
});
$('.form-control').on("focus", function () {
$(this).parent('.input-group').addClass("input-group-focus");
}).on("blur", function () {
$(this).parent(".input-group").removeClass("input-group-focus");
});
if (breakCards == true) {
// We break the cards headers if there is too much stress on them :-)
$('[data-header-animation="true"]').each(function () {
var $fix_button = $(this)
var $card = $(this).parent('.card');
$card.find('.fix-broken-card').click(function () {
console.log(this);
var $header = $(this).parent().parent().siblings('.card-header, .card-header-image');
$header.removeClass('hinge').addClass('fadeInDown');
$card.attr('data-count', 0);
setTimeout(function () {
$header.removeClass('fadeInDown animate');
}, 480);
});
$card.mouseenter(function () {
var $this = $(this);
hover_count = parseInt($this.attr('data-count'), 10) + 1 || 0;
$this.attr("data-count", hover_count);
if (hover_count >= 20) {
$(this).children('.card-header, .card-header-image').addClass('hinge animated');
}
});
});
}
// remove class has-error for checkbox validation
$('input[type="checkbox"][required="true"], input[type="radio"][required="true"]').on('click', function () {
if ($(this).hasClass('error')) {
$(this).closest('div').removeClass('has-error');
}
});
});
$(document).on('click', '.navbar-toggler', function () {
$toggle = $(this);
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);
var $layer = $('<div class="close-layer"></div>');
if ($('body').find('.main-panel').length != 0) {
$layer.appendTo(".main-panel");
} else if (($('body').hasClass('off-canvas-sidebar'))) {
$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;
}
});
// activate collapse right menu when the windows is resized
$(window).resize(function () {
md.initSidebarsCheck();
// reset the seq for charts drawing animations
seq = seq2 = 0;
});
md = {
misc: {
navbar_menu_visible: 0,
active_collapse: true,
disabled_collapse_init: 0,
},
checkSidebarImage: function () {
$sidebar = $('.sidebar');
image_src = $sidebar.data('image');
if (image_src !== undefined) {
$('.sidebar-background').css("background-image", "url(" + image_src + ")");
}
},
showNotification: function (from, align) {
type = ['', 'info', 'danger', 'success', 'warning', 'rose', 'primary'];
color = Math.floor((Math.random() * 6) + 1);
$.notify({
icon: "add_alert",
message: "Welcome to <b>Material Dashboard Pro</b> - a beautiful admin panel for every web developer."
}, {
type: type[color],
timer: 3000,
placement: {
from: from,
align: align
}
});
},
initSidebarsCheck: function () {
if ($(window).width() <= 991) {
if ($sidebar.length !== 0) {
md.initRightMenu();
}
}
},
checkFullPageBackgroundImage: function () {
$page = $('.full-page');
image_src = $page.data('image');
if (image_src !== undefined) {
image_container = '<div class="full-page-background" style="background-image: url(' + image_src + ') "/>'
$page.append(image_container);
}
},
initMinimizeSidebar: function () {
$('#minimizeSidebar').click(function () {
var $btn = $(this);
if (md.misc.sidebar_mini_active == true) {
$('body').removeClass('sidebar-mini');
md.misc.sidebar_mini_active = false;
} else {
$('body').addClass('sidebar-mini');
md.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);
});
},
checkScrollForTransparentNavbar: debounce(function () {
if ($(document).scrollTop() > 260) {
if (transparent) {
transparent = false;
$('.navbar-color-on-scroll').removeClass('navbar-transparent');
}
} else {
if (!transparent) {
transparent = true;
$('.navbar-color-on-scroll').addClass('navbar-transparent');
}
}
}, 17),
initRightMenu: debounce(function () {
$sidebar_wrapper = $('.sidebar-wrapper');
if (!mobile_menu_initialized) {
$navbar = $('nav').find('.navbar-collapse').children('.navbar-nav');
mobile_menu_content = '';
nav_content = $navbar.html();
nav_content = '<ul class="nav navbar-nav nav-mobile-menu">' + nav_content + '</ul>';
let navbar_form = $('nav').find('.navbar-form');
if (navbar_form.get(0) !== "undefined") {
navbar_form = $('nav').find('.navbar-form').get(0).outerHTML;
}
$sidebar_nav = $sidebar_wrapper.find(' > .nav');
// insert the navbar form before the sidebar list
$nav_content = $(nav_content);
$navbar_form = $(navbar_form);
$nav_content.insertBefore($sidebar_nav);
$navbar_form.insertBefore($nav_content);
$(".sidebar-wrapper .dropdown .dropdown-menu > li > a").click(function (event) {
event.stopPropagation();
});
// simulate resize so all the charts/maps will be redrawn
window.dispatchEvent(new Event('resize'));
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;
}
}
}, 200),
};
// 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);
};
}
|