Skip to content

Commit 6fbe344

Browse files
[Horizon] Display requirement for module item (#3380)
1 parent 3793005 commit 6fbe344

File tree

3 files changed

+21
-2
lines changed

3 files changed

+21
-2
lines changed

Horizon/Horizon/Sources/Common/Data/HModuleItem.swift

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ struct HModuleItem: Equatable {
4242
let completionRequirementType: CompletionRequirementType?
4343
let moduleName: String?
4444
let estimatedDuration: String?
45+
let completionRequirement: CompletionRequirement?
4546

4647
init(
4748
id: String,
@@ -63,7 +64,8 @@ struct HModuleItem: Equatable {
6364
isQuizLTI: Bool = false,
6465
completionRequirementType: CompletionRequirementType? = nil,
6566
moduleName: String? = nil,
66-
estimatedDuration: String? = nil
67+
estimatedDuration: String? = nil,
68+
completionRequirement: CompletionRequirement? = nil
6769

6870
) {
6971
self.id = id
@@ -87,6 +89,7 @@ struct HModuleItem: Equatable {
8789
self.completionRequirementType = completionRequirementType
8890
self.moduleName = moduleName
8991
self.estimatedDuration = estimatedDuration
92+
self.completionRequirement = completionRequirement
9093
}
9194

9295
init(from entity: ModuleItem) {
@@ -100,6 +103,7 @@ struct HModuleItem: Equatable {
100103
self.moduleState = entity.module?.state
101104
self.points = entity.pointsPossible
102105
self.isOptional = entity.completionRequirement == nil
106+
self.completionRequirement = entity.completionRequirement
103107
self.lockedMessage = HModuleItemLockMessage(html: entity.lockExplanation ?? "").generate()
104108
self.moduleID = entity.moduleID
105109
self.url = entity.url
@@ -125,6 +129,10 @@ struct HModuleItem: Equatable {
125129
var estimatedDurationFormatted: String? {
126130
return estimatedDuration?.toISO8601Duration
127131
}
132+
133+
var minScoreDescription: String? {
134+
return completionRequirement?.type == .min_score ? completionRequirement?.description : nil
135+
}
128136
}
129137

130138
extension HModuleItem: Identifiable {}

Horizon/Horizon/Sources/Common/View/ModuleItemListView.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,7 @@ struct ModuleItemListView: View {
7272
dueDate: item.dueAt?.dateOnlyString,
7373
lockedMessage: item.lockedMessage,
7474
points: item.points?.trimmedString,
75+
minScore: item.minScoreDescription,
7576
isOverdue: item.isOverDue
7677
)
7778
}

packages/HorizonUI/Sources/HorizonUI/Sources/Components/Cards/LearningObjectItem/HorizonUI.LearningObjectItem.swift

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ public extension HorizonUI {
3535
private let dueDate: String?
3636
private let lockedMessage: String?
3737
private let points: String?
38+
private let minScore: String?
3839
private let isOverdue: Bool
3940

4041
// MARK: - Init
@@ -49,6 +50,7 @@ public extension HorizonUI {
4950
dueDate: String? = nil,
5051
lockedMessage: String? = nil,
5152
points: String? = nil,
53+
minScore: String? = nil,
5254
isOverdue: Bool = false
5355
) {
5456
self.name = name
@@ -60,6 +62,7 @@ public extension HorizonUI {
6062
self.dueDate = dueDate
6163
self.lockedMessage = lockedMessage
6264
self.points = points
65+
self.minScore = minScore
6366
self.isOverdue = isOverdue
6467
}
6568

@@ -122,17 +125,23 @@ public extension HorizonUI {
122125
}
123126
.padding(.top, .huiSpaces.space12)
124127

125-
HStack(spacing: .huiSpaces.space16) {
128+
HStack(spacing: .zero) {
126129
if let dueDate {
127130
dueDateView(dueDate)
128131
.padding(.top, .huiSpaces.space24)
132+
.padding(.trailing, .huiSpaces.space16)
129133
}
130134

131135
if let points {
132136
Text("\(points) pts")
133137
.foregroundStyle(Color.huiColors.text.timestamp)
134138
.padding(.top, .huiSpaces.space24)
135139
}
140+
if let minScore {
141+
Text(" | \(minScore)")
142+
.foregroundStyle(Color.huiColors.text.timestamp)
143+
.padding(.top, .huiSpaces.space24)
144+
}
136145
}
137146
.huiTypography(.labelSmall)
138147
}
@@ -165,6 +174,7 @@ public extension HorizonUI {
165174
duration: "XX Mins",
166175
dueDate: "22/12",
167176
points: "22",
177+
minScore: "Score at least 10",
168178
isOverdue: true
169179
)
170180
}

0 commit comments

Comments
 (0)