Skip to content

Commit

Permalink
Switch alliance selection unpicked teams overlay to use flexbox and f…
Browse files Browse the repository at this point in the history
…ix tests.
  • Loading branch information
patfair committed Jun 16, 2024
1 parent 8b9ccaf commit c5d1366
Show file tree
Hide file tree
Showing 9 changed files with 48 additions and 42 deletions.
8 changes: 1 addition & 7 deletions field/arena.go
Original file line number Diff line number Diff line change
Expand Up @@ -47,12 +47,6 @@ const (
PostTimeout
)

type RankedTeam struct {
Rank int
TeamId int
Picked bool
}

type Arena struct {
Database *model.Database
EventSettings *model.EventSettings
Expand Down Expand Up @@ -83,7 +77,7 @@ type Arena struct {
SavedRankings game.Rankings
AllianceStationDisplayMode string
AllianceSelectionAlliances []model.Alliance
AllianceSelectionRankedTeams []*RankedTeam
AllianceSelectionRankedTeams []model.AllianceSelectionRankedTeam
AllianceSelectionShowTimer bool
AllianceSelectionTimeRemainingSec int
PlayoffTournament *playoff.PlayoffTournament
Expand Down
2 changes: 1 addition & 1 deletion field/arena_notifiers.go
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ func (arena *Arena) generateAllianceSelectionMessage() any {
Alliances []model.Alliance
ShowTimer bool
TimeRemainingSec int
RankedTeams []*RankedTeam
RankedTeams []model.AllianceSelectionRankedTeam
}{
arena.AllianceSelectionAlliances,
arena.AllianceSelectionShowTimer,
Expand Down
6 changes: 6 additions & 0 deletions model/alliance.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,12 @@ type Alliance struct {
Lineup [3]int
}

type AllianceSelectionRankedTeam struct {
Rank int
TeamId int
Picked bool
}

func (database *Database) CreateAlliance(alliance *Alliance) error {
return database.allianceTable.create(alliance)
}
Expand Down
27 changes: 19 additions & 8 deletions static/css/audience_display.css
Original file line number Diff line number Diff line change
Expand Up @@ -560,18 +560,29 @@ html {
top: 3em;
}
#allianceRankings {
max-width: 11em;
max-height: 92%;
display: flex;
flex-flow: column wrap;
overflow: hidden;
background-color: #fff;
padding: .5em 1em;
border: 2px solid #222;
font-size: 2em;
color: #222;
font-family: "FuturaLT";
-webkit-column-count: 3;
-moz-column-count: 3;
column-count: 3;
-webkit-column-gap: 1em;
-moz-column-gap: 1em;
column-gap: 1em;
}
.unpicked {
width: 5.5em;
display: flex;
justify-content: start;
}
.unpicked-rank {
width: 1.8em;
text-align: right;
color: #999;
}
.unpicked-team {
margin-left: 0.3em;
color: #222;
}
#allianceSelectionCentering {
position: absolute;
Expand Down
7 changes: 4 additions & 3 deletions static/js/audience_display.js
Original file line number Diff line number Diff line change
Expand Up @@ -337,10 +337,11 @@ const handleAllianceSelection = function(data) {
$("#allianceSelection").html(allianceSelectionTemplate({alliances: alliances, numColumns: numColumns}));
}
if (rankedTeams) {
var text = '';
let text = "";
$.each(rankedTeams, function(i, v) {
if (!v.Picked) {
text += v.Rank + '. ' + v.TeamId + '<br />';
text += `<div class="unpicked"><div class="unpicked-rank">${v.Rank}.</div>` +
`<div class="unpicked-team">${v.TeamId}</div></div>`;
}
});
$("#allianceRankings").html(text);
Expand Down Expand Up @@ -389,7 +390,7 @@ const transitionAllianceSelectionToBlank = function(callback) {
const transitionBlankToAllianceSelection = function(callback) {
$('#allianceSelectionCentering').css("right","-60em").show();
$('#allianceSelectionCentering').transition({queue: false, right: "3em"}, 500, "ease", callback);
$('#allianceRankingsCentering.enabled').css('left', '-60em').show();
$('#allianceRankingsCentering.enabled').css("left", "-60em").show();
$('#allianceRankingsCentering.enabled').transition({queue: false, left: "3em"}, 500, "ease");
};

Expand Down
4 changes: 3 additions & 1 deletion templates/setup_settings.html
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,9 @@
</div>
</div>
<div class="row mb-3">
<label class="col-lg-8 control-label" for="selectionShowUnpickedTeams">Show Unpicked Teams</label>
<label class="col-lg-8 control-label" for="selectionShowUnpickedTeams">
Show Unpicked Teams On Overlay
</label>
<div class="col-lg-1 checkbox">
<input type="checkbox" id="selectionShowUnpickedTeams"
name="selectionShowUnpickedTeams"{{if .SelectionShowUnpickedTeams}} checked{{end}}>
Expand Down
23 changes: 12 additions & 11 deletions web/alliance_selection.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@ package web

import (
"fmt"
"github.com/Team254/cheesy-arena/field"
"github.com/Team254/cheesy-arena/model"
"github.com/Team254/cheesy-arena/tournament"
"github.com/Team254/cheesy-arena/websocket"
Expand Down Expand Up @@ -48,9 +47,8 @@ func (web *Web) allianceSelectionPostHandler(w http.ResponseWriter, r *http.Requ
allianceSelectionTimeLimitSec, _ = strconv.Atoi(r.PostFormValue("timeLimitSec"))

// Reset picked state for each team in preparation for reconstructing it.
newRankedTeams := make([]*field.RankedTeam, len(web.arena.AllianceSelectionRankedTeams))
for i, team := range web.arena.AllianceSelectionRankedTeams {
newRankedTeams[i] = &field.RankedTeam{team.Rank, team.TeamId, false}
for i := range web.arena.AllianceSelectionRankedTeams {
web.arena.AllianceSelectionRankedTeams[i].Picked = false
}

// Iterate through all selections and update the alliances.
Expand All @@ -66,15 +64,15 @@ func (web *Web) allianceSelectionPostHandler(w http.ResponseWriter, r *http.Requ
return
}
found := false
for _, team := range newRankedTeams {
for k, team := range web.arena.AllianceSelectionRankedTeams {
if team.TeamId == teamId {
if team.Picked {
web.renderAllianceSelection(w, r,
fmt.Sprintf("Team %d is already part of an alliance.", teamId))
return
}
found = true
team.Picked = true
web.arena.AllianceSelectionRankedTeams[k].Picked = true
web.arena.AllianceSelectionAlliances[i].TeamIds[j] = teamId
break
}
Expand All @@ -92,7 +90,6 @@ func (web *Web) allianceSelectionPostHandler(w http.ResponseWriter, r *http.Requ
}
}
}
web.arena.AllianceSelectionRankedTeams = newRankedTeams

if allianceSelectionTicker != nil {
allianceSelectionTicker.Stop()
Expand Down Expand Up @@ -149,9 +146,13 @@ func (web *Web) allianceSelectionStartHandler(w http.ResponseWriter, r *http.Req
handleWebErr(w, err)
return
}
web.arena.AllianceSelectionRankedTeams = make([]*field.RankedTeam, len(rankings))
web.arena.AllianceSelectionRankedTeams = make([]model.AllianceSelectionRankedTeam, len(rankings))
for i, ranking := range rankings {
web.arena.AllianceSelectionRankedTeams[i] = &field.RankedTeam{i + 1, ranking.TeamId, false}
web.arena.AllianceSelectionRankedTeams[i] = model.AllianceSelectionRankedTeam{
Rank: i + 1,
TeamId: ranking.TeamId,
Picked: false,
}
}

web.arena.AllianceSelectionNotifier.Notify()
Expand Down Expand Up @@ -183,7 +184,7 @@ func (web *Web) allianceSelectionResetHandler(w http.ResponseWriter, r *http.Req
}

web.arena.AllianceSelectionAlliances = []model.Alliance{}
web.arena.AllianceSelectionRankedTeams = []*field.RankedTeam{}
web.arena.AllianceSelectionRankedTeams = []model.AllianceSelectionRankedTeam{}
web.arena.AllianceSelectionNotifier.Notify()
http.Redirect(w, r, "/alliance_selection", 303)
}
Expand Down Expand Up @@ -339,7 +340,7 @@ func (web *Web) renderAllianceSelection(w http.ResponseWriter, r *http.Request,
data := struct {
*model.EventSettings
Alliances []model.Alliance
RankedTeams []*field.RankedTeam
RankedTeams []model.AllianceSelectionRankedTeam
NextRow int
NextCol int
ErrorMessage string
Expand Down
10 changes: 1 addition & 9 deletions web/alliance_selection_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,6 @@ import (
func TestAllianceSelection(t *testing.T) {
web := setupTestWeb(t)

web.arena.AllianceSelectionAlliances = []model.Alliance{}
cachedRankedTeams = []*RankedTeam{}
web.arena.EventSettings.PlayoffType = model.SingleEliminationPlayoff
web.arena.EventSettings.NumPlayoffAlliances = 15
web.arena.EventSettings.SelectionRound3Order = "L"
Expand Down Expand Up @@ -104,8 +102,6 @@ func TestAllianceSelection(t *testing.T) {
func TestAllianceSelectionErrors(t *testing.T) {
web := setupTestWeb(t)

web.arena.AllianceSelectionAlliances = []model.Alliance{}
cachedRankedTeams = []*RankedTeam{}
web.arena.EventSettings.PlayoffType = model.SingleEliminationPlayoff
web.arena.EventSettings.NumPlayoffAlliances = 2
for i := 1; i <= 6; i++ {
Expand Down Expand Up @@ -157,7 +153,7 @@ func TestAllianceSelectionErrors(t *testing.T) {
assert.Equal(t, 200, recorder.Code)
assert.Contains(t, recorder.Body.String(), "already been finalized")
web.arena.AllianceSelectionAlliances = []model.Alliance{}
cachedRankedTeams = []*RankedTeam{}
web.arena.AllianceSelectionRankedTeams = []model.AllianceSelectionRankedTeam{}
recorder = web.postHttpResponse("/alliance_selection/start", "")
assert.Equal(t, 200, recorder.Code)
assert.Contains(t, recorder.Body.String(), "already been finalized")
Expand All @@ -166,8 +162,6 @@ func TestAllianceSelectionErrors(t *testing.T) {
func TestAllianceSelectionReset(t *testing.T) {
web := setupTestWeb(t)

web.arena.AllianceSelectionAlliances = []model.Alliance{}
cachedRankedTeams = []*RankedTeam{}
web.arena.EventSettings.PlayoffType = model.SingleEliminationPlayoff
web.arena.EventSettings.NumPlayoffAlliances = 2
for i := 1; i <= 6; i++ {
Expand Down Expand Up @@ -223,8 +217,6 @@ func TestAllianceSelectionReset(t *testing.T) {
func TestAllianceSelectionAutofocus(t *testing.T) {
web := setupTestWeb(t)

web.arena.AllianceSelectionAlliances = []model.Alliance{}
cachedRankedTeams = []*RankedTeam{}
web.arena.EventSettings.PlayoffType = model.SingleEliminationPlayoff
web.arena.EventSettings.NumPlayoffAlliances = 2

Expand Down
3 changes: 1 addition & 2 deletions web/setup_settings.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@ package web

import (
"fmt"
"github.com/Team254/cheesy-arena/field"
"io"
"io/ioutil"
"net/http"
Expand Down Expand Up @@ -258,7 +257,7 @@ func (web *Web) clearDbHandler(w http.ResponseWriter, r *http.Request) {
return
}
web.arena.AllianceSelectionAlliances = []model.Alliance{}
web.arena.AllianceSelectionRankedTeams = []*field.RankedTeam{}
web.arena.AllianceSelectionRankedTeams = []model.AllianceSelectionRankedTeam{}
}

http.Redirect(w, r, "/setup/settings", 303)
Expand Down

0 comments on commit c5d1366

Please sign in to comment.