2 import {Distribution, DistributionComponent, ExportExcel} from "app/models";
4 interface IDistributionStatusModalViewModelScope {
5 distribution:Distribution;
7 getStatusCount(distributionComponent:Array<DistributionComponent>):any;
8 getUrlName(url:string):string;
9 modalDitributionStatus:ng.ui.bootstrap.IModalServiceInstance;
10 footerButtons:Array<any>;
11 //exportExcelData:ExportExcel;
13 initDataForExportExcel():ExportExcel;
16 export class DistributionStatusModalViewModel {
18 static '$inject' = ['$scope', '$uibModalInstance', 'data', '$filter'];
20 constructor(private $scope:IDistributionStatusModalViewModelScope,
21 private $uibModalInstance:ng.ui.bootstrap.IModalServiceInstance,
23 private $filter:ng.IFilterService) {
27 private generateMetaDataForExportExcel = ():Array<string>=> {
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;
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
50 return correctFormatDataObj;
53 private initScope = ():void => {
54 this.$scope.distribution = this.data.distribution;
55 this.$scope.status = this.data.status;
56 this.$scope.modalDitributionStatus = this.$uibModalInstance;
59 this.$scope.getUrlName = (url:string):string => {
60 let urlName:string = _.last(url.split('/'));
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;
74 this.$scope.close = ():void => {
75 this.$uibModalInstance.close();
78 this.$scope.footerButtons = [
79 {'name': 'Close', 'css': 'blue', 'callback': this.$scope.close}