diff --git a/samples/DashboardDemo/src/DashboardDemo.Web/Pages/MyDashboard.js b/samples/DashboardDemo/src/DashboardDemo.Web/Pages/MyDashboard.js index ac84a3cf79..0358663330 100644 --- a/samples/DashboardDemo/src/DashboardDemo.Web/Pages/MyDashboard.js +++ b/samples/DashboardDemo/src/DashboardDemo.Web/Pages/MyDashboard.js @@ -1,6 +1,10 @@ abp.widgets = abp.widgets || {}; //TODO: Remove later (function () { + abp.WidgetManager = function(opts) { + + }; + abp.DashboardManager = function (opts) { if (typeof opts === 'string') { @@ -16,12 +20,19 @@ $dashboardWrapper = opts.wrapper; } - var getFilters = function() { - if (!opts.filterCallback) { - return {}; + var getFilters = function ($widgetWrapperDiv) { + var filters = {}; + + if (opts.filterCallback) { + filters = opts.filterCallback(); } - return opts.filterCallback(); + var widgetApi = $widgetWrapperDiv.data('abp-widget-api'); + if (widgetApi && widgetApi.getFilters) { + filters = $.extend(filters, widgetApi.getFilters()); + } + + return filters; }; var initWidget = function($widgetWrapperDiv) { @@ -29,24 +40,17 @@ var widgetApiClass = abp.widgets[widgetName]; if (widgetApiClass) { var widgetApi = new widgetApiClass($widgetWrapperDiv); + $widgetWrapperDiv.data('abp-widget-api', widgetApi); if (widgetApi.init) { - widgetApi.init(getFilters()); + widgetApi.init(getFilters($widgetWrapperDiv)); } - - $widgetWrapperDiv.data('abp-widget-api', widgetApi); } }; - - var init = function () { - $dashboardWrapper.find('.abp-widget-wrapper').each(function () { - initWidget($(this)); - }); - }; var callRefreshWidgetApi = function ($widgetWrapperDiv) { var widgetApi = $widgetWrapperDiv.data('abp-widget-api'); if (widgetApi && widgetApi.refresh) { - widgetApi.refresh(getFilters()); + widgetApi.refresh(getFilters($widgetWrapperDiv)); } } @@ -58,8 +62,8 @@ type: 'GET', dataType: 'html', contentType: 'application/x-www-form-urlencoded; charset=UTF-8', - data: getFilters() - }).then(function(result) { + data: getFilters($widgetWrapperDiv) + }).then(function (result) { var $newWidgetWrapperDiv = $(result); $widgetWrapperDiv.replaceWith($newWidgetWrapperDiv); $widgetWrapperDiv = $newWidgetWrapperDiv; @@ -70,6 +74,12 @@ } }; + var init = function () { + $dashboardWrapper.find('.abp-widget-wrapper').each(function () { + initWidget($(this)); + }); + }; + var refresh = function() { $dashboardWrapper.find('.abp-widget-wrapper').each(function() { refreshWidget($(this)); diff --git a/samples/DashboardDemo/src/DashboardDemo.Web/Pages/Shared/Components/NewUserStatisticWidget/Default.js b/samples/DashboardDemo/src/DashboardDemo.Web/Pages/Shared/Components/NewUserStatisticWidget/Default.js index 9497d8e269..4565fdeafe 100644 --- a/samples/DashboardDemo/src/DashboardDemo.Web/Pages/Shared/Components/NewUserStatisticWidget/Default.js +++ b/samples/DashboardDemo/src/DashboardDemo.Web/Pages/Shared/Components/NewUserStatisticWidget/Default.js @@ -5,25 +5,29 @@ var _latestFilters; var _chart; - var refresh = function(filters) { - _latestFilters = filters || _latestFilters; - dashboardDemo.dashboard.getNewUserStatisticWidget({ - startDate: _latestFilters.startDate, - endDate: _latestFilters.endDate, + var getFilters = function() { + return { frequency: $wrapper.find('.frequency-filter option:selected').val() - }).then(function(result) { - _chart.data = { - labels: Object.keys(result.data), - datasets: [ - { - label: 'User count', - data: Object.values(result.data), - backgroundColor: 'rgba(255, 132, 132, 1)' - } - ] - }; - _chart.update(); - }); + }; + } + + var refresh = function(filters) { + _latestFilters = filters; + dashboardDemo.dashboard + .getNewUserStatisticWidget(_latestFilters) + .then(function(result) { + _chart.data = { + labels: Object.keys(result.data), + datasets: [ + { + label: 'User count', + data: Object.values(result.data), + backgroundColor: 'rgba(255, 132, 132, 1)' + } + ] + }; + _chart.update(); + }); }; var init = function(filters) { @@ -49,11 +53,12 @@ .find('.frequency-filter') .on('change', function() { - refresh(); + refresh($.extend(_latestFilters, getFilters())); }); }; return { + getFilters: getFilters, init: init, refresh: refresh };