diff options
Diffstat (limited to 'backend/admin')
| -rw-r--r-- | backend/admin/handler.go | 38 | ||||
| -rw-r--r-- | backend/admin/templates/dashboard.html | 3 | ||||
| -rw-r--r-- | backend/admin/templates/online_qualifying_ranking.html | 31 |
3 files changed, 72 insertions, 0 deletions
diff --git a/backend/admin/handler.go b/backend/admin/handler.go index 8daead0..161f85c 100644 --- a/backend/admin/handler.go +++ b/backend/admin/handler.go @@ -63,6 +63,7 @@ func (h *Handler) RegisterHandlers(g *echo.Group) { g.GET("/games/:gameID", h.getGameEdit) g.POST("/games/:gameID", h.postGameEdit) g.POST("/games/:gameID/start", h.postGameStart) + g.GET("/online-qualifying-ranking", h.getOnlineQualifyingRanking) } func (h *Handler) getDashboard(c echo.Context) error { @@ -388,3 +389,40 @@ func (h *Handler) postGameStart(c echo.Context) error { return c.Redirect(http.StatusSeeOther, basePath+"/admin/games") } + +func (h *Handler) getOnlineQualifyingRanking(c echo.Context) error { + game1, err := strconv.Atoi(c.QueryParam("game_1")) + if err != nil { + return echo.NewHTTPError(http.StatusBadRequest, "Invalid game_1") + } + game2, err := strconv.Atoi(c.QueryParam("game_2")) + if err != nil { + return echo.NewHTTPError(http.StatusBadRequest, "Invalid game_2") + } + + rows, err := h.q.GetQualifyingRanking(c.Request().Context(), db.GetQualifyingRankingParams{ + GameID: int32(game1), + GameID_2: int32(game2), + }) + if err != nil { + return echo.NewHTTPError(http.StatusInternalServerError, err.Error()) + } + + entries := make([]echo.Map, len(rows)) + for i, r := range rows { + entries[i] = echo.Map{ + "Rank": i + 1, + "Username": r.Username, + "Score1": r.CodeSize1, + "Score2": r.CodeSize2, + "TotalScore": r.TotalCodeSize, + "SubmittedAt1": r.SubmittedAt1.Time.In(jst).Format("2006-01-02T15:04"), + "SubmittedAt2": r.SubmittedAt2.Time.In(jst).Format("2006-01-02T15:04"), + } + } + return c.Render(http.StatusOK, "online_qualifying_ranking", echo.Map{ + "BasePath": basePath, + "Title": "Online Qualifying Ranking", + "Entries": entries, + }) +} diff --git a/backend/admin/templates/dashboard.html b/backend/admin/templates/dashboard.html index 15b10ff..2d030ef 100644 --- a/backend/admin/templates/dashboard.html +++ b/backend/admin/templates/dashboard.html @@ -7,6 +7,9 @@ <p> <a href="{{ .BasePath }}/admin/games">Games</a> </p> +<p> + <a href="{{ .BasePath }}/admin/online-qualifying-ranking?game_1=7&game_2=8">Online Qualifying Ranking</a> +</p> <form method="post" action="{{ .BasePath }}/logout"> <button type="submit">Logout</button> </form> diff --git a/backend/admin/templates/online_qualifying_ranking.html b/backend/admin/templates/online_qualifying_ranking.html new file mode 100644 index 0000000..3b00046 --- /dev/null +++ b/backend/admin/templates/online_qualifying_ranking.html @@ -0,0 +1,31 @@ +{{ template "base.html" . }} + +{{ define "breadcrumb" }} +<a href="{{ .BasePath }}/admin/dashboard">Dashboard</a> +{{ end }} + +{{ define "content" }} +<table> + <thead> + <tr> + <th scope="col">順位</th> + <th scope="col">プレイヤー</th> + <th scope="col">スコア</th> + <th scope="col">提出時刻</th> + </tr> + </thead> + <tbody> + {{ range .Entries }} + <tr> + <td>{{ .Rank }}</td> + <td>{{ .Username }}</td> + <td>{{ .Score1 }}</td> + <td>{{ .Score2 }}</td> + <td>{{ .TotalScore }}</td> + <td>{{ .SubmittedAt1 }}</td> + <td>{{ .SubmittedAt2 }}</td> + </tr> + {{ end }} + </tbody> +</table> +{{ end }} |
