Files
cheesy-arena-lite/templates/match_play.html

292 lines
12 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{{/*
Copyright 2014 Team 254. All Rights Reserved.
Author: pat@patfairbank.com (Patrick Fairbank)
UI for controlling match play and viewing team connection and field status.
*/}}
{{define "title"}}Match Play{{end}}
{{define "body"}}
<div class="row">
<div class="col-lg-4">
<a href="/match_play/0/load"><b class="btn btn-info">Load Test Match</b></a><br /><br />
<ul class="nav nav-tabs" style="margin-bottom: 15px;">
<li{{if eq .CurrentMatchType "practice" }} class="active"{{end}}>
<a href="#practice" data-toggle="tab">Practice</a>
</li>
<li{{if eq .CurrentMatchType "qualification" }} class="active"{{end}}>
<a href="#qualification" data-toggle="tab">Qualification</a>
</li>
<li{{if eq .CurrentMatchType "elimination" }} class="active"{{end}}>
<a href="#elimination" data-toggle="tab">Playoff</a>
</li>
</ul>
<div class="tab-content">
{{range $type, $matches := .MatchesByType}}
<div class="tab-pane {{if eq $.CurrentMatchType $type }} active{{end}}" id="{{$type}}">
<table class="table table-striped table-hover ">
<thead>
<tr>
<th>Match</th>
<th>Time</th>
<th>Action</th>
</tr>
</thead>
<tbody>
{{range $match := $matches}}
<tr class="{{$match.ColorClass}}">
<td>{{$match.DisplayName}}</td>
<td>{{$match.Time}}</td>
<td class="nowrap">
<a href="/match_play/{{$match.Id}}/load">
<b class="btn btn-info btn-xs">Load</b>
</a>
{{if ne $match.Status ""}}
<a href="/match_play/{{$match.Id}}/show_result">
<b class="btn btn-info btn-xs">Show Result</b>
</a>
{{end}}
</td>
</tr>
{{end}}
</tbody>
</table>
</div>
{{end}}
</div>
</div>
<div class="col-lg-8">
<div class="row text-center">
<div id="matchState" class="col-lg-2 col-lg-offset-2 well well-sm text-center">&nbsp;</div>
<div id="matchTime" class="col-lg-2 well well-sm text-center">&nbsp;</div>
<div id="redScore" class="col-lg-2 well well-sm well-red text-center">&nbsp;</div>
<div id="blueScore" class="col-lg-2 well well-sm well-blue text-center">&nbsp;</div>
</div>
<div class="row text-center">
<div class="col-lg-6 well well-darkblue">
<div class="row form-group">
<div class="col-lg-4">Blue Teams</div>
<div class="col-lg-2" data-toggle="tooltip" title="Driver Station">DS</div>
<div class="col-lg-2" data-toggle="tooltip" title="Radio (AP Configured SSID)">Rad</div>
<div class="col-lg-2" data-toggle="tooltip" title="Robot">Rbt</div>
<div class="col-lg-2" data-toggle="tooltip" title="Bypass/Disable">Byp</div>
</div>
{{template "matchPlayTeam" dict "team" .Match.Blue1 "color" "B" "position" 1 "data" .}}
{{template "matchPlayTeam" dict "team" .Match.Blue2 "color" "B" "position" 2 "data" .}}
{{template "matchPlayTeam" dict "team" .Match.Blue3 "color" "B" "position" 3 "data" .}}
</div>
<div class="col-lg-6 well well-darkred">
<div class="row form-group">
<div class="col-lg-4">Red Teams</div>
<div class="col-lg-2" data-toggle="tooltip" title="Driver Station">DS</div>
<div class="col-lg-2" data-toggle="tooltip" title="Radio (AP Configured SSID)">Rad</div>
<div class="col-lg-2" data-toggle="tooltip" title="Robot">Rbt</div>
<div class="col-lg-2" data-toggle="tooltip" title="Bypass/Disable">Byp</div>
</div>
{{template "matchPlayTeam" dict "team" .Match.Red3 "color" "R" "position" 3 "data" .}}
{{template "matchPlayTeam" dict "team" .Match.Red2 "color" "R" "position" 2 "data" .}}
{{template "matchPlayTeam" dict "team" .Match.Red1 "color" "R" "position" 1 "data" .}}
</div>
</div>
<div class="row text-center">
<button type="button" id="startMatch" class="btn btn-success btn-lg btn-match-play"
onclick="startMatch();" disabled>
Start Match
</button>
<button type="button" id="abortMatch" class="btn btn-primary btn-lg btn-match-play"
onclick="abortMatch();" disabled>
Abort Match
</button>
<button type="button" id="commitResults" class="btn btn-info btn-lg btn-match-play"
onclick="confirmCommit({{.IsReplay}});" disabled>
Commit Results
</button>
<button type="button" id="discardResults" class="btn btn-danger btn-lg btn-match-play"
onclick="$('#confirmDiscardResults').modal('show');" disabled>
Discard Results
</button>
<a href="/match_review/current/edit">
<button type="button" id="editResults" class="btn btn-default btn-lg btn-match-play" disabled>
Edit Results
</button>
</a>
</div>
<br />
<div class="row">
<div class="col-lg-12 well">
<div class="col-lg-3">
<p>Scoring</p>
<p><span class="label label-scoring" id="refereeScoreStatus">Referee</span><br />
<span class="label label-scoring" id="redScoreStatus"></span><br />
<span class="label label-scoring" id="blueScoreStatus"></span></p>
{{if .PlcIsEnabled}}
<p>PLC Status</p>
<p>
<span class="label label-scoring" id="plcStatus"></span><br />
<span class="label label-scoring" id="fieldEstop">E-Stop</span>
{{range $name, $status := .PlcArmorBlockStatuses}}
<br /><span class="label label-scoring" id="plc{{$name}}Status">{{$name}}</span>
{{end}}
</p>
{{end}}
</div>
<div class="col-lg-3">
Audience Display
<div class="form-group">
<div class="radio">
<label>
<input type="radio" name="audienceDisplay" value="blank" onclick="setAudienceDisplay();">Blank
</label>
</div>
<div class="radio">
<label>
<input type="radio" name="audienceDisplay" value="intro" onclick="setAudienceDisplay();">Match Intro
</label>
</div>
<div class="radio">
<label>
<input type="radio" name="audienceDisplay" value="match" onclick="setAudienceDisplay();">Match Play
</label>
</div>
<div class="radio">
<label>
<input type="radio" name="audienceDisplay" value="score" onclick="setAudienceDisplay();">Final Score
</label>
</div>
<div class="radio">
<label>
<input type="radio" name="audienceDisplay" value="logo" onclick="setAudienceDisplay();">Logo
</label>
</div>
<div class="radio">
<label>
<input type="radio" name="audienceDisplay" value="sponsor" onclick="setAudienceDisplay();">Sponsor Reel
</label>
</div>
<div class="radio">
<label>
<input type="radio" name="audienceDisplay" value="allianceSelection"
onclick="setAudienceDisplay();">Alliance Selection
</label>
</div>
<div class="radio">
<label>
<input type="radio" name="audienceDisplay" value="timeout" onclick="setAudienceDisplay();">Timeout
</label>
</div>
</div>
</div>
<div class="col-lg-3">
<p>Alliance Station Display</p>
<div class="form-group">
<div class="radio">
<label>
<input type="radio" name="allianceStationDisplay" value="blank"
onclick="setAllianceStationDisplay();">Blank
</label>
</div>
<div class="radio">
<label>
<input type="radio" name="allianceStationDisplay" value="match"
onclick="setAllianceStationDisplay();">Match
</label>
</div>
<div class="radio">
<label>
<input type="radio" name="allianceStationDisplay" value="logo"
onclick="setAllianceStationDisplay();">Logo
</label>
</div>
<div class="radio">
<label>
<input type="radio" name="allianceStationDisplay" value="timeout"
onclick="setAllianceStationDisplay();">Timeout
</label>
</div>
</div>
</div>
<div class="col-lg-3">
<p>Match Sounds</p>
<div class="checkbox">
<label>
<input type="checkbox" id="muteMatchSounds">
Mute
</label>
</div>
<p>Timeout</p>
<input type="text" id="timeoutDuration" size="4" value="6:00" />
<button type="button" id="startTimeout" class="btn btn-info btn-xs" onclick="startTimeout();">
Start
</button>
</div>
</div>
<div class="row">
<div id="cycleTimeMessage" class="col-lg-5 col-lg-offset-1"></div>
<div id="earlyLateMessage" class="col-lg-5 text-right"></div>
<div class="col-lg-1"></div>
</div>
</div>
</div>
</div>
<div id="confirmCommitResults" class="modal" style="top: 20%;">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
<h4 class="modal-title">Confirm</h4>
</div>
<div class="modal-body">
<p id="confirmCommitReplay">This is a replay of Match {{.Match.DisplayName}}. Are you sure you want to
overwrite the previous results?</p>
<p id="confirmCommitNotReady">Not all scoring sources are ready yet. Are you sure you want to
commit the results?</p>
</div>
<div class="modal-footer">
<form class="form-horizontal" action="/setup/teams/clear" method="POST">
<button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
<button type="button" class="btn btn-primary" onclick="commitResults();">Commit Results</button>
</form>
</div>
</div>
</div>
</div>
<div id="confirmDiscardResults" class="modal" style="top: 20%;">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
<h4 class="modal-title">Confirm</h4>
</div>
<div class="modal-body">
<p>Are you sure you want to discard the results for this match?</p>
</div>
<div class="modal-footer">
<form class="form-horizontal" action="/setup/teams/clear" method="POST">
<button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
<button type="button" class="btn btn-primary" onclick="discardResults();">Discard Results</button>
</form>
</div>
</div>
</div>
</div>
{{end}}
{{define "script"}}
<script src="/static/js/match_timing.js"></script>
<script src="/static/js/match_play.js"></script>
{{end}}
{{define "matchPlayTeam"}}
<div class="row form-group" id="status{{.color}}{{.position}}">
<div class="col-lg-1">{{.position}} </div>
<div class="col-lg-3">
<input type="number" class="form-control input-sm" value="{{if ne 0 .team}}{{.team}}{{end}}"
onblur="substituteTeam($(this).val(), '{{.color}}{{.position}}');"
{{if not .data.AllowSubstitution}}disabled{{end}}>
</div>
<div class="col-lg-2 col-no-padding"><div class="ds-status"></div></div>
<div class="col-lg-2 col-no-padding"><div class="radio-status"></div></div>
<div class="col-lg-2 col-no-padding"><div class="robot-status"></div></div>
<div class="col-lg-2 col-no-padding">
<div class="bypass-status" onclick="toggleBypass('{{.color}}{{.position}}');"></div>
</div>
</div>
{{end}}