src/main/kotlin/de/uapcore/lightpit/viewmodel/Issues.kt

changeset 250
ce6d539bb970
parent 249
6bded7090719
child 260
fb2ae2d63a56
equal deleted inserted replaced
249:6bded7090719 250:ce6d539bb970
38 import de.uapcore.lightpit.types.VersionStatus 38 import de.uapcore.lightpit.types.VersionStatus
39 import kotlin.math.roundToInt 39 import kotlin.math.roundToInt
40 40
41 class IssueSorter(private vararg val criteria: Criteria) : Comparator<Issue> { 41 class IssueSorter(private vararg val criteria: Criteria) : Comparator<Issue> {
42 enum class Field { 42 enum class Field {
43 DONE, ETA, UPDATED 43 PHASE, ETA, UPDATED
44 } 44 }
45 45
46 data class Criteria(val field: Field, val asc: Boolean = true) 46 data class Criteria(val field: Field, val asc: Boolean = true)
47 47
48 override fun compare(left: Issue, right: Issue): Int { 48 override fun compare(left: Issue, right: Issue): Int {
49 if (left == right) { 49 if (left == right) {
50 return 0; 50 return 0;
51 } 51 }
52 for (c in criteria) { 52 for (c in criteria) {
53 val result = when (c.field) { 53 val result = when (c.field) {
54 Field.DONE -> (left.status.phase == IssueStatusPhase.Done).compareTo(right.status.phase == IssueStatusPhase.Done) 54 Field.PHASE -> left.status.phase.compareTo(right.status.phase)
55 Field.ETA -> { 55 Field.ETA -> {
56 val l = left.eta 56 val l = left.eta
57 val r = right.eta 57 val r = right.eta
58 if (l == null && r == null) 0 58 if (l == null && r == null) 0
59 else if (l == null) 1 59 else if (l == null) 1

mercurial