Skip to content

Commit

Permalink
Merge pull request #486 from jaro-jaro/454-pridat-platnost-linek-do-dk
Browse files Browse the repository at this point in the history
#454 Přidána platnost linek do detailu kurzu
  • Loading branch information
rblaha15 authored Sep 4, 2024
2 parents b80f591 + b6db8ea commit 05502d9
Show file tree
Hide file tree
Showing 11 changed files with 34 additions and 8 deletions.
10 changes: 10 additions & 0 deletions app/src/main/java/cz/jaro/dpmcb/data/SpojeRepository.kt
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ import cz.jaro.dpmcb.data.entities.ShortLine
import cz.jaro.dpmcb.data.entities.Stop
import cz.jaro.dpmcb.data.entities.Table
import cz.jaro.dpmcb.data.entities.TimeCode
import cz.jaro.dpmcb.data.entities.Validity
import cz.jaro.dpmcb.data.entities.changePart
import cz.jaro.dpmcb.data.entities.div
import cz.jaro.dpmcb.data.entities.generic
Expand Down Expand Up @@ -469,6 +470,7 @@ class SpojeRepository(
}.distinct(),
timeCodes,
stops.first().fixedCodes,
Validity(stops.first().validFrom, stops.first().validTo),
)
}
.sortedBy {
Expand All @@ -489,6 +491,10 @@ class SpojeRepository(
}
}

val commonValidity = conns.first().validity.takeIf {
conns.distinctBy { it.validity }.size == 1
}

val before = buildList {
if (seq.modifiers().part() == 2 && seq.generic() !in dividedSequencesWithMultipleBuses.first()) add(seq.changePart(1))
addAll(sequenceConnections.first().filter { (_, s2) -> s2 == seq }.map { (s1, _) -> s1 })
Expand All @@ -513,10 +519,12 @@ class SpojeRepository(
uniqueFixedCodes = it.fixedCodes.split(" ").filter { code ->
code !in commonFixedCodes
}.joinToString(" "),
uniqueValidity = it.validity.takeIf { commonValidity == null },
)
},
commonTimeCodes = commonTimeCodes,
commonFixedCodes = commonFixedCodes.joinToString(" "),
commonValidity = commonValidity,
)
}

Expand Down Expand Up @@ -923,6 +931,8 @@ fun filterTimeCodesAndMakeReadable(timeCodes: List<RunsFromTo>) = timeCodes.remo
} + dates.joinToString()
}

fun validityString(validity: Validity) = "JŘ linky platí od ${validity.validFrom.asString()} do ${validity.validTo.asString()}"

private fun List<RunsFromTo>.removeNoCodes() = remove(::isNoCode)

