blob: 0f0eb821514676d785ad235dca3684d0d9956bd1 [file] [log] [blame]
Alex Perrybb901052022-03-23 19:46:15 -07001import {Component} from '@angular/core';
2import {Builder, ByteBuffer} from 'flatbuffers';
3import {ErrorResponse} from 'org_frc971/scouting/webserver/requests/messages/error_response_generated';
4import {RequestNotesForTeam} from 'org_frc971/scouting/webserver/requests/messages/request_notes_for_team_generated';
Philipp Schrader817cce32022-03-26 15:00:00 -07005import {
6 Note as NoteFb,
7 RequestNotesForTeamResponse,
8} from 'org_frc971/scouting/webserver/requests/messages/request_notes_for_team_response_generated';
Alex Perrybb901052022-03-23 19:46:15 -07009import {SubmitNotes} from 'org_frc971/scouting/webserver/requests/messages/submit_notes_generated';
10import {SubmitNotesResponse} from 'org_frc971/scouting/webserver/requests/messages/submit_notes_response_generated';
11
Philipp Schrader817cce32022-03-26 15:00:00 -070012type Section = 'TeamSelection' | 'Data';
Alex Perrybb901052022-03-23 19:46:15 -070013
14interface Note {
15 readonly data: string;
16}
17
18@Component({
19 selector: 'frc971-notes',
20 templateUrl: './notes.ng.html',
Philipp Schrader817cce32022-03-26 15:00:00 -070021 styleUrls: ['../common.css', './notes.component.css'],
Alex Perrybb901052022-03-23 19:46:15 -070022})
23export class Notes {
24 section: Section = 'TeamSelection';
25 notes: Note[] = [];
26
27 errorMessage = '';
28
29 teamNumber: number = 971;
30 newData = '';
31
32 async setTeamNumber() {
33 const builder = new Builder();
34 RequestNotesForTeam.startRequestNotesForTeam(builder);
35 RequestNotesForTeam.addTeam(builder, this.teamNumber);
36 builder.finish(RequestNotesForTeam.endRequestNotesForTeam(builder));
37
38 const buffer = builder.asUint8Array();
Philipp Schrader817cce32022-03-26 15:00:00 -070039 const res = await fetch('/requests/request/notes_for_team', {
40 method: 'POST',
41 body: buffer,
42 });
Alex Perrybb901052022-03-23 19:46:15 -070043
44 const resBuffer = await res.arrayBuffer();
45 const fbBuffer = new ByteBuffer(new Uint8Array(resBuffer));
46
47 if (res.ok) {
48 this.notes = [];
49 const parsedResponse =
Philipp Schrader817cce32022-03-26 15:00:00 -070050 RequestNotesForTeamResponse.getRootAsRequestNotesForTeamResponse(
51 fbBuffer
52 );
Alex Perrybb901052022-03-23 19:46:15 -070053 for (let i = 0; i < parsedResponse.notesLength(); i++) {
54 const fbNote = parsedResponse.notes(i);
55 this.notes.push({data: fbNote.data()});
56 }
57 this.section = 'Data';
58 } else {
59 const parsedResponse = ErrorResponse.getRootAsErrorResponse(fbBuffer);
60
61 const errorMessage = parsedResponse.errorMessage();
Philipp Schrader817cce32022-03-26 15:00:00 -070062 this.errorMessage = `Received ${res.status} ${res.statusText}: "${errorMessage}"`;
Alex Perrybb901052022-03-23 19:46:15 -070063 }
64 }
65
66 changeTeam() {
Philipp Schrader817cce32022-03-26 15:00:00 -070067 this.section = 'TeamSelection';
Alex Perrybb901052022-03-23 19:46:15 -070068 }
Philipp Schrader817cce32022-03-26 15:00:00 -070069
Alex Perrybb901052022-03-23 19:46:15 -070070 async submitData() {
71 const builder = new Builder();
72 const dataFb = builder.createString(this.newData);
73 builder.finish(
Philipp Schrader817cce32022-03-26 15:00:00 -070074 SubmitNotes.createSubmitNotes(builder, this.teamNumber, dataFb)
75 );
Alex Perrybb901052022-03-23 19:46:15 -070076
77 const buffer = builder.asUint8Array();
Philipp Schrader817cce32022-03-26 15:00:00 -070078 const res = await fetch('/requests/submit/submit_notes', {
79 method: 'POST',
80 body: buffer,
81 });
Alex Perrybb901052022-03-23 19:46:15 -070082
83 if (res.ok) {
84 this.newData = '';
85 this.errorMessage = '';
86 await this.setTeamNumber();
87 } else {
88 const resBuffer = await res.arrayBuffer();
89 const fbBuffer = new ByteBuffer(new Uint8Array(resBuffer));
90 const parsedResponse = ErrorResponse.getRootAsErrorResponse(fbBuffer);
91
92 const errorMessage = parsedResponse.errorMessage();
Philipp Schrader817cce32022-03-26 15:00:00 -070093 this.errorMessage = `Received ${res.status} ${res.statusText}: "${errorMessage}"`;
Alex Perrybb901052022-03-23 19:46:15 -070094 }
95 }
96}