Browse Source

Move DashboardManager and WidgetManager to the framework.

pull/1545/head
Halil İbrahim Kalkan 7 years ago
parent
commit
5528011425
  1. 2
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/Bundling/SharedThemeGlobalScriptContributor.cs
  2. 54
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/wwwroot/libs/abp/aspnetcore-mvc-ui-theme-shared/jquery/dashboard-manager.js
  3. 86
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/wwwroot/libs/abp/aspnetcore-mvc-ui-theme-shared/jquery/widget-manager.js
  4. 136
      samples/DashboardDemo/src/DashboardDemo.Web/Pages/MyDashboard.js

2
framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/Bundling/SharedThemeGlobalScriptContributor.cs

@ -35,6 +35,8 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Bundling
{
"/libs/abp/aspnetcore-mvc-ui-theme-shared/jquery/jquery-extensions.js",
"/libs/abp/aspnetcore-mvc-ui-theme-shared/jquery-form/jquery-form-extensions.js",
"/libs/abp/aspnetcore-mvc-ui-theme-shared/jquery/widget-manager.js",
"/libs/abp/aspnetcore-mvc-ui-theme-shared/jquery/dashboard-manager.js",
"/libs/abp/aspnetcore-mvc-ui-theme-shared/bootstrap/dom-event-handlers.js",
"/libs/abp/aspnetcore-mvc-ui-theme-shared/bootstrap/modal-manager.js",
"/libs/abp/aspnetcore-mvc-ui-theme-shared/datatables/datatables-extensions.js",

54
framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/wwwroot/libs/abp/aspnetcore-mvc-ui-theme-shared/jquery/dashboard-manager.js

@ -0,0 +1,54 @@
(function ($) {
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 () {
var widgetManager = new abp.WidgetManager({
wrapper: $(this),
filterCallback: opts.filterCallback || function () {
if (opts.filterForm) {
return opts.filterForm.serializeFormToObject();
}
return {};
}
});
widgetManager.init();
});
};
var refresh = function () {
$dashboardWrapper.find('.abp-widget-wrapper').each(function () {
var widgetManager = $(this).data('abp-widget-manager');
widgetManager && widgetManager.refresh();
});
};
if (opts.filterForm) {
opts.filterForm.submit(function (e) {
e.preventDefault();
refresh();
});
}
return {
init: init,
refresh: refresh
};
};
})(jQuery);

86
framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/wwwroot/libs/abp/aspnetcore-mvc-ui-theme-shared/jquery/widget-manager.js

@ -0,0 +1,86 @@
(function ($) {
abp.widgets = abp.widgets || {};
abp.WidgetManager = function (opts) {
if (typeof opts === 'string') {
opts = {
wrapper: opts
};
}
var $widgetWrapperDiv;
if (typeof opts.wrapper === 'string') {
$widgetWrapperDiv = $(opts.wrapper);
} else {
$widgetWrapperDiv = opts.wrapper;
}
if (!$widgetWrapperDiv.hasClass('abp-widget-wrapper')) {
$widgetWrapperDiv = $widgetWrapperDiv.closest('.abp-widget-wrapper');
}
var getFilters = function () {
var filters = {};
if (opts.filterCallback) {
filters = opts.filterCallback();
}
var widgetApi = $widgetWrapperDiv.data('abp-widget-api');
if (widgetApi && widgetApi.getFilters) {
filters = $.extend(filters, widgetApi.getFilters());
}
return filters;
};
var init = function () {
var widgetName = $widgetWrapperDiv.attr('data-widget-name');
var widgetApiClass = abp.widgets[widgetName];
if (widgetApiClass) {
var widgetApi = new widgetApiClass($widgetWrapperDiv);
$widgetWrapperDiv.data('abp-widget-api', widgetApi);
if (widgetApi.init) {
widgetApi.init(getFilters($widgetWrapperDiv));
}
}
};
var callRefreshWidgetApi = function () {
var widgetApi = $widgetWrapperDiv.data('abp-widget-api');
if (widgetApi && widgetApi.refresh) {
widgetApi.refresh(getFilters($widgetWrapperDiv));
}
}
var refresh = function () {
var refreshUrl = $widgetWrapperDiv.attr('data-refresh-url');
if (refreshUrl) {
abp.ajax({
url: refreshUrl,
type: 'GET',
dataType: 'html',
contentType: 'application/x-www-form-urlencoded; charset=UTF-8',
data: getFilters()
}).then(function (result) {
var $newWidgetWrapperDiv = $(result);
$widgetWrapperDiv.replaceWith($newWidgetWrapperDiv);
$widgetWrapperDiv = $newWidgetWrapperDiv;
$widgetWrapperDiv.data('abp-widget-manager', publicApi);
init();
});
} else {
callRefreshWidgetApi();
}
};
var publicApi = {
init: init,
refresh: refresh
};
$widgetWrapperDiv.data('abp-widget-manager', publicApi);
return publicApi;
};
})(jQuery);

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

