Spaces:
Runtime error
Runtime error
Adding speaker labels under the claims in the UI
Browse files
ui/claimcheck-ui/src/components/ClaimsTable.tsx
CHANGED
|
@@ -68,7 +68,18 @@ export function ClaimsTable() {
|
|
| 68 |
<tbody>
|
| 69 |
{rows.map((r: any, idx: number) => (
|
| 70 |
<tr key={idx} className="border-t">
|
| 71 |
-
<td className="px-4 py-2 align-top">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 72 |
<td className="px-4 py-2 align-top">
|
| 73 |
{r.verdict && (
|
| 74 |
<span className={`inline-flex items-center px-2 py-1 rounded-md border text-xs ${verdictColor(r.verdict.label)}`}>
|
|
|
|
| 68 |
<tbody>
|
| 69 |
{rows.map((r: any, idx: number) => (
|
| 70 |
<tr key={idx} className="border-t">
|
| 71 |
+
<td className="px-4 py-2 align-top">
|
| 72 |
+
<div>
|
| 73 |
+
<div>{r.claim?.text}</div>
|
| 74 |
+
{r.claim?.speaker && (
|
| 75 |
+
<div className="mt-1">
|
| 76 |
+
<span className="inline-flex items-center px-2 py-0.5 rounded-full bg-muted text-xs text-muted-foreground">
|
| 77 |
+
{r.claim.speaker}
|
| 78 |
+
</span>
|
| 79 |
+
</div>
|
| 80 |
+
)}
|
| 81 |
+
</div>
|
| 82 |
+
</td>
|
| 83 |
<td className="px-4 py-2 align-top">
|
| 84 |
{r.verdict && (
|
| 85 |
<span className={`inline-flex items-center px-2 py-1 rounded-md border text-xs ${verdictColor(r.verdict.label)}`}>
|
ui/claimcheck-ui/src/store/appStore.ts
CHANGED
|
@@ -10,6 +10,7 @@ export type StepStatus = 'idle' | 'running' | 'done' | 'error'
|
|
| 10 |
export type UIState = {
|
| 11 |
tab: 0 | 1 | 2
|
| 12 |
filter: 'all' | VerdictLabel
|
|
|
|
| 13 |
evidenceOpen: boolean
|
| 14 |
selectedClaimId?: string
|
| 15 |
}
|
|
@@ -21,6 +22,7 @@ type Store = {
|
|
| 21 |
ui: UIState
|
| 22 |
setTab: (tab: 0 | 1 | 2) => void
|
| 23 |
setFilter: (f: 'all' | VerdictLabel) => void
|
|
|
|
| 24 |
openEvidence: (claimId: string) => void
|
| 25 |
closeEvidence: () => void
|
| 26 |
startRun: (kind: InputKind, payload: { file?: File; text?: string }) => Promise<void>
|
|
@@ -43,9 +45,10 @@ export const useAppStore = create<Store>()(
|
|
| 43 |
runs: [],
|
| 44 |
currentRunId: undefined,
|
| 45 |
steps: initialSteps,
|
| 46 |
-
ui: { tab: 0, filter: 'all', evidenceOpen: false },
|
| 47 |
setTab: (tab) => set((s) => ({ ui: { ...s.ui, tab } })),
|
| 48 |
setFilter: (filter) => set((s) => ({ ui: { ...s.ui, filter } })),
|
|
|
|
| 49 |
openEvidence: (selectedClaimId) => set((s) => ({ ui: { ...s.ui, evidenceOpen: true, selectedClaimId } })),
|
| 50 |
closeEvidence: () => set((s) => ({ ui: { ...s.ui, evidenceOpen: false, selectedClaimId: undefined } })),
|
| 51 |
|
|
|
|
| 10 |
export type UIState = {
|
| 11 |
tab: 0 | 1 | 2
|
| 12 |
filter: 'all' | VerdictLabel
|
| 13 |
+
speakerFilter: 'all' | string
|
| 14 |
evidenceOpen: boolean
|
| 15 |
selectedClaimId?: string
|
| 16 |
}
|
|
|
|
| 22 |
ui: UIState
|
| 23 |
setTab: (tab: 0 | 1 | 2) => void
|
| 24 |
setFilter: (f: 'all' | VerdictLabel) => void
|
| 25 |
+
setSpeakerFilter: (f: 'all' | string) => void
|
| 26 |
openEvidence: (claimId: string) => void
|
| 27 |
closeEvidence: () => void
|
| 28 |
startRun: (kind: InputKind, payload: { file?: File; text?: string }) => Promise<void>
|
|
|
|
| 45 |
runs: [],
|
| 46 |
currentRunId: undefined,
|
| 47 |
steps: initialSteps,
|
| 48 |
+
ui: { tab: 0, filter: 'all', speakerFilter: 'all', evidenceOpen: false },
|
| 49 |
setTab: (tab) => set((s) => ({ ui: { ...s.ui, tab } })),
|
| 50 |
setFilter: (filter) => set((s) => ({ ui: { ...s.ui, filter } })),
|
| 51 |
+
setSpeakerFilter: (speakerFilter) => set((s) => ({ ui: { ...s.ui, speakerFilter } })),
|
| 52 |
openEvidence: (selectedClaimId) => set((s) => ({ ui: { ...s.ui, evidenceOpen: true, selectedClaimId } })),
|
| 53 |
closeEvidence: () => set((s) => ({ ui: { ...s.ui, evidenceOpen: false, selectedClaimId: undefined } })),
|
| 54 |
|