[WEB-4951] [WEB-4884] feat: work item filters revamp (#7810)
This commit is contained in:
parent
e6a7ca4c72
commit
9aef5d4aa9
160 changed files with 5879 additions and 4881 deletions
|
|
@ -6,7 +6,6 @@ import { IStateLite } from "./state";
|
|||
import { IUserLite } from "./users";
|
||||
import {
|
||||
IIssueDisplayProperties,
|
||||
IIssueFilterOptions,
|
||||
TIssueExtraOptions,
|
||||
TIssueGroupByOptions,
|
||||
TIssueGroupingFilters,
|
||||
|
|
@ -219,7 +218,6 @@ export interface IIssueListRow {
|
|||
}
|
||||
|
||||
export interface ILayoutDisplayFiltersOptions {
|
||||
filters: (keyof IIssueFilterOptions)[];
|
||||
display_properties: (keyof IIssueDisplayProperties)[];
|
||||
display_filters: {
|
||||
group_by?: TIssueGroupByOptions[];
|
||||
|
|
|
|||
|
|
@ -13,6 +13,7 @@ export type TNegativeOperatorConfig = { allowNegative: true; negOperatorLabel?:
|
|||
* - negativeOperatorConfig: Configuration for negative operators
|
||||
*/
|
||||
export type TBaseFilterFieldConfig = {
|
||||
isOperatorEnabled?: boolean;
|
||||
operatorLabel?: string;
|
||||
} & TNegativeOperatorConfig;
|
||||
|
||||
|
|
|
|||
|
|
@ -26,13 +26,16 @@ export const CORE_COMPARISON_OPERATOR = {
|
|||
RANGE: "range",
|
||||
} as const;
|
||||
|
||||
// -------- TYPE EXPORTS --------
|
||||
|
||||
type TCoreEqualityOperator = (typeof CORE_EQUALITY_OPERATOR)[keyof typeof CORE_EQUALITY_OPERATOR];
|
||||
type TCoreCollectionOperator = (typeof CORE_COLLECTION_OPERATOR)[keyof typeof CORE_COLLECTION_OPERATOR];
|
||||
type TCoreComparisonOperator = (typeof CORE_COMPARISON_OPERATOR)[keyof typeof CORE_COMPARISON_OPERATOR];
|
||||
/**
|
||||
* All core operators
|
||||
*/
|
||||
export const CORE_OPERATORS = {
|
||||
...CORE_EQUALITY_OPERATOR,
|
||||
...CORE_COLLECTION_OPERATOR,
|
||||
...CORE_COMPARISON_OPERATOR,
|
||||
} as const;
|
||||
|
||||
/**
|
||||
* All core operators that can be used in filter conditions
|
||||
*/
|
||||
export type TCoreSupportedOperators = TCoreEqualityOperator | TCoreCollectionOperator | TCoreComparisonOperator;
|
||||
export type TCoreSupportedOperators = (typeof CORE_OPERATORS)[keyof typeof CORE_OPERATORS];
|
||||
|
|
|
|||
|
|
@ -18,16 +18,15 @@ export const EXTENDED_COLLECTION_OPERATOR = {} as const;
|
|||
*/
|
||||
export const EXTENDED_COMPARISON_OPERATOR = {} as const;
|
||||
|
||||
// -------- TYPE EXPORTS --------
|
||||
|
||||
type TExtendedEqualityOperator = (typeof EXTENDED_EQUALITY_OPERATOR)[keyof typeof EXTENDED_EQUALITY_OPERATOR];
|
||||
type TExtendedCollectionOperator = (typeof EXTENDED_COLLECTION_OPERATOR)[keyof typeof EXTENDED_COLLECTION_OPERATOR];
|
||||
type TExtendedComparisonOperator = (typeof EXTENDED_COMPARISON_OPERATOR)[keyof typeof EXTENDED_COMPARISON_OPERATOR];
|
||||
|
||||
/**
|
||||
* All extended operators
|
||||
*/
|
||||
export const EXTENDED_OPERATORS = {
|
||||
...EXTENDED_EQUALITY_OPERATOR,
|
||||
...EXTENDED_COLLECTION_OPERATOR,
|
||||
...EXTENDED_COMPARISON_OPERATOR,
|
||||
} as const;
|
||||
/**
|
||||
* All extended operators that can be used in filter conditions
|
||||
*/
|
||||
export type TExtendedSupportedOperators =
|
||||
| TExtendedEqualityOperator
|
||||
| TExtendedCollectionOperator
|
||||
| TExtendedComparisonOperator;
|
||||
export type TExtendedSupportedOperators = (typeof EXTENDED_OPERATORS)[keyof typeof EXTENDED_OPERATORS];
|
||||
|
|
|
|||
|
|
@ -1,4 +1,6 @@
|
|||
import { TIssue } from "./issues/issue";
|
||||
import { LOGICAL_OPERATOR, TSupportedOperators } from "./rich-filters";
|
||||
import { CompleteOrEmpty } from "./utils";
|
||||
|
||||
export type TIssueLayouts = "list" | "kanban" | "calendar" | "spreadsheet" | "gantt_chart";
|
||||
|
||||
|
|
@ -47,7 +49,7 @@ export type TIssueOrderByOptions =
|
|||
| "sub_issues_count"
|
||||
| "-sub_issues_count";
|
||||
|
||||
export type TIssueGroupingFilters = "active" | "backlog" | null;
|
||||
export type TIssueGroupingFilters = "active" | "backlog";
|
||||
|
||||
export type TIssueExtraOptions = "show_empty_groups" | "sub_issue";
|
||||
|
||||
|
|
@ -76,10 +78,47 @@ export type TIssueParams =
|
|||
| "per_page"
|
||||
| "issue_type"
|
||||
| "layout"
|
||||
| "expand";
|
||||
| "expand"
|
||||
| "filters";
|
||||
|
||||
export type TCalendarLayouts = "month" | "week";
|
||||
|
||||
/**
|
||||
* Keys for the work item filter properties
|
||||
*/
|
||||
export const WORK_ITEM_FILTER_PROPERTY_KEYS = [
|
||||
"state_group",
|
||||
"priority",
|
||||
"start_date",
|
||||
"target_date",
|
||||
"assignee_id",
|
||||
"mention_id",
|
||||
"created_by_id",
|
||||
"subscriber_id",
|
||||
"label_id",
|
||||
"state_id",
|
||||
"cycle_id",
|
||||
"module_id",
|
||||
"project_id",
|
||||
] as const;
|
||||
export type TWorkItemFilterProperty = (typeof WORK_ITEM_FILTER_PROPERTY_KEYS)[number];
|
||||
|
||||
export type TWorkItemFilterConditionKey = `${TWorkItemFilterProperty}__${TSupportedOperators}`;
|
||||
|
||||
export type TWorkItemFilterConditionData = Partial<{
|
||||
[K in TWorkItemFilterConditionKey]: string;
|
||||
}>;
|
||||
|
||||
export type TWorkItemFilterAndGroup = {
|
||||
[LOGICAL_OPERATOR.AND]: TWorkItemFilterConditionData[];
|
||||
};
|
||||
|
||||
export type TWorkItemFilterGroup = TWorkItemFilterAndGroup;
|
||||
|
||||
export type TWorkItemFilterExpressionData = TWorkItemFilterConditionData | TWorkItemFilterGroup;
|
||||
|
||||
export type TWorkItemFilterExpression = CompleteOrEmpty<TWorkItemFilterExpressionData>;
|
||||
|
||||
export interface IIssueFilterOptions {
|
||||
assignees?: string[] | null;
|
||||
mentions?: string[] | null;
|
||||
|
|
@ -109,7 +148,6 @@ export interface IIssueDisplayFilterOptions {
|
|||
order_by?: TIssueOrderByOptions;
|
||||
show_empty_groups?: boolean;
|
||||
sub_issue?: boolean;
|
||||
type?: TIssueGroupingFilters;
|
||||
}
|
||||
export interface IIssueDisplayProperties {
|
||||
assignee?: boolean;
|
||||
|
|
@ -136,14 +174,20 @@ export type TIssueKanbanFilters = {
|
|||
};
|
||||
|
||||
export interface IIssueFilters {
|
||||
filters: IIssueFilterOptions | undefined;
|
||||
richFilters: TWorkItemFilterExpression;
|
||||
displayFilters: IIssueDisplayFilterOptions | undefined;
|
||||
displayProperties: IIssueDisplayProperties | undefined;
|
||||
kanbanFilters: TIssueKanbanFilters | undefined;
|
||||
}
|
||||
|
||||
export interface IIssueFiltersResponse {
|
||||
export type TSupportedFilterForUpdate = IIssueDisplayFilterOptions | IIssueDisplayProperties | TIssueKanbanFilters;
|
||||
|
||||
export interface ISubWorkItemFilters extends Omit<IIssueFilters, "richFilters"> {
|
||||
filters: IIssueFilterOptions;
|
||||
}
|
||||
|
||||
export interface IIssueFiltersResponse {
|
||||
rich_filters: TWorkItemFilterExpression;
|
||||
display_filters: IIssueDisplayFilterOptions;
|
||||
display_properties: IIssueDisplayProperties;
|
||||
}
|
||||
|
|
@ -172,17 +216,16 @@ export interface IWorkspaceViewIssuesParams {
|
|||
target_date?: string | undefined;
|
||||
project?: string | undefined;
|
||||
order_by?: string | undefined;
|
||||
type?: "active" | "backlog" | undefined;
|
||||
sub_issue?: boolean;
|
||||
}
|
||||
|
||||
export interface IProjectViewProps {
|
||||
rich_filters: TWorkItemFilterExpression;
|
||||
display_filters: IIssueDisplayFilterOptions | undefined;
|
||||
filters: IIssueFilterOptions;
|
||||
}
|
||||
|
||||
export interface IWorkspaceViewProps {
|
||||
filters: IIssueFilterOptions;
|
||||
rich_filters: TWorkItemFilterExpression;
|
||||
display_filters: IIssueDisplayFilterOptions | undefined;
|
||||
display_properties: IIssueDisplayProperties;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,5 +1,10 @@
|
|||
import { TLogoProps } from "./common";
|
||||
import { IIssueDisplayFilterOptions, IIssueDisplayProperties, IIssueFilterOptions } from "./view-props";
|
||||
import {
|
||||
IIssueDisplayFilterOptions,
|
||||
IIssueDisplayProperties,
|
||||
IIssueFilterOptions,
|
||||
TWorkItemFilterExpression,
|
||||
} from "./view-props";
|
||||
|
||||
export enum EViewAccess {
|
||||
PRIVATE,
|
||||
|
|
@ -16,7 +21,7 @@ export interface IProjectView {
|
|||
updated_by: string;
|
||||
name: string;
|
||||
description: string;
|
||||
filters: IIssueFilterOptions;
|
||||
rich_filters: TWorkItemFilterExpression;
|
||||
display_filters: IIssueDisplayFilterOptions;
|
||||
display_properties: IIssueDisplayProperties;
|
||||
query: IIssueFilterOptions;
|
||||
|
|
@ -29,6 +34,10 @@ export interface IProjectView {
|
|||
owned_by: string;
|
||||
}
|
||||
|
||||
export interface IPublishedProjectView extends Omit<IProjectView, "rich_filters"> {
|
||||
filters: IIssueFilterOptions;
|
||||
}
|
||||
|
||||
export type TPublishViewSettings = {
|
||||
is_comments_enabled: boolean;
|
||||
is_reactions_enabled: boolean;
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@ import {
|
|||
IWorkspaceViewProps,
|
||||
IIssueDisplayFilterOptions,
|
||||
IIssueDisplayProperties,
|
||||
IIssueFilterOptions,
|
||||
TWorkItemFilterExpression,
|
||||
} from "./view-props";
|
||||
import { EViewAccess } from "./views";
|
||||
|
||||
|
|
@ -16,7 +16,7 @@ export interface IWorkspaceView {
|
|||
updated_by: string;
|
||||
name: string;
|
||||
description: string;
|
||||
filters: IIssueFilterOptions;
|
||||
rich_filters: TWorkItemFilterExpression;
|
||||
display_filters: IIssueDisplayFilterOptions;
|
||||
display_properties: IIssueDisplayProperties;
|
||||
query: any;
|
||||
|
|
@ -32,4 +32,6 @@ export interface IWorkspaceView {
|
|||
};
|
||||
}
|
||||
|
||||
export type TStaticViewTypes = "all-issues" | "assigned" | "created" | "subscribed";
|
||||
export const STATIC_VIEW_TYPES = ["all-issues", "assigned", "created", "subscribed"];
|
||||
|
||||
export type TStaticViewTypes = (typeof STATIC_VIEW_TYPES)[number];
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue