diff --git a/static/css/referee_display.css b/static/css/referee_panel.css
similarity index 100%
rename from static/css/referee_display.css
rename to static/css/referee_panel.css
diff --git a/static/js/referee_display.js b/static/js/referee_panel.js
similarity index 98%
rename from static/js/referee_display.js
rename to static/js/referee_panel.js
index 9ed0ecb..dc94ee7 100644
--- a/static/js/referee_display.js
+++ b/static/js/referee_panel.js
@@ -109,7 +109,7 @@ $(function() {
$("[data-toggle=tooltip]").tooltip({"placement": "top"});
// Set up the websocket back to the server.
- websocket = new CheesyWebsocket("/displays/referee/websocket", {
+ websocket = new CheesyWebsocket("/panels/referee/websocket", {
matchLoad: function(event) { handleMatchLoad(event.data) }
});
diff --git a/static/js/scoring_display.js b/static/js/scoring_panel.js
similarity index 96%
rename from static/js/scoring_display.js
rename to static/js/scoring_panel.js
index 8f92340..973a575 100644
--- a/static/js/scoring_display.js
+++ b/static/js/scoring_panel.js
@@ -65,7 +65,7 @@ $(function() {
alliance = window.location.href.split("/").slice(-1)[0];
// Set up the websocket back to the server.
- websocket = new CheesyWebsocket("/displays/scoring/" + alliance + "/websocket", {
+ websocket = new CheesyWebsocket("/panels/scoring/" + alliance + "/websocket", {
matchTime: function(event) { handleMatchTime(event.data); },
realtimeScore: function(event) { handleRealtimeScore(event.data); }
});
diff --git a/templates/base.html b/templates/base.html
index e199f9c..c03db43 100644
--- a/templates/base.html
+++ b/templates/base.html
@@ -55,6 +55,14 @@
Alliance Selection
+
+ Panel
+
+
Report
diff --git a/templates/referee_display.html b/templates/referee_panel.html
similarity index 96%
rename from templates/referee_display.html
rename to templates/referee_panel.html
index 1489b29..77225ec 100644
--- a/templates/referee_display.html
+++ b/templates/referee_panel.html
@@ -7,7 +7,7 @@
- Referee Display - {{.EventSettings.Name}} - Cheesy Arena
+ Referee Panel - {{.EventSettings.Name}} - Cheesy Arena
@@ -17,7 +17,7 @@
-
+
{{if .EntryEnabled}}
@@ -97,7 +97,7 @@
-
+
{{define "foul"}}
diff --git a/templates/scoring_display.html b/templates/scoring_panel.html
similarity index 98%
rename from templates/scoring_display.html
rename to templates/scoring_panel.html
index 6b4d9ca..8c36cf4 100644
--- a/templates/scoring_display.html
+++ b/templates/scoring_panel.html
@@ -80,5 +80,5 @@
var alliance = "{{.Alliance}}";
-
+
{{end}}
diff --git a/web/alliance_selection_test.go b/web/alliance_selection_test.go
index d4370da..64ff781 100644
--- a/web/alliance_selection_test.go
+++ b/web/alliance_selection_test.go
@@ -10,7 +10,7 @@ import (
"testing"
)
-func TestSetupAllianceSelection(t *testing.T) {
+func TestAllianceSelection(t *testing.T) {
web := setupTestWeb(t)
cachedAlliances = [][]model.AllianceTeam{}
@@ -92,7 +92,7 @@ func TestSetupAllianceSelection(t *testing.T) {
assert.False(t, team.YellowCard)
}
-func TestSetupAllianceSelectionErrors(t *testing.T) {
+func TestAllianceSelectionErrors(t *testing.T) {
web := setupTestWeb(t)
cachedAlliances = [][]model.AllianceTeam{}
@@ -156,7 +156,7 @@ func TestSetupAllianceSelectionErrors(t *testing.T) {
assert.Contains(t, recorder.Body.String(), "already been finalized")
}
-func TestSetupAllianceSelectionAutofocus(t *testing.T) {
+func TestAllianceSelectionAutofocus(t *testing.T) {
web := setupTestWeb(t)
cachedAlliances = [][]model.AllianceTeam{}
@@ -248,7 +248,7 @@ func TestSetupAllianceSelectionAutofocus(t *testing.T) {
assert.Equal(t, -1, j)
}
-func TestSetupAllianceSelectionPublish(t *testing.T) {
+func TestAllianceSelectionPublish(t *testing.T) {
web := setupTestWeb(t)
web.arena.TbaClient.BaseUrl = "fakeurl"
diff --git a/web/referee_display.go b/web/referee_panel.go
similarity index 95%
rename from web/referee_display.go
rename to web/referee_panel.go
index 632d81e..6cd8eb4 100644
--- a/web/referee_display.go
+++ b/web/referee_panel.go
@@ -19,12 +19,12 @@ import (
)
// Renders the referee interface for assigning fouls.
-func (web *Web) refereeDisplayHandler(w http.ResponseWriter, r *http.Request) {
+func (web *Web) refereePanelHandler(w http.ResponseWriter, r *http.Request) {
if !web.userIsAdmin(w, r) {
return
}
- template, err := web.parseFiles("templates/referee_display.html")
+ template, err := web.parseFiles("templates/referee_panel.html")
if err != nil {
handleWebErr(w, err)
return
@@ -76,7 +76,7 @@ func (web *Web) refereeDisplayHandler(w http.ResponseWriter, r *http.Request) {
web.arena.RedRealtimeScore.CurrentScore.Fouls, web.arena.BlueRealtimeScore.CurrentScore.Fouls,
web.arena.RedRealtimeScore.Cards, web.arena.BlueRealtimeScore.Cards, game.Rules,
!(web.arena.RedRealtimeScore.FoulsCommitted && web.arena.BlueRealtimeScore.FoulsCommitted)}
- err = template.ExecuteTemplate(w, "referee_display.html", data)
+ err = template.ExecuteTemplate(w, "referee_panel.html", data)
if err != nil {
handleWebErr(w, err)
return
@@ -84,7 +84,7 @@ func (web *Web) refereeDisplayHandler(w http.ResponseWriter, r *http.Request) {
}
// The websocket endpoint for the refereee interface client to send control commands and receive status updates.
-func (web *Web) refereeDisplayWebsocketHandler(w http.ResponseWriter, r *http.Request) {
+func (web *Web) refereePanelWebsocketHandler(w http.ResponseWriter, r *http.Request) {
// TODO(patrick): Enable authentication once Safari (for iPad) supports it over Websocket.
ws, err := websocket.NewWebsocket(w, r)
diff --git a/web/referee_display_test.go b/web/referee_panel_test.go
similarity index 92%
rename from web/referee_display_test.go
rename to web/referee_panel_test.go
index d68f977..0a03fd4 100644
--- a/web/referee_display_test.go
+++ b/web/referee_panel_test.go
@@ -12,20 +12,20 @@ import (
"time"
)
-func TestRefereeDisplay(t *testing.T) {
+func TestRefereePanel(t *testing.T) {
web := setupTestWeb(t)
- recorder := web.getHttpResponse("/displays/referee")
+ recorder := web.getHttpResponse("/panels/referee")
assert.Equal(t, 200, recorder.Code)
- assert.Contains(t, recorder.Body.String(), "Referee Display - Untitled Event - Cheesy Arena")
+ assert.Contains(t, recorder.Body.String(), "Referee Panel - Untitled Event - Cheesy Arena")
}
-func TestRefereeDisplayWebsocket(t *testing.T) {
+func TestRefereePanelWebsocket(t *testing.T) {
web := setupTestWeb(t)
server, wsUrl := web.startTestServer()
defer server.Close()
- conn, _, err := gorillawebsocket.DefaultDialer.Dial(wsUrl+"/displays/referee/websocket", nil)
+ conn, _, err := gorillawebsocket.DefaultDialer.Dial(wsUrl+"/panels/referee/websocket", nil)
assert.Nil(t, err)
defer conn.Close()
ws := websocket.NewTestWebsocket(conn)
diff --git a/web/scoring_display.go b/web/scoring_panel.go
similarity index 93%
rename from web/scoring_display.go
rename to web/scoring_panel.go
index 42c1c4e..95a52aa 100644
--- a/web/scoring_display.go
+++ b/web/scoring_panel.go
@@ -17,7 +17,7 @@ import (
)
// Renders the scoring interface which enables input of scores in real-time.
-func (web *Web) scoringDisplayHandler(w http.ResponseWriter, r *http.Request) {
+func (web *Web) scoringPanelHandler(w http.ResponseWriter, r *http.Request) {
if !web.userIsAdmin(w, r) {
return
}
@@ -29,7 +29,7 @@ func (web *Web) scoringDisplayHandler(w http.ResponseWriter, r *http.Request) {
return
}
- template, err := web.parseFiles("templates/scoring_display.html", "templates/base.html")
+ template, err := web.parseFiles("templates/scoring_panel.html", "templates/base.html")
if err != nil {
handleWebErr(w, err)
return
@@ -46,7 +46,7 @@ func (web *Web) scoringDisplayHandler(w http.ResponseWriter, r *http.Request) {
}
// The websocket endpoint for the scoring interface client to send control commands and receive status updates.
-func (web *Web) scoringDisplayWebsocketHandler(w http.ResponseWriter, r *http.Request) {
+func (web *Web) scoringPanelWebsocketHandler(w http.ResponseWriter, r *http.Request) {
if !web.userIsAdmin(w, r) {
return
}
diff --git a/web/scoring_display_test.go b/web/scoring_panel_test.go
similarity index 87%
rename from web/scoring_display_test.go
rename to web/scoring_panel_test.go
index 995c9fb..9d969ae 100644
--- a/web/scoring_display_test.go
+++ b/web/scoring_panel_test.go
@@ -12,31 +12,31 @@ import (
"time"
)
-func TestScoringDisplay(t *testing.T) {
+func TestScoringPanel(t *testing.T) {
web := setupTestWeb(t)
- recorder := web.getHttpResponse("/displays/scoring/invalidalliance")
+ recorder := web.getHttpResponse("/panels/scoring/invalidalliance")
assert.Equal(t, 500, recorder.Code)
assert.Contains(t, recorder.Body.String(), "Invalid alliance")
- recorder = web.getHttpResponse("/displays/scoring/red")
+ recorder = web.getHttpResponse("/panels/scoring/red")
assert.Equal(t, 200, recorder.Code)
- recorder = web.getHttpResponse("/displays/scoring/blue")
+ recorder = web.getHttpResponse("/panels/scoring/blue")
assert.Equal(t, 200, recorder.Code)
assert.Contains(t, recorder.Body.String(), "Scoring - Untitled Event - Cheesy Arena")
}
-func TestScoringDisplayWebsocket(t *testing.T) {
+func TestScoringPanelWebsocket(t *testing.T) {
web := setupTestWeb(t)
server, wsUrl := web.startTestServer()
defer server.Close()
- _, _, err := gorillawebsocket.DefaultDialer.Dial(wsUrl+"/displays/scoring/blorpy/websocket", nil)
+ _, _, err := gorillawebsocket.DefaultDialer.Dial(wsUrl+"/panels/scoring/blorpy/websocket", nil)
assert.NotNil(t, err)
- redConn, _, err := gorillawebsocket.DefaultDialer.Dial(wsUrl+"/displays/scoring/red/websocket", nil)
+ redConn, _, err := gorillawebsocket.DefaultDialer.Dial(wsUrl+"/panels/scoring/red/websocket", nil)
assert.Nil(t, err)
defer redConn.Close()
redWs := websocket.NewTestWebsocket(redConn)
- blueConn, _, err := gorillawebsocket.DefaultDialer.Dial(wsUrl+"/displays/scoring/blue/websocket", nil)
+ blueConn, _, err := gorillawebsocket.DefaultDialer.Dial(wsUrl+"/panels/scoring/blue/websocket", nil)
assert.Nil(t, err)
defer blueConn.Close()
blueWs := websocket.NewTestWebsocket(blueConn)
diff --git a/web/web.go b/web/web.go
index 32a2534..4d1e70e 100644
--- a/web/web.go
+++ b/web/web.go
@@ -125,42 +125,27 @@ func (web *Web) checkReaderPassword(user, password string) bool {
// Sets up the mapping between URLs and handlers.
func (web *Web) newHandler() http.Handler {
router := mux.NewRouter()
+ router.HandleFunc("/", web.indexHandler).Methods("GET")
router.HandleFunc("/alliance_selection", web.allianceSelectionGetHandler).Methods("GET")
router.HandleFunc("/alliance_selection", web.allianceSelectionPostHandler).Methods("POST")
- router.HandleFunc("/alliance_selection/start", web.allianceSelectionStartHandler).Methods("POST")
- router.HandleFunc("/alliance_selection/reset", web.allianceSelectionResetHandler).Methods("POST")
router.HandleFunc("/alliance_selection/finalize", web.allianceSelectionFinalizeHandler).Methods("POST")
router.HandleFunc("/alliance_selection/publish", web.allianceSelectionPublishHandler).Methods("POST")
- router.HandleFunc("/setup/settings", web.settingsGetHandler).Methods("GET")
- router.HandleFunc("/setup/settings", web.settingsPostHandler).Methods("POST")
- router.HandleFunc("/setup/db/save", web.saveDbHandler).Methods("GET")
- router.HandleFunc("/setup/db/restore", web.restoreDbHandler).Methods("POST")
- router.HandleFunc("/setup/db/clear", web.clearDbHandler).Methods("POST")
- router.HandleFunc("/setup/teams", web.teamsGetHandler).Methods("GET")
- router.HandleFunc("/setup/teams", web.teamsPostHandler).Methods("POST")
- router.HandleFunc("/setup/teams/clear", web.teamsClearHandler).Methods("POST")
- router.HandleFunc("/setup/teams/{id}/edit", web.teamEditGetHandler).Methods("GET")
- router.HandleFunc("/setup/teams/{id}/edit", web.teamEditPostHandler).Methods("POST")
- router.HandleFunc("/setup/teams/{id}/delete", web.teamDeletePostHandler).Methods("POST")
- router.HandleFunc("/setup/teams/publish", web.teamsPublishHandler).Methods("POST")
- router.HandleFunc("/setup/teams/generate_wpa_keys", web.teamsGenerateWpaKeysHandler).Methods("GET")
- router.HandleFunc("/setup/schedule", web.scheduleGetHandler).Methods("GET")
- router.HandleFunc("/setup/schedule/generate", web.scheduleGeneratePostHandler).Methods("POST")
- router.HandleFunc("/setup/schedule/republish", web.scheduleRepublishPostHandler).Methods("POST")
- router.HandleFunc("/setup/schedule/save", web.scheduleSavePostHandler).Methods("POST")
- router.HandleFunc("/setup/displays", web.displaysGetHandler).Methods("GET")
- router.HandleFunc("/setup/displays", web.displaysPostHandler).Methods("POST")
- router.HandleFunc("/setup/displays/reload", web.displaysReloadHandler).Methods("GET")
- router.HandleFunc("/setup/led_plc", web.ledPlcGetHandler).Methods("GET")
- router.HandleFunc("/setup/led_plc/websocket", web.ledPlcWebsocketHandler).Methods("GET")
- router.HandleFunc("/setup/lower_thirds", web.lowerThirdsGetHandler).Methods("GET")
- router.HandleFunc("/setup/lower_thirds/websocket", web.lowerThirdsWebsocketHandler).Methods("GET")
- router.HandleFunc("/setup/sponsor_slides", web.sponsorSlidesGetHandler).Methods("GET")
- router.HandleFunc("/setup/sponsor_slides", web.sponsorSlidesPostHandler).Methods("POST")
+ router.HandleFunc("/alliance_selection/reset", web.allianceSelectionResetHandler).Methods("POST")
+ router.HandleFunc("/alliance_selection/start", web.allianceSelectionStartHandler).Methods("POST")
+ router.HandleFunc("/api/alliances", web.alliancesApiHandler).Methods("GET")
router.HandleFunc("/api/matches/{type}", web.matchesApiHandler).Methods("GET")
router.HandleFunc("/api/rankings", web.rankingsApiHandler).Methods("GET")
router.HandleFunc("/api/sponsor_slides", web.sponsorSlidesApiHandler).Methods("GET")
- router.HandleFunc("/api/alliances", web.alliancesApiHandler).Methods("GET")
+ router.HandleFunc("/displays/alliance_station", web.allianceStationDisplayHandler).Methods("GET")
+ router.HandleFunc("/displays/alliance_station/websocket", web.allianceStationDisplayWebsocketHandler).Methods("GET")
+ router.HandleFunc("/displays/announcer", web.announcerDisplayHandler).Methods("GET")
+ router.HandleFunc("/displays/announcer/websocket", web.announcerDisplayWebsocketHandler).Methods("GET")
+ router.HandleFunc("/displays/audience", web.audienceDisplayHandler).Methods("GET")
+ router.HandleFunc("/displays/audience/websocket", web.audienceDisplayWebsocketHandler).Methods("GET")
+ router.HandleFunc("/displays/fta", web.ftaDisplayHandler).Methods("GET")
+ router.HandleFunc("/displays/fta/websocket", web.ftaDisplayWebsocketHandler).Methods("GET")
+ router.HandleFunc("/displays/pit", web.pitDisplayHandler).Methods("GET")
+ router.HandleFunc("/displays/pit/websocket", web.pitDisplayWebsocketHandler).Methods("GET")
router.HandleFunc("/match_play", web.matchPlayHandler).Methods("GET")
router.HandleFunc("/match_play/{matchId}/load", web.matchPlayLoadHandler).Methods("GET")
router.HandleFunc("/match_play/{matchId}/show_result", web.matchPlayShowResultHandler).Methods("GET")
@@ -168,6 +153,10 @@ func (web *Web) newHandler() http.Handler {
router.HandleFunc("/match_review", web.matchReviewHandler).Methods("GET")
router.HandleFunc("/match_review/{matchId}/edit", web.matchReviewEditGetHandler).Methods("GET")
router.HandleFunc("/match_review/{matchId}/edit", web.matchReviewEditPostHandler).Methods("POST")
+ router.HandleFunc("/panels/scoring/{alliance}", web.scoringPanelHandler).Methods("GET")
+ router.HandleFunc("/panels/scoring/{alliance}/websocket", web.scoringPanelWebsocketHandler).Methods("GET")
+ router.HandleFunc("/panels/referee", web.refereePanelHandler).Methods("GET")
+ router.HandleFunc("/panels/referee/websocket", web.refereePanelWebsocketHandler).Methods("GET")
router.HandleFunc("/reports/csv/rankings", web.rankingsCsvReportHandler).Methods("GET")
router.HandleFunc("/reports/pdf/rankings", web.rankingsPdfReportHandler).Methods("GET")
router.HandleFunc("/reports/csv/schedule/{type}", web.scheduleCsvReportHandler).Methods("GET")
@@ -175,21 +164,32 @@ func (web *Web) newHandler() http.Handler {
router.HandleFunc("/reports/csv/teams", web.teamsCsvReportHandler).Methods("GET")
router.HandleFunc("/reports/pdf/teams", web.teamsPdfReportHandler).Methods("GET")
router.HandleFunc("/reports/csv/wpa_keys", web.wpaKeysCsvReportHandler).Methods("GET")
- router.HandleFunc("/displays/audience", web.audienceDisplayHandler).Methods("GET")
- router.HandleFunc("/displays/audience/websocket", web.audienceDisplayWebsocketHandler).Methods("GET")
- router.HandleFunc("/displays/pit", web.pitDisplayHandler).Methods("GET")
- router.HandleFunc("/displays/pit/websocket", web.pitDisplayWebsocketHandler).Methods("GET")
- router.HandleFunc("/displays/announcer", web.announcerDisplayHandler).Methods("GET")
- router.HandleFunc("/displays/announcer/websocket", web.announcerDisplayWebsocketHandler).Methods("GET")
- router.HandleFunc("/displays/scoring/{alliance}", web.scoringDisplayHandler).Methods("GET")
- router.HandleFunc("/displays/scoring/{alliance}/websocket", web.scoringDisplayWebsocketHandler).Methods("GET")
- router.HandleFunc("/displays/referee", web.refereeDisplayHandler).Methods("GET")
- router.HandleFunc("/displays/referee/websocket", web.refereeDisplayWebsocketHandler).Methods("GET")
- router.HandleFunc("/displays/alliance_station", web.allianceStationDisplayHandler).Methods("GET")
- router.HandleFunc("/displays/alliance_station/websocket", web.allianceStationDisplayWebsocketHandler).Methods("GET")
- router.HandleFunc("/displays/fta", web.ftaDisplayHandler).Methods("GET")
- router.HandleFunc("/displays/fta/websocket", web.ftaDisplayWebsocketHandler).Methods("GET")
- router.HandleFunc("/", web.indexHandler).Methods("GET")
+ router.HandleFunc("/setup/db/clear", web.clearDbHandler).Methods("POST")
+ router.HandleFunc("/setup/db/restore", web.restoreDbHandler).Methods("POST")
+ router.HandleFunc("/setup/db/save", web.saveDbHandler).Methods("GET")
+ router.HandleFunc("/setup/displays", web.displaysGetHandler).Methods("GET")
+ router.HandleFunc("/setup/displays", web.displaysPostHandler).Methods("POST")
+ router.HandleFunc("/setup/displays/reload", web.displaysReloadHandler).Methods("GET")
+ router.HandleFunc("/setup/led_plc", web.ledPlcGetHandler).Methods("GET")
+ router.HandleFunc("/setup/led_plc/websocket", web.ledPlcWebsocketHandler).Methods("GET")
+ router.HandleFunc("/setup/lower_thirds", web.lowerThirdsGetHandler).Methods("GET")
+ router.HandleFunc("/setup/lower_thirds/websocket", web.lowerThirdsWebsocketHandler).Methods("GET")
+ router.HandleFunc("/setup/schedule", web.scheduleGetHandler).Methods("GET")
+ router.HandleFunc("/setup/schedule/generate", web.scheduleGeneratePostHandler).Methods("POST")
+ router.HandleFunc("/setup/schedule/republish", web.scheduleRepublishPostHandler).Methods("POST")
+ router.HandleFunc("/setup/schedule/save", web.scheduleSavePostHandler).Methods("POST")
+ router.HandleFunc("/setup/settings", web.settingsGetHandler).Methods("GET")
+ router.HandleFunc("/setup/settings", web.settingsPostHandler).Methods("POST")
+ router.HandleFunc("/setup/sponsor_slides", web.sponsorSlidesGetHandler).Methods("GET")
+ router.HandleFunc("/setup/sponsor_slides", web.sponsorSlidesPostHandler).Methods("POST")
+ router.HandleFunc("/setup/teams", web.teamsGetHandler).Methods("GET")
+ router.HandleFunc("/setup/teams", web.teamsPostHandler).Methods("POST")
+ router.HandleFunc("/setup/teams/{id}/delete", web.teamDeletePostHandler).Methods("POST")
+ router.HandleFunc("/setup/teams/{id}/edit", web.teamEditGetHandler).Methods("GET")
+ router.HandleFunc("/setup/teams/{id}/edit", web.teamEditPostHandler).Methods("POST")
+ router.HandleFunc("/setup/teams/clear", web.teamsClearHandler).Methods("POST")
+ router.HandleFunc("/setup/teams/generate_wpa_keys", web.teamsGenerateWpaKeysHandler).Methods("GET")
+ router.HandleFunc("/setup/teams/publish", web.teamsPublishHandler).Methods("POST")
return router
}