From 798e8ee38fcc7143a42267b00040db67fd483bd3 Mon Sep 17 00:00:00 2001 From: Abhay Chawla Date: Sat, 27 Jul 2019 01:11:30 +0530 Subject: [PATCH] feat(products): add saving products component (#454) Add saving products component to list all saving products. Fixes: #440 --- src/app/products/products-routing.module.ts | 16 ++++++++ src/app/products/products.component.html | 2 +- src/app/products/products.module.ts | 4 +- src/app/products/products.service.ts | 7 ++++ .../saving-products.component.html | 40 +++++++++++++++++++ .../saving-products.component.scss | 0 .../saving-products.component.spec.ts | 25 ++++++++++++ .../saving-products.component.ts | 36 +++++++++++++++++ .../saving-products.resolver.ts | 31 ++++++++++++++ 9 files changed, 159 insertions(+), 2 deletions(-) create mode 100644 src/app/products/saving-products/saving-products.component.html create mode 100644 src/app/products/saving-products/saving-products.component.scss create mode 100644 src/app/products/saving-products/saving-products.component.spec.ts create mode 100644 src/app/products/saving-products/saving-products.component.ts create mode 100644 src/app/products/saving-products/saving-products.resolver.ts diff --git a/src/app/products/products-routing.module.ts b/src/app/products/products-routing.module.ts index 8bc7bcbbd..89a00d66f 100644 --- a/src/app/products/products-routing.module.ts +++ b/src/app/products/products-routing.module.ts @@ -14,6 +14,7 @@ import { LoanProductsComponent } from './loan-products/loan-products.component'; import { CreateLoanProductComponent } from './loan-products/create-loan-product/create-loan-product.component'; import { ViewLoanProductComponent } from './loan-products/view-loan-product/view-loan-product.component'; import { EditLoanProductComponent } from './loan-products/edit-loan-product/edit-loan-product.component'; +import { SavingProductsComponent } from './saving-products/saving-products.component'; import { ManageTaxConfigurationsComponent } from './manage-tax-configurations/manage-tax-configurations.component'; import { RecurringDepositProductsComponent } from './recurring-deposit-products/recurring-deposit-products.component'; import { ChargesComponent } from './charges/charges.component'; @@ -26,6 +27,7 @@ import { LoanProductsResolver } from './loan-products/loan-products.resolver'; import { LoanProductsTemplateResolver } from './loan-products/loan-products-template.resolver'; import { LoanProductResolver } from './loan-products/loan-product.resolver'; import { LoanProductAndTemplateResolver } from './loan-products/edit-loan-product/loan-product-and-template.resolver'; +import { SavingProductsResolver } from './saving-products/saving-products.resolver'; import { RecurringDepositProductsResolver } from './recurring-deposit-products/recurring-deposit-products.resolver'; import { ChargesResolver } from './charges/charges.resolver'; import { FixedDepositProductsResolver } from './fixed-deposit-products/fixed-deposit-products.resolver'; @@ -85,6 +87,19 @@ const routes: Routes = [ } ] }, + { + path: 'saving-products', + data: { title: extract('Saving Products'), breadcrumb: 'Saving Products' }, + children: [ + { + path: '', + component: SavingProductsComponent, + resolve: { + savingProducts: SavingProductsResolver + } + } + ] + }, { path: 'tax-configurations', data: { title: extract('Manage Tax Configurations'), breadcrumb: 'Manage Tax Configurations' }, @@ -153,6 +168,7 @@ const routes: Routes = [ LoanProductsTemplateResolver, LoanProductResolver, LoanProductAndTemplateResolver, + SavingProductsResolver, RecurringDepositProductsResolver, ChargesResolver, FixedDepositProductsResolver, diff --git a/src/app/products/products.component.html b/src/app/products/products.component.html index 9977b15fe..7cdcda652 100644 --- a/src/app/products/products.component.html +++ b/src/app/products/products.component.html @@ -16,7 +16,7 @@

Add new loan product or modify or inactivate loan product

- + diff --git a/src/app/products/products.module.ts b/src/app/products/products.module.ts index e4c64feb2..c3724f22f 100644 --- a/src/app/products/products.module.ts +++ b/src/app/products/products.module.ts @@ -26,6 +26,7 @@ import { ProductsMixComponent } from './products-mix/products-mix.component'; import { ManageTaxComponentsComponent } from './manage-tax-components/manage-tax-components.component'; import { ViewLoanProductComponent } from './loan-products/view-loan-product/view-loan-product.component'; import { EditLoanProductComponent } from './loan-products/edit-loan-product/edit-loan-product.component'; +import { SavingProductsComponent } from './saving-products/saving-products.component'; /** * Products Module @@ -56,7 +57,8 @@ import { EditLoanProductComponent } from './loan-products/edit-loan-product/edit ProductsMixComponent, ManageTaxComponentsComponent, ViewLoanProductComponent, - EditLoanProductComponent + EditLoanProductComponent, + SavingProductsComponent ], entryComponents: [ ], diff --git a/src/app/products/products.service.ts b/src/app/products/products.service.ts index 721424cf0..1de7b31e3 100644 --- a/src/app/products/products.service.ts +++ b/src/app/products/products.service.ts @@ -42,6 +42,13 @@ export class ProductsService { return this.http.put(`/loanproducts/${loanProductId}`, loanProduct); } + /** + * @returns {Observable} Saving products data + */ + getSavingProducts(): Observable { + return this.http.get('/savingsproducts'); + } + /** * @returns {Observable} Recurring deposit products data */ diff --git a/src/app/products/saving-products/saving-products.component.html b/src/app/products/saving-products/saving-products.component.html new file mode 100644 index 000000000..c60985ecd --- /dev/null +++ b/src/app/products/saving-products/saving-products.component.html @@ -0,0 +1,40 @@ +
+ +
+ +
+ +
+ + Filter + + +
+ +
+ + + + + + + + + + + + + + + + +
Name {{ savingProduct.name }} Short Name {{ savingProduct.shortName }}
+ + + +
+ +
diff --git a/src/app/products/saving-products/saving-products.component.scss b/src/app/products/saving-products/saving-products.component.scss new file mode 100644 index 000000000..e69de29bb diff --git a/src/app/products/saving-products/saving-products.component.spec.ts b/src/app/products/saving-products/saving-products.component.spec.ts new file mode 100644 index 000000000..76f27f73a --- /dev/null +++ b/src/app/products/saving-products/saving-products.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { SavingProductsComponent } from './saving-products.component'; + +describe('SavingProductsComponent', () => { + let component: SavingProductsComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ SavingProductsComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(SavingProductsComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/products/saving-products/saving-products.component.ts b/src/app/products/saving-products/saving-products.component.ts new file mode 100644 index 000000000..d66b6fdd2 --- /dev/null +++ b/src/app/products/saving-products/saving-products.component.ts @@ -0,0 +1,36 @@ +/** Angular Imports */ +import { Component, OnInit, ViewChild } from '@angular/core'; +import { MatPaginator, MatSort, MatTableDataSource } from '@angular/material'; +import { ActivatedRoute } from '@angular/router'; + +@Component({ + selector: 'mifosx-saving-products', + templateUrl: './saving-products.component.html', + styleUrls: ['./saving-products.component.scss'] +}) +export class SavingProductsComponent implements OnInit { + + savingProductsData: any; + displayedColumns: string[] = ['name', 'shortName']; + dataSource: MatTableDataSource; + + @ViewChild(MatPaginator) paginator: MatPaginator; + @ViewChild(MatSort) sort: MatSort; + + constructor(private route: ActivatedRoute) { + this.route.data.subscribe((data: { savingProducts: any }) => { + this.savingProductsData = data.savingProducts; + }); + } + + ngOnInit() { + this.dataSource = new MatTableDataSource(this.savingProductsData); + this.dataSource.paginator = this.paginator; + this.dataSource.sort = this.sort; + } + + applyFilter(filterValue: string) { + this.dataSource.filter = filterValue.trim().toLowerCase(); + } + +} diff --git a/src/app/products/saving-products/saving-products.resolver.ts b/src/app/products/saving-products/saving-products.resolver.ts new file mode 100644 index 000000000..55858e585 --- /dev/null +++ b/src/app/products/saving-products/saving-products.resolver.ts @@ -0,0 +1,31 @@ +/** 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'; + +/** + * Saving products data resolver. + */ +@Injectable() +export class SavingProductsResolver implements Resolve { + + /** + * + * @param {ProductsService} productsService Products service. + */ + constructor(private productsService: ProductsService) {} + + /** + * Returns the saving products data. + * @returns {Observable} + */ + resolve(): Observable { + return this.productsService.getSavingProducts(); + } + +}