2 # ============LICENSE_START=======================================================
3 # Copyright (c) 2020 AT&T Intellectual Property. All rights reserved.
4 # ================================================================================
5 # Licensed under the Apache License, Version 2.0 (the "License");
6 # you may not use this file except in compliance with the License.
7 # You may obtain a copy of the License at
9 # http://www.apache.org/licenses/LICENSE-2.0
11 # Unless required by applicable law or agreed to in writing, software
12 # distributed under the License is distributed on an "AS IS" BASIS,
13 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 # See the License for the specific language governing permissions and
15 # limitations under the License.
16 # ============LICENSE_END=========================================================
19 <ng4-loading-spinner></ng4-loading-spinner>
20 <mat-sidenav-container style="background: linear-gradient(to top, #878C94 0%, #DCDFE3 10%, #F2F2F2 40%, #DCDFE3 80%, #878C94 110%);" class="sidenav-container" *ngIf="authService.authPass">
21 <mat-sidenav [class.mat-elevation-z2]="!isActive" [class.mat-elevation-z8]="isActive" #sideMenu class="sidenav"
22 fixedInViewport="true" [attr.role]="(isHandset$ | async) ? 'dialog' : 'navigation'"
23 [mode]="(isHandset$ | async) ? 'over' : 'side'" [opened]="(isHandset$ | async) === true">
24 <mat-toolbar></mat-toolbar>
26 <mat-action-list style="margin-top: -10px;">
27 <button class="nav" mat-list-item (click)="setCrumbs('', 'reset')" [routerLink]="'/home'" [routerLinkActive]="'is-active'">Home</button>
28 <button class="nav" mat-list-item (click)="setCrumbs('User Management', 'reset')" *ngIf="authService.isAdmin" [routerLink]="'/users'" [routerLinkActive]="'is-active'">User Management</button>
29 <button class="nav" mat-list-item (click)="setCrumbs('Onboarding Tools', 'reset')" [routerLink]="'/OnboardingTools'" [skipLocationChange]="false" [routerLinkActive]="'is-active'">Onboarding Tools</button>
30 <button class="nav" mat-list-item (click)="msMenu()">
31 <i *ngIf="msMenuIconRight" class="pi pi-chevron-right"></i>
32 <i *ngIf="!msMenuIconRight" class="pi pi-chevron-down"></i>
33 Microservices</button>
34 <div *ngIf="showMsMenu" style="margin-left: 20px;">
35 <button class="subMenuItem" mat-list-item (click)="setCrumbs('Microservices', 'reset')" [routerLink]="'/base-microservices'" [routerLinkActive]="'is-active'">Microservices</button>
36 <button class="subMenuItem" mat-list-item (click)="setCrumbs('MS Instances', 'reset')" [routerLink]="'/ms-instances'" [routerLinkActive]="'is-active'">MS Instances</button>
37 <button class="subMenuItem" mat-list-item (click)="setCrumbs('Blueprints', 'reset')" [routerLink]="'/blueprints'" [routerLinkActive]="'is-active'">Blueprints</button>
39 <button class="nav" mat-list-item (click)="utilitiesMenu()">
40 <i *ngIf="utilitiesMenuIconRight" class="pi pi-chevron-right"></i>
41 <i *ngIf="!utilitiesMenuIconRight" class="pi pi-chevron-down"></i>
42 Utilites</button>
44 <div *ngIf="showUtilitiesMenu" style="margin-left: 20px;">
45 <button class="subMenuItem" mat-list-item (click)="setCrumbs('Spec Validator', 'reset')"
46 [routerLink]="'/spec-validator'" [routerLinkActive]="'is-active'">Spec Validator</button>
47 <button class="subMenuItem" mat-list-item (click)="redirectToAPIs()">MOD APIs</button>
50 <button class="nav" mat-list-item (click)='redirectTo("https://wiki.web.att.com/pages/viewpage.action?spaceKey=DPD&title=DCAE+MOD+User+Guide")'>User Guide</button>
54 <mat-sidenav-content style="margin-top: 70px; max-height: 90%">
55 <!-- Top bar when Logged in -->
56 <mat-toolbar [class.mat-elevation-z2]="!isActive" [class.mat-elevation-z8]="isActive" color="primary"
57 fixedInViewport="true" style="background-color: #1D2329; color:#F2F2F2">
58 <button type="button" aria-label="Toggle sidenav" mat-icon-button (click)="sideMenu.toggle()" style="color:#F2F2F2">
59 <i *ngIf="!sideMenu.opened" class="pi pi-angle-double-right" style="font-size: 25px; margin-left: -30px; margin-bottom: 8px;"></i>
60 <i *ngIf="sideMenu.opened" class="pi pi-angle-double-left" style="font-size: 25px; margin-left: -30px; margin-bottom: 8px;"></i>
62 <span style="font-size: 22px; font-weight: 500; margin-left: 35px">MOD</span>
63 <button type="button" *ngIf="authService.authPass" (click)="handleLogout()"
64 style="float:right; margin-right: 18%; height: 32px; border: none; color:#F2F2F2; background: linear-gradient(to bottom, #1D2329 0%, #454B52 135%);
65 font-size: 16px; font-weight: 400">
66 <i class="pi pi-sign-out" style="vertical-align:text-top"></i>
69 <button type="button" *ngIf="authService.authPass" (click)="handleProfile()"
70 style="float:right; margin-right: 4%; height: 32px; border: none; color:#F2F2F2; background: linear-gradient(to bottom, #1D2329 0%, #454B52 135%);
71 font-size: 16px; font-weight: 400">
72 <i class="pi pi-user-edit" style="vertical-align:text-top"></i>
73 {{authService.getUser().username}}
75 <!-- BREADCRUMBS . . . . . -->
76 <ul class="breadcrumb">
77 <li *ngFor="let crumb of breadcrumbs" [routerLink]="crumb.link" (click)="setCrumbs(crumb.page, 'crumbClicked')"><a>{{crumb.page}}</a></li>
80 <main [@routeAnimations]="prepareRoute(outlet)" class="content">
81 <router-outlet #outlet="outlet"></router-outlet>
83 </mat-sidenav-content>
84 </mat-sidenav-container>
86 <!-- Top bar when Logging in -->
87 <mat-toolbar *ngIf="!authService.authPass" [class.mat-elevation-z2]="!isActive" [class.mat-elevation-z8]="isActive" color="primary"
88 fixedInViewport="true" style="background-color: #1D2329">
89 <span style="font-size: 22px; font-weight: 500">MOD</span>
90 <app-login></app-login>
93 <!-- Login Expired dialog -->
94 <p-dialog header="Login Expired" [(visible)]="authService.reLoginMsg" [modal]="true" [style]="{width:'25vw'}" [baseZIndex]="10000"
95 [draggable]="false" [resizable]="false">
96 <p>Your login has expired. Please log in again.</p>
98 <button type="button" pButton icon="pi pi-check" (click)="onConfirm()" label="OK"></button>
102 <!--reset User Password dialog-->
103 <p-dialog [(visible)]="resetPasswordFlag" appendTo="body" [modal]="true" [transitionOptions]="'300ms'" [style]="{width: '630px'}" [baseZIndex]="10000"
104 [closable]="true" (onHide)="closeResetDialog()">
105 <p-header style="display: inline-flex;">
108 <form [formGroup]="resetPasswordForm">
109 <!-- * * * New Password * * * -->
111 <div class="ui-inputgroup" >
112 <label class="inputLabel">New Password</label>
113 <span class="ui-inputgroup-addon" (click)="hidePassword=!hidePassword">
114 <i [ngClass]="hidePassword? 'pi pi-eye-slash':'pi pi-eye'"></i></span>
115 <input class="inputFieldSm" [type]="hidePassword? 'password':'text'" pInputText formControlName="password" />
118 <i *ngIf="resetPasswordForm.get('password').errors && resetPasswordForm.get('password').errors.minlength" style="width: 140px;margin-left: 20px;font-size: small;color: red;">password should be more than 5 characters</i>
119 <!-- * * * Confirm New Password * * * -->
121 <div class="ui-inputgroup" >
122 <label class="inputLabel">Confirm Password</label>
123 <span class="ui-inputgroup-addon" (click)="hideConfirmPassword=!hideConfirmPassword">
124 <i [ngClass]="hideConfirmPassword? 'pi pi-eye-slash':'pi pi-eye'"></i></span>
125 <input class="inputFieldSm" [type]="hideConfirmPassword? 'password':'text'" pInputText formControlName="confirm_password" />
128 <i *ngIf="resetPasswordForm.errors && resetPasswordForm.errors.errMsg" style="width: 140px;margin-left: 20px;font-size: small;color: red;">{{resetPasswordForm.errors.errMsg}}</i>
129 <!-- * * * Submit and Cancel buttons * * * -->
130 <div style="margin-top: 2em; margin-left: 1.3em; margin-bottom: 2em;">
131 <button pButton type="button" (click)="closeResetDialog()" label="Cancel"></button>
132 <button pButton type="submit" (click)="resetPasswordForm.valid && submitReset()" class="ui-button-success" label="Submit" style="width: 70px"></button>