From 696436fb62270cf7063740565286d4ed87b93982 Mon Sep 17 00:00:00 2001 From: Aaryan Khandelwal Date: Tue, 12 Sep 2023 11:43:49 +0530 Subject: [PATCH 1/2] chore: update view_props types --- web/services/issues.service.ts | 1 - web/services/modules.service.ts | 2 +- web/types/index.d.ts | 1 + web/types/issues.d.ts | 53 +++--------------------------- web/types/projects.d.ts | 13 ++------ web/types/view-props.d.ts | 57 +++++++++++++++++++++++++++++++++ 6 files changed, 66 insertions(+), 61 deletions(-) create mode 100644 web/types/view-props.d.ts diff --git a/web/services/issues.service.ts b/web/services/issues.service.ts index af5d722e3bf..8362ab2615b 100644 --- a/web/services/issues.service.ts +++ b/web/services/issues.service.ts @@ -8,7 +8,6 @@ import type { IIssueActivity, IIssueComment, IIssueLabels, - IIssueViewOptions, ISubIssueResponse, } from "types"; diff --git a/web/services/modules.service.ts b/web/services/modules.service.ts index 0e3b5cfe29e..8981643664e 100644 --- a/web/services/modules.service.ts +++ b/web/services/modules.service.ts @@ -3,7 +3,7 @@ import APIService from "services/api.service"; import trackEventServices from "./track-event.service"; // types -import type { IIssueViewOptions, IModule, IIssue, ICurrentUserResponse } from "types"; +import type { IModule, IIssue, ICurrentUserResponse } from "types"; const { NEXT_PUBLIC_API_BASE_URL } = process.env; diff --git a/web/types/index.d.ts b/web/types/index.d.ts index dbd3148269d..b6811a287f8 100644 --- a/web/types/index.d.ts +++ b/web/types/index.d.ts @@ -18,6 +18,7 @@ export * from "./calendar"; export * from "./notifications"; export * from "./waitlist"; export * from "./reaction"; +export * from "./view-props"; export type NestedKeyOf = { [Key in keyof ObjectType & (string | number)]: ObjectType[Key] extends object diff --git a/web/types/issues.d.ts b/web/types/issues.d.ts index cdc0a391ab2..05fbb05aced 100644 --- a/web/types/issues.d.ts +++ b/web/types/issues.d.ts @@ -11,6 +11,10 @@ import type { IStateLite, TStateGroups, Properties, + IIssueFilterOptions, + TIssueGroupByOptions, + TIssueViewOptions, + TIssueOrderByOptions, } from "types"; export interface IIssueCycle { @@ -213,55 +217,6 @@ export interface IIssueLite { 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: { diff --git a/web/types/projects.d.ts b/web/types/projects.d.ts index 590fe5023e2..44426acd633 100644 --- a/web/types/projects.d.ts +++ b/web/types/projects.d.ts @@ -8,6 +8,7 @@ import type { TIssueOrderByOptions, TIssueViewOptions, TStateGroups, + IProjectViewProps, } from "."; export interface IProject { @@ -66,14 +67,6 @@ export interface IProjectLite { identifier: string; } -type ProjectViewTheme = { - issueView: TIssueViewOptions; - groupByProperty: TIssueGroupByOptions; - orderBy: TIssueOrderByOptions; - calendarDateRange: string; - filters: IIssueFilterOptions; -}; - type ProjectPreferences = { pages: { block_display: boolean; @@ -90,8 +83,8 @@ export interface IProjectMember { preferences: ProjectPreferences; - view_props: ProjectViewTheme; - default_props: ProjectViewTheme; + view_props: IProjectViewProps; + default_props: IProjectViewProps; created_at: Date; updated_at: Date; diff --git a/web/types/view-props.d.ts b/web/types/view-props.d.ts new file mode 100644 index 00000000000..0514fe52170 --- /dev/null +++ b/web/types/view-props.d.ts @@ -0,0 +1,57 @@ +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 IIssueFilterOptions { + assignees: string[] | null; + created_by: string[] | null; + labels: string[] | null; + priority: string[] | null; + start_date: string[] | null; + state: string[] | null; + state_group: TStateGroups[] | null; + subscriber: string[] | null; + target_date: string[] | null; +} + +export interface IIssueDisplayFilterOptions { + calendar_date_range?: string; + group_by?: TIssueGroupByOptions; + layout?: TIssueViewOptions; + order_by?: TIssueOrderByOptions; + show_empty_groups?: boolean; + start_target_date?: boolean; + sub_issue?: boolean; + type?: "active" | "backlog" | null; +} + +export interface IProjectViewProps { + filters: IIssueFilterOptions; + display_filters: IIssueDisplayFilterOptions; +} From a9e0c7e49de87b80b2889aac6d6dbd8e7c420fb0 Mon Sep 17 00:00:00 2001 From: Aaryan Khandelwal Date: Tue, 12 Sep 2023 22:16:01 +0530 Subject: [PATCH 2/2] refactor: view props structure --- .../core/filters/issues-view-filter.tsx | 145 +++---- .../core/modals/bulk-delete-issues-modal.tsx | 6 +- web/components/core/views/all-views.tsx | 18 +- .../core/views/board-view/all-boards.tsx | 17 +- .../core/views/board-view/board-header.tsx | 24 +- .../core/views/board-view/single-board.tsx | 16 +- .../core/views/board-view/single-issue.tsx | 20 +- .../core/views/calendar-view/calendar.tsx | 20 +- web/components/core/views/issues-view.tsx | 69 ++-- .../core/views/list-view/all-lists.tsx | 9 +- .../core/views/list-view/single-issue.tsx | 9 +- .../core/views/list-view/single-list.tsx | 12 +- .../spreadsheet-view/spreadsheet-columns.tsx | 6 +- .../gantt-chart/cycle-issues-layout.tsx | 4 +- web/components/issues/delete-issue-modal.tsx | 6 +- web/components/issues/gantt-chart/layout.tsx | 4 +- web/components/issues/modal.tsx | 12 +- .../my-issues/my-issues-view-options.tsx | 192 ++++----- .../issues/my-issues/my-issues-view.tsx | 43 +- .../issues/view-select/due-date.tsx | 6 +- .../issues/view-select/start-date.tsx | 6 +- .../gantt-chart/module-issues-layout.tsx | 4 +- .../profile/profile-issues-view-options.tsx | 193 ++++----- .../profile/profile-issues-view.tsx | 52 ++- web/contexts/issue-view.context.tsx | 375 ++++-------------- web/contexts/profile-issues-context.tsx | 199 +++------- web/hooks/gantt-chart/cycle-issues-view.tsx | 8 +- web/hooks/gantt-chart/issue-view.tsx | 8 +- web/hooks/gantt-chart/module-issues-view.tsx | 8 +- web/hooks/my-issues/use-my-issues-filter.tsx | 127 +++--- web/hooks/my-issues/use-my-issues.tsx | 12 +- web/hooks/use-calendar-issues-view.tsx | 16 +- web/hooks/use-issues-view.tsx | 47 +-- web/hooks/use-profile-issues.tsx | 38 +- web/hooks/use-spreadsheet-issues-view.tsx | 16 +- web/pages/[workspaceSlug]/me/my-issues.tsx | 1 - .../[projectId]/archived-issues/index.tsx | 4 - web/services/project.service.ts | 6 +- web/types/issues.d.ts | 6 +- web/types/view-props.d.ts | 24 +- web/types/workspace.d.ts | 10 +- 41 files changed, 706 insertions(+), 1092 deletions(-) diff --git a/web/components/core/filters/issues-view-filter.tsx b/web/components/core/filters/issues-view-filter.tsx index 1266bd5a355..6354625dcac 100644 --- a/web/components/core/filters/issues-view-filter.tsx +++ b/web/components/core/filters/issues-view-filter.tsx @@ -58,16 +58,8 @@ export const IssuesFilterView: React.FC = () => { const isArchivedIssues = router.pathname.includes("archived-issues"); const { - issueView, - setIssueView, - groupByProperty, - setGroupByProperty, - orderBy, - setOrderBy, - showEmptyGroups, - showSubIssues, - setShowSubIssues, - setShowEmptyGroups, + displayFilters, + setDisplayFilters, filters, setFilters, resetFilterToDefault, @@ -96,11 +88,11 @@ export const IssuesFilterView: React.FC = () => { - {!disableAddIssue && !disableUserActions && selectedGroup !== "created_by" && ( + {!disableAddIssue && !disableUserActions && displayFilters?.group_by !== "created_by" && (