Async MSO error visibility: let open "retry" from Audit-info
[vid.git] / vid-webpack-master / src / app / shared / components / auditInfoModal / auditInfoModal.component.ts
1 import {Component, ViewChild} from '@angular/core';
2 import {Subject} from 'rxjs/Subject';
3 import {ModalDirective} from 'ngx-bootstrap'
4 import {ModelInformationItem} from '../model-information/model-information.component';
5 import {ServiceModel} from '../../models/serviceModel';
6 import {ServiceInfoService} from '../../server/serviceInfo/serviceInfo.service';
7 import {ServiceInfoModel} from '../../server/serviceInfo/serviceInfo.model';
8 import {AuditStatus} from '../../server/serviceInfo/AuditStatus.model';
9 import {IframeService} from "../../utils/iframe.service";
10 import {NgRedux} from "@angular-redux/store";
11 import {AppState} from "../../store/reducers";
12 import {AuditInfoModalComponentService} from "./auditInfoModal.component.service";
13 import {FeatureFlagsService, Features} from "../../services/featureFlag/feature-flags.service";
14
15 @Component({
16   selector: 'audit-info-modal',
17   templateUrl: './auditInfoModal.component.html',
18   styleUrls: ['./auditInfoModal.component.scss']
19 })
20 export class AuditInfoModalComponent {
21   static openModal: Subject<ServiceInfoModel> = new Subject<ServiceInfoModel>();
22   static openInstanceAuditInfoModal: Subject<{instanceId , type, model, instance}> = new Subject<{instanceId , type, model, instance}>();
23   @ViewChild('auditInfoModal', {static: false}) public auditInfoModal: ModalDirective;
24   title: string = 'Service Instantiation Information';
25   modelInfoItems: ModelInformationItem[] = [];
26   serviceModel: ServiceModel;
27   serviceModelName: string;
28   serviceModelId: string;
29   jobId: string;
30   vidInfoData: AuditStatus[] = [];
31   msoInfoData: AuditStatus[] = [];
32   isAlaCarte: boolean;
33   parentElementClassName = 'content';
34   isLoading = true;
35   model: any;
36   instanceId: string;
37   isALaCarteFlagOn: boolean;
38   showMoreAuditInfoLink: boolean;
39   type : string = "Service";
40   showVidStatus : boolean = true;
41   auditInfoModalComponentService : AuditInfoModalComponentService;
42   constructor(private _serviceInfoService: ServiceInfoService, private _iframeService : IframeService,
43               private _auditInfoModalComponentService : AuditInfoModalComponentService,
44               private _featureFlagsService: FeatureFlagsService,
45               private store: NgRedux<AppState>) {
46     this.auditInfoModalComponentService = this._auditInfoModalComponentService;
47     AuditInfoModalComponent.openModal.subscribe((jobData: ServiceInfoModel) => {
48       this.isALaCarteFlagOn = this.store.getState().global.flags['FLAG_A_LA_CARTE_AUDIT_INFO'];
49       this.showMoreAuditInfoLink = _featureFlagsService.getFlagState(Features.FLAG_MORE_AUDIT_INFO_LINK_ON_AUDIT_INFO);
50       this.initializeProperties();
51       this.showVidStatus = true;
52       if (jobData) {
53         this.isAlaCarte = jobData.aLaCarte;
54         this.openAuditInfoModal(jobData);
55         _iframeService.addClassOpenModal(this.parentElementClassName);
56         this.serviceModelName = jobData.serviceModelName ? jobData.serviceModelName : '';
57         this.serviceModelId = jobData.serviceModelId;
58         this.jobId = jobData.jobId;
59         this.auditInfoModal.show();
60       } else {
61         _iframeService.removeClassCloseModal(this.parentElementClassName);
62         this.auditInfoModal.hide();
63       }
64     });
65
66     AuditInfoModalComponent.openInstanceAuditInfoModal.subscribe(({instanceId  , type ,  model, instance}) => {
67       this.showVidStatus = false;
68       this.showMoreAuditInfoLink = false;
69       this.initializeProperties();
70       this.setModalTitles(type);
71       this.serviceModelName = AuditInfoModalComponentService.getInstanceModelName(model);
72
73       if (instance.isFailed) {
74         this._serviceInfoService.getAuditStatusForRetry(instance.trackById).subscribe((res: AuditStatus) => {
75           this.msoInfoData = [res];
76         });
77       }else{
78         this._serviceInfoService.getInstanceAuditStatus(instanceId, type).subscribe((res : AuditStatus[]) =>{
79           this.msoInfoData = res;
80        });
81       }
82       this.modelInfoItems = this.auditInfoModalComponentService.getModelInfo(model, instance, instanceId);
83       _iframeService.addClassOpenModal(this.parentElementClassName);
84       this.auditInfoModal.show();
85     });
86   }
87
88
89   setModalTitles(type : string) : void{
90     this.type = AuditInfoModalComponentService.setModalTitlesType(type) ;
91     this.title = AuditInfoModalComponentService.setModalTitle(type);
92   }
93
94   initializeProperties() : void {
95     this.modelInfoItems = null;
96     this.vidInfoData = [];
97     this.msoInfoData = [];
98     this.isLoading = true;
99   }
100
101   openAuditInfoModal(jobData: ServiceInfoModel): void {
102     this.modelInfoItems = AuditInfoModalComponentService.createModelInformationItemsJob(jobData);
103     this.initAuditInfoData(jobData);
104     this.auditInfoModal.onHide.subscribe(()=>{
105       this._iframeService.removeClassCloseModal(this.parentElementClassName);
106       this.initializeProperties();
107     });
108     this.auditInfoModal.show();
109   }
110
111   initAuditInfoData(jobData: ServiceInfoModel) {
112     this._serviceInfoService.getJobAuditStatus(jobData)
113       .subscribe((res: AuditStatus[][]) => {
114         this.vidInfoData = res[0];
115         this.msoInfoData = res[1];
116         this.isLoading = false;
117       });
118   }
119
120   onCancelClick() {
121     this._iframeService.removeClassCloseModal(this.parentElementClassName);
122     this.initializeProperties();
123     this.auditInfoModal.hide();
124   }
125
126
127   onNavigate(){
128     window.open("http://ecompguide.web.att.com:8000/#ecomp_ug/c_ecomp_ops_vid.htmll#r_ecomp_ops_vid_bbglossary", "_blank");
129   }
130
131   readOnlyRetryUrl = (): string =>
132     `../../serviceModels.htm?more#/servicePlanning/RETRY?serviceModelId=${this.serviceModelId}&jobId=${this.jobId}`
133 }
134