dashboard: generate a special teams.json with members for trophee scene

This commit is contained in:
nemunaire 2020-01-30 18:43:44 +01:00
parent b9fa5accff
commit 66a72633d6
4 changed files with 32 additions and 4 deletions

View File

@ -15,7 +15,11 @@ import (
func init() {
router.GET("/api/teams.json", apiHandler(
func(httprouter.Params, []byte) (interface{}, error) {
return fic.ExportTeams()
return fic.ExportTeams(false)
}))
router.GET("/api/teams-members.json", apiHandler(
func(httprouter.Params, []byte) (interface{}, error) {
return fic.ExportTeams(true)
}))
router.GET("/api/teams-binding", apiHandler(
func(httprouter.Params, []byte) (interface{}, error) {

View File

@ -169,6 +169,14 @@ func genMyPublicFile() error {
os.Symlink("my.json", path.Join(dirPath, "wait.json"))
if teams, err := fic.ExportTeams(true); err != nil {
return err
} else if j, err := json.Marshal(teams); err != nil {
return err
} else if err = ioutil.WriteFile(path.Join(dirPath, "teams.json"), j, 0666); err != nil {
return err
}
return nil
}
@ -187,7 +195,7 @@ func genEventsFile() error {
// Generate general teams.json file
func genTeamsFile() error {
if teams, err := fic.ExportTeams(); err != nil {
if teams, err := fic.ExportTeams(false); err != nil {
return err
} else if j, err := json.Marshal(teams); err != nil {
return err
@ -195,6 +203,14 @@ func genTeamsFile() error {
return err
}
if teams, err := fic.ExportTeams(true); err != nil {
return err
} else if j, err := json.Marshal(teams); err != nil {
return err
} else if err = ioutil.WriteFile(path.Join(TeamsDir, "public", "teams.json"), j, 0666); err != nil {
return err
}
return nil
}

View File

@ -121,7 +121,7 @@ func init() {
if forwarder != nil {
fwd_request(w, r, *forwarder)
} else {
http.ServeFile(w, r, path.Join(TeamsDir, "teams.json"))
http.ServeFile(w, r, path.Join(TeamsDir, "public", "teams.json"))
}
})
api.Router().GET("/themes.json", func(w http.ResponseWriter, r *http.Request, ps httprouter.Params) {

View File

@ -10,10 +10,11 @@ type exportedTeam struct {
Color string `json:"color"`
Rank int `json:"rank"`
Points float64 `json:"score"`
Members []Member `json:"members,omitempty"`
}
// Exportedteam creates the structure to respond as teams.json.
func ExportTeams() (ret map[string]exportedTeam, err error) {
func ExportTeams(includeMembers bool) (ret map[string]exportedTeam, err error) {
var teams []Team
var rank map[int64]int
@ -25,11 +26,18 @@ func ExportTeams() (ret map[string]exportedTeam, err error) {
ret = map[string]exportedTeam{}
for _, team := range teams {
points, _ := team.GetPoints()
var members []Member
if includeMembers {
if members, err = team.GetMembers(); err != nil {
return
}
}
ret[fmt.Sprintf("%d", team.Id)] = exportedTeam{
team.Name,
fmt.Sprintf("#%x", team.Color),
rank[team.Id],
points,
members,
}
}