var page = new NitRpgPage(root_url)
var error = new ErrorPanel(msg)
page.flow_panels.add error
- rsp.body = page.write_to_string
+ rsp.body = page
return rsp
end
# Returns the game with `name` or null if no game exists with this name.
fun load_game(name: String): nullable Game do
var repo = api.load_repo(name)
- if api.was_error or repo == null then return null
- var game = new Game(api, repo)
+ if repo == null then return null
+ var game = new Game.from_mongo(api, repo)
game.root_url = root_url
return game
end
# Returns the list of saved games from NitRPG data.
fun load_games: Array[Game] do
var res = new Array[Game]
- var rpgdir = "nitrpg_data"
- if not rpgdir.file_exists then return res
- for user in rpgdir.files do
- for repo in "{rpgdir}/{user}".files do
- var game = load_game("{user}/{repo}")
- if game != null then res.add game
- end
+ # TODO should be option
+ var mongo = new MongoClient("mongodb://mongo:27017")
+ var db = mongo.database("nitrpg")
+ for obj in db.collection("games").find_all(new JsonObject) do
+ var repo = api.load_repo(obj["name"].to_s)
+ assert repo != null
+ var game = new Game(api, repo)
+ game.from_json(obj)
+ game.root_url = root_url
+ res.add game
end
return res
end
page = new NitRpgPage(root_url)
page.side_panels.add new GamesShortListPanel(root_url, games)
page.flow_panels.add new MDPanel(readme)
- response.body = page.write_to_string
+ response.body = page
return response
end
page.breadcrumbs = new Breadcrumbs
page.breadcrumbs.add_link(root_url / "games", "games")
page.flow_panels.add new GamesListPanel(root_url, games)
- response.body = page.write_to_string
+ response.body = page
return response
end
end
page.flow_panels.add new PodiumPanel(game)
page.flow_panels.add new EventListPanel(game, list_limit, list_from)
page.flow_panels.add new AchievementsListPanel(game)
- rsp.body = page.write_to_string
+ rsp.body = page
return rsp
end
end
if is_response_error(rsp) then return rsp
page.breadcrumbs.add_link(game.url / "players", "players")
page.flow_panels.add new ListPlayersPanel(game)
- rsp.body = page.write_to_string
+ rsp.body = page
return rsp
end
end
page.side_panels.clear
page.side_panels.add new PlayerStatusPanel(game, player)
page.flow_panels.add new PlayerReviewsPanel(game, player)
+ page.flow_panels.add new PlayerWorkPanel(game, player)
page.flow_panels.add new AchievementsListPanel(player)
page.flow_panels.add new EventListPanel(player, list_limit, list_from)
- rsp.body = page.write_to_string
+ rsp.body = page
return rsp
end
end
if is_response_error(rsp) then return rsp
page.breadcrumbs.add_link(game.url / "achievements", "achievements")
page.flow_panels.add new AchievementsListPanel(game)
- rsp.body = page.write_to_string
+ rsp.body = page
return rsp
end
end
page.breadcrumbs.add_link(achievement.url, achievement.name)
page.flow_panels.add new AchievementPanel(achievement)
page.flow_panels.add new EventListPanel(achievement, list_limit, list_from)
- rsp.body = page.write_to_string
+ rsp.body = page
return rsp
end
end