'use client'; import { useState, useEffect } from 'react'; import { Button } from '@/components/ui/button'; import { Card } from '@/components/ui/card'; import { Badge } from '@/components/ui/badge'; import { Plus, Edit, Play } from 'lucide-react'; import { numberingApi, NumberingTemplate } from '@/lib/api/numbering'; import { TemplateEditor } from '@/components/numbering/template-editor'; import { SequenceViewer } from '@/components/numbering/sequence-viewer'; import { TemplateTester } from '@/components/numbering/template-tester'; import { toast } from 'sonner'; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from "@/components/ui/select"; const PROJECTS = [ { id: '1', name: 'LCBP3' }, { id: '2', name: 'LCBP3-Maintenance' }, ]; export default function NumberingPage() { const [selectedProjectId, setSelectedProjectId] = useState("1"); const [templates, setTemplates] = useState([]); const [, setLoading] = useState(true); // View states const [isEditing, setIsEditing] = useState(false); const [activeTemplate, setActiveTemplate] = useState(undefined); const [isTesting, setIsTesting] = useState(false); const [testTemplate, setTestTemplate] = useState(null); const selectedProjectName = PROJECTS.find(p => p.id === selectedProjectId)?.name || 'Unknown Project'; const loadTemplates = async () => { setLoading(true); try { const data = await numberingApi.getTemplates(); setTemplates(data); } catch { toast.error("Failed to load templates"); } finally { setLoading(false); } }; useEffect(() => { loadTemplates(); }, []); const handleEdit = (template?: NumberingTemplate) => { setActiveTemplate(template); setIsEditing(true); }; const handleSave = async (data: Partial) => { try { await numberingApi.saveTemplate(data); toast.success(data.template_id ? "Template updated" : "Template created"); setIsEditing(false); loadTemplates(); } catch { toast.error("Failed to save template"); } }; const handleTest = (template: NumberingTemplate) => { setTestTemplate(template); setIsTesting(true); }; if (isEditing) { return (
setIsEditing(false)} />
); } return (

Document Numbering

Manage numbering templates and sequences

Templates - {selectedProjectName}

{templates .filter(t => !t.project_id || t.project_id === Number(selectedProjectId)) // Show all if no project_id (legacy mock), or match .map((template) => (

{template.document_type_name}

{PROJECTS.find(p => p.id === template.project_id?.toString())?.name || selectedProjectName} {template.discipline_code && {template.discipline_code}} {template.is_active ? 'Active' : 'Inactive'}
{template.template_format}
Example: {template.example_number}
Reset: {template.reset_annually ? 'Annually' : 'Never'}
))}
{/* Sequence Viewer Sidebar */}
); }