- Upgraded Angular from 14 to 15 version.
Change-Id: I2339a04020153cbc9ed7a14bfe8e0aa265e507da
Signed-off-by: SANDHYA.JS <sandhya.j@tataelxsi.co.in>
"type": "initial",
"maximumWarning": "2mb",
"maximumError": "5mb"
+ },
+ {
+ "type": "anyComponentStyle",
+ "maximumWarning": "6kb",
+ "maximumError": "10kb"
}
]
},
"private": true,
"dependencies": {
"@akveo/ng2-completer": "^9.0.1",
- "@angular/animations": "^14.2.12",
- "@angular/cdk": "^13.3.9",
- "@angular/common": "^14.2.12",
- "@angular/compiler": "^14.2.12",
- "@angular/core": "^14.2.12",
+ "@angular/animations": "^15.2.10",
+ "@angular/cdk": "^15.2.9",
+ "@angular/common": "^15.2.10",
+ "@angular/compiler": "^15.2.10",
+ "@angular/core": "^15.2.10",
"@angular/flex-layout": "^9.0.0-beta.29",
- "@angular/forms": "^14.2.12",
- "@angular/localize": "^14.2.12",
- "@angular/platform-browser": "^14.2.12",
- "@angular/platform-browser-dynamic": "^14.2.12",
- "@angular/router": "^14.2.12",
+ "@angular/forms": "^15.2.10",
+ "@angular/localize": "^15.2.10",
+ "@angular/platform-browser": "^15.2.10",
+ "@angular/platform-browser-dynamic": "^15.2.10",
+ "@angular/router": "^15.2.10",
"@ctrl/ngx-codemirror": "^5.1.1",
"@fortawesome/fontawesome-free": "^5.13.0",
"@ng-bootstrap/ng-bootstrap": "^11.0.1",
- "@ng-idle/core": "^11.0.3",
- "@ng-idle/keepalive": "^11.0.3",
- "@ng-select/ng-select": "^8.0.0",
- "@ngx-translate/core": "^13.0.0",
- "@ngx-translate/http-loader": "^4.0.0",
+ "@ng-idle/core": "^12.0.4",
+ "@ng-idle/keepalive": "^12.0.4",
+ "@ng-select/ng-select": "^10.0.3",
+ "@ngx-translate/core": "^14.0.0",
+ "@ngx-translate/http-loader": "^7.0.0",
"@nomadreservations/ngx-codemirror": "^2.0.0",
"@types/d3": "^5.7.2",
"@types/js-yaml": "^3.12.1",
"@types/jsonpath": "^0.2.0",
"@types/ol": "^5.3.5",
- "angular-notifier": "^9.1.0",
- "bootstrap": "^4.6.2",
+ "angular-notifier": "^12.0.0",
+ "bootstrap": "^5.2.3",
"chart.js": "^3.9.1",
"chartjs-plugin-datalabels": "^2.2.0",
"codemirror": "^5.51.0",
"http-status-codes": "^1.3.2",
"js-untar": "^2.0.0",
"js-yaml": "^3.13.1",
- "jsonpath": "^1.0.2",
+ "jsonpath": "^1.1.1",
"ng-sidebar": "~9.2.0",
"ng2-charts": "^3.0.0-rc.7",
"ng2-file-upload": "^1.3.0",
"rxjs": "^6.5.4",
"rxjs-compat": "^6.5.5",
"stream": "0.0.2",
- "tslib": "^2.5.0",
- "util": "^0.12.4",
- "zone.js": "~0.11.8",
- "@popperjs/core": "~2.10.1",
- "ngx-toastr": "^13.2.1"
+ "ts-evaluator": "^1.2.0",
+ "tslib": "^2.6.0",
+ "util": "^0.12.5",
+ "zone.js": "~0.13.3",
+ "@popperjs/core": "^2.11.6",
+ "ngx-toastr": "^16.0.0"
},
"devDependencies": {
- "@angular-devkit/build-angular": "^14.2.10",
+ "@angular-devkit/build-angular": "^15.2.10",
"@angular-eslint/builder": "13.5.0",
"@angular-eslint/eslint-plugin": "13.5.0",
"@angular-eslint/eslint-plugin-template": "13.5.0",
"@angular-eslint/schematics": "13.5.0",
"@angular-eslint/template-parser": "13.5.0",
- "@angular/cli": "^14.2.10",
- "@angular/compiler-cli": "^14.2.12",
- "@angular/language-service": "^14.2.12",
+ "@angular/cli": "^15.2.10",
+ "@angular/compiler-cli": "^15.2.10",
+ "@angular/language-service": "^15.2.10",
"@cypress/schematic": "^2.3.0",
"@microsoft/eslint-plugin-sdl": "~0.2.0",
"@types/jasmine": "~3.10.0",
"@types/jasminewd2": "~2.0.3",
"@types/jquery": "^3.3.31",
- "@types/node": "^8.10.59",
+ "@types/node": "^12.11.1",
"@typescript-eslint/eslint-plugin": "4.28.2",
"@typescript-eslint/parser": "4.28.2",
"cypress": "^12.10.0",
"eslint-plugin-security": "~1.5.0",
"jasmine-core": "~4.0.0",
"jasmine-spec-reporter": "~5.0.0",
- "karma": "~6.3.0",
+ "karma": "~6.4.2",
"karma-chrome-launcher": "~3.1.0",
"karma-coverage": "~2.1.0",
"karma-jasmine": "~4.0.0",
"karma-jasmine-html-reporter": "~1.7.0",
"ng2-completer": "^3.0.3",
"sass": "^1.58.0",
- "ts-node": "~7.0.0",
- "typescript": "~4.6.2"
+ "ts-node": "~8.3.0",
+ "typescript": "^4.9.3"
}
}
/**
* @file App Components
*/
-import { isNullOrUndefined } from 'util';
import { Component, HostListener, Injector } from '@angular/core';
import { NgbModal } from '@ng-bootstrap/ng-bootstrap';
import { DEFAULT_INTERRUPTSOURCES, Idle } from '@ng-idle/core';
import { AuthenticationService } from 'AuthenticationService';
import { DeviceCheckService } from 'DeviceCheckService';
-import { SharedService } from 'SharedService';
+import { SharedService, isNullOrUndefined } from 'SharedService';
/**
* Creating component
}),
NgbModule,
NgSelectModule,
- RouterModule.forRoot(appRoutes, { useHash: false, relativeLinkResolution: 'legacy' }),
+ RouterModule.forRoot(appRoutes, { useHash: false }),
NgIdleKeepaliveModule.forRoot(),
LoaderModule,
SharedModule,
</div>
</div>
<div class="row module-counts">
- <div class="col-xs-4 col-sm-4 col-md-4 col-lg-4 col-xl-4 p-0">
+ <div class="col-xs-4 col-sm-4 col-md-4 col-lg-4 col-xl-4">
<div class="col-xs-12 col-sm-12 col-md-12 col-lg-12 col-xl-12 mb-3">
<div class="status-card custom-card card-hover card aqua-card" routerLink="/packages/ns">
<i class="fas fa-box-open"></i>
</div>
</div>
</div>
- <div class="col-xs-4 col-sm-4 col-md-4 col-lg-4 col-xl-4 p-0">
+ <div class="col-xs-4 col-sm-4 col-md-4 col-lg-4 col-xl-4">
<div class="col-xs-12 col-sm-12 col-md-12 col-lg-12 col-xl-12 mb-3">
<div class="status-card custom-card card-hover card purple-card" routerLink="/packages/vnf">
<i class="fas fa-box-open"></i>
</div>
</div>
</div>
- <div class="col-xs-4 col-sm-4 col-md-4 col-lg-4 col-xl-4 p-0">
+ <div class="col-xs-4 col-sm-4 col-md-4 col-lg-4 col-xl-4">
<div class="col-xs-12 col-sm-12 col-md-12 col-lg-12 col-xl-12 mb-3">
<div class="status-card custom-card card-hover card pink-card" routerLink="/vim/details">
<i class="fas fa-server"></i>
</div>
<div class="row mb-2">
<div class="col-xs-12 col-sm-12 col-md-12 col-lg-12 col-xl-12">
- <div class="custom-card card mt-2 text-primary">
+ <div class="custom-card card mt-2 text-primary pb-3">
<div class="text-center header-style pt-2">{{'PAGE.VIMDETAILS.VIMRESOURCES' | translate}}</div>
<div class="row p-2">
<div class="col-xs-12 col-sm-12 col-md-12 col-lg-12 col-xl-12">
<div class="form-row">
<div class="form-group col-md-6">
<label for="vimType">{{'PAGE.VIMDETAILS.VIMTYPE' | translate}}</label>
- <ng-select (change)="getSelectedVimTypeList($event.value)" [clearable]="false"
+ <ng-select (change)="getSelectedVimTypeList($event.value)" class="mt-2 vimdetails" [clearable]="false"
placeholder="{{'SELECT' | translate}}" [items]="vimTypes" bindLabel="title"
bindValue="value" id="vimType"></ng-select>
</div>
- <div class="form-group col-md-6">
+ <div class="form-group col-md-6 me-0">
<label for="vimList">{{'PAGE.VIMDETAILS.NAME' | translate}}</label>
- <ng-select (change)="getSelectedVIMDetails($event)" [clearable]="false"
+ <ng-select (change)="getSelectedVIMDetails($event)" class="mt-2 vimdetails" [clearable]="false"
placeholder="{{'SELECT' | translate}}" [items]="vimList" bindLabel="name"
bindValue="name" id="vimList" [(ngModel)]="vimListData"></ng-select>
</div>
$min-height-set: 200px;
.dashboard {
.custom-card {
+ background-color: $white;
word-wrap: break-word;
@include box-shadow(0px, 1px, 15px, 0px, rgba(69, 90, 100, 0.1));
@include transition(all, 0.2s, null, null);
}
&.pink-card {
@include background(
- linear-gradient(to left top, #d81b60, #e0306d, #e7407a, #ee4f87, #f55c94),
+ linear-gradient(to left top,#d81b60,#e0306d,#e7407a,#ee4f87,#f55c94),
null,
null,
null,
}
&.purple-card {
@include background(
- linear-gradient(to left top, #605ca8, #736ebb, #8681ce, #9994e2, #aca7f6),
+ linear-gradient(to left top,#605ca8,#736ebb,#8681ce,#9994e2,#aca7f6),
null,
null,
null,
}
&.aqua-card {
@include background(
- linear-gradient(to left top, #00c0ef, #00cdf5, #00dafa, #00e6fd, #0af3ff),
+ linear-gradient(to left top,#00c0ef,#00cdf5,#00dafa,#00e6fd,#0af3ff),
null,
null,
null,
);
}
.custom-card-header {
+ padding: 12px 20px 12px 20px;
@include background(null, $primary, null, null, null);
@include roundedTop(5);
a {
overflow-y: scroll;
.list-group {
.list-group-item {
+ background-color: $white;
cursor: default;
@include border(all, 0, solid, $black-coral);
@include border(bottom, 1, solid, rgba(0, 0, 0, 0.125));
&.show-canvas {
@include flexbox(block !important, null, null, null, null, null);
}
- #canvas{
- @include wh-value(100%, $min-height-set);
- }
+ #canvas {
+ @include wh-value(100%, $min-height-set);
+ }
}
}
}
}
}
}
+ .font-weight-bold {
+ border-radius: 10px;
+ }
+ .form-row {
+ display: flex;
+ flex-wrap: wrap;
+ .form-group {
+ flex: 0 0 auto;
+ width: 47%;
+ margin-right: 25px;
+ }
+ }
+ .vimdetails {
+ width: 100%;
+ }
}
\ No newline at end of file
/**
* @file Dashboard Component
*/
-import { isNullOrUndefined } from 'util';
import { Component, Injector, OnInit } from '@angular/core';
import { TranslateService } from '@ngx-translate/core';
import { NotifierService } from 'angular-notifier';
import { RestService } from 'RestService';
import { Observable, Subscription } from 'rxjs';
import { SDNControllerModel } from 'SDNControllerModel';
-import { SharedService } from 'SharedService';
+import { SharedService, isNullOrUndefined } from 'SharedService';
import { ProjectRoleMappings, UserDetail } from 'UserModel';
import { VimAccountDetails } from 'VimAccountModel';
import { VNFInstanceDetails } from 'VNFInstanceModel';
Author: KUMARAN M (kumaran.m@tataelxsi.co.in), RAJESH S (rajesh.s@tataelxsi.co.in), BARATH KUMAR R (barath.r@tataelxsi.co.in)
-->
-<div class="row d-flex flex-row justify-content-between">
+<div class="d-flex flex-row justify-content-between">
<div class="d-flex align-items-center header-style">{{'PAGE.DASHBOARD.NETSLICEINSTANCE' | translate}}</div>
<span class="button">
<button class="btn btn-primary" type="button" placement="top" container="body"
</button>
</span>
</div>
-<div class="row mt-2 mb-0 list-utilites-actions">
- <div class="col-auto mr-auto">
+<div class="mt-2 mb-2 list-utilites-actions">
+ <div class="col-auto me-auto">
<nav class="custom-items-config">
<span><i class="fas fa-clock text-warning"></i>{{operationalStateFirstStep}}</span>
<span><i class="fas fa-check-circle text-success"></i>{{operationalStateSecondStep}} /
<span><i class="fas fa-times-circle text-danger"></i>{{operationalStateThirdStep}}</span>
</nav>
</div>
- <page-per-row class="mr-2" (pagePerRow)="onChange($event)"></page-per-row>
+ <page-per-row class="me-2" (pagePerRow)="onChange($event)"></page-per-row>
<page-reload></page-reload>
</div>
<div class="smarttable-style bg-white mt-1">
Author: KUMARAN M (kumaran.m@tataelxsi.co.in), RAJESH S (rajesh.s@tataelxsi.co.in), BARATH KUMAR R (barath.r@tataelxsi.co.in)
-->
-<div class="row d-flex flex-row justify-content-between">
+<div class="d-flex flex-row justify-content-between">
<div class="d-flex align-items-center header-style">{{'HISTORYOFOPERATIONS' | translate}}</div>
</div>
-<div class="row mt-2 mb-0 list-utilites-actions">
- <div class="col-auto mr-auto">
+<div class="mt-2 mb-2 list-utilites-actions">
+ <div class="col-auto me-auto">
<nav class="custom-items-config">
<span><i class="fas fa-clock text-warning"></i>{{historyStateFirstStep}}</span>
<span><i class="fas fa-check-circle text-success"></i>{{historyStateSecondStep}}</span>
<span><i class="fas fa-times-circle text-danger"></i>{{historyStateThirdStep}}</span>
</nav>
</div>
- <page-per-row class="mr-2" (pagePerRow)="onChange($event)"></page-per-row>
+ <page-per-row class="me-2" (pagePerRow)="onChange($event)"></page-per-row>
<page-reload></page-reload>
</div>
<div class="smarttable-style bg-white mt-1">
/**
* @file NS History Of Operations Component
*/
-import { isNullOrUndefined } from 'util';
import { Component, Injector, OnInit } from '@angular/core';
import { ActivatedRoute } from '@angular/router';
import { Router } from '@angular/router';
import { NSDInstanceData } from 'NSInstanceModel';
import { RestService } from 'RestService';
import { Subscription } from 'rxjs';
-import { SharedService } from 'SharedService';
+import { SharedService, isNullOrUndefined } from 'SharedService';
import { ShowInfoComponent } from 'ShowInfoComponent';
/**
Author: KUMARAN M (kumaran.m@tataelxsi.co.in), RAJESH S (rajesh.s@tataelxsi.co.in), BARATH KUMAR R (barath.r@tataelxsi.co.in)
-->
-<div class="row d-flex flex-row justify-content-between">
+<div class="d-flex flex-row justify-content-between">
<div class="d-flex align-items-center header-style">{{'NSINSTANCES' | translate}}</div>
<span class="button">
- <button class="btn btn-primary" type="button" placement="top" container="body" ngbTooltip="{{'PAGE.NSINSTANCE.NEWNSINSTANCE' | translate}}"
+ <button class="btn btn-primary me-2" type="button" placement="top" container="body" ngbTooltip="{{'PAGE.NSINSTANCE.NEWNSINSTANCE' | translate}}"
(click)="instantiateNS()">
<i class="fa fa-paper-plane" aria-hidden="true"></i> {{'PAGE.NSINSTANCE.NEWNSINSTANCE' | translate}}
</button>
</span>
</div>
-<div class="row mt-2 mb-0 list-utilites-actions">
- <div class="col-auto mr-auto">
+<div class="mt-2 mb-2 list-utilites-actions">
+ <div class="col-auto me-auto">
<nav class="custom-items-config">
<span><i class="fas fa-clock text-warning"></i>{{operationalStateFirstStep}}</span>
<span><i class="fas fa-check-circle text-success"></i>{{operationalStateSecondStep}} /
<span><i class="fas fa-briefcase-medical text-success"></i>{{operationalStateFifthStep}}</span>
</nav>
</div>
- <page-per-row class="mr-2" (pagePerRow)="onChange($event)"></page-per-row>
+ <page-per-row class="me-2" (pagePerRow)="onChange($event)"></page-per-row>
<page-reload></page-reload>
</div>
<div class="smarttable-style bg-white mt-1">
- <ng2-smart-table [ngClass]="checkDataClass" [settings]="settings" [source]="dataSource" (userRowSelect)="onUserRowSelect($event)">
+ <ng2-smart-table [ngClass]="checkDataClass" [settings]="settings" [source]="dataSource"
+ (userRowSelect)="onUserRowSelect($event)">
</ng2-smart-table>
</div>
<app-loader [waitingMessage]="message" *ngIf="isLoadingResults"></app-loader>
\ No newline at end of file
</div>
<form [formGroup]="primitiveForm" (ngSubmit)="execPrimitive()">
<div class="modal-body">
- <div class="form-group row">
+ <div class="form-group row mb-3">
<label class="col-sm-4 col-form-label">{{'PRIMITIVETYPE' | translate}}*</label>
<div class="col-sm-8">
<ng-select (change)="primitiveTypeChange($event)" [clearable]="false" placeholder="{{'SELECT' | translate}}" [items]="primitiveTypeList" bindLabel="title" bindValue="value" [(ngModel)]="primitiveType" id="primitiveType" [ngModelOptions]="{standalone: true}"
[ngClass]="{ 'is-invalid': submitted && !primitiveType }"></ng-select>
</div>
</div>
- <div class="form-group row" *ngIf="primitiveType === 'VNF_Primitive' || primitiveType === 'VDU_Primitive' || primitiveType === 'KDU_Primitive'">
+ <div class="form-group row mb-3" *ngIf="primitiveType === 'VNF_Primitive' || primitiveType === 'VDU_Primitive' || primitiveType === 'KDU_Primitive'">
<label class="col-sm-4 col-form-label">VNF Profile ID *</label>
<div class="col-sm-3">
<ng-select (change)="indexChange($event, primitiveType)" [clearable]="false" placeholder="{{'SELECT' | translate}}" [items]="memberTypes" bindLabel="id" bindValue="id" formControlName="member_vnf_index" id="member_vnf_index"
[ngClass]="{ 'is-invalid': submitted && f.member_vnf_index.errors }"></ng-select>
</div>
</div>
- <div class="form-group row" *ngIf="primitiveType === 'VDU_Primitive'">
+ <div class="form-group row mb-3" *ngIf="primitiveType === 'VDU_Primitive'">
<label class="col-sm-4 col-form-label">{{'SELECT' | translate}} VDU *</label>
<div class="col-sm-8">
<ng-select (change)="getPrimitiveList($event, 'vdu')" [clearable]="false" placeholder="{{'SELECT' | translate}}" [items]="vduList" bindLabel="name" bindValue="id" formControlName="vdu_id" id="vdu_id" [ngClass]="{ 'is-invalid': submitted && f.vdu_id.errors }"></ng-select>
</div>
</div>
- <div class="form-group row" *ngIf="primitiveType === 'KDU_Primitive'">
+ <div class="form-group row mb-3" *ngIf="primitiveType === 'KDU_Primitive'">
<label class="col-sm-4 col-form-label">{{'SELECT' | translate}} KDU *</label>
<div class="col-sm-8">
<ng-select (change)="getPrimitiveList($event, 'kdu')" [clearable]="false" placeholder="{{'SELECT' | translate}}" [items]="kduList" bindLabel="name" bindValue="name" formControlName="kdu_name" id="kdu_name" [ngClass]="{ 'is-invalid': submitted && f.kdu_name.errors }"></ng-select>
</div>
</div>
- <div class="form-group row" *ngIf="primitiveType">
+ <div class="form-group row mb-3" *ngIf="primitiveType">
<label class="col-sm-4 col-form-label">
{{'PAGE.NSPRIMITIVE.PRIMITIVE' | translate}}*</label>
<div class="col-sm-8">
</div>
</div>
<div formArrayName="primitive_params" *ngFor="let params of getControls(); let i = index;">
- <div class="form-group row" [formGroupName]="i">
+ <div class="form-group row mb-3" [formGroupName]="i">
<label class="col-sm-2 col-form-label">{{'NAME' | translate}}:</label>
<div class="col-sm-3">
<ng-select placeholder="{{'SELECT' | translate}}" [clearable]="false" [items]="primitiveParameter" bindLabel="name" bindValue="name" formControlName="primitive_params_name" id="parameter{{i}}" [ngClass]="{ 'is-invalid': submitted && params.controls.primitive_params_name.errors }">
/**
* @file NS Instance Primitive Component
*/
-import { isNullOrUndefined } from 'util';
import { Component, Injector, Input, OnInit } from '@angular/core';
import { AbstractControl, FormArray, FormBuilder, FormGroup, Validators } from '@angular/forms';
import { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';
import { KDUPRIMITIVELEVEL, NSData, VDUPRIMITIVELEVEL, VNFPROFILE } from 'NSDModel';
import { NSPrimitiveParams } from 'NSInstanceModel';
import { RestService } from 'RestService';
-import { SharedService } from 'SharedService';
+import { SharedService, isNullOrUndefined } from 'SharedService';
import { CONFIGPRIMITIVE, DF, VDUCONFIG, VDUPROFILE, VNFCONFIG, VNFD } from 'VNFDModel';
import { VNFInstanceDetails } from 'VNFInstanceModel';
<div class="sidebar-body">
<div class="col-xs-12 col-sm-12 col-md-12 col-lg-12 mb-2" *ngIf="isShowNSDetails && nsInfo">
<div class="row">
- <div class="col-12 p-0">
+ <div class="col-12">
<table class="table table-bordered text-dark custom-table">
<tr>
<td>{{'NS' | translate}} {{'INSTANCE' | translate}} Id</td>
<div class="row ns-instance-form justify-content-end ">
<div class="col-xs-9 col-sm-9 col-md-9 col-lg-9">
<div class="row">
- <div class="col-xs-6 col-sm-6 col-md-6 col-lg-6 pl-0">
+ <div class="col-xs-6 col-sm-6 col-md-6 col-lg-6 ps-0">
<div class="btn-group list" role="group" aria-label="Basic example">
<button type="button" class="btn btn-primary topology-btn" (click)="onFreeze()"
[class.pinned]="classApplied" placement="top" container="body"
</button>
</div>
</div>
- <div class="col-xs-6 col-sm-6 col-md-6 col-lg-6 text-right pr-0 badgegroup">
+ <div class="col-xs-6 col-sm-6 col-md-6 col-lg-6 text-end pe-0 badgegroup">
<span class="badge badge-primary badge-pill bg-white text-body font-weight-bold">
<img src="assets/images/VNFD.svg" class="ns-svg" draggable="false"/>
<br>VNFR</span>
import { CCI, DF, VLC, VNFPROFILE } from 'NSDModel';
import { COMPOSERNODES, CONNECTIONPOINT, NSD, NSDVLD, NSINFO, NSInstanceDetails, NSINSTANCENODES, VLINFO, VNFRINFO } from 'NSInstanceModel';
import { GRAPHDETAILS, Tick, TickPath } from 'NSTopologyModel';
-import { RestService } from 'src/services/RestService';
-import { isNullOrUndefined } from 'util';
+import { RestService } from 'RestService';
+import { isNullOrUndefined } from 'SharedService';
/**
* Creating component
Author: KUMARAN M (kumaran.m@tataelxsi.co.in), RAJESH S (rajesh.s@tataelxsi.co.in), BARATH KUMAR R (barath.r@tataelxsi.co.in)
-->
-<div class="row d-flex flex-row justify-content-between">
+<div class="d-flex flex-row justify-content-between">
<div class="d-flex align-items-center header-style">{{'PDUINSTANCES' | translate}}</div>
<span class="button">
<button class="btn btn-primary" type="button" placement="top" container="body"
</button>
</span>
</div>
-<div class="row mt-2 mb-0 form-group justify-content-end list-utilites-actions">
- <page-per-row class="mr-2" (pagePerRow)="onChange($event)"></page-per-row>
+<div class="mt-2 mb-2 form-group justify-content-end list-utilites-actions">
+ <page-per-row class="me-2" (pagePerRow)="onChange($event)"></page-per-row>
<page-reload></page-reload>
</div>
<div class="smarttable-style bg-white mt-1">
</button>
</div>
<form [formGroup]="pduInstancesForm" (ngSubmit)="createPDUInstances()" autocomplete="off">
- <div class="modal-body">
- <div class="form-group row">
+ <div class="modal-body pb-0">
+ <div class="form-group row mb-3">
<label class="col-sm-12 col-form-label mandatory-label" [ngClass]="{'text-danger': pduInstancesForm.invalid === true && submitted === true}">{{'MANDATORYCHECK' | translate}}</label>
<label class="col-sm-3 col-form-label" for="name">{{'NAME' | translate}}*</label>
<div class="col-sm-3">
<input placeholder="{{'PAGE.PDUINSTANCE.PDUTYPE' | translate}}" type="text" class="form-control" formControlName="type" id="type" [ngClass]="{ 'is-invalid': submitted && f.type.errors }">
</div>
</div>
- <div class="form-group row">
+ <div class="form-group row mb-3">
<label class="col-sm-3 col-form-label" for="vim_accounts">{{'VIMACCOUNTS' | translate}}*</label>
<div class="col-sm-9">
<ng-select placeholder="{{'VIMACCOUNTS' | translate}}" [items]="vimAccountSelect" multiple="true" bindLabel="name" bindValue="_id" formControlName="vim_accounts" id="vim_accounts"
</ng-select>
</div>
</div>
- <div class="form-group row p-2 bg-light text-dark">
+ <div class="form-group row p-2 bg-light text-dark mb-3">
<div class="col-sm-7 align-self-center"><span>{{'PAGE.PDUINSTANCE.PARAMETERS' | translate}}</span></div>
<div class="col-sm-5">
<button type="button" class="btn btn-primary" (click)="createInterfaces()">
</div>
</div>
</div>
- <div class="row mr-top-5">
+ <div class="row me-top-5 mb-3">
<label class="col-sm-2 col-form-label" for="mgmt{{i}}">{{'MGMT' | translate}}*</label>
<div class="col-sm-4">
<ng-select placeholder="{{'SELECT' | translate}} {{'MGMT' | translate}}" [items]="mgmtState" bindLabel="name" bindValue="value" formControlName="mgmt" id="mgmt{{i}}" [ngClass]="{ 'is-invalid': submitted && params.controls.mgmt.errors }"></ng-select>
</div>
</div>
</div>
- <div class="modal-footer">
+ <div class="modal-footer mt-3">
<button type="button" class="btn btn-danger" (click)="activeModal.close()">{{'CANCEL' | translate}}</button>
<button type="submit" class="btn btn-primary">{{'CREATE' | translate}}</button>
</div>
align-items: center;
font-size: 20px;
cursor: pointer;
+ margin-bottom: 15px;
}
\ No newline at end of file
Author: KUMARAN M (kumaran.m@tataelxsi.co.in), RAJESH S (rajesh.s@tataelxsi.co.in), BARATH KUMAR R (barath.r@tataelxsi.co.in)
-->
-<div class="row d-flex flex-row justify-content-between">
+<div class="d-flex flex-row justify-content-between">
<div class="d-flex align-items-center header-style">{{'VNFINSTANCES' | translate}}</div>
</div>
-<div class="row mt-2 mb-0 form-group justify-content-end list-utilites-actions">
- <page-per-row class="mr-2" (pagePerRow)="onChange($event)"></page-per-row>
+<div class="mt-2 mb-2 form-group justify-content-end list-utilites-actions">
+ <page-per-row class="me-2" (pagePerRow)="onChange($event)"></page-per-row>
<page-reload></page-reload>
</div>
<div class="smarttable-style bg-white mt-1">
</button>
</div>
<div class="modal-body modal-body-custom-height">
- <div class="form-group row">
+ <div class="form-group row mb-3">
<label class="col-sm-12 col-form-label mandatory-label"
[ngClass]="{'text-danger': k8sclusterForm.invalid === true && submitted === true}">{{'MANDATORYCHECK' | translate}}</label>
<label class="col-sm-4 col-form-label" for="name">{{'PAGE.K8S.NAME' | translate}}*</label>
formControlName="name" id="name" [ngClass]="{ 'is-invalid': submitted && f.name.errors }" required>
</div>
</div>
- <div class="form-group row">
+ <div class="form-group row mb-3">
<label class="col-sm-4 col-form-label" for="k8s_version">{{'PAGE.K8S.K8SVERSION' | translate}}*</label>
<div class="col-sm-8">
<input autocomplete="off" class="form-control" placeholder="{{'PAGE.K8S.K8SVERSION' | translate}}" type="text"
required>
</div>
</div>
- <div class="form-group row">
+ <div class="form-group row mb-3">
<label class="col-sm-4 col-form-label" for="vim_account">{{'PAGE.K8S.VIMACCOUNT' | translate}}*</label>
<div class="col-sm-8">
<ng-select placeholder="{{'SELECT' | translate}} {{'PAGE.K8S.VIMACCOUNT' | translate}}"
</ng-select>
</div>
</div>
- <div class="form-group row">
+ <div class="form-group row mb-3">
<label class="col-sm-4 col-form-label" for="deployment_methods">{{'PAGE.K8S.DEPLOYMENTMETHODS' | translate}}*</label>
<div class="col-sm-8">
<ng-select placeholder="{{'SELECT' | translate}} {{'PAGE.K8S.DEPLOYMENTMETHODS' | translate}}"
</ng-select>
</div>
</div>
- <div class="form-group row">
+ <div class="form-group row mb-3">
<label class="col-sm-4 col-form-label" for="description">{{'PAGE.K8S.DESCRIPTION' | translate}}*</label>
<div class="col-sm-8">
<textarea class="form-control" placeholder="{{'PAGE.K8S.DESCRIPTION' | translate}}" type="text"
required></textarea>
</div>
</div>
- <div class="form-group row">
+ <div class="form-group row mb-3">
<label class="col-sm-4 col-form-label" for="nets">{{'PAGE.K8S.NETS' | translate}}*</label>
<div class="col-sm-8">
<textarea rows="5" cols="50" class="form-control" placeholder="{{'PAGE.K8S.NETSPLACEHOLDER' | translate}}"
formControlName="nets" id="nets" [ngClass]="{ 'is-invalid': submitted && f.nets.errors }" required></textarea>
<div class="fileupload-text mt-1 mb-1">{{'FILEUPLOADLABEL' | translate}}</div>
<div class="custom-file">
- <input type="file" #fileInputNets class="custom-file-input" (change)="netsFile($event.target.files)"
+ <input type="file" #fileInputNets class="fileupload custom-file-input" (change)="netsFile($event.target.files)"
id="customFileNets">
- <label class="custom-file-label" #fileInputNetsLabel for="customFileNets">{{'CHOOSEFILE' | translate}}</label>
</div>
</div>
</div>
- <div class="form-group row">
+ <div class="form-group row mb-3">
<label class="col-sm-4 col-form-label" for="credentials">{{'PAGE.K8S.CREDENTIALS' | translate}}*</label>
<div class="col-sm-8">
<textarea rows="5" cols="50" class="form-control" placeholder="{{'YAMLCONFIG' | translate}}" formControlName="credentials"
id="credentials" [ngClass]="{ 'is-invalid': submitted && f.credentials.errors }" required></textarea>
<div class="fileupload-text mt-1 mb-1">{{'FILEUPLOADLABEL' | translate}}</div>
<div class="custom-file">
- <input type="file" #fileInputCredentials class="custom-file-input" (change)="credentialsFile($event.target.files)"
+ <input type="file" #fileInputCredentials class="fileupload custom-file-input" (change)="credentialsFile($event.target.files)"
id="customFileCredentials">
- <label class="custom-file-label" #fileInputCredentialsLabel for="customFileCredentials">{{'CHOOSEFILE' | translate}}</label>
</div>
</div>
</div>
/**
* @file K8sAddClusterComponent.ts.
*/
-import { isNullOrUndefined } from 'util';
import { HttpHeaders } from '@angular/common/http';
import { Component, ElementRef, Injector, OnInit, ViewChild } from '@angular/core';
import { FormBuilder, FormGroup, Validators } from '@angular/forms';
import { environment } from 'environment';
import * as jsyaml from 'js-yaml';
import { RestService } from 'RestService';
-import { SharedService } from 'SharedService';
+import { SharedService, isNullOrUndefined } from 'SharedService';
import { VimAccountDetails } from 'VimAccountModel';
/**
* Creating Component
</button>
</div>
<div class="modal-body k8saddrepo">
- <div class="form-group row">
+ <div class="form-group row mb-3">
<label class="col-sm-12 col-form-label mandatory-label"
[ngClass]="{'text-danger': k8srepoForm.invalid === true && submitted === true}">{{'MANDATORYCHECK' | translate}}</label>
<label class="col-sm-4 col-form-label" for="name">{{'PAGE.K8S.NAME' | translate}}*</label>
formControlName="name" id="name" [ngClass]="{ 'is-invalid': submitted && f.name.errors }" required>
</div>
</div>
- <div class="form-group row">
+ <div class="form-group row mb-3">
<label class="col-sm-4 col-form-label" for="type">{{'PAGE.K8S.TYPE' | translate}}*</label>
<div class="col-sm-8">
<ng-select [items]="repoTypeSelect" bindLabel="name" bindValue="id"
</ng-select>
</div>
</div>
- <div class="form-group row">
+ <div class="form-group row mb-3">
<label class="col-sm-4 col-form-label" for="url">{{'PAGE.K8S.URL' | translate}}*</label>
<div class="col-sm-8">
<input autocomplete="off" class="form-control" placeholder="{{'PAGE.K8S.URL' | translate}}" type="url"
</div>
</div>
</div>
- <div class="form-group row">
+ <div class="form-group row mb-3">
<label class="col-sm-4 col-form-label" for="description">{{'PAGE.K8S.DESCRIPTION' | translate}}*</label>
<div class="col-sm-8">
<textarea class="form-control" placeholder="{{'PAGE.K8S.DESCRIPTION' | translate}}" type="text"
Author: KUMARAN M (kumaran.m@tataelxsi.co.in), RAJESH S (rajesh.s@tataelxsi.co.in), BARATH KUMAR R (barath.r@tataelxsi.co.in)
-->
-<div class="row d-flex flex-row justify-content-between">
+<div class="d-flex flex-row justify-content-between">
<div class="d-flex align-items-center header-style">{{'PAGE.K8S.REGISTERK8CLUSTER' | translate}}</div>
<span class="button">
<button class="btn btn-primary" type="button" placement="top" container="body" ngbTooltip="{{'PAGE.K8S.ADDK8CLUSTER' | translate}}"
</button>
</span>
</div>
-<div class="row mt-2 mb-0 list-utilites-actions">
- <div class="col-auto mr-auto">
+<div class="mt-2 mb-2 list-utilites-actions">
+ <div class="col-auto me-auto">
<nav class="custom-items-config">
<span><i class="fas fa-clock text-warning"></i>{{operationalStateFirstStep}}</span>
<span><i class="fas fa-check-circle text-success"></i>{{operationalStateSecondStep}}</span>
<span><i class="fas fa-times-circle text-danger"></i>{{operationalStateThirdStep}}</span>
</nav>
</div>
- <page-per-row class="mr-2" (pagePerRow)="onChange($event)"></page-per-row>
+ <page-per-row class="me-2" (pagePerRow)="onChange($event)"></page-per-row>
<page-reload></page-reload>
</div>
<div class="smarttable-style bg-white mt-1">
Author: KUMARAN M (kumaran.m@tataelxsi.co.in), RAJESH S (rajesh.s@tataelxsi.co.in), BARATH KUMAR R (barath.r@tataelxsi.co.in)
-->
-<div class="row d-flex flex-row justify-content-between">
+<div class="d-flex flex-row justify-content-between">
<div class="d-flex align-items-center header-style">{{'PAGE.K8S.REGISTERK8REPO' | translate}}</div>
<span class="button">
<button class="btn btn-primary" type="button" placement="top" container="body" ngbTooltip="{{'PAGE.K8S.ADDK8REPO' | translate}}"
</button>
</span>
</div>
-<div class="row mt-2 mb-0 form-group justify-content-end list-utilites-actions">
- <page-per-row class="mr-2" (pagePerRow)="onChange($event)"></page-per-row>
+<div class="mt-2 mb-2 form-group justify-content-end list-utilites-actions">
+ <page-per-row class="me-2" (pagePerRow)="onChange($event)"></page-per-row>
<page-reload></page-reload>
</div>
<div class="smarttable-style bg-white mt-1">
<div id="main-wrapper" class="container-fluid" dir="ltr" appGottoTop>
<div class="layout-wrapper mt-2">
<app-sidebar></app-sidebar>
- <div class="content-section pl-4">
+ <div class="content-section ps-4">
<app-breadcrumb></app-breadcrumb>
<div class="mt-2">
<div class="card custom-card shadow">
Author: KUMARAN M (kumaran.m@tataelxsi.co.in), RAJESH S (rajesh.s@tataelxsi.co.in), BARATH KUMAR R (barath.r@tataelxsi.co.in)
-->
<nav aria-label="breadcrumb" class="breadcrumb-holder">
- <ul class="breadcrumb-custom pl-0">
+ <ul class="breadcrumb-custom ps-0">
<li class="breadcrumb-item-custom" [routerLink]="item.url" *ngFor="let item of menuItems; let i = index" [class.active]="i===menuItems.length-1">
<a *ngIf="i!==menuItems.length-1">
<i *ngIf="i==0" class="fas fa-th-large"></i> {{item.title | translate}}
/**
* @file Bread Crumb component.
*/
-import { isNullOrUndefined } from 'util';
import { Component, Injector, OnInit } from '@angular/core';
import { Title } from '@angular/platform-browser';
import { ActivatedRoute, NavigationEnd, Router, RouterEvent, UrlSegment } from '@angular/router';
import { TranslateService } from '@ngx-translate/core';
import { BREADCRUMBITEM } from 'CommonModel';
import { filter, startWith } from 'rxjs/operators';
+import { isNullOrUndefined } from 'SharedService';
/**
* Creating component
<a class="navbar-brand">
<img routerLink="/" src="assets/images/logo.png" class="osm-logo" alt="OPEN SOURCE MANO" draggable="false">
</a>
- <div class="nav navbar-nav nav-flex-icons ml-auto">
+ <div class="nav navbar-nav nav-flex-icons ms-auto">
<h5>
- <span class="badge badge-primary mt-2">{{'OSMVERSION' | translate}} {{sharedService.osmVersion}}</span>
+ <span class="badge bg-primary mt-2">{{'OSMVERSION' | translate}} {{sharedService.osmVersion}}</span>
</h5>
<ul class="navbar-nav cursor-pointer" ngbDropdown display="dynamic" placement="bottom-right">
<li class="nav-item dropdown">
</div>
</li>
</ul>
- <ul class="navbar-nav cursor-pointer text-right" ngbDropdown display="dynamic" placement="bottom-right">
+ <ul class="navbar-nav cursor-pointer text-end" ngbDropdown display="dynamic" placement="bottom-right">
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" id="navbarDropdown" ngbDropdownToggle>
<i class="fas fa-user-circle"></i> {{'USER' | translate}} ({{username$ | async}})
@import '../../../assets/scss/mixins/mixin';
@import '../../../assets/scss/variable';
+.close {
+ opacity: 1;
+ background-color: transparent;
+ border: 0;
+ position: absolute;
+ right: 10px;
+ top: 2px;
+ font-size: 1.31rem;
+}
.navbar{
@include box-shadow(0px, 0px, 12px, 0px, rgba($black,0.14));
@include border(all, 0, solid, $gray-80);
cursor: pointer;
}
.custom-dropdown-menu {
+ background-color: white !important;
.dropdown-item{
&.project-item{
@include flexbox(flex, space-between, row, null, center, null);
/**
* @file Header Component
*/
-import { isNullOrUndefined } from 'util';
import { Component, Injector, OnInit } from '@angular/core';
import { NgbModal, NgbModalRef } from '@ng-bootstrap/ng-bootstrap';
import { TranslateService } from '@ngx-translate/core';
import { environment } from 'environment';
import { ProjectService } from 'ProjectService';
import { Observable } from 'rxjs';
-import { SharedService } from 'SharedService';
+import { SharedService, isNullOrUndefined } from 'SharedService';
import { UserSettingsComponent } from 'UserSettingsComponent';
/**
/**
* @file Sidebar Component
*/
-import { isNullOrUndefined } from 'util';
import { Component, Injector, OnInit } from '@angular/core';
import { DeviceCheckService } from 'DeviceCheckService';
+import { isNullOrUndefined } from 'SharedService';
import { MENU_ITEMS, MENUITEMS } from 'src/models/MenuModel';
/**
/**
* @file Page for Login component
*/
-import { isNullOrUndefined } from 'util';
import { HttpErrorResponse } from '@angular/common/http';
import { Component, Injector, OnInit } from '@angular/core';
import { FormBuilder, FormGroup, Validators } from '@angular/forms';
import { ToastrService } from 'ngx-toastr';
import { RestService } from 'RestService';
import { Observable } from 'rxjs';
-import { SharedService } from 'SharedService';
+import { SharedService, isNullOrUndefined } from 'SharedService';
import { UserDetail } from 'UserModel';
/**
Author: BARATH KUMAR R (barath.r@tataelxsi.co.in)
-->
-<div class="row d-flex flex-row justify-content-between">
+<div class="d-flex flex-row justify-content-between">
<div class="d-flex align-items-center header-style">{{ 'PAGE.OPERATIONALDASHBOARD.TITLE' | translate }}
({{ 'PAGE.OPERATIONALDASHBOARD.MODELSUMMARY' | translate }})</div>
<page-reload></page-reload>
<div class="row">
<div class="col-lg-12 col-md-12 col-sm-12 p-1">
<div class="row my-2 justify-content-end align-items-center setting-section">
- <div class="form-group row align-items-center mb-0">
- <label class="col-form-label font-weight-bold text-primary">
+ <div class="form-group align-items-center mb-0 text-end p-0">
+ <label class="col-form-label fw-bold text-primary">
{{ 'PAGE.OPERATIONALDASHBOARD.LIVELOAD' | translate}}
</label>
<!-- Live button switch -->
- <label class="switch ml-1">
+ <label class="switch ms-1">
<input id="liveData{{i}}" type="checkbox" [checked]="vcaDetail.isLiveloading"
(change)="callLiveData($event.target.checked, vcaDetail.ns_id, i)">
<div class="slider round">
</div>
</label>
<!-- Seconds button group -->
- <div class="btn-group list action ml-2 seconds-btn-group" role="group"
+ <div class="btn-group list action ms-2 seconds-btn-group" role="group"
*ngIf="vcaDetail.isLiveloading">
<button [disabled]="!vcaDetail.isLiveloading" type="button"
class="btn btn-primary"
</div>
</div>
<ng-container *ngFor="let modelVCAStatus of vcaDetail.vcaStatusModels; let i = index;">
- <h5 class="font-weight-bold text-primary">
+ <h5 class="fw-bold text-primary">
{{ 'PAGE.OPERATIONALDASHBOARD.MODEL' | translate }} {{i+1}} (Cloud/Region):
{{modelVCAStatus.model ? modelVCAStatus.model.cloud_tag : '-'}}/
{{modelVCAStatus.model ? modelVCAStatus.model.region : '-' }}
<div class="row">
<div class="col-lg-12 col-md-12 col-sm-12 p-1">
<div class="row my-2 justify-content-between align-items-center filter-actions">
- <div class="form-group row align-items-center mb-0">
+ <div class="form-group align-items-center mb-0 p-0">
<button class="btn btn-sm btn-outline-primary mx-1 filter{{i}} all{{i}} active"
type="button" (click)="showHideTables($event.target, 'all', i)">
{{ 'ALL' | translate }}
</div>
<div class="form-group row align-items-center mb-0"
*ngIf="modelVCAStatus.executedActions !== undefined && modelVCAStatus.executedActions.length > 0">
- <label class="col-form-label font-weight-bold text-primary">
+ <label class="col-form-label fw-bold text-primary">
{{ 'EXECUTEDACTIONS' | translate }}
</label>
<button type="button"
- class="btn btn-sm btn-primary border border-radius-default ml-1"
+ class="btn btn-sm btn-primary border border-radius-default ms-1"
(click)="showExecutedActionsList(modelVCAStatus.executedActions);">
<i class="fas fa-directions"></i>
</button>
/**
* @file Page for Operational View Component
*/
-import { isNullOrUndefined } from 'util';
import { Component, Injector, OnInit } from '@angular/core';
import { ActivatedRoute } from '@angular/router';
import { NgbModal } from '@ng-bootstrap/ng-bootstrap';
import { Observable } from 'rxjs';
import { Subscription } from 'rxjs';
import { map } from 'rxjs/operators';
-import { SharedService } from 'SharedService';
+import { SharedService, isNullOrUndefined } from 'SharedService';
/**
* Creating component
* @Component takes OperationalViewComponent.html as template url
/**
* @file Page for Operational View App actions Component
*/
-import { isNullOrUndefined } from 'util';
import { Component, Injector, Input, OnInit } from '@angular/core';
import { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';
import { URLPARAMS } from 'CommonModel';
+import { isNullOrUndefined } from 'SharedService';
/**
* Creating component
* @Component takes OperationalViewAppActionsComponent.html as template url
/**
* @file Page for Operational View App configs Component
*/
-import { isNullOrUndefined } from 'util';
import { Component, Injector, Input, OnInit } from '@angular/core';
import { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';
import { URLPARAMS } from 'CommonModel';
+import { isNullOrUndefined } from 'SharedService';
/**
* Creating component
* @Component takes OperationalViewAppConfigsComponent.html as template url
/**
* @file Page for Operational View App Executed actions Component
*/
-import { isNullOrUndefined } from 'util';
import { Component, Injector, Input, OnInit } from '@angular/core';
import { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';
import { URLPARAMS } from 'CommonModel';
import { EXECUTEDACTIONS } from 'OperationalModel';
+import { isNullOrUndefined } from 'SharedService';
/**
* Creating component
* @Component takes OperationalViewAppExecutedActionsComponent.html as template url
</button>
</div>
<div class="modal-body osmrepoadd">
- <div class="form-group row">
+ <div class="form-group row mb-3">
<label class="col-sm-12 col-form-label mandatory-label"
[ngClass]="{'text-danger': osmrepoForm.invalid === true && submitted === true}">{{'MANDATORYCHECK' | translate}}</label>
<label class="col-sm-4 col-form-label" for="name">{{'NAME' | translate}}*</label>
maxlength="{{sharedService.MAX_LENGTH_NAME}}" required>
</div>
</div>
- <div class="form-group row">
+ <div class="form-group row mb-3">
<label class="col-sm-4 col-form-label" for="type">{{'TYPE' | translate}}*</label>
<div class="col-sm-8">
<ng-select bindLabel="title" bindValue="value" [items]="osmrepoType"
</ng-select>
</div>
</div>
- <div class="form-group row">
+ <div class="form-group row mb-3">
<label class="col-sm-4 col-form-label" for="url">{{'URL' | translate}}*</label>
<div class="col-sm-8">
<input autocomplete="off" class="form-control" placeholder="{{'URL' | translate}}" type="url"
</div>
</div>
</div>
- <div class="form-group row">
+ <div class="form-group row mb-3">
<label class="col-sm-4 col-form-label" for="description">{{'DESCRIPTION' | translate}}*</label>
<div class="col-sm-8">
<textarea rows="5" cols="50" class="form-control" placeholder="{{'DESCRIPTION' | translate}}" type="text"
Author: KUMARAN M (kumaran.m@tataelxsi.co.in), RAJESH S (rajesh.s@tataelxsi.co.in), BARATH KUMAR R (barath.r@tataelxsi.co.in)
-->
-<div class="row d-flex flex-row justify-content-between">
+<div class="d-flex flex-row justify-content-between">
<div class="d-flex align-items-center header-style">{{'PAGE.OSMREPO.OSMREPOTITLE' | translate}}</div>
- <span class="button">
+ <span class="button mb-0">
<button class="btn btn-primary" type="button" (click)="addOsmrepo()" placement="top" container="body" ngbTooltip="{{'PAGE.OSMREPO.ADDOSMREPO' | translate}}">
<i class="fas fa-plus-circle" aria-hidden="true"></i>
{{'PAGE.OSMREPO.ADDOSMREPO' | translate}}
</button>
</span>
</div>
-<div class="row mt-2 mb-0 form-group justify-content-end list-utilites-actions">
- <page-per-row class="mr-2" (pagePerRow)="onChange($event)"></page-per-row>
+<div class="mt-2 mb-2 form-group justify-content-end list-utilites-actions">
+ <page-per-row class="me-2" (pagePerRow)="onChange($event)"></page-per-row>
<page-reload></page-reload>
</div>
<div class="smarttable-style bg-white mt-1">
</button>
</div>
<div class="modal-body modal-body-custom-height netsliceinstantiate-ns">
- <div class="form-group row">
+ <div class="form-group row mb-3">
<label class="col-sm-12 col-form-label mandatory-label"
[ngClass]="{'text-danger': netSliceInstantiateForm.invalid === true && submitted === true}">{{'MANDATORYCHECK' | translate}}</label>
<label class="col-sm-4 col-form-label" for="nsiName">{{'PAGE.NSTINSTANCEINSTANTIATE.NSNAME' | translate}}*</label>
id="nsiName" [ngClass]="{ 'is-invalid': submitted && f.nsiName.errors }" required>
</div>
</div>
- <div class="form-group row">
+ <div class="form-group row mb-3">
<label class="col-sm-4 col-form-label"
for="nsiDescription">{{'PAGE.NSTINSTANCEINSTANTIATE.DESCRIPTION' | translate}}*</label>
<div class="col-sm-8">
[ngClass]="{ 'is-invalid': submitted && f.nsiDescription.errors }" required></textarea>
</div>
</div>
- <div class="form-group row">
+ <div class="form-group row mb-3">
<label class="col-sm-4 col-form-label" for="nstId">{{'PAGE.NSTINSTANCEINSTANTIATE.NSTID' | translate}}*</label>
<div class="col-sm-8">
<ng-select [items]="netSliceSelect" bindLabel="name" bindValue="_id"
</ng-select>
</div>
</div>
- <div class="form-group row">
+ <div class="form-group row mb-3">
<label class="col-sm-4 col-form-label"
for="vimAccountId">{{'PAGE.NSTINSTANCEINSTANTIATE.VIMACCOUNT' | translate}}*</label>
<div class="col-sm-8">
</ng-select>
</div>
</div>
- <div class="form-group row">
+ <div class="form-group row mb-3">
<label class="col-sm-4 col-form-label" for="ssh_keys">{{'PAGE.NSTINSTANCEINSTANTIATE.SSHKEY' | translate}}</label>
<div class="col-sm-8">
<textarea class="form-control" placeholder="{{'PAGE.NSTINSTANCEINSTANTIATE.SSHKEYMSG' | translate}}"
formControlName="ssh_keys" id="ssh_keys"></textarea>
<div class="fileupload-text mt-1 mb-1">{{'FILEUPLOADLABEL' | translate}}</div>
<div class="custom-file">
- <input type="file" #fileInputSSH class="custom-file-input" (change)="sshFile($event.target.files)"
+ <input type="file" #fileInputSSH class="fileupload custom-file-input" (change)="sshFile($event.target.files)"
id="customSSHFile">
- <label class="custom-file-label" #fileInputSSHLabel for="customSSHFile">{{'CHOOSEFILE' | translate}}</label>
</div>
</div>
</div>
- <div class="form-group row">
+ <div class="form-group row mb-3">
<label class="col-sm-4 col-form-label" for="config">{{'CONFIG' | translate}}</label>
<div class="col-sm-8">
<textarea class="form-control" placeholder="{{'YAMLCONFIG' | translate}}" formControlName="config"
id="config"></textarea>
<div class="fileupload-text mt-1 mb-1">{{'FILEUPLOADLABEL' | translate}}</div>
<div class="custom-file">
- <input type="file" #fileInputConfig class="custom-file-input" (change)="configFile($event.target.files)"
- id="customConfigFile">
- <label class="custom-file-label" #fileInputConfigLabel for="customConfigFile">{{'CHOOSEFILE' | translate}}</label>
+ <input type="file" #fileInputConfig class="fileupload custom-file-input" (change)="configFile($event.target.files)"
+ id="customConfigFile">
</div>
</div>
</div>
/**
* @file Instantiate NS Modal Component.
*/
-import { isNullOrUndefined } from 'util';
import { HttpHeaders } from '@angular/common/http';
import { Component, ElementRef, Injector, OnInit, ViewChild } from '@angular/core';
import { FormBuilder, FormGroup, Validators } from '@angular/forms';
import { NetworkSliceData } from 'NetworkSliceModel';
import { NSICREATEPARAMS } from 'NSDModel';
import { RestService } from 'RestService';
-import { SharedService } from 'SharedService';
+import { SharedService, isNullOrUndefined } from 'SharedService';
import { VimAccountDetails } from 'VimAccountModel';
/**
* Creating component
</button>
</div>
<div class="modal-body modal-body-custom-height instantiate-ns">
- <div class="form-group row">
+ <div class="form-group row mb-3">
<label class="col-sm-12 col-form-label mandatory-label"
[ngClass]="{'text-danger': instantiateForm.invalid === true && submitted === true}">{{'MANDATORYCHECK' | translate}}</label>
<label class="col-sm-4 col-form-label"
[ngClass]="{ 'is-invalid': submitted && f.nsName.errors }" required>
</div>
</div>
- <div class="form-group row">
+ <div class="form-group row mb-3">
<label class="col-sm-4 col-form-label"
for="nsDescription">{{'PAGE.INSTANCEINSTANTIATE.DESCRIPTION' | translate}}*</label>
<div class="col-sm-8">
[ngClass]="{ 'is-invalid': submitted && f.nsDescription.errors }" required></textarea>
</div>
</div>
- <div class="form-group row">
+ <div class="form-group row mb-3">
<label class="col-sm-4 col-form-label" for="nsdId">{{'PAGE.INSTANCEINSTANTIATE.NSID' | translate}}*</label>
<div class="col-sm-8">
<ng-select [items]="nsdSelect" bindLabel="name" bindValue="_id"
</ng-select>
</div>
</div>
- <div class="form-group row">
+ <div class="form-group row mb-3">
<label class="col-sm-4 col-form-label"
for="vimAccountId">{{'PAGE.INSTANCEINSTANTIATE.VIMACCOUNT' | translate}}*</label>
<div class="col-sm-6">
</button>
</div>
</div>
- <div class="form-group row">
+ <div class="form-group row mb-3">
<label class="col-sm-4 col-form-label"
for="ssh_keys">{{'PAGE.INSTANCEINSTANTIATE.SSHKEY' | translate}}</label>
<div class="col-sm-8">
formControlName="ssh_keys" id="ssh_keys"></textarea>
<div class="fileupload-text mt-1 mb-1">{{'FILEUPLOADLABEL' | translate}}</div>
<div class="custom-file">
- <input type="file" #fileInputSSH class="custom-file-input" (change)="sshFile($event.target.files)"
+ <input type="file" #fileInputSSH class="fileupload custom-file-input" (change)="sshFile($event.target.files)"
id="customSSHFile">
- <label class="custom-file-label" #fileInputSSHLabel
- for="customSSHFile">{{'CHOOSEFILE' | translate}}</label>
</div>
</div>
</div>
- <div class="form-group row">
+ <div class="form-group row mb-3">
<label class="col-sm-4 col-form-label" for="config">{{'CONFIG' | translate}}</label>
<div class="col-sm-8">
<textarea class="form-control" placeholder="{{'YAMLCONFIG' | translate}}" formControlName="config"
id="config"></textarea>
<div class="fileupload-text mt-1 mb-1">{{'FILEUPLOADLABEL' | translate}}</div>
<div class="custom-file">
- <input type="file" #fileInputConfig class="custom-file-input"
+ <input type="file" #fileInputConfig class="fileupload custom-file-input"
(change)="configFile($event.target.files)" id="customConfigFile">
- <label class="custom-file-label" #fileInputConfigLabel
- for="customConfigFile">{{'CHOOSEFILE' | translate}}</label>
</div>
</div>
</div>
/**
* @file Instantiate NS Modal Component.
*/
-import { isNullOrUndefined } from 'util';
import { Component, ElementRef, Injector, OnInit, ViewChild } from '@angular/core';
import { FormBuilder, FormGroup, Validators } from '@angular/forms';
import { Router } from '@angular/router';
import * as jsyaml from 'js-yaml';
import { NSCREATEPARAMS, NSData, NSDDetails } from 'NSDModel';
import { RestService } from 'RestService';
-import { SharedService } from 'SharedService';
+import { SharedService, isNullOrUndefined } from 'SharedService';
import { VimAccountDetails } from 'VimAccountModel';
/**
Author: KUMARAN M (kumaran.m@tataelxsi.co.in), RAJESH S (rajesh.s@tataelxsi.co.in), BARATH KUMAR R (barath.r@tataelxsi.co.in)
-->
-<div class="row d-flex flex-row justify-content-between">
+<div class="d-flex flex-row justify-content-between">
<div class="d-flex align-items-center header-style">{{'PAGE.DASHBOARD.NETSLICETEMPLATE' | translate}}</div>
</div>
<div class="row">
</div>
</div>
</div>
-<div class="row mt-2 mb-0 form-group justify-content-end list-utilites-actions">
- <page-per-row class="mr-2" (pagePerRow)="onChange($event)"></page-per-row>
+<div class="mt-2 mb-2 form-group justify-content-end list-utilites-actions">
+ <page-per-row class="me-2" (pagePerRow)="onChange($event)"></page-per-row>
<page-reload></page-reload>
</div>
<div class="smarttable-style bg-white mt-1">
Author: KUMARAN M (kumaran.m@tataelxsi.co.in), RAJESH S (rajesh.s@tataelxsi.co.in), BARATH KUMAR R (barath.r@tataelxsi.co.in)
-->
-<div class="row d-flex flex-row justify-content-between">
+<div class="d-flex flex-row justify-content-between">
<div class="d-flex align-items-center header-style">NS {{'PACKAGES' | translate}}</div>
<span class="button">
<button class="btn btn-primary" type="button" placement="top" container="body" ngbTooltip="{{'PAGE.NSPACKAGE.ADDNSPACKAGE' | translate}}"
</div>
</div>
</div>
-<div class="row mt-2 mb-0 form-group justify-content-end list-utilites-actions">
- <page-per-row class="mr-2" (pagePerRow)="onChange($event)"></page-per-row>
+<div class="mt-2 mb-0 form-group justify-content-end list-utilites-actions">
+ <page-per-row class="me-2" (pagePerRow)="onChange($event)"></page-per-row>
<page-reload></page-reload>
</div>
<div class="smarttable-style bg-white mt-1">
<span class="topology_title" *ngIf="isShowVLDetails">{{'PAGE.TOPOLOGY.VIRTUALLINK' | translate}}</span>
<span class="topology_title" *ngIf="isShowVNFDetails">{{'PAGE.TOPOLOGY.VNF' | translate}}</span>
<span class="topology_title" *ngIf="isShowCPDetails">{{'PAGE.TOPOLOGY.CONNECTIONPOINT' | translate}}</span>
- <button (click)="toggleSidebar()" class="close" type="button">
+ <button (click)="toggleSidebar()" class="close-nsd" type="button">
<i class="fas fa-times-circle text-danger" aria-hidden="true"></i>
</button>
</div>
<div class="sidebar-body">
<div class="col-xs-12 col-sm-12 col-md-12 col-lg-12 mb-2" *ngIf="isShowNSDDetails">
<div class="row">
- <div class="col-12 p-0">
+ <div class="col-12">
<form autocomplete="off">
- <div class="form-group row">
+ <div class="form-group row mb-3">
<label class="col-sm-4 col-form-label">{{ 'ID' | translate }}</label>
<div class="col-sm-8 p-0">
<input type="text" class="form-control" placeholder="{{ 'ID' | translate }}" name="id"
[(ngModel)]="nsPackageDetails.id">
</div>
</div>
- <div class="form-group row">
+ <div class="form-group row mb-3">
<label class="col-sm-4 col-form-label">{{ 'NAME' | translate }}</label>
<div class="col-sm-8 p-0">
<input type="text" class="form-control" placeholder="{{ 'NAME' | translate }}" name="name"
[(ngModel)]="nsPackageDetails.name">
</div>
</div>
- <div class="form-group row">
+ <div class="form-group row mb-3">
<label class="col-sm-4 col-form-label">{{ 'DESCRIPTION' | translate }}</label>
<div class="col-sm-8 p-0">
<textarea rows="5" cols="50" class="form-control" placeholder="{{ 'DESCRIPTION' | translate }}"
name="description" [(ngModel)]="nsPackageDetails.description"></textarea>
</div>
</div>
- <div class="form-group row">
+ <div class="form-group row mb-3">
<label class="col-sm-4 col-form-label">{{ 'VERSION' | translate }}</label>
<div class="col-sm-8 p-0">
<input type="text" class="form-control" placeholder="{{ 'VERSION' | translate }}" name="version"
[(ngModel)]="nsPackageDetails.version">
</div>
</div>
- <div class="form-group row">
+ <div class="form-group row mb-3">
<label class="col-sm-4 col-form-label">{{ 'DESIGNER' | translate }}</label>
<div class="col-sm-8 p-0">
<input type="text" class="form-control" placeholder="{{ 'DESIGNER' | translate }}" name="designer"
</ng-sidebar-container>
<div class="container-fluid text-dark">
<div class="row bg-white ns-composer-form">
- <div class="col-xs-3 col-sm-3 col-md-3 col-lg-3 pl-0 px-0">
+ <div class="col-xs-3 col-sm-3 col-md-3 col-lg-3 ps-0 px-0">
<div class="row">
<div class="col-xs-12 col-sm-12 col-md-12 col-lg-12 mb-2">
<fieldset class="p-2">
<ul class="list-group list-group-flush dragable">
<li class="list-group-item" draggable="true" (dragstart)="drag($event)" id="vl">
<img src="assets/images/VL.svg" class="ns-svg" draggable="false"/>
- <span class="span-overflow-text font-weight-bold">{{'PAGE.TOPOLOGY.VL' | translate}}</span>
+ <span class="span-overflow-text fw-bold">{{'PAGE.TOPOLOGY.VL' | translate}}</span>
<span class="drag-icon pull-right"><i class="fas fa-arrows-alt"></i></span>
</li>
</ul>
[attr.data-id]="list['id']" *ngFor="let list of vnfList" placement="top"
container="body" ngbTooltip="{{ list['product-name'] }}">
<img src="assets/images/VNFD.svg" class="ns-svg" draggable="false"/>
- <span class="span-overflow-text font-weight-bold">{{ list['product-name'] }}</span>
+ <span class="span-overflow-text fw-bold">{{ list['product-name'] }}</span>
<span class="drag-icon pull-right"><i class="fas fa-arrows-alt"></i></span>
</li>
</ul>
</div>
<div class="col-xs-9 col-sm-9 col-md-9 col-lg-9">
<div class="row">
- <div class="col-xs-6 col-sm-6 col-md-6 col-lg-6 pl-0">
+ <div class="col-xs-6 col-sm-6 col-md-6 col-lg-6 ps-0">
<div class="btn-group list" role="group" aria-label="Basic example">
<button type="button" class="btn btn-primary topology-btn" (click)="onFreeze()"
[class.pinned]="classApplied" placement="top" container="body" ngbTooltip="{{(classApplied ? 'UNFREEZE' : 'FREEZE') | translate}}">
</button>
</div>
</div>
- <div class="col-xs-6 col-sm-6 col-md-6 col-lg-6 text-right pr-0 badgegroup">
+ <div class="col-xs-6 col-sm-6 col-md-6 col-lg-6 text-end pe-0 badgegroup">
<span class="badge badge-primary badge-pill bg-white text-body font-weight-bold">
<img src="assets/images/VNFD.svg" class="ns-svg" draggable="false"/>
<br>{{'PAGE.TOPOLOGY.VNF' | translate}}</span>
limitations under the License.
Author: KUMARAN M (kumaran.m@tataelxsi.co.in), RAJESH S (rajesh.s@tataelxsi.co.in), BARATH KUMAR R (barath.r@tataelxsi.co.in)
-*/
\ No newline at end of file
+*/
+.close-nsd {
+ opacity: 1;
+ background-color: transparent;
+ border: 0;
+ position: absolute;
+ right: 4px;
+ font-size: 1.3125rem;
+}
\ No newline at end of file
/**
* @file NS Compose Component
*/
-import { isNullOrUndefined } from 'util';
import { HttpHeaders } from '@angular/common/http';
import { Component, ElementRef, Injector, ViewChild, ViewEncapsulation } from '@angular/core';
import { ActivatedRoute, Router } from '@angular/router';
Tick, TickPath, VLC, VLD, VNFPROFILE
} from 'NSDModel';
import { RestService } from 'RestService';
-import { SharedService } from 'SharedService';
+import { SharedService, isNullOrUndefined } from 'SharedService';
import { VNFD, VNFData } from 'VNFDModel';
/**
translate}}</span>
<span class="topology_title" *ngIf="showRightSideInfo === 'intcpInfo'">{{'PAGE.TOPOLOGY.INTCONNECTIONPOINT' |
translate}}</span>
- <button (click)="toggleSidebar()" class="close" type="button">
+ <button (click)="toggleSidebar()" class="close-vnfd" type="button">
<i class="fas fa-times-circle text-danger" aria-hidden="true"></i>
</button>
</div>
<div class="sidebar-body">
<div class="col-xs-12 col-sm-12 col-md-12 col-lg-12 mb-2" *ngIf="showRightSideInfo === 'vnfdInfo'">
<div class="row">
- <div class="col-12 p-0">
+ <div class="col-12">
<form>
- <div class="form-group row">
+ <div class="form-group row mb-3">
<label class="col-sm-4 col-form-label">{{ 'ID' | translate }}</label>
<div class="col-sm-8 p-0">
<input type="text" class="form-control" placeholder="{{ 'ID' | translate }}" name="id"
[(ngModel)]="vnfdInfo.id">
</div>
</div>
- <div class="form-group row">
+ <div class="form-group row mb-3">
<label class="col-sm-4 col-form-label">{{ 'PRODUCTNAME' | translate }}</label>
<div class="col-sm-8 p-0">
<input type="text" class="form-control" placeholder="{{ 'PRODUCTNAME' | translate }}"
name="product-name" [(ngModel)]="vnfdInfo['product-name']">
</div>
</div>
- <div class="form-group row">
+ <div class="form-group row mb-3">
<label class="col-sm-4 col-form-label">{{ 'DESCRIPTION' | translate }}</label>
<div class="col-sm-8 p-0">
<textarea rows="5" cols="50" class="form-control" placeholder="{{ 'DESCRIPTION' | translate }}"
name="description" [(ngModel)]="vnfdInfo.description"></textarea>
</div>
</div>
- <div class="form-group row">
+ <div class="form-group row mb-3">
<label class="col-sm-4 col-form-label">{{ 'VERSION' | translate }}</label>
<div class="col-sm-8 p-0">
<input type="text" class="form-control" placeholder="{{ 'VERSION' | translate }}" name="version"
[(ngModel)]="vnfdInfo.version">
</div>
</div>
- <div class="form-group row">
+ <div class="form-group row mb-3">
<label class="col-sm-4 col-form-label">{{ 'PROVIDER' | translate }}</label>
<div class="col-sm-8 p-0">
<input type="text" class="form-control" placeholder="{{ 'PROVIDER' | translate }}" name="provider"
</ng-sidebar-container>
<div class="container-fluid text-dark">
<div class="row bg-white vnf-composer-form">
- <div class="col-xs-3 col-sm-3 col-md-3 col-lg-3 pl-0 px-0">
+ <div class="col-xs-3 col-sm-3 col-md-3 col-lg-3 ps-0 px-0">
<div class="row">
<div class="col-xs-12 col-sm-12 col-md-12 col-lg-12 mb-2">
<fieldset class="p-2">
</div>
<div class="col-xs-9 col-sm-9 col-md-9 col-lg-9">
<div class="row">
- <div class="col-xs-6 col-sm-6 col-md-6 col-lg-6 pl-0">
+ <div class="col-xs-6 col-sm-6 col-md-6 col-lg-6 ps-0">
<div class="btn-group list" role="group" aria-label="Basic example">
<button type="button" class="btn btn-primary topology-btn" (click)="onFreeze()"
[class.pinned]="classApplied" placement="top" container="body"
</button>
</div>
</div>
- <div class="col-xs-6 col-sm-6 col-md-6 col-lg-6 text-right pr-0 badgegroup">
+ <div class="col-xs-6 col-sm-6 col-md-6 col-lg-6 text-end pe-0 badgegroup">
<span class="badge badge-primary badge-pill bg-white text-body font-weight-bold">
<img src="assets/images/VDU.svg" class="vnf-svg" draggable="false" />
<br>{{'PAGE.TOPOLOGY.VDU' | translate}}</span>
limitations under the License.
Author: KUMARAN M (kumaran.m@tataelxsi.co.in), RAJESH S (rajesh.s@tataelxsi.co.in), BARATH KUMAR R (barath.r@tataelxsi.co.in)
-*/
\ No newline at end of file
+*/
+.close-vnfd {
+ opacity: 1;
+ background-color: transparent;
+ border: 0;
+ position: absolute;
+ right: 4px;
+ font-size: 1.3125rem;
+}
\ No newline at end of file
/**
* @file VNFComposerComponent
*/
- import { isNullOrUndefined } from 'util';
import { HttpHeaders } from '@angular/common/http';
import { Component, ElementRef, Injector, ViewChild, ViewEncapsulation } from '@angular/core';
import { ActivatedRoute, Router } from '@angular/router';
import * as HttpStatus from 'http-status-codes';
import * as jsyaml from 'js-yaml';
import { RestService } from 'RestService';
-import { SharedService } from 'SharedService';
+import { SharedService, isNullOrUndefined } from 'SharedService';
import { COMPOSERNODES, EXTCPD, GRAPHDETAILS, INTCPD, IVLD, Tick, TickPath, VDU, VDUINTCPD, VNFD, VNFDATA, VNIR } from 'VNFDModel';
/**
Author: KUMARAN M (kumaran.m@tataelxsi.co.in), RAJESH S (rajesh.s@tataelxsi.co.in), BARATH KUMAR R (barath.r@tataelxsi.co.in)
-->
-<div class="row d-flex flex-row justify-content-between">
+<div class="d-flex flex-row justify-content-between">
<div class="d-flex align-items-center header-style">VNF {{'PACKAGES' | translate}}</div>
<span class="button">
<button class="btn btn-primary" type="button" placement="top" container="body" ngbTooltip="{{'PAGE.VNFPACKAGE.ADDVNFPACKAGE' | translate}}"
</div>
</div>
</div>
-<div class="row mt-2 mb-0 form-group justify-content-end list-utilites-actions">
- <page-per-row class="mr-2" (pagePerRow)="onChange($event)"></page-per-row>
+<div class="mt-2 mb-2 form-group justify-content-end list-utilites-actions">
+ <page-per-row class="me-2" (pagePerRow)="onChange($event)"></page-per-row>
<page-reload></page-reload>
</div>
<div class="smarttable-style bg-white mt-1">
Author: KUMARAN M (kumaran.m@tataelxsi.co.in), RAJESH S (rajesh.s@tataelxsi.co.in), BARATH KUMAR R (barath.r@tataelxsi.co.in)
-->
-<div class="row d-flex flex-row justify-content-between">
+<div class="d-flex flex-row justify-content-between">
<div class="d-flex align-items-center header-style">{{'PAGE.DASHBOARD.PROJECTS' | translate}}</div>
- <span class="button">
+ <span class="button text-end">
<button class="btn btn-primary" type="button" (click)="projectAdd()" placement="top" container="body" ngbTooltip="{{'PAGE.PROJECT.NEWPROJECT' | translate}}">
<i class="fas fa-plus-circle" aria-hidden="true"></i>
{{'PAGE.PROJECT.NEWPROJECT' | translate}}
</button>
</span>
</div>
-<div class="row mt-2 mb-0 form-group justify-content-end list-utilites-actions">
- <page-per-row class="mr-2" (pagePerRow)="onChange($event)"></page-per-row>
+<div class="mt-2 mb-2 form-group justify-content-end list-utilites-actions">
+ <page-per-row class="me-2" (pagePerRow)="onChange($event)"></page-per-row>
<page-reload></page-reload>
</div>
<div class="smarttable-style bg-white mt-1">
/**
* @file Project details Component.
*/
-import { isNullOrUndefined } from 'util';
import { Component, Injector, OnDestroy, OnInit } from '@angular/core';
import { NgbModal, NgbModalRef } from '@ng-bootstrap/ng-bootstrap';
import { TranslateService } from '@ngx-translate/core';
import { ProjectsActionComponent } from 'ProjectsAction';
import { RestService } from 'RestService';
import { Subscription } from 'rxjs';
-import { SharedService } from 'SharedService';
+import { SharedService, isNullOrUndefined } from 'SharedService';
/**
* Creating component
<div class="modal-header">
<h4 class="modal-title" id="modal-basic-title">{{ (getProjectType == 'Add' ? 'NEW' : 'EDIT') | translate}}
{{'PROJECT' | translate}}</h4>
- <button class="button-xs" type="button" class="close" aria-label="Close" (click)="activeModal.close()">
+ <button class="button-xs-2" type="button" class="close" aria-label="Close" (click)="activeModal.close()">
<i class="fas fa-times-circle text-danger"></i>
</button>
</div>
<div class="modal-body modal-body-custom-height">
<div class="row" *ngIf="getProjectType === 'Add'">
- <label class="col-xs-10 col-sm-10 col-md-10 col-lg-10 col-xl-10">{{'RECENTLY' | translate}}
+ <label class="col-xs-10 col-sm-10 col-md-10 col-lg-10 col-xl-10 mb-2">{{'RECENTLY' | translate}}
{{'CREATED' | translate}} {{'PROJECT' | translate}}:
<b>{{(recentProject)?recentProject.name:''}}</b>
</label>
formControlName="project_name" [ngClass]="{ 'is-invalid': submitted && f.project_name.errors }" required>
</div>
</div>
- <div class="form-group row" *ngIf="getProjectType === 'Add'">
+ <div class="form-group row mt-3" *ngIf="getProjectType === 'Add'">
<label class="col-sm-4 col-form-label">{{'DOMAIN' | translate}} {{'NAME' | translate}}</label>
<div class="col-sm-4">
<ng-select [clearable]="false" placeholder="{{'SELECT' | translate}}" [items]="domains" bindLabel="title"
[ngClass]="{ 'is-invalid': submitted && f.domain_name.errors }"></ng-select>
</div>
</div>
- <div class="form-check form-check-inline ml-2">
- <input class="form-check-input" type="checkbox" formControlName="enable_quota" (change)="checkQuota()"
+ <div class="form-check form-check-inline mt-3">
+ <input class="quotacheck form-check-input" type="checkbox" formControlName="enable_quota" (change)="checkQuota()"
id="quotaCheck" *ngIf="getProjectType === 'Add' || quotaRefs === null">
- <label class="form-check-label" for="quotaCheck"><b>{{'PAGE.PROJECT.QUOTA' | translate}}</b></label>
+ <label class="form-check-label" for="quotaCheck" [ngClass]="getProjectType === 'Edit'&& quotaRefs !== null?'quotaCheck-label':''"><b>{{'PAGE.PROJECT.QUOTA' | translate}}</b></label>
</div>
- <div class="row mt-1" [ngbCollapse]="!f.enable_quota.value">
- <div class="form-group col-sm-6" *ngFor="let quota of quotaItems;">
+ <div class="row" [ngbCollapse]="!f.enable_quota.value">
+ <div class="form-group col-sm-6 mb-2 mt-2" *ngFor="let quota of quotaItems;">
<div class="row">
<label class="col-sm-7 col-form-label">{{quota.title | translate}}*</label>
<div class="col-sm-5">
- <input placeholder="{{'COUNT' | translate}}" type="number"
+ <input placeholder="{{'COUNT' | translate}}" type="number" min="0"
class="form-control" [formControlName]="quota.value" [ngClass]="{ 'is-invalid': submitted && f[quota.value].errors }">
</div>
</div>
limitations under the License.
Author: KUMARAN M (kumaran.m@tataelxsi.co.in), RAJESH S (rajesh.s@tataelxsi.co.in), BARATH KUMAR R (barath.r@tataelxsi.co.in)
-*/
\ No newline at end of file
+*/
+@import "../../../assets/scss/variable.scss";
+.quotacheck {
+ box-shadow: none;
+ border-radius: 2px;
+ border-color: $gray-600;
+}
+.form-check {
+ padding-left: 30px;
+}
+.quotaCheck-label {
+ position: absolute;
+ left: 26px;
+}
\ No newline at end of file
/**
* @file Project Add Modal
*/
-import { isNullOrUndefined } from 'util';
import { Component, Injector, Input, OnInit } from '@angular/core';
import { AbstractControl, FormBuilder, FormControl, FormGroup, Validators } from '@angular/forms';
import { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';
import { ProjectData, ProjectDetails, QUOTAITEM, QUOTA_ITEMS } from 'ProjectModel';
import { ProjectService } from 'ProjectService';
import { RestService } from 'RestService';
-import { SharedService } from 'SharedService';
+import { SharedService, isNullOrUndefined } from 'SharedService';
/**
* Creating component
Author: KUMARAN M (kumaran.m@tataelxsi.co.in), RAJESH S (rajesh.s@tataelxsi.co.in), BARATH KUMAR R (barath.r@tataelxsi.co.in)
-->
-<div class="row d-flex flex-row justify-content-between">
+<div class="d-flex flex-row justify-content-between">
<div class="d-flex align-items-center header-style">
{{ (getRoleType == 'Add' ? 'PAGE.ROLES.CREATEROLE' : 'PAGE.ROLES.EDITROLE') | translate}}</div>
<span class="button">
<label class="col-sm-12 col-form-label mandatory-label"
[ngClass]="{'text-danger': roleForm.invalid === true && submitted === true}">{{'MANDATORYCHECK' | translate}}</label>
<label class="col-sm-2 col-form-label">{{'NAME' | translate}}*</label>
- <div class="col-sm-5">
+ <div class="col-sm-5 mb-3">
<input placeholder="{{'NAME' | translate}}" type="text" class="form-control" maxlength="30"
formControlName="roleName" [ngClass]="{ 'is-invalid': submitted && f.roleName.errors }" required>
</div>
</div>
<div class="form-group row" *ngIf="viewMode == 'text'">
<label class="col-sm-2 col-form-label">{{'PAGE.ROLES.PERMISSIONS' | translate}}</label>
- <div class="col-sm-5">
+ <div class="col-sm-5 mb-3">
<textarea placeholder="{{'PAGE.ROLES.YAMLPERMISSIONS' | translate}}" rows="10" cols="50" type="text"
class="form-control" formControlName="permissions"></textarea>
</div>
</div>
<div class="form-group row" [ngClass]="{ 'justify-content-end': viewMode == 'text' }">
- <div class="col-sm-6">
+ <div class="col-sm-6 mb-3">
<button type="button" class="btn btn-danger" routerLink="/roles/details">{{'CANCEL' | translate}}</button>
- <button class="btn btn-primary ml-3"
+ <button class="btn btn-primary ms-3"
type="submit">{{ (getRoleType == 'Add' ? 'CREATE' : 'APPLY') | translate}}</button>
</div>
</div>
<ngb-panel *ngFor="let permissionGroup of rolePermissions; let i = index">
<ng-template ngbPanelHeader let-opened="opened">
<div class="d-flex align-items-center justify-content-between">
- <button ngbPanelToggle class="btn text-dark container-fluid text-left pl-0"><i
+ <button ngbPanelToggle class="btn text-dark container-fluid text-start ps-0 p-10"><i
[ngClass]="{ 'fas': true, 'fa-angle-down': opened, 'fa-angle-right': !opened }"></i> {{permissionGroup.title}}</button>
</div>
</ng-template>
</ng-template>
</ngb-panel>
</ngb-accordion>
-<div class="float-right" *ngIf="viewMode == 'preview'">
+<div class="float-end" *ngIf="viewMode == 'preview'">
<button type="button" class="btn btn-danger" routerLink="/roles/details">{{'CANCEL' | translate}}</button>
- <button class="btn btn-primary ml-3"
+ <button class="btn btn-primary ms-3"
(click)="roleCheck()">{{ (getRoleType == 'Add' ? 'CREATE' : 'APPLY') | translate}}</button>
</div>
<app-loader [waitingMessage]="message" *ngIf="isLoadingResults"></app-loader>
\ No newline at end of file
Author: KUMARAN M (kumaran.m@tataelxsi.co.in), RAJESH S (rajesh.s@tataelxsi.co.in), BARATH KUMAR R (barath.r@tataelxsi.co.in)
*/
-@import '../../../assets/scss/mixins/mixin';
-@import '../../../assets/scss/variable';
- .custom-button{
+@import "../../../assets/scss/mixins/mixin";
+@import "../../../assets/scss/variable";
+button:focus:not(:focus-visible) {
+ border-color: $gray-400;
+}
+.custom-button {
label {
- @include padding-value(2,2,2,2);
+ @include padding-value(2, 2, 2, 2);
+ border: none;
&.active {
+ border: none;
@include background(null, $white, null, null, null);
- span{
+ span {
img {
opacity: 1;
}
}
span {
display: inline-block;
- @include wh-value(30px,30px);
+ @include wh-value(30px, 30px);
cursor: pointer;
border-radius: 50%;
- @include border(all,2,solid, $white);
+ @include border(all, 2, solid, $white);
@include box-shadow(0px, 1px, 3px, 0px, $dark);
@include background(null, null, null, no-repeat, center);
text-align: center;
@include line-height(25px);
img {
- width:50%;
+ width: 50%;
opacity: 0;
@include transition(all, 0.3, null, ease);
}
/**
* @file Roles Create and Edit Component
*/
-import { isNullOrUndefined } from 'util';
import { HttpClient, HttpHeaders } from '@angular/common/http';
import { Component, Injector, Input, OnInit } from '@angular/core';
import { FormBuilder, FormGroup, Validators } from '@angular/forms';
import * as jsonpath from 'jsonpath';
import { RestService } from 'RestService';
import { Permission, PermissionGroup, RoleConfig, RoleData } from 'RolesModel';
-import { SharedService } from 'SharedService';
+import { SharedService, isNullOrUndefined } from 'SharedService';
/**
* Creating component
Author: KUMARAN M (kumaran.m@tataelxsi.co.in), RAJESH S (rajesh.s@tataelxsi.co.in), BARATH KUMAR R (barath.r@tataelxsi.co.in)
-->
-<div class="row d-flex flex-row justify-content-between">
+<div class="d-flex flex-row justify-content-between">
<div class="d-flex align-items-center header-style">{{'ROLES' | translate}}</div>
<span class="button">
<button class="btn btn-primary" type="button" (click)="createRole()" placement="top"
</button>
</span>
</div>
-<div class="row mt-2 mb-0 form-group justify-content-end list-utilites-actions">
- <page-per-row class="mr-2" (pagePerRow)="onChange($event)"></page-per-row>
+<div class="mt-2 mb-2 form-group justify-content-end list-utilites-actions">
+ <page-per-row class="me-2" (pagePerRow)="onChange($event)"></page-per-row>
<page-reload></page-reload>
</div>
<div class="smarttable-style bg-white mt-1">
/**
* @file Roles Deatils component.
*/
-import { isNullOrUndefined } from 'util';
import { Component, Injector, OnInit } from '@angular/core';
import { Router } from '@angular/router';
import { TranslateService } from '@ngx-translate/core';
import { RolesActionComponent } from 'RolesAction';
import { RoleData, RoleDetails } from 'RolesModel';
import { Subscription } from 'rxjs';
-import { SharedService } from 'SharedService';
+import { SharedService, isNullOrUndefined } from 'SharedService';
/**
* Creating component
</button>
</div>
<div class="modal-body modal-body-custom-height">
- <div class="form-group row">
+ <div class="form-group row mb-3">
<label class="col-sm-12 col-form-label mandatory-label"
[ngClass]="{'text-danger': sdnControllerForm.invalid === true && submitted === true}">{{'MANDATORYCHECK' | translate}}</label>
<label class="col-sm-4 col-form-label" for="name">{{'NAME' | translate}}*</label>
formControlName="name" id="name" [ngClass]="{ 'is-invalid': submitted && f.name.errors }" required>
</div>
</div>
- <div class="form-group row">
+ <div class="form-group row mb-3">
<label class="col-sm-4 col-form-label" for="sdn_type">{{'TYPE' | translate}}*</label>
<div class="col-sm-8">
<ng-select [items]="sdnType" placeholder="{{'SELECT' | translate}}" bindLabel="title" bindValue="value"
<small class="text-info">{{'TYPEINFO' | translate}}</small>
</div>
</div>
- <div class="form-group row">
+ <div class="form-group row mb-3">
<label class="col-sm-4 col-form-label" for="username">{{'USERNAME' | translate}}*</label>
<div class="col-sm-8">
<input autocomplete="off" class="form-control" placeholder="{{'USERNAME' | translate}}" type="text"
required>
</div>
</div>
- <div class="form-group row">
+ <div class="form-group row mb-3">
<label class="col-sm-4 col-form-label" for="password">{{'PASSWORD' | translate}}*</label>
<div class="col-sm-8">
<input autocomplete="off" class="form-control" placeholder="{{'PASSWORD' | translate}}" type="password"
[ngClass]="{ 'is-invalid': submitted && f.password.errors }" required>
</div>
</div>
- <div class="form-group row">
+ <div class="form-group row mb-3">
<label class="col-sm-4 col-form-label" for="ip">{{'IP' | translate}}*</label>
<div class="col-sm-8">
<input autocomplete="off" class="form-control" placeholder="{{'IP' | translate}}" type="text"
</div>
</div>
</div>
- <div class="form-group row">
+ <div class="form-group row mb-3">
<label class="col-sm-4 col-form-label" for="port">{{'PORT' | translate}}*</label>
<div class="col-sm-8">
<input autocomplete="off" class="form-control" placeholder="{{'PORT' | translate}}" type="text"
</div>
</div>
</div>
- <div class="form-group row">
+ <div class="form-group row mb-3">
<label class="col-sm-4 col-form-label" for="dpid">{{'PAGE.SDNCONTROLLER.DPID' | translate}}*</label>
<div class="col-sm-8">
<input autocomplete="off" class="form-control"
</div>
</div>
</div>
- <div class="form-group row">
+ <div class="form-group row mb-3">
<label class="col-sm-4 col-form-label" for="version">{{'VERSION' | translate}}</label>
<div class="col-sm-8">
<input autocomplete="off" class="form-control" placeholder="{{'VERSION' | translate}}" type="text"
Author: KUMARAN M (kumaran.m@tataelxsi.co.in), RAJESH S (rajesh.s@tataelxsi.co.in), BARATH KUMAR R (barath.r@tataelxsi.co.in)
-->
-<div class="row d-flex flex-row justify-content-between">
+<div class="d-flex flex-row justify-content-between">
<div class="d-flex align-items-center header-style">{{'PAGE.SDNCONTROLLER.REGISTEREDSDNCONTROLLER' | translate}}</div>
<span class="button">
<button class="btn btn-primary" type="button" placement="top" container="body" ngbTooltip="{{'PAGE.SDNCONTROLLER.NEWSDNCONTROLLER' | translate}}"
</button>
</span>
</div>
-<div class="row mt-2 mb-0 list-utilites-actions">
- <div class="col-auto mr-auto">
+<div class="mt-2 mb-2 list-utilites-actions">
+ <div class="col-auto me-auto">
<nav class="custom-items-config">
<span><i class="fas fa-clock text-warning"></i>{{operationalStateFirstStep}}</span>
<span><i class="fas fa-check-circle text-success"></i>{{operationalStateSecondStep}}</span>
<span><i class="fas fa-times-circle text-danger"></i>{{operationalStateThirdStep}}</span>
</nav>
</div>
- <page-per-row class="mr-2" (pagePerRow)="onChange($event)"></page-per-row>
+ <page-per-row class="me-2" (pagePerRow)="onChange($event)"></page-per-row>
<page-reload></page-reload>
</div>
<div class="smarttable-style bg-white mt-1">
</div>
<div class="modal-body modal-body-custom-height p-0">
<table class="table table-sm table-hover table-layout-fixed mb-0" *ngIf="sdnDetails else noData">
- <tbody>
- <tr>
- <th>
- {{'ID' | translate}}
- </th>
- <td>
- {{(sdnDetails._id)?sdnDetails._id:'-'}}
- </td>
- </tr>
- <tr>
- <th>
- {{'NAME' | translate}}
- </th>
- <td>
- {{(sdnDetails.name)?sdnDetails.name:'-'}}
- </td>
- </tr>
- <tr>
- <th>
- {{'TYPE' | translate}}
- </th>
- <td>
- {{(sdnDetails.type)?sdnDetails.type:'-'}}
- </td>
- </tr>
- <tr>
- <th>
- {{'OPERATIONALSTATE' | translate}}
- </th>
- <td>
- <span class="badge ml-1" [ngClass]="{'badge-warning text-white':sdnDetails._admin.operationalState === operationalStateFirstStep,
- 'badge-success':sdnDetails._admin.operationalState === operationalStateSecondStep,
- 'badge-danger':sdnDetails._admin.operationalState === operationalStateThirdStep}">
- {{(sdnDetails._admin.operationalState)?sdnDetails._admin.operationalState:'-'}}</span>
- </td>
- </tr>
- <tr>
- <th>
- {{'URL' | translate}}
- </th>
- <td>
- {{(sdnDetails.url)?sdnDetails.url:'-'}}
- </td>
- </tr>
- <tr>
- <th>
- {{'USER' | translate}}
- </th>
- <td>
- {{(sdnDetails.user)?sdnDetails.user:'-'}}
- </td>
- </tr>
- <tr>
- <th>
- {{'VERSION' | translate}}
- </th>
- <td>
- {{(sdnDetails.version)?sdnDetails.version:'-'}}
- </td>
- </tr>
- <tr>
- <th>
- {{'PAGE.SDNCONTROLLER.DPID' | translate}}
- </th>
- <td>
- {{(sdnDetails.dpid)?sdnDetails.dpid:'-'}}
- </td>
- </tr>
- <tr>
- <th>
- {{'CREATED' | translate}}
- </th>
- <td>
- {{(sdnDetails._admin.created)?this.sharedService.convertEpochTime(sdnDetails._admin.created):'-'}}
- </td>
- </tr>
- <tr>
- <th>
- {{'MODIFIED' | translate}}
- </th>
- <td>
- {{(sdnDetails._admin.modified)?this.sharedService.convertEpochTime(sdnDetails._admin.modified):'-'}}
- </td>
- </tr>
- </tbody>
+ <tr>
+ <th>
+ {{'ID' | translate}}
+ </th>
+ <td>
+ {{(sdnDetails._id)?sdnDetails._id:'-'}}
+ </td>
+ </tr>
+ <tr>
+ <th>
+ {{'NAME' | translate}}
+ </th>
+ <td>
+ {{(sdnDetails.name)?sdnDetails.name:'-'}}
+ </td>
+ </tr>
+ <tr>
+ <th>
+ {{'TYPE' | translate}}
+ </th>
+ <td>
+ {{(sdnDetails.type)?sdnDetails.type:'-'}}
+ </td>
+ </tr>
+ <tr>
+ <th>
+ {{'OPERATIONALSTATE' | translate}}
+ </th>
+ <td>
+ <span class="badge ms-1" [ngClass]="{'badge bg-warning text-white':sdnDetails._admin.operationalState === operationalStateFirstStep,
+ 'badge bg-success text-white':sdnDetails._admin.operationalState === operationalStateSecondStep,
+ 'badge bg-danger text-white':sdnDetails._admin.operationalState === operationalStateThirdStep}">
+ {{(sdnDetails._admin.operationalState)?sdnDetails._admin.operationalState:'-'}}</span>
+ </td>
+ </tr>
+ <tr>
+ <th>
+ {{'URL' | translate}}
+ </th>
+ <td>
+ {{(sdnDetails.url)?sdnDetails.url:'-'}}
+ </td>
+ </tr>
+ <tr>
+ <th>
+ {{'USER' | translate}}
+ </th>
+ <td>
+ {{(sdnDetails.user)?sdnDetails.user:'-'}}
+ </td>
+ </tr>
+ <tr>
+ <th>
+ {{'VERSION' | translate}}
+ </th>
+ <td>
+ {{(sdnDetails.version)?sdnDetails.version:'-'}}
+ </td>
+ </tr>
+ <tr>
+ <th>
+ {{'PAGE.SDNCONTROLLER.DPID' | translate}}
+ </th>
+ <td>
+ {{(sdnDetails.dpid)?sdnDetails.dpid:'-'}}
+ </td>
+ </tr>
+ <tr>
+ <th>
+ {{'CREATED' | translate}}
+ </th>
+ <td>
+ {{(sdnDetails._admin.created)?this.sharedService.convertEpochTime(sdnDetails._admin.created):'-'}}
+ </td>
+ </tr>
+ <tr>
+ <th>
+ {{'MODIFIED' | translate}}
+ </th>
+ <td>
+ {{(sdnDetails._admin.modified)?this.sharedService.convertEpochTime(sdnDetails._admin.modified):'-'}}
+ </td>
+ </tr>
<tr>
<th>
{{'DEPLOYED' | translate}}
limitations under the License.
Author: KUMARAN M (kumaran.m@tataelxsi.co.in), RAJESH S (rajesh.s@tataelxsi.co.in), BARATH KUMAR R (barath.r@tataelxsi.co.in)
-*/
\ No newline at end of file
+*/
+@import "../../../assets/scss/variable.scss";
+.table tr:hover {
+ color: $body-color;
+ background-color: #f6fafe;
+ }
+ .table thead th {
+ vertical-align: bottom;
+ border-bottom: 2px solid rgba(0, 0, 0, .1);
+ }
+ .table th, .table td {
+ padding: 5px;
+ vertical-align: top;
+ border-top: 1px solid rgba(0, 0, 0, .1);
+ border-bottom: transparent;
+ }
+ .table b {
+ background: none;
+ color: $body-color;
+ padding-right: 0px;
+ padding-left: 0px;
+ }
\ No newline at end of file
<label class="col-sm-12 col-form-label mandatory-label"
[ngClass]="{'text-danger': userForm.invalid === true && submitted === true,'message': isPassword && userForm.invalid === true && submitted }">{{'MANDATORYCHECK'|
translate}}</label>
- <div class="row form-group" *ngIf="userType === 'add' || userType === 'editUserName'">
+ <div class="row form-group mb-3" *ngIf="userType === 'add' || userType === 'editUserName'">
<div class="col-sm-4">
<label for="userName">{{'PAGE.USERS.USERNAME' | translate}} *</label>
</div>
</div>
</div>
<ng-container *ngIf="userType === 'add' || userType === 'editPassword' || userType === 'changePassword'">
- <div class="row form-group" *ngIf=" userType === 'changePassword'">
+ <div class="row form-group mb-3" *ngIf=" userType === 'changePassword'">
<div class="col-sm-4">
<label for="oldpassword">{{'PAGE.USERS.OLDPASSWORD' | translate}} *</label>
</div>
[ngClass]="{ 'is-invalid': submitted && f.old_password.errors }" required>
</div>
</div>
- <div class="row form-group" *ngIf="userType === 'add' || userType === 'editPassword'">
+ <div class="row form-group mb-3" *ngIf="userType === 'add' || userType === 'editPassword'">
<div class="col-sm-4">
<label for="password">{{'PAGE.USERS.PASSWORD' | translate}} *</label>
</div>
{{'PAGE.LOGIN.PASSWORDMINLENGTHVALIDMESSAGE' | translate}} </div>
</div>
</div>
- <div class="row form-group" *ngIf="userType === 'changePassword'">
+ <div class="row form-group mb-3" *ngIf="userType === 'changePassword'">
<div class="col-sm-4">
<label for="password">{{'PAGE.USERS.NEWPASSWORD' | translate}} *</label>
</div>
{{'PAGE.LOGIN.PASSWORDMINLENGTHVALIDMESSAGE' | translate}} </div>
</div>
</div>
- <div class="row form-group">
+ <div class="row form-group mb-3">
<div class="col-sm-4">
<label for="password2">{{'PAGE.USERS.CONFPASSWORD' | translate}} *</label>
</div>
</div>
</div>
</ng-container>
- <div class="form-group row" *ngIf="userType === 'add'">
+ <div class="form-group row mb-3" *ngIf="userType === 'add'">
<label class="col-sm-4 col-form-label">{{'DOMAIN' | translate}} {{'NAME' | translate}}</label>
<div class="col-sm-8">
<ng-select [clearable]="false" placeholder="{{'SELECT' | translate}}" [items]="domains" bindLabel="title"
@include padding-value(0, 0, 0, 10);
@include margin-value(0, 0, 10, 0);
@include font(null, 11px, null);
+}
+.mandatory-label {
+ margin-left: 10px;
}
\ No newline at end of file
/**
* @file Add Edit Component.
*/
-import { isNullOrUndefined } from 'util';
import { HttpHeaders } from '@angular/common/http';
import { Component, Injector, Input, OnInit } from '@angular/core';
import { AbstractControl, FormBuilder, FormGroup, Validators } from '@angular/forms';
import { APIURLHEADER, ERRORDATA, LOGINPARAMS, MODALCLOSERESPONSEDATA, TYPESECTION } from 'CommonModel';
import { environment } from 'environment';
import { RestService } from 'RestService';
-import { SharedService } from 'SharedService';
+import { SharedService, isNullOrUndefined } from 'SharedService';
/**
* Creating component
<i class="fas fa-plus-circle"></i> {{'PAGE.USERS.ADDMAPPINGS' | translate}}</button>
</div>
</div>
- <label class="col-sm-12 col-form-label mandatory-label"
+ <label class="col-sm-12 col-form-label mandatory-label ps-2"
[ngClass]="{'text-danger': projectRoleForm.invalid === true && submitted === true}">{{'MANDATORYCHECK' |
translate}}</label>
<div *ngFor="let params of getControls(); let i = index;" [formGroupName]="i">
<div class="col-sm-8 col-md-8">
<ng-select placeholder="{{'SELECT' | translate}}" [items]="projects" bindLabel="name"
bindValue="name" formControlName="project_name" id="project_{{i}}"
- [ngClass]="{ 'is-invalid': submitted && params.controls.project_name.errors }">
- </ng-select>
+ [ngClass]="{ 'is-invalid': submitted && params.controls.project_name.errors }"></ng-select>
</div>
<label class="col-sm-3 col-md-3 col-form-label" for="roles_{{i}}">{{'ROLES' |
translate}}*</label>
</div>
<div class="col-sm-1"
*ngIf="userDetails.project_role_mappings[i] ? userDetails.project_role_mappings[i].project_name === '' : true">
- <button class="button-xs" type="button" class="close" (click)="removeMapping(i)"
+ <button class="button-xs" type="button" class="delete" (click)="removeMapping(i)"
placement="right" ngbTooltip="{{ 'CANCEL' | translate }}">
<i class="fas fa-minus-circle text-danger"></i>
</button>
</div>
<div class="col-sm-1"
*ngIf="userDetails.project_role_mappings[i] ? userDetails.project_role_mappings[i].project_name !== '' : false">
- <button class="button-xs" type="button" class="close"
- (click)="deleteProjectAndRoleMapping(userDetails.project_role_mappings[i])" placement="right"
- ngbTooltip="{{ 'DELETE' | translate }}">
+ <button class="button-xs" type="button" class="delete"
+ (click)="deleteProjectAndRoleMapping(userDetails.project_role_mappings[i])"
+ placement="right" ngbTooltip="{{ 'DELETE' | translate }}">
<i class="fas fa-trash-alt text-danger"></i>
</button>
</div>
}
.col-sm-1{
- bottom: 10px;
-}
\ No newline at end of file
+ position: relative;
+ bottom: 10px;
+}
+.modal-body .row{
+ margin-bottom: 0px;
+}
+.delete{
+ position: absolute;
+ bottom: 8px;
+ left: 3px;
+ border: 0;
+ font-size: 1.3125rem;
+ background-color: transparent;
+}
Author: KUMARAN M (kumaran.m@tataelxsi.co.in), RAJESH S (rajesh.s@tataelxsi.co.in), BARATH KUMAR R (barath.r@tataelxsi.co.in)
-->
-<div class="row d-flex flex-row justify-content-between">
+<div class="d-flex flex-row justify-content-between">
<div class="d-flex align-items-center header-style">{{'PAGE.DASHBOARD.USERS' | translate}}</div>
<span class="button">
<button class="btn btn-primary" type="button" (click)="composeUser()" placement="top" container="body"
</button>
</span>
</div>
-<div class="row mt-2 mb-0 form-group justify-content-end list-utilites-actions">
- <div *ngIf="isAdminShow" class="col-auto mr-auto">
+<div class="mt-2 mb-2 form-group justify-content-end list-utilites-actions">
+ <div *ngIf="isAdminShow" class="col-auto me-auto">
<nav class="custom-items-config">
<span><i class="fas fa-user-check text-success"></i>{{userActive}}</span>
<span><i class="fas fa-user-lock text-danger"></i>{{userLocked}}</span>
<span><i class="fas fa-user-shield text-info"></i>{{userAlwaysActive}}</span>
</nav>
</div>
- <page-per-row class="mr-2" (pagePerRow)="onChange($event)"></page-per-row>
+ <page-per-row class="me-2" (pagePerRow)="onChange($event)"></page-per-row>
<page-reload></page-reload>
</div>
<div class="smarttable-style bg-white mt-1">
/**
* @file users details Component.
*/
-import { isNullOrUndefined } from 'util';
import { Component, Injector, OnDestroy, OnInit } from '@angular/core';
import { NgbModal, NgbModalRef } from '@ng-bootstrap/ng-bootstrap';
import { TranslateService } from '@ngx-translate/core';
import { ProjectService } from 'ProjectService';
import { RestService } from 'RestService';
import { Subscription } from 'rxjs';
-import { SharedService } from 'SharedService';
+import { SharedService, isNullOrUndefined } from 'SharedService';
import { UserData, UserDetail } from 'UserModel';
import { UsersActionComponent } from 'UsersActionComponent';
</button>
</div>
<div class="modal-body">
- <div class="form-group row">
+ <div class="form-group row mb-3">
<label class="col-sm-12 col-form-label mandatory-label" [ngClass]="{'text-danger': packagesForm.invalid === true && submitted === true}">{{'MANDATORYCHECK' | translate}}</label>
<label class="col-sm-6 col-form-label">{{'PACKAGE' | translate}} {{'NAME' | translate}}*</label>
<div class="col-sm-6">
<i class="fas fa-times-circle text-danger"></i>
</button>
</div>
- <div class="modal-body">
+ <div class="modal-body ms-2">
<span *ngIf="topologyType === 'Delete'">{{'DELETECONFIRMPOPUPMESSAGE' | translate}} <b>{{ topologyname }}</b> ?</span>
<ul *ngIf="topologyType === 'Info'">
<li>
Author: KUMARAN M (kumaran.m@tataelxsi.co.in), RAJESH S (rajesh.s@tataelxsi.co.in), BARATH KUMAR R (barath.r@tataelxsi.co.in)
-->
-<div class="form-group row">
- <div class="d-flex align-items-center header-style">{{'EDIT' | translate}} <span
+<div class="form-group row mb-3">
+ <div class="d-flex align-items-center header-style p-0">{{'EDIT' | translate}} <span
class="text-uppercase">{{pacakgeType}} </span>{{'DESCRIPTOR' | translate}}</div>
</div>
<form *ngIf="defaults[mode]">
- <div class="row">
+ <div class="row mb-2">
<div class="col-2">
<div class="form-group">
- <select class="form-control custom-select" name="state" [(ngModel)]="mode" (ngModelChange)="changeMode()">
+ <select class="form-control select" name="state" [(ngModel)]="mode" (ngModelChange)="changeMode()">
<option *ngFor="let types of fileTypes;" [value]="types.value">
{{types.viewValue}}</option>
</select>
</div>
</div>
<div class="col-4">
- <div class="btn-group-toggle mb-1 mr-1 float-left">
+ <div class="btn-group-toggle mb-1 me-1 float-start">
<label class="btn btn-light" [class.active]="readOnly">
- <input type="checkbox" [(ngModel)]="readOnly" name="readOnly" autocomplete="off">
+ <input class="checkbox d-none" type="checkbox" [(ngModel)]="readOnly" name="readOnly" autocomplete="off">
{{'READONLYMODE' | translate}} ({{'CURRENTLY' | translate}} {{ (readOnly ? 'ON' : 'OFF') | translate }})
</label>
</div>
</div>
- <div class="col-6 text-right">
- <button type="button" class="btn btn-primary mr-2" routerLink="/packages/{{navigatePath}}/compose/{{paramsID}}"
+ <div class="col-6 text-end">
+ <button type="button" class="btn btn-primary me-2" routerLink="/packages/{{navigatePath}}/compose/{{paramsID}}"
[hidden]="navigatePath==='netslice'">
<i class="fa fa-sitemap" aria-hidden="true"></i> {{'SHOWGRAPH' | translate}}
</button>
- <button type="button" class="btn btn-primary mr-2" (click)="update(true)" [hidden]="navigatePath==='netslice'">
+ <button type="button" class="btn btn-primary me-2" (click)="update(true)" [hidden]="navigatePath==='netslice'">
<i class="fa fa-save" aria-hidden="true"></i> {{'UPDATESHOWGRAPH' | translate}}
</button>
<button type="button" class="btn btn-primary" (click)="update(false)">
Author: KUMARAN M (kumaran.m@tataelxsi.co.in), RAJESH S (rajesh.s@tataelxsi.co.in), BARATH KUMAR R (barath.r@tataelxsi.co.in)
*/
-.ngx-codemirror {
- font-size: 14px;
+@use "sass:math";
+@import "/src/assets/scss/mixins/mixin.scss";
+@import "/src/assets/scss/variable.scss";
+.btn.active {
+ color: $gray-900;
+ background-color: $paleblue;
+ border-color: $paleblue;
+}
+.btn-light:hover {
+ color: $gray-900;
+ background-color: $paleblue;
+ border-color: $paleblue;
+}
+select.form-control {
+ background-color: $white !important;
+ padding: 0.375rem 1.75rem 0.375rem 0.75rem;
+ @include flexbox(inline-block, null, null, null, null, null);
+ vertical-align: middle;
+ background: $white
+ url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3E%3Cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E")
+ no-repeat right 0.75rem center;
+ background-size: 8px 10px;
+ @include border(all, 1, solid, $gray-200);
+ @include roundedCorners(2);
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ appearance: none;
+ &::-ms-expand {
+ visibility: hidden;
+ }
}
\ No newline at end of file
</div>
<form [formGroup]="healingForm" (ngSubmit)="manualHealingTrigger()" autocomplete="off">
<div class="modal-body">
- <div class="form-group row">
+ <div class="form-group row mb-3">
<label class="col-sm-12 col-form-label mandatory-label"
[ngClass]="{'text-danger': healingForm.invalid === true && submitted === true}">
{{'MANDATORYCHECK' | translate}}
<small class="form-text text-muted" *ngIf="selectedvnfId !== ''">vnfd-id : {{ selectedvnfId }}</small>
</div>
</div>
- <div class="form-group row">
+ <div class="form-group row mb-3">
<div class="col-sm-6">
<label for="memberVnfIndex"> {{'DAY1OPERATION' | translate}}</label>
</div>
</ng-select>
</div>
</div>
- <div class="form-group row p-2 bg-light text-white justify-content-end">
- <div class="col-5">
+ <div class="form-group row p-2 bg-light text-white justify-content-end" mb-3>
+ <div class="col-5 text-end">
<button class="button-xs" type="button" class="btn btn-primary" (click)="addVdu()">
<i class="fas fa-plus-circle"></i>{{'SELECTVDU' | translate}}</button>
</div>
<div class="form-group row" [formGroupName]="i">
<div class="card bg-light">
<div class="card-body">
- <div class="form-group row">
- <label class="col-sm-3 col-md-3 col-form-label" for="vduId_{{i}}">{{'VDUID' |
+ <div class="form-group row mb-3">
+ <label class="col-sm-3 col-md-3 col-form-label ps-0" for="vduId_{{i}}">{{'VDUID' |
translate}}</label>
- <div class="col-sm-8 col-md-8">
+ <div class="col-sm-8 col-md-8 ps-1">
<ng-select (change)="getCountIndex($event.VDU)"
placeholder="{{'SELECT' | translate}}" [items]="vduId" bindLabel="VDU"
bindValue="VDU" formControlName="vduId" id="vduId_{{i}}"
[ngClass]="{ 'is-invalid': submitted && params.controls.vduId.errors }">
</ng-select>
</div>
- <label class="col-sm-3 col-md-3 col-form-label" for="countIndex_{{i}}">{{'COUNTINDEX' |
+ <label class="col-sm-3 col-md-3 col-form-label ps-0" for="countIndex_{{i}}">{{'COUNTINDEX' |
translate}}</label>
- <div class="col-sm-8 col-md-8">
+ <div class="col-sm-8 col-md-8 ps-1">
<ng-select placeholder="{{'SELECT' | translate}}" [items]="countIndex"
bindLabel="count-index" bindValue="count-index" formControlName="countIndex"
id="countIndex_{{i}}"
[ngClass]="{ 'is-invalid': submitted && params.controls.countIndex.errors }">
</ng-select>
</div>
- <label class="col-sm-3 col-md-3 col-form-label" for="runDay1_{{i}}">{{'DAY1OPERATION' |
+ <label class="col-sm-3 col-md-3 col-form-label ps-0" for="runDay1_{{i}}">{{'DAY1OPERATION' |
translate}}</label>
- <div class="col-sm-8 col-md-8">
+ <div class="col-sm-8 col-md-8 ps-1">
<ng-select formControlName="runDay1" [clearable]="false" placeholder="{{'DAY1OPERATION' |
translate}}" [items]="day1Operation" bindLabel="name" bindValue="id">
</ng-select>
</div>
<div class="col-sm-1">
- <button class="button-xs" type="button" class="close" (click)="removeMapping(i)"
+ <button class="button-xs" type="button" class="remove-mapping close" (click)="removeMapping(i)"
placement="right" ngbTooltip="{{ 'CANCEL' | translate }}">
<i class="fas fa-minus-circle text-danger"></i>
</button>
Author: SANDHYA JS (sandhya.j@tataelxsi.co.in)
*/
+.remove-mapping {
+ top: 50px;
+}
+.modal-body .row {
+ margin-bottom: 1px;
+ }
/**
* @file Healing Component
*/
-import { isNullOrUndefined } from 'util';
import { HttpHeaders } from '@angular/common/http';
import { Component, Injector, Input, OnInit } from '@angular/core';
import { AbstractControl, FormArray, FormBuilder, FormGroup, Validators } from '@angular/forms';
import { environment } from 'environment';
import { VDUMAP, VDUMAPPINGS } from 'NSInstanceModel';
import { RestService } from 'RestService';
-import { SharedService } from 'SharedService';
+import { SharedService, isNullOrUndefined } from 'SharedService';
import { InstanceData, VDUR, VNFInstanceDetails } from 'VNFInstanceModel';
/**
* Creating component
/**
* @file NS InstancesAction Component
*/
-import { isNullOrUndefined } from 'util';
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Injector } from '@angular/core';
import { Router } from '@angular/router';
import { NgbModal, NgbModalRef } from '@ng-bootstrap/ng-bootstrap';
import { RestService } from 'RestService';
import { forkJoin, Observable } from 'rxjs';
import { ScalingComponent } from 'ScalingComponent';
-import { SharedService } from 'SharedService';
+import { SharedService, isNullOrUndefined } from 'SharedService';
import { ShowInfoComponent } from 'ShowInfoComponent';
import { StartStopRebuildComponent } from 'StartStopRebuildComponent';
import { VerticalScalingComponent } from 'VerticalScalingComponent';
</div>
<form [formGroup]="nsUpdateForm" (ngSubmit)="triggerNsUpdate()" autocomplete="off">
<div class="modal-body">
- <div class="form-group row">
+ <div class="form-group row mb-3">
<label class="col-sm-12 col-form-label mandatory-label"
[ngClass]="{'text-danger': nsUpdateForm.invalid === true && submitted === true}">
{{'MANDATORYCHECK' | translate}}
[ngClass]="{ 'is-invalid': submitted && f.updateType.errors }"></ng-select>
</div>
</div>
- <div class="form-group row">
+ <div class="form-group row mb-3">
<div class="col-sm-6">
<label for="memberVnfIndex"> {{'MEMBERVNFINDEX' | translate}} *</label>
</div>
<div class="col-sm-6">
- <ng-select formControlName="memberVnfIndex" [clearable]="false" [(ngModel)]="memberIndexValue" (change) = 'getSelectedVNF($event.vnfinstanceId)'
- placeholder="{{'SELECTMEMBERVNFINDEX' | translate}}" [items]="memberTypes" bindLabel="id"
- bindValue="id" [ngClass]="{ 'is-invalid': submitted && f.memberVnfIndex.errors }">
+ <ng-select formControlName="memberVnfIndex" [clearable]="false" [(ngModel)]="memberIndexValue" (change)='getSelectedVNF($event.vnfinstanceId)'
+ placeholder="{{'SELECTMEMBERVNFINDEX' | translate}}" [items]="memberTypes"
+ bindLabel="id" bindValue="id" [ngClass]="{ 'is-invalid': submitted && f.memberVnfIndex.errors }">
</ng-select>
<small class="form-text text-muted" *ngIf="selectedvnfId !== ''">vnfd : {{ selectedvnfId }}</small>
</div>
</div>
- <div class="form-group row" *ngIf="!vnfdIdShow">
+ <div class="form-group row mb-3" *ngIf="!vnfdIdShow">
<div class="col-sm-6">
<label for="vnfdId"> {{'VNFDNAME' | translate}} *</label>
</div>
/**
* @file Ns Update Component
*/
-import { isNullOrUndefined } from 'util';
import { HttpHeaders } from '@angular/common/http';
import { Component, Injector, Input, OnInit } from '@angular/core';
import { AbstractControl, FormBuilder, FormGroup, Validators } from '@angular/forms';
import { environment } from 'environment';
import { NSUPDATE, TERMINATEVNF } from 'NSInstanceModel';
import { RestService } from 'RestService';
-import { SharedService } from 'SharedService';
+import { SharedService, isNullOrUndefined } from 'SharedService';
import { VNFD } from 'VNFDModel';
import { InstanceData, VNFInstanceDetails } from 'VNFInstanceModel';
import { WarningComponent } from 'WarningComponent';
Author: KUMARAN M (kumaran.m@tataelxsi.co.in), RAJESH S (rajesh.s@tataelxsi.co.in), BARATH KUMAR R (barath.r@tataelxsi.co.in)
-->
<div class="page-per-row">
- <label class="mr-2 mt-2">
+ <label class="me-2">
<b>{{'ENTRIES' | translate}}</b>
</label>
<select class="form-control custom-select" (change)="onSelectRow($event.target.value)">
<button type="button" class="btn btn-primary dropdown-toggle action-button" ngbDropdownToggle>
{{'ACTION' | translate}}
</button>
- <div class="dropdown-menu list-action-dropdown" ngbDropdownMenu>
+ <div class="dropdown-menu list-action-dropdown mt-1" ngbDropdownMenu>
<button type="button" class="btn btn-primary dropdown-item" (click)="projectEdit()" placement="left"
container="body" ngbTooltip="{{'EDIT' | translate}}">
<i class="fa fa-edit icons"></i> {{'EDIT' | translate}}
<button type="button" class="btn btn-primary dropdown-toggle action-button" ngbDropdownToggle>
{{'ACTION' | translate}}
</button>
- <div class="dropdown-menu list-action-dropdown" ngbDropdownMenu>
+ <div class="dropdown-menu list-action-dropdown mt-1" ngbDropdownMenu>
<button type="button" class="btn btn-primary dropdown-item" (click)="editRole()" placement="left"
container="body" ngbTooltip="{{'EDIT' | translate}}">
<i class="fa fa-edit icons"></i> {{'EDIT' | translate}}
</div>
<form [formGroup]="scalingForm" (ngSubmit)="manualScalingTrigger()" autocomplete="off">
<div class="modal-body">
- <div class="form-group row">
+ <div class="form-group row mb-3">
<label class="col-sm-12 col-form-label mandatory-label"
[ngClass]="{'text-danger': scalingForm.invalid === true && submitted === true}">
{{'MANDATORYCHECK' | translate}}
<small class="form-text text-muted" *ngIf="selectedVNFID !== ''">vnfd-id : {{ selectedVNFID }}</small>
</div>
</div>
- <div class="form-group row">
+ <div class="form-group row mb-3">
<div class="col-sm-12">
<ng-select formControlName="scalingname" [clearable]="false" placeholder="Select scaling-aspect *"
[items]="scalingGroup" bindLabel="name" bindValue="id"
</ng-select>
</div>
</div>
- <div class="form-group row">
+ <div class="form-group row mb-3">
<div class="col-sm-12">
<ng-select formControlName="scaleType" [clearable]="false" placeholder="Select Scale Type *"
[items]="scaleTypes" bindLabel="name" bindValue="id"
/**
* @file Scaling Component
*/
-import { isNullOrUndefined } from 'util';
import { HttpHeaders } from '@angular/common/http';
import { Component, Injector, Input, OnInit } from '@angular/core';
import { AbstractControl, FormBuilder, FormGroup, Validators } from '@angular/forms';
import { APIURLHEADER, ERRORDATA, MODALCLOSERESPONSEDATA, URLPARAMS } from 'CommonModel';
import { environment } from 'environment';
import { RestService } from 'RestService';
-import { SharedService } from 'SharedService';
+import { SharedService, isNullOrUndefined } from 'SharedService';
import { DF, SCALING, VNFD } from 'VNFDModel';
import { InstanceData, VNFInstanceDetails } from 'VNFInstanceModel';
/**
/**
* @file StartStopRebuild Component
*/
-import { isNullOrUndefined } from 'util';
import { HttpHeaders } from '@angular/common/http';
import { Component, Injector, Input, OnInit } from '@angular/core';
import { AbstractControl, FormBuilder, FormGroup, Validators } from '@angular/forms';
import { environment } from 'environment';
import { StartStopRebuild } from 'NSInstanceModel';
import { RestService } from 'RestService';
-import { SharedService } from 'SharedService';
+import { SharedService, isNullOrUndefined } from 'SharedService';
import { DF, VNFD } from 'VNFDModel';
import { InstanceData, VDUR, VNFInstanceDetails } from 'VNFInstanceModel';
<button type="button" class="btn btn-primary dropdown-toggle action-button" ngbDropdownToggle>
{{'ACTION' | translate}}
</button>
- <div class="dropdown-menu list-action-dropdown" ngbDropdownMenu>
+ <div class="dropdown-menu list-action-dropdown mt-1" ngbDropdownMenu>
<button *ngIf="isAdminShow" type="button" class="btn btn-primary dropdown-item" (click)="editUserModal('editPassword')"
placement="left" container="body" ngbTooltip="{{'PAGE.USERS.EDITCREDENTIALS' | translate}}">
<i class="fa fa-edit icons"></i> {{'PAGE.USERS.EDITCREDENTIALS' | translate}}
/**
* @file Users Action Component
*/
-import { isNullOrUndefined } from 'util';
import { Component, Injector } from '@angular/core';
import { NgbModal, NgbModalRef } from '@ng-bootstrap/ng-bootstrap';
import { TranslateService } from '@ngx-translate/core';
import { MODALCLOSERESPONSEDATA } from 'CommonModel';
import { DeleteComponent } from 'DeleteComponent';
import { ProjectRoleComponent } from 'ProjectRoleComponent';
-import { SharedService } from 'SharedService';
+import { SharedService, isNullOrUndefined } from 'SharedService';
import { UserData } from 'UserModel';
import { WarningComponent } from 'WarningComponent';
/**
</div>
<form [formGroup]="scalingForm" (ngSubmit)="triggerVerticalScaling()" autocomplete="off">
<div class="modal-body">
- <div class="form-group row">
+ <div class="form-group row mb-3">
<label class="col-sm-12 col-form-label mandatory-label"
[ngClass]="{'text-danger': scalingForm.invalid === true && submitted === true}">
{{'MANDATORYCHECK' | translate}}
<small class="form-text text-muted" *ngIf="selectedvnfId !== ''">vnfd-id : {{ selectedvnfId }}</small>
</div>
</div>
- <div class="form-group row">
+ <div class="form-group row mb-3">
<div class="col-sm-6">
<label for="vdu-id"> {{'VDUID' | translate}} *</label>
</div>
</ng-select>
</div>
</div>
- <div class="form-group row">
+ <div class="form-group row mb-3">
<div class="col-sm-6">
<label for="count-index"> {{'COUNTINDEX' | translate}} *</label>
</div>
</ng-select>
</div>
</div>
- <div class="form-group row">
+ <div class="form-group row mb-3">
<div class="col-sm-6">
<label for="memoryMB"> {{'MEMORYMB' | translate}} *</label>
</div>
[ngClass]="{ 'is-invalid': submitted && f.virtualMemory.errors }">
</div>
</div>
- <div class="form-group row">
+ <div class="form-group row mb-3">
<div class="col-sm-6">
<label for="storageGB"> {{'STORAGEGB' | translate}} *</label>
</div>
[ngClass]="{ 'is-invalid': submitted && f.sizeOfStorage.errors }">
</div>
</div>
- <div class="form-group row">
+ <div class="form-group row mb-3">
<div class="col-sm-6">
<label for="vcpucount"> {{'VCPUCOUNT' | translate}} *</label>
</div>
/**
* @file VerticalScaling Component
*/
-import { isNullOrUndefined } from 'util';
import { HttpHeaders } from '@angular/common/http';
import { Component, Injector, Input, OnInit } from '@angular/core';
import { AbstractControl, FormBuilder, FormGroup, Validators } from '@angular/forms';
import { environment } from 'environment';
import { VerticalScaling } from 'NSInstanceModel';
import { RestService } from 'RestService';
-import { SharedService } from 'SharedService';
+import { SharedService, isNullOrUndefined } from 'SharedService';
import { InstanceData, VDUR, VNFInstanceDetails } from 'VNFInstanceModel';
/**
<div class="btn-group list action" role="group">
<ng-template #popTitle>
<span class="text-primary"><strong>{{'PAGE.DASHBOARD.RUNNINGINSTANCES' | translate}}</strong></span>
- <button class="button-xs close" type="button" (click)="p.close()">
+ <button class="button-xs close-instances" type="button" (click)="p.close()">
<i class="fas fa-times-circle text-danger"></i>
</button>
</ng-template>
</ng-template>
<ng-template #graphTitle>
<span class="text-primary"><strong>{{'PAGE.VIMDETAILS.VIMRESOURCES' | translate}}</strong></span>
- <button class="button-xs close" type="button" (click)="chart.close()">
+ <button class="chart button-xs close" type="button" (click)="chart.close()">
<i class="fas fa-times-circle text-danger"></i>
</button>
</ng-template>
limitations under the License.
Author: KUMARAN M (kumaran.m@tataelxsi.co.in), RAJESH S (rajesh.s@tataelxsi.co.in), BARATH KUMAR R (barath.r@tataelxsi.co.in)
-*/
\ No newline at end of file
+*/
+.chart {
+ opacity: 1;
+ background-color: transparent;
+ border: 0;
+ position: absolute;
+ right: 10px;
+ top: 4px;
+ font-size: 1.31rem;
+}
+.list-group-item {
+ background-color: white;
+}
+.close-instances {
+ opacity: 1;
+ background-color: transparent;
+ border: 0;
+ position: absolute;
+ right: 10px;
+ bottom: 62px;
+ font-size: 1.31rem;
+}
\ No newline at end of file
</div>
<form [formGroup]="migrationForm" (ngSubmit)="triggerMigration()" autocomplete="off">
<div class="modal-body">
- <div class="form-group row">
+ <div class="form-group row mb-3">
<label class="col-sm-12 col-form-label mandatory-label"
[ngClass]="{'text-danger': migrationForm.invalid === true && submitted === true}">
{{'MANDATORYCHECK' | translate}}
<small class="form-text text-muted" *ngIf="selectedvnfId !== ''">vnfd-id : {{ selectedvnfId }}</small>
</div>
</div>
- <div class="form-group row">
+ <div class="form-group row mb-3">
<div class="col-sm-6">
<label for="vduid"> {{'VDUID' | translate}}</label>
</div>
</ng-select>
</div>
</div>
- <div class="form-group row">
+ <div class="form-group row mb-3">
<div class="col-sm-6">
<label for="countIndex"> {{'COUNTINDEX' | translate}}</label>
</div>
</ng-select>
</div>
</div>
- <div class="form-group row">
+ <div class="form-group row mb-3">
<div class="col-sm-6">
<label for="migrateToHost"> {{'MIGRATETOHOST' | translate}}</label>
</div>
/**
* @file Vm Migration Component
*/
-import { isNullOrUndefined } from 'util';
import { HttpHeaders } from '@angular/common/http';
import { Component, Injector, Input, OnInit } from '@angular/core';
import { AbstractControl, FormBuilder, FormGroup, Validators } from '@angular/forms';
import { environment } from 'environment';
import { VMMIGRATION } from 'NSInstanceModel';
import { RestService } from 'RestService';
-import { SharedService } from 'SharedService';
+import { SharedService, isNullOrUndefined } from 'SharedService';
import { InstanceData, VDUR, VNFInstanceDetails } from 'VNFInstanceModel';
/**
</div>
<div class="modal-footer">
<button (click)="closeModal('close')" class="btn btn-danger">{{'CANCEL' | translate }}</button>
- <button *ngIf="!action" (click)="closeModal('done')" class="btn btn-success">{{submitMessage}}</button>
- <button *ngIf="action" (click)="onSubmit()" class="btn btn-success">{{submitMessage}}</button>
+ <button class="btn btn-success text-white"
+ (click)="!action ? closeModal('done') : onSubmit()">{{submitMessage}}</button>
</div>
<app-loader [waitingMessage]="message" *ngIf="isLoad"></app-loader>
\ No newline at end of file
-->
<div class="row">
<div class="col-xs-12 col-sm-12 col-md-12 col-lg-12 col-xl-12">
- <div class="row d-flex flex-row justify-content-between px-3 py-2">
+ <div class="d-flex flex-row justify-content-between px-3 py-2">
<div class="d-flex align-items-center header-style">{{resourcesData.name}}</div>
<span class="button">
- <label class="switch ml-1">
+ <label class="switch ms-1">
<input type="checkbox" (change)="changeChartType($event.target.checked)">
<div class="slider round">
<span class="on">{{ 'PAGE.VIMDETAILS.DOUGHNUT' | translate }}</span>
</span>
</div>
<ng-container *ngFor="let showData of chartData">
- <div class="header-style ml-3 mt-2">{{showData.heading}}</div>
+ <div class="header-style ms-2 mt-2 px-3 py-1">{{showData.heading}}</div>
<div class="row mt-2">
<div class="col-xs-{{12/showData.length}} col-sm-{{12/showData.length}} col-md-{{12/showData.length}} col-lg-{{12/showData.length}} col-xl-{{12/showData.length}}"
*ngFor="let list of showData.data;let i = index;">
@import "../../../assets/scss/mixins/mixin.scss";
@import "../../../assets/scss/variable.scss";
.chartData-card {
+ background-color: $white;
word-wrap: break-word;
@include box-shadow(0px, 1px, 15px, 0px, rgba(69, 90, 100, 0.1));
@include transition(all, 0.2s, null, null);
Author: KUMARAN M (kumaran.m@tataelxsi.co.in), RAJESH S (rajesh.s@tataelxsi.co.in), BARATH KUMAR R (barath.r@tataelxsi.co.in)
-->
-<div class="row d-flex flex-row justify-content-between">
+<div class="d-flex flex-row justify-content-between">
<div class="col-sm-4">
<div class="d-flex align-items-center header-style">{{'PAGE.VIMDETAILS.VIMACCOUNTDETAILS' | translate}}</div>
</div>
- <div class="col-sm-8 text-right">
+ <div class="col-sm-8 text-end">
<span class="button">
<button class="btn btn-primary" type="button" placement="top" container="body"
ngbTooltip="{{'PAGE.VIMDETAILS.NEWVIM' | translate}}" routerLink="/vim/new">
</div>
</div>
</div>
-<div class="col-12">
+<div class="d-grid col-sm-12">
<button type="button" class="btn btn-block border-0 bg-light text-dark" (click)="isCollapsed = !isCollapsed"
[attr.aria-expanded]="!isCollapsed">
{{'PAGE.VIMDETAILS.CONFIGPARAMETERS' | translate}}
</div>
</div>
</div>
-<div class="modal-footer list border-0">
+<div class="modal-footer list border-0 mt-3">
<button (click)="onVimAccountBack()"
class="btn btn-danger pull-right">{{'PAGE.VIMDETAILS.BACKTOVIMACCOUNTS' | translate}}</button>
</div>
Author: KUMARAN M (kumaran.m@tataelxsi.co.in), RAJESH S (rajesh.s@tataelxsi.co.in), BARATH KUMAR R (barath.r@tataelxsi.co.in)
*/
+@import "../../../assets/scss/variable.scss";
+.text-dark {
+ color: $gray-800 !important;
+}
+.font-weight-bold {
+ font-weight: 700 !important;
+}
+button.bg-light:hover, button.bg-light:focus {
+ background-color: $paleblue !important;
+}
\ No newline at end of file
/**
* @file Info VIM Page
*/
-import { isNullOrUndefined } from 'util';
import { Component, Injector, OnInit } from '@angular/core';
import { ActivatedRoute, Router } from '@angular/router';
import { NgbModal } from '@ng-bootstrap/ng-bootstrap';
import { environment } from 'environment';
import * as HttpStatus from 'http-status-codes';
import { RestService } from 'RestService';
+import { isNullOrUndefined } from 'SharedService';
import { CONFIG, VimAccountDetails, VIMData } from 'VimAccountModel';
/**
Author: KUMARAN M (kumaran.m@tataelxsi.co.in), RAJESH S (rajesh.s@tataelxsi.co.in), BARATH KUMAR R (barath.r@tataelxsi.co.in)
-->
<form [formGroup]="vimNewAccountForm" (ngSubmit)="newVimAccountSubmit()" autocomplete="off">
- <div class="row d-flex flex-row justify-content-between">
+ <div class="d-flex flex-row justify-content-between">
<div *ngIf="vimID;else empty" class="d-flex align-items-center header-style">{{'PAGE.VIMDETAILS.EDITVIMACCOUNT'
| translate}} </div>
<ng-template #empty>
<div class="col-sm-3">
<label for="name">{{'PAGE.VIMDETAILS.NAME' | translate}}*</label>
</div>
- <div class="col-sm-3">
+ <div class="col-sm-3 mb-3">
<input autocomplete="off" class="form-control" placeholder="{{'PAGE.VIMDETAILS.NAME' | translate}}"
type="text" formControlName="name" id="name"
[ngClass]="{ 'is-invalid': submitted && f.name.errors }">
<div class="col-sm-3">
<label for="vim_tenant_name">{{'PAGE.VIMDETAILS.TENANTNAME' | translate}}*</label>
</div>
- <div class="col-sm-3">
+ <div class="col-sm-3 mb-3">
<input autocomplete="off" class="form-control"
placeholder="{{'PAGE.VIMDETAILS.TENANTNAME' | translate}}" type="text"
formControlName="vim_tenant_name" id="vim_tenant_name"
<div class="col-sm-3">
<label for="vim_type">{{'PAGE.VIMDETAILS.VIMTYPE' | translate}}*</label>
</div>
- <div class="col-sm-3">
+ <div class="col-sm-3 mb-3">
<ng-select bindLabel="title" bindValue="value" [items]="vimType" placeholder="{{'SELECT' | translate}}"
formControlName="vim_type" id="vim_type" [(ngModel)]="selectedVimType"
[addTag]="sharedService.addCustomTag" [ngClass]="{ 'is-invalid': submitted && f.vim_type.errors }"
<div class="col-sm-3">
<label for="description">{{'PAGE.VIMDETAILS.DESCRIPTION' | translate}}</label>
</div>
- <div class="col-sm-3">
+ <div class="col-sm-3 mb-3">
<textarea class="form-control" placeholder="{{'PAGE.VIMDETAILS.DESCRIPTION' | translate}}" type="text"
formControlName="description" id="description"></textarea>
</div>
<div class="col-sm-3">
<label for="vim_url">{{'PAGE.VIMDETAILS.VIMURL' | translate}}*</label>
</div>
- <div class="col-sm-3">
+ <div class="col-sm-3 mb-3">
<input autocomplete="off" class="form-control" placeholder="{{'PAGE.VIMDETAILS.VIMURL' | translate}}"
type="url" formControlName="vim_url" id="vim_url"
[ngClass]="{ 'is-invalid': submitted && f.vim_url.errors }">
<div class="col-sm-3">
<label for="schema_type">{{'PAGE.VIMDETAILS.SCHEMATYPE' | translate}}</label>
</div>
- <div class="col-sm-3">
+ <div class="col-sm-3 mb-3">
<input autocomplete="off" class="form-control"
placeholder="{{'PAGE.VIMDETAILS.SCHEMATYPE' | translate}}" type="text" formControlName="schema_type"
id="schema_type">
<div class="col-sm-3">
<label for="vim_user">{{'PAGE.VIMDETAILS.VIMUSERNAME' | translate}}*</label>
</div>
- <div class="col-sm-3">
+ <div class="col-sm-3 mb-3">
<input autocomplete="off" class="form-control"
placeholder="{{'PAGE.VIMDETAILS.VIMUSERNAME' | translate}}" type="text" formControlName="vim_user"
id="vim_user" [ngClass]="{ 'is-invalid': submitted && f.vim_user.errors }">
<div class="col-sm-3">
<label for="vim_password">{{'PAGE.VIMDETAILS.VIMPASSWORD' | translate}}*</label>
</div>
- <div class="col-sm-3">
+ <div class="col-sm-3 mb-3">
<input autocomplete="off" class="form-control" placeholder="VIM Password" type="password"
formControlName="vim_password" id="vim_password"
[ngClass]="{ 'is-invalid': submitted && f.vim_password.errors }">
<div class="col-sm-3">
<label for="location">{{'PAGE.VIMDETAILS.VIMLOCATION' | translate}}</label>
</div>
- <div class="col-sm-9 form-inline">
+ <div class="col-sm-9 form-inline mb-3">
<div class="input-group">
<input autocomplete="off" formControlName="locationName" type="text" class="form-control"
placeholder="{{'PAGE.VIMDETAILS.NAME' | translate}}"
<input autocomplete="off" formControlName="longitude" type="text" class="form-control"
placeholder="Longitude" [ngClass]="{ 'is-invalid': submitted && f.longitude.errors }">
</div>
- <small class="text-info mt-1 ml-1">{{'PAGE.VIM.LOCATIONINFO' | translate}}</small>
+ <small class="text-info mt-1 me-1">{{'PAGE.VIM.LOCATIONINFO' | translate}}</small>
</div>
</div>
<div class="row form-group content-style">
</div>
<div class="col-sm-3 form-group">
<div class="custom-file">
- <input [disabled]="!selectedVimType" type="file" #fileInput class="custom-file-input"
+ <input [disabled]="!selectedVimType" type="file" #fileInput class="fileupload custom-file-input"
(change)="filesDropped($event.target.files)" id="customFile">
- <label class="custom-file-label" #fileInputLabel for="customFile">
- {{'CHOOSEFILE' | translate}}
- </label>
</div>
<small class="text-info">{{'UPLOADCONFIGLABEL' | translate}}</small>
</div>
</div>
<div class="row" [hidden]="!selectedVimType">
- <div class="col-12">
+ <div class="d-grid col-12">
<button type="button" class="btn btn-block border-0 bg-light text-dark"
(click)="isCollapsed = !isCollapsed"
[attr.aria-expanded]="!isCollapsed">{{'PAGE.VIMDETAILS.CONFIGPARAMETERS' | translate}}</button>
<div id="configurationparameters" class="row collapse mt-3" [ngbCollapse]="isCollapsed">
<div class="col-sm-12">
<div class="ngx-codemirror new-vim" [hidden]="!selectedVimType">
- <div class="form-group" *ngIf="!vimID">
- <button type="button" class="btn btn-warning btn-sm mr-3" (click)="checkData()">
+ <div class="form-group mb-3" *ngIf="!vimID">
+ <button type="button" class="btn btn-warning btn-sm me-3" (click)="checkData()">
<i class="fa fa-clone" aria-hidden="true"></i>
{{'PAGE.VIMDETAILS.LOADSAMPLECONFIG' | translate}}</button>
<button type="button" class="btn btn-danger btn-sm" (click)="clearConfig()">
</div>
</div>
</div>
- <div class="modal-footer border-0">
+ <div class="modal-footer border-0 mb-3 mt-3 me-3">
<button type="button" (click)="onVimAccountBack()"
- class="btn btn-danger">{{'PAGE.VIMDETAILS.BACKTOVIMACCOUNTS' | translate}}</button>
+ class="btn btn-danger me-2">{{'PAGE.VIMDETAILS.BACKTOVIMACCOUNTS' | translate}}</button>
<button *ngIf="!vimID" type="submit" class="btn btn-primary">{{'CREATE' | translate}}</button>
<button *ngIf="vimID" type="submit" class="btn btn-primary">{{'UPDATE' | translate}}</button>
</div>
limitations under the License.
Author: KUMARAN M (kumaran.m@tataelxsi.co.in), RAJESH S (rajesh.s@tataelxsi.co.in), BARATH KUMAR R (barath.r@tataelxsi.co.in)
-*/
\ No newline at end of file
+*/
+@import "../../../assets/scss/variable.scss";
+.form-control:disabled {
+ background-color: var(--bs-secondary-bg) !important;
+ opacity: 1;
+}
+.d-grid {
+ margin-top: 40px;
+}
+.input-group {
+ width: 74%;
+}
+button.bg-light:hover, button.bg-light:focus {
+ background-color: $paleblue !important;
+ }
\ No newline at end of file
/**
* @file Vim Account Component.
*/
-import { isNullOrUndefined } from 'util';
import { HttpHeaders } from '@angular/common/http';
import { Component, ElementRef, Injector, OnInit, ViewChild } from '@angular/core';
import { AbstractControl, FormBuilder, FormGroup, Validators } from '@angular/forms';
import { environment } from 'environment';
import * as jsyaml from 'js-yaml';
import { RestService } from 'RestService';
-import { SharedService } from 'SharedService';
+import { SharedService, isNullOrUndefined } from 'SharedService';
import { VimAccountDetails } from 'VimAccountModel';
import { WarningComponent } from 'WarningComponent';
/**
Author: KUMARAN M (kumaran.m@tataelxsi.co.in), RAJESH S (rajesh.s@tataelxsi.co.in), BARATH KUMAR R (barath.r@tataelxsi.co.in)
-->
-<div class="row d-flex align-items-center justify-content-between">
+<div class="d-flex align-items-center justify-content-between">
<div class="col-sm-4">
<div class="d-flex align-items-center header-style">{{'VIMACCOUNTS' | translate}}</div>
</div>
- <div class="col-sm-8 text-right">
- <div class="btn-group list mr-2" role="group">
+ <div class="col-sm-8 text-end">
+ <div class="btn-group list me-2" role="group">
<button class="btn btn-primary" type="button" (click)="mapView()" placement="top" container="body"
ngbTooltip="{{'MAPVIEW' | translate}}" [hidden]="showList" [disabled]="vimData.length == 0">
<i class="fas fa-map-marker-alt"></i>
</span>
</div>
</div>
-<div class="row mt-2 mb-0 list-utilites-actions" [hidden]="showList">
- <div class="col-auto mr-auto">
+<div class="mt-2 mb-0 list-utilites-actions" [hidden]="showList">
+ <div class="col-auto me-auto">
<nav class="custom-items-config">
<span><i class="fas fa-clock text-warning"></i>{{operationalStateFirstStep}}</span>
<span><i class="fas fa-check-circle text-success"></i>{{operationalStateSecondStep}}</span>
<span><i class="fas fa-times-circle text-danger"></i>{{operationalStateThirdStep}}</span>
</nav>
</div>
- <page-per-row class="mr-2" (pagePerRow)="onChange($event)"></page-per-row>
+ <page-per-row class="me-2" (pagePerRow)="onChange($event)"></page-per-row>
<page-reload></page-reload>
</div>
<div class="smarttable-style bg-white mt-1" [hidden]="showList">
width: 100%;
.ol-popup {
@include background(null, $white, null, null, null);
- -webkit-filter: drop-shadow(0 1px 4px rgba(0,0,0,0.2));
- filter: drop-shadow(0 1px 4px rgba(0,0,0,0.2));
+ -webkit-filter: drop-shadow(0 1px 4px rgba(0, 0, 0, 0.2));
+ filter: drop-shadow(0 1px 4px rgba(0, 0, 0, 0.2));
@include border(all, 1, solid, $gray-80);
@include position_value(absolute, $top: null, $right: null, $bottom: 12px, $left: -50px);
@include wh-value(280px, null);
@include font-style(normal);
- @include font(null, .765625rem, 400);
+ @include font(null, 0.765625rem, 400);
@include line-height(1.5);
text-align: start;
text-decoration: none;
line-break: auto;
word-wrap: break-word;
@include roundedCorners(2px);
- &:after, &:before{
+ &:after,
+ &:before {
top: 100%;
@include border(all, 1, solid, transparent);
content: " ";
content: "✖";
}
}
+ .close {
+ opacity: 1;
+ background-color: transparent;
+ border: 0;
+ position: absolute;
+ right: 10px;
+ bottom: 213px;
+ font-size: 1.31rem;
+ }
}
\ No newline at end of file
valuePrepareFunction: (cell: VIMData, row: VIMData): string => {
if (row.operationalState === this.operationalStateFirstStep) {
return `<span class="icon-label" title="${row.operationalState}">
- <i class="fas fa-clock text-warning"></i>
- </span>`;
+ <i class="fas fa-clock text-warning"></i>
+ </span>`;
} else if (row.operationalState === this.operationalStateSecondStep) {
return `<span class="icon-label" title="${row.operationalState}">
- <i class="fas fa-check-circle text-success"></i>
- </span>`;
+ <i class="fas fa-check-circle text-success"></i>
+ </span>`;
} else if (row.operationalState === this.operationalStateThirdStep) {
return `<span class="icon-label" title="${row.operationalState}">
- <i class="fas fa-times-circle text-danger"></i>
- </span>`;
+ <i class="fas fa-times-circle text-danger"></i>
+ </span>`;
} else {
return `<span>${row.operationalState}</span>`;
}
}
}
});
- if (this.getLocation !== []) {
+ if (this.getLocation.length) {
this.getLocation.filter((loc: GetLocation) => {
if (loc.location !== '') {
if (loc.location !== ',,') {
this.popupData += '<ul class="list-unstyled m-2">';
const instnaceData: NSInstanceDetails[] = this.nsData.filter((item: NSInstanceDetails) => {
if (item.datacenter === feature.values_.Id) {
- this.popupData += '<li class="m-2"><a class="d-block text-truncate" target="_parent" href="instances/ns/' + item._id + '"><i class="fa-sitemap fas icons mr-1"></i>'
+ this.popupData += '<li class="m-2"><a class="d-block text-truncate" target="_parent" href="instances/ns/' + item._id + '"><i class="fa-sitemap fas icons me-1"></i>'
+ item.name + '</a></li>';
return item;
}
<label class="col-sm-12 col-form-label mandatory-label"
[ngClass]="{'text-danger': wimNewAccountForm.invalid === true && submitted === true}">{{'MANDATORYCHECK' | translate}}</label>
<label class="col-sm-4 col-form-label" for="name">{{'NAME' | translate}}*</label>
- <div class="col-sm-8">
+ <div class="col-sm-8 mb-3">
<input autocomplete="off" class="form-control" placeholder="{{'NAME' | translate}}" type="text"
formControlName="name" id="name" [ngClass]="{ 'is-invalid': submitted && f.name.errors }" required>
</div>
</div>
<div class="form-group row">
<label class="col-sm-4 col-form-label" for="wim_type">{{'TYPE' | translate}}*</label>
- <div class="col-sm-8">
+ <div class="col-sm-8 mb-3">
<ng-select bindLabel="title" bindValue="value" [items]="wimType" placeholder="{{'SELECT' | translate}}"
formControlName="wim_type" id="wim_type" [(ngModel)]="wimTypeMod" [addTag]="sharedService.addCustomTag"
[ngClass]="{ 'is-invalid': submitted && f.wim_type.errors }" required>
</div>
<div class="form-group row">
<label class="col-sm-4 col-form-label" for="wim_url">{{'URL' | translate}}*</label>
- <div class="col-sm-8">
+ <div class="col-sm-8 mb-3">
<input autocomplete="off" class="form-control" placeholder="{{'URL' | translate}}" type="url"
formControlName="wim_url" id="wim_url" [ngClass]="{ 'is-invalid': submitted && f.wim_url.errors }"
required>
</div>
<div class="form-group row">
<label class="col-sm-4 col-form-label" for="user">{{'PAGE.WIMACCOUNTS.USERNAME' | translate}}*</label>
- <div class="col-sm-8">
+ <div class="col-sm-8 mb-3">
<input autocomplete="off" class="form-control" placeholder="{{'PAGE.WIMACCOUNTS.USERNAME' | translate}}"
type="text" formControlName="user" id="user"
[ngClass]="{ 'is-invalid': submitted && f.user.errors }" required>
</div>
<div class="form-group row">
<label class="col-sm-4 col-form-label" for="password">{{'PAGE.WIMACCOUNTS.PASSWORD' | translate}}*</label>
- <div class="col-sm-8">
+ <div class="col-sm-8 mb-3">
<input autocomplete="off" class="form-control" placeholder="{{'PAGE.WIMACCOUNTS.PASSWORD' | translate}}"
type="password" formControlName="password" id="password"
[ngClass]="{ 'is-invalid': submitted && f.password.errors }" required>
</div>
<div class="form-group row">
<label class="col-sm-4 col-form-label" for="description">{{'DESCRIPTION' | translate}}</label>
- <div class="col-sm-8">
+ <div class="col-sm-8 mb-3">
<textarea class="form-control" placeholder="{{'DESCRIPTION' | translate}}" type="text"
formControlName="description" id="description"></textarea>
</div>
id="config"></textarea>
<div class="fileupload-text mt-1 mb-1">{{'FILEUPLOADLABEL' | translate}}</div>
<div class="custom-file">
- <input type="file" #fileInputConfig class="custom-file-input"
+ <input type="file" #fileInputConfig class="fileupload custom-file-input"
(change)="configFile($event.target.files)" id="customFile">
- <label class="custom-file-label" #fileInputConfigLabel for="customFile">{{'CHOOSEFILE' | translate}}</label>
</div>
</div>
</div>
/**
* @file WIM Account Component.
*/
-import { isNullOrUndefined } from 'util';
import { HttpHeaders } from '@angular/common/http';
import { Component, ElementRef, Injector, OnInit, ViewChild } from '@angular/core';
import { FormBuilder, FormControl, FormGroup, Validators } from '@angular/forms';
import { environment } from 'environment';
import * as jsyaml from 'js-yaml';
import { RestService } from 'RestService';
-import { SharedService } from 'SharedService';
+import { SharedService, isNullOrUndefined } from 'SharedService';
/**
* Creating component
Author: KUMARAN M (kumaran.m@tataelxsi.co.in), RAJESH S (rajesh.s@tataelxsi.co.in), BARATH KUMAR R (barath.r@tataelxsi.co.in)
-->
-<div class="row d-flex flex-row justify-content-between">
+<div class="d-flex flex-row justify-content-between">
<div class="d-flex align-items-center header-style">{{'WIMACCOUNTS' | translate}}</div>
<span class="button">
<button class="btn btn-primary" type="button" placement="top" container="body" ngbTooltip="{{'PAGE.WIMACCOUNTS.NEWWIM' | translate}}"
</button>
</span>
</div>
-<div class="row mt-2 mb-0 list-utilites-actions">
- <div class="col-auto mr-auto">
+<div class="mt-2 mb-0 list-utilites-actions">
+ <div class="col-auto me-auto">
<nav class="custom-items-config">
<span><i class="fas fa-clock text-warning"></i>{{operationalStateFirstStep}}</span>
<span><i class="fas fa-check-circle text-success"></i>{{operationalStateSecondStep}}</span>
<span><i class="fas fa-times-circle text-danger"></i>{{operationalStateThirdStep}}</span>
</nav>
</div>
- <page-per-row class="mr-2" (pagePerRow)="onChange($event)"></page-per-row>
+ <page-per-row class="me-2" (pagePerRow)="onChange($event)"></page-per-row>
<page-reload></page-reload>
</div>
<div class="smarttable-style bg-white mt-1">
</button>
</div>
<div class="modal-body modal-body-custom-height p-0">
- <table class="table table-striped table-layout-fixed mb-0" *ngIf="wimDetails">
+ <table class="table table-borderless table-layout-fixed mb-0" *ngIf="wimDetails">
<tr>
<td colspan="2">
<b>{{'ID' | translate}}:</b> {{(wimDetails._id)?wimDetails._id:''}}
</tr>
<tr>
<td>
- <b>{{'OPERATIONALSTATE' | translate}}:</b><span class="ml-1 badge" [ngClass]="{'badge-warning text-white':wimDetails._admin.operationalState === operationalStateFirstStep,
- 'badge-success':wimDetails._admin.operationalState === operationalStateSecondStep,
- 'badge-danger':wimDetails._admin.operationalState === operationalStateThirdStep}">
+ <b>{{'OPERATIONALSTATE' | translate}}:</b><span class="ms-1 badge" [ngClass]="{'badge bg-warning text-white p-1':wimDetails._admin.operationalState === operationalStateFirstStep,
+ 'badge bg-success text-white p-1':wimDetails._admin.operationalState === operationalStateSecondStep,
+ 'badge bg-danger text-white p-1':wimDetails._admin.operationalState === operationalStateThirdStep}">
{{(wimDetails._admin.operationalState)?wimDetails._admin.operationalState:''}}
</span>
</td>
limitations under the License.
Author: KUMARAN M (kumaran.m@tataelxsi.co.in), RAJESH S (rajesh.s@tataelxsi.co.in), BARATH KUMAR R (barath.r@tataelxsi.co.in)
-*/
\ No newline at end of file
+*/
+@import "../../../assets/scss/variable.scss";
+.table thead th {
+ vertical-align: bottom;
+ border-bottom: 2px solid rgba(0, 0, 0, .1);
+ }
+ .table th, .table td {
+ padding: 1rem;
+ vertical-align: top;
+ border-top: 1px solid rgba(0, 0, 0, .1);
+ border-bottom: transparent;
+ }
+ .table b {
+ background: none;
+ color: $body-color;
+ padding-right: 0px;
+ padding-left: 0px;
+ }
\ No newline at end of file
"HEALING": "Manuelle Heilung",
"DAY1OPERATION": "Tag-1 Operation",
"SELECTVDU": "Wählen VDU",
+ "DATE": "Datum",
"PAGE": {
"DASHBOARD": {
"DASHBOARD": "Instrumententafel",
"HEALING": "Manual Healing",
"DAY1OPERATION": "Day1 operation",
"SELECTVDU": "Select VDU",
+ "DATE": "Date",
"PAGE": {
"DASHBOARD": {
"DASHBOARD": "Dashboard",
"HEALING": "Curación Manual",
"DAY1OPERATION": "Operación dÃa 1",
"SELECTVDU": "Seleccionar VDU",
+ "DATE":"Fecha",
"PAGE": {
"DASHBOARD": {
"DASHBOARD": "Tablero",
"HEALING": "Cura Manual",
"DAY1OPERATION": "Operação dia 1",
"SELECTVDU": "Selecione VDU",
+ "DATE":"Data",
"PAGE": {
"DASHBOARD": {
"DASHBOARD": "painel de controle",
.btn-danger:focus {
@include box-shadow(0, 0, 0, 0.2rem, lighten($danger, 30%) !important);
}
+.btn-success {
+ --bs-btn-hover-bg: #198754;
+}
+.btn-danger {
+ --bs-btn-hover-bg: #cb3424;
+ --bs-btn-color: #fff;
+ --bs-btn-hover-color: #fff;
+ --bs-btn-active-bg: #cb3424;
+ --bs-btn-active-color: #fff;
+}
body,
.list-overflow,
.scroll-box,
@include background(null, $theme-bg-color !important, null, null, null);
}
a {
+ text-decoration: none;
color: $primary;
&:hover,
&:focus {
}
&:disabled {
cursor: not-allowed;
+ background-color: grey;
}
}
}
);
}
.form-control {
+ color: #4f5467;
+ border-radius: 4px;
+ background-color: $white;
@include roundedCorners(4);
@include font(null, 12px, null);
&::placeholder {
color: $gray-400;
}
+ background-color: $white;
}
.header-style {
@include font(null, 1.2rem, 700);
.cursor-pointer {
cursor: pointer;
}
- .mr-top-5 {
+ .me-top-5 {
@include margin-value-percentage(5px, auto, auto, auto);
}
.padLeft0 {
}
.close {
opacity: 1 !important;
+ background-color: transparent;
+ border: 0;
+ position: absolute;
+ right: 10px;
+ font-size: 1.3125rem;
}
.closeVersion {
text-shadow: none;
}
.roles-section {
.card {
+ .card-body {
+ background-color: #fff;
+ }
.bg-secondary {
+ padding: 11px;
@include background(null, $gray-400 !important, null, null, null);
}
}
}
.juju-section {
+ .col-form-label {
+ position: relative;
+ bottom: 3px;
+ }
.card {
@include roundedCorners(4);
margin-bottom: 0.25rem;
color: $white;
}
}
+ .card-header {
+ padding: 0.75rem 1.25rem;
+ border-top-left-radius: 4px;
+ border-top-right-radius: 4px;
+ }
.card-body {
+ border-radius: 2px;
.seconds-btn-group .active {
color: $white;
@include background(null, $primary !important, null, null, null);
@include padding-value(5, 5, 5, 5);
border-top: 0;
table {
+ th,
+ td {
+ color: $body-color;
+ }
thead th {
font-size: 12px;
+ color: $body-color;
}
tbody th i.active-icon {
font-size: 10px;
}
}
}
+ background-color: #fff;
}
}
.card {
@include roundedCorners(3);
.custom-card-body {
@include padding-value(15, 15, 15, 15);
+ background-color: #fff;
}
}
table-cell-default-editor select-editor select {
@include roundedCorners(3);
}
/** Model Popup-Design **/
+ .modal-header {
+ .close {
+ top: 10px;
+ }
+ }
+ .modal-content {
+ background-color: #fff;
+ }
.modal-body-custom-height {
+ background-color: #fff !important;
+ color: $body-color;
max-height: 65vh;
overflow-y: auto;
}
}
/** Popover Header **/
.popover-header {
+ margin-top: 7px;
color: $primary;
@include background(null, $theme-bg-color, null, null, null);
}
/** Vim Show running instance Details **/
.runninginstances {
width: 200px;
+ margin-top: 10px;
.popover-body {
max-height: 200px;
overflow-y: scroll;
+ background-color: $white !important;
}
}
.resources-chart-popover {
+ margin-top: 4px;
max-width: 60% !important;
width: 600px !important;
@include font-family("Roboto");
.popover-body {
max-height: 60vh;
overflow-y: scroll;
+ background-color: #fff !important;
}
}
/****************************************************************************/
/************************** Smart table custom design ***********************/
/****************************************************************************/
ng2-smart-table {
+ background-color: #fff;
+ background-color: none;
@include font(null, 15px, null);
color: $gray-700;
.form-control {
}
}
.ng2-smart-filter {
+ background-color: #fff;
@include wh-value(null, calc(2rem + 2px) !important);
@include font(null, 12px, null);
margin-top: 6px;
}
+ input {
+ background-color: #fff !important;
+ }
table.list-data {
tr td,
tr th {
@include padding-value(2, 10, 2, 10);
vertical-align: middle !important;
+ background-color: #fff;
+ color: grey;
+ }
+ input[type="checkbox"] {
+ padding: 6px 6px;
+ border-color: rgba(0, 0, 0, 0.5);
+ &:checked {
+ background-color: $blue !important;
+ border: black;
+ }
}
tbody {
tr.selected {
default-table-filter {
select-filter {
select.form-control {
+ background-color: #fff !important;
@include flexbox(inline-block, null, null, null, null, null);
@include wh-value(null, calc(1.5rem + 2px) !important);
vertical-align: middle;
}
input-filter {
input[type="text"] {
+ background-color: #fff;
@include position_value(relative, null, null, null, null);
}
&:after {
+ color: #afb5c1;
@include position_value(relative, -26px, null, null, 100%);
content: "\f002";
@include font("Font Awesome 5 Free", 10px, null);
}
}
.ng2-smart-page-link {
+ background-color: #fff;
+ box-shadow: none;
@include font(null, 12px !important, null);
&.page-link {
text-align: center;
/*********************** List Action Dropdown section ***********************/
/****************************************************************************/
.list-action-dropdown {
+ background-color: #fff;
@include border(all, 1, solid, $primary);
@include padding-value(0, 0, 0, 0);
+ margin-top: 3px;
button.btn.btn-primary {
@include background(null, transparent, null, null, null);
@include padding-value(8, 8, 8, 8);
@include roundedCorners(0);
+ background-color: #fff;
color: $primary;
&:hover {
@include background(null, $primary, null, null, null);
/*********************** Custom tabel design in topology ********************/
/****************************************************************************/
.custom-table {
+ border: 1px solid rgba(0, 0, 0, 0.1);
td:first-child {
@include font(null, null, bold);
text-align: right;
}
th,
td {
+ border: 1px solid rgba(0, 0, 0, 0.1);
@include padding-value(5, 7, 5, 7);
@include font(null, 10px, null);
@include line-height(15px);
/******************** Custom nav section for default status *****************/
/****************************************************************************/
.list-utilites-actions {
+ margin-left: 10px;
@include flexbox(flex, null, row, null, center, null);
nav.custom-items-config {
@include position_value(relative, null, null, null, null);
/****************************************************************************/
/************************* File upload custom design ************************/
/****************************************************************************/
+ .fileupload {
+ border: 1px solid;
+ border: 1px solid;
+ border-color: #054c8c;
+ border-radius: 4px;
+ }
+ input[type="file"] {
+ width: 100%;
+ }
+ input[type="file"]::file-selector-button {
+ border: none;
+ background: #054c8c;
+ padding: 7px 10px;
+ border-radius: 2px;
+ color: #fff;
+ }
.custom-file-label {
color: $primary;
@include roundedCorners(4);
@include flexbox(flex, null, null, null, center, null);
border: none;
.span-overflow-text {
+ color: $black;
@include wh-value(90%, null);
white-space: nowrap;
overflow: hidden;
fieldset {
@include border(all, 1, solid, $primary);
legend {
+ float: none;
@include padding-value(0, 5, 0, 5);
@include font(null, 15px, null);
color: $primary;
@include wh-value(25%, null);
}
}
+ .font-weight-bold {
+ font-weight: 700 !important;
+ }
}
.btn-icon {
@include wh-value(36px, 36px);
}
}
+.custom-select {
+ background-color: #fff !important;
+ padding: 0.375rem 1.75rem 0.375rem 0.75rem;
+ @include background(
+ url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='100' height='10' viewBox='0 0 10 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e"),
+ var(--input-bg-color),
+ null,
+ no-repeat,
+ 0px 10px
+ );
+}
/****************************************************************************/
/************************** HEALING STYLE ***********************************/
/****************************************************************************/
.form-group {
margin-bottom: 1px;
+ .row {
+ margin-bottom: 16px;
+ }
}
.col-sm-1 {
left: 79px;
}
}
+
+.table thead th {
+ vertical-align: bottom;
+ border-bottom: 2px solid rgba(0, 0, 0, 0.1);
+}
+.table th,
+.table td {
+ background-color: #fff;
+ padding: 5px;
+ vertical-align: top;
+ border-top: 1px solid rgba(0, 0, 0, 0.1);
+ border-bottom: transparent;
+}
+.table b {
+ background: none;
+ color: $body-color;
+ padding-right: 0px;
+ padding-left: 0px;
+}
@import "../../../node_modules/angular-notifier/styles/types/type-default.scss";
@import "../../../node_modules/angular-notifier/styles/types/type-info.scss";
/*toastr styles*/
-@import '~ngx-toastr/toastr.css';
\ No newline at end of file
+@import '/node_modules/ngx-toastr/toastr';
\ No newline at end of file
$cyan: #4fc3f7 !default;
$grayish-red: #c1bfbf !default;
$white-smoke: #f1f1f1 !default;
+$paleblue: #c8e1f9 !default;
$text-muted: $gray-500 !default;
$colors: (
"blue": $blue,
},
{
liClass: 'round-edge-top-3',
- anchorTagClass: 'parentlink round-edge-top-3 mr-top-5',
+ anchorTagClass: 'parentlink round-edge-top-3 me-top-5',
clickFunction: 'packages',
routerLink: '/packages',
routerLinkActive: ['menu-open', 'parentactive'],
]
},
{
- liClass: 'round-edge-top-3 round-edge-bottom-3 mr-top-5',
+ liClass: 'round-edge-top-3 round-edge-bottom-3 me-top-5',
anchorTagClass: 'link round-edge-top-3 round-edge-bottom-3 individual',
clickFunction: 'nosubmenu',
routerLink: '/sdn/details',
isChildExists: false
},
{
- liClass: 'round-edge-top-3 round-edge-bottom-3 mr-top-5',
+ liClass: 'round-edge-top-3 round-edge-bottom-3 me-top-5',
anchorTagClass: 'link round-edge-top-3 round-edge-bottom-3 individual',
clickFunction: 'nosubmenu',
routerLink: '/vim',
isChildExists: false
},
{
- liClass: 'round-edge-top-3 round-edge-bottom-3 mr-top-5',
+ liClass: 'round-edge-top-3 round-edge-bottom-3 me-top-5',
anchorTagClass: 'parentlink round-edge-top-3 round-edge-bottom-3',
clickFunction: 'k8s',
routerLink: '/k8s',
]
},
{
- liClass: 'round-edge-top-3 round-edge-bottom-3 mr-top-5',
+ liClass: 'round-edge-top-3 round-edge-bottom-3 me-top-5',
anchorTagClass: 'link round-edge-top-3 round-edge-bottom-3 individual',
clickFunction: 'nosubmenu',
routerLink: '/repos/details',
isChildExists: false
},
{
- liClass: 'round-edge-top-3 round-edge-bottom-3 mr-top-5',
+ liClass: 'round-edge-top-3 round-edge-bottom-3 me-top-5',
anchorTagClass: 'link round-edge-top-3 round-edge-bottom-3 individual',
clickFunction: 'nosubmenu',
routerLink: '/wim/details',
* @Injectable takes a metadata object that tells Angular how to compile and run module code
*/
@Injectable()
+// eslint-disable-next-line deprecation/deprecation
export class AcessGuardService implements CanLoad {
/**
* check if module can be loaded
* @Injectable takes a metadata object that tells Angular how to compile and run module code
*/
@Injectable()
+// eslint-disable-next-line deprecation/deprecation
export class AuthGuardService implements CanActivate {
/** Holds teh instance of AuthService class of type AuthService @private */
private router: Router;
/**
* @file Auth service
*/
-import { isNullOrUndefined } from 'util';
import { HttpHeaders } from '@angular/common/http';
import { Injectable, Injector } from '@angular/core';
import { Router } from '@angular/router';
import { environment } from 'environment';
import { BehaviorSubject, Observable } from 'rxjs';
import { map } from 'rxjs/operators';
+import { isNullOrUndefined } from 'SharedService';
import { SharedService } from 'SharedService';
import { ProjectModel } from '../models/VNFDModel';
import { RestService } from './RestService';
* @file Provider for REST Service
*/
-import { isNullOrUndefined } from 'util';
import { HttpClient, HttpHeaders } from '@angular/common/http';
import { Injectable } from '@angular/core';
import { NgbModal } from '@ng-bootstrap/ng-bootstrap';
private http: HttpClient;
/** API URL. Disabled tslint since server doesn't support https protocol */
private apiURL: string = '';
+ /** Method to handle null or undefined @private */
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
+ private isNullOrUndefined = (data: any): boolean => data === null || data === undefined;
/** Notifier service to popup notification @private */
private notifierService: NotifierService;
/** Instance for active modal service @public */
public getResource(apiURL: string, httpHeaders?: { headers: HttpHeaders }): Observable<{}> {
const getRequest: APIURLHEADER = this.getHttpoptions(apiURL);
- if (!isNullOrUndefined(httpHeaders)) {
+ if (!this.isNullOrUndefined(httpHeaders)) {
return this.http.get(apiURL, httpHeaders);
} else {
return this.http.get(getRequest.url, getRequest.httpOptions);
public postResource(apiURLHeader: { url: string, httpOptions?: { headers: HttpHeaders } }, payload: {}): Observable<{}> {
const getRequest: APIURLHEADER = this.getHttpoptions(apiURLHeader.url);
- if (!isNullOrUndefined(apiURLHeader.httpOptions)) {
+ if (!this.isNullOrUndefined(apiURLHeader.httpOptions)) {
return this.http.post(apiURLHeader.url, payload, apiURLHeader.httpOptions);
} else {
return this.http.post(getRequest.url, payload, getRequest.httpOptions);
public patchResource(apiURLHeader: { url: string, httpOptions?: { headers: HttpHeaders } }, payload: {}): Observable<object> {
const getRequest: APIURLHEADER = this.getHttpoptions(apiURLHeader.url);
- if (!isNullOrUndefined(apiURLHeader.httpOptions)) {
+ if (!this.isNullOrUndefined(apiURLHeader.httpOptions)) {
return this.http.patch(apiURLHeader.url, payload, apiURLHeader.httpOptions);
} else {
return this.http.patch(getRequest.url, payload, getRequest.httpOptions);
public putResource(apiURLHeader: { url: string, httpOptions?: { headers: HttpHeaders } }, payload: {}): Observable<object> {
const getRequest: APIURLHEADER = this.getHttpoptions(apiURLHeader.url);
- if (!isNullOrUndefined(apiURLHeader.httpOptions)) {
+ if (!this.isNullOrUndefined(apiURLHeader.httpOptions)) {
return this.http.put(apiURLHeader.url, payload, apiURLHeader.httpOptions);
} else {
return this.http.put(getRequest.url, payload, getRequest.httpOptions);
public deleteResource(apiURL: string, httpHeaders?: { headers: HttpHeaders }): Observable<object> {
const getRequest: APIURLHEADER = this.getHttpoptions(apiURL);
- if (!isNullOrUndefined(httpHeaders)) {
+ if (!this.isNullOrUndefined(httpHeaders)) {
return this.http.delete(apiURL, httpHeaders);
} else {
return this.http.delete(getRequest.url, getRequest.httpOptions);
/**
* @file Provider for Shared Service
*/
-import { isNullOrUndefined } from 'util';
import { HttpErrorResponse, HttpHeaders } from '@angular/common/http';
import { EventEmitter, Injectable, Output } from '@angular/core';
import { FormArray, FormGroup } from '@angular/forms';
};
}
}
+
+/** Method to handle null or undefined @public */
+// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types
+export const isNullOrUndefined = (data: any): boolean => data === null || data === undefined;
+
} from '@angular/platform-browser-dynamic/testing';
import 'zone.js/dist/zone-testing';
-/** const variable require */
-// eslint-disable-next-line @typescript-eslint/no-explicit-any
-declare const require: any;
-
// First, initialize the Angular testing environment.
getTestBed().initTestEnvironment(
BrowserDynamicTestingModule,
teardown: { destroyAfterEach: false }
}
);
-
-/** const variable context */
-// Then we find all the tests.
-const context = require.context('./', true, /\.spec\.ts$/);
-// And load the modules.
-context.keys().map(context);
{
"compileOnSave": false,
"compilerOptions": {
- "resolveJsonModule": true,
- "allowSyntheticDefaultImports": true,
- "baseUrl": ".",
- "downlevelIteration": true,
- "outDir": "./dist/out-tsc",
- "sourceMap": true,
- "declaration": false,
- "module": "es2020",
- "moduleResolution": "node",
- "emitDecoratorMetadata": true,
- "experimentalDecorators": true,
- "importHelpers": true,
- "target": "es2020",
- "types": [
- "node"
- ],
- "typeRoots": [
- "node_modules/@types"
- ],
- "lib": [
- "es2018",
- "dom"
- ],
- "paths": {
- "CommonModel": ["src/models/CommonModel"],
- "environment": ["src/environments/environment"],
- "AuthInterceptorService": ["src/services/AuthInterceptorService"],
- "RestService": ["src/services/RestService"],
- "SharedService": ["src/services/SharedService"],
- "ProjectService": ["src/services/ProjectService"],
- "DataService": ["src/services/DataService"],
- "AuthenticationService": ["src/services/AuthenticationService"],
- "AuthGuardService": ["src/services/AuthGuardService"],
- "AcessGuardService": ["src/services/AcessGuardService"],
- "DeviceCheckService": ["src/services/DeviceCheckService"],
- "NSDModel":["src/models/NSDModel"],
- "VimAccountModel" : ["src/models/VimAccountModel"],
- "LayoutComponent": ["src/app/layouts/LayoutComponent"],
- "SidebarComponent": ["src/app/layouts/sidebar/SidebarComponent"],
- "HeaderComponent": ["src/app/layouts/header/HeaderComponent"],
- "UserSettingsComponent": ["src/app/user-settings/UserSettingsComponent"],
- "LoginComponent": ["src/app/login/LoginComponent"],
- "DashboardComponent": ["src/app/dashboard/DashboardComponent"],
- "NSPackages" : ["src/app/packages/ns-packages/NSPackagesComponent"],
- "NsPackagesAction": ["src/app/utilities/ns-packages-action/NsPackagesActionComponent"],
- "InstantiateNs": ["src/app/packages/instantiate-ns/InstantiateNsComponent"],
- "ShowContent": ["src/app/packages/show-content/ShowContentComponent"],
- "DeleteComponent": ["src/app/utilities/delete/DeleteComponent"],
- "EditPackagesComponent": ["src/app/utilities/edit-packages/EditPackagesComponent"],
- "NetsliceTemplate":["src/app/packages/netslice-template/NetsliceTemplateComponent"],
- "DragDirective": ["src/app/utilities/dragDropUpload/DragDirective"],
- "NSComposer": ["src/app/packages/ns-packages/ns-composer/NSComposerComponent"],
- "VNFComposer": ["src/app/packages/ns-packages/vnf-composer/VNFComposerComponent"],
- "Packages":["src/app/packages/PackagesComponent"],
- "VNFPackages": ["src/app/packages/vnf-packages/VNFPackagesComponent"],
- "VNFDModel": ["src/models/VNFDModel"],
- "VNFPackagesAction" :["src/app/utilities/vnf-packages-action/VNFPackagesActionComponent"],
- "NetworkSliceModel" : ["src/models/NetworkSliceModel"],
- "NetslicePackagesAction" : ["src/app/utilities/netslice-packages-action/NetslicePackagesActionComponent"],
- "PageNotFound" : ["src/app/page-not-found/PageNotFoundComponent"],
- "ProjectsModule" : ["src/app/projects/ProjectsModule"],
- "ProjectModel" : ["src/models/ProjectModel"],
- "ProjectsComponent" : ["src/app/projects/ProjectsComponent"],
- "ProjectCreateUpdate" : ["src/app/projects/project-create-update/ProjectCreateUpdateComponent"],
- "ProjectsAction": ["src/app/utilities/projects-action/ProjectsActionComponent"],
- "BreadCrumb": ["src/app/layouts/breadcrumb/BreadcrumbComponent"],
- "VNFDEdit": ["src/app/packages/vnfd-edit/VNFDEditComponent"],
- "VNFInstanceModel": ["src/models/VNFInstanceModel"],
- "InstancesComponent": ["src/app/instances/InstancesComponent"],
- "VNFInstancesComponent": ["src/app/instances/vnf-instances/VNFInstancesComponent"],
- "NSInstancesComponent": ["src/app/instances/ns-instances/NSInstancesComponent"],
- "HistoryOperationsComponent": ["src/app/instances/ns-history-operations/HistoryOperationsComponent"],
- "NetsliceInstancesComponent": ["src/app/instances/netslice-instances/NetsliceInstancesComponent"],
- "VNFInstancesActionComponent": ["src/app/utilities/vnf-instances-action/VNFInstancesActionComponent"],
- "NSInstancesActionComponent": ["src/app/utilities/ns-instances-action/NSInstancesActionComponent"],
- "NetsliceInstancesActionComponent": ["src/app/utilities/netslice-instances-action/NetsliceInstancesActionComponent"],
- "NSInstanceModel": ["src/models/NSInstanceModel"],
- "ShowInfoComponent": ["src/app/utilities/show-info/ShowInfoComponent"],
- "NSTopologyComponent": ["src/app/instances/ns-topology/NSTopologyComponent"],
- "NSTopologyModel": ["src/models/NSTopologyModel"],
- "SDNControllerComponent": ["src/app/sdn-controller/SDNControllerComponent"],
- "SDNControllerDetailsComponent": ["src/app/sdn-controller/sdn-controller-details/SDNControllerDetailsComponent"],
- "SDNControllerInfoComponent": ["src/app/sdn-controller/sdn-controller-info/SDNControllerInfoComponent"],
- "SDNControllerActionComponent": ["src/app/utilities/sdn-controller-action/SDNControllerActionComponent"],
- "NewSDNControllerComponent": ["src/app/sdn-controller/new-sdn-controller/NewSDNControllerComponent"],
- "SDNControllerModel": ["src/models/SDNControllerModel"],
- "UserModel": ["src/models/UserModel"],
- "UsersComponent": ["src/app/users/UsersComponent"],
- "UserDetailsComponent": ["src/app/users/user-details/UserDetailsComponent"],
- "AddEditUserComponent": ["src/app/users/add-user/AddEditUserComponent"],
- "UsersActionComponent": ["src/app/utilities/users-action/UsersActionComponent"],
- "ProjectRoleComponent": ["src/app/users/project-role/ProjectRoleComponent"],
- "PagePerRow": ["src/app/utilities/page-per-row/PagePerRow"],
- "PagePerRowModule": ["src/app/utilities/page-per-row/PagePerRowModule"],
- "VimAccountsModule": ["src/app/vim-accounts/VimAccountsModule"],
- "VimAccountsComponent": ["src/app/vim-accounts/VimAccountsComponent"],
- "VimAccountDetails": ["src/app/vim-accounts/vim-account-details/VimAccountDetailsComponent"],
- "NewVimaccount": ["src/app/vim-accounts/new-vimaccount/NewVimaccountComponent"],
- "InfoVim": ["src/app/vim-accounts/info-vim/InfoVimComponent"],
- "VimAccountsAction": ["src/app/utilities/vim-accounts-action/VimAccountsActionComponent"],
- "InstantiateNetSliceTemplate":["src/app/packages/instantiate-net-slice-template/InstantiateNetSliceTemplateComponent"],
- "LoaderComponent": ["src/app/utilities/loader/LoaderComponent"],
- "LoaderModule": ["src/app/utilities/loader/LoaderModule"],
- "NSPrimitiveComponent": ["src/app/instances/ns-primitive/NSPrimitiveComponent"],
- "ConfirmationTopology": ["src/app/utilities/confirmation-topology/ConfirmationTopologyComponent"],
- "ComposePackages": ["src/app/utilities/compose-packages/ComposePackages"],
- "WIMAccountsAction": ["src/app/utilities/wim-accounts-action/WIMAccountsActionComponent"],
- "WIMAccountsModule": ["src/app/wim-accounts/WIMAccountsModule"],
- "WIMAccountsComponent": ["src/app/wim-accounts/WIMAccountsComponent"],
- "WIMAccountDetails": ["src/app/wim-accounts/wim-account-details/WIMAccountDetailsComponent"],
- "NewWIMAccount": ["src/app/wim-accounts/new-wim-account/NewWIMAccountComponent"],
- "WIMAccountInfo": ["src/app/wim-accounts/wim-account-info/WIMAccountInfoComponent"],
- "WIMAccountModel": ["src/models/WIMAccountModel"],
- "Roles": ["src/app/roles/RolesComponent"],
- "RolesDetails": ["src/app/roles/roles-details/RolesDetailsComponent"],
- "RolesAction": ["src/app/utilities/roles-action/RolesActionComponent"],
- "RolesCreateEdit": ["src/app/roles/roles-create-edit/RolesCreateEditComponent"],
- "RolesModel": ["src/models/RoleModel"],
- "PDUInstancesComponent": ["src/app/instances/pdu-instances/PDUInstancesComponent"],
- "PDUInstanceModel": ["src/models/PDUInstanceModel"],
- "PDUInstancesActionComponent": ["src/app/utilities/pdu-instances-action/PDUInstancesActionComponent"],
- "AddPDUInstancesComponent": ["src/app/instances/pdu-instances/add-pdu-instances/AddPDUInstancesComponent"],
- "ClonePackage": ["src/app/utilities/clone-package/ClonePackageComponent"],
- "K8sComponent": ["src/app/k8s/K8sComponent"],
- "K8sClusterComponent": ["src/app/k8s/k8scluster/K8sClusterComponent"],
- "K8sRepositoryComponent":["src/app/k8s/k8srepository/K8sRepositoryComponent"],
- "K8sActionComponent": ["src/app/k8s/k8s-action/K8sActionComponent"],
- "K8sModel": ["src/models/K8sModel"],
- "K8sAddClusterComponent": ["src/app/k8s/k8s-add-cluster/K8sAddClusterComponent"],
- "K8sAddRepoComponent": ["src/app/k8s/k8s-add-repo/K8sAddRepoComponent"],
- "SwitchProjectComponent": ["src/app/utilities/switch-project/SwitchProjectComponent"],
- "ProjectLinkComponent":["src/app/utilities/project-link/ProjectLinkComponent"],
- "PageReload": ["src/app/utilities/page-reload/PageReload"],
- "PageReloadModule": ["src/app/utilities/page-reload/PageReloadModule"],
- "GoToTopDirective": ["src/directive/GoToTopDirective"],
- "VNFLinkComponent": ["src/app/instances/vnf-instances/vnf-link/VNFLinkComponent"],
- "PACKAGEJSON": ["package.json"],
- "OsmRepositories" : ["src/app/osm-repositories/OsmRepositoriesComponent"],
- "OsmRepositoriesDetails":["src/app/osm-repositories/osm-repositories-details/OsmRepositoriesDetailsComponent"],
- "OsmRepositoriesAction" : ["src/app/utilities/osm-repositories-action/OsmRepositoriesActionComponent"],
- "OsmRepoModel": ["src/models/OsmRepoModel"],
- "OsmRepoCreateUpdate": ["src/app/osm-repositories/osm-repo-create-update/OsmRepoCreateUpdateComponent"],
- "ScalingComponent": ["src/app/utilities/scaling/ScalingComponent"],
- "OperationalViewComponent": ["src/app/operational-view/OperationalViewComponent"],
- "OperationalModel": ["src/models/OperationalModel"],
- "OperationalAppConfigsComponent": ["src/app/operational-view/operational-view-app-configs/OperationalViewAppConfigsComponent"],
- "OperationalAppActionsComponent": ["src/app/operational-view/operational-view-app-actions/OperationalViewAppActionsComponent"],
- "OperationalAppExecutedActionsComponent" : ["src/app/operational-view/operational-view-app-executed-actions/OperationalViewAppExecutedActionsComponent"],
- "ResourcesOverviewComponent": ["src/app/vim-accounts/Resources-Overview/ResourcesOverviewComponent"],
- "SharedModule": ["src/app/vim-accounts/Resources-Overview/SharedModule"],
- "ChangePasswordComponent": ["src/app/utilities/change-password/ChangePasswordComponent"],
- "ChangePasswordModule": ["src/app/utilities/change-password/ChangePasswordModule"],
- "VmMigrationComponent": ["src/app/utilities/vm-migration/VmMigrationComponent"],
- "NsUpdateComponent": ["src/app/utilities/ns-update/NsUpdateComponent"],
- "WarningComponent": ["src/app/utilities/warning/WarningComponent"],
- "StartStopRebuildComponent": ["src/app/utilities/start-stop-rebuild/StartStopRebuildComponent"],
- "VerticalScalingComponent": ["src/app/utilities/vertical-scaling/VerticalScalingComponent"],
- "HealingComponent": ["src/app/utilities/healing/HealingComponent"],
- }
+ "resolveJsonModule": true,
+ "allowSyntheticDefaultImports": true,
+ "baseUrl": ".",
+ "downlevelIteration": true,
+ "outDir": "./dist/out-tsc",
+ "sourceMap": true,
+ "declaration": false,
+ "module": "es2020",
+ "moduleResolution": "node",
+ "emitDecoratorMetadata": true,
+ "experimentalDecorators": true,
+ "importHelpers": true,
+ "target": "es2021",
+ "types": [
+ "node"
+ ],
+ "typeRoots": [
+ "node_modules/@types"
+ ],
+ "lib": [
+ "es2018",
+ "dom"
+ ],
+ "paths": {
+ "CommonModel": ["src/models/CommonModel"],
+ "environment": ["src/environments/environment"],
+ "AuthInterceptorService": ["src/services/AuthInterceptorService"],
+ "RestService": ["src/services/RestService"],
+ "SharedService": ["src/services/SharedService"],
+ "ProjectService": ["src/services/ProjectService"],
+ "DataService": ["src/services/DataService"],
+ "AuthenticationService": ["src/services/AuthenticationService"],
+ "AuthGuardService": ["src/services/AuthGuardService"],
+ "AcessGuardService": ["src/services/AcessGuardService"],
+ "DeviceCheckService": ["src/services/DeviceCheckService"],
+ "NSDModel": ["src/models/NSDModel"],
+ "VimAccountModel": ["src/models/VimAccountModel"],
+ "LayoutComponent": ["src/app/layouts/LayoutComponent"],
+ "SidebarComponent": ["src/app/layouts/sidebar/SidebarComponent"],
+ "HeaderComponent": ["src/app/layouts/header/HeaderComponent"],
+ "UserSettingsComponent": ["src/app/user-settings/UserSettingsComponent"],
+ "LoginComponent": ["src/app/login/LoginComponent"],
+ "DashboardComponent": ["src/app/dashboard/DashboardComponent"],
+ "NSPackages": ["src/app/packages/ns-packages/NSPackagesComponent"],
+ "NsPackagesAction": ["src/app/utilities/ns-packages-action/NsPackagesActionComponent"],
+ "InstantiateNs": ["src/app/packages/instantiate-ns/InstantiateNsComponent"],
+ "ShowContent": ["src/app/packages/show-content/ShowContentComponent"],
+ "DeleteComponent": ["src/app/utilities/delete/DeleteComponent"],
+ "EditPackagesComponent": ["src/app/utilities/edit-packages/EditPackagesComponent"],
+ "NetsliceTemplate": ["src/app/packages/netslice-template/NetsliceTemplateComponent"],
+ "DragDirective": ["src/app/utilities/dragDropUpload/DragDirective"],
+ "NSComposer": ["src/app/packages/ns-packages/ns-composer/NSComposerComponent"],
+ "VNFComposer": ["src/app/packages/ns-packages/vnf-composer/VNFComposerComponent"],
+ "Packages": ["src/app/packages/PackagesComponent"],
+ "VNFPackages": ["src/app/packages/vnf-packages/VNFPackagesComponent"],
+ "VNFDModel": ["src/models/VNFDModel"],
+ "VNFPackagesAction": ["src/app/utilities/vnf-packages-action/VNFPackagesActionComponent"],
+ "NetworkSliceModel": ["src/models/NetworkSliceModel"],
+ "NetslicePackagesAction": ["src/app/utilities/netslice-packages-action/NetslicePackagesActionComponent"],
+ "PageNotFound": ["src/app/page-not-found/PageNotFoundComponent"],
+ "ProjectsModule": ["src/app/projects/ProjectsModule"],
+ "ProjectModel": ["src/models/ProjectModel"],
+ "ProjectsComponent": ["src/app/projects/ProjectsComponent"],
+ "ProjectCreateUpdate": ["src/app/projects/project-create-update/ProjectCreateUpdateComponent"],
+ "ProjectsAction": ["src/app/utilities/projects-action/ProjectsActionComponent"],
+ "BreadCrumb": ["src/app/layouts/breadcrumb/BreadcrumbComponent"],
+ "VNFDEdit": ["src/app/packages/vnfd-edit/VNFDEditComponent"],
+ "VNFInstanceModel": ["src/models/VNFInstanceModel"],
+ "InstancesComponent": ["src/app/instances/InstancesComponent"],
+ "VNFInstancesComponent": ["src/app/instances/vnf-instances/VNFInstancesComponent"],
+ "NSInstancesComponent": ["src/app/instances/ns-instances/NSInstancesComponent"],
+ "HistoryOperationsComponent": ["src/app/instances/ns-history-operations/HistoryOperationsComponent"],
+ "NetsliceInstancesComponent": ["src/app/instances/netslice-instances/NetsliceInstancesComponent"],
+ "VNFInstancesActionComponent": ["src/app/utilities/vnf-instances-action/VNFInstancesActionComponent"],
+ "NSInstancesActionComponent": ["src/app/utilities/ns-instances-action/NSInstancesActionComponent"],
+ "NetsliceInstancesActionComponent": ["src/app/utilities/netslice-instances-action/NetsliceInstancesActionComponent"],
+ "NSInstanceModel": ["src/models/NSInstanceModel"],
+ "ShowInfoComponent": ["src/app/utilities/show-info/ShowInfoComponent"],
+ "NSTopologyComponent": ["src/app/instances/ns-topology/NSTopologyComponent"],
+ "NSTopologyModel": ["src/models/NSTopologyModel"],
+ "SDNControllerComponent": ["src/app/sdn-controller/SDNControllerComponent"],
+ "SDNControllerDetailsComponent": ["src/app/sdn-controller/sdn-controller-details/SDNControllerDetailsComponent"],
+ "SDNControllerInfoComponent": ["src/app/sdn-controller/sdn-controller-info/SDNControllerInfoComponent"],
+ "SDNControllerActionComponent": ["src/app/utilities/sdn-controller-action/SDNControllerActionComponent"],
+ "NewSDNControllerComponent": ["src/app/sdn-controller/new-sdn-controller/NewSDNControllerComponent"],
+ "SDNControllerModel": ["src/models/SDNControllerModel"],
+ "UserModel": ["src/models/UserModel"],
+ "UsersComponent": ["src/app/users/UsersComponent"],
+ "UserDetailsComponent": ["src/app/users/user-details/UserDetailsComponent"],
+ "AddEditUserComponent": ["src/app/users/add-user/AddEditUserComponent"],
+ "UsersActionComponent": ["src/app/utilities/users-action/UsersActionComponent"],
+ "ProjectRoleComponent": ["src/app/users/project-role/ProjectRoleComponent"],
+ "PagePerRow": ["src/app/utilities/page-per-row/PagePerRow"],
+ "PagePerRowModule": ["src/app/utilities/page-per-row/PagePerRowModule"],
+ "VimAccountsModule": ["src/app/vim-accounts/VimAccountsModule"],
+ "VimAccountsComponent": ["src/app/vim-accounts/VimAccountsComponent"],
+ "VimAccountDetails": ["src/app/vim-accounts/vim-account-details/VimAccountDetailsComponent"],
+ "NewVimaccount": ["src/app/vim-accounts/new-vimaccount/NewVimaccountComponent"],
+ "InfoVim": ["src/app/vim-accounts/info-vim/InfoVimComponent"],
+ "VimAccountsAction": ["src/app/utilities/vim-accounts-action/VimAccountsActionComponent"],
+ "InstantiateNetSliceTemplate": ["src/app/packages/instantiate-net-slice-template/InstantiateNetSliceTemplateComponent"],
+ "LoaderComponent": ["src/app/utilities/loader/LoaderComponent"],
+ "LoaderModule": ["src/app/utilities/loader/LoaderModule"],
+ "NSPrimitiveComponent": ["src/app/instances/ns-primitive/NSPrimitiveComponent"],
+ "ConfirmationTopology": ["src/app/utilities/confirmation-topology/ConfirmationTopologyComponent"],
+ "ComposePackages": ["src/app/utilities/compose-packages/ComposePackages"],
+ "WIMAccountsAction": ["src/app/utilities/wim-accounts-action/WIMAccountsActionComponent"],
+ "WIMAccountsModule": ["src/app/wim-accounts/WIMAccountsModule"],
+ "WIMAccountsComponent": ["src/app/wim-accounts/WIMAccountsComponent"],
+ "WIMAccountDetails": ["src/app/wim-accounts/wim-account-details/WIMAccountDetailsComponent"],
+ "NewWIMAccount": ["src/app/wim-accounts/new-wim-account/NewWIMAccountComponent"],
+ "WIMAccountInfo": ["src/app/wim-accounts/wim-account-info/WIMAccountInfoComponent"],
+ "WIMAccountModel": ["src/models/WIMAccountModel"],
+ "Roles": ["src/app/roles/RolesComponent"],
+ "RolesDetails": ["src/app/roles/roles-details/RolesDetailsComponent"],
+ "RolesAction": ["src/app/utilities/roles-action/RolesActionComponent"],
+ "RolesCreateEdit": ["src/app/roles/roles-create-edit/RolesCreateEditComponent"],
+ "RolesModel": ["src/models/RoleModel"],
+ "PDUInstancesComponent": ["src/app/instances/pdu-instances/PDUInstancesComponent"],
+ "PDUInstanceModel": ["src/models/PDUInstanceModel"],
+ "PDUInstancesActionComponent": ["src/app/utilities/pdu-instances-action/PDUInstancesActionComponent"],
+ "AddPDUInstancesComponent": ["src/app/instances/pdu-instances/add-pdu-instances/AddPDUInstancesComponent"],
+ "ClonePackage": ["src/app/utilities/clone-package/ClonePackageComponent"],
+ "K8sComponent": ["src/app/k8s/K8sComponent"],
+ "K8sClusterComponent": ["src/app/k8s/k8scluster/K8sClusterComponent"],
+ "K8sRepositoryComponent": ["src/app/k8s/k8srepository/K8sRepositoryComponent"],
+ "K8sActionComponent": ["src/app/k8s/k8s-action/K8sActionComponent"],
+ "K8sModel": ["src/models/K8sModel"],
+ "K8sAddClusterComponent": ["src/app/k8s/k8s-add-cluster/K8sAddClusterComponent"],
+ "K8sAddRepoComponent": ["src/app/k8s/k8s-add-repo/K8sAddRepoComponent"],
+ "SwitchProjectComponent": ["src/app/utilities/switch-project/SwitchProjectComponent"],
+ "ProjectLinkComponent": ["src/app/utilities/project-link/ProjectLinkComponent"],
+ "PageReload": ["src/app/utilities/page-reload/PageReload"],
+ "PageReloadModule": ["src/app/utilities/page-reload/PageReloadModule"],
+ "GoToTopDirective": ["src/directive/GoToTopDirective"],
+ "VNFLinkComponent": ["src/app/instances/vnf-instances/vnf-link/VNFLinkComponent"],
+ "PACKAGEJSON": ["package.json"],
+ "OsmRepositories": ["src/app/osm-repositories/OsmRepositoriesComponent"],
+ "OsmRepositoriesDetails": ["src/app/osm-repositories/osm-repositories-details/OsmRepositoriesDetailsComponent"],
+ "OsmRepositoriesAction": ["src/app/utilities/osm-repositories-action/OsmRepositoriesActionComponent"],
+ "OsmRepoModel": ["src/models/OsmRepoModel"],
+ "OsmRepoCreateUpdate": ["src/app/osm-repositories/osm-repo-create-update/OsmRepoCreateUpdateComponent"],
+ "ScalingComponent": ["src/app/utilities/scaling/ScalingComponent"],
+ "OperationalViewComponent": ["src/app/operational-view/OperationalViewComponent"],
+ "OperationalModel": ["src/models/OperationalModel"],
+ "OperationalAppConfigsComponent": ["src/app/operational-view/operational-view-app-configs/OperationalViewAppConfigsComponent"],
+ "OperationalAppActionsComponent": ["src/app/operational-view/operational-view-app-actions/OperationalViewAppActionsComponent"],
+ "OperationalAppExecutedActionsComponent": ["src/app/operational-view/operational-view-app-executed-actions/OperationalViewAppExecutedActionsComponent"],
+ "ResourcesOverviewComponent": ["src/app/vim-accounts/Resources-Overview/ResourcesOverviewComponent"],
+ "SharedModule": ["src/app/vim-accounts/Resources-Overview/SharedModule"],
+ "ChangePasswordComponent": ["src/app/utilities/change-password/ChangePasswordComponent"],
+ "ChangePasswordModule": ["src/app/utilities/change-password/ChangePasswordModule"],
+ "VmMigrationComponent": ["src/app/utilities/vm-migration/VmMigrationComponent"],
+ "NsUpdateComponent": ["src/app/utilities/ns-update/NsUpdateComponent"],
+ "WarningComponent": ["src/app/utilities/warning/WarningComponent"],
+ "StartStopRebuildComponent": ["src/app/utilities/start-stop-rebuild/StartStopRebuildComponent"],
+ "VerticalScalingComponent": ["src/app/utilities/vertical-scaling/VerticalScalingComponent"],
+ "HealingComponent": ["src/app/utilities/healing/HealingComponent"]
+ },
+ "useDefineForClassFields": false
}
-}
\ No newline at end of file
+ }
\ No newline at end of file