plane/web/types/issues.d.ts
2023-09-11 14:35:58 +05:30

299 lines
6.1 KiB
TypeScript

import { KeyedMutator } from "swr";
import type {
IState,
IUser,
IProject,
ICycle,
IModule,
IUserLite,
IProjectLite,
IWorkspaceLite,
IStateLite,
TStateGroups,
Properties,
} from "types";
export interface IIssueCycle {
id: string;
cycle_detail: ICycle;
created_at: Date;
updated_at: Date;
created_by: string;
updated_by: string;
project: string;
workspace: string;
issue: string;
cycle: string;
}
export interface IIssueModule {
created_at: Date;
created_by: string;
id: string;
issue: string;
module: string;
module_detail: IModule;
project: string;
updated_at: Date;
updated_by: string;
workspace: string;
}
export interface IIssueParent {
description: any;
id: string;
name: string;
priority: string | null;
project_detail: IProjectLite;
sequence_id: number;
start_date: string | null;
state_detail: IStateLite;
target_date: string | null;
}
export interface IIssueLink {
title: string;
url: string;
}
export interface linkDetails {
created_at: Date;
created_by: string;
created_by_detail: IUserLite;
id: string;
metadata: any;
title: string;
url: string;
}
export interface IIssue {
archived_at: string;
assignees: string[];
assignee_details: IUser[];
assignees_list: string[];
attachment_count: number;
attachments: any[];
blocked_issues: { blocked_issue_detail?: BlockeIssueDetail }[];
blocker_issues: { blocker_issue_detail?: BlockeIssueDetail }[];
blockers_list: string[];
blocks_list: string[];
bridge_id?: string | null;
completed_at: Date;
created_at: string;
created_by: string;
cycle: string | null;
cycle_id: string | null;
cycle_detail: ICycle | null;
description: any;
description_html: any;
description_stripped: any;
estimate_point: number | null;
id: string;
issue_cycle: IIssueCycle | null;
issue_link: linkDetails[];
issue_module: IIssueModule | null;
labels: string[];
label_details: any[];
labels_list: string[];
links_list: IIssueLink[];
link_count: number;
module: string | null;
module_id: string | null;
name: string;
parent: string | null;
parent_detail: IIssueParent | null;
priority: TIssuePriorities;
project: string;
project_detail: IProjectLite;
sequence_id: number;
sort_order: number;
sprints: string | null;
start_date: string | null;
state: string;
state_detail: IState;
sub_issues_count: number;
target_date: string | null;
updated_at: string;
updated_by: string;
workspace: string;
workspace_detail: IWorkspaceLite;
}
export interface ISubIssuesState {
backlog: number;
unstarted: number;
started: number;
completed: number;
cancelled: number;
}
export interface ISubIssueResponse {
state_distribution: ISubIssuesState;
sub_issues: IIssue[];
}
export interface BlockeIssueDetail {
id: string;
name: string;
sequence_id: number;
project_detail: IProjectLite;
}
export type IssuePriorities = {
id: string;
created_at: Date;
updated_at: Date;
uuid: string;
properties: Properties;
created_by: number;
updated_by: number;
user: string;
};
export interface IIssueLabels {
id: string;
created_at: Date;
updated_at: Date;
name: string;
description: string;
color: string;
created_by: string;
updated_by: string;
project: string;
project_detail: IProjectLite;
workspace: string;
workspace_detail: IWorkspaceLite;
parent: string | null;
}
export interface IIssueActivity {
actor: string;
actor_detail: IUserLite;
attachments: any[];
comment: string;
created_at: Date;
created_by: string;
field: string | null;
id: string;
issue: string | null;
issue_comment: string | null;
issue_detail: {
description: any;
description_html: string;
id: string;
name: string;
priority: string | null;
sequence_id: string;
} | null;
new_identifier: string | null;
new_value: string | null;
old_identifier: string | null;
old_value: string | null;
project: string;
project_detail: IProjectLite;
updated_at: Date;
updated_by: string;
verb: string;
workspace: string;
}
export interface IIssueComment extends IIssueActivity {
access: "EXTERNAL" | "INTERNAL";
comment_html: string;
comment_json: any;
comment_stripped: string;
}
export interface IIssueLite {
id: string;
name: string;
project_id: string;
start_date?: string | null;
target_date?: string | null;
workspace__slug: string;
}
export interface IIssueFilterOptions {
type: "active" | "backlog" | null;
assignees: string[] | null;
start_date: string[] | null;
target_date: string[] | null;
state: string[] | null;
state_group: TStateGroups[] | null;
subscriber: string[] | null;
labels: string[] | null;
priority: string[] | null;
created_by: string[] | null;
}
export type TIssueViewOptions = "list" | "kanban" | "calendar" | "spreadsheet" | "gantt_chart";
export type TIssueGroupByOptions =
| "state"
| "priority"
| "labels"
| "created_by"
| "state_detail.group"
| "project"
| "assignees"
| null;
export type TIssueOrderByOptions =
| "-created_at"
| "-updated_at"
| "priority"
| "sort_order"
| "state__name"
| "-state__name"
| "assignees__name"
| "-assignees__name"
| "labels__name"
| "-labels__name"
| "target_date"
| "-target_date"
| "estimate__point"
| "-estimate__point"
| "start_date"
| "-start_date";
export interface IIssueViewOptions {
group_by: TIssueGroupByOptions;
order_by: TIssueOrderByOptions;
filters: IIssueFilterOptions;
}
export interface IIssueAttachment {
asset: string;
attributes: {
name: string;
size: number;
};
created_at: string;
created_by: string;
id: string;
issue: string;
project: string;
updated_at: string;
updated_by: string;
workspace: string;
}
export interface IIssueViewProps {
groupedIssues: { [key: string]: IIssue[] } | undefined;
groupByProperty: TIssueGroupByOptions;
isEmpty: boolean;
issueView: TIssueViewOptions;
mutateIssues: KeyedMutator<
| IIssue[]
| {
[key: string]: IIssue[];
}
>;
orderBy: TIssueOrderByOptions;
params: any;
properties: Properties;
showEmptyGroups: boolean;
}
export type TIssuePriorities = "urgent" | "high" | "medium" | "low" | null;