From 37a7c199a46efe4f9bda7ceb46dc59864f0eb2ec Mon Sep 17 00:00:00 2001 From: Patrick Fairbank Date: Sun, 3 Aug 2014 16:20:40 -0700 Subject: [PATCH] Added manual editing and display of team accomplishments. --- db/migrations/20140520222523_CreateTeams.sql | 5 +++-- reports_test.go | 12 ++++++++---- setup_teams.go | 8 +++++--- static/js/announcer_display.js | 18 ++++++++++++------ team.go | 17 +++++++++-------- team_test.go | 8 +++++--- templates/announcer_display.html | 2 +- templates/edit_team.html | 6 ++++++ 8 files changed, 49 insertions(+), 27 deletions(-) diff --git a/db/migrations/20140520222523_CreateTeams.sql b/db/migrations/20140520222523_CreateTeams.sql index 87e310b..43a375f 100644 --- a/db/migrations/20140520222523_CreateTeams.sql +++ b/db/migrations/20140520222523_CreateTeams.sql @@ -1,13 +1,14 @@ -- +goose Up CREATE TABLE teams ( id INTEGER PRIMARY KEY, - name VARCHAR(255), + name VARCHAR(1000), nickname VARCHAR(255), city VARCHAR(255), stateprov VARCHAR(255), country VARCHAR(255), rookieyear int, - robotname VARCHAR(255) + robotname VARCHAR(255), + accomplishments VARCHAR(1000) ); -- +goose Down diff --git a/reports_test.go b/reports_test.go index 03c86ab..90f50ff 100644 --- a/reports_test.go +++ b/reports_test.go @@ -75,7 +75,8 @@ func TestSchedulePdfReport(t *testing.T) { match := Match{Type: "practice", DisplayName: "1", Time: time.Unix(0, 0), Red1: 1, Red2: 2, Red3: 3, Blue1: 4, Blue2: 5, Blue3: 6, Blue1IsSurrogate: true, Blue2IsSurrogate: true, Blue3IsSurrogate: true} db.CreateMatch(&match) - team := Team{254, "NASA", "The Cheesy Poofs", "San Jose", "CA", "USA", 1999, "Barrage"} + team := Team{Id: 254, Name: "NASA", Nickname: "The Cheesy Poofs", City: "San Jose", StateProv: "CA", + Country: "USA", RookieYear: 1999, RobotName: "Barrage"} db.CreateTeam(&team) // Can't really parse the PDF content and check it, so just check that what's sent back is a PDF. @@ -88,8 +89,10 @@ func TestTeamsCsvReport(t *testing.T) { clearDb() defer clearDb() db, _ = OpenDatabase(testDbPath) - team1 := Team{254, "NASA", "The Cheesy Poofs", "San Jose", "CA", "USA", 1999, "Barrage"} - team2 := Team{1114, "GM", "Simbotics", "St. Catharines", "ON", "Canada", 2003, "Simbot Evolution"} + team1 := Team{Id: 254, Name: "NASA", Nickname: "The Cheesy Poofs", City: "San Jose", StateProv: "CA", + Country: "USA", RookieYear: 1999, RobotName: "Barrage"} + team2 := Team{Id: 1114, Name: "GM", Nickname: "Simbotics", City: "St. Catharines", StateProv: "ON", + Country: "Canada", RookieYear: 2003, RobotName: "Simbot Evolution"} db.CreateTeam(&team1) db.CreateTeam(&team2) @@ -107,7 +110,8 @@ func TestTeamsPdfReport(t *testing.T) { defer clearDb() db, _ = OpenDatabase(testDbPath) eventSettings, _ = db.GetEventSettings() - team := Team{254, "NASA", "The Cheesy Poofs", "San Jose", "CA", "USA", 1999, "Barrage"} + team := Team{Id: 254, Name: "NASA", Nickname: "The Cheesy Poofs", City: "San Jose", StateProv: "CA", + Country: "USA", RookieYear: 1999, RobotName: "Barrage"} db.CreateTeam(&team) // Can't really parse the PDF content and check it, so just check that what's sent back is a PDF. diff --git a/setup_teams.go b/setup_teams.go index 9ff9c5f..0f2aa59 100644 --- a/setup_teams.go +++ b/setup_teams.go @@ -123,6 +123,7 @@ func TeamEditPostHandler(w http.ResponseWriter, r *http.Request) { team.Country = r.PostFormValue("country") team.RookieYear, _ = strconv.Atoi(r.PostFormValue("rookieYear")) team.RobotName = r.PostFormValue("robotName") + team.Accomplishments = r.PostFormValue("accomplishments") err = db.SaveTeam(team) if err != nil { handleWebErr(w, err) @@ -240,9 +241,10 @@ func getOfficialTeamInfo(teamId int) (*Team, error) { var team Team if ok { rookieYear, _ := strconv.Atoi(teamData[8]) - team = Team{teamId, html.UnescapeString(teamData[2]), html.UnescapeString(teamData[7]), - html.UnescapeString(teamData[4]), html.UnescapeString(teamData[5]), html.UnescapeString(teamData[6]), - rookieYear, html.UnescapeString(teamData[9])} + team = Team{Id: teamId, Name: html.UnescapeString(teamData[2]), Nickname: html.UnescapeString(teamData[7]), + City: html.UnescapeString(teamData[4]), StateProv: html.UnescapeString(teamData[5]), + Country: html.UnescapeString(teamData[6]), RookieYear: rookieYear, + RobotName: html.UnescapeString(teamData[9])} } else { // If no team data exists, just fill in the team number. team = Team{Id: teamId} diff --git a/static/js/announcer_display.js b/static/js/announcer_display.js index 8a89683..e46dcf4 100644 --- a/static/js/announcer_display.js +++ b/static/js/announcer_display.js @@ -16,12 +16,12 @@ var handleSetAudienceDisplay = function(targetScreen) { var handleSetMatch = function(data) { $("#matchName").text(data.MatchType + " Match " + data.MatchDisplayName); - $("#red1").html(teamTemplate(data.Red1)); - $("#red2").html(teamTemplate(data.Red2)); - $("#red3").html(teamTemplate(data.Red3)); - $("#blue1").html(teamTemplate(data.Blue1)); - $("#blue2").html(teamTemplate(data.Blue2)); - $("#blue3").html(teamTemplate(data.Blue3)); + $("#red1").html(teamTemplate(formatTeam(data.Red1))); + $("#red2").html(teamTemplate(formatTeam(data.Red2))); + $("#red3").html(teamTemplate(formatTeam(data.Red3))); + $("#blue1").html(teamTemplate(formatTeam(data.Blue1))); + $("#blue2").html(teamTemplate(formatTeam(data.Blue2))); + $("#blue3").html(teamTemplate(formatTeam(data.Blue3))); }; var handleMatchTime = function(data) { @@ -49,6 +49,12 @@ var postMatchResult = function(data) { websocket.send("setAudienceDisplay", "score"); } +// Replaces newlines in team fields with HTML line breaks. +var formatTeam = function(team) { + team.Accomplishments = team.Accomplishments.replace(/[\r\n]+/g, "
"); + return team; +}; + $(function() { // Set up the websocket back to the server. websocket = new CheesyWebsocket("/displays/announcer/websocket", { diff --git a/team.go b/team.go index f6bf016..35ffdd1 100644 --- a/team.go +++ b/team.go @@ -6,14 +6,15 @@ package main type Team struct { - Id int - Name string - Nickname string - City string - StateProv string - Country string - RookieYear int - RobotName string + Id int + Name string + Nickname string + City string + StateProv string + Country string + RookieYear int + RobotName string + Accomplishments string } func (database *Database) CreateTeam(team *Team) error { diff --git a/team_test.go b/team_test.go index 44f9c30..90b58c9 100644 --- a/team_test.go +++ b/team_test.go @@ -27,7 +27,8 @@ func TestTeamCrud(t *testing.T) { assert.Nil(t, err) defer db.Close() - team := Team{254, "NASA Ames Research Center", "The Cheesy Poofs", "San Jose", "CA", "USA", 1999, "Barrage"} + team := Team{Id: 254, Name: "NASA", Nickname: "The Cheesy Poofs", City: "San Jose", StateProv: "CA", + Country: "USA", RookieYear: 1999, RobotName: "Barrage"} db.CreateTeam(&team) team2, err := db.GetTeamById(254) assert.Nil(t, err) @@ -52,7 +53,8 @@ func TestTruncateTeams(t *testing.T) { assert.Nil(t, err) defer db.Close() - team := Team{254, "NASA Ames Research Center", "The Cheesy Poofs", "San Jose", "CA", "USA", 1999, "Barrage"} + team := Team{Id: 254, Name: "NASA", Nickname: "The Cheesy Poofs", City: "San Jose", StateProv: "CA", + Country: "USA", RookieYear: 1999, RobotName: "Barrage"} db.CreateTeam(&team) db.TruncateTeams() team2, err := db.GetTeamById(254) @@ -73,7 +75,7 @@ func TestGetAllTeams(t *testing.T) { numTeams := 20 for i := 1; i <= numTeams; i++ { - db.CreateTeam(&Team{i, "", "", "", "", "", 2014, ""}) + db.CreateTeam(&Team{Id: i, RookieYear: 2014}) } teams, err = db.GetAllTeams() assert.Nil(t, err) diff --git a/templates/announcer_display.html b/templates/announcer_display.html index 332d0ac..c359c6d 100644 --- a/templates/announcer_display.html +++ b/templates/announcer_display.html @@ -64,7 +64,7 @@ {{"{{Name}}"}} {{"{{RobotName}}"}} {{"{{RookieYear}}"}} - 2014 Central Valley Regional - Gracious Professionalism
Placeholder + {{"{{{Accomplishments}}}"}} {{"{{else}}"}} No team present {{"{{/if}}"}} diff --git a/templates/edit_team.html b/templates/edit_team.html index 9641d0b..01442f8 100644 --- a/templates/edit_team.html +++ b/templates/edit_team.html @@ -48,6 +48,12 @@ +
+ +
+ +
+