|
|
@@ -4,17 +4,65 @@ import { DankaService } from '../../services/dankaService';
|
|
4
|
4
|
import { AppHeader } from '../../share/header/app-header';
|
|
5
|
5
|
import { AppSideMenu } from '../../share/side-menu/app-side-menu';
|
|
6
|
6
|
import { Danka } from '../../models/danka';
|
|
|
7
|
+import { FormsModule } from '@angular/forms';
|
|
|
8
|
+import { findIndex } from 'rxjs';
|
|
7
|
9
|
|
|
8
|
10
|
@Component({
|
|
9
|
11
|
selector: 'app-danka-list',
|
|
10
|
|
- imports: [AppHeader, AppSideMenu, RouterLink],
|
|
|
12
|
+ imports: [AppHeader, AppSideMenu, RouterLink, FormsModule],
|
|
11
|
13
|
templateUrl: './danka-list.html',
|
|
12
|
14
|
styleUrl: './danka-list.scss',
|
|
13
|
15
|
})
|
|
14
|
16
|
export class DankaList {
|
|
15
|
17
|
dankaList: Danka[] = [];
|
|
|
18
|
+ filterDankaList: Danka[] = [];
|
|
|
19
|
+ searchKeyword: string = '';
|
|
|
20
|
+ dankaDisplay: number = 0;
|
|
|
21
|
+ selectedFilter = 'all';
|
|
16
|
22
|
|
|
17
|
23
|
constructor(private dankaService: DankaService) {
|
|
18
|
24
|
this.dankaList = this.dankaService.getDankaList();
|
|
19
|
25
|
}
|
|
|
26
|
+
|
|
|
27
|
+ //全件タグで絞り込み
|
|
|
28
|
+ showAllDanka() {
|
|
|
29
|
+ this.selectedFilter = 'all';
|
|
|
30
|
+ this.searchKeyword = '';
|
|
|
31
|
+ this.filterDankaList = this.dankaList;
|
|
|
32
|
+ this.dankaDisplay = this.filterDankaList.length;
|
|
|
33
|
+ }
|
|
|
34
|
+
|
|
|
35
|
+ //電話番号タグで絞り込み
|
|
|
36
|
+ filterPhoneAvailable() {
|
|
|
37
|
+ this.selectedFilter = 'phone';
|
|
|
38
|
+ //電話番号タブに該当する檀家を表示
|
|
|
39
|
+ this.filterDankaList = this.dankaList.filter((danka) => {
|
|
|
40
|
+ return danka.phones.some((phone) => phone.tel.trim() !== '');
|
|
|
41
|
+ });
|
|
|
42
|
+ this.dankaDisplay = this.filterDankaList.length;
|
|
|
43
|
+ }
|
|
|
44
|
+
|
|
|
45
|
+ //検索処理
|
|
|
46
|
+ searchDanka() {
|
|
|
47
|
+ this.selectedFilter = 'search';
|
|
|
48
|
+ //検索欄に入力された値から余白を削除
|
|
|
49
|
+ const keyword = this.searchKeyword.trim();
|
|
|
50
|
+ //検索欄が空の場合は檀家の一覧を表示
|
|
|
51
|
+ if (keyword === '') {
|
|
|
52
|
+ this.filterDankaList = this.dankaList;
|
|
|
53
|
+ return;
|
|
|
54
|
+ }
|
|
|
55
|
+ //検索欄に値がある場合は値に該当する内容を表示
|
|
|
56
|
+ this.filterDankaList = this.dankaList.filter((danka) => {
|
|
|
57
|
+ return (
|
|
|
58
|
+ danka.householdName.includes(keyword) ||
|
|
|
59
|
+ danka.householder.includes(keyword) ||
|
|
|
60
|
+ danka.postalCode.includes(keyword) ||
|
|
|
61
|
+ danka.address.includes(keyword) ||
|
|
|
62
|
+ danka.phones.some((phone) => phone.tel.includes(keyword) || phone.note.includes(keyword))
|
|
|
63
|
+ );
|
|
|
64
|
+ });
|
|
|
65
|
+ this.dankaDisplay = this.filterDankaList.length;
|
|
|
66
|
+ console.log(this.dankaDisplay);
|
|
|
67
|
+ }
|
|
20
|
68
|
}
|