private fun isNoCode(it: RunsFromTo) = it.`in`.start == noCode && it.`in`.endInclusive == noCode
Expand Down
5 changes: 3 additions & 2 deletions app/src/main/java/cz/jaro/dpmcb/data/database/Dao.kt
Original file line number Diff line number Diff line change
Expand Up @@ -286,9 +286,10 @@ interface Dao {
SELECT (conn.fixedCodes LIKE '%{%') lowFloor, conn.line, seqofconn.sequence, conn.fixedCodes, CASE
WHEN connstop.departure IS null THEN connstop.arrival
ELSE connstop.departure
END time, stop.fixedCodes stopFixedCodes, connstop.fixedCodes connStopFixedCodes, stopName name, conn.name connName, conn.tab, timecode.type, timecode.validFrom `from`, timecode.validTo `to` FROM connstop
END time, stop.fixedCodes stopFixedCodes, line.validFrom, line.validTo, connstop.fixedCodes connStopFixedCodes, stopName name, conn.name connName, conn.tab, timecode.type, timecode.validFrom `from`, timecode.validTo `to` FROM connstop
JOIN conn ON conn.tab = connstop.tab AND conn.connNumber = connstop.connNumber
JOIN stop ON stop.tab = connstop.tab AND stop.stopNumber = connstop.stopNumber
JOIN stop ON stop.tab = connstop.tab AND stop.stopNumber = connstop.stopNumber
JOIN line ON line.tab = conn.tab AND line.number = conn.line
JOIN timecode ON timecode.tab = connstop.tab AND timecode.connNumber = connstop.connNumber
JOIN seqofconn ON seqofconn.line = conn.line AND seqofconn.connNumber = conn.connNumber
WHERE (
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package cz.jaro.dpmcb.data.realtions.sequence

import cz.jaro.dpmcb.data.entities.Validity
import cz.jaro.dpmcb.data.realtions.BusInfo
import cz.jaro.dpmcb.data.realtions.BusStop
import cz.jaro.dpmcb.data.realtions.RunsFromTo
Expand All @@ -9,4 +10,5 @@ data class BusOfSequence(
val stops: List<BusStop>,
val uniqueTimeCodes: List<RunsFromTo>,
val uniqueFixedCodes: String,
val uniqueValidity: Validity?,
)
Original file line number Diff line number Diff line change
Expand Up @@ -22,4 +22,6 @@ data class CoreBusOfSequence(
val from: LocalDate,
val to: LocalDate,
val tab: Table,
val validFrom: LocalDate,
val validTo: LocalDate,
)
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package cz.jaro.dpmcb.data.realtions.sequence

import cz.jaro.dpmcb.data.entities.Validity
import cz.jaro.dpmcb.data.realtions.BusInfo
import cz.jaro.dpmcb.data.realtions.BusStop
import cz.jaro.dpmcb.data.realtions.RunsFromTo
Expand All @@ -9,4 +10,5 @@ data class InterBusOfSequence(
val stops: List<BusStop>,
val timeCodes: List<RunsFromTo>,
val fixedCodes: String,
val validity: Validity,
)
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package cz.jaro.dpmcb.data.realtions.sequence

import cz.jaro.dpmcb.data.entities.SequenceCode
import cz.jaro.dpmcb.data.entities.Validity
import cz.jaro.dpmcb.data.realtions.RunsFromTo

data class Sequence(
Expand All @@ -10,4 +11,5 @@ data class Sequence(
val after: List<SequenceCode>,
val commonTimeCodes: List<RunsFromTo>,
val commonFixedCodes: String,
val commonValidity: Validity?,
)
6 changes: 3 additions & 3 deletions app/src/main/java/cz/jaro/dpmcb/ui/bus/BusViewModel.kt
Original file line number Diff line number Diff line change
Expand Up @@ -10,13 +10,13 @@ import cz.jaro.dpmcb.data.filterFixedCodesAndMakeReadable
import cz.jaro.dpmcb.data.filterTimeCodesAndMakeReadable
import cz.jaro.dpmcb.data.helperclasses.NavigateWithOptionsFunction
import cz.jaro.dpmcb.data.helperclasses.SystemClock
import cz.jaro.dpmcb.data.helperclasses.UtilFunctions.asString
import cz.jaro.dpmcb.data.helperclasses.UtilFunctions.minus
import cz.jaro.dpmcb.data.helperclasses.UtilFunctions.nowFlow
import cz.jaro.dpmcb.data.helperclasses.UtilFunctions.plus
import cz.jaro.dpmcb.data.helperclasses.invoke
import cz.jaro.dpmcb.data.helperclasses.timeHere
import cz.jaro.dpmcb.data.helperclasses.todayHere
import cz.jaro.dpmcb.data.validityString
import cz.jaro.dpmcb.ui.common.TimetableEvent
import cz.jaro.dpmcb.ui.common.toSimpleTime
import cz.jaro.dpmcb.ui.main.Route
Expand Down Expand Up @@ -58,7 +58,7 @@ class BusViewModel(
runsNextTimeAfterDate = List(365) { date + it.days }.firstOrNull { runsAt(it) },
timeCodes = filterTimeCodesAndMakeReadable(timeCodes),
fixedCodes = filterFixedCodesAndMakeReadable(fixedCodes, timeCodes),
lineCode = "JŘ linky platí od ${validity.validFrom.asString()} do ${validity.validTo.asString()}",
lineCode = validityString(validity),
deeplink = "https://jaro-jaro.github.io/DPMCB/spoj/$busName",
)
}
Expand All @@ -72,7 +72,7 @@ class BusViewModel(
lowFloor = bus.info.lowFloor,
timeCodes = filterTimeCodesAndMakeReadable(bus.timeCodes),
fixedCodes = filterFixedCodesAndMakeReadable(bus.fixedCodes, bus.timeCodes),
lineCode = "JŘ linky platí od ${validity.validFrom.asString()} do ${validity.validTo.asString()}",
lineCode = validityString(validity),
deeplink = "https://jaro-jaro.github.io/DPMCB/spoj/$busName",
restriction = restriction,
favourite = favourites.find { it.busName == busName },
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package cz.jaro.dpmcb.ui.sequence

import cz.jaro.dpmcb.data.entities.BusName
import cz.jaro.dpmcb.data.entities.LongLine
import cz.jaro.dpmcb.data.entities.ShortLine
import cz.jaro.dpmcb.data.realtions.BusStop

Expand All @@ -14,4 +13,5 @@ data class BusInSequence(
val shouldBeRunning: Boolean,
val timeCodes: List<String>,
val fixedCodes: List<String>,
val lineCode: String,
)
2 changes: 2 additions & 0 deletions app/src/main/java/cz/jaro/dpmcb/ui/sequence/SequenceScreen.kt
Original file line number Diff line number Diff line change
Expand Up @@ -139,6 +139,7 @@ fun SequenceScreen(
state.timeCodes.forEach {
Text(it, color = MaterialTheme.colorScheme.onSurfaceVariant)
}
Text(state.lineCode, color = MaterialTheme.colorScheme.onSurfaceVariant)
}

item {
Expand Down Expand Up @@ -218,6 +219,7 @@ fun SequenceScreen(
bus.timeCodes.forEach {
Text(it, color = MaterialTheme.colorScheme.onSurfaceVariant)
}
Text(bus.lineCode, color = MaterialTheme.colorScheme.onSurfaceVariant)
}
}
item {
Expand Down
5 changes: 4 additions & 1 deletion app/src/main/java/cz/jaro/dpmcb/ui/sequence/SequenceState.kt
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ sealed interface SequenceState {
val buses: List<BusInSequence>
val timeCodes: List<String>
val fixedCodes: List<String>
val lineCode: String
val runsToday: Boolean
val height: Float
val traveledSegments: Int
Expand All @@ -37,6 +38,7 @@ sealed interface SequenceState {
override val buses: List<BusInSequence>,
override val timeCodes: List<String>,
override val fixedCodes: List<String>,
override val lineCode: String,
override val runsToday: Boolean,
override val height: Float,
override val traveledSegments: Int,
Expand All @@ -52,6 +54,7 @@ sealed interface SequenceState {
override val buses: List<BusInSequence>,
override val timeCodes: List<String>,
override val fixedCodes: List<String>,
override val lineCode: String,
override val runsToday: Boolean,
override val height: Float,
override val traveledSegments: Int,
Expand All @@ -69,7 +72,7 @@ sealed interface SequenceState {
confirmedLowFloor: Boolean?,
) = with(state) {
Online(
sequence, sequenceName, before, after, buses, timeCodes, fixedCodes, runsToday, height, traveledSegments, date,
sequence, sequenceName, before, after, buses, timeCodes, fixedCodes, lineCode, runsToday, height, traveledSegments, date,
vehicle ?: this.vehicle, delayMin, confirmedLowFloor
)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ import cz.jaro.dpmcb.data.helperclasses.UtilFunctions.minus
import cz.jaro.dpmcb.data.helperclasses.UtilFunctions.plus
import cz.jaro.dpmcb.data.helperclasses.timeHere
import cz.jaro.dpmcb.data.helperclasses.todayHere
import cz.jaro.dpmcb.data.validityString
import cz.jaro.dpmcb.ui.common.TimetableEvent
import cz.jaro.dpmcb.ui.common.toSimpleTime
import cz.jaro.dpmcb.ui.main.Route
Expand Down Expand Up @@ -54,7 +55,6 @@ class SequenceViewModel(
)

private val info: Flow<SequenceState> = repo.date.map { date ->
println("\"${params.sequence}\"")
val sequence = repo.sequence(params.sequence, date)
?: return@map SequenceState.DoesNotExist(params.sequence, with(repo) { params.sequence.seqName() }, date)

Expand All @@ -67,6 +67,7 @@ class SequenceViewModel(
sequenceName = with(repo) { sequence.name.seqName() },
timeCodes = filterTimeCodesAndMakeReadable(sequence.commonTimeCodes),
fixedCodes = filterFixedCodesAndMakeReadable(sequence.commonFixedCodes, sequence.commonTimeCodes),
lineCode = sequence.commonValidity?.let { validityString(it) } ?: "",
before = sequence.before.map { it to with(repo) { it.seqConnection() } },
after = sequence.after.map { it to with(repo) { it.seqConnection() } },
buses = sequence.buses.map { bus ->
Expand All @@ -84,6 +85,7 @@ class SequenceViewModel(
shouldBeRunning = runningBus?.info?.connName == bus.info.connName && date == SystemClock.todayHere() && runsToday,
timeCodes = filterTimeCodesAndMakeReadable(bus.uniqueTimeCodes),
fixedCodes = filterFixedCodesAndMakeReadable(bus.uniqueFixedCodes, bus.uniqueTimeCodes),
lineCode = bus.uniqueValidity?.let { validityString(it) } ?: "",
)
},
runsToday = repo.runsAt(timeCodes = sequence.commonTimeCodes, fixedCodes = sequence.commonFixedCodes, date = SystemClock.todayHere()),
Expand Down

0 comments on commit 05502d9

Please sign in to comment.