From 938b296cdc8f0fd58a932dd4d1fcd951316f0bd0 Mon Sep 17 00:00:00 2001 From: Azalea Colburn <62953415+azaleacolburn@users.noreply.github.com> Date: Wed, 13 Nov 2024 19:45:26 -0800 Subject: [PATCH] Action Input Grid (#6) * feat: type model for scouting system * chore: update svelte * feat: add none * refactor: type state model * feat: state transforms * add successfail screen * theme fixes * fix: package.json * fix: formating * fix: dependencies * format thingy * refactor: update types to match new schema * fix: id after clarifying with Brandon * update dep * style: format files * refactor: action input state machine into component * feat: make cancel buttons go back one level * fix: actions display on timeline * feat: piece specific error prevention * feat: ejectables! * fix: name in pkg.json + update dep * style: format files --------- Co-authored-by: awwpotato --- .prettierrc | 1 - bun.lockb | Bin 143108 -> 143503 bytes package.json | 32 +++-- src/lib/components/Action.svelte | 18 ++- src/lib/components/SuccessFail.svelte | 21 ++++ src/lib/components/Timeline.svelte | 39 ++---- src/lib/types.ts | 112 ++++++++++++++--- src/routes/+layout.svelte | 4 +- src/routes/scout/+page.svelte | 58 +++++---- src/routes/scout/ActionInputs.svelte | 173 ++++++++++++++++++++++++++ tailwind.config.js | 28 ++--- 11 files changed, 372 insertions(+), 114 deletions(-) create mode 100644 src/lib/components/SuccessFail.svelte create mode 100644 src/routes/scout/ActionInputs.svelte diff --git a/.prettierrc b/.prettierrc index a77fdde..9573023 100644 --- a/.prettierrc +++ b/.prettierrc @@ -4,6 +4,5 @@ "trailingComma": "none", "printWidth": 100, "plugins": ["prettier-plugin-svelte"], - "pluginSearchDirs": ["."], "overrides": [{ "files": "*.svelte", "options": { "parser": "svelte" } }] } diff --git a/bun.lockb b/bun.lockb index a432cfe0e8c4ef3dd415d303ab519a087fea972b..776ad14f57fa27a8301a4d223a6a9a144e60317e 100755 GIT binary patch delta 36431 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 delta 35437 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

K8>M-)Q2^kzH4s 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 O@Zf}8xU>_S{r>?ApYh`W diff --git a/package.json b/package.json index 93cb313..62d2359 100644 --- a/package.json +++ b/package.json @@ -1,38 +1,34 @@ { - "name": "floatingchickens", + "name": "inflatedchickens", "version": "0.0.1", - "private": true, + "type": "module", "scripts": { "dev": "vite dev", "build": "vite build", "preview": "vite preview", "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json", "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch", - "lint": "prettier --plugin-search-dir . --check . && eslint .", - "format": "prettier --plugin-search-dir . --write ." + "format": "prettier --write .", + "lint": "prettier --check . && eslint ." }, "devDependencies": { "@sveltejs/adapter-auto": "^3.3.1", - "@sveltejs/kit": "^2.7.4", - "@typescript-eslint/eslint-plugin": "^8.13.0", - "@typescript-eslint/parser": "^8.13.0", + "@sveltejs/kit": "^2.8.1", + "@sveltejs/vite-plugin-svelte": "^4.0.0", + "@types/eslint": "^9.6.1", "autoprefixer": "^10.4.20", "eslint": "^9.14.0", "eslint-config-prettier": "^9.1.0", "eslint-plugin-svelte": "^2.46.0", - "postcss": "^8.4.47", + "globals": "^15.12.0", "prettier": "^3.3.3", - "prettier-plugin-svelte": "^3.2.7", - "svelte": "^5.1.9", - "svelte-check": "^4.0.5", + "prettier-plugin-svelte": "^3.2.8", + "prettier-plugin-tailwindcss": "^0.6.8", + "svelte": "^5.1.16", + "svelte-check": "^4.0.7", "tailwindcss": "^3.4.14", - "tslib": "^2.8.1", "typescript": "^5.6.3", - "vite": "^5.4.10" - }, - "type": "module", - "dependencies": { - "@sveltejs/vite-plugin-svelte": "^4.0.0", - "svelte-kit": "^1.2.0" + "typescript-eslint": "^8.14.0", + "vite": "^5.4.11" } } diff --git a/src/lib/components/Action.svelte b/src/lib/components/Action.svelte index 1e4f9ec..1a5a1be 100644 --- a/src/lib/components/Action.svelte +++ b/src/lib/components/Action.svelte @@ -1,15 +1,13 @@ @@ -23,5 +21,5 @@ class="{actionBackgroundColor} w-full p-1 rounded border-2 border-outline_gray text-text_white" onclick={deleteself} > - {action.type} + {action_data.action} diff --git a/src/lib/components/SuccessFail.svelte b/src/lib/components/SuccessFail.svelte new file mode 100644 index 0000000..007da5b --- /dev/null +++ b/src/lib/components/SuccessFail.svelte @@ -0,0 +1,21 @@ + + +

+ + + +
diff --git a/src/lib/components/Timeline.svelte b/src/lib/components/Timeline.svelte index a640534..de4c097 100644 --- a/src/lib/components/Timeline.svelte +++ b/src/lib/components/Timeline.svelte @@ -1,35 +1,16 @@ -

Timeline

-
- - - {#each actions as _, i} - { - actions.splice(actions.indexOf(actions[i]), 1); - }} - /> - {/each} -
+ /> +{/each} diff --git a/src/lib/types.ts b/src/lib/types.ts index 712d52b..74be898 100644 --- a/src/lib/types.ts +++ b/src/lib/types.ts @@ -1,19 +1,95 @@ -export enum actionType { - IntakeTote = 'Intake Tote', - EjectTote = 'Eject Tote', - IntakeBalloon = 'Intake Balloon', - ScoreLow = 'Score Low', - ScoreExternalTote = 'Score External Tote', - ScoreInternalTote = 'Score Internal Tote', - ScoreAnotherRobotsTote = 'Score Another Robots Tote' -} - -export enum actionResult { - success = 'success', - fail = 'fail' -} - -export type ActionData = { - type: actionType; - result: actionResult; +// For DB +export type Match = { + match_key: string; + event_key: string; }; + +export type User = { + id: string; + name: string; + is_admin: boolean; + slack_token: string; +}; + +/// Counts +export type AutoActionsTM = ActionsTM & { + bunny_intake_success: number; + bunny_intake_failure: number; + bunny_tote_success: number; + bunny_tote_failure: number; + bunny_low_success: number; + bunny_low_failure: number; + actions: AutoActionData[]; +}; + +export type TeleActionsTM = ActionsTM & { + actions: TeleActionData[]; +}; + +export type ActionsTM = { + id: number; + tote_intake_success: number; + tote_intake_failure: number; + tote_eject_success: number; + tote_eject_failure: number; + balloon_intake_success: number; + bollon_intake_failure: number; + score_low_success: number; + score_low_failure: number; + score_internal_success: number; + score_internal_failure: number; + score_external_success: number; + score_external_failure: number; + score_other_robot_success: number; + score_other_robot_failure: number; +}; + +export type TeamMatch = { + id: number; + scout_id: string; + match_key: string; + team_key: string; + skill: number; + notes: string; + broke: boolean; + died: boolean; + auto_actions: AutoActionData[]; + tele_actions: TeleActionData[]; +}; + +export type AutoActionData = { + action: AutoAction; + success: boolean; +}; + +export type TeleActionData = { + action: TeleAction; + success: boolean; +}; + +// Action Types +// Naming Convention: action_type + game_piece + where +export type TeleAction = + | 'IntakeTote' + | 'IntakeBalloon' + | 'IntakeBalloonCoral' + | 'ScoreBalloonInternalTote' // Held by scorer + | 'ScoreBalloonExternalTote' // Held by alliance member + | 'ScoreBalloonUncontrolledTote' + | 'ScoreBalloonLow' + | 'EjectBalloon' + | 'EjectBunny' // Could happen in Tele; we could instead move this to BunnyAction and reset held_bunnies to 0 after Auto + | 'EjectTote'; + +export type BunnyAction = + | 'IntakeBunny' + | 'ScoreBunnyInternalTote' + | 'ScoreBunnyExternalTote' + | 'ScoreBunnyUncontrolledTote' + | 'ScoreBunnyLow'; +export type AutoAction = TeleAction | BunnyAction; + +// For state machine +export type ItemInputState = 'Intake' | 'Score' | 'Eject' | 'None'; +export type TeleInputState = TeleAction | ItemInputState; +export type AutoInputState = TeleInputState | BunnyAction; diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte index 060a519..4b474b2 100644 --- a/src/routes/+layout.svelte +++ b/src/routes/+layout.svelte @@ -7,8 +7,6 @@ diff --git a/src/routes/scout/+page.svelte b/src/routes/scout/+page.svelte index 693ee14..ddf130b 100644 --- a/src/routes/scout/+page.svelte +++ b/src/routes/scout/+page.svelte @@ -1,33 +1,49 @@ -
- -
- +
+

Team {team_key}

+ {#if timelineExtended} +
+ +
(timelineExtended = false)}>Hide Timeline + {:else} +
+ +
+ (timelineExtended = true)}>Show Timeline -
-
+ {/if} + diff --git a/src/routes/scout/ActionInputs.svelte b/src/routes/scout/ActionInputs.svelte new file mode 100644 index 0000000..eadb514 --- /dev/null +++ b/src/routes/scout/ActionInputs.svelte @@ -0,0 +1,173 @@ + + +

Number of pieces currently held: {held_scorables}

+
+ {#if is_none_state} +
+ + {#if held_scorables > 0} + + {/if} + {#if held_ejectables > 0} + + {/if} +
+ {:else if is_intake_state} +
+ + + + + +
+ {:else if is_score_state} +
+ {#if held_bunnies > 0} + + + {#if held_totes > 0} + + {/if} + + {/if} + {#if held_balloons > 0} + + + {#if held_totes > 0} + + {/if} + + {/if} + +
+ {:else if is_eject_state} +
+ {#if held_bunnies > 0} + + {/if} + {#if held_balloons > 0} + + {/if} + {#if held_totes > 0} + + {/if} + +
+ {:else} + + (actionState = + actionState.substring(0, 1) === 'S' + ? 'Score' + : actionState.substring(0, 1) === 'E' + ? 'Eject' + : 'Intake')} + /> + {/if} +
diff --git a/tailwind.config.js b/tailwind.config.js index 2c73fee..3e2b173 100644 --- a/tailwind.config.js +++ b/tailwind.config.js @@ -2,20 +2,20 @@ export default { content: ['./src/**/*.{html,js,svelte,ts}'], theme: { - colors: { - navbar_black: '#1c1c1c', - outline_gray: '#ec4899', - cresc_green: '#49A078', - bg_gray: '#020617', - slack_purple: '#4A154B', - robot_blue: '#0083E6', - robot_red: '#ED1C24', - fail_red: '#FF6663', - btn_grey: '#0f172a', - text_red: '#FF4848', - text_yellow: '#F6B14B' - }, - extend: {} + extend: { + colors: { + navbar_black: '#1c1c1c', + outline_gray: '#c2c2c2', + cresc_green: '#00d586', + bg_gray: '#2c2c2c', + slack_purple: '#4A154B', + robot_blue: '#0083E6', + robot_red: '#ED1C24', + fail_red: '#EE3C42', + btn_grey: '#5C5C5C', + text_white: '#ffffff' + } + } }, plugins: [] };