From fb7845bbcef1e01e3f47e6d0c9e8917b08e9e6d5 Mon Sep 17 00:00:00 2001 From: Sylvain MATHIEU Date: Tue, 4 Jan 2022 15:33:20 +0100 Subject: [PATCH] group details, add filter on members list --- src/app/app.module.ts | 4 +++- .../group-details.component.html | 18 ++++++++++++----- .../group-details.component.scss | 14 +++++++++---- .../group-details/group-details.component.ts | 1 + .../group-details/members-filter.pipe.spec.ts | 8 ++++++++ .../group-details/members-filter.pipe.ts | 20 +++++++++++++++++++ .../group-details/paginator.pipe.ts | 12 +++++++++++ 7 files changed, 67 insertions(+), 10 deletions(-) create mode 100644 src/app/components/group-details/members-filter.pipe.spec.ts create mode 100644 src/app/components/group-details/members-filter.pipe.ts diff --git a/src/app/app.module.ts b/src/app/app.module.ts index 7aff44bb..2517da92 100644 --- a/src/app/app.module.ts +++ b/src/app/app.module.ts @@ -285,6 +285,7 @@ import { UserDetailComponent } from './components/user-management/user-detail/us import { AddUserToGroupDialogComponent } from './components/group-details/add-user-to-group-dialog/add-user-to-group-dialog.component'; import { RemoveUserToGroupDialogComponent } from './components/group-details/remove-user-to-group-dialog/remove-user-to-group-dialog.component'; import { PaginatorPipe } from './components/group-details/paginator.pipe'; +import { MembersFilterPipe } from './components/group-details/members-filter.pipe'; @NgModule({ declarations: [ @@ -484,7 +485,8 @@ import { PaginatorPipe } from './components/group-details/paginator.pipe'; UserDetailComponent, AddUserToGroupDialogComponent, RemoveUserToGroupDialogComponent, - PaginatorPipe + PaginatorPipe, + MembersFilterPipe ], imports: [ BrowserModule, diff --git a/src/app/components/group-details/group-details.component.html b/src/app/components/group-details/group-details.component.html index 5b6c370c..dc1709b1 100644 --- a/src/app/components/group-details/group-details.component.html +++ b/src/app/components/group-details/group-details.component.html @@ -6,7 +6,7 @@
- + Group name: @@ -27,14 +27,22 @@
-
Members:
+
Members:
person_add
-
-
{{user.username}}
+ + - +
diff --git a/src/app/components/group-details/group-details.component.scss b/src/app/components/group-details/group-details.component.scss index ac8538fc..c5fe588a 100644 --- a/src/app/components/group-details/group-details.component.scss +++ b/src/app/components/group-details/group-details.component.scss @@ -37,10 +37,16 @@ margin-bottom: 20px; } -.input-field { - width: 100%; -} - .button-div { float: right; } + +.members > .search { + display: flex; + flex-direction: row; + justify-content: stretch; + width: 100%; +} +mat-form-field { + width: 100%; +} diff --git a/src/app/components/group-details/group-details.component.ts b/src/app/components/group-details/group-details.component.ts index 7107e920..5578fb65 100644 --- a/src/app/components/group-details/group-details.component.ts +++ b/src/app/components/group-details/group-details.component.ts @@ -34,6 +34,7 @@ export class GroupDetailsComponent implements OnInit { members: User[]; editGroupForm: FormGroup; pageEvent: PageEvent | undefined; + searchMembers: string; constructor(private route: ActivatedRoute, private dialog: MatDialog, diff --git a/src/app/components/group-details/members-filter.pipe.spec.ts b/src/app/components/group-details/members-filter.pipe.spec.ts new file mode 100644 index 00000000..f632ee84 --- /dev/null +++ b/src/app/components/group-details/members-filter.pipe.spec.ts @@ -0,0 +1,8 @@ +import { MembersFilterPipe } from './members-filter.pipe'; + +describe('MembersFilterPipe', () => { + it('create an instance', () => { + const pipe = new MembersFilterPipe(); + expect(pipe).toBeTruthy(); + }); +}); diff --git a/src/app/components/group-details/members-filter.pipe.ts b/src/app/components/group-details/members-filter.pipe.ts new file mode 100644 index 00000000..56cb3850 --- /dev/null +++ b/src/app/components/group-details/members-filter.pipe.ts @@ -0,0 +1,20 @@ +import {Pipe, PipeTransform} from '@angular/core'; +import {User} from "@models/users/user"; + +@Pipe({ + name: 'membersFilter' +}) +export class MembersFilterPipe implements PipeTransform { + + transform(members: User[], filterText: string): User[] { + if (!members) { + return []; + } + if (filterText === undefined || filterText === '') { + return members; + } + + return members.filter((member: User) => member.username.toLowerCase().includes(filterText.toLowerCase())); + } + +} diff --git a/src/app/components/group-details/paginator.pipe.ts b/src/app/components/group-details/paginator.pipe.ts index 59a3ca45..86dba9f8 100644 --- a/src/app/components/group-details/paginator.pipe.ts +++ b/src/app/components/group-details/paginator.pipe.ts @@ -1,3 +1,15 @@ +/* +* Software Name : GNS3 Web UI +* Version: 3 +* SPDX-FileCopyrightText: Copyright (c) 2022 Orange Business Services +* SPDX-License-Identifier: GPL-3.0-or-later +* +* This software is distributed under the GPL-3.0 or any later version, +* the text of which is available at https://www.gnu.org/licenses/gpl-3.0.txt +* or see the "LICENSE" file for more details. +* +* Author: Sylvain MATHIEU, Elise LEBEAU +*/ import {Pipe, PipeTransform} from '@angular/core'; import {User} from "@models/users/user"; import {PageEvent} from "@angular/material/paginator";