diff --git a/src/app/(modules)/ticket/[ticketId]/components/DefectClassStatusLegend.tsx b/src/app/(modules)/ticket/[ticketId]/components/DefectClassStatusLegend.tsx
new file mode 100644
index 0000000..7c69db2
--- /dev/null
+++ b/src/app/(modules)/ticket/[ticketId]/components/DefectClassStatusLegend.tsx
@@ -0,0 +1,51 @@
+import { Component } from 'lucide-react';
+
+import { cn } from '@/lib/utils';
+import type { TicketDefectClassTicketStatus } from '@/types';
+
+export const DEFECT_CLASS_STATUS_CONFIG: Record<
+ TicketDefectClassTicketStatus,
+ {
+ label: string;
+ iconClassName: string;
+ }
+> = {
+ unassigned: {
+ label: 'Unassigned',
+ iconClassName: 'text-zinc-500',
+ },
+ assigned: {
+ label: 'Assigned',
+ iconClassName: 'text-red-500',
+ },
+ under_review: {
+ label: 'Under Review',
+ iconClassName: 'text-violet-500',
+ },
+ approved: {
+ label: 'Approved',
+ iconClassName: 'text-emerald-500',
+ },
+ rejected: {
+ label: 'Rejected',
+ iconClassName: 'text-orange-500',
+ },
+};
+
+export function DefectClassStatusLegend() {
+ return (
+
+ {Object.entries(DEFECT_CLASS_STATUS_CONFIG).map(([status, item]) => (
+
+
+ {item.label}
+
+ ))}
+
+ );
+}
diff --git a/src/app/(modules)/ticket/[ticketId]/components/TicketDefectClassTabs.tsx b/src/app/(modules)/ticket/[ticketId]/components/TicketDefectClassTabs.tsx
index 9ed0468..9e67d68 100644
--- a/src/app/(modules)/ticket/[ticketId]/components/TicketDefectClassTabs.tsx
+++ b/src/app/(modules)/ticket/[ticketId]/components/TicketDefectClassTabs.tsx
@@ -2,12 +2,14 @@
import { useEffect, useMemo, useState } from 'react';
import { usePathname, useRouter, useSearchParams } from 'next/navigation';
-import { CheckCircle2 } from 'lucide-react';
+import { Component } from 'lucide-react';
import { Card, CardContent } from '@/components/ui/card';
import { Tabs, TabsList, TabsTrigger } from '@/components/ui/tabs';
+import { cn } from '@/lib/utils';
import { useTicketDefectClassesQuery } from '../../hooks/useTicketQueries';
+import { DEFECT_CLASS_STATUS_CONFIG } from './DefectClassStatusLegend';
interface TicketDefectClassTabsProps {
ticketId: string;
@@ -49,7 +51,6 @@ export function TicketDefectClassTabs({
nextParams.set('defect_class', className);
setSelectedClass(className);
- console.log(className);
router.replace(`${pathname}?${nextParams.toString()}`, { scroll: false });
};
@@ -86,9 +87,17 @@ export function TicketDefectClassTabs({
-
+
{item.display_name}
))}
diff --git a/src/app/(modules)/ticket/[ticketId]/components/TicketDetailHeader.tsx b/src/app/(modules)/ticket/[ticketId]/components/TicketDetailHeader.tsx
index ce47700..5a021bb 100644
--- a/src/app/(modules)/ticket/[ticketId]/components/TicketDetailHeader.tsx
+++ b/src/app/(modules)/ticket/[ticketId]/components/TicketDetailHeader.tsx
@@ -10,9 +10,11 @@ import { PermissionGuard } from '@/guards';
import type { TicketDetail } from '@/types';
import { TicketStatusBadge } from '../../components/TicketStatusBadge';
+import { DefectClassStatusLegend } from './DefectClassStatusLegend';
export function TicketDetailHeader({ ticket }: { ticket: TicketDetail }) {
const router = useRouter();
+ const ticketLabel = ticket.ticket_name
return (
@@ -23,7 +25,8 @@ export function TicketDetailHeader({ ticket }: { ticket: TicketDetail }) {
- Ticket ID: {ticket.id}
+ Ticket: {ticketLabel}
+
diff --git a/src/types/ticket/actions.ts b/src/types/ticket/actions.ts
index b39b706..8292b3a 100644
--- a/src/types/ticket/actions.ts
+++ b/src/types/ticket/actions.ts
@@ -43,23 +43,3 @@ export interface ReviewRepairPayload {
export interface CloseTicketPayload {
defect_class: string;
}
-
-export type TicketDefectClassTicketStatus =
- | 'unassigned'
- | 'assigned'
- | 'under_review'
- | 'approved'
- | 'rejected';
-
-export interface TicketDefectClassItem {
- class_name: string;
- display_name: string;
- assignment_status: TicketDefectClassTicketStatus;
-}
-
-export interface TicketDefectClassesResponse {
- ticket_id: string;
- video_id: string;
- ticket_status: TicketDefectClassTicketStatus;
- defect_classes: TicketDefectClassItem[];
-}
diff --git a/src/types/ticket/defect-class.ts b/src/types/ticket/defect-class.ts
new file mode 100644
index 0000000..af058ef
--- /dev/null
+++ b/src/types/ticket/defect-class.ts
@@ -0,0 +1,19 @@
+export type TicketDefectClassTicketStatus =
+ | 'unassigned'
+ | 'assigned'
+ | 'under_review'
+ | 'approved'
+ | 'rejected';
+
+export interface TicketDefectClassItem {
+ class_name: string;
+ display_name: string;
+ assignment_status: TicketDefectClassTicketStatus;
+}
+
+export interface TicketDefectClassesResponse {
+ ticket_id: string;
+ video_id: string;
+ ticket_status: TicketDefectClassTicketStatus;
+ defect_classes: TicketDefectClassItem[];
+}
diff --git a/src/types/ticket/detail.ts b/src/types/ticket/detail.ts
index a512033..cbfae64 100644
--- a/src/types/ticket/detail.ts
+++ b/src/types/ticket/detail.ts
@@ -1,4 +1,4 @@
-import type { TicketDefectClassTicketStatus } from './actions';
+import type { TicketDefectClassTicketStatus } from './defect-class';
import type { TicketStatus } from './status';
export interface TicketActor {
@@ -68,6 +68,7 @@ export interface TicketTimestamps {
export interface TicketDetail {
id: string;
+ ticket_name?: string;
video_id: string;
chainage_id: string | null;
status: TicketStatus;
diff --git a/src/types/ticket/index.ts b/src/types/ticket/index.ts
index d161645..4f98cfd 100644
--- a/src/types/ticket/index.ts
+++ b/src/types/ticket/index.ts
@@ -2,4 +2,5 @@ export * from './status';
export * from './list';
export * from './detail';
export * from './actions';
+export * from './defect-class';
export * from './events';