feat: implement route type and icons
This commit is contained in:
parent
3c0eb906cc
commit
4cd160cc47
13 changed files with 200 additions and 3 deletions
|
|
@ -18,12 +18,34 @@ import moe.lava.banksia.Constants
|
|||
import moe.lava.banksia.log
|
||||
import okio.ByteString.Companion.encodeUtf8
|
||||
|
||||
// Ordinals used for sorting in searcher
|
||||
enum class GtfsSubType(val value: Int) {
|
||||
MetroTrain(2),
|
||||
MetroTram(3),
|
||||
MetroBus(4),
|
||||
RegionalTrain(1),
|
||||
RegionalCoach(5),
|
||||
RegionalBus(6),
|
||||
SkyBus(11),
|
||||
Interstate(10),
|
||||
}
|
||||
|
||||
@Serializable
|
||||
data class Route(
|
||||
@SerialName("route_type") val routeType: RouteType,
|
||||
@SerialName("route_id") val routeId: Int,
|
||||
@SerialName("route_number") val routeNumber: String,
|
||||
@SerialName("route_name") val routeName: String,
|
||||
)
|
||||
@SerialName("route_gtfs_id") val routeGtfsId: String,
|
||||
) {
|
||||
fun gtfsSubType(): GtfsSubType? {
|
||||
GtfsSubType.entries.forEach {
|
||||
if (routeGtfsId.startsWith(it.value.toString()))
|
||||
return it
|
||||
}
|
||||
return null
|
||||
}
|
||||
}
|
||||
|
||||
@Serializable
|
||||
data class RouteResponse(val routes: List<Route>)
|
||||
|
|
|
|||
|
|
@ -0,0 +1,34 @@
|
|||
package moe.lava.banksia.api.ptv
|
||||
|
||||
import kotlinx.serialization.KSerializer
|
||||
import kotlinx.serialization.Serializable
|
||||
import kotlinx.serialization.descriptors.PrimitiveKind
|
||||
import kotlinx.serialization.descriptors.PrimitiveSerialDescriptor
|
||||
import kotlinx.serialization.descriptors.SerialDescriptor
|
||||
import kotlinx.serialization.encoding.Decoder
|
||||
import kotlinx.serialization.encoding.Encoder
|
||||
|
||||
private object RouteTypeSerializer : KSerializer<RouteType> {
|
||||
override val descriptor: SerialDescriptor = PrimitiveSerialDescriptor(RouteType::class.qualifiedName!!,
|
||||
PrimitiveKind.INT)
|
||||
|
||||
override fun serialize(encoder: Encoder, value: RouteType) {
|
||||
encoder.encodeInt(value.ordinal)
|
||||
}
|
||||
|
||||
override fun deserialize(decoder: Decoder): RouteType {
|
||||
val index = decoder.decodeInt()
|
||||
return RouteType.entries[index]
|
||||
}
|
||||
|
||||
override fun toString(): String = "EnumOrdinalSerializer<${descriptor.serialName}>"
|
||||
}
|
||||
|
||||
@Serializable(with = RouteTypeSerializer::class)
|
||||
enum class RouteType {
|
||||
TRAIN,
|
||||
TRAM,
|
||||
BUS,
|
||||
VLINE,
|
||||
NIGHT_BUS,
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue