blob: 3ed954335bc792430ff370e880e4e308a5a84536 [file] [log] [blame]
kumaran.m3b4814a2020-05-01 19:48:54 +05301<!--
2Copyright 2020 TATA ELXSI
3
4Licensed under the Apache License, Version 2.0 (the 'License');
5you may not use this file except in compliance with the License.
6You may obtain a copy of the License at
7
8 http://www.apache.org/licenses/LICENSE-2.0
9
10Unless required by applicable law or agreed to in writing, software
11distributed under the License is distributed on an "AS IS" BASIS,
12WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13See the License for the specific language governing permissions and
14limitations under the License.
15
16Author: KUMARAN M (kumaran.m@tataelxsi.co.in), RAJESH S (rajesh.s@tataelxsi.co.in), BARATH KUMAR R (barath.r@tataelxsi.co.in)
17-->
18<ng-sidebar-container class="vnf-topology-sidebar-container">
19 <!-- A sidebar -->
20 <ng-sidebar [(opened)]="sideBarOpened" position="left">
21 <div class="sidebar-header">
22 <span class="topology_title" *ngIf="showRightSideInfo === 'vnfdInfo'">{{'PAGE.TOPOLOGY.VNFD' | translate}}</span>
23 <span class="topology_title" *ngIf="showRightSideInfo === 'vduInfo'">{{'PAGE.TOPOLOGY.VDU' | translate}}</span>
Barath Kumar R063a3f12020-12-29 16:35:09 +053024 <span class="topology_title" *ngIf="showRightSideInfo === 'intvlInfo'">{{'PAGE.TOPOLOGY.VIRTUALLINK' |
25 translate}}</span>
26 <span class="topology_title" *ngIf="showRightSideInfo === 'cpInfo'">{{'PAGE.TOPOLOGY.CONNECTIONPOINT' |
27 translate}}</span>
28 <span class="topology_title" *ngIf="showRightSideInfo === 'intcpInfo'">{{'PAGE.TOPOLOGY.INTCONNECTIONPOINT' |
29 translate}}</span>
SANDHYA.JSc84f1122024-06-04 21:50:03 +053030 <button (click)="toggleSidebar()" class="close-vnfd" type="button">
kumaran.m3b4814a2020-05-01 19:48:54 +053031 <i class="fas fa-times-circle text-danger" aria-hidden="true"></i>
32 </button>
33 </div>
34 <div class="sidebar-body">
35 <div class="col-xs-12 col-sm-12 col-md-12 col-lg-12 mb-2" *ngIf="showRightSideInfo === 'vnfdInfo'">
36 <div class="row">
SANDHYA.JSc84f1122024-06-04 21:50:03 +053037 <div class="col-12">
kumaran.m3b4814a2020-05-01 19:48:54 +053038 <form>
SANDHYA.JSc84f1122024-06-04 21:50:03 +053039 <div class="form-group row mb-3">
kumaran.m3b4814a2020-05-01 19:48:54 +053040 <label class="col-sm-4 col-form-label">{{ 'ID' | translate }}</label>
Barath Kumar R063a3f12020-12-29 16:35:09 +053041 <div class="col-sm-8 p-0">
kumaran.m3b4814a2020-05-01 19:48:54 +053042 <input type="text" class="form-control" placeholder="{{ 'ID' | translate }}" name="id"
43 [(ngModel)]="vnfdInfo.id">
44 </div>
45 </div>
SANDHYA.JSc84f1122024-06-04 21:50:03 +053046 <div class="form-group row mb-3">
Barath Kumar R063a3f12020-12-29 16:35:09 +053047 <label class="col-sm-4 col-form-label">{{ 'PRODUCTNAME' | translate }}</label>
48 <div class="col-sm-8 p-0">
49 <input type="text" class="form-control" placeholder="{{ 'PRODUCTNAME' | translate }}"
50 name="product-name" [(ngModel)]="vnfdInfo['product-name']">
kumaran.m3b4814a2020-05-01 19:48:54 +053051 </div>
52 </div>
SANDHYA.JSc84f1122024-06-04 21:50:03 +053053 <div class="form-group row mb-3">
Barath Kumar R063a3f12020-12-29 16:35:09 +053054 <label class="col-sm-4 col-form-label">{{ 'DESCRIPTION' | translate }}</label>
55 <div class="col-sm-8 p-0">
56 <textarea rows="5" cols="50" class="form-control" placeholder="{{ 'DESCRIPTION' | translate }}"
57 name="description" [(ngModel)]="vnfdInfo.description"></textarea>
58 </div>
59 </div>
SANDHYA.JSc84f1122024-06-04 21:50:03 +053060 <div class="form-group row mb-3">
Barath Kumar R063a3f12020-12-29 16:35:09 +053061 <label class="col-sm-4 col-form-label">{{ 'VERSION' | translate }}</label>
62 <div class="col-sm-8 p-0">
63 <input type="text" class="form-control" placeholder="{{ 'VERSION' | translate }}" name="version"
64 [(ngModel)]="vnfdInfo.version">
65 </div>
66 </div>
SANDHYA.JSc84f1122024-06-04 21:50:03 +053067 <div class="form-group row mb-3">
Barath Kumar R063a3f12020-12-29 16:35:09 +053068 <label class="col-sm-4 col-form-label">{{ 'PROVIDER' | translate }}</label>
69 <div class="col-sm-8 p-0">
70 <input type="text" class="form-control" placeholder="{{ 'PROVIDER' | translate }}" name="provider"
71 [(ngModel)]="vnfdInfo.provider">
72 </div>
73 </div>
74 <button type="button" class="btn btn-primary btn-sm pull-right" (click)="saveVNFD()" placement="top"
75 ngbTooltip="Save">
kumaran.m3b4814a2020-05-01 19:48:54 +053076 <i class="fas fa-save"></i> {{'SAVE' | translate}}
77 </button>
78 </form>
79 </div>
80 </div>
81 </div>
82 <div class="col-xs-12 col-sm-12 col-md-12 col-lg-12 mb-2" *ngIf="showRightSideInfo === 'vduInfo'">
83 <div class="row">
84 <div class="col-12 p-0">
85 <form>
86 <div class="form-group row">
kumaran.m3b4814a2020-05-01 19:48:54 +053087 <label class="col-sm-4 col-form-label">{{ 'ID' | translate }}</label>
Barath Kumar R063a3f12020-12-29 16:35:09 +053088 <div class="col-sm-8 p-0">
kumaran.m3b4814a2020-05-01 19:48:54 +053089 <input type="text" class="form-control" placeholder="{{ 'ID' | translate }}" name="id"
90 [(ngModel)]="vduInfo.id">
91 </div>
92 </div>
93 <div class="form-group row">
94 <label class="col-sm-4 col-form-label">{{ 'NAME' | translate }}</label>
Barath Kumar R063a3f12020-12-29 16:35:09 +053095 <div class="col-sm-8 p-0">
kumaran.m3b4814a2020-05-01 19:48:54 +053096 <input type="text" class="form-control" placeholder="{{ 'NAME' | translate }}" name="name"
97 [(ngModel)]="vduInfo.name">
98 </div>
99 </div>
kumaran.m3b4814a2020-05-01 19:48:54 +0530100 <div class="form-group row">
Barath Kumar R063a3f12020-12-29 16:35:09 +0530101 <label class="col-sm-4 col-form-label">{{ 'DESCRIPTION' | translate }}</label>
102 <div class="col-sm-8 p-0">
103 <textarea rows="5" cols="50" class="form-control" placeholder="{{ 'DESCRIPTION' | translate }}"
104 name="description" [(ngModel)]="vduInfo.description"></textarea>
kumaran.m3b4814a2020-05-01 19:48:54 +0530105 </div>
106 </div>
107 <div class="form-group row">
Barath Kumar R063a3f12020-12-29 16:35:09 +0530108 <label class="col-sm-4 col-form-label">{{ 'IMAGE' | translate }}</label>
109 <div class="col-sm-8 p-0">
110 <input type="text" class="form-control" placeholder="{{ 'IMAGE' | translate }}" name="sw-image-desc"
111 [(ngModel)]="vduInfo['sw-image-desc']">
kumaran.m3b4814a2020-05-01 19:48:54 +0530112 </div>
113 </div>
Barath Kumar R063a3f12020-12-29 16:35:09 +0530114 <button type="button" class="btn btn-primary btn-sm pull-right" (click)="saveVDU(vduInfo.id)"
115 placement="top" ngbTooltip="Save">
kumaran.m3b4814a2020-05-01 19:48:54 +0530116 <i class="fas fa-save"></i> {{'SAVE' | translate}}
117 </button>
118 </form>
119 </div>
120 </div>
121 </div>
122 <div class="col-xs-12 col-sm-12 col-md-12 col-lg-12 mb-2" *ngIf="showRightSideInfo === 'cpInfo'">
123 <div class="row">
124 <div class="col-12 p-0">
125 <form>
126 <div class="form-group row">
Barath Kumar R063a3f12020-12-29 16:35:09 +0530127 <label class="col-sm-4 col-form-label">{{ 'ID' | translate }}</label>
128 <div class="col-sm-8 p-0">
129 <input type="text" class="form-control" placeholder="{{ 'ID' | translate }}" name="id"
130 [(ngModel)]="cpInfo.id">
kumaran.m3b4814a2020-05-01 19:48:54 +0530131 </div>
132 </div>
Barath Kumar R063a3f12020-12-29 16:35:09 +0530133 <button type="button" class="btn btn-primary btn-sm pull-right" (click)="saveCP(cpInfo.id)"
134 placement="top" ngbTooltip="Save">
135 <i class="fas fa-save"></i> {{'SAVE' | translate}}
136 </button>
137 </form>
138 </div>
139 </div>
140 </div>
141 <div class="col-xs-12 col-sm-12 col-md-12 col-lg-12 mb-2" *ngIf="showRightSideInfo === 'intvlInfo'">
142 <div class="row">
143 <div class="col-12 p-0">
144 <form>
kumaran.m3b4814a2020-05-01 19:48:54 +0530145 <div class="form-group row">
Barath Kumar R063a3f12020-12-29 16:35:09 +0530146 <label class="col-sm-4 col-form-label">{{ 'ID' | translate }}</label>
147 <div class="col-sm-8 p-0">
148 <input type="text" class="form-control" placeholder="{{ 'ID' | translate }}" name="id"
149 [(ngModel)]="intvlInfo.id">
kumaran.m3b4814a2020-05-01 19:48:54 +0530150 </div>
151 </div>
Barath Kumar R063a3f12020-12-29 16:35:09 +0530152 <button type="button" class="btn btn-primary btn-sm pull-right" (click)="saveIntVL(intvlInfo.id)"
153 placement="top" ngbTooltip="Save">
kumaran.m3b4814a2020-05-01 19:48:54 +0530154 <i class="fas fa-save"></i> {{'SAVE' | translate}}
155 </button>
156 </form>
157 </div>
158 </div>
159 </div>
160 <div class="col-xs-12 col-sm-12 col-md-12 col-lg-12 mb-2" *ngIf="showRightSideInfo === 'intcpInfo'">
161 <div class="row">
162 <div class="col-12 p-0">
163 <form>
164 <div class="form-group row">
kumaran.m3b4814a2020-05-01 19:48:54 +0530165 <label class="col-sm-4 col-form-label">{{ 'ID' | translate }}</label>
Barath Kumar R063a3f12020-12-29 16:35:09 +0530166 <div class="col-sm-8 p-0">
167 <input type="text" class="form-control" name="id" [(ngModel)]="intcpInfo.name" disabled>
kumaran.m3b4814a2020-05-01 19:48:54 +0530168 </div>
169 </div>
170 </form>
171 </div>
172 </div>
173 </div>
174 </div>
175 </ng-sidebar>
176 <!-- Page content -->
177 <div ng-sidebar-content>
178 <button (click)="toggleSidebar()" class="btn btn-default" placement="right" ngbTooltip="{{'OPEN' | translate }}">
179 <i class="fa fa-arrow-right detail-sidebar" aria-hidden="true"></i>
180 </button>
181 </div>
182</ng-sidebar-container>
183<div class="container-fluid text-dark">
184 <div class="row bg-white vnf-composer-form">
SANDHYA.JSc84f1122024-06-04 21:50:03 +0530185 <div class="col-xs-3 col-sm-3 col-md-3 col-lg-3 ps-0 px-0">
kumaran.m3b4814a2020-05-01 19:48:54 +0530186 <div class="row">
187 <div class="col-xs-12 col-sm-12 col-md-12 col-lg-12 mb-2">
188 <fieldset class="p-2">
189 <legend class="element-legend">
190 {{'PAGE.TOPOLOGY.SELECTELEMENT' | translate}}
191 </legend>
192 <ul class="list-group list-group-flush dragable">
193 <li class="list-group-item" draggable="true" (dragstart)="drag($event)" id="vdu">
Barath Kumar R063a3f12020-12-29 16:35:09 +0530194 <img src="assets/images/VDU.svg" class="vnf-svg" draggable="false" />
kumaran.m3b4814a2020-05-01 19:48:54 +0530195 &nbsp;<span class="span-overflow-text font-weight-bold">{{'PAGE.TOPOLOGY.VDU' | translate}}</span>
196 <span class="drag-icon pull-right"><i class="fas fa-arrows-alt"></i></span>
197 </li>
198 <li class="list-group-item" draggable="true" (dragstart)="drag($event)" id="cp">
Barath Kumar R063a3f12020-12-29 16:35:09 +0530199 <img src="assets/images/CP-VNF.svg" class="vnf-svg" draggable="false" />
kumaran.m3b4814a2020-05-01 19:48:54 +0530200 &nbsp;<span class="span-overflow-text font-weight-bold">{{'PAGE.TOPOLOGY.CP' | translate}}</span>
201 <span class="drag-icon pull-right"><i class="fas fa-arrows-alt"></i></span>
202 </li>
203 <li class="list-group-item" draggable="true" (dragstart)="drag($event)" id="intvl">
Barath Kumar R063a3f12020-12-29 16:35:09 +0530204 <img src="assets/images/INTVL.svg" class="vnf-svg" draggable="false" />
kumaran.m3b4814a2020-05-01 19:48:54 +0530205 &nbsp;<span class="span-overflow-text font-weight-bold">{{'PAGE.TOPOLOGY.INTVL' | translate}}</span>
206 <span class="drag-icon pull-right"><i class="fas fa-arrows-alt"></i></span>
207 </li>
208 </ul>
209 </fieldset>
210 </div>
211 </div>
212 </div>
213 <div class="col-xs-9 col-sm-9 col-md-9 col-lg-9">
214 <div class="row">
SANDHYA.JSc84f1122024-06-04 21:50:03 +0530215 <div class="col-xs-6 col-sm-6 col-md-6 col-lg-6 ps-0">
kumaran.m3b4814a2020-05-01 19:48:54 +0530216 <div class="btn-group list" role="group" aria-label="Basic example">
217 <button type="button" class="btn btn-primary topology-btn" (click)="onFreeze()"
Barath Kumar R063a3f12020-12-29 16:35:09 +0530218 [class.pinned]="classApplied" placement="top" container="body"
219 ngbTooltip="{{(classApplied ? 'UNFREEZE' : 'FREEZE') | translate}}">
kumaran.m3b4814a2020-05-01 19:48:54 +0530220 <i class="fas fa-thumbtack"></i>
221 </button>
222 <button type="button" class="btn btn-primary topology-btn" (click)="onEdit()" placement="top"
223 container="body" ngbTooltip="{{'EDIT' | translate}}">
224 <i class="fas fa-edit"></i>
225 </button>
226 <button type="button" class="btn btn-primary topology-btn" (click)="showInfo()" placement="top"
227 container="body" ngbTooltip="{{'PAGE.TOPOLOGY.HELP' | translate}}">
228 <i class="fas fa-info"></i>
229 </button>
230 </div>
231 </div>
SANDHYA.JSc84f1122024-06-04 21:50:03 +0530232 <div class="col-xs-6 col-sm-6 col-md-6 col-lg-6 text-end pe-0 badgegroup">
kumaran.m3b4814a2020-05-01 19:48:54 +0530233 <span class="badge badge-primary badge-pill bg-white text-body font-weight-bold">
Barath Kumar R063a3f12020-12-29 16:35:09 +0530234 <img src="assets/images/VDU.svg" class="vnf-svg" draggable="false" />
kumaran.m3b4814a2020-05-01 19:48:54 +0530235 <br>{{'PAGE.TOPOLOGY.VDU' | translate}}</span>
236 <span class="badge badge-primary badge-pill bg-white text-body font-weight-bold">
Barath Kumar R063a3f12020-12-29 16:35:09 +0530237 <img src="assets/images/CP-VNF.svg" class="vnf-svg" draggable="false" />
kumaran.m3b4814a2020-05-01 19:48:54 +0530238 <br>{{'PAGE.TOPOLOGY.CP' | translate}}</span>
239 <span class="badge badge-primary badge-pill bg-white text-body font-weight-bold">
Barath Kumar R063a3f12020-12-29 16:35:09 +0530240 <img src="assets/images/INTVL.svg" class="vnf-svg" draggable="false" />
kumaran.m3b4814a2020-05-01 19:48:54 +0530241 <br>{{'PAGE.TOPOLOGY.INTVL' | translate}}</span>
242 <span class="badge badge-primary badge-pill bg-white text-body font-weight-bold">
Barath Kumar R063a3f12020-12-29 16:35:09 +0530243 <img src="assets/images/INTCP.svg" class="vnf-svg" draggable="false" />
kumaran.m3b4814a2020-05-01 19:48:54 +0530244 <br>{{'PAGE.TOPOLOGY.INTCP' | translate}}</span>
245 </div>
246 </div>
247 <div class="row border-all">
248 <div class="col-xs-12 col-sm-12 col-md-12 col-lg-12 svg-container">
249 <svg preserveAspectRatio="xMidYMin slice" (drop)="drop($event)" (dragover)="allowDrop($event)"
250 id="graphContainer" #graphContainer>
251 </svg>
252 </div>
253 </div>
254 </div>
255 </div>
256</div>
257<app-loader [waitingMessage]="message" *ngIf="isLoadingResults"></app-loader>