Skip to content
This repository was archived by the owner on May 14, 2025. It is now read-only.

Commit 7014974

Browse files
BoykoAlexghillert
authored andcommitted
Track apps registration changes in other components
1 parent 416011b commit 7014974

File tree

3 files changed

+49
-5
lines changed

3 files changed

+49
-5
lines changed

ui/app/scripts/app/controllers/apps.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,8 @@ define(['model/pageable'], function (Pageable) {
4545
function (result) {
4646
if (!!result._embedded) {
4747
$scope.pageable.items = result._embedded.appRegistrationResourceList;
48+
} else {
49+
$scope.pageable.items = [];
4850
}
4951
// Process received array of apps
5052
if (Array.isArray($scope.pageable.items)) {

ui/app/scripts/app/services.js

Lines changed: 42 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,11 +21,23 @@
2121
* @author Alex Boyko
2222
* @author Gunnar Hillert
2323
*/
24-
define(['angular'], function (angular) {
24+
define(['angular', 'lodash'], function (angular, _) {
2525
'use strict';
2626

2727
return angular.module('dataflowApps.services', [])
2828
.factory('AppService', function ($resource, $rootScope, $log, $http) {
29+
30+
var listeners = [];
31+
32+
// Debounce notifying listeners in case of multiple register/unregister single app calls
33+
var notifyListeners = _.debounce(function() {
34+
listeners.forEach(function (listener) {
35+
if (angular.isFunction(listener.changed)) {
36+
listener.changed();
37+
}
38+
});
39+
}, 100);
40+
2941
return {
3042
getDefinitions: function (pageable) {
3143
var params = {};
@@ -47,14 +59,18 @@ define(['angular'], function (angular) {
4759
},
4860
createCompositeApp: function(appName,definition) {
4961
$log.info('Creating composite app name=' + appName + ' def=' + definition);
50-
return $http({
62+
var request = $http({
5163
method: 'POST',
5264
url: $rootScope.dataflowServerUrl + '/apps',
5365
params: {
5466
name: appName,
5567
definition: definition
5668
}
5769
});
70+
request.then(function() {
71+
notifyListeners();
72+
});
73+
return request;
5874
},
5975
getAppInfo: function(appType,appName) {
6076
return $http({
@@ -63,7 +79,7 @@ define(['angular'], function (angular) {
6379
});
6480
},
6581
registerApp: function(type, name, uri, force) {
66-
return $resource($rootScope.dataflowServerUrl + '/apps/' + type + '/' + name, {}, {
82+
var request = $resource($rootScope.dataflowServerUrl + '/apps/' + type + '/' + name, {}, {
6783
registerApp: {
6884
method: 'POST',
6985
params: {
@@ -72,16 +88,24 @@ define(['angular'], function (angular) {
7288
}
7389
}
7490
}).registerApp();
91+
request.$promise.then(function() {
92+
notifyListeners();
93+
});
94+
return request;
7595
},
7696
unregisterApp: function(type, name) {
77-
return $resource($rootScope.dataflowServerUrl + '/apps/' + type + '/' + name, {}, {
97+
var request = $resource($rootScope.dataflowServerUrl + '/apps/' + type + '/' + name, {}, {
7898
unregisterApp: {
7999
method: 'DELETE'
80100
}
81101
}).unregisterApp();
102+
request.$promise.then(function() {
103+
notifyListeners();
104+
});
105+
return request;
82106
},
83107
bulkImportApps: function(uri, appsProperties, force) {
84-
return $resource($rootScope.dataflowServerUrl + '/apps', {}, {
108+
var request = $resource($rootScope.dataflowServerUrl + '/apps', {}, {
85109
bulkImportApps: {
86110
method: 'POST',
87111
params: {
@@ -91,6 +115,19 @@ define(['angular'], function (angular) {
91115
}
92116
}
93117
}).bulkImportApps();
118+
request.$promise.then(function() {
119+
notifyListeners();
120+
});
121+
return request;
122+
},
123+
addListener: function(listener) {
124+
listeners.push(listener);
125+
},
126+
removeListener: function(listener) {
127+
var index = listeners.indexOf(listener);
128+
if (index >= 0) {
129+
listeners.splice(index);
130+
}
94131
}
95132
};
96133
});

ui/app/scripts/stream/services/metamodel.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -758,6 +758,11 @@ define(function (require) {
758758
});
759759
}
760760

761+
// Add listener to App service to keep track if list of registered apps changing
762+
appService.addListener({
763+
changed: refresh
764+
});
765+
761766
/**
762767
* Service object. See the comments for individual functions above.
763768
*/

0 commit comments

Comments
 (0)