RIC Dashboard Release Notes
===========================
-Version 1.0.5, 1 July 2019
----------------------------
+Version 1.0.5, 2 July 2019
+--------------------------
* Upgrade to Angular version 8
* Upgrade to Spring-Boot 2.1.6.RELEASE
* Fixed AC xApp policy page title is not aligned
* Update E2 manager client to spec version 20190630
* Add configuration-driven mock of E2 getNodebIdList
+* Revise front-end components to use prefix 'rd'
Version 1.0.4, 27 June 2019
---------------------------
Run `mvn -Dspring.profiles.active=mock spring-boot:run` for a dev server. Navigate to `http://localhost:8080/swagger-ui.html`.
+## Alternate configuration
+
+Run `mvn -Dspring.config.name=application-abc spring-boot:run` to read configuration from the file 'application-abc.properties' in the local directory.
+
## License
Copyright (C) 2019 AT&T Intellectual Property & Nokia. All rights reserved.
"root": "",
"sourceRoot": "src",
"projectType": "application",
- "prefix": "app",
+ "prefix": "rd",
"schematics": {
"@schematics/angular:component": {
"styleext": "scss"
* ========================LICENSE_END===================================
*/
- import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { AcXappComponent } from './ac-xapp.component';
import { NotificationService } from './../services/ui/notification.service';
@Component({
- selector: 'app-ac-xapp',
+ selector: 'rd-ac-xapp',
templateUrl: './ac-xapp.component.html',
styleUrls: ['./ac-xapp.component.scss']
})
import { EditDashboardUserDialogComponent } from './edit-dashboard-user-dialog/edit-dashboard-user-dialog.component';
@Component({
- selector: 'app-user',
+ selector: 'rd-user',
templateUrl: './user.component.html',
styleUrls: ['./user.component.css']
})
import { ANRNeighborCellRelation, ANRNeighborCellRelationMod } from '../interfaces/anr-xapp.types';
@Component({
- selector: 'app-ncr-edit-dialog',
+ selector: 'rd-ncr-edit-dialog',
templateUrl: './anr-edit-ncr-dialog.component.html',
styleUrls: ['./anr-edit-ncr-dialog.component.scss']
})
-export class ANREditNCRDialogComponent implements OnInit {
+export class AnrEditNcrDialogComponent implements OnInit {
private ncrDialogForm: FormGroup;
constructor(
- private dialogRef: MatDialogRef<ANREditNCRDialogComponent>,
+ private dialogRef: MatDialogRef<AnrEditNcrDialogComponent>,
private dataService: ANRXappService,
private errorService: ErrorDialogService,
@Inject(MAT_DIALOG_DATA) private data: ANRNeighborCellRelation) { }
import { ErrorDialogService } from '../services/ui/error-dialog.service';
import { ConfirmDialogService } from './../services/ui/confirm-dialog.service';
import { NotificationService } from './../services/ui/notification.service';
-import { ANREditNCRDialogComponent } from './anr-edit-ncr-dialog.component';
+import { AnrEditNcrDialogComponent } from './anr-edit-ncr-dialog.component';
import { ANRXappDataSource } from './anr-xapp.datasource';
@Component({
- selector: 'app-anr',
+ selector: 'rd-anr',
templateUrl: './anr-xapp.component.html',
styleUrls: ['./anr-xapp.component.scss']
})
}
modifyNcr(ncr: ANRNeighborCellRelation): void {
- const dialogRef = this.dialog.open(ANREditNCRDialogComponent, {
+ const dialogRef = this.dialog.open(AnrEditNcrDialogComponent, {
width: '300px',
data: ncr
});
import { AppControlDataSource } from './app-control.datasource';
@Component({
- selector: 'control-app-control',
+ selector: 'rd-app-control',
templateUrl: './app-control.component.html',
styleUrls: ['./app-control.component.css'],
animations: [AppControlAnimations.messageTrigger]
import { CatalogDataSource } from './catalog.datasource';
@Component({
- selector: 'app-catalog',
+ selector: 'rd-app-catalog',
templateUrl: './catalog.component.html',
styleUrls: ['./catalog.component.css'],
})
========================LICENSE_END===================================
-->
<div class="control__section">
- <control-ran-control></control-ran-control>
+ <rd-ran-control></rd-ran-control>
<hr>
- <control-app-control></control-app-control>
+ <rd-app-control></rd-app-control>
</div>
-
import { Component, OnInit } from '@angular/core';
@Component({
- selector: 'app-control',
+ selector: 'rd-control',
templateUrl: './control.component.html',
styleUrls: ['./control.component.css']
})
import { DashboardSuccessTransport } from '../interfaces/dashboard.types';
@Component({
- selector: 'app-footer',
+ selector: 'rd-footer',
templateUrl: './footer.component.html',
styleUrls: ['./footer.component.scss']
})
========================LICENSE_END===================================
-->
<div class = "main__container">
- <app-catalog-card></app-catalog-card>
- <app-control-card></app-control-card>
- <app-stat-card></app-stat-card>
+ <rd-app-catalog-card></rd-app-catalog-card>
+ <rd-control-card></rd-control-card>
+ <rd-stat-card></rd-stat-card>
</div>
* 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.
import { Component, OnInit } from '@angular/core';
@Component({
- selector: 'app-login',
+ selector: 'rd-login',
templateUrl: './login.component.html',
styleUrls: ['./login.component.css']
})
constructor() { }
- ngOnInit() {
- }
+ ngOnInit() { }
}
import { Component, OnInit, Output, EventEmitter } from '@angular/core';
@Component({
- selector: 'app-sidenav-list',
+ selector: 'rd-sidenav-list',
templateUrl: './sidenav-list.component.html',
styleUrls: ['./sidenav-list.component.css']
})
constructor() { }
- ngOnInit() {
- }
+ ngOnInit() { }
public onSidenavClose = () => {
this.sidenavClose.emit();
import { HttpErrorResponse } from '@angular/common/http';
@Component({
- selector: 'app-signal-ranconnect-dialog',
+ selector: 'rd-ran-control-connect-dialog',
templateUrl: './ran-connection-dialog.component.html',
styleUrls: ['./ran-connection-dialog.component.css']
})
-export class RANConnectionDialogComponent implements OnInit {
+export class RanControlConnectDialogComponent implements OnInit {
public ranDialogForm: FormGroup;
constructor(
- private dialogRef: MatDialogRef<RANConnectionDialogComponent>,
+ private dialogRef: MatDialogRef<RanControlConnectDialogComponent>,
private service: E2ManagerService,
private errorService: ErrorDialogService,
private notifService: NotificationService,
*/
import { Component, OnInit } from '@angular/core';
import { MatDialog } from '@angular/material/dialog';
-import { RANConnectionDialogComponent } from './ran-connection-dialog.component';
+import { RanControlConnectDialogComponent } from './ran-connection-dialog.component';
import { E2ManagerService } from '../services/e2-mgr/e2-mgr.service';
import { ErrorDialogService } from '../services/ui/error-dialog.service';
import { ConfirmDialogService } from '../services/ui/confirm-dialog.service';
import { HttpErrorResponse } from '@angular/common/http';
@Component({
- selector: 'control-ran-control',
+ selector: 'rd-ran-control',
templateUrl: './ran-control.component.html',
styleUrls: ['./ran-control.component.scss']
})
}
setupRANConnection() {
- const dialogRef = this.dialog.open(RANConnectionDialogComponent, {
+ const dialogRef = this.dialog.open(RanControlConnectDialogComponent, {
width: '450px',
data: {}
});
],
declarations: []
})
-export class AppRoutingModule { }
+
+export class RdRoutingModule { }
</div>
</section>
<section #sidenav class="menu-body">
- <app-sidenav-list></app-sidenav-list>
+ <rd-sidenav-list></rd-sidenav-list>
</section>
<section class="menu-footer">
<!-- Footer -->
<footer class="main__footer">
- <div class="main-footer__bg" [ngClass]="{'main-footer__bg-dark': darkModeActive}"></div>
- <app-footer></app-footer>
+ <div class="main-footer__bg" [ngClass]="{'main-footer__bg-dark': darkModeActive}">
+ <rd-footer></rd-footer>
+ </div>
</footer>
</div>
</mat-drawer-content>
-</mat-drawer-container>
\ No newline at end of file
+</mat-drawer-container>
* ========================LICENSE_END===================================
*/
import { Component, OnInit } from '@angular/core';
-import {UiService} from './services/ui/ui.service';
+import { UiService } from './services/ui/ui.service';
@Component({
- selector: 'app-root',
- templateUrl: './app.component.html',
- styleUrls: ['./app.component.css']
+ selector: 'rd-root',
+ templateUrl: './rd.component.html',
+ styleUrls: ['./rd.component.css']
})
-export class AppComponent implements OnInit {
+export class RdComponent implements OnInit {
showMenu = false;
darkModeActive: boolean;
import { MDBBootstrapModule } from 'angular-bootstrap-md';
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
-import { AppRoutingModule } from './app-routing.module';
-import { AppComponent } from './app.component';
-import { LoginComponent } from './login/login.component';
-import { CatalogComponent } from './catalog/catalog.component';
-import { UiService } from './services/ui/ui.service';
-import { AppMgrService } from './services/app-mgr/app-mgr.service';
-import { DashboardService } from './services/dashboard/dashboard.service';
-import { E2ManagerService } from './services/e2-mgr/e2-mgr.service';
-import { SidenavListComponent } from './navigation/sidenav-list/sidenav-list.component';
+import { AcXappComponent } from './ac-xapp/ac-xapp.component';
+import { AddDashboardUserDialogComponent } from './admin/add-dashboard-user-dialog/add-dashboard-user-dialog.component';
+import { AnrEditNcrDialogComponent } from './anr-xapp/anr-edit-ncr-dialog.component';
+import { AnrXappComponent } from './anr-xapp/anr-xapp.component';
import { AppControlComponent } from './app-control/app-control.component';
-import { ControlComponent } from './control/control.component';
-import { RANConnectionDialogComponent } from './ran-control/ran-connection-dialog.component';
-import { RanControlComponent } from './ran-control/ran-control.component';
-import { ANREditNCRDialogComponent } from './anr-xapp/anr-edit-ncr-dialog.component';
-import { StatsComponent } from './stats/stats.component';
-import { UserComponent } from './admin/user.component';
+import { AppMgrService } from './services/app-mgr/app-mgr.service';
import { CatalogCardComponent } from './ui/catalog-card/catalog-card.component';
-import { ControlCardComponent } from './ui/control-card/control-card.component';
-import { StatCardComponent } from './ui/stat-card/stat-card.component';
-import { ModalEventComponent } from './ui/modal-event/modal-event.component';
+import { CatalogComponent } from './catalog/catalog.component';
import { ConfigEventComponent } from './ui/config-event/config-event.component';
import { ConfirmDialogComponent } from './ui/confirm-dialog/confirm-dialog.component';
-import { FooterComponent } from './footer/footer.component';
-import { AnrXappComponent } from './anr-xapp/anr-xapp.component';
+import { ControlCardComponent } from './ui/control-card/control-card.component';
+import { ControlComponent } from './control/control.component';
+import { DashboardService } from './services/dashboard/dashboard.service';
+import { E2ManagerService } from './services/e2-mgr/e2-mgr.service';
+import { EditDashboardUserDialogComponent } from './admin/edit-dashboard-user-dialog/edit-dashboard-user-dialog.component';
import { ErrorDialogComponent } from './ui/error-dialog/error-dialog.component';
import { ErrorDialogService } from './services/ui/error-dialog.service';
-import { AcXappComponent } from './ac-xapp/ac-xapp.component';
-import { AddDashboardUserDialogComponent } from './admin/add-dashboard-user-dialog/add-dashboard-user-dialog.component';
-import { EditDashboardUserDialogComponent } from './admin/edit-dashboard-user-dialog/edit-dashboard-user-dialog.component';
+import { FooterComponent } from './footer/footer.component';
+import { LoginComponent } from './login/login.component';
+import { ModalEventComponent } from './ui/modal-event/modal-event.component';
+import { RanControlComponent } from './ran-control/ran-control.component';
+import { RanControlConnectDialogComponent } from './ran-control/ran-connection-dialog.component';
+import { RdComponent } from './rd.component';
+import { RdRoutingModule } from './rd-routing.module';
+import { SidenavListComponent } from './navigation/sidenav-list/sidenav-list.component';
+import { StatCardComponent } from './ui/stat-card/stat-card.component';
+import { StatsComponent } from './stats/stats.component';
+import { UiService } from './services/ui/ui.service';
+import { UserComponent } from './admin/user.component';
@NgModule({
declarations: [
AcXappComponent,
- UserComponent,
- ANREditNCRDialogComponent,
+ AddDashboardUserDialogComponent,
+ AnrEditNcrDialogComponent,
AnrXappComponent,
- AppComponent,
- CatalogComponent,
+ AppControlComponent,
CatalogCardComponent,
+ CatalogComponent,
ConfigEventComponent,
ConfirmDialogComponent,
ControlCardComponent,
- AppControlComponent,
+ ControlComponent,
+ EditDashboardUserDialogComponent,
ErrorDialogComponent,
FooterComponent,
LoginComponent,
ModalEventComponent,
RanControlComponent,
- RANConnectionDialogComponent,
+ RanControlConnectDialogComponent,
+ RdComponent,
SidenavListComponent,
StatCardComponent,
StatsComponent,
- AddDashboardUserDialogComponent,
- EditDashboardUserDialogComponent,
- ControlComponent
+ UserComponent
],
- imports: [
- AppRoutingModule,
+ imports: [
BrowserModule,
BrowserAnimationsModule,
ChartsModule,
MatTableModule,
MatTabsModule,
MatTooltipModule,
- ReactiveFormsModule,
MDBBootstrapModule.forRoot(),
+ RdRoutingModule,
+ ReactiveFormsModule,
],
- exports: [
+ exports: [
FormsModule,
MatDialogModule,
MatButtonToggleModule,
MatFormFieldModule,
MatButtonModule,
MatInputModule,
- RANConnectionDialogComponent,
- ErrorDialogComponent
- ],
- entryComponents: [
- RANConnectionDialogComponent,
- ANREditNCRDialogComponent,
- ConfirmDialogComponent,
+ RanControlConnectDialogComponent,
ErrorDialogComponent,
+ ],
+ entryComponents: [
AddDashboardUserDialogComponent,
- EditDashboardUserDialogComponent
- ],
+ AnrEditNcrDialogComponent,
+ ConfirmDialogComponent,
+ EditDashboardUserDialogComponent,
+ ErrorDialogComponent,
+ RanControlConnectDialogComponent,
+ ],
providers: [
- UiService,
- AppMgrService,
- DashboardService,
- E2ManagerService,
- ErrorDialogService
- ],
- bootstrap: [AppComponent]
+ AppMgrService,
+ DashboardService,
+ E2ManagerService,
+ ErrorDialogService,
+ UiService
+ ],
+ bootstrap: [RdComponent]
})
-export class AppModule { }
-
+export class RdModule { }
-->
<div class="stats__section">
- <h3 class="stats__header">Platform stats</h3>
+ <h3 class="stats__header">Platform stats</h3>
- <mat-card class="bar-chart-card">
- <mat-card-header>
- <mat-card-title>RIC Total Load</mat-card-title>
- </mat-card-header>
- <mat-card-content>
- <canvas baseChart
- [datasets]="cpuChartData"
- [labels]="cpuChartLabels"
- [options]="cpuChartOptions"
- [colors]="cpuChartColors"
- [legend]="cpuChartLegend"
- [chartType]="cpuChartType"
- (click)="loadClickData()">
- </canvas>
- </mat-card-content>
- </mat-card>
-<mat-divider></mat-divider>
- <mat-tab-group>
- <mat-tab label="Pendulum xApp">
- <mat-grid-list cols="3" rowHeight="3:2">
- <mat-grid-tile>
- <mat-card>
- <div>Additional Delay</div>
- <mat-slider
- thumbLabel
- tickInterval="1"
- min="0"
- [max]="sliderDelayMax"
- [(ngModel)]="delay" (click)="saveDelay()" ></mat-slider>
- </mat-card>
- </mat-grid-tile>
- <mat-grid-tile>
- <mat-card class="bar-chart-card">
- <mat-card-header>
- <mat-card-title>Pendulum Control Loop Latency</mat-card-title>
- </mat-card-header>
- <mat-card-content>
- <canvas baseChart
- [datasets]="latencyChartData"
- [labels]="latencyChartLabels"
- [options]="latencyChartOptions"
- [colors]="latencyChartColors"
- [legend]="latencyChartLegend"
- [chartType]="latencyChartType"
- (click)="loadClickData()">
- </canvas>
- </mat-card-content>
- </mat-card>
- </mat-grid-tile>
- <mat-grid-tile>
- <mat-card class="bar-chart-card">
- <mat-card-header>
- <mat-card-title>Pendulum Control Load</mat-card-title>
- </mat-card-header>
- <mat-card-content>
- <canvas baseChart
- [datasets]="loadChartData"
- [labels]="loadChartLabels"
- [options]="loadChartOptions"
- [colors]="loadChartColors"
- [legend]="loadChartLegend"
- [chartType]="loadChartType"
- (click)="loadClickData()">
- </canvas>
- </mat-card-content>
- </mat-card>
- </mat-grid-tile>
- </mat-grid-list>
+ <mat-card class="bar-chart-card">
+ <mat-card-header>
+ <mat-card-title>RIC Total Load</mat-card-title>
+ </mat-card-header>
+ <mat-card-content>
+ <canvas baseChart [datasets]="cpuChartData" [labels]="cpuChartLabels" [options]="cpuChartOptions"
+ [colors]="cpuChartColors" [legend]="cpuChartLegend" [chartType]="cpuChartType"
+ (click)="loadClickData()">
+ </canvas>
+ </mat-card-content>
+ </mat-card>
- </mat-tab>
- <mat-tab label="Reporting xApp">
- <mat-grid-list cols="3" rowHeight="3:2">
- <mat-grid-tile>
-
-<!-- <mat-slide-toggle labelPosition="before" [(ngModel)]="checked" (click)="saveLoad($event)" >Additional Load</mat-slide-toggle> -->
- <mat-card>
- <div>Additional Load</div>
- <mat-slider
- thumbLabel
- tickInterval="1"
- min="0"
- [max]="sliderLoadMax"
- [(ngModel)]="load" (click)="saveLoad()" ></mat-slider>
- </mat-card>
-
- </mat-grid-tile>
- </mat-grid-list>
-
- </mat-tab>
- </mat-tab-group>
+ <mat-divider></mat-divider>
+ <mat-tab-group>
+ <mat-tab label="Pendulum xApp">
+ <mat-grid-list cols="3" rowHeight="3:2">
+ <mat-grid-tile>
+ <mat-card>
+ <div>Additional Delay</div>
+ <mat-slider thumbLabel tickInterval="1" min="0" [max]="sliderDelayMax" [(ngModel)]="delay"
+ (click)="saveDelay()"></mat-slider>
+ </mat-card>
+ </mat-grid-tile>
+ <mat-grid-tile>
+ <mat-card class="bar-chart-card">
+ <mat-card-header>
+ <mat-card-title>Pendulum Control Loop Latency</mat-card-title>
+ </mat-card-header>
+ <mat-card-content>
+ <canvas baseChart [datasets]="latencyChartData" [labels]="latencyChartLabels"
+ [options]="latencyChartOptions" [colors]="latencyChartColors"
+ [legend]="latencyChartLegend" [chartType]="latencyChartType" (click)="loadClickData()">
+ </canvas>
+ </mat-card-content>
+ </mat-card>
+ </mat-grid-tile>
+ <mat-grid-tile>
+ <mat-card class="bar-chart-card">
+ <mat-card-header>
+ <mat-card-title>Pendulum Control Load</mat-card-title>
+ </mat-card-header>
+ <mat-card-content>
+ <canvas baseChart [datasets]="loadChartData" [labels]="loadChartLabels"
+ [options]="loadChartOptions" [colors]="loadChartColors" [legend]="loadChartLegend"
+ [chartType]="loadChartType" (click)="loadClickData()">
+ </canvas>
+ </mat-card-content>
+ </mat-card>
+ </mat-grid-tile>
+ </mat-grid-list>
+ </mat-tab>
+ <mat-tab label="Reporting xApp">
+ <mat-grid-list cols="3" rowHeight="3:2">
+ <mat-grid-tile>
+ <mat-card>
+ <div>Additional Load</div>
+ <mat-slider thumbLabel tickInterval="1" min="0" [max]="sliderLoadMax" [(ngModel)]="load"
+ (click)="saveLoad()"></mat-slider>
+ </mat-card>
+ </mat-grid-tile>
+ </mat-grid-list>
+ </mat-tab>
+ </mat-tab-group>
</div>
- <app-config-event></app-config-event>
+
+<rd-app-config-event></rd-app-config-event>
import { map } from 'rxjs/operators';
@Component({
- selector: 'app-stats',
+ selector: 'rd-stats',
templateUrl: './stats.component.html',
styleUrls: ['./stats.component.scss']
})
import {UiService} from '../../services/ui/ui.service';
@Component({
- selector: 'app-catalog-card',
+ selector: 'rd-app-catalog-card',
templateUrl: './catalog-card.component.html',
styleUrls: ['./catalog-card.component.css']
})
import { StatsService } from '../../services/stats/stats.service';
@Component({
- selector: 'app-config-event',
+ selector: 'rd-app-config-event',
templateUrl: './config-event.component.html',
styleUrls: ['./config-event.component.scss']
})
import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material';
@Component({
- selector: 'app-confirm-dialog',
+ selector: 'rd-confirm-dialog',
templateUrl: './confirm-dialog.component.html',
})
export class ConfirmDialogComponent implements OnInit {
-->
<div class="add__card" routerLink="/control" [ngClass]="{'add__card-dark': darkMode}">
<div class="header__container">
- <span class="card__title">xApp Control</span><br><br><br>
+ <span class="card__title">RIC Control</span><br><br><br>
<div style="color: black; size: 1em; text-align: center">
<mat-icon>play_circle_outline</mat-icon> Start</div>
<div style="color: black; size: 1em; text-align: center">
* 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.
import {UiService} from '../../services/ui/ui.service';
@Component({
- selector: 'app-control-card',
+ selector: 'rd-control-card',
templateUrl: './control-card.component.html',
styleUrls: ['./control-card.component.css']
})
export class ControlCardComponent implements OnInit, OnDestroy {
darkMode: boolean;
- constructor(public router: Router, public ui: UiService) {
- }
+ constructor(public router: Router, public ui: UiService) { }
ngOnInit() {
this.ui.darkModeState.subscribe((isDark) => {
});
}
- ngOnDestroy() {
-
- }
+ ngOnDestroy() { }
openDetails() {
this.router.navigateByUrl('../../control');
}
@Component({
- selector: 'app-error-dialog',
+ selector: 'rd-error-dialog',
templateUrl: './error-dialog.component.html',
styleUrls: ['./error-dialog.component.scss']
})
import { FormControl, Validators } from '@angular/forms';
@Component({
- selector: 'app-modal-event',
+ selector: 'rd-modal-event',
templateUrl: './modal-event.component.html',
styleUrls: ['./modal-event.component.scss']
})
import {UiService} from '../../services/ui/ui.service';
@Component({
- selector: 'app-stat-card',
+ selector: 'rd-stat-card',
templateUrl: './stat-card.component.html',
styleUrls: ['./stat-card.component.css']
})
<link rel="icon" type="image/x-icon" href="assets/oran-logo.png">
</head>
<body>
- <app-root></app-root>
+ <rd-root></rd-root>
</body>
</html>
import { enableProdMode } from '@angular/core';
import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
-import { AppModule } from './app/app.module';
+import { RdModule } from './app/rd.module';
import { environment } from './environments/environment';
if (environment.production) {
enableProdMode();
}
-platformBrowserDynamic().bootstrapModule(AppModule)
+platformBrowserDynamic().bootstrapModule(RdModule)
.catch(err => console.error(err));