Browse Source

Update MyDashboard.js

pull/1545/head
Halil İbrahim Kalkan 7 years ago
parent
commit
f8f2bdb91d
  1. 83
      samples/DashboardDemo/src/DashboardDemo.Web/Pages/MyDashboard.js

83
samples/DashboardDemo/src/DashboardDemo.Web/Pages/MyDashboard.js

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

Loading…
Cancel
Save