Skip to content

Commit 00c944c

Browse files
committed
fix: filter duplicate widgets from keyTrackerDashboardLayout response
1 parent 77ef87d commit 00c944c

File tree

1 file changed

+17
-3
lines changed

1 file changed

+17
-3
lines changed

scripts/services.js

+17-3
Original file line numberDiff line numberDiff line change
@@ -69,13 +69,27 @@ var trackerCaptureServices = angular.module('trackerCaptureServices', ['ngResour
6969

7070
var programStageLayout = {};
7171

72+
var removeDuplicateWidgets = function(dashboardLayout){
73+
angular.forEach(dashboardLayout.customLayout, function(layout){
74+
const widgetTitles = new Set;
75+
layout.widgets = layout.widgets.filter((widget) => {
76+
if (widgetTitles.has(widget.title)) {
77+
return false;
78+
}
79+
widgetTitles.add(widget.title);
80+
return true;
81+
});
82+
});
83+
return dashboardLayout;
84+
};
85+
7286
var getDefaultLayout = function(customLayout){
7387
var dashboardLayout = {customLayout: customLayout, defaultLayout: defaultLayout};
7488
var promise = $http.get( DHIS2URL + '/dataStore/tracker-capture/keyTrackerDashboardDefaultLayout' ).then(function(response){
7589
angular.extend(dashboardLayout.defaultLayout, response.data);
76-
return dashboardLayout;
90+
return removeDuplicateWidgets(dashboardLayout);
7791
}, function(){
78-
return dashboardLayout;
92+
return removeDuplicateWidgets(dashboardLayout);
7993
});
8094
return promise;
8195
};
@@ -138,7 +152,7 @@ var trackerCaptureServices = angular.module('trackerCaptureServices', ['ngResour
138152
},
139153
get: function(){
140154
var promise = $http.get( DHIS2URL + '/userSettings/keyTrackerDashboardLayout' ).then(function(response){
141-
return getDefaultLayout(response.data);
155+
return getDefaultLayout(response.data === 'null' ? null : response.data);
142156
}, function(){
143157
return getDefaultLayout(null);
144158
});

0 commit comments

Comments
 (0)