redrield
11/18/2017, 9:23 PMpackage com.redrield.frontend.components
import com.redrield.common.TeamData
import com.redrield.frontend.loading
import react.*
import react.dom.div
class ListLogsComponent : RComponent<RProps, ListState>() {
private var mounted = false
override fun RBuilder.render(): ReactElement? = div(classes = "teams") {
loading(state.teams ?: state.fetchError) {
val err = state.fetchError
if(err != null) {
div {
+(err.message ?: "Internal server error")
}
}
div(classes = "col-lg-12") {
val teams = state.teams!!
for (team in teams) {
child(LogComponent::class) {
attrs {
this.team = team
}
}
}
// +"wip"
}
}
}
override fun componentDidMount() {
mounted = true
loadData()
}
private fun loadData() {
setState {
async {
try {
teams = fetchLogs()
} catch(e: Exception) {
fetchError = e
}
}.then {
state.teams?.forEach(::println)
println(state.fetchError)
}
}
}
private suspend fun fetchLogs(): List<TeamData> {
val res = httpGet("/logs", "")
println(res)
return JSON.parse(res)
}
}
interface ListState : RState {
var teams: List<TeamData>?
var fetchError: Throwable?
}