Skip to content

Commit f849a76

Browse files
committed
[iOS] [12590] Adds levels order.
1 parent d7a906b commit f849a76

File tree

6 files changed

+54
-18
lines changed

6 files changed

+54
-18
lines changed
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
//
2+
// Level.swift
3+
// OpenStack Summit
4+
//
5+
// Created by Gabriel Horacio Cutrini on 4/18/17.
6+
// Copyright © 2017 OpenStack. All rights reserved.
7+
//
8+
9+
public enum Level: String, Comparable {
10+
11+
case Beginner
12+
case Intermediate
13+
case Advanced
14+
case NotApplicable = "N/A"
15+
16+
public var order: Int {
17+
18+
switch self {
19+
case .Beginner: return 0
20+
case .Intermediate: return 1
21+
case .Advanced: return 2
22+
case .NotApplicable: return 3
23+
}
24+
}
25+
}
26+
27+
// MARK: - Comparable
28+
29+
public func == (lhs: Level, rhs: Level) -> Bool {
30+
31+
return lhs.order == rhs.order
32+
}
33+
34+
public func < (lhs: Level, rhs: Level) -> Bool {
35+
36+
return lhs.order < rhs.order
37+
}

OpenStack Summit/CoreSummit/Presentation.swift

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -17,19 +17,6 @@ public struct Presentation: Unique, Equatable {
1717
public var speakers: Set<Identifier>
1818
}
1919

20-
// MARK: - Supporting Types
21-
22-
public extension Presentation {
23-
24-
public enum Level: String {
25-
26-
case Beginner
27-
case Intermediate
28-
case Advanced
29-
case NotApplicable = "N/A"
30-
}
31-
}
32-
3320
// MARK: - Equatable
3421

3522
public func == (lhs: Presentation, rhs: Presentation) -> Bool {

OpenStack Summit/CoreSummit/PresentationDataUpdate.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ public struct PresentationDataUpdate: Unique {
1010

1111
public let identifier: Identifier
1212

13-
public let level: Presentation.Level?
13+
public let level: Level?
1414

1515
public let moderator: Identifier?
1616

OpenStack Summit/CoreSummit/PresentationDataUpdateJSON.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ extension PresentationDataUpdate: JSONDecodable {
3636

3737
if let levelString = JSONObject[JSONKey.level.rawValue]?.rawValue as? String {
3838

39-
guard let level = Presentation.Level(rawValue: levelString)
39+
guard let level = Level(rawValue: levelString)
4040
else { return nil }
4141

4242
self.level = level

OpenStack Summit/OpenStack Summit.xcodeproj/project.pbxproj

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1074,6 +1074,10 @@
10741074
9DABFF941DA6A75B00B3101A /* VenueFloorJSON.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9D1CE1071DA48BB60064B3B1 /* VenueFloorJSON.swift */; };
10751075
9DABFF951DA6A75C00B3101A /* VenueFloorJSON.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9D1CE1071DA48BB60064B3B1 /* VenueFloorJSON.swift */; };
10761076
9DABFF961DA6A75E00B3101A /* VenueFloorJSON.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9D1CE1071DA48BB60064B3B1 /* VenueFloorJSON.swift */; };
1077+
9DEF130D1EA67153001798D4 /* Level.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9DEF130C1EA67153001798D4 /* Level.swift */; };
1078+
9DEF130E1EA67153001798D4 /* Level.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9DEF130C1EA67153001798D4 /* Level.swift */; };
1079+
9DEF130F1EA67153001798D4 /* Level.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9DEF130C1EA67153001798D4 /* Level.swift */; };
1080+
9DEF13101EA67153001798D4 /* Level.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9DEF130C1EA67153001798D4 /* Level.swift */; };
10771081
/* End PBXBuildFile section */
10781082

10791083
/* Begin PBXContainerItemProxy section */
@@ -1770,6 +1774,7 @@
17701774
9D6AADA81DBE4ABE0057888E /* DataUpdates6.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = DataUpdates6.json; sourceTree = "<group>"; };
17711775
9D6AADAB1DBE563A0057888E /* VenueRoomDataUpdateJSON.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = VenueRoomDataUpdateJSON.swift; sourceTree = "<group>"; };
17721776
9D6AADAD1DBE56CB0057888E /* VenueRoomDataUpdate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = VenueRoomDataUpdate.swift; sourceTree = "<group>"; };
1777+
9DEF130C1EA67153001798D4 /* Level.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Level.swift; sourceTree = "<group>"; };
17731778
/* End PBXFileReference section */
17741779

