Improved sorting in schedule (Closes #211)

This commit is contained in:
Guilherme Rambo
2017-06-03 00:52:47 -03:00
parent c43637b954
commit 10dfd654c4
2 changed files with 26 additions and 5 deletions

View File

@@ -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
}
}

View File

@@ -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)