Skip to content

Commit

Permalink
Merge branch 'main' into non-hardcoded-forms
Browse files Browse the repository at this point in the history
  • Loading branch information
renatodellosso authored Jun 25, 2024
2 parents 9bf7efe + 8ba137b commit d43ddc1
Show file tree
Hide file tree
Showing 19 changed files with 10,687 additions and 4,479 deletions.
5 changes: 5 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -36,3 +36,8 @@ yarn-error.log*
# typescript
*.tsbuildinfo
next-env.d.ts

/public/sw.js
/public/sw.js.map
/public/workbox-*
/public/fallback-*
52 changes: 26 additions & 26 deletions certs/localhost-key.pem
Original file line number Diff line number Diff line change
@@ -1,28 +1,28 @@
-----BEGIN PRIVATE KEY-----
MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQCmW6ASnKgvfPzG
APp2uNtcrEndvSnJ1rc/vFkmCYUD4112Rv+kPLAGqMV9uCDFyh7GVDf/UMtxr9bz
gYlqxzEzK3ziYAXjNIST76wOtUXAsPQq/stb0pmtXcsKDN7aM+gIvt16skU3ggMo
GjzcDtdOKWEHqW52Wo52gwp0CvA1lee+8OuiDA1vH2GTlODNmRg5qycpTyS+Lktf
fexco8iR8hH4fAZLUP96cij+6kY0TPg65lhm2j0jvXcdyXBGgHpG+QA2LDp1rMO4
pPH9UmycaCivvHPTeFZFkYkTOGgHHCf7uR0YnMS1O8oUnn7fsehhn7UCm2AYlBLO
I7bmTf7ZAgMBAAECggEAEuINnm83zAQk8RjFVVqQU8merNO+/ZEoxcxMVjv4ZEOX
pUhT1kGpPWhE2ote9PSHX73JiWqTXTk3bfaDMaKgnA1QpKV/pZWdgulOn3DGFSRA
4ux/CtIx7XLbDC3/0cbYjL2ViErZ/n38e73WsKfimpWp1OPPjRGkYCFpu1hOgdZu
USYX6Sp05cqXuSx9kAfSVxO7VDBeCRz/YtISUKah23frUo0CZFGOvARoRUlDCswv
8FuD3H+VuPj/3TPogU3E+AMVJIqjzPZRJ9XitlmemGdEtDJueHxmgceUpp6Wq0V7
kJ6NQCps1EisJ5tIyQOW+Jwz5JfEqWTmt8G+kE2SXQKBgQDG6aNwR6iJ5Mz8njwa
ev3owxfJNZWloPR5PzBFwXQWpcTuhQcTNcH64S7HBgNuzzpglkikZzaXDIzydEyr
UvLqNtdb7kGzukJf47vr64nLQUGATNw6nAF/Kjg73iN4Ip+5Hk0JFDWUSYtISSit
W/LNzKe0dx+m6CoxO0nllv+HUwKBgQDWGiY/q+94YcQlk8cloR+7fnz8A8WIj67g
ntM0MReWmFGoefMTdK22dfwaXm/UQtukvFh0x/F74XrkDG7pLmPhAqyQBkNeleav
vfSIhZtylnMeyUAlBNjH0je735dRoYNApPsANHSB2jUe2N3EbWY/2DTLAUHME45S
JqyWbVg3owKBgQCRpwGDtSUnm/+yN1gBd/A3IaxoLLGgr6R0qB175rVP5CC5G3Xb
zjB1ubBcEf4vhNTVZxZYNC/YGVuYKir+BOZVNMUrzuITbh8uQf8YOMgUqnsBLMbS
r+u0p0C4LehBDvFwR0zXihHVvKidzNxZXQwFQIfI8LWfrT8//48T7Ca+ewKBgQCc
uPWIpC4eO8qeCye65s/YqoWI4KXnCe5kJD7MNKdkqEkV/3aspjtGleUd1EUd5nbr
hqdljLq7CNmxN1y0ui2IlzGEF+GWyjncKTtn+A1K+tB4F68pqfuZgcskbk5RBd6T
InFNvBgQuY8q7mqfj8lKMNSsSVZFsYb7oa2yS4ZI6wKBgQCQLl4hgIpQT2FsWB/B
GZg1P3fPZGoyljOVy/haZoWNQi+B6AdEExuVHBvdCZK3wiei/kt5DMdtJtnLLBDN
JpOeXUn2+XhIxGN9vrJsrFOrr6Rk9uSeP0RT/+ys9Om78ssPu10/aoZbsxHeiZeW
pwv0TTnDLbKcfYIJxJ97iqTgbQ==
MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQC8/fJcFm48w6xL
sEGy2YO+9E2Z6htJK6xrZjnNNjGCWgSIAA9ucdXlh2hU1SMwGHMMhMIBlN6cHJLP
giMCcanw8QSZysD0vqAayWX8KllxyDhu/x4CDDy+qlU/kJyb/h+wvdTmTdze4IJb
PEgRSvwfAI2Z+4Z8llH0tF5vumarNgcc3MhCYP+gNmU1LGlNQTmo4xUXNmK9Ykst
swoGtSm/4PBQwpOmK8t0WE/cYYBNZ6C3XRX0eCEfLrodVFIGMg0pCjeDngGKLfMv
dk3GVl/otsMUpCMeAkVC0ErI3iEAjIeyCMsoLPYILOhsAvY8KjB+j/JhJpZejwl4
DqgbONU/AgMBAAECggEAN47n6o5lhdN4GSANkEhFZKNpFLAvqUj/fOsmXt9pmopf
/qMV5j/sw3cVAqtNltv5Jlr4tYJQFtCHkB0Psa48aSpRUey64LgRVQ6Tvpesh7h2
bprs9Wknil2EhhU7FNiV9F058yI8pgCWEcAc54iFqY9+ESBSHtoJ6cgEYxAHEplj
uYfZFBe/zsOaHf9ohrJre+VRntUiHxrwGFzR03qHucdxFC9ns0NYIq+NoQErqzt3
oqZP4WzDzjgEMNLag4+IXjCg/RowUoQa7BfhfsGcViizn9ypTgQV9iBlqdCCopN4
ONNpy00dkFVgjApC8BQI5Wsk5KKPNP0ZTx4APp+yUQKBgQDMEdAZd9rkMKY6INCc
3oqtNSV+msdXs3vlNvjln1OGLqRmt1Os1xHfQF7f8+vt4f+wHJIZpSsM6bF+YTT9
aWdQOGg4V4KWpNYPP/u54d50cbtmEYtJFAJMVNLfJ5yr4OqmIjiCK2WNahK2qv6t
xageCDeqeD8dtxAcs4KMOFAnAwKBgQDtFeXf7f2ru6EqLmigooyH2bMLOrrFJHYT
N7ENCkiJLIbv3bmvoTfoWWWDx2pf8psqYLn/NcDuU3fwfS2cOjk2a171SjOHbatD
vKErp9XgJZFiRDq4QLn/+CMNyicdiyDLUHaBZbZ3/EXRvr9BBG8Vmv3eFv44zMAV
ZgcwDHk2FQKBgGMAGUbhwI2HlH0Kwmn4BKr255O+HwtLBcYznxg27VxhcFxsf+mQ
BRmbrutS+JhVVafolHBgkrwW+4bmPcDay8Y9N0JuIepXWYnYbpTFIRi4vENOK5Zu
YJcLZ6nfG8C+wteKLoPn7cJnPWDlH9zJ0T+QmQDYiTYvQ1/JLoI8J5ZlAoGADVSu
4UF7gv2A2WNUpLufFUBrbdU2jUE4lmoKPYZ3f6cOS0x3VWXGQ/1K1PcQhyaYDPD1
ZGE8YOo2k0Imn2MytlmhND+g2BuVhrCDi3Xbc8gI/bKCbrvM+ZSVPABC5Mle5a+3
ih0S/noj3uBP1rMOH/PgFG3Mi5sPreRXwR7ibeUCgYAAsDA0v8igGWgjGijr/Umk
lw8QvBVO7H+xQMKkAgxhgGrXMdy2ctHm1c1CaU/2GUJKCjt7iLks3FbMkh8DC08E
SkRXe/Po21xVkN72kMnJFRCd6xfTYxWy7+SvIn/hW6NPLaemPrAdCLG/Oh/POoqs
PdeRarxK6Bm41Lj+rErheA==
-----END PRIVATE KEY-----
49 changes: 26 additions & 23 deletions certs/localhost.pem
Original file line number Diff line number Diff line change
@@ -1,25 +1,28 @@
-----BEGIN CERTIFICATE-----
MIIEOTCCAqGgAwIBAgIQHIuPOJ4Ky/29RvB/oNYjFDANBgkqhkiG9w0BAQsFADB9
MR4wHAYDVQQKExVta2NlcnQgZGV2ZWxvcG1lbnQgQ0ExKTAnBgNVBAsMIFRIRU9c
Z2lsbGVAdGhlbyAoVGhlbyBHaWxsZXNwaWUpMTAwLgYDVQQDDCdta2NlcnQgVEhF
T1xnaWxsZUB0aGVvIChUaGVvIEdpbGxlc3BpZSkwHhcNMjMwOTA5MjA0MDQ3WhcN
MjUxMjA5MjE0MDQ3WjBUMScwJQYDVQQKEx5ta2NlcnQgZGV2ZWxvcG1lbnQgY2Vy
dGlmaWNhdGUxKTAnBgNVBAsMIFRIRU9cZ2lsbGVAdGhlbyAoVGhlbyBHaWxsZXNw
aWUpMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAplugEpyoL3z8xgD6
drjbXKxJ3b0pyda3P7xZJgmFA+Nddkb/pDywBqjFfbggxcoexlQ3/1DLca/W84GJ
ascxMyt84mAF4zSEk++sDrVFwLD0Kv7LW9KZrV3LCgze2jPoCL7derJFN4IDKBo8
3A7XTilhB6ludlqOdoMKdArwNZXnvvDrogwNbx9hk5TgzZkYOasnKU8kvi5LX33s
XKPIkfIR+HwGS1D/enIo/upGNEz4OuZYZto9I713HclwRoB6RvkANiw6dazDuKTx
/VJsnGgor7xz03hWRZGJEzhoBxwn+7kdGJzEtTvKFJ5+37HoYZ+1AptgGJQSziO2
5k3+2QIDAQABo14wXDAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0lBAwwCgYIKwYBBQUH
AwEwHwYDVR0jBBgwFoAUjhGzo4l6Ivz+mj34ffAbnoGVVzkwFAYDVR0RBA0wC4IJ
bG9jYWxob3N0MA0GCSqGSIb3DQEBCwUAA4IBgQALFWTQ4uW3VH68a43mQ0SI04Qh
Ef83KOiJ1Xst/PAKMbq/4AQ8k+UHfTs/ub4CHBIfHu6pT7rEAYXVG38w/eKD8lM5
iCqAQc4UPGe82SVqZqEGKtYn5xeSeAxcAygRVQOdtHsSqeh6MifhyKCWOusF9DzI
dIXJ27k9arCQQjWX/sstzKSBA+zmAsYsSZkQeL/zqi+vSjSBqIBAYRzYS4GAJUbH
agiYg3mTybG9QrrPGDuA2Swv+bYmiZNZ3hJgrwMd/bi7gPXlme43ZcWhaCGjz6Gr
pd+BZj9RTcmYnFPtm7wQlAv03r/eIjXRQ3vhe3gUyKFkD5PyPaenfF24DE/eARyF
dERjwckwIUceguWMjdC9AAdBmW/Y6BcCAA+3ECxxUPIbHIy3coZn0WtKEwSTeBum
d8HecNu1QGSL/CHdVgOUeU1BYIlLhe/xfFsqez9R0QG7N1AXpewPPe7Lxln4fqRE
wTXzxgP+cqLbO9/41i0QDoda/i00w7hgKrboIbg=
MIIExzCCAy+gAwIBAgIRAJd3DtWZH47gx195IWiwQWcwDQYJKoZIhvcNAQELBQAw
ga0xHjAcBgNVBAoTFW1rY2VydCBkZXZlbG9wbWVudCBDQTFBMD8GA1UECww4TEFQ
VE9QLUxCNjFRUlJJXHJkZGVsQExBUFRPUC1MQjYxUVJSSSAoUmVuYXRvIERlbGwn
T3NzbykxSDBGBgNVBAMMP21rY2VydCBMQVBUT1AtTEI2MVFSUklccmRkZWxATEFQ
VE9QLUxCNjFRUlJJIChSZW5hdG8gRGVsbCdPc3NvKTAeFw0yNDA2MjUxNTUwMTFa
Fw0yNjA5MjUxNTUwMTFaMGwxJzAlBgNVBAoTHm1rY2VydCBkZXZlbG9wbWVudCBj
ZXJ0aWZpY2F0ZTFBMD8GA1UECww4TEFQVE9QLUxCNjFRUlJJXHJkZGVsQExBUFRP
UC1MQjYxUVJSSSAoUmVuYXRvIERlbGwnT3NzbykwggEiMA0GCSqGSIb3DQEBAQUA
A4IBDwAwggEKAoIBAQC8/fJcFm48w6xLsEGy2YO+9E2Z6htJK6xrZjnNNjGCWgSI
AA9ucdXlh2hU1SMwGHMMhMIBlN6cHJLPgiMCcanw8QSZysD0vqAayWX8KllxyDhu
/x4CDDy+qlU/kJyb/h+wvdTmTdze4IJbPEgRSvwfAI2Z+4Z8llH0tF5vumarNgcc
3MhCYP+gNmU1LGlNQTmo4xUXNmK9YkstswoGtSm/4PBQwpOmK8t0WE/cYYBNZ6C3
XRX0eCEfLrodVFIGMg0pCjeDngGKLfMvdk3GVl/otsMUpCMeAkVC0ErI3iEAjIey
CMsoLPYILOhsAvY8KjB+j/JhJpZejwl4DqgbONU/AgMBAAGjgaEwgZ4wDgYDVR0P
AQH/BAQDAgWgMBMGA1UdJQQMMAoGCCsGAQUFBwMBMB8GA1UdIwQYMBaAFGz0wy5u
D4tXwNY83ZwZFpugXK03MFYGA1UdEQRPME2CC2V4YW1wbGUuY29tgg0qLmV4YW1w
bGUuY29tggxleGFtcGxlLnRlc3SCCWxvY2FsaG9zdIcEfwAAAYcQAAAAAAAAAAAA
AAAAAAAAATANBgkqhkiG9w0BAQsFAAOCAYEA855figRKXfJtdKrJeVNfOg1ZYdyi
nizTaYgS7eezQrU5v7Jkx5JMNwwaxXOCu/JBkJpRMti1TdJ77oeekq2ZJCpej3Hy
bfXUryOY3Ijn4d4AwEMCIugjc20VDNsPiwsMBfnQPZ2kX03xGM0lvHPwtL8aE1wc
1VRsYfeJzdwY2mkk5H+qOKy6kGw0qNPsc3HLh06oH0J3Gti8a3fMM6xlgDXaBURS
qrnjdGPeLm3YWy/3+ae4ZsD54vAzIjS6rzda4ME7c62C/XXlaDh6P7DBsy01EnRi
KXPJ4bVNy9Q1GQNgFJjsFB8xjLlKYkmR9pxpSb2+PcF32T4Ft7sN0Xme1+fONxx9
i+jQ1Fd/l+KXH5DpDJexHHNdjh6fd2SwnfeJh9jojcY6Nt2s7WJBiZQF5hHeDhHu
W74s9E3EoxpEFrui22KCgr8qzioFoMNvP2PJ6/D/QBAKpMCSRKuGWsBZPJbeNx5L
TacfmVgKIh8m/eL9gAs6LlGte0Upi4SpaesT
-----END CERTIFICATE-----
3 changes: 2 additions & 1 deletion components/Avatar.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ export default function Avatar(props: {
borderThickness?: number | undefined;
onClick?: () => void | undefined;
className?: string | undefined;
online?: boolean;
}) {
const { session, status } = useCurrentSession();
const user = props.user ?? session?.user;
Expand All @@ -19,7 +20,7 @@ export default function Avatar(props: {
const admin = user?.admin;

return (
<div className={"avatar " + (props.scale ?? "") + " " + props.className}>
<div className={`avatar ${props.online && "online"} ${props.scale} ${props.className}`}>
{ (props.showLevel ?? true) &&
<div className="absolute z-10 bg-base-100 rounded-tl-xl rounded-br-xl h-6 w-14 text-center text-sm font-semibold">
LVL: {user?.level}
Expand Down
50 changes: 50 additions & 0 deletions components/PwaConfig.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
export default function PwaConfig() {
return (
<>
<meta name="application-name" content="Gearbox" />
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="apple-mobile-web-app-status-bar-style" content="default" />
<meta name="apple-mobile-web-app-title" content="Gearbox" />
<meta name="description" content="Scouting made simple." />
<meta name="format-detection" content="telephone=no" />
<meta name="mobile-web-app-capable" content="yes" />
<meta name="msapplication-config" content="/icons/browserconfig.xml" />
<meta name="msapplication-TileColor" content="#2B5797" />
<meta name="msapplication-tap-highlight" content="no" />
<meta name="theme-color" content="#000000" />

<link rel="apple-touch-icon" href="/icons/touch-icon-iphone.png" />
<link rel="apple-touch-icon" sizes="152x152" href="/icons/touch-icon-ipad.png" />
<link rel="apple-touch-icon" sizes="180x180" href="/icons/touch-icon-iphone-retina.png" />
<link rel="apple-touch-icon" sizes="167x167" href="/icons/touch-icon-ipad-retina.png" />

<link rel="icon" type="image/png" sizes="220x204" href="/public/favicon.png" />
<link rel="manifest" href="/manifest.json" />
<link rel="mask-icon" href="/icons/safari-pinned-tab.svg" color="#5bbad5" />
<link rel="shortcut icon" href="/favicon.ico" />
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,400,500" />

<meta name="twitter:card" content="summary" />
<meta name="twitter:url" content="https://4026.org" />
<meta name="twitter:title" content="Gearbox" />
<meta name="twitter:description" content="Best PWA App in the world" />
<meta name="twitter:image" content="https://yourdomain.com/icons/android-chrome-192x192.png" />
<meta name="twitter:creator" content="@4026" />
<meta property="og:type" content="website" />
<meta property="og:title" content="Gearbox" />
<meta property="og:description" content="Best PWA App in the world" />
<meta property="og:site_name" content="PWA App" />
<meta property="og:url" content="https://4026.org" />
<meta property="og:image" content="https://4026.org/public/favicon.png" />

{/* apple splash screen images */}
{/* <link rel='apple-touch-startup-image' href='/images/apple_splash_2048.png' sizes='2048x2732' />
<link rel='apple-touch-startup-image' href='/images/apple_splash_1668.png' sizes='1668x2224' />
<link rel='apple-touch-startup-image' href='/images/apple_splash_1536.png' sizes='1536x2048' />
<link rel='apple-touch-startup-image' href='/images/apple_splash_1125.png' sizes='1125x2436' />
<link rel='apple-touch-startup-image' href='/images/apple_splash_1242.png' sizes='1242x2208' />
<link rel='apple-touch-startup-image' href='/images/apple_splash_750.png' sizes='750x1334' />
<link rel='apple-touch-startup-image' href='/images/apple_splash_640.png' sizes='640x1136' /> */}
</>
);
}
11 changes: 9 additions & 2 deletions index.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ const fs = require("fs");
console.log("Imports complete");

const dev = process.env.NODE_ENV !== "production";
const port = dev ? 3000 : 443;
const port = 443;
const app = next({ dev });
const handle = app.getRequestHandler();

Expand All @@ -31,7 +31,14 @@ app.prepare().then(() => {
try {
const server = createServer(httpsOptions, async (req, res) => {
const parsedUrl = parse(req.url, true);
await handle(req, res, parsedUrl);
const { pathname } = parsedUrl;

if (pathname === '/sw.js' || /^\/(workbox|worker|fallback)-\w+\.js$/.test(pathname)) {
const filePath = join(__dirname, '.next', pathname)
app.serveStatic(req, res, filePath)
} else {
handle(req, res, parsedUrl)
}
}).listen(port, (err) => {
if (err) {
console.log(err);
Expand Down
13 changes: 2 additions & 11 deletions lib/API.ts
Original file line number Diff line number Diff line change
Expand Up @@ -571,7 +571,6 @@ export namespace API {

form.data = data.formData;
form.submitted = true;
form.checkedIn = false;
form.submitter = data.userId;

await db.updateObjectById(
Expand Down Expand Up @@ -660,19 +659,11 @@ export namespace API {
);
},

updateCheckIn: async (req, res, { db, data }) => {
checkInForReport: async (req, res, { db, data }) => {
await db.updateObjectById<Report>(
Collections.Reports,
new ObjectId(data.reportId),
{ checkedIn: true }
);
},

updateCheckOut: async (req, res, { db, data }) => {
await db.updateObjectById<Report>(
Collections.Reports,
new ObjectId(data.reportId),
{ checkedIn: false }
{ checkInTimestamp: new Date().toISOString() }
);
},

Expand Down
3 changes: 1 addition & 2 deletions lib/CompetitionHandeling.ts
Original file line number Diff line number Diff line change
Expand Up @@ -100,8 +100,7 @@ export async function generateReportsForMatch(match: string | Match, gameId: Gam
teamNumber,
color,
String(match._id),
0,
false,
0
);

reports.push(
Expand Down
9 changes: 6 additions & 3 deletions lib/Types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,9 @@ import { GameId, defaultGameId } from "./client/GameId";
import { camelCaseToTitleCase } from "./client/ClientUtils";
import { Defense, Drivetrain, Motors, SwerveLevel } from "./Enums";
import { FormLayoutProps, FormLayout, Badge, PitStatsLayout, StatsLayout } from './Layout';
import { Statbotics } from "./Statbotics";
import { DatasetJsonLdProps } from "next-seo";
import Subjective from '../pages/[teamSlug]/[seasonSlug]/[competitonSlug]/[reportId]/subjective';

/**
* Standard Account Type
Expand Down Expand Up @@ -425,7 +428,7 @@ export class Report<TFormData extends QuantData = QuantData>{
submitted: boolean = false;
data: TFormData;

checkedIn: boolean = false;
checkInTimestamp: string | undefined;

constructor(
user: string | undefined,
Expand All @@ -434,15 +437,15 @@ export class Report<TFormData extends QuantData = QuantData>{
color: AllianceColor,
match: string,
timestamp: number = 0,
checkedIn: boolean
checkInTimestamp: string | undefined = undefined
) {
this.timestamp = timestamp;
this.user = user;
this.data = data;
this.robotNumber = robotNumber;
this.match = match;
this.color = color;
this.checkedIn = checkedIn;
this.checkInTimestamp = checkInTimestamp;
}
}

Expand Down
4 changes: 2 additions & 2 deletions lib/client/ClientAPI.ts
Original file line number Diff line number Diff line change
Expand Up @@ -311,8 +311,8 @@ export default class ClientAPI {
return await this.request("/matchReports", { matchId: matchId });
}

async updateCheckIn(reportId: string | undefined) {
return await this.request("/updateCheckIn", { reportId });
async checkInForReport(reportId: string | undefined) {
return await this.request("/checkInForReport", { reportId });
}

async updateCheckOut(reportId: string | undefined) {
Expand Down
6 changes: 5 additions & 1 deletion next.config.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
const withPwa = require("next-pwa")({
dest: "public",
});

/** @type {import('next').NextConfig} */
const nextConfig = {
reactStrictMode: false,
Expand All @@ -12,4 +16,4 @@ const nextConfig = {
},
};

module.exports = nextConfig;
module.exports = withPwa(nextConfig);
Loading

0 comments on commit d43ddc1

Please sign in to comment.