1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
|
'use strict';
import {Distribution, DistributionComponent, Service} from "app/models";
import {ModalsHandler, Dictionary} from "app/utils";
import {IWorkspaceViewModelScope} from "app/view-models/workspace/workspace-view-model";
interface IDistributionViewModel extends IWorkspaceViewModelScope {
modalDistribution:ng.ui.bootstrap.IModalServiceInstance;
service:Service;
distributions:Array<Distribution>;
showComponents(distribution:Distribution):void;
markAsDeployed(distribution:Distribution):void;
getStatusCount(distributionComponent:Array<DistributionComponent>):any;
initDistributions():void;
getUrlName(url:string):string;
close():void;
openDisributionStatusModal:Function;
}
export class DistributionViewModel {
static '$inject' = [
'$scope',
'ModalsHandler'
];
constructor(private $scope:IDistributionViewModel,
private ModalsHandler:ModalsHandler) {
this.initScope();
this.$scope.setValidState(true);
this.$scope.updateSelectedMenuItem();
}
private initScope = ():void => {
this.$scope.service = <Service>this.$scope.component;
// Open Distribution status modal
this.$scope.openDisributionStatusModal = (distribution:Distribution, status:string):void => {
this.ModalsHandler.openDistributionStatusModal(distribution, status, this.$scope.component).then(()=> {
// OK
}, ()=> {
// ERROR
});
};
this.$scope.showComponents = (distribution:Distribution):void => {
let onError = (response) => {
console.info('onError showComponents', response);
};
let onSuccess = (distributionComponents:Array<DistributionComponent>) => {
distribution.distributionComponents = distributionComponents;
distribution.statusCount = this.$scope.getStatusCount(distribution.distributionComponents);
// distribution.components = this.aggregateDistributionComponent(distributionComponents);;
};
this.$scope.service.getDistributionsComponent(distribution.distributionID).then(onSuccess, onError);
};
this.$scope.getStatusCount = (distributionComponent:Array<DistributionComponent>):any => {
return _.countBy(distributionComponent, 'status')
};
this.$scope.getUrlName = (url:string):string => {
let urlName:string = _.last(url.split('/'));
return urlName;
};
this.$scope.markAsDeployed = (distribution:Distribution):void => {
let onError = (response) => {
console.info('onError markAsDeployed', response);
};
let onSuccess = (result:any) => {
distribution.deployementStatus = 'Deployed';
};
this.$scope.service.markAsDeployed(distribution.distributionID).then(onSuccess, onError);
};
this.$scope.initDistributions = ():void => {
let onError = (response) => {
console.info('onError initDistributions', response);
};
let onSuccess = (distributions:Array<Distribution>) => {
this.$scope.distributions = distributions;
};
this.$scope.service.getDistributionsList().then(onSuccess, onError);
};
this.$scope.initDistributions();
};
private aggregateDistributionComponent = (distributionComponents:Array<DistributionComponent>):any => {
let aggregateDistributions:Dictionary<string,Dictionary<string,Array<DistributionComponent>>> = new Dictionary<string,Dictionary<string,Array<DistributionComponent>>>();
let tempAggregateDistributions:any = _.groupBy(distributionComponents, 'omfComponentID');
let aa = new Dictionary<string,Array<DistributionComponent>>();
let tempAggregate:any;
_.forEach(tempAggregateDistributions, (distributionComponents:Array<DistributionComponent>, omfComponentID:string)=> {
let urls:any = _.groupBy(distributionComponents, 'url');
aggregateDistributions.setValue(omfComponentID, urls);
// aggregateDistributions[omfComponentID] = ;
});
console.log(aggregateDistributions);
return aggregateDistributions;
};
}
|