diff --git a/src/app/groups/common-resolvers/group-client-members.resolver.ts b/src/app/groups/common-resolvers/group-client-members.resolver.ts deleted file mode 100644 index a0b4e5717..000000000 --- a/src/app/groups/common-resolvers/group-client-members.resolver.ts +++ /dev/null @@ -1,32 +0,0 @@ -/** Angular Imports */ -import { Injectable } from '@angular/core'; -import { Resolve, ActivatedRouteSnapshot } from '@angular/router'; - -/** rxjs Imports */ -import { Observable } from 'rxjs'; - -/** Custom Services */ -import { GroupsService } from '../groups.service'; - -/** - * Groups Client Members data resolver. - */ -@Injectable() -export class GroupClientMembersResolver implements Resolve { - - /** - * @param {GroupsService} GroupsService Groups service. - */ - constructor(private groupsService: GroupsService) { } - - /** - * Returns the Group's Client Members data. - * @param {ActivatedRouteSnapshot} route Route Snapshot. - * @returns {Observable} - */ - resolve(route: ActivatedRouteSnapshot): Observable { - const groupId = route.parent.paramMap.get('groupId'); - return this.groupsService.getGroupClientMembers(groupId); - } - -} diff --git a/src/app/groups/groups-routing.module.ts b/src/app/groups/groups-routing.module.ts index a0b432db1..c2d87e934 100644 --- a/src/app/groups/groups-routing.module.ts +++ b/src/app/groups/groups-routing.module.ts @@ -13,12 +13,12 @@ import { GroupsComponent } from './groups.component'; import { GroupsViewComponent } from './groups-view/groups-view.component'; import { GeneralTabComponent } from './groups-view/general-tab/general-tab.component'; import { NotesTabComponent } from './groups-view/notes-tab/notes-tab.component'; +import { CommitteeTabComponent } from './groups-view/committee-tab/committee-tab.component'; /** Custom Resolvers */ import { GroupViewResolver } from './common-resolvers/group-view.resolver'; import { GroupAccountsResolver } from './common-resolvers/group-account.resolver'; import { GroupSummaryResolver } from './common-resolvers/group-summary.resolver'; -import { GroupClientMembersResolver } from './common-resolvers/group-client-members.resolver'; import { GroupNotesResolver } from './common-resolvers/group-notes.resolver'; /** Groups Routes */ @@ -47,7 +47,6 @@ const routes: Routes = [ data: { title: extract('General'), breadcrumb: 'General', routeParamBreadcrumb: false }, resolve: { groupAccountsData: GroupAccountsResolver, - groupClientMembers: GroupClientMembersResolver, groupSummary: GroupSummaryResolver } }, @@ -58,6 +57,11 @@ const routes: Routes = [ resolve: { groupNotes: GroupNotesResolver } + }, + { + path: 'committee', + component: CommitteeTabComponent, + data: { title: extract('Committee'), breadcrumb: 'Committee', routeParamBreadcrumb: false } } ] } @@ -77,7 +81,6 @@ const routes: Routes = [ providers: [GroupViewResolver, GroupAccountsResolver, GroupSummaryResolver, - GroupClientMembersResolver, GroupNotesResolver] }) export class GroupsRoutingModule { } diff --git a/src/app/groups/groups-view/committee-tab/committee-tab.component.html b/src/app/groups/groups-view/committee-tab/committee-tab.component.html new file mode 100644 index 000000000..7e6a73bd9 --- /dev/null +++ b/src/app/groups/groups-view/committee-tab/committee-tab.component.html @@ -0,0 +1,49 @@ +
+ +
+
+

Client Members

