Skip to content

Commit a8e991b

Browse files
authored
V5.1.0 web (#46)
* scout app 5.1.0 * fix one-off error * data viewer explicit failure * shit * data dump endpoint * fix data dump * rustfmt * update web view * fix season
1 parent 0b717b6 commit a8e991b

File tree

10 files changed

+224
-57
lines changed

10 files changed

+224
-57
lines changed

static/main.html

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -22,12 +22,11 @@
2222
<body class="gruvbox" style="width: 100vw;">
2323
<script>themeHandle()</script>
2424
<form id="form_content" style="display: block; width: 100vw;">
25-
<h1 class="w3">bearTracks<br><span class="gametitle">CRESCENDO</span></h1>
26-
<div class="VStack" style="align-items: center;">
25+
<div class="VStack form_pages" style="align-items: center; display: flex;">
26+
<h1 class="w3">bearTracks<br><span class="gametitle">CRESCENDO</span></h1>
2727
<div class="VStack" style="width: 80vw; align-items: baseline;">
2828
<fieldset>
29-
<label>Event Code&emsp;<span id="bad_event" style="color: red; display: none;"></span></label>
30-
<select name="event" id="event_code"></select>
29+
<label>Event Code&emsp;<span id="selected_event_code">XXXX</span>&emsp;<span><a style="all: unset; color: #0a84ff;" href="/settings">change</a></span></label>
3130
</fieldset><br>
3231
<fieldset>
3332
<label>Match Number&emsp;</label>
@@ -49,10 +48,10 @@ <h1 class="w3">bearTracks<br><span class="gametitle">CRESCENDO</span></h1>
4948
</select>
5049
</fieldset><br>
5150
</div>
51+
<button type="button" class="continue_button" disabled><h2>continue</h2></button>
5252
</div>
53-
<div class="VStack" style="align-items: center;">
54-
<div class="VStack" style="height: 80vh; width: 80vw;">
55-
<br><br><br>
53+
<div class="VStack form_pages" style="align-items: center; display: none; overflow: hidden;">
54+
<div class="VStack" style="height: 100vh; width: 80vw;">
5655
<div class="HStack">
5756
<div class="VStack">
5857
<h1 class="counter">0.0</h1>
@@ -67,11 +66,16 @@ <h1 class="counter">0.0</h1>
6766
<button class="time_button" type="button"><h1>out</h1></button>
6867
</div>
6968
</div>
70-
<button class="cycle_button" type="button" style="margin-top: 3vh; margin-bottom: 1vh"><h1>speaker</h1></button>
71-
<button class="cycle_button" type="button"><h1>amplifier</h1></button><br><br><br>
69+
<div class="HStack">
70+
<button class="cycle_button" type="button"><h1>speaker</h1></button>
71+
<button class="cycle_button" type="button"><h1>amplifier</h1></button>
72+
<button class="cycle_button" type="button" style="min-width: 10vw; color: #fe8019; margin: none;"><h2>other</h2></button>
73+
</div>
74+
<button type="button" class="continue_button"><h2>continue</h2></button>
7275
</div>
7376
</div>
74-
<div class="VStack" style="align-items: center;">
77+
<div class="VStack form_pages" style="align-items: center; display: none;">
78+
<h1 class="w3">bearTracks<br><span class="gametitle">CRESCENDO</span></h1>
7579
<div class="HStack">
7680
<p style="width: 9em; margin-top: 5px; text-align: left;">Trap note</p>
7781
<div style="width: calc(80vw - 9em - 46px);"></div>
@@ -99,13 +103,13 @@ <h1 class="counter">0.0</h1>
99103
<label style="text-align: left;">Provide an overall description of the team's performance in this match</label>
100104
<textarea rows="6" style="resize: none; margin-top: 1%; width: 80vw;" name="overall"></textarea>
101105
</div>
106+
<br><button class="continue_button" type="button" disabled><h2>submit</h2></button><br><br><br>
102107
</div>
103-
<br><button class="continue_button" type="button"><h2>submit</h2></button><br><br><br>
104108
</form>
105109
<div id="submit_page" style="display: none; align-items: center;">
106110
<h1 style="padding-top: 25vh" id="submit_text">Submitting...</h1>
107111
<progress style="min-width: 75vw;" id="submit_progress"></progress><br>
108-
<br><button type="button" class="continue_button" onclick="window.location.reload()" id="scout_again"><h2>scout again</h2></button><br><br>
112+
<br><button type="button" class="continue_button" id="scout_again"><h2>scout again</h2></button><br><br>
109113
<image src="static/assets/checkmark.seal.fill.png" style="display: none; width: 150px" id="success_seal"></image>
110114
<image src="static/assets/xmark.seal.fill.png" style="display: none; width: 150px" id="failure_seal"></image>
111115
</div>

static/public/css/main_form.css

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,9 @@
2424
.continue_button:active, .time_button:active, .cycle_button:active {
2525
background-color: rgba(0, 0, 0, 0.45);
2626
}
27+
.continue_button:disabled {
28+
color: gray;
29+
}
2730
.continue_button, .time_button {
2831
color: #0a84ff;
2932
min-width: 20vw;
@@ -33,14 +36,15 @@
3336
align-self: center;
3437
min-width: 15vw;
3538
max-width: 70vw;
39+
min-height: 5vh;
3640
}
3741
.time_button {
3842
min-height: 30vh;
3943
}
4044
.cycle_button {
4145
align-self: center;
4246
color: #32d74b;
43-
min-width: 50vw;
47+
min-width: 30vw;
4448
min-height: 10vh;
4549
}
4650
.counter {

static/public/css/main_form.min.css

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

static/public/js/main/main.js

Lines changed: 68 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -6,41 +6,38 @@ const API_MATCHES = ["/api/v1/events/matches/", /* season */ "/", /* event */ "/
66
const API_WHOAMI = "/api/v1/whoami";
77
const API_SUBMIT = "/api/v1/data/submit";
88
var match_schedule;
9+
function getEventCookie() {
10+
var cookieString = RegExp("92bdcf1af0a0a23d" + "=[^;]+").exec(document.cookie);
11+
return decodeURIComponent(!!cookieString ? cookieString.toString().replace(/^[^=]+./, "") : "");
12+
}
913
async function init() {
14+
if (getEventCookie() == "") {
15+
document.cookie = `92bdcf1af0a0a23d=CAFR; expires=Fri, 31 Dec 9999 23:59:59 GMT; Secure; SameSite=Lax`;
16+
}
17+
document.getElementById("selected_event_code").innerText = getEventCookie();
1018
_get(API_WHOAMI, null).then((result) => {
1119
console.info(result);
1220
}).catch((error) => {
1321
console.error(error);
1422
window.location.href = "/login";
1523
});
16-
await load_data();
17-
document.getElementById("event_code").addEventListener("change", () => {
18-
load_matches(document.getElementById("event_code").value);
19-
});
24+
await load_matches(getEventCookie());
2025
document.getElementById("match_num_input").addEventListener("change", () => {
2126
match_num_entry(document.getElementById("match_num_input").value);
2227
});
2328
}
24-
async function load_data() {
25-
_get(API_META, null).then((result) => {
26-
result.events.forEach(event_code => {
27-
document.getElementById("event_code").insertAdjacentHTML("beforeend", `<option value="${event_code}">${event_code}</option>`);
28-
});
29-
document.getElementById("event_code").value = "CAFR";
30-
load_matches("CAFR");
31-
}).catch((error) => {
32-
alert(`failed to load valid event codes. ${error}`);
33-
});
34-
}
3529
function load_matches(event = "CAFR") {
36-
_get(API_MATCHES[0] + "2023" + API_MATCHES[1] + event + API_MATCHES[2], null).then((result) => {
30+
document.getElementsByClassName("continue_button")[0].disabled = true;
31+
_get(API_MATCHES[0] + "2024" + API_MATCHES[1] + event + API_MATCHES[2], null).then((result) => {
3732
if (result.Schedule.length != 0) {
3833
match_schedule = result.Schedule;
3934
document.getElementById("match_num_input").innerHTML = "";
4035
result.Schedule.forEach(match => {
4136
document.getElementById("match_num_input").insertAdjacentHTML("beforeend", `<option value="${match.matchNumber}">${match.matchNumber}</option>`);
4237
});
4338
match_num_entry("1");
39+
document.getElementById("match_num_input").value = "";
40+
document.getElementById("team_number").value = "";
4441
}
4542
else {
4643
alert("match schedule is not yet posted");
@@ -55,6 +52,14 @@ function set_option(element, value) {
5552
element.innerText = value;
5653
element.value = value;
5754
}
55+
document.getElementById("team_number").onchange = () => {
56+
if (document.getElementById("team_number").value == "") {
57+
document.getElementsByClassName("continue_button")[0].disabled = true;
58+
}
59+
else {
60+
document.getElementsByClassName("continue_button")[0].disabled = false;
61+
}
62+
};
5863
function match_num_entry(entry) {
5964
let entry_num = Number(entry);
6065
let select_elements = document.getElementsByClassName("teamNumOption");
@@ -111,6 +116,20 @@ function end_cycle(type) {
111116
}
112117
cycle_buttons[0].addEventListener("click", () => { end_cycle(0); });
113118
cycle_buttons[1].addEventListener("click", () => { end_cycle(1); });
119+
cycle_buttons[2].addEventListener("click", () => { end_cycle(9); });
120+
document.querySelector("[name=defense]").onchange = check_responses;
121+
document.querySelector("[name=driving]").onchange = check_responses;
122+
document.querySelector("[name=overall]").onchange = check_responses;
123+
function check_responses() {
124+
if (document.querySelector("[name=defense]").value.length > 0 &&
125+
document.querySelector("[name=driving]").value.length > 0 &&
126+
document.querySelector("[name=overall]").value.length > 0) {
127+
document.getElementsByClassName("continue_button")[2].disabled = false;
128+
}
129+
else {
130+
document.getElementsByClassName("continue_button")[2].disabled = true;
131+
}
132+
}
114133
function submit() {
115134
if (document.querySelector("[name=defense]").value
116135
.length == 0 ||
@@ -132,7 +151,7 @@ function submit() {
132151
cycle_data.push({ id: cycle_data.length, score_type: 4, intake: Number(document.querySelector("[name=buddy_climb]").checked), travel: Number(document.querySelector("[name=buddy_climb]").checked), outtake: Number(document.querySelector("[name=buddy_climb]").checked) });
133152
const data = {
134153
season: 2024,
135-
event: document.getElementById("event_code").value,
154+
event: getEventCookie(),
136155
match_num: Number(document.getElementById("match_num_input").value),
137156
level: "Qualification",
138157
team: Number(document.getElementById("team_number").value),
@@ -152,4 +171,35 @@ function submit() {
152171
submit_text.innerHTML = `Error!<br>${error}`;
153172
});
154173
}
155-
document.getElementsByClassName("continue_button")[0].addEventListener("click", submit);
174+
function reset() {
175+
clearInterval(timer_id[0]);
176+
clearInterval(timer_id[1]);
177+
clearInterval(timer_id[2]);
178+
timer_id = [0, 0, 0];
179+
timer_times = [0, 0, 0];
180+
cycle_data = [];
181+
document.querySelector("[name=defense]").value = "";
182+
document.querySelector("[name=driving]").value = "";
183+
document.querySelector("[name=overall]").value = "";
184+
document.getElementById("team_number").value = "";
185+
document.querySelector("[name=trap_note]").checked = false;
186+
document.querySelector("[name=climb]").checked = false;
187+
document.querySelector("[name=buddy_climb]").checked = false;
188+
document.getElementById("submit_page").style.display = "none";
189+
document.getElementById("form_content").style.display = "block";
190+
let pages = Array.from(document.getElementsByClassName("form_pages"));
191+
document.getElementsByClassName("continue_button")[0].disabled = true;
192+
document.getElementsByClassName("continue_button")[2].disabled = true;
193+
pages[1].style.display = "none";
194+
pages[2].style.display = "none";
195+
pages[0].style.display = "flex";
196+
}
197+
document.getElementById("scout_again").onclick = reset;
198+
document.getElementsByClassName("continue_button")[2].addEventListener("click", submit);
199+
function advance_page(current) {
200+
let pages = Array.from(document.getElementsByClassName("form_pages"));
201+
pages[current].style.display = "none";
202+
pages[current + 1].style.display = "flex";
203+
}
204+
document.getElementsByClassName("continue_button")[0].addEventListener("click", () => { advance_page(0); });
205+
document.getElementsByClassName("continue_button")[1].addEventListener("click", () => { advance_page(1); });

0 commit comments

Comments
 (0)