From 3eaa56f0306ead818f64c3d99fc6d230d9b970a4 Mon Sep 17 00:00:00 2001 From: Max Nanis Date: Wed, 18 Feb 2026 20:42:03 -0500 Subject: HERE WE GO, HERE WE GO, HERE WE GO --- jb-ui/src/pages/Result.tsx | 123 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 123 insertions(+) create mode 100644 jb-ui/src/pages/Result.tsx (limited to 'jb-ui/src/pages/Result.tsx') diff --git a/jb-ui/src/pages/Result.tsx b/jb-ui/src/pages/Result.tsx new file mode 100644 index 0000000..47af248 --- /dev/null +++ b/jb-ui/src/pages/Result.tsx @@ -0,0 +1,123 @@ +import { useAppSelector } from "@/hooks"; +import confetti from "canvas-confetti"; +import { useEffect } from "react"; + +// getOutcomeStr: function () { +// return { +// 0: "UNKNOWN", 1: "ENTER", +// 2: "INCOMPLETE", 3: "COMPLETE" +// }[this.get('status')] || ''; +// } + +export const Complete = () => { + const ts = useAppSelector(state => state.app.taskStatus) + + return ( + <> +
Congratulations! You completed the Survey.
+{ts?.user_payout_string}
+You may close this tab and return to submit the HIT
+ > + ) +} + +export const Enter = () => { + return ( + <> +You're currently in the Survey
+You may close this tab and return to submit the HIT
+ > + ) +} + +export const InComplete = () => { + const ts = useAppSelector(state => state.app.taskStatus) + if (!ts) { return null; } + + return ( + <> +Survey terminated the attempt.
+You may close this tab and return to submit the HIT
+ > + + ) +} + +export const Unknown = () => { + + return ( + <> +You're not currently eligible for any Surveys
+You may close this tab and return to submit the HIT
+ > + ) +} + +export const Loading = () => { + + return ( +Loading...
+ ) +} + + +const Result = () => { + + const ts = useAppSelector(state => state.app.taskStatus) + + const confettiCannons = () => { + const end = Date.now() + 3 * 1000 + const colors = ["#84cc16", "#1e3a8a", "#ec4899"] + const frame = () => { + if (Date.now() > end) return + confetti({ + particleCount: 3, + angle: 60, + spread: 55, + startVelocity: 80, + gravity: 0.7, + origin: { x: 0, y: 0.8 }, + colors: colors, + }) + confetti({ + particleCount: 3, + angle: 120, + spread: 55, + startVelocity: 80, + gravity: 0.7, + origin: { x: 1, y: 0.8 }, + colors: colors, + }) + requestAnimationFrame(frame) + } + frame() + } + + useEffect(() => { + if (ts?.status === 3) { + confettiCannons() + } + }, [ts]) + + + switch (ts?.status) { + case 0: // UNKNOWN + return