diff --git a/src/app/system/manage-data-tables/manage-data-tables.component.html b/src/app/system/manage-data-tables/manage-data-tables.component.html new file mode 100644 index 000000000..f8cb2529e --- /dev/null +++ b/src/app/system/manage-data-tables/manage-data-tables.component.html @@ -0,0 +1,40 @@ +
+ +
+ +
+ +
+ + Filter + + +
+ +
+ + + + + + + + + + + + + + + + +
Data Table Name {{ dataTable.registeredTableName }} Associated With {{ dataTable.applicationTableName }}
+ + + +
+ +
diff --git a/src/app/system/manage-data-tables/manage-data-tables.component.scss b/src/app/system/manage-data-tables/manage-data-tables.component.scss new file mode 100644 index 000000000..24edb63bb --- /dev/null +++ b/src/app/system/manage-data-tables/manage-data-tables.component.scss @@ -0,0 +1,7 @@ +table { + width: 100%; + + .select-row:hover { + cursor: pointer; + } +} diff --git a/src/app/system/manage-data-tables/manage-data-tables.component.spec.ts b/src/app/system/manage-data-tables/manage-data-tables.component.spec.ts new file mode 100644 index 000000000..e959ea52e --- /dev/null +++ b/src/app/system/manage-data-tables/manage-data-tables.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ManageDataTablesComponent } from './manage-data-tables.component'; + +describe('ManageDataTablesComponent', () => { + let component: ManageDataTablesComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ ManageDataTablesComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(ManageDataTablesComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/system/manage-data-tables/manage-data-tables.component.ts b/src/app/system/manage-data-tables/manage-data-tables.component.ts new file mode 100644 index 000000000..7111b5fa2 --- /dev/null +++ b/src/app/system/manage-data-tables/manage-data-tables.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 Data Tables component. + */ +@Component({ + selector: 'mifosx-manage-data-tables', + templateUrl: './manage-data-tables.component.html', + styleUrls: ['./manage-data-tables.component.scss'] +}) +export class ManageDataTablesComponent implements OnInit { + + /** Data table data. */ + dataTableData: any; + /** Columns to be displayed in manage data tables table. */ + displayedColumns: string[] = ['registeredTableName', 'applicationTableName']; + /** Data source for manage data tables table. */ + dataSource: MatTableDataSource; + + /** Paginator for manage data tables table. */ + @ViewChild(MatPaginator) paginator: MatPaginator; + /** Sorter for manage data tables table. */ + @ViewChild(MatSort) sort: MatSort; + + /** + * Retrieves the data tables data from `resolve`. + * @param {ActivatedRoute} route Activated Route. + */ + constructor(private route: ActivatedRoute) { + this.route.data.subscribe(( data: { dataTables: any }) => { + this.dataTableData = data.dataTables; + }); + } + + /** + * 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 data tables table. + */ + ngOnInit() { + this.setDataTables(); + } + + /** + * Initializes the data source, paginator and sorter for manage data tables table. + */ + setDataTables() { + this.dataSource = new MatTableDataSource(this.dataTableData); + this.dataSource.paginator = this.paginator; + this.dataSource.sort = this.sort; + } + +} diff --git a/src/app/system/manage-data-tables/manage-data-tables.resolver.ts b/src/app/system/manage-data-tables/manage-data-tables.resolver.ts new file mode 100644 index 000000000..67813fd4e --- /dev/null +++ b/src/app/system/manage-data-tables/manage-data-tables.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 data tables data resolver. + */ +@Injectable() +export class ManageDataTablesResolver implements Resolve { + + /** + * @param {SystemService} systemService System service. + */ + constructor(private systemService: SystemService) {} + + /** + * Returns the manage data tables data. + * @returns {Observable} + */ + resolve(): Observable { + return this.systemService.getDataTables(); + } + +} diff --git a/src/app/system/system-routing.module.ts b/src/app/system/system-routing.module.ts index 3400c675f..ba5b4781b 100644 --- a/src/app/system/system-routing.module.ts +++ b/src/app/system/system-routing.module.ts @@ -10,9 +10,11 @@ import { SystemComponent } from './system.component'; 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'; /** Custom Resolvers */ import { CodesResolver } from './codes/codes.resolver'; +import { ManageDataTablesResolver } from './manage-data-tables/manage-data-tables.resolver'; const routes: Routes = [ Route.withShell([ @@ -48,6 +50,14 @@ const routes: Routes = [ component: ExternalServicesComponent, data: { title: extract('External Services'), breadcrumb: 'External Services' }, }, + { + path: 'data-tables', + component: ManageDataTablesComponent, + resolve: { + dataTables: ManageDataTablesResolver + }, + data: { title: extract('Manage Data Tables'), breadcrumb: 'Manage Data Tables' }, + }, ] } ]) @@ -56,6 +66,9 @@ const routes: Routes = [ @NgModule({ imports: [RouterModule.forChild(routes)], exports: [RouterModule], - providers: [CodesResolver] + providers: [ + CodesResolver, + ManageDataTablesResolver + ] }) export class SystemRoutingModule { } diff --git a/src/app/system/system.component.html b/src/app/system/system.component.html index a29f4b8b5..c885c0b9f 100644 --- a/src/app/system/system.component.html +++ b/src/app/system/system.component.html @@ -8,7 +8,7 @@ - + diff --git a/src/app/system/system.module.ts b/src/app/system/system.module.ts index 568c37413..ad6b37e13 100644 --- a/src/app/system/system.module.ts +++ b/src/app/system/system.module.ts @@ -10,6 +10,7 @@ import { CodesComponent } from './codes/codes.component'; 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'; @NgModule({ imports: [ @@ -21,6 +22,7 @@ import { ExternalServicesComponent } from './external-services/external-services CodesComponent, CreateCodeComponent, ExternalServicesComponent, + ManageDataTablesComponent ] }) export class SystemModule { } diff --git a/src/app/system/system.service.ts b/src/app/system/system.service.ts index b145a6161..c3b155e68 100644 --- a/src/app/system/system.service.ts +++ b/src/app/system/system.service.ts @@ -18,6 +18,13 @@ export class SystemService { */ constructor(private http: HttpClient) { } + /** + * @returns {Observable} Data tables. + */ + getDataTables(): Observable { + return this.http.get('/datatables'); + } + /** * @returns {Observable} Fetches Codes. */