This is an automated email from the ASF dual-hosted git repository. hshpak pushed a commit to branch feat/DATALAB-2775/update-instance-name-link in repository https://gitbox.apache.org/repos/asf/incubator-datalab.git
commit 3c336d74993a5578f1595033e5cea238b20f5ba7 Author: Hennadii_Shpak <[email protected]> AuthorDate: Thu May 19 16:06:09 2022 +0300 [DATALAB-2775] updated instance name link --- .../detail-dialog/detail-dialog.component.html | 168 ++++++++++----------- .../detail-dialog/detail-dialog.component.ts | 14 +- .../resources-grid/resources-grid.component.html | 20 ++- .../resources-grid/resources-grid.component.scss | 6 + .../resources-grid/resources-grid.component.ts | 16 +- .../resources-grid/resources-grid.model.ts | 10 +- .../src/app/shared/navbar/navbar.component.html | 86 +++++------ 7 files changed, 174 insertions(+), 146 deletions(-) diff --git a/services/self-service/src/main/resources/webapp/src/app/resources/exploratory/detail-dialog/detail-dialog.component.html b/services/self-service/src/main/resources/webapp/src/app/resources/exploratory/detail-dialog/detail-dialog.component.html index 3397676b2..91c46efea 100644 --- a/services/self-service/src/main/resources/webapp/src/app/resources/exploratory/detail-dialog/detail-dialog.component.html +++ b/services/self-service/src/main/resources/webapp/src/app/resources/exploratory/detail-dialog/detail-dialog.component.html @@ -68,15 +68,15 @@ <!-- </a>--> <!-- </p> --> <ng-container *ngFor="let item of notebook.exploratory_urls"> - <span - class="d-none" - *ngIf="item.description.toLowerCase() === 'ungit' + <span + class="d-none" + *ngIf="item.description.toLowerCase() === 'ungit' && notebook.exploratory_urls[0].description.toLowerCase().indexOf('zeppelin') !== -1; else ungit" ></span> <ng-template #ungit> <p (mouseleave)="hideCopyIcon()"> <span class="description">{{item.description}}: </span> - <a + <a (mouseover)="showCopyIcon(item.description)" (click)="logAction(notebook.name, item.description)" class="ellipsis none-select resources-url" matTooltip="{{item.url}}" @@ -87,11 +87,11 @@ > {{item.url | truncateTextPipe: urlMaxLength}} </a> - <span - (click)="logAction(notebook.name, item.description, 'Copy');$event.stopPropagation()" - *ngIf="isCopyIconVissible[item.description]" - [matTooltip]="isCopied ? 'Copy ' + item.description + ' url': 'Copied'" - matTooltipPosition="above" + <span + (click)="logAction(notebook.name, item.description, 'Copy');$event.stopPropagation()" + *ngIf="isCopyIconVissible[item.description]" + [matTooltip]="isCopied ? 'Copy ' + item.description + ' url': 'Copied'" + matTooltipPosition="above" class="copy-icon-wrapper" > <span class="link-icon" (click)="copyLink(item.url)" > @@ -103,24 +103,24 @@ </ng-container> </div> </div> - <div class="scroll-box" id="scrolling" *ngIf="data.type === 'resource'"> + <div class="scroll-box" id="scrolling" *ngIf="isResourcePage"> <div class="detail-info" *ngIf="!notebook.error_message"> - <p>Edge Node IP Address {{notebook.node_ip}}</p> - <p *ngIf="notebook.status === 'running'">Up time {{upTimeInHours}} hour(s) since - {{notebook.time ? (notebook.time | longDate) : "not specified."}} - </p> +<!-- <p>Edge Node IP Address {{notebook.node_ip}}</p>--> +<!-- <p *ngIf="notebook.status === 'running'">Up time {{upTimeInHours}} hour(s) since--> +<!-- {{notebook.time ? (notebook.time | longDate) : "not specified."}}--> +<!-- </p>--> <p *ngIf="notebook.url?.length">Open following URL(s) in your browser to access this box:</p> <div class="links_block"> <ng-container *ngFor="let item of notebook.url"> - <span - class="d-none" - *ngIf="item.description.toLowerCase() === 'ungit' + <span + class="d-none" + *ngIf="item.description.toLowerCase() === 'ungit' && notebook.template_name.toLowerCase().indexOf('zeppelin ') !== -1; else ungit" ></span> <ng-template #ungit> <p (mouseleave)="hideCopyIcon()"> <span class="description">{{item.description}}: </span> - <a + <a (mouseover)="showCopyIcon(item.description)" (click)="logAction(notebook.name, item.description)" class="ellipsis none-select resources-url" matTooltip="{{item.url}}" @@ -131,11 +131,11 @@ > {{item.url | truncateTextPipe: urlMaxLength}} </a> - <span - (click)="logAction(notebook.name, item.description, 'Copy');$event.stopPropagation()" - *ngIf="isCopyIconVissible[item.description]" - [matTooltip]="isCopied ? 'Copy ' + item.description + ' url': 'Copied'" - matTooltipPosition="above" + <span + (click)="logAction(notebook.name, item.description, 'Copy');$event.stopPropagation()" + *ngIf="isCopyIconVissible[item.description]" + [matTooltip]="isCopied ? 'Copy ' + item.description + ' url': 'Copied'" + matTooltipPosition="above" class="copy-icon-wrapper" > <span class="link-icon" (click)="copyLink(item.url)" > @@ -153,39 +153,39 @@ Password: <span class="strong">{{ notebook.password }}</span> </p> - <p class="m-top-30">{{ 'Project bucket' }}: </p> - <div class="links_block" (mouseleave)="hideCopyIcon()"> - <p *ngIf="PROVIDER === 'azure' && notebook.account_name" class="bucket-info-wrapper"> - <span - class="bucket-info" - (mouseover)="showCopyIcon('bucket')" - [matTooltip]="notebook.bucket_name + '@' + notebook.account_name + '.blob.core.windows.net'" - matTooltipPosition="above" - [matTooltipClass]="'full-size-tooltip'" - > - {{notebook.bucket_name + '@' + notebook.account_name + '.blob.core.windows.net'}} - </span> +<!-- <p class="m-top-30">{{ 'Project bucket' }}: </p>--> +<!-- <div class="links_block" (mouseleave)="hideCopyIcon()">--> +<!-- <p *ngIf="PROVIDER === 'azure' && notebook.account_name" class="bucket-info-wrapper">--> +<!-- <span--> +<!-- class="bucket-info"--> +<!-- (mouseover)="showCopyIcon('bucket')"--> +<!-- [matTooltip]="notebook.bucket_name + '@' + notebook.account_name + '.blob.core.windows.net'"--> +<!-- matTooltipPosition="above"--> +<!-- [matTooltipClass]="'full-size-tooltip'"--> +<!-- >--> +<!-- {{notebook.bucket_name + '@' + notebook.account_name + '.blob.core.windows.net'}}--> +<!-- </span>--> - <span *ngIf="isCopyIconVissible.bucket" [matTooltip]="isCopied ? 'Copy bucket name' : 'Copied'" matTooltipPosition="above"> - <span class="link-icon" (click)="copyLink(notebook.bucket_name + '@' + notebook.account_name + '.blob.core.windows.net', true);$event.stopPropagation()" > - <span _ngcontent-xpv-c19="" class="material-icons" (click)="this.isCopied = false">content_copy</span> - </span> - </span> - </p> - <p *ngIf="notebook.bucket_name && PROVIDER !== 'azure'">{{ DICTIONARY[PROVIDER].container }} - <span - class="bucket-info" - (mouseover)="showCopyIcon('bucket')" - > - {{ notebook.bucket_name }} - </span> - <span *ngIf="isCopyIconVissible.bucket" [matTooltip]="isCopied ? 'Copy bucket name' : 'Copied'" matTooltipPosition="above"> - <span class="link-icon" (click)="copyLink(notebook.bucket_name, true);$event.stopPropagation()" > - <span _ngcontent-xpv-c19="" class="material-icons" (click)="this.isCopied = false">content_copy</span> - </span> - </span> - </p> - </div> +<!-- <span *ngIf="isCopyIconVissible.bucket" [matTooltip]="isCopied ? 'Copy bucket name' : 'Copied'" matTooltipPosition="above">--> +<!-- <span class="link-icon" (click)="copyLink(notebook.bucket_name + '@' + notebook.account_name + '.blob.core.windows.net', true);$event.stopPropagation()" >--> +<!-- <span _ngcontent-xpv-c19="" class="material-icons" (click)="this.isCopied = false">content_copy</span>--> +<!-- </span>--> +<!-- </span>--> +<!-- </p>--> +<!-- <p *ngIf="notebook.bucket_name && PROVIDER !== 'azure'">{{ DICTIONARY[PROVIDER].container }}--> +<!-- <span--> +<!-- class="bucket-info"--> +<!-- (mouseover)="showCopyIcon('bucket')"--> +<!-- >--> +<!-- {{ notebook.bucket_name }}--> +<!-- </span>--> +<!-- <span *ngIf="isCopyIconVissible.bucket" [matTooltip]="isCopied ? 'Copy bucket name' : 'Copied'" matTooltipPosition="above">--> +<!-- <span class="link-icon" (click)="copyLink(notebook.bucket_name, true);$event.stopPropagation()" >--> +<!-- <span _ngcontent-xpv-c19="" class="material-icons" (click)="this.isCopied = false">content_copy</span>--> +<!-- </span>--> +<!-- </span>--> +<!-- </p>--> +<!-- </div>--> <div class="bucket-info bucket-link"> <span></span> <!-- <button--> @@ -199,23 +199,23 @@ <!-- [ngClass]="{'not-allow': !this.bucketStatus['view'] || !thisdata.buckets.length}"--> <!-- (click)="bucketBrowser(notebook.bucket_name, notebook.endpoint, this.bucketStatus['view'] && thisdata.buckets.length)"--> <!-- >--> - <span - class="description open-bucket" - [matTooltip]="!this.bucketStatus['view'] - ? 'You have not permission to open bucket' - : 'You have not any bucket'" - matTooltipDisabled="{{this.bucketStatus['view'] && this.data.buckets.length}}" - matTooltipPosition="above" - [matTooltipClass]="'full-size-tooltip'" - [ngClass]="{'not-allow': !this.bucketStatus['view'] || !this.data.buckets.length}" - (click)="bucketBrowser( - notebook.cloud_provider !== 'azure' ? notebook.bucket_name : notebook.account_name + '.' + notebook.bucket_name, - notebook.endpoint, - this.bucketStatus['view'] && this.data.buckets.length - )" - > - Open bucket browser - </span> +<!-- <span--> +<!-- class="description open-bucket"--> +<!-- [matTooltip]="!this.bucketStatus['view']--> +<!-- ? 'You have not permission to open bucket'--> +<!-- : 'You have not any bucket'"--> +<!-- matTooltipDisabled="{{this.bucketStatus['view'] && this.data.buckets.length}}"--> +<!-- matTooltipPosition="above"--> +<!-- [matTooltipClass]="'full-size-tooltip'"--> +<!-- [ngClass]="{'not-allow': !this.bucketStatus['view'] || !this.data.buckets.length}"--> +<!-- (click)="bucketBrowser(--> +<!-- notebook.cloud_provider !== 'azure' ? notebook.bucket_name : notebook.account_name + '.' + notebook.bucket_name,--> +<!-- notebook.endpoint,--> +<!-- this.bucketStatus['view'] && this.data.buckets.length--> +<!-- )"--> +<!-- >--> +<!-- Open bucket browser--> +<!-- </span>--> </div> <!-- <p>Shared endpoint bucket: </p>--> <!-- <div class="links_block" (click)="bucketBrowser(notebook.shared_bucket_name, notebook.endpoint, this.bucketStatus['view'])"--> @@ -265,10 +265,10 @@ </p> --> </div> - <div - class="checkbox-group" + <div + class="checkbox-group" *ngIf="notebook.image !== 'docker.datalab-zeppelin'; else not_support" - [hidden]="notebook.status !== 'running' || notebook.image === 'docker.datalab-superset' + [hidden]="notebook.status !== 'running' || notebook.image === 'docker.datalab-superset' || notebook.image === 'docker.datalab-jupyterlab'" > <label> @@ -277,15 +277,15 @@ <div class="checkbox-group"> <form [formGroup]="configurationForm" novalidate> <div class="config-details" *ngIf="configuration?.nativeElement['checked'] || false"> - <textarea - formControlName="configuration_parameters" + <textarea + formControlName="configuration_parameters" id="config" - placeholder="Cluster configuration template, JSON" + placeholder="Cluster configuration template, JSON" data-gramm_editor="false" ></textarea> - <span + <span class="danger_color" - *ngIf="!configurationForm.controls.configuration_parameters.valid + *ngIf="!configurationForm.controls.configuration_parameters.valid && configurationForm.controls['configuration_parameters'].dirty" > Configuration parameters is not in a valid format @@ -320,10 +320,10 @@ <div *ngFor="let url of odahu.url" class="odahu-links"> <div class="odahu-link"> <span class="description">{{url.description }}: </span> - <a - class="ellipsis" - matTooltip="{{ url.url}}" - matTooltipPosition="above" + <a + class="ellipsis" + matTooltip="{{ url.url}}" + matTooltipPosition="above" href="{{ url.url}}" target="_blank" > diff --git a/services/self-service/src/main/resources/webapp/src/app/resources/exploratory/detail-dialog/detail-dialog.component.ts b/services/self-service/src/main/resources/webapp/src/app/resources/exploratory/detail-dialog/detail-dialog.component.ts index 15845a6b2..370b7b8d6 100644 --- a/services/self-service/src/main/resources/webapp/src/app/resources/exploratory/detail-dialog/detail-dialog.component.ts +++ b/services/self-service/src/main/resources/webapp/src/app/resources/exploratory/detail-dialog/detail-dialog.component.ts @@ -151,10 +151,10 @@ export class DetailDialogComponent implements OnInit { bucketName = this.isBucketAllowed ? bucketName : this.data.buckets[0].children[0].name; // bucketName = 'ofuks-1304-pr2-local-bucket'; this.dialog.open(BucketBrowserComponent, { data: - { - bucket: bucketName, - endpoint: endpoint, - bucketStatus: this.bucketStatus, + { + bucket: bucketName, + endpoint: endpoint, + bucketStatus: this.bucketStatus, buckets: this.data.buckets }, panelClass: 'modal-fullscreen' } @@ -164,7 +164,7 @@ export class DetailDialogComponent implements OnInit { public showCopyIcon(element) { this.isCopyIconVissible[element] = true; } - + public hideCopyIcon() { for (const key in this.isCopyIconVissible) { this.isCopyIconVissible[key] = false; @@ -184,4 +184,8 @@ export class DetailDialogComponent implements OnInit { this.auditService.sendDataToAudit({resource_name: name, info: `Follow ${description} link`, type: 'NOTEBOOK'}).subscribe(); } } + + get isResourcePage(): boolean { + return this.data.type === 'resource'; + } } diff --git a/services/self-service/src/main/resources/webapp/src/app/resources/resources-grid/resources-grid.component.html b/services/self-service/src/main/resources/webapp/src/app/resources/resources-grid/resources-grid.component.html index 2b7a85719..f961bc133 100644 --- a/services/self-service/src/main/resources/webapp/src/app/resources/resources-grid/resources-grid.component.html +++ b/services/self-service/src/main/resources/webapp/src/app/resources/resources-grid/resources-grid.component.html @@ -128,15 +128,17 @@ <tr *ngFor="let element of element.exploratory; let i = index" class="element-row mat-row"> <td class="name-col"> - <span - *ngIf="element.shape !== 'odahu cluster';else odahu" - [matTooltip]="element.name" - matTooltipPosition="above" - (click)="printDetailEnvironmentModal(element)" - > + <div *ngIf="checkLinkList(element.url); else instanceLink"> + <span + *ngIf="element.shape !== 'odahu cluster';else odahu" + [matTooltip]="element.name" + matTooltipPosition="above" + (click)="printDetailEnvironmentModal(element)" + class="instances-name__link" + > {{ element.name }} </span> - <ng-template #odahu> + <ng-template #odahu> <span [matTooltip]=" element.name " matTooltipPosition="above" @@ -144,6 +146,10 @@ > {{ element.name }} </span> + </ng-template> + </div> + <ng-template #instanceLink> + <a target="_blank" class="instances-name__link" [href]="getFirstUrl(element.url)">{{ element.name }}</a> </ng-template> </td> <td class="status-col status" ngClass="{{ element.status.toLowerCase() || ''}}"> diff --git a/services/self-service/src/main/resources/webapp/src/app/resources/resources-grid/resources-grid.component.scss b/services/self-service/src/main/resources/webapp/src/app/resources/resources-grid/resources-grid.component.scss index 6728ed70d..cff3c5ee7 100644 --- a/services/self-service/src/main/resources/webapp/src/app/resources/resources-grid/resources-grid.component.scss +++ b/services/self-service/src/main/resources/webapp/src/app/resources/resources-grid/resources-grid.component.scss @@ -464,3 +464,9 @@ table.resources { .content-row { background-clip: padding-box; } + +.instances-name__link{ + cursor: pointer; + color: #35afd5; + text-decoration: underline; +} diff --git a/services/self-service/src/main/resources/webapp/src/app/resources/resources-grid/resources-grid.component.ts b/services/self-service/src/main/resources/webapp/src/app/resources/resources-grid/resources-grid.component.ts index 55c824d95..7679b4f7b 100644 --- a/services/self-service/src/main/resources/webapp/src/app/resources/resources-grid/resources-grid.component.ts +++ b/services/self-service/src/main/resources/webapp/src/app/resources/resources-grid/resources-grid.component.ts @@ -29,7 +29,7 @@ import { animate, state, style, transition, trigger } from '@angular/animations' import { ToastrService } from 'ngx-toastr'; import { MatDialog } from '@angular/material/dialog'; import { ProjectService, UserResourceService, OdahuDeploymentService } from '../../core/services'; -import { ExploratoryModel } from './resources-grid.model'; +import {ExploratoryModel, Link} from './resources-grid.model'; import { FilterConfigurationModel } from './filter-configuration.model'; import { GeneralEnvironmentStatus } from '../../administration/management/management.model'; import { ConfirmationDialogType } from '../../shared'; @@ -448,6 +448,20 @@ export class ResourcesGridComponent implements OnInit { this.filteredEnvironments = filteredData; } + checkLinkList(linkList: Link[]): boolean { + const filteredLinkList = this.filterLinkList(linkList); + return filteredLinkList.length > 0; + } + + getFirstUrl(linkList: Link[]): string { + const filteredLinkList = this.filterLinkList(linkList); + return filteredLinkList[0].url; + } + + private filterLinkList(linkList: Link[]): Link[] { + return linkList.filter(({description}) => description !== 'Ungit'); + } + private modifyGrid(): void { this.displayedColumns = this.displayedColumns.filter(el => el !== 'cost'); this.displayedFilterColumns = this.displayedFilterColumns.filter(el => el !== 'cost-filter'); diff --git a/services/self-service/src/main/resources/webapp/src/app/resources/resources-grid/resources-grid.model.ts b/services/self-service/src/main/resources/webapp/src/app/resources/resources-grid/resources-grid.model.ts index 8c8d8d7d8..6350163bd 100644 --- a/services/self-service/src/main/resources/webapp/src/app/resources/resources-grid/resources-grid.model.ts +++ b/services/self-service/src/main/resources/webapp/src/app/resources/resources-grid/resources-grid.model.ts @@ -149,9 +149,7 @@ export class ExploratoryModel { } } -// export interface Exploratory { -// project: string; -// endpoints: []; -// projectEndpoints: []; -// exploratory: ExploratoryModel[]; -// } +export interface Link { + description: string; + url: string; +} diff --git a/services/self-service/src/main/resources/webapp/src/app/shared/navbar/navbar.component.html b/services/self-service/src/main/resources/webapp/src/app/shared/navbar/navbar.component.html index 8c52c46f9..03a49e729 100644 --- a/services/self-service/src/main/resources/webapp/src/app/shared/navbar/navbar.component.html +++ b/services/self-service/src/main/resources/webapp/src/app/shared/navbar/navbar.component.html @@ -37,11 +37,11 @@ <!-- <a *ngIf="healthStatus.status" [routerLink]="['/environment_management']" class="statusbar"> <span class="material-icons" ngClass="{{healthStatus.status || ''}}">radio_button_checked</span> </a> --> - - <a - *ngIf="metadata" - class="statusbar about-btn--wrapper" - #info + + <a + *ngIf="metadata" + class="statusbar about-btn--wrapper" + #info (click)="actions.toggle($event, info)"> <span class="about-btn">About</span> </a> @@ -72,7 +72,7 @@ <a class="help-link" href="https://github.com/apache/incubator-datalab/blob/master/USER_GUIDE.md" target="_blank">Help</a> </span> - <span + <span class="material-icons account-icon--nav-bar account-icon" #login (click)="loginInfo.toggle($event, login)"> account_circle </span> @@ -85,28 +85,28 @@ <span class="user-mail">{{userData.email}}</span> <button type="button" class="logout-btn" (click)="logout_btnClick()"> Log out from account - </button> + </button> </div> </bubble-up> </div> </div> <mat-sidenav-container class="example-container" autosize > - <mat-sidenav - #drawer - mode="side" - opened - role="navigation" - [style.width]="isExpanded ? '220px' : '60px'" - disableClose + <mat-sidenav + #drawer + mode="side" + opened + role="navigation" + [style.width]="isExpanded ? '220px' : '60px'" + disableClose *ngIf="healthStatus" > <mat-nav-list > <nav> <div> - <a - class="nav-item" - [routerLink]="['/resources_list']" + <a + class="nav-item" + [routerLink]="['/resources_list']" [routerLinkActive]="['active']" [routerLinkActiveOptions]="{exact:true}" > @@ -115,23 +115,23 @@ </a> <a class="nav-item has-children" *ngIf="healthStatus?.billingEnabled || healthStatus?.auditEnabled"> <span *ngIf="isExpanded">{{sideBarNames.reports}}</span> - <a - *ngIf="healthStatus?.auditEnabled" - class="sub-nav-item" - [routerLink]="['/audit']" + <a + *ngIf="healthStatus?.auditEnabled" + class="sub-nav-item" + [routerLink]="['/audit']" [style.margin-left.px]="isExpanded ? '30' : '0'" - [routerLinkActive]="['active']" + [routerLinkActive]="['active']" [routerLinkActiveOptions]="{exact:true}" > <span *ngIf="isExpanded; else audit">{{sideBarNames.audit}}</span> <ng-template #audit><i class="material-icons">library_books</i></ng-template> </a> - <a - *ngIf="healthStatus?.billingEnabled" - class="sub-nav-item" + <a + *ngIf="healthStatus?.billingEnabled" + class="sub-nav-item" [routerLink]="['/billing_report']" - [routerLinkActive]="['active']" - [routerLinkActiveOptions]="{exact:true}" + [routerLinkActive]="['active']" + [routerLinkActiveOptions]="{exact:true}" [style.margin-left.px]="isExpanded ? '30' : '0'" > <span *ngIf="isExpanded; else billing">{{sideBarNames.billing}}</span> @@ -141,21 +141,21 @@ <a class="nav-item has-children" *ngIf="healthStatus?.admin || healthStatus?.projectAdmin"> <span *ngIf="isExpanded">{{sideBarNames.administration}}</span> - <a - class="sub-nav-item" - [style.margin-left.px]="isExpanded ? '30' : '0'" + <a + class="sub-nav-item" + [style.margin-left.px]="isExpanded ? '30' : '0'" [routerLink]="['/roles']" - [routerLinkActive]="['active']" + [routerLinkActive]="['active']" [routerLinkActiveOptions]="{exact:true}" > <span *ngIf="isExpanded; else roles">{{sideBarNames.users}}</span> <ng-template #roles><i class="material-icons">account_box</i></ng-template> </a> - <a - class="sub-nav-item" - [style.margin-left.px]="isExpanded ? '30' : '0'" + <a + class="sub-nav-item" + [style.margin-left.px]="isExpanded ? '30' : '0'" [routerLink]="['/projects']" - [routerLinkActive]="['active']" + [routerLinkActive]="['active']" [routerLinkActiveOptions]="{exact:true}" > <span *ngIf="isExpanded; else projects">{{sideBarNames.projects}}</span> @@ -166,21 +166,21 @@ <!-- <span *ngIf="isExpanded; else odahu">Odahu deployment</span>--> <!-- <ng-template #odahu><i class="material-icons">get_app</i></ng-template>--> <!-- </a>--> - <a - class="sub-nav-item" + <a + class="sub-nav-item" [style.margin-left.px]="isExpanded ? '30' : '0'" - [routerLink]="['/environment_management']" + [routerLink]="['/environment_management']" [routerLinkActive]="['active']" [routerLinkActiveOptions]="{exact:true}" > <span *ngIf="isExpanded; else env">{{sideBarNames.resources}}</span> <ng-template #env><i class="material-icons">settings</i></ng-template> </a> - <a - *ngIf="healthStatus?.admin" - class="sub-nav-item" + <a + *ngIf="healthStatus?.admin" + class="sub-nav-item" [style.margin-left.px]="isExpanded ? '30' : '0'" - [routerLink]="['/configuration']" + [routerLink]="['/configuration']" [routerLinkActive]="['active']" [routerLinkActiveOptions]="{exact:true}" > @@ -188,7 +188,7 @@ <ng-template #env><i class="material-icons">build_circle</i></ng-template> </a> </a> - + </div> <!-- <div>--> <!-- <a class="nav-item" [routerLink]="['/swagger']" [routerLinkActive]="['active']"--> --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
