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
112
113
114
115
116
117
118
119
|
import {Component, ViewChild} from '@angular/core';
import {ContextMenuComponent, ContextMenuService} from 'ngx-contextmenu';
import {DialogService} from 'ng2-bootstrap-modal';
import {ServicePopupComponent} from '../../components/service-popup/service-popup.component';
import {MsoService} from '../../services/msoService/mso.service'
import * as _ from 'lodash';
import {ActivatedRoute} from '@angular/router';
import {ServiceInstance} from "../../shared/models/serviceInstance";
import {OwningEntity} from "../../shared/models/owningEntity";
import {MessageBoxData, ModalSize, ModalType} from "../../shared/components/messageBox/messageBox.data";
import {MessageBoxService} from "../../shared/components/messageBox/messageBox.service";
import {NgRedux} from "@angular-redux/store";
import {AppState} from "../../store/reducers";
import {IframeService} from "../../shared/utils/iframe.service";
@Component({
selector: 'drawing-board-header',
providers: [MsoService],
templateUrl: './drawing-board-header.component.html',
styleUrls: ['./drawing-board-header.component.scss']
})
export class DrawingBoardHeader {
serviceName: string;
numServicesToDeploy: number;
status: string = 'Designing a new service';
serviceModelId: string;
parentElementClassName = 'content';
constructor(private _contextMenuService: ContextMenuService, private dialogService: DialogService,
private _iframeService : IframeService,
private route: ActivatedRoute, private msoService: MsoService,
private store: NgRedux<AppState>) {
this.route
.queryParams
.subscribe(params => {
this.serviceModelId = params['serviceModelId'];
if (_.has(this.store.getState().service.serviceHierarchy, this.serviceModelId)) {
this.setValuesFromStore();
this.store.subscribe(() => {
this.setValuesFromStore();
});
}
});
}
@ViewChild(ContextMenuComponent) public contextMenu: ContextMenuComponent;
public onContextMenu($event: MouseEvent, item: any): void {
this._contextMenuService.show.next({
contextMenu: this.contextMenu,
event: $event,
item: item,
});
$event.preventDefault();
$event.stopPropagation();
}
private setValuesFromStore() {
const serviceInstance = this.store.getState().service.serviceInstance[this.serviceModelId];
this.numServicesToDeploy = serviceInstance.bulkSize;
this.serviceName = serviceInstance.instanceName || '<Automatically Assigned>';
}
public editService(): void {
this._iframeService.addClassOpenModal(this.parentElementClassName);
this.dialogService.addDialog(ServicePopupComponent, {})
}
extractOwningEntityNameAccordingtoId(id:String): string {
let owningEntityName;
_.forEach(this.store.getState().service.categoryParameters.owningEntityList,function(owningEntity: OwningEntity) {
if (owningEntity.id === id) {
owningEntityName = owningEntity.name;
}})
return owningEntityName;
}
extractServiceFields(): any {
let instanceFields : ServiceInstance;
instanceFields = this.store.getState().service.serviceInstance[Object.keys(this.store.getState().service.serviceInstance)[0]];
instanceFields.subscriberName = this.store.getState().service.subscribers.find(sub => sub.id === instanceFields.globalSubscriberId).name;
instanceFields.owningEntityName = this.extractOwningEntityNameAccordingtoId(instanceFields.owningEntityId);
return instanceFields;
}
public deployMacroservice(): void {
var instanceFields = this.extractServiceFields();
instanceFields.rollbackOnFailure = instanceFields.rollbackOnFailure === 'true';
this.msoService.submitMsoTask(instanceFields).subscribe((result) => {
window.parent.postMessage("navigateToInstantiationStatus", '*');
})
}
closePage() {
let messageBoxData : MessageBoxData = new MessageBoxData(
"Delete Instantiation", // modal title
"You are about to stop the instantiation process of this service. \nAll data will be lost. Are you sure you want to stop?",
ModalType.alert,
ModalSize.medium,
[
{text:"Stop Instantiation", size:"large", callback: this.navigate.bind(this), closeModal:true},
{text:"Cancel", size:"medium", closeModal:true}
]);
MessageBoxService.openModal.next(messageBoxData);
}
navigate(){
window.parent.postMessage("navigateTo", "*");
}
}
|