New /issues route: a sortable, filterable table over open issues across
every repo that has one -- repo picker (default: no filter, every repo
combined), hide-blocked toggle, and a label multi-select, consuming
swarm-controller's GET /api/repos + GET /api/issue-report / GET
/api/repos/{org}/{repo}/issue-report (see hyperhive#3831 for the row
shape). blocked and depended_on_by_count arrive pre-resolved per row --
this page does no dependency-graph walking of its own, just sort/filter
over what it's given. Default sort is depended_on_by_count descending,
matching mara's framing of the report's headline ordering.
Widened Table's TableColumn.header from string to ComponentChildren so
a column can carry a real clickable sort-toggle button instead of
forking a second table primitive for this one page.
33 lines
1.1 KiB
TypeScript
33 lines
1.1 KiB
TypeScript
// Root shell component — routing only. Each route's content is its own
|
|
// page component under `./pages/`; this file just maps paths to them.
|
|
import { Route, Switch } from 'wouter-preact';
|
|
import { Shell } from './shell/Shell.js';
|
|
import { AgentsPage } from './pages/AgentsPage.js';
|
|
import { ComponentsPage } from './pages/ComponentsPage.js';
|
|
import { JobsPage } from './pages/JobsPage.js';
|
|
import { HivesPage } from './pages/HivesPage.js';
|
|
import { IssueReportPage } from './pages/IssueReportPage.js';
|
|
import { Panel } from './ui/panel/Panel.js';
|
|
|
|
function NotFound() {
|
|
return (
|
|
<Panel title="404" icon="🧭">
|
|
<p>no route here.</p>
|
|
</Panel>
|
|
);
|
|
}
|
|
|
|
export function App() {
|
|
return (
|
|
<Shell>
|
|
<Switch>
|
|
<Route path="/" component={HivesPage} />
|
|
<Route path="/agents" component={AgentsPage} />
|
|
<Route path="/jobs" component={JobsPage} />
|
|
<Route path="/issues" component={IssueReportPage} />
|
|
<Route path="/components" component={ComponentsPage} />
|
|
<Route component={NotFound} />
|
|
</Switch>
|
|
</Shell>
|
|
);
|
|
}
|