From be0366cc05e5f519fd46e394b77970ea565f3b30 Mon Sep 17 00:00:00 2001 From: punwai Date: Mon, 9 Dec 2019 12:34:12 +0000 Subject: [PATCH] feat: add manage tax groups component - Add manage tax groups component Fixes: #398 --- .../manage-tax-configurations.component.html | 2 +- .../manage-tax-groups.component.html | 35 ++++++++++ .../manage-tax-groups.component.scss | 3 + .../manage-tax-groups.component.spec.ts | 25 +++++++ .../manage-tax-groups.component.ts | 65 +++++++++++++++++++ .../manage-tax-groups.resolver.ts | 30 +++++++++ src/app/products/products-routing.module.ts | 13 +++- src/app/products/products.module.ts | 4 +- src/app/products/products.service.ts | 7 ++ 9 files changed, 181 insertions(+), 3 deletions(-) create mode 100644 src/app/products/manage-tax-groups/manage-tax-groups.component.html create mode 100644 src/app/products/manage-tax-groups/manage-tax-groups.component.scss create mode 100644 src/app/products/manage-tax-groups/manage-tax-groups.component.spec.ts create mode 100644 src/app/products/manage-tax-groups/manage-tax-groups.component.ts create mode 100644 src/app/products/manage-tax-groups/manage-tax-groups.resolver.ts diff --git a/src/app/products/manage-tax-configurations/manage-tax-configurations.component.html b/src/app/products/manage-tax-configurations/manage-tax-configurations.component.html index 9e97747b8..bda3b63ee 100644 --- a/src/app/products/manage-tax-configurations/manage-tax-configurations.component.html +++ b/src/app/products/manage-tax-configurations/manage-tax-configurations.component.html @@ -24,7 +24,7 @@ - + diff --git a/src/app/products/manage-tax-groups/manage-tax-groups.component.html b/src/app/products/manage-tax-groups/manage-tax-groups.component.html new file mode 100644 index 000000000..f8be2bee2 --- /dev/null +++ b/src/app/products/manage-tax-groups/manage-tax-groups.component.html @@ -0,0 +1,35 @@ +
+ +
+ +
+ +
+ + Filter + + +
+ +
+ + + + + + + + + + + +
Name {{ taxGroups.name }}
+ + + +
+ +
diff --git a/src/app/products/manage-tax-groups/manage-tax-groups.component.scss b/src/app/products/manage-tax-groups/manage-tax-groups.component.scss new file mode 100644 index 000000000..1922e7ffa --- /dev/null +++ b/src/app/products/manage-tax-groups/manage-tax-groups.component.scss @@ -0,0 +1,3 @@ +table { + width: 100%; +} diff --git a/src/app/products/manage-tax-groups/manage-tax-groups.component.spec.ts b/src/app/products/manage-tax-groups/manage-tax-groups.component.spec.ts new file mode 100644 index 000000000..5032b9ef4 --- /dev/null +++ b/src/app/products/manage-tax-groups/manage-tax-groups.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ManageTaxGroupsComponent } from './manage-tax-groups.component'; + +describe('ManageTaxGroupsComponent', () => { + let component: ManageTaxGroupsComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ ManageTaxGroupsComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(ManageTaxGroupsComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/products/manage-tax-groups/manage-tax-groups.component.ts b/src/app/products/manage-tax-groups/manage-tax-groups.component.ts new file mode 100644 index 000000000..3249cb9bc --- /dev/null +++ b/src/app/products/manage-tax-groups/manage-tax-groups.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 Tax Groups component. + */ +@Component({ + selector: 'mifosx-manage-tax-groups', + templateUrl: './manage-tax-groups.component.html', + styleUrls: ['./manage-tax-groups.component.scss'] +}) +export class ManageTaxGroupsComponent implements OnInit { + + /** Tax Groups data. */ + taxGroupsData: any; + /** Columns to be displayed in tax groups table. */ + displayedColumns: string[] = ['name']; + /** Data source for tax groups table. */ + dataSource: MatTableDataSource; + + /** Paginator for tax groups table. */ + @ViewChild(MatPaginator) paginator: MatPaginator; + /** Sorter for tax groups table. */ + @ViewChild(MatSort) sort: MatSort; + + /** + * Retrieves the tax groups data from `resolve`. + * @param {ActivatedRoute} route Activated Route. + */ + constructor(private route: ActivatedRoute) { + this.route.data.subscribe(( data: { taxGroups: any }) => { + this.taxGroupsData = data.taxGroups; + }); + } + + /** + * Filters data in tax groups table based on passed value. + * @param {string} filterValue Value to filter data. + */ + applyFilter(filterValue: string) { + this.dataSource.filter = filterValue.trim().toLowerCase(); + } + + /** + * Sets the tax groups table. + */ + ngOnInit() { + this.setTaxGroups(); + } + + /** + * Initializes the data source, paginator and sorter for tax groups table. + */ + setTaxGroups() { + this.dataSource = new MatTableDataSource(this.taxGroupsData); + this.dataSource.paginator = this.paginator; + this.dataSource.sort = this.sort; + } + +} diff --git a/src/app/products/manage-tax-groups/manage-tax-groups.resolver.ts b/src/app/products/manage-tax-groups/manage-tax-groups.resolver.ts new file mode 100644 index 000000000..4f984a9c5 --- /dev/null +++ b/src/app/products/manage-tax-groups/manage-tax-groups.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 { ProductsService } from '../products.service'; + +/** + * Manage Tax Groups data resolver. + */ +@Injectable() +export class ManageTaxGroupsResolver implements Resolve { + + /** + * @param {ProductsService} productsService Products service. + */ + constructor(private productsService: ProductsService) {} + + /** + * Returns the tax groups data. + * @returns {Observable} + */ + resolve(): Observable { + return this.productsService.getTaxGroups(); + } + +} diff --git a/src/app/products/products-routing.module.ts b/src/app/products/products-routing.module.ts index a8fb27020..4ade60964 100644 --- a/src/app/products/products-routing.module.ts +++ b/src/app/products/products-routing.module.ts @@ -29,6 +29,7 @@ import { FixedDepositProductsComponent } from './fixed-deposit-products/fixed-de import { CreateFixedDepositProductComponent } from './fixed-deposit-products/create-fixed-deposit-product/create-fixed-deposit-product.component'; import { ProductsMixComponent } from './products-mix/products-mix.component'; import { ManageTaxComponentsComponent } from './manage-tax-components/manage-tax-components.component'; +import { ManageTaxGroupsComponent } from './manage-tax-groups/manage-tax-groups.component'; /** Custom Resolvers */ import { LoanProductsResolver } from './loan-products/loan-products.resolver'; @@ -49,6 +50,7 @@ import { FixedDepositProductsResolver } from './fixed-deposit-products/fixed-dep import { FixedDepositProductsTemplateResolver } from './fixed-deposit-products/fixed-deposit-products-template.resolver'; import { ProductsMixResolver } from './products-mix/products-mix.resolver'; import { ManageTaxComponentsResolver } from './manage-tax-components/manage-tax-components.resolver'; +import { ManageTaxGroupsResolver } from './manage-tax-groups/manage-tax-groups.resolver'; /** Products Routes */ const routes: Routes = [ @@ -203,6 +205,14 @@ const routes: Routes = [ }, data: { title: extract('Manage Tax Components'), breadcrumb: 'Tax Components'}, }, + { + path: 'tax-groups', + component: ManageTaxGroupsComponent, + resolve: { + taxGroups: ManageTaxGroupsResolver + }, + data: { title: extract('Manage Tax Groups'), breadcrumb: 'Tax Groups'}, + }, ] }, { @@ -281,7 +291,8 @@ const routes: Routes = [ FixedDepositProductsResolver, FixedDepositProductsTemplateResolver, ProductsMixResolver, - ManageTaxComponentsResolver + ManageTaxComponentsResolver, + ManageTaxGroupsResolver ] }) export class ProductsRoutingModule { } diff --git a/src/app/products/products.module.ts b/src/app/products/products.module.ts index 00467c57f..25da8b1f2 100644 --- a/src/app/products/products.module.ts +++ b/src/app/products/products.module.ts @@ -59,6 +59,7 @@ import { FixedDepositProductChargesStepComponent } from './fixed-deposit-product import { FixedDepositProductAccountingStepComponent } from './fixed-deposit-products/fixed-deposit-product-stepper/fixed-deposit-product-accounting-step/fixed-deposit-product-accounting-step.component'; import { FixedDepositProductPreviewStepComponent } from './fixed-deposit-products/fixed-deposit-product-stepper/fixed-deposit-product-preview-step/fixed-deposit-product-preview-step.component'; import { DepositProductIncentiveFormDialogComponent } from './deposit-product-incentive-form-dialog/deposit-product-incentive-form-dialog.component'; +import { ManageTaxGroupsComponent } from './manage-tax-groups/manage-tax-groups.component'; /** * Products Module @@ -122,7 +123,8 @@ import { DepositProductIncentiveFormDialogComponent } from './deposit-product-in FixedDepositProductChargesStepComponent, FixedDepositProductAccountingStepComponent, FixedDepositProductPreviewStepComponent, - DepositProductIncentiveFormDialogComponent + DepositProductIncentiveFormDialogComponent, + ManageTaxGroupsComponent ], entryComponents: [ DepositProductIncentiveFormDialogComponent diff --git a/src/app/products/products.service.ts b/src/app/products/products.service.ts index b0936fc55..375e64cf4 100644 --- a/src/app/products/products.service.ts +++ b/src/app/products/products.service.ts @@ -126,6 +126,13 @@ export class ProductsService { return this.http.get('/taxes/component'); } + /** + * @returns {Observable} Tax Groups data + */ + getTaxGroups(): Observable { + return this.http.get('/taxes/group'); + } + /** * @returns {Observable} Product mixes data */