From f8f2bdb91d0f826c8f42b4847fff432ce8dee4d0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Fri, 26 Jul 2019 12:08:30 +0300 Subject: [PATCH] Update MyDashboard.js --- .../DashboardDemo.Web/Pages/MyDashboard.js | 83 +++++++++++++------ 1 file changed, 57 insertions(+), 26 deletions(-) diff --git a/samples/DashboardDemo/src/DashboardDemo.Web/Pages/MyDashboard.js b/samples/DashboardDemo/src/DashboardDemo.Web/Pages/MyDashboard.js index 0358663330..7da4a80aa1 100644 --- a/samples/DashboardDemo/src/DashboardDemo.Web/Pages/MyDashboard.js +++ b/samples/DashboardDemo/src/DashboardDemo.Web/Pages/MyDashboard.js @@ -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(); });