in src/Sfx/App/Scripts/Services/ClusterTreeService.ts [98:175]
private getGroupNodes(): angular.IPromise<ITreeNode[]> {
//let cm: ClusterManifest = new ClusterManifest(this.data);
let cmPromise = this.cm.ensureInitialized(false);
let appsNode;
let getAppsPromise = this.data.getApps().then(apps => {
appsNode = {
nodeId: IdGenerator.appGroup(),
displayName: () => "Applications",
childrenQuery: () => this.getApplicationTypes(),
badge: () => apps.healthState,
selectAction: () => this.routes.navigate(() => apps.viewPath),
alwaysVisible: true
};
});
let nodesNode;
let getNodesPromise = this.data.getNodes().then(nodes => {
nodesNode = {
nodeId: IdGenerator.nodeGroup(),
displayName: () => "Nodes",
selectAction: () => this.routes.navigate(() => nodes.viewPath),
childrenQuery: () => this.getNodes(),
badge: () => nodes.healthState,
listSettings: this.settings.getNewOrExistingTreeNodeListSettings(nodes.viewPath),
alwaysVisible: true
};
});
let systemAppNode;
let systemNodePromise = this.data.getSystemApp().then(systemApp => {
systemAppNode = {
nodeId: IdGenerator.systemAppGroup(),
displayName: () => Constants.SystemAppTypeName,
selectAction: () => this.routes.navigate(() => systemApp.viewPath),
childrenQuery: () => this.getServices(Constants.SystemAppId),
badge: () => systemApp.healthState,
alwaysVisible: true,
addHealthStateFiltersForChildren: (clusterHealthChunkQueryDescription: IClusterHealthChunkQueryDescription) => {
// System app node is expanded, modify health filters to include system services
systemApp.addHealthStateFiltersForChildren(clusterHealthChunkQueryDescription);
},
mergeClusterHealthStateChunk: (clusterHealthChunk: IClusterHealthChunk) => {
return systemApp.services.mergeClusterHealthStateChunk(clusterHealthChunk);
}
};
}).catch(err => {
systemAppNode = null;
});
return cmPromise.then( () => {
//check to see if network inventory manager is enabled and if SFX should display Network information
if (this.cm.isNetworkInventoryManagerEnabled) {
let networkNode;
let getNetworkPromise = this.data.getNetworks(true).then(net => {
networkNode = {
nodeId: IdGenerator.networkGroup(),
displayName: () => "Networks",
childrenQuery: () => this.getNetworks(),
selectAction: () => this.routes.navigate(() => net.viewPath),
alwaysVisible: true
};
});
return this.$q.all([getAppsPromise, getNodesPromise, getNetworkPromise, systemNodePromise]).then(() => {
return [appsNode, nodesNode, networkNode, systemAppNode];
});
}
return this.$q.all([getAppsPromise, getNodesPromise, systemNodePromise]).then(() => {
let nodes = [appsNode, nodesNode];
if(systemAppNode) {
nodes.push(systemAppNode);
}
return nodes;
});
});
}