From 40e328ceb47df4b5e4eb581f116d5e510aea08b0 Mon Sep 17 00:00:00 2001 From: Jonathan Zhang <41968151+jonathanzhang53@users.noreply.github.com> Date: Sat, 8 Dec 2018 10:04:28 -0600 Subject: [PATCH] feat: add manage hooks component (#339) Fixes #179 --- .../manage-hooks/manage-hooks.component.html | 49 ++++++++++++++ .../manage-hooks/manage-hooks.component.scss | 15 +++++ .../manage-hooks.component.spec.ts | 25 +++++++ .../manage-hooks/manage-hooks.component.ts | 65 +++++++++++++++++++ .../manage-hooks/manage-hooks.resolver.ts | 30 +++++++++ src/app/system/system-routing.module.ts | 13 +++- src/app/system/system.component.html | 2 +- src/app/system/system.module.ts | 4 +- src/app/system/system.service.ts | 7 ++ 9 files changed, 207 insertions(+), 3 deletions(-) create mode 100644 src/app/system/manage-hooks/manage-hooks.component.html create mode 100644 src/app/system/manage-hooks/manage-hooks.component.scss create mode 100644 src/app/system/manage-hooks/manage-hooks.component.spec.ts create mode 100644 src/app/system/manage-hooks/manage-hooks.component.ts create mode 100644 src/app/system/manage-hooks/manage-hooks.resolver.ts diff --git a/src/app/system/manage-hooks/manage-hooks.component.html b/src/app/system/manage-hooks/manage-hooks.component.html new file mode 100644 index 000000000..847437757 --- /dev/null +++ b/src/app/system/manage-hooks/manage-hooks.component.html @@ -0,0 +1,49 @@ +
+ +
+ +
+ +
+ + Filter + + +
+ +
+ + + + + + + + + + + + + + + + + + + + + +
Hook Template {{ hook.name }} Hook Name {{ hook.displayName }} Status +
+ +
+
+ + + +
+ +
diff --git a/src/app/system/manage-hooks/manage-hooks.component.scss b/src/app/system/manage-hooks/manage-hooks.component.scss new file mode 100644 index 000000000..49a7efc0c --- /dev/null +++ b/src/app/system/manage-hooks/manage-hooks.component.scss @@ -0,0 +1,15 @@ +table { + width: 100%; + + .select-row:hover { + cursor: pointer; + } +} + +.true { + color: #32cd32; +} + +.false { + color: #f44366; +} diff --git a/src/app/system/manage-hooks/manage-hooks.component.spec.ts b/src/app/system/manage-hooks/manage-hooks.component.spec.ts new file mode 100644 index 000000000..4869896c2 --- /dev/null +++ b/src/app/system/manage-hooks/manage-hooks.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ManageHooksComponent } from './manage-hooks.component'; + +describe('ManageHooksComponent', () => { + let component: ManageHooksComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ ManageHooksComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(ManageHooksComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/system/manage-hooks/manage-hooks.component.ts b/src/app/system/manage-hooks/manage-hooks.component.ts new file mode 100644 index 000000000..7a67ec0a1 --- /dev/null +++ b/src/app/system/manage-hooks/manage-hooks.component.ts @@ -0,0 +1,65 @@ +/** Angular Imports */ +import { Component, OnInit, ViewChild } from '@angular/core'; +import { MatTableDataSource, MatPaginator, MatSort } from '@angular/material'; +import { ActivatedRoute } from '@angular/router'; + +/** rxjs Imports */ +import { of } from 'rxjs'; + +/** + * Manage Hooks component. + */ +@Component({ + selector: 'mifosx-manage-hooks', + templateUrl: './manage-hooks.component.html', + styleUrls: ['./manage-hooks.component.scss'] +}) +export class ManageHooksComponent implements OnInit { + + /** Hook data. */ + hookData: any; + /** Columns to be displayed in manage hooks table. */ + displayedColumns: string[] = ['name', 'displayName', 'isActive']; + /** Data source for manage hooks table. */ + dataSource: MatTableDataSource; + + /** Paginator for manage hooks table. */ + @ViewChild(MatPaginator) paginator: MatPaginator; + /** Sorter for manage hooks table. */ + @ViewChild(MatSort) sort: MatSort; + + /** + * Retrieves the hooks data from `resolve`. + * @param {ActivatedRoute} route Activated Route. + */ + constructor(private route: ActivatedRoute) { + this.route.data.subscribe(( data: { hooks: any }) => { + this.hookData = data.hooks; + }); + } + + /** + * Filters data in manage data tables table based on passed value. + * @param {string} filterValue Value to filter data. + */ + applyFilter(filterValue: string) { + this.dataSource.filter = filterValue.trim().toLowerCase(); + } + + /** + * Sets the manage hooks table. + */ + ngOnInit() { + this.setHooks(); + } + + /** + * Initializes the data source, paginator and sorter for manage hooks table. + */ + setHooks() { + this.dataSource = new MatTableDataSource(this.hookData); + this.dataSource.paginator = this.paginator; + this.dataSource.sort = this.sort; + } + +} diff --git a/src/app/system/manage-hooks/manage-hooks.resolver.ts b/src/app/system/manage-hooks/manage-hooks.resolver.ts new file mode 100644 index 000000000..8226bd9af --- /dev/null +++ b/src/app/system/manage-hooks/manage-hooks.resolver.ts @@ -0,0 +1,30 @@ +/** Angular Imports */ +import { Injectable } from '@angular/core'; +import { Resolve } from '@angular/router'; + +/** rxjs Imports */ +import { Observable } from 'rxjs'; + +/** Custom Services */ +import { SystemService } from '../system.service'; + +/** + * Manage hooks data resolver. + */ +@Injectable() +export class ManageHooksResolver implements Resolve { + + /** + * @param {SystemService} systemService System service. + */ + constructor(private systemService: SystemService) {} + + /** + * Returns the manage hooks data. + * @returns {Observable} + */ + resolve(): Observable { + return this.systemService.getHooks(); + } + +} diff --git a/src/app/system/system-routing.module.ts b/src/app/system/system-routing.module.ts index ba5b4781b..0bf577b0d 100644 --- a/src/app/system/system-routing.module.ts +++ b/src/app/system/system-routing.module.ts @@ -11,10 +11,12 @@ import { CodesComponent } from './codes/codes.component'; import { CreateCodeComponent } from './codes/create-code/create-code.component'; import { ExternalServicesComponent } from './external-services/external-services.component'; import { ManageDataTablesComponent } from './manage-data-tables/manage-data-tables.component'; +import { ManageHooksComponent } from './manage-hooks/manage-hooks.component'; /** Custom Resolvers */ import { CodesResolver } from './codes/codes.resolver'; import { ManageDataTablesResolver } from './manage-data-tables/manage-data-tables.resolver'; +import { ManageHooksResolver } from './manage-hooks/manage-hooks.resolver'; const routes: Routes = [ Route.withShell([ @@ -58,6 +60,14 @@ const routes: Routes = [ }, data: { title: extract('Manage Data Tables'), breadcrumb: 'Manage Data Tables' }, }, + { + path: 'hooks', + component: ManageHooksComponent, + resolve: { + hooks: ManageHooksResolver + }, + data: { title: extract('Manage Hooks'), breadcrumb: 'Manage Hooks' }, + }, ] } ]) @@ -68,7 +78,8 @@ const routes: Routes = [ exports: [RouterModule], providers: [ CodesResolver, - ManageDataTablesResolver + ManageDataTablesResolver, + ManageHooksResolver, ] }) export class SystemRoutingModule { } diff --git a/src/app/system/system.component.html b/src/app/system/system.component.html index c885c0b9f..e25dc030e 100644 --- a/src/app/system/system.component.html +++ b/src/app/system/system.component.html @@ -40,7 +40,7 @@

Define or modify Maker Checker tasks

- + diff --git a/src/app/system/system.module.ts b/src/app/system/system.module.ts index ad6b37e13..15488e728 100644 --- a/src/app/system/system.module.ts +++ b/src/app/system/system.module.ts @@ -11,6 +11,7 @@ import { SystemComponent } from './system.component'; import { CreateCodeComponent } from './codes/create-code/create-code.component'; import { ExternalServicesComponent } from './external-services/external-services.component'; import { ManageDataTablesComponent } from './manage-data-tables/manage-data-tables.component'; +import { ManageHooksComponent } from './manage-hooks/manage-hooks.component'; @NgModule({ imports: [ @@ -22,7 +23,8 @@ import { ManageDataTablesComponent } from './manage-data-tables/manage-data-tabl CodesComponent, CreateCodeComponent, ExternalServicesComponent, - ManageDataTablesComponent + ManageDataTablesComponent, + ManageHooksComponent ] }) export class SystemModule { } diff --git a/src/app/system/system.service.ts b/src/app/system/system.service.ts index c3b155e68..032add292 100644 --- a/src/app/system/system.service.ts +++ b/src/app/system/system.service.ts @@ -25,6 +25,13 @@ export class SystemService { return this.http.get('/datatables'); } + /** + * @returns {Observable} Hooks. + */ + getHooks(): Observable { + return this.http.get('/hooks'); + } + /** * @returns {Observable} Fetches Codes. */