From 26b7431f635e46f22f64f2322dac5dbfe18fe64d Mon Sep 17 00:00:00 2001 From: Ryan Mathis Date: Thu, 6 Dec 2018 10:22:18 -0700 Subject: [PATCH] SHIBUI-1031 Implemented tab for user administration --- ui/src/app/app.routing.ts | 13 ++-- .../container/dashboard.component.html | 29 +++++++++ .../container/dashboard.component.scss | 15 +++++ .../container/dashboard.component.ts | 18 ++++++ ui/src/app/dashboard/dashboard.module.ts | 25 ++++++++ ui/src/app/dashboard/dashboard.routing.ts | 60 +++++++++++++++++++ .../manager/container/manager.component.html | 12 +--- .../app/metadata/manager/manager.routing.ts | 16 +---- ui/src/app/user/admin/admin.component.html | 1 + ui/src/app/user/admin/admin.component.ts | 10 ++++ ui/src/app/user/admin/admin.module.ts | 44 ++++++++++++++ .../container/admin-management.component.html | 14 +++++ .../container/admin-management.component.ts | 17 ++++++ ui/src/app/user/user.component.html | 1 + ui/src/app/user/user.component.ts | 17 ++++++ ui/src/app/user/user.module.ts | 24 ++++++++ ui/src/app/user/user.routing.ts | 20 +++++++ 17 files changed, 306 insertions(+), 30 deletions(-) create mode 100644 ui/src/app/dashboard/container/dashboard.component.html create mode 100644 ui/src/app/dashboard/container/dashboard.component.scss create mode 100644 ui/src/app/dashboard/container/dashboard.component.ts create mode 100644 ui/src/app/dashboard/dashboard.module.ts create mode 100644 ui/src/app/dashboard/dashboard.routing.ts create mode 100644 ui/src/app/user/admin/admin.component.html create mode 100644 ui/src/app/user/admin/admin.component.ts create mode 100644 ui/src/app/user/admin/admin.module.ts create mode 100644 ui/src/app/user/admin/container/admin-management.component.html create mode 100644 ui/src/app/user/admin/container/admin-management.component.ts create mode 100644 ui/src/app/user/user.component.html create mode 100644 ui/src/app/user/user.component.ts create mode 100644 ui/src/app/user/user.module.ts create mode 100644 ui/src/app/user/user.routing.ts 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 @@ +
+
+
+
+
+ Admin Management +
+
+
+
+ +
+
+
\ 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 { }