Portal Community

Widget Catalog

 Pending Tasks Count
PendingTasksCountWidget

Displays a large number showing your current HIL inbox count. Updates in real time via EdgeStream subscription on tasks.{userId}. Color changes to red when tasks are overdue.

 Recent Workflows
RecentWorkflowsWidget

Shows your last 5 workflow executions with status badges. Clicking an execution navigates to the Observer Panel. Refreshes every 60 seconds or when a workflow-related EdgeStream event arrives.

 Metrics Tile
MetricsTileWidget

Embeds a Grafana panel URL in an iframe. No code required — just configure the Grafana panel URL in widget settings. Supports Grafana anonymous access or authenticated panel embeds.

 Quick Launch
QuickLaunchWidget

Configurable list of shortcut buttons. Each shortcut can start a workflow, open an App Studio app, navigate to a WorkDesk section, or open any URL. Fully customizable label and icon.

 Announcement Banner
AnnouncementBannerWidget

Displays the latest admin announcement. Dismissible per user — once dismissed, the announcement does not reappear (unless a new one is posted). Good for placing at the top of the dashboard for role-level communications.

Widget Type Reference

Widget TypeData SourceReal-time?Config Required?
PendingTasksCountGET /api/workdesk/inbox/countYes (EdgeStream)No
RecentWorkflowsGET /api/workdesk/executions?limit=5Partial (60s poll)Optional (limit)
MetricsTileGrafana panel iframeGrafana-managedYes (Grafana URL)
QuickLaunchStatic configNoYes (shortcuts array)
AnnouncementBannerGET /api/workdesk/announcements/latestNo (on load)No

Widget Type Discriminated Union (TypeScript)

// Widget config type system
type DashboardWidget =
  | { id: string; type: 'PendingTasksCount'; col: number; row: number; w: number; h: number; config: {} }
  | { id: string; type: 'RecentWorkflows'; col: number; row: number; w: number; h: number; config: { limit?: number } }
  | { id: string; type: 'MetricsTile'; col: number; row: number; w: number; h: number;
      config: { grafanaUrl: string; title?: string; height?: number } }
  | { id: string; type: 'QuickLaunch'; col: number; row: number; w: number; h: number;
      config: { shortcuts: Array<{ label: string; icon?: string; action: ShortcutAction }> } }
  | { id: string; type: 'AnnouncementBanner'; col: number; row: number; w: number; h: number; config: {} };

type ShortcutAction =
  | { type: 'startWorkflow'; workflowId: string }
  | { type: 'openApp'; appId: string }
  | { type: 'navigate'; path: string }
  | { type: 'url'; url: string };