connect-admin/js/theme.js

193 lines
4.9 KiB
JavaScript

/* ==============================================================================
// Scripts for the theme
// ============================================================================== */
$(function () {
// skins switcher
Skins.initialize();
// sidebar menus
Sidebar.initialize();
// tooltips
$("[data-toggle='tooltip']").tooltip();
// build custom selects
UI.smart_selects();
// retina display
if(window.devicePixelRatio >= 1.2){
$("[data-2x]").each(function(){
if(this.tagName == "IMG"){
$(this).attr("src",$(this).attr("data-2x"));
} else {
$(this).css({"background-image":"url("+$(this).attr("data-2x")+")"});
}
});
}
Number.prototype.formatMoney = function(c, d, t){
var n = this,
c = isNaN(c = Math.abs(c)) ? 2 : c,
d = d == undefined ? "." : d,
t = t == undefined ? "," : t,
s = n < 0 ? "-" : "",
i = parseInt(n = Math.abs(+n || 0).toFixed(c)) + "",
j = (j = i.length) > 3 ? j % 3 : 0;
return s + (j ? i.substr(0, j) + t : "") + i.substr(j).replace(/(\d{3})(?=\d)/g, "$1" + t) + (c ? d + Math.abs(n - i).toFixed(c).slice(2) : "");
};
});
var UI = {
smart_selects: function () {
var $selects = $("[data-smart-select]");
$.each($selects, function (index, el) {
var $select = $(el);
var $wrapper = $("<div class='fake-select-wrap' />");
var $fake_select = $("<div class='fake-select'></div>");
$select.wrap($wrapper);
$select.after($fake_select);
// set selected value as default
$fake_select.html($select.find("option:selected").text());
// change handler
$select.change(function () {
$fake_select.html($(this).find("option:selected").text());
});
$select.focus(function () {
$fake_select.addClass("focus");
}).focusout(function () {
$fake_select.removeClass("focus");
});
});
}
}
var Skins = {
initialize: function () {
var $toggler = $(".skin-switcher .toggler"),
$menu = $(".skin-switcher .menu"),
$sidebar = $(".main-sidebar");
if (!$toggler.length) {
return;
}
if ($.cookie('current_skin')) {
$sidebar.attr("id", $.cookie('current_skin'));
$menu.find("a").removeClass("active");
$menu.find("a[data-skin="+ $.cookie('current_skin') +"]").addClass("active");
}
$toggler.click(function (e) {
e.stopPropagation();
$menu.toggleClass("active");
});
$("body").click(function () {
$menu.removeClass("active");
});
$menu.click(function (e) {
e.stopPropagation();
});
$menu.find("a").click(function (e) {
e.preventDefault();
var skin_id = $(this).data("skin");
$menu.find("a").removeClass("active");
$(this).addClass("active");
$sidebar.attr("id", skin_id);
$.removeCookie('current_skin', { path: '/' });
$.cookie('current_skin', skin_id, { path: '/' });
})
}
}
var Sidebar = {
initialize: function () {
var $sidebar_menu = $(".main-sidebar");
// my account dropdown menu
var $account_menu = $sidebar_menu.find(".current-user .menu");
$(".current-user .name").click(function (e) {
e.preventDefault();
e.stopPropagation();
$account_menu.toggleClass("active");
});
$account_menu.click(function (e) { e.stopPropagation() });
$("body").click(function () { $account_menu.removeClass("active") });
// sidebar menu dropdown levels
var $dropdown_triggers = $sidebar_menu.find("[data-toggle~='sidebar']");
$dropdown_triggers.click(function (e) {
e.preventDefault();
if (!utils.isTablet()) {
// reset other dropdown menus
if (!$(this).closest(".submenu").length) {
$dropdown_triggers.not(this).removeClass("toggled").siblings(".submenu").slideUp(300, check_height);
}
var $trigger = $(this);
var $dropdown = $(this).siblings(".submenu");
$trigger.toggleClass("toggled");
if ($trigger.hasClass("toggled")) {
$dropdown.slideDown(300, check_height);
} else {
$dropdown.slideUp(300, check_height);
}
}
});
var check_height = function () {
var height = $("body").height();
$(".main-sidebar").css("bottom", "auto");
var sidebar_height = $(".main-sidebar").height();
if (height > sidebar_height) {
$(".main-sidebar").css("bottom", 0);
} else {
$(".main-sidebar").css("bottom", "auto");
}
};
// mobile sidebar toggler
var $mobile_toggler = $("#content .sidebar-toggler");
$mobile_toggler.click(function (e) {
e.stopPropagation();
$("body").toggleClass("open-sidebar");
});
$("#content").click(function () {
$("body").removeClass("open-sidebar");
})
}
};
window.utils = {
isFirefox: function () {
return navigator.userAgent.toLowerCase().indexOf('firefox') > -1;
},
animation_ends: function () {
return "animationend webkitAnimationEnd oAnimationEnd";
},
isTablet: function () {
return ($(".main-sidebar").width() < 100);
},
get_timestamp: function (less_days) {
return moment().subtract('days', less_days).toDate().getTime();
}
};