|
|
|
@ -1,26 +1,25 @@ |
|
|
|
abp.widgets = abp.widgets || {}; //TODO: Remove later
|
|
|
|
(function () { |
|
|
|
|
|
|
|
abp.WidgetManager = function(opts) { |
|
|
|
|
|
|
|
}; |
|
|
|
|
|
|
|
abp.DashboardManager = function (opts) { |
|
|
|
|
|
|
|
abp.WidgetManager = function (opts) { |
|
|
|
if (typeof opts === 'string') { |
|
|
|
opts = { |
|
|
|
wrapper: opts |
|
|
|
}; |
|
|
|
} |
|
|
|
|
|
|
|
var $dashboardWrapper; |
|
|
|
var $widgetWrapperDiv; |
|
|
|
if (typeof opts.wrapper === 'string') { |
|
|
|
$dashboardWrapper = $(opts.wrapper); |
|
|
|
$widgetWrapperDiv = $(opts.wrapper); |
|
|
|
} else { |
|
|
|
$dashboardWrapper = opts.wrapper; |
|
|
|
$widgetWrapperDiv = opts.wrapper; |
|
|
|
} |
|
|
|
|
|
|
|
var getFilters = function ($widgetWrapperDiv) { |
|
|
|
if (!$widgetWrapperDiv.hasClass('abp-widget-wrapper')) { |
|
|
|
$widgetWrapperDiv = $widgetWrapperDiv.closest('.abp-widget-wrapper'); |
|
|
|
} |
|
|
|
|
|
|
|
var getFilters = function () { |
|
|
|
var filters = {}; |
|
|
|
|
|
|
|
if (opts.filterCallback) { |
|
|
|
@ -34,8 +33,8 @@ |
|
|
|
|
|
|
|
return filters; |
|
|
|
}; |
|
|
|
|
|
|
|
var initWidget = function($widgetWrapperDiv) { |
|
|
|
|
|
|
|
var init = function () { |
|
|
|
var widgetName = $widgetWrapperDiv.attr('data-widget-name'); |
|
|
|
var widgetApiClass = abp.widgets[widgetName]; |
|
|
|
if (widgetApiClass) { |
|
|
|
@ -47,14 +46,14 @@ |
|
|
|
} |
|
|
|
}; |
|
|
|
|
|
|
|
var callRefreshWidgetApi = function ($widgetWrapperDiv) { |
|
|
|
var callRefreshWidgetApi = function () { |
|
|
|
var widgetApi = $widgetWrapperDiv.data('abp-widget-api'); |
|
|
|
if (widgetApi && widgetApi.refresh) { |
|
|
|
widgetApi.refresh(getFilters($widgetWrapperDiv)); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
var refreshWidget = function ($widgetWrapperDiv) { |
|
|
|
var refresh = function () { |
|
|
|
var refreshUrl = $widgetWrapperDiv.attr('data-refresh-url'); |
|
|
|
if (refreshUrl) { |
|
|
|
abp.ajax({ |
|
|
|
@ -62,30 +61,62 @@ |
|
|
|
type: 'GET', |
|
|
|
dataType: 'html', |
|
|
|
contentType: 'application/x-www-form-urlencoded; charset=UTF-8', |
|
|
|
data: getFilters($widgetWrapperDiv) |
|
|
|
data: getFilters() |
|
|
|
}).then(function (result) { |
|
|
|
var $newWidgetWrapperDiv = $(result); |
|
|
|
$widgetWrapperDiv.replaceWith($newWidgetWrapperDiv); |
|
|
|
$widgetWrapperDiv = $newWidgetWrapperDiv; |
|
|
|
initWidget($widgetWrapperDiv); |
|
|
|
$widgetWrapperDiv.data('abp-widget-manager', publicApi); |
|
|
|
init(); |
|
|
|
}); |
|
|
|
} else { |
|
|
|
callRefreshWidgetApi($widgetWrapperDiv); |
|
|
|
callRefreshWidgetApi(); |
|
|
|
} |
|
|
|
}; |
|
|
|
|
|
|
|
var init = function () { |
|
|
|
$dashboardWrapper.find('.abp-widget-wrapper').each(function () { |
|
|
|
initWidget($(this)); |
|
|
|
}); |
|
|
|
var publicApi = { |
|
|
|
init: init, |
|
|
|
refresh: refresh |
|
|
|
}; |
|
|
|
|
|
|
|
var refresh = function() { |
|
|
|
$widgetWrapperDiv.data('abp-widget-manager', publicApi); |
|
|
|
|
|
|
|
return publicApi; |
|
|
|
}; |
|
|
|
|
|
|
|
abp.DashboardManager = function (opts) { |
|
|
|
|
|
|
|
if (typeof opts === 'string') { |
|
|
|
opts = { |
|
|
|
wrapper: opts |
|
|
|
}; |
|
|
|
} |
|
|
|
|
|
|
|
var $dashboardWrapper; |
|
|
|
if (typeof opts.wrapper === 'string') { |
|
|
|
$dashboardWrapper = $(opts.wrapper); |
|
|
|
} else { |
|
|
|
$dashboardWrapper = opts.wrapper; |
|
|
|
} |
|
|
|
|
|
|
|
var init = function() { |
|
|
|
$dashboardWrapper.find('.abp-widget-wrapper').each(function() { |
|
|
|
refreshWidget($(this)); |
|
|
|
var widgetManager = new abp.WidgetManager({ |
|
|
|
wrapper: $(this), |
|
|
|
filterCallback: opts.filterCallback |
|
|
|
}); |
|
|
|
|
|
|
|
widgetManager.init(); |
|
|
|
}); |
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
var refresh = function () { |
|
|
|
$dashboardWrapper.find('.abp-widget-wrapper').each(function () { |
|
|
|
var widgetManager = $(this).data('abp-widget-manager'); |
|
|
|
widgetManager && widgetManager.refresh(); |
|
|
|
}); |
|
|
|
}; |
|
|
|
|
|
|
|
return { |
|
|
|
init: init, |
|
|
|
refresh: refresh |
|
|
|
@ -96,14 +127,14 @@ |
|
|
|
|
|
|
|
var myDashboard = new abp.DashboardManager({ |
|
|
|
wrapper: '#MyDashboardWidgetsArea', |
|
|
|
filterCallback: function() { |
|
|
|
filterCallback: function () { |
|
|
|
return filterForm.serializeFormToObject(); |
|
|
|
} |
|
|
|
}); |
|
|
|
|
|
|
|
myDashboard.init(); |
|
|
|
|
|
|
|
filterForm.submit(function(e) { |
|
|
|
filterForm.submit(function (e) { |
|
|
|
e.preventDefault(); |
|
|
|
myDashboard.refresh(); |
|
|
|
}); |
|
|
|
|