ce2e0169bf12207ff876b365ced8aecda85f248e
[sdc.git] /
1 'use strict';
2 import {Distribution, DistributionComponent, ExportExcel} from "app/models";
3
4 interface IDistributionStatusModalViewModelScope {
5     distribution:Distribution;
6     status:string;
7     getStatusCount(distributionComponent:Array<DistributionComponent>):any;
8     getUrlName(url:string):string;
9     modalDitributionStatus:ng.ui.bootstrap.IModalServiceInstance;
10     footerButtons:Array<any>;
11     //exportExcelData:ExportExcel;
12     close():void;
13     initDataForExportExcel():ExportExcel;
14 }
15
16 export class DistributionStatusModalViewModel {
17
18     static '$inject' = ['$scope', '$uibModalInstance', 'data', '$filter'];
19
20     constructor(private $scope:IDistributionStatusModalViewModelScope,
21                 private $uibModalInstance:ng.ui.bootstrap.IModalServiceInstance,
22                 private data:any,
23                 private $filter:ng.IFilterService) {
24         this.initScope();
25     }
26
27     private generateMetaDataForExportExcel = ():Array<string>=> {
28         let metaData = [];
29         metaData[0] = 'Name:' + this.data.component.name + '| UUID:' + this.data.component.uuid + '|  Invariant UUID:' + this.data.component.invariantUUID;
30         metaData[1] = 'Distribution ID:' + this.$scope.distribution.distributionID +
31             '| USER ID:' + this.$scope.distribution.userId +
32             '| Time[UTC]:' + this.$filter('date')(this.$scope.distribution.timestamp, 'MM/dd/yyyy h:mma', 'UTC') +
33             '| Status:' + this.$scope.distribution.deployementStatus;
34         return metaData;
35     };
36
37     private generateDataObjectForExportExcel = ():any=> {
38         let correctFormatDataObj = [];
39         _.each(this.$scope.distribution.distributionComponents, (dComponent:DistributionComponent) => {
40             if (dComponent.status == this.$scope.status) {
41                 correctFormatDataObj.push({
42                     'omfComponentID': dComponent.omfComponentID,
43                     'artiFactName': this.$scope.getUrlName(dComponent.url),
44                     'url': dComponent.url,
45                     'timestamp': this.$filter('date')(dComponent.timestamp, 'MM/dd/yyyy h:mma', 'UTC'),
46                     'status': dComponent.status
47                 });
48             }
49         });
50         return correctFormatDataObj;
51     };
52
53     private initScope = ():void => {
54         this.$scope.distribution = this.data.distribution;
55         this.$scope.status = this.data.status;
56         this.$scope.modalDitributionStatus = this.$uibModalInstance;
57
58
59         this.$scope.getUrlName = (url:string):string => {
60             let urlName:string = _.last(url.split('/'));
61             return urlName;
62         };
63
64         this.$scope.initDataForExportExcel = ():ExportExcel => {
65             let exportExcelData = new ExportExcel();
66             exportExcelData.fileName = this.$scope.status;
67             exportExcelData.groupByField = "omfComponentID";
68             exportExcelData.tableHeaders = ["Component ID", "Artifact Name", "URL", "Time(UTC)", "Status"];
69             exportExcelData.metaData = this.generateMetaDataForExportExcel();
70             exportExcelData.dataObj = this.generateDataObjectForExportExcel();
71             return exportExcelData;
72         };
73
74         this.$scope.close = ():void => {
75             this.$uibModalInstance.close();
76         };
77
78         this.$scope.footerButtons = [
79             {'name': 'Close', 'css': 'blue', 'callback': this.$scope.close}
80         ];
81
82     };
83 }