feat(FN-1030): enhance workflow results tab with summary bar, collapsible output, and always-visible tab
- Make Workflow tab always visible in TaskDetailModal (not conditional on enabled steps) - Add summary bar showing pass/fail/skip counts with color-coded badges - Make workflow step output collapsible with expand/collapse toggle - Add enhanced empty states for no steps configured, all skipped, and no results - Add CSS styles for summary bar, collapsible output, and empty state variants - Update TaskDetailModal tests to reflect always-visible Workflow tab - Add comprehensive tests for WorkflowResultsTab new features
This commit is contained in:
@@ -272,9 +272,8 @@ export function TaskDetailModal({
|
||||
}, [projectId]);
|
||||
|
||||
// Load workflow results when workflow tab is active
|
||||
const hasWorkflowSteps = (task.enabledWorkflowSteps?.length ?? 0) > 0 || (task.workflowStepResults?.length ?? 0) > 0;
|
||||
useEffect(() => {
|
||||
if (activeTab !== "workflow" || !hasWorkflowSteps) return;
|
||||
if (activeTab !== "workflow") return;
|
||||
let cancelled = false;
|
||||
setWorkflowResultsLoading(true);
|
||||
fetchWorkflowResults(task.id, projectId)
|
||||
@@ -290,7 +289,7 @@ export function TaskDetailModal({
|
||||
if (!cancelled) setWorkflowResultsLoading(false);
|
||||
});
|
||||
return () => { cancelled = true; };
|
||||
}, [activeTab, task.id, projectId, hasWorkflowSteps, addToast]);
|
||||
}, [activeTab, task.id, projectId, addToast]);
|
||||
|
||||
// Reset dependency search when dropdown closes
|
||||
useEffect(() => {
|
||||
@@ -862,18 +861,21 @@ export function TaskDetailModal({
|
||||
>
|
||||
Model
|
||||
</button>
|
||||
{hasWorkflowSteps && (
|
||||
<button
|
||||
className={`detail-tab${activeTab === "workflow" ? " detail-tab-active" : ""}`}
|
||||
onClick={() => setActiveTab("workflow")}
|
||||
>
|
||||
Workflow
|
||||
</button>
|
||||
)}
|
||||
<button
|
||||
className={`detail-tab${activeTab === "workflow" ? " detail-tab-active" : ""}`}
|
||||
onClick={() => setActiveTab("workflow")}
|
||||
>
|
||||
Workflow
|
||||
</button>
|
||||
</div>
|
||||
{activeTab === "workflow" ? (
|
||||
<div className="detail-section">
|
||||
<WorkflowResultsTab taskId={task.id} results={workflowResults} loading={workflowResultsLoading} />
|
||||
<WorkflowResultsTab
|
||||
taskId={task.id}
|
||||
results={workflowResults}
|
||||
loading={workflowResultsLoading}
|
||||
enabledWorkflowSteps={task.enabledWorkflowSteps}
|
||||
/>
|
||||
</div>
|
||||
) : activeTab === "model" ? (
|
||||
<div className="detail-section">
|
||||
|
||||
Reference in New Issue
Block a user