+
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
Name {{element.clientName}} Role {{element.role.name}} Client Id {{element.clientId}} Actions + + + +
+ +
diff --git a/src/app/groups/groups-view/committee-tab/committee-tab.component.scss b/src/app/groups/groups-view/committee-tab/committee-tab.component.scss new file mode 100644 index 000000000..4110ebc68 --- /dev/null +++ b/src/app/groups/groups-view/committee-tab/committee-tab.component.scss @@ -0,0 +1,22 @@ +.tab-container { + padding: 1%; + margin: 1%; + h3 { + margin:1% auto; + } + .table-header { + .action-button{ + margin-left: auto; + } + } + table { + width: 100%; + margin-bottom: 30px; + .account-action-button{ + min-width: 26px; + padding: 0 6px; + margin: 4px; + line-height: 25px; + } + } +} diff --git a/src/app/groups/groups-view/committee-tab/committee-tab.component.spec.ts b/src/app/groups/groups-view/committee-tab/committee-tab.component.spec.ts new file mode 100644 index 000000000..6c150a36b --- /dev/null +++ b/src/app/groups/groups-view/committee-tab/committee-tab.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { CommitteeTabComponent } from './committee-tab.component'; + +describe('CommitteeTabComponent', () => { + let component: CommitteeTabComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ CommitteeTabComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(CommitteeTabComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/groups/groups-view/committee-tab/committee-tab.component.ts b/src/app/groups/groups-view/committee-tab/committee-tab.component.ts new file mode 100644 index 000000000..0d10dc58e --- /dev/null +++ b/src/app/groups/groups-view/committee-tab/committee-tab.component.ts @@ -0,0 +1,33 @@ +/** Angular Imports */ +import { Component } from '@angular/core'; +import { ActivatedRoute } from '@angular/router'; + +/** + * Groups Committee Tab Component + */ +@Component({ + selector: 'mifosx-committee-tab', + templateUrl: './committee-tab.component.html', + styleUrls: ['./committee-tab.component.scss'] +}) +export class CommitteeTabComponent { + + /** Group Status */ + groupStatus: any; + /** Group Roles Data */ + groupRolesData: any; + /** Columns to be Displayed for client members table */ + groupRolesColumns: string[] = ['Name', 'Role', 'Client Id', 'Actions']; + + /** + * Fetches groups data from parent's `resolve`. + * @param {ActivatedRoute} route Activated Route. + */ + constructor(private route: ActivatedRoute) { + this.route.parent.data.subscribe((data: { groupViewData: any }) => { + this.groupRolesData = data.groupViewData.groupRoles; + this.groupStatus = data.groupViewData.status.value; + }); + } + +} diff --git a/src/app/groups/groups-view/general-tab/general-tab.component.ts b/src/app/groups/groups-view/general-tab/general-tab.component.ts index eff250e82..35efeff05 100644 --- a/src/app/groups/groups-view/general-tab/general-tab.component.ts +++ b/src/app/groups/groups-view/general-tab/general-tab.component.ts @@ -47,7 +47,9 @@ export class GeneralTabComponent { this.savingAccounts = data.groupAccountsData.savingsAccounts; this.loanAccounts = data.groupAccountsData.loanAccounts; this.groupSummary = data.groupSummary[0]; - this.groupClientMembers = data.groupClientMembers; + }); + this.route.parent.data.subscribe((data: { groupViewData: any }) => { + this.groupClientMembers = data.groupViewData.clientMembers; }); } diff --git a/src/app/groups/groups-view/groups-view.component.html b/src/app/groups/groups-view/groups-view.component.html index c53b69851..e9fbd9e89 100644 --- a/src/app/groups/groups-view/groups-view.component.html +++ b/src/app/groups/groups-view/groups-view.component.html @@ -100,10 +100,14 @@ [active]="general.isActive"> General - Notes + + Committee + diff --git a/src/app/groups/groups-view/notes-tab/notes-tab.component.html b/src/app/groups/groups-view/notes-tab/notes-tab.component.html index 9ce0613e3..7f5b9edc1 100644 --- a/src/app/groups/groups-view/notes-tab/notes-tab.component.html +++ b/src/app/groups/groups-view/notes-tab/notes-tab.component.html @@ -9,7 +9,7 @@ - diff --git a/src/app/groups/groups.module.ts b/src/app/groups/groups.module.ts index ed3a3ee38..c30bbf176 100644 --- a/src/app/groups/groups.module.ts +++ b/src/app/groups/groups.module.ts @@ -13,6 +13,7 @@ import { GroupsComponent } from './groups.component'; import { GroupsViewComponent } from './groups-view/groups-view.component'; import { GeneralTabComponent } from './groups-view/general-tab/general-tab.component'; import { NotesTabComponent } from './groups-view/notes-tab/notes-tab.component'; +import { CommitteeTabComponent } from './groups-view/committee-tab/committee-tab.component'; /** * Groups Module @@ -30,7 +31,8 @@ import { NotesTabComponent } from './groups-view/notes-tab/notes-tab.component'; GroupsComponent, GroupsViewComponent, GeneralTabComponent, - NotesTabComponent + NotesTabComponent, + CommitteeTabComponent ], providers: [DatePipe] }) diff --git a/src/app/groups/groups.service.ts b/src/app/groups/groups.service.ts index d5e7eb97c..f49efdfc5 100644 --- a/src/app/groups/groups.service.ts +++ b/src/app/groups/groups.service.ts @@ -71,16 +71,6 @@ export class GroupsService { return this.http.get(`/runreports/GroupSummaryCounts`, { params: httpParams }); } - /** - * @param groupId Group Id of group to get data for. - * @returns {Observable} Group Client Members data. - */ - getGroupClientMembers(groupId: string): Observable { - const httpParams = new HttpParams().set('associations', 'clientMembers'); - return this.http.get(`/groups/${groupId}`, { params: httpParams }) - .pipe(map((group: any) => group.clientMembers)); - } - /** * @param groupId Group Id of group to get data for. * @returns {Observable} Group Accounts data. diff --git a/src/app/shared/icons.module.ts b/src/app/shared/icons.module.ts index fa57559d2..c624caa7c 100644 --- a/src/app/shared/icons.module.ts +++ b/src/app/shared/icons.module.ts @@ -82,7 +82,8 @@ import { faCloudUploadAlt, faTimes, faStickyNote, - faStop + faStop, + faBan } from '@fortawesome/free-solid-svg-icons'; /** Add icons to the library for convenient access in other components. */ @@ -164,7 +165,8 @@ library.add( faCloudUploadAlt, faTimes, faStickyNote, - faStop + faStop, + faBan ); /**