diff --git a/field/arena.go b/field/arena.go
index a4226dd4..0b09b738 100644
--- a/field/arena.go
+++ b/field/arena.go
@@ -47,6 +47,12 @@ const (
PostTimeout
)
+type RankedTeam struct {
+ Rank int
+ TeamId int
+ Picked bool
+}
+
type Arena struct {
Database *model.Database
EventSettings *model.EventSettings
@@ -77,6 +83,7 @@ type Arena struct {
SavedRankings game.Rankings
AllianceStationDisplayMode string
AllianceSelectionAlliances []model.Alliance
+ AllianceSelectionRankedTeams []*RankedTeam
AllianceSelectionShowTimer bool
AllianceSelectionTimeRemainingSec int
PlayoffTournament *playoff.PlayoffTournament
diff --git a/field/arena_notifiers.go b/field/arena_notifiers.go
index 0c32979c..224d369c 100644
--- a/field/arena_notifiers.go
+++ b/field/arena_notifiers.go
@@ -69,10 +69,12 @@ func (arena *Arena) generateAllianceSelectionMessage() any {
Alliances []model.Alliance
ShowTimer bool
TimeRemainingSec int
+ RankedTeams []*RankedTeam
}{
arena.AllianceSelectionAlliances,
arena.AllianceSelectionShowTimer,
arena.AllianceSelectionTimeRemainingSec,
+ arena.AllianceSelectionRankedTeams,
}
}
diff --git a/model/event_settings.go b/model/event_settings.go
index a34aa042..fd87c1ca 100644
--- a/model/event_settings.go
+++ b/model/event_settings.go
@@ -21,6 +21,7 @@ type EventSettings struct {
NumPlayoffAlliances int
SelectionRound2Order string
SelectionRound3Order string
+ SelectionShowUnpickedTeams bool
TbaDownloadEnabled bool
TbaPublishingEnabled bool
TbaEventCode string
@@ -70,6 +71,7 @@ func (database *Database) GetEventSettings() (*EventSettings, error) {
NumPlayoffAlliances: 8,
SelectionRound2Order: "L",
SelectionRound3Order: "",
+ SelectionShowUnpickedTeams: false,
TbaDownloadEnabled: true,
ApChannel: 36,
WarmupDurationSec: game.MatchTiming.WarmupDurationSec,
diff --git a/static/css/audience_display.css b/static/css/audience_display.css
index f463f0d5..4f1389d4 100644
--- a/static/css/audience_display.css
+++ b/static/css/audience_display.css
@@ -553,6 +553,26 @@ html {
max-width: 800px;
max-height: 400px;
}
+#allianceRankingsCentering {
+ position: absolute;
+ height: 100%;
+ left: 3em;
+ top: 3em;
+}
+#allianceRankings {
+ 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;
+}
#allianceSelectionCentering {
position: absolute;
height: 100%;
diff --git a/static/js/audience_display.js b/static/js/audience_display.js
index cf4bbb4c..64bc57c7 100644
--- a/static/js/audience_display.js
+++ b/static/js/audience_display.js
@@ -328,6 +328,7 @@ const handlePlaySound = function(sound) {
// Handles a websocket message to update the alliance selection screen.
const handleAllianceSelection = function(data) {
const alliances = data.Alliances;
+ const rankedTeams = data.RankedTeams;
if (alliances && alliances.length > 0) {
const numColumns = alliances[0].TeamIds.length + 1;
$.each(alliances, function(k, v) {
@@ -335,6 +336,15 @@ const handleAllianceSelection = function(data) {
});
$("#allianceSelection").html(allianceSelectionTemplate({alliances: alliances, numColumns: numColumns}));
}
+ if (rankedTeams) {
+ var text = '';
+ $.each(rankedTeams, function(i, v) {
+ if (!v.Picked) {
+ text += v.Rank + '. ' + v.TeamId + '
';
+ }
+ });
+ $("#allianceRankings").html(text);
+ }
if (data.ShowTimer) {
$("#allianceSelectionTimer").text(getCountdownString(data.TimeRemainingSec));
@@ -373,11 +383,14 @@ const handleLowerThird = function(data) {
const transitionAllianceSelectionToBlank = function(callback) {
$('#allianceSelectionCentering').transition({queue: false, right: "-60em"}, 500, "ease", callback);
+ $('#allianceRankingsCentering.enabled').transition({queue:false, left: "-60em"}, 500, "ease");
};
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').transition({queue: false, left: "3em"}, 500, "ease");
};
const transitionBlankToBracket = function(callback) {
diff --git a/templates/audience_display.html b/templates/audience_display.html
index c7aa2cf7..f8688649 100644
--- a/templates/audience_display.html
+++ b/templates/audience_display.html
@@ -242,6 +242,9 @@