--- /dev/null
+<!--
+ ========================LICENSE_START=================================
+ O-RAN-SC
+ %%
+ Copyright (C) 2019 AT&T Intellectual Property
+ %%
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ ========================LICENSE_END===================================
+-->
+
+<div class="ran-control__section">
+ <h3 class="rd-global-page-title">RAN Connections</h3>
+
+ <button mat-raised-button (click)="setupRANConnection()">Setup Connection..</button>
+ <button mat-raised-button color="warn" class="disconnect-all-button"
+ (click)="disconnectAllRANConnections()">Disconnect All</button>
+
+ <table mat-table class="ran-control-table mat-elevation-z8" [dataSource]="dataSource">
+
+ <ng-template #noValue></ng-template>
+
+ <ng-container matColumnDef="nbId">
+ <mat-header-cell *matHeaderCellDef>Nodeb ID</mat-header-cell>
+ <mat-cell *matCellDef="let ran">
+ <div *ngIf="ran.nodebIdentity.globalNbId; else noValue">{{ran.nodebIdentity.globalNbId.nbId}}</div>
+ </mat-cell>
+ </ng-container>
+
+ <ng-container matColumnDef="nodeType">
+ <mat-header-cell *matHeaderCellDef>Node Type</mat-header-cell>
+ <mat-cell *matCellDef="let ran">
+ <div *ngIf="ran.nodebStatus; else noValue">{{ran.nodebStatus.nodeType}}</div>
+ </mat-cell>
+ </ng-container>
+
+ <ng-container matColumnDef="ranName">
+ <mat-header-cell *matHeaderCellDef>RAN Name</mat-header-cell>
+ <mat-cell *matCellDef="let ran">
+ <div *ngIf="ran.nodebIdentity; else noValue">{{ran.nodebIdentity.inventoryName}}</div>
+ </mat-cell>
+ </ng-container>
+
+ <ng-container matColumnDef="ranIp">
+ <mat-header-cell *matHeaderCellDef>IP</mat-header-cell>
+ <mat-cell *matCellDef="let ran">
+ <div *ngIf="ran.nodebStatus; else noValue">{{ran.nodebStatus.ip}}</div>
+ </mat-cell>
+ </ng-container>
+
+ <ng-container matColumnDef="ranPort">
+ <mat-header-cell *matHeaderCellDef>Port</mat-header-cell>
+ <mat-cell *matCellDef="let ran">
+ <div *ngIf="ran.nodebStatus; else noValue">{{ran.nodebStatus.port}}</div>
+ </mat-cell>
+ </ng-container>
+
+ <ng-container matColumnDef="connectionStatus">
+ <mat-header-cell *matHeaderCellDef>Connection Status</mat-header-cell>
+ <mat-cell *matCellDef="let ran">
+ <div *ngIf="ran.nodebStatus; else noValue">{{ran.nodebStatus.connectionStatus}}</div>
+ </mat-cell>
+ </ng-container>
+
+ <ng-container matColumnDef="noRecordsFound">
+ <mat-footer-cell *matFooterCellDef>No records found.</mat-footer-cell>
+ </ng-container>
+
+ <mat-header-row *matHeaderRowDef="displayedColumns"></mat-header-row>
+ <mat-row *matRowDef="let row; columns: displayedColumns"></mat-row>
+ <mat-footer-row *matFooterRowDef="['noRecordsFound']" [ngClass]="{'display-none': dataSource.rowCount > 0}">
+ </mat-footer-row>
+
+ </table>
+
+ <div class="spinner-container" *ngIf="dataSource.loading$ | async">
+ <mat-spinner diameter=50></mat-spinner>
+ </div>
+
+</div>
\ No newline at end of file