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
|
*.hprof
|
||||||
|
|
||||||
# End of https://www.toptal.com/developers/gitignore/api/intellij,java,gradle,kotlin
|
# 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 {
|
trackResults.user_tracks.forEach {
|
||||||
tr {
|
tr {
|
||||||
td {
|
td {
|
||||||
a("/track/"+it.id){
|
form("/track/" + it.id + "/add") {
|
||||||
|
submitInput {
|
||||||
|
value = "Add to race"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
a("/track/" + it.id + "/show") {
|
||||||
+it.id.toString()
|
+it.id.toString()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,18 +1,35 @@
|
|||||||
import io.ktor.server.application.*
|
import io.ktor.server.application.*
|
||||||
import io.ktor.server.html.*
|
import io.ktor.server.html.*
|
||||||
|
import io.ktor.server.request.*
|
||||||
import io.ktor.server.routing.*
|
import io.ktor.server.routing.*
|
||||||
import io.ktor.util.pipeline.*
|
import io.ktor.util.pipeline.*
|
||||||
import kotlinx.html.*
|
import kotlinx.html.*
|
||||||
|
import java.net.URLDecoder
|
||||||
|
import java.net.URLEncoder
|
||||||
|
|
||||||
fun Routing.trackPage() {
|
fun Routing.trackPage() {
|
||||||
get("/track/{id}"){
|
get("/track/{id}/show") {
|
||||||
call.parameters.get("id")?.toLong()?.let {
|
call.parameters["id"]?.toLong()?.let { trackId ->
|
||||||
val result = Velocidrone.getLeaderboardForId(it)
|
val result = Velocidrone.getLeaderboardForId(trackId)
|
||||||
result.getOrNull()?.let {
|
result.getOrNull()?.let {
|
||||||
trackPage(it)
|
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){
|
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