aboutsummaryrefslogtreecommitdiffhomepage
path: root/backend/admin
diff options
context:
space:
mode:
Diffstat (limited to 'backend/admin')
-rw-r--r--backend/admin/handler.go38
-rw-r--r--backend/admin/templates/dashboard.html3
-rw-r--r--backend/admin/templates/online_qualifying_ranking.html31
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 }}