Added adding tracks.
This commit is contained in:
parent
6915315192
commit
dbf9d16caa
2
.gitignore
vendored
2
.gitignore
vendored
@ -181,3 +181,5 @@ gradle-app.setting
|
||||
*.hprof
|
||||
|
||||
# End of https://www.toptal.com/developers/gitignore/api/intellij,java,gradle,kotlin
|
||||
|
||||
data.json
|
||||
@ -71,7 +71,12 @@ private suspend fun PipelineContext<Unit,ApplicationCall>.searchResultPage(track
|
||||
trackResults.user_tracks.forEach {
|
||||
tr {
|
||||
td {
|
||||
a("/track/"+it.id){
|
||||
form("/track/" + it.id + "/add") {
|
||||
submitInput {
|
||||
value = "Add to race"
|
||||
}
|
||||
}
|
||||
a("/track/" + it.id + "/show") {
|
||||
+it.id.toString()
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,18 +1,35 @@
|
||||
import io.ktor.server.application.*
|
||||
import io.ktor.server.html.*
|
||||
import io.ktor.server.request.*
|
||||
import io.ktor.server.routing.*
|
||||
import io.ktor.util.pipeline.*
|
||||
import kotlinx.html.*
|
||||
import java.net.URLDecoder
|
||||
import java.net.URLEncoder
|
||||
|
||||
fun Routing.trackPage() {
|
||||
get("/track/{id}"){
|
||||
call.parameters.get("id")?.toLong()?.let {
|
||||
val result = Velocidrone.getLeaderboardForId(it)
|
||||
get("/track/{id}/show") {
|
||||
call.parameters["id"]?.toLong()?.let { trackId ->
|
||||
val result = Velocidrone.getLeaderboardForId(trackId)
|
||||
result.getOrNull()?.let {
|
||||
trackPage(it)
|
||||
}
|
||||
}
|
||||
}
|
||||
get("/track/{id}/add") {
|
||||
call.parameters["id"]?.toLong()?.let { trackId ->
|
||||
addTrackPage(trackId)
|
||||
}
|
||||
}
|
||||
post("/track/{id}/add") {
|
||||
call.parameters["id"]?.toLong()?.let { trackId ->
|
||||
val param = call.receiveParameters()
|
||||
param["race"]?.let { raceString ->
|
||||
val decoded = URLDecoder.decode(raceString, Charsets.UTF_8)
|
||||
RaceHolder.races.find { it.name == decoded }?.addTrack(trackId)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private suspend fun PipelineContext<Unit, ApplicationCall>.trackPage(leaderboard: Velocidrone.Leaderboard){
|
||||
@ -40,3 +57,20 @@ private suspend fun PipelineContext<Unit, ApplicationCall>.trackPage(leaderboard
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private suspend fun PipelineContext<Unit, ApplicationCall>.addTrackPage(trackId: Long) {
|
||||
respondThemedHtml("Add new track") {
|
||||
form("/track/$trackId/add", encType = FormEncType.applicationXWwwFormUrlEncoded, method = FormMethod.post) {
|
||||
select {
|
||||
name = "race"
|
||||
RaceHolder.races.forEach { race ->
|
||||
option {
|
||||
value = URLEncoder.encode(race.name, Charsets.UTF_8)
|
||||
+race.name
|
||||
}
|
||||
}
|
||||
}
|
||||
submitInput()
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user