feat: an ordered backlog
A Backlog tab lists the tickets still to start in the order the team will take them; drag them, or use the arrows, to reorder. Moving a ticket only rewrites that ticket's rank, read from the event store, and board columns follow the same order. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -18,6 +18,7 @@ import { map, Observable } from 'rxjs';
|
||||
import {
|
||||
AddChecklistItemDocument,
|
||||
AssignIssueDocument,
|
||||
BacklogDocument,
|
||||
BoardDocument,
|
||||
ChangeIssueStatusDocument,
|
||||
CreateIssueDocument,
|
||||
@@ -26,6 +27,7 @@ import {
|
||||
IssueDocument,
|
||||
LinkIssuesDocument,
|
||||
MyIssuesDocument,
|
||||
RankIssueDocument,
|
||||
RemoveChecklistItemDocument,
|
||||
SearchIssuesDocument,
|
||||
SetIssueParentDocument,
|
||||
@@ -166,6 +168,31 @@ export class GraphqlIssuesGateway extends IssuesGateway {
|
||||
);
|
||||
}
|
||||
|
||||
backlog(projectId: string): Observable<IssuePage> {
|
||||
return this.gql
|
||||
.query(BacklogDocument, {
|
||||
filter: { projectId, categories: ['TODO'], sort: 'RANK' },
|
||||
})
|
||||
.pipe(
|
||||
map((d) => ({
|
||||
items: d.issues.items.map(toIssueSummary),
|
||||
total: d.issues.total,
|
||||
})),
|
||||
);
|
||||
}
|
||||
|
||||
rank(
|
||||
issueId: string,
|
||||
aboveIssueId: string | null,
|
||||
belowIssueId: string | null,
|
||||
): Observable<CommandResult> {
|
||||
return this.gql
|
||||
.mutate(RankIssueDocument, {
|
||||
input: { issueId, aboveIssueId, belowIssueId },
|
||||
})
|
||||
.pipe(map((d) => toCommandResult(d.rankIssue)));
|
||||
}
|
||||
|
||||
addChecklistItem(issueId: string, text: string): Observable<CommandResult> {
|
||||
return this.gql
|
||||
.mutate(AddChecklistItemDocument, { input: { issueId, text } })
|
||||
|
||||
Reference in New Issue
Block a user