@ -1,141 +1,9 @@
abp.widgets = abp.widgets || {}; //TODO: Remove later
(function () {
abp.WidgetManager = function (opts) {
if (typeof opts === 'string') {
opts = {
wrapper: opts
};
}
var $widgetWrapperDiv;
if (typeof opts.wrapper === 'string') {
$widgetWrapperDiv = $(opts.wrapper);
} else {
$widgetWrapperDiv = opts.wrapper;
}
if (!$widgetWrapperDiv.hasClass('abp-widget-wrapper')) {
$widgetWrapperDiv = $widgetWrapperDiv.closest('.abp-widget-wrapper');
}
var getFilters = function () {
var filters = {};
if (opts.filterCallback) {
filters = opts.filterCallback();
}
var widgetApi = $widgetWrapperDiv.data('abp-widget-api');
if (widgetApi && widgetApi.getFilters) {
filters = $.extend(filters, widgetApi.getFilters());
}
return filters;
};
var init = function () {
var widgetName = $widgetWrapperDiv.attr('data-widget-name');
var widgetApiClass = abp.widgets[widgetName];
if (widgetApiClass) {
var widgetApi = new widgetApiClass($widgetWrapperDiv);
$widgetWrapperDiv.data('abp-widget-api', widgetApi);
if (widgetApi.init) {
widgetApi.init(getFilters($widgetWrapperDiv));
}
}
};
var callRefreshWidgetApi = function () {
var widgetApi = $widgetWrapperDiv.data('abp-widget-api');
if (widgetApi && widgetApi.refresh) {
widgetApi.refresh(getFilters($widgetWrapperDiv));
}
}
var refresh = function () {
var refreshUrl = $widgetWrapperDiv.attr('data-refresh-url');
if (refreshUrl) {
abp.ajax({
url: refreshUrl,
type: 'GET',
dataType: 'html',
contentType: 'application/x-www-form-urlencoded; charset=UTF-8',
data: getFilters()
}).then(function (result) {
var $newWidgetWrapperDiv = $(result);
$widgetWrapperDiv.replaceWith($newWidgetWrapperDiv);
$widgetWrapperDiv = $newWidgetWrapperDiv;
$widgetWrapperDiv.data('abp-widget-manager', publicApi);
init();
});
} else {
callRefreshWidgetApi();
}
};
var publicApi = {
init: init,
refresh: refresh
};
$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() {
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
};
};
var filterForm = $('#MyDashboardFilterForm');
(function () {
var myDashboard = new abp.DashboardManager({
wrapper: '#MyDashboardWidgetsArea',
filterCallback: function () {
return filterForm.serializeFormToObject();
}
filterForm: $('#MyDashboardFilterForm')
});
myDashboard.init();
filterForm.submit(function (e) {
e.preventDefault();
myDashboard.refresh();
});
})();
Loading…
Cancel
Save