File: /python/moda/public_html/tech/old/assets/js/AdminDashboard.js
$(document).ready(function(){
var minimisedWidgets = null;
if(typeof(Storage) !== "undefined") {
minimisedWidgets = JSON.parse(localStorage.getItem("minimisedWidgets"));
}
if (!minimisedWidgets) {
minimisedWidgets = [];
}
$(".widget-minimise").click(function(e) {
e.preventDefault();
var obj = $(this);
var icon = obj.find('i'),
widget = obj.closest('.panel').data('widget');
if (icon.hasClass('fa-chevron-up')) {
obj.closest('.panel').find('.panel-body').slideUp('fast', function() {
icon.removeClass('fa-chevron-up').addClass('fa-chevron-down');
packery.shiftLayout();
});
if (minimisedWidgets.indexOf(widget) == -1) {
minimisedWidgets.push(widget);
}
} else {
obj.closest('.panel').find('.panel-body').slideDown('fast', function(e) {
icon.removeClass('fa-chevron-down').addClass('fa-chevron-up');
packery.fit(this);
packery.shiftLayout();
});
minimisedWidgets.splice(minimisedWidgets.indexOf(widget), 1);
}
if(typeof(Storage) !== "undefined") {
localStorage.setItem("minimisedWidgets", JSON.stringify(minimisedWidgets));
}
});
$(".widget-refresh").click(function(e) {
e.preventDefault();
var obj = $(this);
var icon = obj.find('i');
var widget = obj.closest('.panel').data('widget');
var panelBody = obj.closest('.panel').find('.panel-body');
icon.addClass('fa-spin');
refreshWidget(widget, 'refresh=1');
});
var completedToggle = false;
$(".widget-hide").click(function(e) {
e.preventDefault();
var obj = $(this),
widget = obj.closest('.panel').data('widget');
completedToggle = true;
$('#panel' + widget).slideUp('fast', function() {
$(this).addClass('hidden');
WHMCS.http.jqClient.post(WHMCS.adminUtils.getAdminRouteUrl('/widget/display/toggle/' + widget)).always(function() {
$('input[data-widget="' + widget + '"]').iCheck('uncheck');
completedToggle = false;
});
$('.home-widgets-container').masonry().masonry('reloadItems');
});
});
$(document).on('ifToggled', '.display-widget', function(event) {
var self = $(this),
widget = $(this).data('widget'),
widgetPanel = $('#panel' + widget);
if (completedToggle) {
return;
}
self.iCheck('disable');
if (self.prop('checked')) {
if (widgetPanel.hasClass('hidden')) {
self.parent('div').parent('label').parent('li').addClass('active');
widgetPanel.hide().removeClass('hidden').slideDown('fast', function() {
WHMCS.http.jqClient.post(WHMCS.adminUtils.getAdminRouteUrl('/widget/display/toggle/' + widget))
.always(function() {
$('.home-widgets-container').masonry().masonry('reloadItems');
widgetPanel.find('.widget-refresh').click();
if ($('#widgetSettingsDropdown').hasClass('open') === false) {
$('#widgetSettings').dropdown('toggle');
}
self.iCheck('enable');
});
});
}
} else {
if (widgetPanel.hasClass('hidden') === false) {
self.parent('div').parent('label').parent('li').removeClass('active');
widgetPanel.slideUp('fast', function() {
$(this).addClass('hidden');
$('.home-widgets-container').masonry().masonry('reloadItems');
WHMCS.http.jqClient.post(WHMCS.adminUtils.getAdminRouteUrl('/widget/display/toggle/' + widget), function() {
if ($('#widgetSettingsDropdown').hasClass('open') === false) {
$('#widgetSettings').dropdown('toggle');
}
}, 'json').always(function() {
self.iCheck('enable');
});
});
}
}
});
$('input.display-widget').each(function(){
var self = $(this),
label = self.next(),
label_text = label.text();
label.remove();
self.iCheck({
inheritID: true,
checkboxClass: 'icheckbox_flat-blue',
increaseArea: '20%'
});
});
if ($('.home-widgets-container').length) {
minimisedWidgets.forEach(function(currentValue) {
$('#panel' + currentValue).find('.panel-body').hide().end()
.find('i.fa-chevron-up').removeClass('fa-chevron-up').addClass('fa-chevron-down');
});
Packery.prototype.getPositions = function() {
return this.items.map(function(item) {
return item.element.getAttribute("data-widget")
});
};
// init Packery
grid = document.querySelector('.home-widgets-container'),
packery = new Packery(grid, {
itemSelector: '.dashboard-panel-item',
columnWidth: '.dashboard-panel-sizer',
percentPosition: true
});
packery.stamp(document.querySelector('.dashboard-panel-static-item'));
// init draggable
var items = grid.querySelectorAll('.dashboard-panel-item');
for (var i=0; i < items.length; i++) {
var itemElem = items[i],
draggie = new Draggabilly(itemElem, {handle: '.panel-title'} );
packery.bindDraggabillyEvents(draggie);
}
// Listeners
packery.on('removeComplete', function() {
packery.shiftLayout();
});
var isSaving = false;
packery.on('dragItemPositioned', function(items) {
packery.shiftLayout();
if (!$(".home-widgets-container").children("div.dashboard-panel-item").hasClass('is-dragging')){
if (!isSaving) {
isSaving = true;
setTimeout(function () {
saveWidgetPosition();
}, 1000);
}
}
});
}
function saveWidgetPosition() {
WHMCS.http.jqClient.post(WHMCS.adminUtils.getAdminRouteUrl('/widget/order'),
{
token: csrfToken,
order: packery.getPositions()
},
function(data) {
//do nothing
},
'json'
).always(function() {
isSaving = false;
packery.shiftLayout();
});
}
jQuery('.admin-dashboard-carousel button.close').on(
'click',
dismissAdminDashboardCarouselItem
);
jQuery(window).on(
'load resize orientationchange',
normalizeAdminDashboardCarouselContent
);
function normalizeAdminDashboardCarouselContent() {
let carouselContent = jQuery('.admin-dashboard-carousel .promotion-content');
carouselContent.css('min-height', 0);
let maxHeight = Math.max
.apply(
null,
carouselContent.map(getCarouselItemOuterHeight).get()
);
carouselContent.css('min-height', maxHeight + 'px');
}
function getCarouselItemOuterHeight() {
let element = jQuery(this);
let item = element.closest('.item');
let outerHeight = 0;
if (item.hasClass('active')) {
return element.outerHeight();
}
item.addClass('active');
outerHeight = element.outerHeight();
item.removeClass('active');
return outerHeight;
}
function removeAdminDashboardSpecificPromotion(carousel, identifier) {
let carouselItems = carousel.find('.item');
let carouselIndicators = carousel.find('.carousel-indicators li');
let targetIndex = 0;
carouselItems.removeClass('active');
carouselItems.each(function(index, item) {
if (jQuery(item).find('[data-identifier="' + identifier + '"]').length > 0) {
let nextIndex = parseInt(index) + 1;
if (nextIndex >= carouselItems.length) {
nextIndex = 0;
}
targetIndex = nextIndex;
jQuery(item).remove();
jQuery(carouselItems[nextIndex]).addClass('active');
}
});
if (carouselItems.length <= 2) {
jQuery('.admin-dashboard-carousel-controls').remove();
return false;
}
if (targetIndex !== 0) {
targetIndex--;
}
carouselIndicators.removeClass('active');
carouselIndicators.each(function(index, indicator) {
if (index === targetIndex) {
jQuery(indicator).addClass('active');
}
});
carouselIndicators.last().remove();
}
function dismissAdminDashboardCarouselItem() {
let identifier = jQuery(this).closest('.alert')
.data('identifier');
let carousel = jQuery('.admin-dashboard-carousel');
if (carousel.find('.item').length <= 1) {
carousel.remove();
} else {
removeAdminDashboardSpecificPromotion(carousel, identifier);
}
WHMCS.http.jqClient.post(
WHMCS.adminUtils.getAdminRouteUrl('/promotions/dismiss/' + identifier),
{
token: csrfToken,
}
);
}
//end of $(document).ready
});
var grid, packery;
function refreshWidget(widgetName, requestString) {
var obj = $('.panel[data-widget="' + widgetName + '"]');
var panelBody = obj.find('.panel-body');
var icon = obj.find('i.fa-sync');
panelBody.addClass('panel-loading');
var jqxhr = WHMCS.http.jqClient.post(WHMCS.adminUtils.getAdminRouteUrl('/widget/refresh&widget=' + widgetName + '&' + requestString),
function(data) {
panelBody.html(data.widgetOutput);
panelBody.removeClass('panel-loading');
}, 'json')
.always(function() {
icon.removeClass('fa-spin');
});
}