17751780
/* Begin PBXFrameworksBuildPhase section */
@@ -2107,6 +2112,7 @@
21072112
6E10A52B1D10675C008CBD0C /* NonConfirmedAttendee.swift */,
21082113
6E10A52D1D10675C008CBD0C /* Person.swift */,
21092114
6E10A52E1D10675C008CBD0C /* Presentation.swift */,
2115+
9DEF130C1EA67153001798D4 /* Level.swift */,
21102116
6E10A5301D10675C008CBD0C /* Speaker.swift */,
21112117
6E10A5481D10675C008CBD0C /* Summit.swift */,
21122118
6E10A5491D10675C008CBD0C /* Attendee.swift */,
@@ -3980,6 +3986,7 @@
39803986
6EE954551E92A0BC006B1330 /* Compound.swift in Sources */,
39813987
6EB1FDF51E1C073E0048045D /* TeamInvitationRequest.swift in Sources */,
39823988
6EBC49051E1394FE0077806B /* TeamMessageJSON.swift in Sources */,
3989+
9DEF13101EA67153001798D4 /* Level.swift in Sources */,
39833990
9DABFF911DA6A74C00B3101A /* VenueFloor.swift in Sources */,
39843991
6E0B5F0A1D77C8950005F6CE /* Video.swift in Sources */,
39853992
6E1BCFF11E37A5FE00059E94 /* MemberJSON.swift in Sources */,
@@ -4169,6 +4176,7 @@
41694176
6EF4F86B1DC8D1D300D31A99 /* CoreDataDecodable.swift in Sources */,
41704177
6E10A58C1D10675D008CBD0C /* Attendee.swift in Sources */,
41714178
6EFC6E691D2322E70087057A /* EventScheduleRequest.swift in Sources */,
4179+
9DEF130D1EA67153001798D4 /* Level.swift in Sources */,
41724180
6E10A55F1D10675D008CBD0C /* ErrorValue.swift in Sources */,
41734181
6E570A361D67753D00189992 /* PresentationDataUpdate.swift in Sources */,
41744182
9D6AADB21DBE58030057888E /* VenueRoomDataUpdateJSON.swift in Sources */,
@@ -4401,6 +4409,7 @@
44014409
6E2923D21D7AF8C900D14F0A /* Configuration.swift in Sources */,
44024410
6E2923D31D7AF8C900D14F0A /* EventType.swift in Sources */,
44034411
6E2923D41D7AF8C900D14F0A /* Venue.swift in Sources */,
4412+
9DEF130F1EA67153001798D4 /* Level.swift in Sources */,
44044413
6E2923D51D7AF8C900D14F0A /* TicketTypeJSON.swift in Sources */,
44054414
6E2923D61D7AF8C900D14F0A /* TicketOrderRequest.swift in Sources */,
44064415
6E99B8AB1DC7D68F009CE28D /* Model.xcdatamodeld in Sources */,
@@ -4533,6 +4542,7 @@
45334542
6E7557B81E58C48C003B6844 /* CoreDataDecodable.swift in Sources */,
45344543
6E7557B91E58C48C003B6844 /* Attendee.swift in Sources */,
45354544
6E7557BA1E58C48C003B6844 /* EventScheduleRequest.swift in Sources */,
4545+
9DEF130E1EA67153001798D4 /* Level.swift in Sources */,
45364546
6E7557BB1E58C48C003B6844 /* ErrorValue.swift in Sources */,
45374547
6E7557BC1E58C48C003B6844 /* PresentationDataUpdate.swift in Sources */,
45384548
6E7557BD1E58C48C003B6844 /* VenueRoomDataUpdateJSON.swift in Sources */,

OpenStack Summit/OpenStack Summit/Filter.swift

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -94,9 +94,11 @@ struct ScheduleFilter: Equatable {
9494
// fetch data
9595
let trackGroups = try! TrackGroup.scheduled(for: summitID, context: context)
9696
let levels = try! Set(context.managedObjects(PresentationManagedObject.self, predicate: "event.summit.id" == summitID)
97-
.map({ $0.level ?? "" }))
98-
.filter({ $0 != "" })
99-
.sort()
97+
.flatMap { $0.level })
98+
.flatMap { Level(rawValue: $0) }
99+
.sort { (lhs: Level, rhs: Level) -> Bool in lhs < rhs }
100+
.map { $0.rawValue }
101+
100102
let venues = try! context.managedObjects(Venue.self, predicate: NSPredicate(format: "summit == %@", summit), sortDescriptors: VenueManagedObject.sortDescriptors)
101103

102104
// populate filter categories

0 commit comments

Comments
 (0)