/** * Theme: Ubold Admin Template * Author: Coderthemes * Module/App: Main Js */ !function($) { "use strict"; var Sidemenu = function() { this.$body = $("body"), this.$openLeftBtn = $(".open-left"), this.$menuItem = $("#sidebar-menu a") }; Sidemenu.prototype.openLeftBar = function() { $("#wrapper").toggleClass("enlarged"); $("#wrapper").addClass("forced"); if($("#wrapper").hasClass("enlarged") && $("body").hasClass("fixed-left")) { $("body").removeClass("fixed-left").addClass("fixed-left-void"); } else if(!$("#wrapper").hasClass("enlarged") && $("body").hasClass("fixed-left-void")) { $("body").removeClass("fixed-left-void").addClass("fixed-left"); } if($("#wrapper").hasClass("enlarged")) { $(".left ul").removeAttr("style"); } else { $(".subdrop").siblings("ul:first").show(); } toggle_slimscroll(".slimscrollleft"); $("body").trigger("resize"); }, //menu item click Sidemenu.prototype.menuItemClick = function(e) { if(!$("#wrapper").hasClass("enlarged")){ if($(this).parent().hasClass("has_sub")) { } if(!$(this).hasClass("subdrop")) { // hide any open menus and remove all other classes $("ul",$(this).parents("ul:first")).slideUp(350); $("a",$(this).parents("ul:first")).removeClass("subdrop"); $("#sidebar-menu .pull-right i").removeClass("md-remove").addClass("md-add"); // open our new menu and add the open class $(this).next("ul").slideDown(350); $(this).addClass("subdrop"); $(".pull-right i",$(this).parents(".has_sub:last")).removeClass("md-add").addClass("md-remove"); $(".pull-right i",$(this).siblings("ul")).removeClass("md-remove").addClass("md-add"); }else if($(this).hasClass("subdrop")) { $(this).removeClass("subdrop"); $(this).next("ul").slideUp(350); $(".pull-right i",$(this).parent()).removeClass("md-remove").addClass("md-add"); } } }, //init sidemenu Sidemenu.prototype.init = function() { var $this = this; var ua = navigator.userAgent, event = (ua.match(/iP/i)) ? "touchstart" : "click"; //bind on click this.$openLeftBtn.on(event, function(e) { e.stopPropagation(); $this.openLeftBar(); }); // LEFT SIDE MAIN NAVIGATION $this.$menuItem.on(event, $this.menuItemClick); // NAVIGATION HIGHLIGHT & OPEN PARENT $("#sidebar-menu ul li.has_sub a.active").parents("li:last").children("a:first").addClass("active").trigger("click"); }, //init Sidemenu $.Sidemenu = new Sidemenu, $.Sidemenu.Constructor = Sidemenu }(window.jQuery), function($) { "use strict"; var FullScreen = function() { this.$body = $("body"), this.$fullscreenBtn = $("#btn-fullscreen") }; //turn on full screen // Thanks to http://davidwalsh.name/fullscreen FullScreen.prototype.launchFullscreen = function(element) { if(element.requestFullscreen) { element.requestFullscreen(); } else if(element.mozRequestFullScreen) { element.mozRequestFullScreen(); } else if(element.webkitRequestFullscreen) { element.webkitRequestFullscreen(); } else if(element.msRequestFullscreen) { element.msRequestFullscreen(); } }, FullScreen.prototype.exitFullscreen = function() { if(document.exitFullscreen) { document.exitFullscreen(); } else if(document.mozCancelFullScreen) { document.mozCancelFullScreen(); } else if(document.webkitExitFullscreen) { document.webkitExitFullscreen(); } }, //toggle screen FullScreen.prototype.toggle_fullscreen = function() { var $this = this; var fullscreenEnabled = document.fullscreenEnabled || document.mozFullScreenEnabled || document.webkitFullscreenEnabled; if(fullscreenEnabled) { if(!document.fullscreenElement && !document.mozFullScreenElement && !document.webkitFullscreenElement && !document.msFullscreenElement) { $this.launchFullscreen(document.documentElement); } else{ $this.exitFullscreen(); } } }, //init sidemenu FullScreen.prototype.init = function() { var $this = this; //bind $this.$fullscreenBtn.on('click', function() { $this.toggle_fullscreen(); }); }, //init FullScreen $.FullScreen = new FullScreen, $.FullScreen.Constructor = FullScreen }(window.jQuery), //main app module function($) { "use strict"; var App = function() { this.VERSION = "1.6.0", this.AUTHOR = "Coderthemes", this.SUPPORT = "coderthemes@gmail.com", this.pageScrollElement = "html, body", this.$body = $("body") }; //on doc load App.prototype.onDocReady = function(e) { FastClick.attach(document.body); resizefunc.push("initscrolls"); resizefunc.push("changeptype"); $('.animate-number').each(function(){ $(this).animateNumbers($(this).attr("data-value"), true, parseInt($(this).attr("data-duration"))); }); //RUN RESIZE ITEMS $(window).resize(debounce(resizeitems,100)); $("body").trigger("resize"); // right side-bar toggle $('.right-bar-toggle').on('click', function(e){ $('#wrapper').toggleClass('right-bar-enabled'); }); }, //initilizing App.prototype.init = function() { var $this = this; //document load initialization $(document).ready($this.onDocReady); //init side bar - left $.Sidemenu.init(); //init fullscreen $.FullScreen.init(); }, $.App = new App, $.App.Constructor = App }(window.jQuery), //initializing main application module function($) { "use strict"; $.App.init(); }(window.jQuery); /* ------------ some utility functions ----------------------- */ //this full screen var toggle_fullscreen = function () { } function executeFunctionByName(functionName, context /*, args */) { var args = [].slice.call(arguments).splice(2); var namespaces = functionName.split("."); var func = namespaces.pop(); for(var i = 0; i < namespaces.length; i++) { context = context[namespaces[i]]; } return context[func].apply(this, args); } var w,h,dw,dh; var changeptype = function(){ w = $(window).width(); h = $(window).height(); dw = $(document).width(); dh = $(document).height(); if(jQuery.browser.mobile === true){ $("body").addClass("mobile").removeClass("fixed-left"); } if(!$("#wrapper").hasClass("forced")){ if(w > 990){ $("body").removeClass("smallscreen").addClass("widescreen"); $("#wrapper").removeClass("enlarged"); }else{ $("body").removeClass("widescreen").addClass("smallscreen"); $("#wrapper").addClass("enlarged"); $(".left ul").removeAttr("style"); } if($("#wrapper").hasClass("enlarged") && $("body").hasClass("fixed-left")){ $("body").removeClass("fixed-left").addClass("fixed-left-void"); }else if(!$("#wrapper").hasClass("enlarged") && $("body").hasClass("fixed-left-void")){ $("body").removeClass("fixed-left-void").addClass("fixed-left"); } } toggle_slimscroll(".slimscrollleft"); } var debounce = function(func, wait, immediate) { var timeout, result; return function() { var context = this, args = arguments; var later = function() { timeout = null; if (!immediate) result = func.apply(context, args); }; var callNow = immediate && !timeout; clearTimeout(timeout); timeout = setTimeout(later, wait); if (callNow) result = func.apply(context, args); return result; }; } function resizeitems(){ if($.isArray(resizefunc)){ for (i = 0; i < resizefunc.length; i++) { window[resizefunc[i]](); } } } function initscrolls(){ if(jQuery.browser.mobile !== true){ //SLIM SCROLL $('.slimscroller').slimscroll({ height: 'auto', size: "5px" }); $('.slimscrollleft').slimScroll({ height: 'auto', position: 'right', size: "5px", color: '#98a6ad', wheelStep: 5 }); } } function toggle_slimscroll(item){ if($("#wrapper").hasClass("enlarged")){ $(item).css("overflow","inherit").parent().css("overflow","inherit"); $(item). siblings(".slimScrollBar").css("visibility","hidden"); }else{ $(item).css("overflow","hidden").parent().css("overflow","hidden"); $(item). siblings(".slimScrollBar").css("visibility","visible"); } } var wow = new WOW( { boxClass: 'wow', // animated element css class (default is wow) animateClass: 'animated', // animation css class (default is animated) offset: 50, // distance to the element when triggering the animation (default is 0) mobile: false // trigger animations on mobile devices (true is default) } ); wow.init(); // === following js will activate the menu in left side bar based on url ==== $(document).ready(function() { $("#sidebar-menu a").each(function() { if (this.href == window.location.href) { $(this).addClass("active"); $(this).parent().addClass("active"); // add active to li of the current link $(this).parent().parent().prev().addClass("active"); // add active class to an anchor // $(this).parent().parent().prev().click(); // click the item to make it drop } }); });