Skip to content

Commit 55e00b3

Browse files
authored
Assessment Flow (Middle Section - minimal intro and outro) (#271)
* assessment flow types * add route for assessment oa (retrieve the oa) * update assessment hook to now utilize oa routes (out of auth context) * remove old pages (moving to a single page flow) * add globals for errors and easing animation * refactor to not utilize token for oa verification * refactor dropdown for CE toolbar * hooks for assessment flow * update service to no longer use unique links for oas * The assessment flow and components * prettier fix * fix linting * remove ref thats not needed * use err var for linting * resolving comments * renaming and organizing components * move assessment flow types to type file * reorganize types (templates and assessment) * update returns for assessment submission * combine test case card into a single component * remove helper that did nothing lol
1 parent ac51dbf commit 55e00b3

46 files changed

Lines changed: 1453 additions & 610 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

src/app/(web)/(oa)/assessment/[assessmentId]/intro/page.tsx

Lines changed: 0 additions & 45 deletions
This file was deleted.

src/app/(web)/(oa)/assessment/[assessmentId]/outro/page.tsx

Lines changed: 0 additions & 36 deletions
This file was deleted.
Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
'use client';
2+
3+
import { use } from 'react';
4+
import useAssessment from '@/lib/hooks/useAssessment';
5+
import AssessmentIntro from '@/lib/components/assessment-flow/AssessmentIntro';
6+
import AssessmentOutro from '@/lib/components/assessment-flow/AssessmentOutro';
7+
import AssessmentSidebar from '@/lib/components/assessment-flow/AssessmentSidebar';
8+
import AssessmentNavbar from '@/lib/components/assessment-flow/AssessmentNavbar';
9+
import AssessmentContent from '@/lib/components/assessment-flow/AssessmentContent';
10+
11+
export default function AssessmentPage({ params }: { params: Promise<{ assessmentId: string }> }) {
12+
const { assessmentId } = use(params);
13+
const assessment = useAssessment(assessmentId);
14+
15+
if (assessment.isLoading)
16+
return (
17+
<div className="text-sarge-gray-500 flex h-screen items-center justify-center">
18+
Loading...
19+
</div>
20+
);
21+
if (assessment.error)
22+
return (
23+
<div className="text-sarge-error-400 flex h-screen items-center justify-center">
24+
{assessment.error.message}
25+
</div>
26+
);
27+
28+
if (assessment.phase === 'intro' && assessment.assessment) {
29+
return (
30+
<AssessmentIntro
31+
assessment={assessment.assessment}
32+
totalTimeSeconds={assessment.totalTimeSeconds}
33+
onStart={assessment.startAssessment}
34+
/>
35+
);
36+
}
37+
38+
if (assessment.phase === 'outro') {
39+
return (
40+
<AssessmentOutro
41+
reason={assessment.outroReason}
42+
candidateName={assessment.candidateName}
43+
/>
44+
);
45+
}
46+
47+
return (
48+
<div className="flex h-screen w-full flex-col overflow-hidden">
49+
<AssessmentNavbar candidateName={assessment.candidateName} />
50+
<div className="flex flex-1 overflow-hidden">
51+
<AssessmentSidebar
52+
sections={assessment.sections}
53+
currentSectionIndex={assessment.currentSectionIndex}
54+
formattedTime={assessment.timer.formattedTime}
55+
/>
56+
<main className="flex-1 overflow-hidden">
57+
<AssessmentContent
58+
currentSection={assessment.currentSection}
59+
availableLanguages={assessment.availableLanguages}
60+
publicTestCases={assessment.publicTestCases}
61+
testCaseResults={assessment.testCaseResults}
62+
isTransitioning={assessment.isTransitioning}
63+
onLanguageChange={assessment.changeLanguage}
64+
onEditorMount={assessment.handleEditorMount}
65+
onRunTests={assessment.runTests}
66+
onSubmit={assessment.submitAndContinue}
67+
/>
68+
</main>
69+
</div>
70+
</div>
71+
);
72+
}

src/app/(web)/(oa)/assessment/[assessmentId]/task/[taskId]/page.tsx

Lines changed: 0 additions & 142 deletions
This file was deleted.

src/app/(web)/crm/assessment-templates/[id]/edit/page.tsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@ import { ChevronDown, Users } from 'lucide-react';
55
import Image from 'next/image';
66
import { toast } from 'sonner';
77
import AddTaskModal from '@/lib/components/modal/AddTaskModal';
8-
import AssessmentEditorSidebar from '@/lib/components/core/AssessmentEditorSidebar';
9-
import AssessmentTaskPreviewPanel from '@/lib/components/core/AssessmentTaskPreviewPanel';
8+
import AssessmentTemplateEditorSidebar from '@/lib/components/templates/AssessmentTemplateEditorSidebar';
9+
import AssessmentTaskTemplatePreviewPanel from '@/lib/components/templates/AssessmentTaskTemplatePreviewPanel';
1010
import Breadcrumbs from '@/lib/components/core/Breadcrumbs';
1111
import useAssessmentTemplateEditPage from '@/lib/hooks/useAssessmentTemplateEditPage';
1212
import { Combobox } from '@/lib/components/ui/Combobox';
@@ -124,7 +124,7 @@ export default function AssessmentTemplateEditPage({
124124
</div>
125125

126126
<div className="flex min-h-0 flex-1">
127-
<AssessmentEditorSidebar
127+
<AssessmentTemplateEditorSidebar
128128
sections={sections}
129129
selectedSection={selectedSection}
130130
notes={notes}
@@ -137,7 +137,7 @@ export default function AssessmentTemplateEditPage({
137137
onOpenAddTaskModal={() => setAddTaskOpen(true)}
138138
/>
139139

140-
<AssessmentTaskPreviewPanel
140+
<AssessmentTaskTemplatePreviewPanel
141141
selectedSection={selectedSection}
142142
onDeleteSection={deleteSection}
143143
/>

src/app/(web)/crm/templates/page.tsx

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,8 @@ import {
1414
import { Tabs, TabsContent, TabsList, UnderlineTabsTrigger } from '@/lib/components/ui/Tabs';
1515
import { ArrowDownUp, Plus, SlidersHorizontal } from 'lucide-react';
1616
import { useTaskTemplateList } from '@/lib/hooks/useTaskTemplateList';
17-
import TaskCard from '@/lib/components/core/TaskCard';
18-
import { TaskTemplatePreviewPanel } from '@/lib/components/core/TaskTemplatePreviewPanel';
17+
import TaskTemplateCard from '@/lib/components/templates/TaskTemplateCard';
18+
import { TaskTemplatePreview } from '@/lib/components/templates/TaskTemplatePreview';
1919
import type { TaskTemplateListItemDTO } from '@/lib/schemas/task-template.schema';
2020
import Image from 'next/image';
2121
import Pager from '@/lib/components/ui/Pager';
@@ -24,7 +24,7 @@ import useSearch from '@/lib/hooks/useSearch';
2424
import { useAssessmentTemplateList } from '@/lib/hooks/useAssessmentTemplateList';
2525
import CreateAssessmentTemplateModal from '@/lib/components/modal/CreateAssessmentModal';
2626
import { type AssessmentTemplateListItemDTO } from '@/lib/schemas/assessment-template.schema';
27-
import AssessmentCard from '@/lib/components/core/AssessmentCard';
27+
import AssessmentTemplateCard from '@/lib/components/templates/AssessmentTemplateCard';
2828
import {
2929
deleteTaskTemplate,
3030
duplicateTaskTemplate,
@@ -40,7 +40,7 @@ import {
4040
DialogTitle,
4141
} from '@/lib/components/ui/Modal';
4242
import { useAuth } from '@/lib/auth/auth-context';
43-
import { AssessmentTemplatePreview } from '@/lib/components/core/AssessmentTemplatePreview';
43+
import { AssessmentTemplatePreview } from '@/lib/components/templates/AssessmentTemplatePreview';
4444

4545
export default function TemplatesPage() {
4646
const [selectedTaskTemplate, setSelectedTaskTemplate] =
@@ -231,7 +231,7 @@ export default function TemplatesPage() {
231231
).map((task: TaskTemplateListItemDTO, idx: number) => {
232232
const absoluteIdx = page * limit + idx;
233233
return (
234-
<TaskCard
234+
<TaskTemplateCard
235235
key={task.id}
236236
title={task.title}
237237
subtitle={task.taskType ?? ''}
@@ -351,7 +351,7 @@ export default function TemplatesPage() {
351351
? assessmentTemplateSearch.data
352352
: assessmentTemplateList.assessmentTemplateList
353353
).map((assessment: AssessmentTemplateListItemDTO) => (
354-
<AssessmentCard
354+
<AssessmentTemplateCard
355355
key={assessment.id}
356356
template={assessment}
357357
isSelected={selectedAssessmentTemplate?.id === assessment.id}
@@ -378,7 +378,7 @@ export default function TemplatesPage() {
378378

379379
<div className="flex min-h-0 w-3/4 flex-col">
380380
{selectedTaskTemplate ? (
381-
<TaskTemplatePreviewPanel
381+
<TaskTemplatePreview
382382
taskTemplatePreview={selectedTaskTemplate}
383383
onDuplicate={isMutating ? undefined : onDuplicate}
384384
onDelete={isMutating ? undefined : onDelete}

0 commit comments

Comments
 (0)