FleetCart/Modules/Admin/Resources/assets/js/FleetCart.js
2023-12-03 14:07:47 +00:00

246 lines
7.1 KiB
JavaScript

$.FleetCart = {};
/* ----------------------------------
- FleetCart Options -
---------------------------------- */
$.FleetCart.options = {
animationSpeed: 300,
// Sidebar push menu toggle button selector
sidebarToggleSelector: "[data-toggle='offcanvas']",
// Activate sidebar push menu
sidebarPushMenu: true,
// BoxRefresh Plugin
enableBoxRefresh: true,
// Bootstrap.js tooltip
enableBSToppltip: true,
BSTooltipSelector: "[data-toggle='tooltip']",
// Control Sidebar Tree views
enableControlTreeView: true,
// The standard screen sizes that bootstrap uses.
screenSizes: {
xs: 480,
sm: 768,
md: 992,
lg: 1200,
},
};
/* ----------------------------------
- Implementation -
---------------------------------- */
$(function () {
// Easy access to options
var o = $.FleetCart.options;
// Set up the object
_init();
// Activate layout
$.FleetCart.layout.activate();
// Enable sidebar tree view controls
if (o.enableControlTreeView) {
$.FleetCart.tree(".sidebar");
}
// Activate sidebar push menu
if (o.sidebarPushMenu) {
$.FleetCart.pushMenu.activate(o.sidebarToggleSelector);
}
// Activate Bootstrap tooltip
if (o.enableBSToppltip) {
$("body").tooltip({
selector: o.BSTooltipSelector,
container: "body",
});
}
});
/* ----------------------------------
- Initialize the FleetCart Object -
---------------------------------- */
function _init() {
// Layout
$.FleetCart.layout = {
activate: function () {
var _this = this;
_this.fix();
$(window, ".wrapper").resize(function () {
_this.fix();
});
},
fix: function () {
var window_height = $(window).height();
$(".wrapper").css("min-height", window_height + "px");
},
};
// PushMenu
$.FleetCart.pushMenu = {
activate: function (toggleBtn) {
var screenSizes = $.FleetCart.options.screenSizes;
$(document).on("click", toggleBtn, function (e) {
e.preventDefault();
if ($(window).outerWidth() > screenSizes.md - 1) {
if ($("body").hasClass("sidebar-collapse")) {
$("body")
.removeClass("sidebar-collapse")
.trigger("expanded.pushMenu");
return;
}
$("body")
.addClass("sidebar-collapse")
.trigger("collapsed.pushMenu");
return;
}
if ($("body").hasClass("sidebar-open")) {
$("body")
.removeClass("sidebar-open")
.removeClass("sidebar-collapse")
.trigger("collapsed.pushMenu");
return;
}
$("body").addClass("sidebar-open").trigger("expanded.pushMenu");
});
$(window).on("resize", function () {
if ($(window).outerWidth() > screenSizes.md - 1) {
return;
} else {
$("body").removeClass("sidebar-collapse");
}
});
$(".content-wrapper").click(function () {
if (
$(window).width() <= screenSizes.md - 1 &&
$("body").hasClass("sidebar-open")
) {
$("body").removeClass("sidebar-open");
}
});
},
};
// Tree
$.FleetCart.tree = function (menu) {
var animationSpeed = $.FleetCart.options.animationSpeed;
$(document)
.off("click", menu + " li a")
.on("click", menu + " li a", function (e) {
var self = $(this);
var checkElement = self.next();
var activeElement = self
.closest(".sidebar-menu")
.find(".active");
if (checkElement.is(".treeview-menu")) {
self.closest(".sidebar-menu")
.find(".selected")
.removeClass("selected");
e.preventDefault();
}
if (self.parent().is(".active")) {
activeElement.toggleClass("closed");
} else {
activeElement.addClass("closed");
}
if (
checkElement.is(".treeview-menu") &&
checkElement.is(":visible") &&
!$("body").hasClass("sidebar-collapse")
) {
self.parent().removeClass("selected");
checkElement.slideUp(animationSpeed);
} else if (
checkElement.is(".treeview-menu") &&
!checkElement.is(":visible")
) {
var ul = self
.parents("ul")
.first()
.find("ul:visible")
.slideUp(animationSpeed);
self.parent().addClass("selected");
checkElement.slideDown(animationSpeed);
}
});
};
}
/* ----------------------------------
- Box Refresh Button -
---------------------------------- */
(function ($) {
$.fn.boxRefresh = function (options) {
var settings = $.extend(
{
trigger: ".refresh-btn",
source: "",
onLoadStart: function (box) {
return box;
},
onLoadDone: function (box) {
return box;
},
},
options
);
var overlay = $(
'<div class="overlay"><div class="fa fa-refresh fa-spin"></div></div>'
);
return this.each(function () {
if (settings.source === "") {
if (window.console) {
window.console.log(
"Please specify a source first - boxRefresh()"
);
}
return;
}
var box = $(this);
var rBtn = box.find(settings.trigger).first();
rBtn.on("click", function (e) {
e.preventDefault();
start(box);
box.find(".box-body").load(settings.source, function () {
done(box);
});
});
});
function start(box) {
box.append(overlay);
settings.onLoadStart.call(box);
}
function done(box) {
box.find(overlay).remove();
settings.onLoadDone.call(box);
}
};
})(jQuery);