@@ -69,13 +69,27 @@ var trackerCaptureServices = angular.module('trackerCaptureServices', ['ngResour
69
69
70
70
var programStageLayout = { } ;
71
71
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
+
72
86
var getDefaultLayout = function ( customLayout ) {
73
87
var dashboardLayout = { customLayout : customLayout , defaultLayout : defaultLayout } ;
74
88
var promise = $http . get ( DHIS2URL + '/dataStore/tracker-capture/keyTrackerDashboardDefaultLayout' ) . then ( function ( response ) {
75
89
angular . extend ( dashboardLayout . defaultLayout , response . data ) ;
76
- return dashboardLayout ;
90
+ return removeDuplicateWidgets ( dashboardLayout ) ;
77
91
} , function ( ) {
78
- return dashboardLayout ;
92
+ return removeDuplicateWidgets ( dashboardLayout ) ;
79
93
} ) ;
80
94
return promise ;
81
95
} ;
@@ -138,7 +152,7 @@ var trackerCaptureServices = angular.module('trackerCaptureServices', ['ngResour
138
152
} ,
139
153
get : function ( ) {
140
154
var promise = $http . get ( DHIS2URL + '/userSettings/keyTrackerDashboardLayout' ) . then ( function ( response ) {
141
- return getDefaultLayout ( response . data ) ;
155
+ return getDefaultLayout ( response . data === 'null' ? null : response . data ) ;
142
156
} , function ( ) {
143
157
return getDefaultLayout ( null ) ;
144
158
} ) ;
0 commit comments