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";
16 selector: 'audit-info-modal',
17 templateUrl: './auditInfoModal.component.html',
18 styleUrls: ['./auditInfoModal.component.scss']
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;
30 vidInfoData: AuditStatus[] = [];
31 msoInfoData: AuditStatus[] = [];
33 parentElementClassName = 'content';
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;
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();
61 _iframeService.removeClassCloseModal(this.parentElementClassName);
62 this.auditInfoModal.hide();
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);
73 if (instance.isFailed) {
74 this._serviceInfoService.getAuditStatusForRetry(instance.trackById).subscribe((res: AuditStatus) => {
75 this.msoInfoData = [res];
78 this._serviceInfoService.getInstanceAuditStatus(instanceId, type).subscribe((res : AuditStatus[]) =>{
79 this.msoInfoData = res;
82 this.modelInfoItems = this.auditInfoModalComponentService.getModelInfo(model, instance, instanceId);
83 _iframeService.addClassOpenModal(this.parentElementClassName);
84 this.auditInfoModal.show();
89 setModalTitles(type : string) : void{
90 this.type = AuditInfoModalComponentService.setModalTitlesType(type) ;
91 this.title = AuditInfoModalComponentService.setModalTitle(type);
94 initializeProperties() : void {
95 this.modelInfoItems = null;
96 this.vidInfoData = [];
97 this.msoInfoData = [];
98 this.isLoading = true;
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();
108 this.auditInfoModal.show();
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;
121 this._iframeService.removeClassCloseModal(this.parentElementClassName);
122 this.initializeProperties();
123 this.auditInfoModal.hide();
128 window.open("http://ecompguide.web.att.com:8000/#ecomp_ug/c_ecomp_ops_vid.htmll#r_ecomp_ops_vid_bbglossary", "_blank");
131 readOnlyRetryUrl = (): string =>
132 `../../serviceModels.htm?more#/servicePlanning/RETRY?serviceModelId=${this.serviceModelId}&jobId=${this.jobId}`