3.0 KiB
3.0 KiB
Data Model: Superset-Style UX Redesign
Feature: 019-superset-ux-redesign Date: 2026-02-09
Overview
This feature primarily introduces frontend state management and UI components. No new database tables are required. The data model focuses on client-side stores for managing UI state.
Frontend Stores
1. SidebarStore
Purpose: Manage sidebar visibility and collapse state
interface SidebarState {
isExpanded: boolean; // true = full width, false = icons only
activeCategory: string; // 'dashboards' | 'datasets' | 'storage' | 'admin'
activeItem: string; // Current route path
isMobileOpen: boolean; // For mobile overlay mode
}
Persistence: localStorage key sidebar_state
2. TaskDrawerStore
Purpose: Manage Task Drawer visibility and resource-to-task mapping
interface TaskDrawerState {
isOpen: boolean;
activeTaskId: string | null;
resourceTaskMap: Record<string, {
taskId: string;
status: 'IDLE' | 'RUNNING' | 'WAITING_INPUT' | 'SUCCESS' | 'ERROR';
}>;
}
Example:
resourceTaskMap: {
"dashboard-uuid-123": { taskId: "task-abc", status: "RUNNING" },
"dataset-uuid-456": { taskId: "task-def", status: "SUCCESS" }
}
3. ActivityStore
Purpose: Track count of active tasks for navbar indicator
interface ActivityState {
activeCount: number; // Number of RUNNING tasks
recentTasks: TaskSummary[]; // Last 5 tasks for quick access
}
interface TaskSummary {
taskId: string;
resourceName: string;
resourceType: 'dashboard' | 'dataset';
status: string;
startedAt: string;
}
4. SettingsStore
Purpose: Cache settings data for consolidated settings page
interface SettingsState {
activeTab: 'environments' | 'connections' | 'llm' | 'logging' | 'system';
environments: Environment[];
connections: Connection[];
llmSettings: LLMSettings;
loggingSettings: LoggingSettings;
}
Backend Entities (Existing)
The following entities are used but not modified:
Task (from backend/src/models/task.py)
id: UUIDstatus: Enum (RUNNING, SUCCESS, ERROR, WAITING_INPUT)plugin_name: Stringcreated_at: DateTimemetadata: JSON (includesresource_id,resource_type)
Environment (from backend/src/models/connection.py)
- Used for Source Environment selector in hubs
State Transitions
Task Status in Resource Grid
IDLE → (user triggers action) → RUNNING
RUNNING → (task needs input) → WAITING_INPUT
RUNNING → (task completes) → SUCCESS
RUNNING → (task fails) → ERROR
WAITING_INPUT → (user provides input) → RUNNING
Sidebar State Flow
Expanded ←→ Collapsed (user toggle)
Hidden (mobile) → Overlay Open (hamburger click) → Hidden (outside click)
Task Drawer State Flow
Closed → Open (click status badge or activity indicator)
Open → Closed (click X or select different task)
Open → Open+DifferentTask (click different status badge)