diff --git a/ui/src/app/app.routing.ts b/ui/src/app/app.routing.ts
index 9903039c9..99b8d88de 100644
--- a/ui/src/app/app.routing.ts
+++ b/ui/src/app/app.routing.ts
@@ -1,9 +1,12 @@
import { NgModule } from '@angular/core';
-import { Routes, RouterModule } from '@angular/router';
+import { Routes, RouterModule, PreloadAllModules } from '@angular/router';
const routes: Routes = [
- { path: '', redirectTo: 'metadata', pathMatch: 'full' },
- { path: 'dashboard', redirectTo: 'metadata', pathMatch: 'full' },
+ { path: '', redirectTo: 'dashboard', pathMatch: 'full' },
+ {
+ path: 'dashboard',
+ loadChildren: './dashboard/dashboard.module#DashboardModule'
+ },
{
path: 'metadata',
loadChildren: './metadata/metadata.module#MetadataModule'
@@ -11,7 +14,9 @@ const routes: Routes = [
];
@NgModule({
- imports: [RouterModule.forRoot(routes)],
+ imports: [RouterModule.forRoot(routes, {
+ preloadingStrategy: PreloadAllModules
+ })],
exports: [RouterModule]
})
export class AppRoutingModule { }
diff --git a/ui/src/app/dashboard/container/dashboard.component.html b/ui/src/app/dashboard/container/dashboard.component.html
new file mode 100644
index 000000000..23c38125a
--- /dev/null
+++ b/ui/src/app/dashboard/container/dashboard.component.html
@@ -0,0 +1,29 @@
+
\ No newline at end of file
diff --git a/ui/src/app/dashboard/container/dashboard.component.scss b/ui/src/app/dashboard/container/dashboard.component.scss
new file mode 100644
index 000000000..5bfb3774a
--- /dev/null
+++ b/ui/src/app/dashboard/container/dashboard.component.scss
@@ -0,0 +1,15 @@
+@import '../../../theme/palette';
+
+:host {
+ .lead {
+ line-height: 36px;
+ }
+
+ .nav-tabs, .nav-link.active {
+ border-color: $brand-primary;
+ }
+
+ .nav-link:hover {
+ border-bottom-color: $brand-primary;
+ }
+}
\ No newline at end of file
diff --git a/ui/src/app/dashboard/container/dashboard.component.ts b/ui/src/app/dashboard/container/dashboard.component.ts
new file mode 100644
index 000000000..645a19559
--- /dev/null
+++ b/ui/src/app/dashboard/container/dashboard.component.ts
@@ -0,0 +1,18 @@
+import { Component, ChangeDetectionStrategy } from '@angular/core';
+import { Store } from '@ngrx/store';
+
+import * as fromRoot from '../../app.reducer';
+
+@Component({
+ selector: 'dashboard-page',
+ changeDetection: ChangeDetectionStrategy.OnPush,
+ templateUrl: './dashboard.component.html',
+ styleUrls: ['./dashboard.component.scss']
+})
+export class DashboardPageComponent {
+
+ constructor(
+ private store: Store
+ ) {
+ }
+}
diff --git a/ui/src/app/dashboard/dashboard.module.ts b/ui/src/app/dashboard/dashboard.module.ts
new file mode 100644
index 000000000..0b6d332b4
--- /dev/null
+++ b/ui/src/app/dashboard/dashboard.module.ts
@@ -0,0 +1,25 @@
+import { NgModule } from '@angular/core';
+
+import { I18nModule } from '../i18n/i18n.module';
+import { CustomWidgetRegistry } from '../schema-form/registry';
+import { WidgetRegistry } from 'ngx-schema-form';
+import { DashboardPageComponent } from './container/dashboard.component';
+import { DashboardRoutingModule } from './dashboard.routing';
+import { MetadataModule } from '../metadata/metadata.module';
+import { UserModule } from '../user/user.module';
+
+@NgModule({
+ imports: [
+ DashboardRoutingModule,
+ MetadataModule,
+ UserModule,
+ I18nModule
+ ],
+ providers: [
+ { provide: WidgetRegistry, useClass: CustomWidgetRegistry }
+ ],
+ declarations: [
+ DashboardPageComponent
+ ]
+})
+export class DashboardModule { }
diff --git a/ui/src/app/dashboard/dashboard.routing.ts b/ui/src/app/dashboard/dashboard.routing.ts
new file mode 100644
index 000000000..320daf628
--- /dev/null
+++ b/ui/src/app/dashboard/dashboard.routing.ts
@@ -0,0 +1,60 @@
+import { NgModule } from '@angular/core';
+import { Routes, RouterModule } from '@angular/router';
+import { DashboardPageComponent } from './container/dashboard.component';
+import { ManagerComponent } from '../metadata/manager/container/manager.component';
+import { MetadataPageComponent } from '../metadata/metadata.component';
+import { DashboardResolversListComponent } from '../metadata/manager/container/dashboard-resolvers-list.component';
+import { DashboardProvidersListComponent } from '../metadata/manager/container/dashboard-providers-list.component';
+import { UserPageComponent } from '../user/user.component';
+import { AdminComponent } from '../user/admin/admin.component';
+import { AdminManagementPageComponent } from '../user/admin/container/admin-management.component';
+
+const routes: Routes = [
+ {
+ path: '',
+ component: DashboardPageComponent,
+ children: [
+ {
+ path: 'metadata',
+ component: MetadataPageComponent,
+ children: [
+ {
+ path: 'manager',
+ component: ManagerComponent,
+ children: [
+ { path: '', redirectTo: 'resolvers', pathMatch: 'prefix' },
+ { path: 'resolvers', component: DashboardResolversListComponent },
+ { path: 'providers', component: DashboardProvidersListComponent },
+ ]
+ }
+ ]
+ },
+ {
+ path: 'users',
+ component: UserPageComponent,
+ children: [
+ { path: '', redirectTo: 'admin', pathMatch: 'prefix' },
+ {
+ path: 'admin',
+ component: AdminComponent,
+ children: [
+ { path: '', redirectTo: 'management', pathMatch: 'prefix' },
+ {
+ path: 'management',
+ component: AdminManagementPageComponent
+ }
+ ]
+ }
+ ]
+ }
+ ],
+ },
+];
+
+@NgModule({
+ imports: [
+ RouterModule.forChild(routes),
+ ],
+ exports: [RouterModule]
+})
+export class DashboardRoutingModule { }
diff --git a/ui/src/app/metadata/manager/container/manager.component.html b/ui/src/app/metadata/manager/container/manager.component.html
index 2c354d7e3..0680b43f9 100644
--- a/ui/src/app/metadata/manager/container/manager.component.html
+++ b/ui/src/app/metadata/manager/container/manager.component.html
@@ -1,11 +1 @@
-
+
diff --git a/ui/src/app/metadata/manager/manager.routing.ts b/ui/src/app/metadata/manager/manager.routing.ts
index 9f9c21179..67dbf9283 100644
--- a/ui/src/app/metadata/manager/manager.routing.ts
+++ b/ui/src/app/metadata/manager/manager.routing.ts
@@ -1,17 +1,3 @@
import { Routes } from '@angular/router';
-import { DashboardResolversListComponent } from './container/dashboard-resolvers-list.component';
-import { DashboardProvidersListComponent } from './container/dashboard-providers-list.component';
-import { ManagerComponent } from './container/manager.component';
-export const ManagerRoutes: Routes = [
- { path: '', redirectTo: 'manager', pathMatch: 'prefix' },
- {
- path: 'manager',
- component: ManagerComponent,
- children: [
- { path: '', redirectTo: 'resolvers', pathMatch: 'prefix' },
- { path: 'resolvers', component: DashboardResolversListComponent },
- { path: 'providers', component: DashboardProvidersListComponent },
- ]
- }
-];
+export const ManagerRoutes: Routes = [];
diff --git a/ui/src/app/user/admin/admin.component.html b/ui/src/app/user/admin/admin.component.html
new file mode 100644
index 000000000..90c6b6463
--- /dev/null
+++ b/ui/src/app/user/admin/admin.component.html
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/ui/src/app/user/admin/admin.component.ts b/ui/src/app/user/admin/admin.component.ts
new file mode 100644
index 000000000..b3314e7ec
--- /dev/null
+++ b/ui/src/app/user/admin/admin.component.ts
@@ -0,0 +1,10 @@
+import { Component } from '@angular/core';
+
+@Component({
+ selector: 'admin-page',
+ templateUrl: './admin.component.html',
+ styleUrls: []
+})
+export class AdminComponent {
+ constructor() { }
+}
diff --git a/ui/src/app/user/admin/admin.module.ts b/ui/src/app/user/admin/admin.module.ts
new file mode 100644
index 000000000..699628410
--- /dev/null
+++ b/ui/src/app/user/admin/admin.module.ts
@@ -0,0 +1,44 @@
+import { NgModule, ModuleWithProviders } from '@angular/core';
+import { HttpClientModule } from '@angular/common/http';
+import { RouterModule, Routes } from '@angular/router';
+import { CommonModule } from '@angular/common';
+import { ReactiveFormsModule } from '@angular/forms';
+
+import { SharedModule } from '../../shared/shared.module';
+import { I18nModule } from '../../i18n/i18n.module';
+import { AdminManagementPageComponent } from './container/admin-management.component';
+import { AdminComponent } from './admin.component';
+
+@NgModule({
+ declarations: [
+ AdminManagementPageComponent,
+ AdminComponent
+ ],
+ entryComponents: [
+ ],
+ imports: [
+ CommonModule,
+ ReactiveFormsModule,
+ RouterModule,
+ HttpClientModule,
+ SharedModule,
+ I18nModule
+ ]
+})
+export class UserAdminModule {
+ static forRoot(): ModuleWithProviders {
+ return {
+ ngModule: RootUserAdminModule,
+ providers: []
+ };
+ }
+}
+
+@NgModule({
+ imports: [
+ UserAdminModule,
+ // StoreModule.forFeature('admin', reducers),
+ // EffectsModule.forFeature([]),
+ ],
+})
+export class RootUserAdminModule { }
diff --git a/ui/src/app/user/admin/container/admin-management.component.html b/ui/src/app/user/admin/container/admin-management.component.html
new file mode 100644
index 000000000..a538f679e
--- /dev/null
+++ b/ui/src/app/user/admin/container/admin-management.component.html
@@ -0,0 +1,14 @@
+
\ No newline at end of file
diff --git a/ui/src/app/user/admin/container/admin-management.component.ts b/ui/src/app/user/admin/container/admin-management.component.ts
new file mode 100644
index 000000000..6de38a402
--- /dev/null
+++ b/ui/src/app/user/admin/container/admin-management.component.ts
@@ -0,0 +1,17 @@
+import { Component, ChangeDetectionStrategy } from '@angular/core';
+import { Store } from '@ngrx/store';
+
+import * as fromRoot from '../../../app.reducer';
+
+@Component({
+ selector: 'admin-management-page',
+ changeDetection: ChangeDetectionStrategy.OnPush,
+ templateUrl: './admin-management.component.html',
+ styleUrls: []
+})
+export class AdminManagementPageComponent {
+
+ constructor(
+ private store: Store
+ ) { }
+}
diff --git a/ui/src/app/user/user.component.html b/ui/src/app/user/user.component.html
new file mode 100644
index 000000000..0680b43f9
--- /dev/null
+++ b/ui/src/app/user/user.component.html
@@ -0,0 +1 @@
+
diff --git a/ui/src/app/user/user.component.ts b/ui/src/app/user/user.component.ts
new file mode 100644
index 000000000..6dcb47615
--- /dev/null
+++ b/ui/src/app/user/user.component.ts
@@ -0,0 +1,17 @@
+import { Component, ChangeDetectionStrategy } from '@angular/core';
+import { Store } from '@ngrx/store';
+
+import * as fromRoot from '../app.reducer';
+
+@Component({
+ selector: 'user-page',
+ changeDetection: ChangeDetectionStrategy.OnPush,
+ templateUrl: './user.component.html',
+ styleUrls: []
+})
+export class UserPageComponent {
+
+ constructor(
+ private store: Store
+ ) {}
+}
diff --git a/ui/src/app/user/user.module.ts b/ui/src/app/user/user.module.ts
new file mode 100644
index 000000000..fc21cca5b
--- /dev/null
+++ b/ui/src/app/user/user.module.ts
@@ -0,0 +1,24 @@
+import { NgModule } from '@angular/core';
+
+import { UserRoutingModule } from './user.routing';
+import { I18nModule } from '../i18n/i18n.module';
+import { CustomWidgetRegistry } from '../schema-form/registry';
+import { WidgetRegistry } from 'ngx-schema-form';
+import { UserPageComponent } from './user.component';
+import { UserAdminModule } from './admin/admin.module';
+
+
+@NgModule({
+ imports: [
+ UserRoutingModule,
+ UserAdminModule.forRoot(),
+ I18nModule
+ ],
+ providers: [
+ { provide: WidgetRegistry, useClass: CustomWidgetRegistry }
+ ],
+ declarations: [
+ UserPageComponent
+ ]
+})
+export class UserModule { }
diff --git a/ui/src/app/user/user.routing.ts b/ui/src/app/user/user.routing.ts
new file mode 100644
index 000000000..431d0dddd
--- /dev/null
+++ b/ui/src/app/user/user.routing.ts
@@ -0,0 +1,20 @@
+import { NgModule } from '@angular/core';
+import { Routes, RouterModule } from '@angular/router';
+import { UserPageComponent } from './user.component';
+
+
+const routes: Routes = [
+ {
+ path: '',
+ component: UserPageComponent,
+ children: []
+ },
+];
+
+@NgModule({
+ imports: [
+ RouterModule.forChild(routes),
+ ],
+ exports: [RouterModule]
+})
+export class UserRoutingModule { }