From 441bcc081d4faeb337af17e13474815a1d3d0046 Mon Sep 17 00:00:00 2001 From: CHARLES BOND Date: Sun, 18 Aug 2024 13:40:41 +0900 Subject: [PATCH] Attempted fix for items that should extend across entire grid. --- .../TimetableFeature/TimetableDataItems.swift | 4 ++++ .../TimetableFeature/TimetableGridCard.swift | 5 ++++- .../TimetableFeature/TimetableListView.swift | 22 ++++++++++++++----- 3 files changed, 25 insertions(+), 6 deletions(-) diff --git a/app-ios/Sources/TimetableFeature/TimetableDataItems.swift b/app-ios/Sources/TimetableFeature/TimetableDataItems.swift index 0d23a9252..dcf23a8f1 100644 --- a/app-ios/Sources/TimetableFeature/TimetableDataItems.swift +++ b/app-ios/Sources/TimetableFeature/TimetableDataItems.swift @@ -34,6 +34,10 @@ public struct TimetableTimeGroupItems: Identifiable, Equatable, Hashable { $0.timetableItem.room.type == room //TODO: roomIj handling not decided? }.first } + + func matchTopItem(for room: RoomType) -> Bool { + return items[0].timetableItem.room.type == room + } } // This exists only for previews now. diff --git a/app-ios/Sources/TimetableFeature/TimetableGridCard.swift b/app-ios/Sources/TimetableFeature/TimetableGridCard.swift index 79435c618..714a4f92b 100644 --- a/app-ios/Sources/TimetableFeature/TimetableGridCard.swift +++ b/app-ios/Sources/TimetableFeature/TimetableGridCard.swift @@ -6,13 +6,16 @@ import class shared.TimetableItem public struct TimetableGridCard: View { let timetableItem: TimetableItem? let onTap: (TimetableItem) -> Void + let cellCount: Int public init( timetableItem: TimetableItem?, + cellCount: Int? = 1, onTap: @escaping (TimetableItem) -> Void ) { self.timetableItem = timetableItem self.onTap = onTap + self.cellCount = cellCount ?? 1 } public var body: some View { @@ -58,7 +61,7 @@ public struct TimetableGridCard: View { } .frame(maxWidth: .infinity) .padding(12) - .frame(width: 192, height: 153) + .frame(width: 192*CGFloat(cellCount)+CGFloat(12*(cellCount-1)), height: 153) .background(timetableItem.room.roomTheme.containerColor, in: RoundedRectangle(cornerRadius: 4)) .overlay(RoundedRectangle(cornerRadius: 4).stroke(timetableItem.room.roomTheme.primaryColor, lineWidth: 1)) } diff --git a/app-ios/Sources/TimetableFeature/TimetableListView.swift b/app-ios/Sources/TimetableFeature/TimetableListView.swift index 90a37ec8c..cc5fff747 100644 --- a/app-ios/Sources/TimetableFeature/TimetableListView.swift +++ b/app-ios/Sources/TimetableFeature/TimetableListView.swift @@ -127,6 +127,7 @@ struct TimetableGridView: View { .frame(width: 192) } } + ForEach(store.timetableItems, id: \.self) { timeBlock in GridRow { VStack { @@ -135,11 +136,22 @@ struct TimetableGridView: View { }.frame(height: 153) - ForEach(rooms, id: \.self) { room in + if (timeBlock.items.count == 1 && timeBlock.matchTopItem(for: RoomType.roomJ)) { - timeBlock.getCellForRoom(room: room, onTap: { item in + timeBlock.getCellForRoom( + room: RoomType.roomJ, + cellCount: 5, + onTap: { item in store.send(.view(.timetableItemTapped(item))) - }) + }).gridCellColumns(5) + + + } else { + ForEach(rooms, id: \.self) { room in + timeBlock.getCellForRoom(room: room, cellCount: 1, onTap: { item in + store.send(.view(.timetableItemTapped(item))) + }) + } } } } @@ -248,9 +260,9 @@ extension RoomType { } extension TimetableTimeGroupItems { - func getCellForRoom(room: RoomType, onTap: @escaping (TimetableItemWithFavorite) -> Void) -> TimetableGridCard { + func getCellForRoom(room: RoomType, cellCount: Int?=1, onTap: @escaping (TimetableItemWithFavorite) -> Void) -> TimetableGridCard { return if let cell = getItem(for: room) { - TimetableGridCard(timetableItem: cell.timetableItem) { timetableItem in + TimetableGridCard(timetableItem: cell.timetableItem, cellCount: cellCount ?? 1) { timetableItem in onTap(cell) } } else {