mirror of
https://github.com/tappollo/WWDC.git
synced 2026-04-28 20:05:13 +08:00
Improved sorting in schedule (Closes #211)
This commit is contained in:
@@ -42,6 +42,12 @@ public class SessionInstance: Object {
|
||||
/// Instance number
|
||||
public dynamic var number = ""
|
||||
|
||||
public var code: Int {
|
||||
guard let n = number.components(separatedBy: "-").last else { return NSNotFound }
|
||||
|
||||
return Int(n) ?? NSNotFound
|
||||
}
|
||||
|
||||
/// The event identifier for the event this instance belongs to
|
||||
public dynamic var eventIdentifier = ""
|
||||
|
||||
@@ -110,13 +116,28 @@ public class SessionInstance: Object {
|
||||
]
|
||||
}
|
||||
|
||||
public override static func ignoredProperties() -> [String] {
|
||||
return ["code"]
|
||||
}
|
||||
|
||||
public static func standardSort(instanceA: SessionInstance, instanceB: SessionInstance) -> Bool {
|
||||
guard let nA = Int(instanceA.number), let nB = Int(instanceB.number) else { return false }
|
||||
guard let sessionA = instanceA.session, let sessionB = instanceB.session else { return false }
|
||||
|
||||
if instanceA.startTime == instanceB.startTime {
|
||||
return nA < nB
|
||||
let nA = instanceA.code
|
||||
let nB = instanceB.code
|
||||
|
||||
if instanceA.sessionType == instanceB.sessionType {
|
||||
if instanceA.sessionType == SessionInstanceType.session.rawValue {
|
||||
if instanceA.startTime == instanceB.startTime {
|
||||
return nA < nB
|
||||
} else {
|
||||
return instanceA.startTime < instanceB.startTime
|
||||
}
|
||||
} else {
|
||||
return Session.standardSort(sessionA: sessionA, sessionB: sessionB)
|
||||
}
|
||||
} else {
|
||||
return instanceA.startTime < instanceB.startTime
|
||||
return instanceA.sessionType < instanceB.sessionType
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -148,7 +148,7 @@ class SessionsTableViewController: NSViewController {
|
||||
|
||||
shownTimeZone = true
|
||||
|
||||
let instanceRows: [SessionRow] = section.instances.flatMap { instance in
|
||||
let instanceRows: [SessionRow] = section.instances.sorted(by: SessionInstance.standardSort).flatMap { instance in
|
||||
guard let viewModel = SessionViewModel(session: instance.session, instance: instance, style: .schedule) else { return nil }
|
||||
|
||||
return SessionRow(viewModel: viewModel)
|
||||
|
||||
Reference in New Issue
Block a user