Repository navigation
Add filters, server-side sort, and test incident hiding to incidents tables - #182
Merged
Merged
Conversation
The card briefly renders "No ongoing incidents" before the resource has loaded, so findByText could return a node that is then replaced.
…tables - Filter bar with status, severity, teams, services and environments, sent to the Rootly API as filter[...] params so filters apply across all pages. Filters already fixed by an entity page are hidden. - Material Table remote data: page, page size and sort are sent to the Rootly API (sort=started_at / mitigated_at / resolved_at). Columns the API cannot sort on are no longer sortable. - Hide test incidents by default with filter[kind][not_in]=test,test_sub. New per-organization showTestIncidents config option and a UI toggle. - Fix functionality and system tables sending unsupported filter keys.
Replace the private fetch workaround with RootlyApi.getSeverities and RootlyApi.getEnvironments, and use the typed sort option on getIncidents.
kwent
force-pushed
the
feat/incidents-page-filters
branch
from
October 11, 2026 08:45
4b1fffd to
74a3bfd
Compare
This was referenced Oct 11, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Adds filters, server-side sorting, and test incident hiding to the incidents tables (
RootlyPageIncidents tab andRootlyIncidentsPageentity tabs).Closes #47
Closes #48
Closes #49
Filters (#47)
GET /v1/incidentsasfilter[status],filter[severity_id],filter[team_ids],filter[service_ids],filter[environment_ids], so they apply across every page.paramsare hidden. The Rootly API ORs all relationship filters (environments, services, functionalities, teams, ...) together, so on entity pages scoped to a service, functionality, team or system the team/service/environment filters are hidden: adding one would widen the results instead of narrowing them. On the global page, a caption explains that several relationship filters match any selected item.showFilters={false}to stay compact.Server-side sort (#48)
sort=-started_atby default).created_at,updated_at,started_at,in_triage_at,mitigated_atandresolved_at, so the other columns are no longer clickable. Before, clicking them only re-sorted the current page.Test incidents (#49)
filter[kind][not_in]=test,test_sub.rootly.<org>.showTestIncidents(@visibility frontend) lists them by default, for example in a sandbox account.Also
filter[functionalitys]and the system tables sendingfilter[groups]. Neither is a supported filter, so those tables were not scoped. They now sendfunctionalitiesandteams.resolveRootlyOrganizationKey/useRootlyInstanceSettingshelpers insrc/api.tsresolve the activerootly.<key>block (explicit, thenisDefault, then the first entry).Notes
@rootly/backstage-plugin-commonhas no public severities or environments methods yet. Those two option lists go through the client's authenticatedfetch(/v1/severities,/v1/environments), with a guard that returns no options if it is unavailable. Follow-up: addgetSeverities/getEnvironmentsto the common package.RootlyIncidentsFetchOptshas nosortfield. The extrasortkey goes through the common client'sqs.stringifyunchanged.Test plan
yarn tscyarn lint(no new errors; 2 new warnings forimport React, same pattern as the rest of the codebase)yarn test: 134 tests pass, including 10 consecutive full runs