@@ -13,6 +13,19 @@ struct RecordsGroupedByDate: Identifiable {
13
13
var records : [ LogRecord ]
14
14
}
15
15
16
+ struct GroupedRecordDateRow : View {
17
+ public let date : Date
18
+
19
+ var body : some View {
20
+ HStack ( alignment: . center, spacing: 5 ) {
21
+ Image ( systemName: " calendar " )
22
+ Text ( date. formatted ( date: . abbreviated, time: . omitted) )
23
+ Spacer ( )
24
+ }
25
+ . padding ( 8 )
26
+ }
27
+ }
28
+
16
29
struct RecordFilter : View {
17
30
typealias Button = Tabs . Content . Individual . SingleRecord
18
31
public let job : Job
@@ -25,14 +38,9 @@ struct RecordFilter: View {
25
38
ScrollView ( showsIndicators: false ) {
26
39
ForEach ( groupedRecords) { group in
27
40
VStack ( alignment: . leading, spacing: 1 ) {
28
- HStack ( alignment: . center, spacing: 5 ) {
29
- Image ( systemName: " calendar " )
30
- Text ( group. date. formatted ( date: . abbreviated, time: . omitted) )
31
- Spacer ( )
32
- }
33
- . padding ( 8 )
41
+ GroupedRecordDateRow ( date: group. date)
34
42
35
- ForEach ( records) { record in
43
+ ForEach ( group . records) { record in
36
44
Button ( record: record)
37
45
}
38
46
}
@@ -61,13 +69,14 @@ extension RecordFilter {
61
69
private func actionOnAppear( ) -> Void {
62
70
self . groupedRecords = [ ]
63
71
if self . records. count > 0 {
64
- let grouped = Array ( self . records)
72
+ let sortedRecords = Array ( self . records)
65
73
. sliced ( by: [ . year, . month, . day] , for: \. timestamp!)
66
- . sorted ( by: { $0. key > $1. key} )
74
+ . sorted ( by: { $0. key < $1. key} )
75
+ let grouped = Dictionary ( grouping: sortedRecords, by: { $0. key} )
67
76
68
77
for group in grouped {
69
78
self . groupedRecords. append (
70
- RecordsGroupedByDate ( date: group. key, records: group. value)
79
+ RecordsGroupedByDate ( date: group. key, records: group. value. first ? . value ?? [ ] )
71
80
)
72
81
}
73
82
}
0 commit comments