Filtering System¶
Comprehensive filtering across all event properties to find exactly what you need.
Overview¶
The filtering system allows you to narrow down events using multiple criteria. All filters work together with AND logic, and filters are synchronized across all views.
Filter Types¶
1. Quick Search¶
Location: Search box in toolbar
Keyboard Shortcut: Ctrl/Cmd + K
What It Searches:
- Event type
- Event source
- Event subject
- Event data content (JSON payload)
Behavior:
- Real-time filtering as you type
- Case-insensitive matching
- Partial string matching
- Debounced for performance (300ms delay)
Examples:
- Type
orderto find all events related to orders - Type
errorto find events containing error information - Type
payment-serviceto find events from that service
2. Type Filter¶
Location: Type dropdown in toolbar
Description: Filter by specific CloudEvent types
Options: All unique event types from received events (auto-populated)
Behavior:
- Multi-select capability
- OR logic (show events matching any selected type)
- Selected types shown as filter chips
Use Cases:
- Focus on specific event types (e.g.,
com.example.order.created) - Compare multiple event types side-by-side
- Exclude irrelevant event types
3. Source Filter¶
Location: Source dropdown in toolbar
Description: Filter by event source
Options: All unique event sources (auto-populated)
Behavior:
- Multi-select capability
- OR logic (show events matching any selected source)
- Selected sources shown as filter chips
Use Cases:
- Monitor events from specific services
- Compare events across multiple sources
- Debug specific microservices
4. Subject Filter¶
Location: Subject dropdown in toolbar
Description: Filter by event subject
Options: All unique event subjects (auto-populated)
Behavior:
- Single select (one subject at a time)
- Handles null/empty subjects
- Clear button to remove filter
Use Cases:
- Track specific entities (e.g.,
order-12345) - Monitor specific resources
- Debug subject-specific issues
Special Handling:
- Events with no subject can be filtered separately
- Subject filter can be combined with other filters
5. Time Range Filter¶
Location: Time range dropdown in toolbar
Description: Filter events by time period
Options:
- Last Hour - Events from the last 60 minutes
- Last 6 Hours - Events from the last 6 hours
- Last 24 Hours - Events from the last day
- All Time - No time filtering (default)
Behavior:
- Single select
- Filters based on event timestamp (
timefield) - Updates in real-time as time progresses
Use Cases:
- Focus on recent events
- Analyze specific time periods
- Reduce noise from old events
Filter Combination Logic¶
Multiple filters are combined with AND logic:
Show events where:
(search text matches) AND
(type matches ANY selected type) AND
(source matches ANY selected source) AND
(subject matches selected subject) AND
(time is within selected range)
Example¶
With the following filters active:
- Search:
order - Type:
com.example.order.created,com.example.order.updated - Source:
order-service - Time Range: Last Hour
Result: Shows only events that:
- Contain "order" somewhere in the event
- Have type
com.example.order.createdORcom.example.order.updated - Come from source
order-service - Were created within the last hour
Click-to-Filter¶
Quickly add filters by clicking event properties in the Events view.
How It Works¶
- Click event type badge → Adds to type filter
- Click event source badge → Adds to source filter
- Click event subject badge → Sets subject filter
Example Workflow¶
- You see an interesting event
- Click its type badge
- All events of that type are now shown
- Click another event's source
- Now showing only events with that type AND source
Benefits¶
- Fast filtering - No need to manually select from dropdowns
- Exploratory analysis - Click around to discover patterns
- Context-aware - Filters based on what you're looking at
Filter Chips¶
Active filters are displayed as removable chips below the toolbar.
Features¶
- Visual indication - See all active filters at a glance
- Individual removal - Click X on any chip to remove that filter
- Clear all - Button to remove all filters at once
- Chip types - Different colors for different filter types (future)
Chip Display¶
Each chip shows:
- Filter type (search, type, source, subject, time range)
- Filter value
- Remove button (X)
Managing Chips¶
Remove individual filter:
- Click X on the chip
Clear all filters:
- Click "Clear Filters" button
- Use keyboard shortcut
Ctrl/Cmd + L
Filter Persistence¶
What Persists¶
✅ During Session:
- Filters remain active when switching views
- Filters survive tab changes within the app
- Filters maintained until manually cleared or page refresh
❌ Doesn't Persist (currently):
- Across page refreshes (future feature)
- Across browser tabs (future feature)
- Between sessions (future feature)
Future Enhancements¶
Planned improvements:
- Local Storage - Save filters across page refreshes
- URL Parameters - Share filtered views via URL
- Saved Filters - Store and recall filter combinations
- Filter Presets - Predefined filter sets for common scenarios
Filter Synchronization¶
Filters are synchronized across all views automatically.
How It Works¶
- User changes filter in any view
- State management system (
appState) updates - All subscribed views are notified
- Each view re-filters its display
- Event counter updates
Benefits¶
- Consistency - Same filters apply everywhere
- No confusion - Can't have different filters in different views
- Predictable - Switching views maintains context
Example¶
Scenario: User has both Events and Timeline views open
- In Events view, filter by type
com.example.order.created - Switch to Timeline view
- Timeline shows only events of that type
- Return to Events view
- Type filter still active
Advanced Filtering Techniques¶
Combining Filters for Precision¶
Use multiple filter types together for precise results:
This shows only payment errors from the last hour.
Progressive Filtering¶
Start broad, then narrow:
- Start with time range (Last Hour)
- Add source filter (specific service)
- Add type filter if needed
- Use search for final refinement
Exploratory Filtering¶
Click-to-filter workflow:
- Start with all events visible
- Click interesting event's type
- Examine filtered results
- Click another event's source
- Continue until you find what you need
Filter Performance¶
The filtering system is optimized for performance:
Optimizations¶
- Debounced search - Search input debounced by 300ms
- Indexed storage - IndexedDB indexes on type, source, time
- Efficient algorithms - O(n) filtering with early exit
- Memoization - Filter results cached until filters change
Performance Tips¶
- Use specific filters first - Type/source filters are faster than search
- Time range filtering - Reduces dataset size significantly
- Clear unused filters - Reduces processing overhead
- Regular storage cleanup - Admin should clear old events periodically
Troubleshooting¶
No Events Showing¶
Problem: Filters too restrictive, no events match
Solution:
- Check filter chips - are multiple filters active?
- Clear all filters and start over
- Try removing filters one at a time
- Check time range - might be filtering out all events
Filters Not Working¶
Problem: Filters don't seem to affect results
Solution:
- Refresh the page
- Check browser console for errors
- Verify events actually have the properties you're filtering on
- Try clearing all filters and reapplying
Performance Issues¶
Problem: Filtering is slow with many events
Solution:
- Clear storage to remove old events
- Use time range filter to reduce dataset
- Use specific filters (type/source) before search
- Close other browser tabs to free memory
Next Steps¶
- Multiple Views - See how filters work across views
- State Management - Understand filter synchronization
- Keyboard Shortcuts - Efficient filter management