瀏覽代碼

[update]

ダッシュボードを修正
poohr 3 週之前
父節點
當前提交
8c5b2e22e5
共有 3 個文件被更改,包括 41 次插入11 次删除
  1. 5
    3
      src/app/pages/dashboard/dashboard.html
  2. 28
    7
      src/app/pages/dashboard/dashboard.ts
  3. 8
    1
      src/app/pages/search/search.ts

+ 5
- 3
src/app/pages/dashboard/dashboard.html 查看文件

@@ -9,11 +9,11 @@
9 9
         <div>
10 10
           <h1>ホーム</h1>
11 11
         </div>
12
-        <div class="date-pill">2026年5月28日 木曜日</div>
12
+        <div class="date-pill">{{ todayLabel }}</div>
13 13
       </div>
14 14
 
15 15
       <section class="overview" aria-label="概要">
16
-        <a class="card primary" href="#">
16
+        <a class="card" href="#">
17 17
           <div class="card-label">今週の法要</div>
18 18
           <div class="metric"><strong>{{ weeklyMemorialCount }}</strong><span>件</span></div>
19 19
           <p class="card-text">
@@ -34,10 +34,12 @@
34 34
           <input
35 35
             class="search-input"
36 36
             type="search"
37
+            [(ngModel)]="searchKeyword"
37 38
             placeholder="氏名、ふりがな、住所、戒名で検索"
38 39
             aria-label="まとめて検索"
40
+            (keydown.enter)="searchAll()"
39 41
           />
40
-          <button class="search-button" type="button">検索</button>
42
+          <button class="search-button" type="button" (click)="searchAll()">検索</button>
41 43
         </div>
42 44
       </section>
43 45
 

+ 28
- 7
src/app/pages/dashboard/dashboard.ts 查看文件

@@ -1,5 +1,6 @@
1 1
 import { Component } from '@angular/core';
2
-import { RouterLink } from '@angular/router';
2
+import { Router, RouterLink } from '@angular/router';
3
+import { FormsModule } from '@angular/forms';
3 4
 import { KakochoService } from '../../services/kakocho-service';
4 5
 import { DankaService } from '../../services/dankaService';
5 6
 import { Danka } from '../../models/danka';
@@ -25,11 +26,13 @@ interface RecentDanka {
25 26
 
26 27
 @Component({
27 28
   selector: 'app-dashboard',
28
-  imports: [AppHeader, AppSideMenu, RouterLink],
29
+  imports: [AppHeader, AppSideMenu, RouterLink, FormsModule],
29 30
   templateUrl: './dashboard.html',
30 31
   styleUrl: './dashboard.scss',
31 32
 })
32 33
 export class Dashboard {
34
+  searchKeyword = '';
35
+  todayLabel = this.formatTodayLabel(new Date());
33 36
   weeklyMemorialCount = 0;
34 37
   todayMemorialCount = 0;
35 38
   upcomingWeeklyMemorialCount = 0;
@@ -42,6 +45,7 @@ export class Dashboard {
42 45
   constructor(
43 46
     private kakochoService: KakochoService,
44 47
     private dankaService: DankaService,
48
+    private router: Router,
45 49
   ) {
46 50
     this.setWeeklyMemorialSummary();
47 51
     this.setMonthlyMemorialSummary();
@@ -49,6 +53,14 @@ export class Dashboard {
49 53
     this.setUpcomingMemorials();
50 54
   }
51 55
 
56
+  searchAll(): void {
57
+    const keyword = this.searchKeyword.trim();
58
+
59
+    this.router.navigate(['/search'], {
60
+      queryParams: keyword ? { keyword } : undefined,
61
+    });
62
+  }
63
+
52 64
   private async setRecentDankaList(): Promise<void> {
53 65
     const dankaList = await this.dankaService.getRecentDankaList(5);
54 66
 
@@ -104,9 +116,10 @@ export class Dashboard {
104 116
     const today = this.toDateOnly(new Date());
105 117
     const endDate = this.addDays(today, 30);
106 118
 
107
-    this.upcomingMemorials = (await this.kakochoService
108
-      .getKakochoList())
109
-      .map((kakocho): UpcomingMemorial | null => {
119
+    const upcomingMemorials = await Promise.all(
120
+      (await this.kakochoService
121
+        .getKakochoList())
122
+        .map(async (kakocho): Promise<UpcomingMemorial | null> => {
110 123
         const deathDate = this.parseDate(kakocho.deathDate);
111 124
         if (!deathDate) {
112 125
           return null;
@@ -118,7 +131,7 @@ export class Dashboard {
118 131
         }
119 132
 
120 133
         const memorialType = this.getMemorialType(deathDate);
121
-        const danka = this.dankaService.getDankaById(kakocho.dankaId);
134
+        const danka = await this.dankaService.getDankaById(kakocho.dankaId);
122 135
         const type = memorialType ? '年忌法要' : '命日';
123 136
         const status = memorialType ? '準備確認' : '要確認';
124 137
 
@@ -132,7 +145,10 @@ export class Dashboard {
132 145
           type,
133 146
           status,
134 147
         };
135
-      })
148
+      }),
149
+    );
150
+
151
+    this.upcomingMemorials = upcomingMemorials
136 152
       .filter((memorial): memorial is UpcomingMemorial => memorial !== null)
137 153
       .sort((a, b) => a.date.getTime() - b.date.getTime() || a.title.localeCompare(b.title, 'ja'))
138 154
       .slice(0, 3);
@@ -219,6 +235,11 @@ export class Dashboard {
219 235
     return `${updatedDate.getMonth() + 1}月${updatedDate.getDate()}日`;
220 236
   }
221 237
 
238
+  private formatTodayLabel(date: Date): string {
239
+    const weekdays = ['日曜日', '月曜日', '火曜日', '水曜日', '木曜日', '金曜日', '土曜日'];
240
+    return `${date.getFullYear()}年${date.getMonth() + 1}月${date.getDate()}日 ${weekdays[date.getDay()]}`;
241
+  }
242
+
222 243
   private getWeekStart(date: Date): Date {
223 244
     const day = date.getDay();
224 245
     const diff = day === 0 ? -6 : 1 - day;

+ 8
- 1
src/app/pages/search/search.ts 查看文件

@@ -1,6 +1,6 @@
1 1
 import { Component, OnInit } from '@angular/core';
2 2
 import { FormBuilder, FormsModule } from '@angular/forms';
3
-import { Router, RouterLink } from '@angular/router';
3
+import { ActivatedRoute, Router, RouterLink } from '@angular/router';
4 4
 import { Danka } from '../../models/danka';
5 5
 import { Family } from '../../models/family';
6 6
 import { Kakocho } from '../../models/kakocho';
@@ -34,9 +34,16 @@ export class Search implements OnInit{
34 34
     private dankaService: DankaService,
35 35
     private familyService: FamilyService,
36 36
     private kakochoService: KakochoService,
37
+    private route: ActivatedRoute,
37 38
   ) { }
38 39
 
39 40
   ngOnInit(): void {
41
+    const keyword = this.route.snapshot.queryParamMap.get('keyword');
42
+
43
+    if (keyword) {
44
+      this.searchKeyword = keyword;
45
+      this.searchAll();
46
+    }
40 47
   }
41 48
 
42 49
   // フィルタータブの選択処理

Loading…
取消
儲存