Add Scene 7 claim report workflow
This commit is contained in:
+11
-1
@@ -1,5 +1,5 @@
|
||||
import type { ComponentType } from 'react'
|
||||
import { BookOpen, Building2, CalendarClock, FileText, Image as ImageIcon, Pencil, UserRound } from 'lucide-react'
|
||||
import { BadgeCheck, BookOpen, Building2, CalendarClock, FileText, Image as ImageIcon, Pencil, UserRound } from 'lucide-react'
|
||||
import type { CaseDocument, DocumentExhibit, Evidence, Exhibit, ExhibitRelation, ExhibitType, SourceFileType, TemporalFact } from './types'
|
||||
|
||||
export type WidgetCommand =
|
||||
@@ -72,6 +72,13 @@ function PartyWidget({ exhibit, context }: ExhibitWidgetProps) {
|
||||
</div>
|
||||
}
|
||||
|
||||
function ClaimWidget({ exhibit }: ExhibitWidgetProps) {
|
||||
if (exhibit.type !== 'claim') return null
|
||||
return <div className="card-content claim-content"><div className="claim-heading"><BadgeCheck size={18}/><span>PROPOSITION TO PROVE</span></div>
|
||||
<blockquote>{exhibit.statement}</blockquote><small>CONNECT SOURCE EVIDENCE WITH RED THREAD</small>
|
||||
</div>
|
||||
}
|
||||
|
||||
function DocumentWidget({ exhibit }: ExhibitWidgetProps) {
|
||||
if (exhibit.type !== 'document') return null
|
||||
return <strong>{exhibit.title}</strong>
|
||||
@@ -82,6 +89,7 @@ const notePorts = (exhibit: Exhibit) => [{ id:'knot',x:exhibit.x + exhibit.width
|
||||
const standardCapabilities: WidgetCapabilities = { movable:true,resizable:false,connectable:true,discardable:true,dockable:false }
|
||||
const searchable = (exhibit: Exhibit) => exhibit.type === 'document'
|
||||
? [exhibit.title,...exhibit.body,...Object.values(exhibit.metadata)].join('\n').toLocaleLowerCase()
|
||||
: exhibit.type === 'claim' ? [exhibit.title,exhibit.statement].join('\n').toLocaleLowerCase()
|
||||
: [exhibit.title,exhibit.content].join('\n').toLocaleLowerCase()
|
||||
|
||||
export const exhibitWidgetRegistry: Record<ExhibitType, ExhibitWidgetDefinition> = {
|
||||
@@ -101,6 +109,8 @@ export const exhibitWidgetRegistry: Record<ExhibitType, ExhibitWidgetDefinition>
|
||||
? [{ id:`${exhibit.id}:occurred`,exhibitId:exhibit.id,kind:'occurred',start:exhibit.eventDate,label:exhibit.content }] : [],searchText:searchable,Component:EventWidget },
|
||||
party: { modelKind:'exhibit',visualType:'party',shell:'card',defaultSize:{width:280,height:190},capabilities:standardCapabilities,
|
||||
heading:exhibit => exhibit.type === 'party' && exhibit.partyKind === 'person' ? 'PARTY / PERSON DOSSIER' : 'PARTY / ORGANIZATION DOSSIER',connectionPorts:standardPorts,temporalFacts:() => [],searchText:searchable,Component:PartyWidget },
|
||||
claim: { modelKind:'exhibit',visualType:'claim',shell:'card',defaultSize:{width:310,height:180},capabilities:{...standardCapabilities,discardable:false},
|
||||
heading:() => 'CASE CLAIM / UNPROVEN',connectionPorts:standardPorts,temporalFacts:() => [],searchText:searchable,Component:ClaimWidget },
|
||||
}
|
||||
|
||||
export function exhibitWidget(type: ExhibitType) { return exhibitWidgetRegistry[type] }
|
||||
|
||||
Reference in New Issue
Block a user