3 Commits

Autor SHA1 Mensagem Data
  poohr 55c8e48e20 Merge remote-tracking branch 'origin/master' 3 semanas atrás
  poohr 72b3f06044 Merge remote-tracking branch 'origin/master' 3 semanas atrás
  poohr 8c5b2e22e5 [update] 3 semanas atrás

+ 5
- 3
src/app/pages/dashboard/dashboard.html Ver arquivo

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

+ 18
- 5
src/app/pages/dashboard/dashboard.ts Ver arquivo

25
 
25
 
26
 @Component({
26
 @Component({
27
   selector: 'app-dashboard',
27
   selector: 'app-dashboard',
28
-  imports: [AppHeader, AppSideMenu, RouterLink],
28
+  imports: [AppHeader, AppSideMenu, RouterLink, FormsModule],
29
   templateUrl: './dashboard.html',
29
   templateUrl: './dashboard.html',
30
   styleUrl: './dashboard.scss',
30
   styleUrl: './dashboard.scss',
31
 })
31
 })
32
 export class Dashboard {
32
 export class Dashboard {
33
+  searchKeyword = '';
34
+  todayLabel = this.formatTodayLabel(new Date());
33
   weeklyMemorialCount = 0;
35
   weeklyMemorialCount = 0;
34
   todayMemorialCount = 0;
36
   todayMemorialCount = 0;
35
   upcomingWeeklyMemorialCount = 0;
37
   upcomingWeeklyMemorialCount = 0;
42
   constructor(
44
   constructor(
43
     private kakochoService: KakochoService,
45
     private kakochoService: KakochoService,
44
     private dankaService: DankaService,
46
     private dankaService: DankaService,
47
+    private router: Router,
45
   ) {
48
   ) {
46
     this.setWeeklyMemorialSummary();
49
     this.setWeeklyMemorialSummary();
47
     this.setMonthlyMemorialSummary();
50
     this.setMonthlyMemorialSummary();
49
     this.setUpcomingMemorials();
52
     this.setUpcomingMemorials();
50
   }
53
   }
51
 
54
 
55
+  searchAll(): void {
56
+    const keyword = this.searchKeyword.trim();
57
+
58
+    this.router.navigate(['/search'], {
59
+      queryParams: keyword ? { keyword } : undefined,
60
+    });
61
+  }
62
+
52
   private async setRecentDankaList(): Promise<void> {
63
   private async setRecentDankaList(): Promise<void> {
53
     const dankaList = await this.dankaService.getRecentDankaList(5);
64
     const dankaList = await this.dankaService.getRecentDankaList(5);
54
 
65
 
136
 
147
 
137
     this.upcomingMemorials = results
148
     this.upcomingMemorials = results
138
       .filter((memorial): memorial is UpcomingMemorial => memorial !== null)
149
       .filter((memorial): memorial is UpcomingMemorial => memorial !== null)
139
-      .sort((a, b) =>
140
-        a.date.getTime() - b.date.getTime() ||
141
-        a.title.localeCompare(b.title, 'ja')
142
-      )
150
+      .sort((a, b) => a.date.getTime() - b.date.getTime() || a.title.localeCompare(b.title, 'ja'))
143
       .slice(0, 3);
151
       .slice(0, 3);
144
   }
152
   }
145
 
153
 
224
     return `${updatedDate.getMonth() + 1}月${updatedDate.getDate()}日`;
232
     return `${updatedDate.getMonth() + 1}月${updatedDate.getDate()}日`;
225
   }
233
   }
226
 
234
 
235
+  private formatTodayLabel(date: Date): string {
236
+    const weekdays = ['日曜日', '月曜日', '火曜日', '水曜日', '木曜日', '金曜日', '土曜日'];
237
+    return `${date.getFullYear()}年${date.getMonth() + 1}月${date.getDate()}日 ${weekdays[date.getDay()]}`;
238
+  }
239
+
227
   private getWeekStart(date: Date): Date {
240
   private getWeekStart(date: Date): Date {
228
     const day = date.getDay();
241
     const day = date.getDay();
229
     const diff = day === 0 ? -6 : 1 - day;
242
     const diff = day === 0 ? -6 : 1 - day;

+ 8
- 1
src/app/pages/search/search.ts Ver arquivo

1
 import { Component, OnInit } from '@angular/core';
1
 import { Component, OnInit } from '@angular/core';
2
 import { FormBuilder, FormsModule } from '@angular/forms';
2
 import { FormBuilder, FormsModule } from '@angular/forms';
3
-import { Router, RouterLink } from '@angular/router';
3
+import { ActivatedRoute, Router, RouterLink } from '@angular/router';
4
 import { Danka } from '../../models/danka';
4
 import { Danka } from '../../models/danka';
5
 import { Family } from '../../models/family';
5
 import { Family } from '../../models/family';
6
 import { Kakocho } from '../../models/kakocho';
6
 import { Kakocho } from '../../models/kakocho';
34
     private dankaService: DankaService,
34
     private dankaService: DankaService,
35
     private familyService: FamilyService,
35
     private familyService: FamilyService,
36
     private kakochoService: KakochoService,
36
     private kakochoService: KakochoService,
37
+    private route: ActivatedRoute,
37
   ) { }
38
   ) { }
38
 
39
 
39
   ngOnInit(): void {
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
   // フィルタータブの選択処理

Carregando…
Cancelar
Salvar