From 8aba3b111dda179e27527d5c1f4ae9247c2cf52e Mon Sep 17 00:00:00 2001 From: Vamsi krishna Date: Tue, 11 Mar 2025 19:11:49 +0530 Subject: [PATCH 1/3] chore: issue filters refactor --- .../issue-details/additional-properties.tsx | 31 +++++++++++++++++++ web/ce/helpers/issue-filter.helper.ts | 15 +++++++++ .../store/issue/helpers/base-issue.store.ts | 4 +++ .../components/issues/issue-detail/root.tsx | 2 +- .../issues/issue-detail/sidebar.tsx | 19 ++++++------ .../spreadsheet/issue-column.tsx | 3 +- .../spreadsheet/spreadsheet-header-column.tsx | 3 +- .../issues/peek-overview/properties.tsx | 19 ++++++------ .../store/issue/helpers/base-issues.store.ts | 3 +- .../issue-details/additional-properties.tsx | 1 + .../store/issue/helpers/base-issue.store.ts | 1 + 11 files changed, 77 insertions(+), 24 deletions(-) create mode 100644 web/ce/components/issues/issue-details/additional-properties.tsx create mode 100644 web/ce/store/issue/helpers/base-issue.store.ts create mode 100644 web/ee/components/issues/issue-details/additional-properties.tsx create mode 100644 web/ee/store/issue/helpers/base-issue.store.ts diff --git a/web/ce/components/issues/issue-details/additional-properties.tsx b/web/ce/components/issues/issue-details/additional-properties.tsx new file mode 100644 index 00000000000..c46e125ce5e --- /dev/null +++ b/web/ce/components/issues/issue-details/additional-properties.tsx @@ -0,0 +1,31 @@ +import React, { FC } from "react"; +// plane imports +import { observer } from "mobx-react"; +// plane web imports +import { IssueAdditionalPropertyValuesUpdate } from "@/plane-web/components/issue-types"; + +export type TWorkItemAdditionalSidebarProperties = { + workItemId: string; + workItemType: string | null; + projectId: string; + workspaceSlug: string; + isEditable: boolean; + isPeekView?: boolean; +}; + +export const WorkItemAdditionalSidebarProperties: FC = observer((props) => { + const { workItemId, projectId, workItemType, workspaceSlug, isEditable } = props; + return ( + <> + {workItemType && ( + + )} + + ); +}); diff --git a/web/ce/helpers/issue-filter.helper.ts b/web/ce/helpers/issue-filter.helper.ts index e39259cd937..e6c362706e5 100644 --- a/web/ce/helpers/issue-filter.helper.ts +++ b/web/ce/helpers/issue-filter.helper.ts @@ -16,3 +16,18 @@ export const shouldRenderDisplayProperty = (props: TShouldRenderDisplayProperty) return true; } }; + +export type TShouldRenderColumn = { + key: keyof IIssueDisplayProperties; + isEstimateEnabled: boolean; +}; + +export const shouldRenderColumn = (props: TShouldRenderColumn): boolean => { + const { key, isEstimateEnabled } = props; + switch (key) { + case "estimate": + return isEstimateEnabled; + default: + return true; + } +}; diff --git a/web/ce/store/issue/helpers/base-issue.store.ts b/web/ce/store/issue/helpers/base-issue.store.ts new file mode 100644 index 00000000000..b75a4916a1e --- /dev/null +++ b/web/ce/store/issue/helpers/base-issue.store.ts @@ -0,0 +1,4 @@ +import { TIssue } from "@plane/types"; +import { getIssueIds } from "@/store/issue/helpers/base-issues-utils"; + +export const workItemSortWithOrderByExtended = (array: TIssue[], key?: string) => getIssueIds(array); diff --git a/web/core/components/issues/issue-detail/root.tsx b/web/core/components/issues/issue-detail/root.tsx index ec9aaf7b26f..16abbf5d15f 100644 --- a/web/core/components/issues/issue-detail/root.tsx +++ b/web/core/components/issues/issue-detail/root.tsx @@ -371,7 +371,7 @@ export const IssueDetailRoot: FC = observer((props) => { />
= observer((props) => { disabled={!isEditable} /> - {issue.type_id && ( - - )} +
diff --git a/web/core/components/issues/issue-layouts/spreadsheet/issue-column.tsx b/web/core/components/issues/issue-layouts/spreadsheet/issue-column.tsx index 43e65fa0265..62e918d85a8 100644 --- a/web/core/components/issues/issue-layouts/spreadsheet/issue-column.tsx +++ b/web/core/components/issues/issue-layouts/spreadsheet/issue-column.tsx @@ -7,6 +7,7 @@ import { IIssueDisplayProperties, TIssue } from "@plane/types"; import { useEventTracker } from "@/hooks/store"; // components import { SPREADSHEET_COLUMNS } from "@/plane-web/components/issues/issue-layouts/utils"; +import { shouldRenderColumn } from "@/plane-web/helpers/issue-filter.helper"; import { WithDisplayPropertiesHOC } from "../properties/with-display-properties-HOC"; // utils @@ -26,7 +27,7 @@ export const IssueColumn = observer((props: Props) => { const tableCellRef = useRef(null); const { captureIssueEvent } = useEventTracker(); - const shouldRenderProperty = property === "estimate" ? isEstimateEnabled : true; + const shouldRenderProperty = shouldRenderColumn({ key: property, isEstimateEnabled }); const Column = SPREADSHEET_COLUMNS[property]; diff --git a/web/core/components/issues/issue-layouts/spreadsheet/spreadsheet-header-column.tsx b/web/core/components/issues/issue-layouts/spreadsheet/spreadsheet-header-column.tsx index f75c4ddb31d..00b16906c30 100644 --- a/web/core/components/issues/issue-layouts/spreadsheet/spreadsheet-header-column.tsx +++ b/web/core/components/issues/issue-layouts/spreadsheet/spreadsheet-header-column.tsx @@ -3,6 +3,7 @@ import { useRef } from "react"; import { observer } from "mobx-react"; import { IIssueDisplayFilterOptions, IIssueDisplayProperties } from "@plane/types"; //components +import { shouldRenderColumn } from "@/plane-web/helpers/issue-filter.helper"; import { WithDisplayPropertiesHOC } from "../properties/with-display-properties-HOC"; import { HeaderColumn } from "./columns/header-column"; @@ -27,7 +28,7 @@ export const SpreadsheetHeaderColumn = observer((props: Props) => { //hooks const tableHeaderCellRef = useRef(null); - const shouldRenderProperty = property === "estimate" ? isEstimateEnabled : true; + const shouldRenderProperty = shouldRenderColumn({ key: property, isEstimateEnabled }); return ( = observer((pro disabled={disabled} /> - {issue.type_id && ( - - )} + ); diff --git a/web/core/store/issue/helpers/base-issues.store.ts b/web/core/store/issue/helpers/base-issues.store.ts index be120781dce..d8a7dfa185c 100644 --- a/web/core/store/issue/helpers/base-issues.store.ts +++ b/web/core/store/issue/helpers/base-issues.store.ts @@ -37,6 +37,7 @@ import { convertToISODateString } from "@/helpers/date-time.helper"; // local-db import { SPECIAL_ORDER_BY } from "@/local-db/utils/query-constructor"; import { updatePersistentLayer } from "@/local-db/utils/utils"; +import { workItemSortWithOrderByExtended } from "@/plane-web/store/issue/helpers/base-issue.store"; // services import { CycleService } from "@/services/cycle.service"; import { IssueArchiveService, IssueDraftService, IssueService } from "@/services/issue"; @@ -1991,7 +1992,7 @@ export abstract class BaseIssuesStore implements IBaseIssuesStore { ); default: - return getIssueIds(array); + return workItemSortWithOrderByExtended(array, key); } }; diff --git a/web/ee/components/issues/issue-details/additional-properties.tsx b/web/ee/components/issues/issue-details/additional-properties.tsx new file mode 100644 index 00000000000..5a15f5b3a61 --- /dev/null +++ b/web/ee/components/issues/issue-details/additional-properties.tsx @@ -0,0 +1 @@ +export * from "ce/components/issues/issue-details/additional-properties"; diff --git a/web/ee/store/issue/helpers/base-issue.store.ts b/web/ee/store/issue/helpers/base-issue.store.ts new file mode 100644 index 00000000000..ee0c73e56cb --- /dev/null +++ b/web/ee/store/issue/helpers/base-issue.store.ts @@ -0,0 +1 @@ +export * from "ce/store/issue/helpers/base-issue.store"; From 3023964f5c11f66d7da14ec6b5765f93d219cef5 Mon Sep 17 00:00:00 2001 From: Vamsi krishna Date: Tue, 11 Mar 2025 19:30:04 +0530 Subject: [PATCH 2/3] chore: update helper funciton implementation --- .../issues/issue-details/additional-properties.tsx | 8 ++++---- web/ce/helpers/issue-filter.helper.ts | 11 ++++------- web/core/components/issues/issue-detail/sidebar.tsx | 2 +- .../issues/issue-layouts/spreadsheet/issue-column.tsx | 4 ++-- .../spreadsheet/spreadsheet-header-column.tsx | 11 ++--------- .../components/issues/peek-overview/properties.tsx | 2 +- 6 files changed, 14 insertions(+), 24 deletions(-) diff --git a/web/ce/components/issues/issue-details/additional-properties.tsx b/web/ce/components/issues/issue-details/additional-properties.tsx index c46e125ce5e..f980c5d47a6 100644 --- a/web/ce/components/issues/issue-details/additional-properties.tsx +++ b/web/ce/components/issues/issue-details/additional-properties.tsx @@ -6,7 +6,7 @@ import { IssueAdditionalPropertyValuesUpdate } from "@/plane-web/components/issu export type TWorkItemAdditionalSidebarProperties = { workItemId: string; - workItemType: string | null; + workItemTypeId: string | null; projectId: string; workspaceSlug: string; isEditable: boolean; @@ -14,13 +14,13 @@ export type TWorkItemAdditionalSidebarProperties = { }; export const WorkItemAdditionalSidebarProperties: FC = observer((props) => { - const { workItemId, projectId, workItemType, workspaceSlug, isEditable } = props; + const { workItemId, projectId, workItemTypeId, workspaceSlug, isEditable } = props; return ( <> - {workItemType && ( + {workItemTypeId && ( { - const { key, isEstimateEnabled } = props; +export const shouldRenderColumn = (key: keyof IIssueDisplayProperties): boolean => { + const isEstimateEnabled: boolean = store.projectRoot.project.currentProjectDetails?.estimate !== null; switch (key) { case "estimate": return isEstimateEnabled; diff --git a/web/core/components/issues/issue-detail/sidebar.tsx b/web/core/components/issues/issue-detail/sidebar.tsx index 2dfbad78ced..d132b4e77ab 100644 --- a/web/core/components/issues/issue-detail/sidebar.tsx +++ b/web/core/components/issues/issue-detail/sidebar.tsx @@ -295,7 +295,7 @@ export const IssueDetailsSidebar: React.FC = observer((props) => { { - const { displayProperties, issueDetail, disableUserActions, property, updateIssue, isEstimateEnabled } = props; + const { displayProperties, issueDetail, disableUserActions, property, updateIssue } = props; // router const pathname = usePathname(); const tableCellRef = useRef(null); const { captureIssueEvent } = useEventTracker(); - const shouldRenderProperty = shouldRenderColumn({ key: property, isEstimateEnabled }); + const shouldRenderProperty = shouldRenderColumn(property); const Column = SPREADSHEET_COLUMNS[property]; diff --git a/web/core/components/issues/issue-layouts/spreadsheet/spreadsheet-header-column.tsx b/web/core/components/issues/issue-layouts/spreadsheet/spreadsheet-header-column.tsx index 00b16906c30..c6e57df6ce2 100644 --- a/web/core/components/issues/issue-layouts/spreadsheet/spreadsheet-header-column.tsx +++ b/web/core/components/issues/issue-layouts/spreadsheet/spreadsheet-header-column.tsx @@ -16,19 +16,12 @@ interface Props { isEpic?: boolean; } export const SpreadsheetHeaderColumn = observer((props: Props) => { - const { - displayProperties, - displayFilters, - property, - isEstimateEnabled, - handleDisplayFilterUpdate, - isEpic = false, - } = props; + const { displayProperties, displayFilters, property, handleDisplayFilterUpdate, isEpic = false } = props; //hooks const tableHeaderCellRef = useRef(null); - const shouldRenderProperty = shouldRenderColumn({ key: property, isEstimateEnabled }); + const shouldRenderProperty = shouldRenderColumn(property); return ( = observer((pro Date: Tue, 11 Mar 2025 20:11:08 +0530 Subject: [PATCH 3/3] chore: removed redundant components --- web/ce/components/issue-types/index.ts | 1 - web/ce/components/issue-types/values/index.ts | 1 - .../components/issue-types/values/update.tsx | 12 ----------- .../issue-details/additional-properties.tsx | 20 +------------------ web/ee/components/issue-types/index.ts | 1 - web/ee/components/issue-types/values/index.ts | 1 - .../components/issue-types/values/update.tsx | 1 - 7 files changed, 1 insertion(+), 36 deletions(-) delete mode 100644 web/ce/components/issue-types/index.ts delete mode 100644 web/ce/components/issue-types/values/index.ts delete mode 100644 web/ce/components/issue-types/values/update.tsx delete mode 100644 web/ee/components/issue-types/index.ts delete mode 100644 web/ee/components/issue-types/values/index.ts delete mode 100644 web/ee/components/issue-types/values/update.tsx diff --git a/web/ce/components/issue-types/index.ts b/web/ce/components/issue-types/index.ts deleted file mode 100644 index 11413e4c194..00000000000 --- a/web/ce/components/issue-types/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from "./values"; diff --git a/web/ce/components/issue-types/values/index.ts b/web/ce/components/issue-types/values/index.ts deleted file mode 100644 index 635be6440d2..00000000000 --- a/web/ce/components/issue-types/values/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from "./update"; diff --git a/web/ce/components/issue-types/values/update.tsx b/web/ce/components/issue-types/values/update.tsx deleted file mode 100644 index 2fd62904266..00000000000 --- a/web/ce/components/issue-types/values/update.tsx +++ /dev/null @@ -1,12 +0,0 @@ -import { TIssueServiceType } from "@plane/types"; - -export type TIssueAdditionalPropertyValuesUpdateProps = { - issueId: string; - issueTypeId: string; - projectId: string; - workspaceSlug: string; - isDisabled: boolean; - issueServiceType?: TIssueServiceType; -}; - -export const IssueAdditionalPropertyValuesUpdate: React.FC = () => <>; diff --git a/web/ce/components/issues/issue-details/additional-properties.tsx b/web/ce/components/issues/issue-details/additional-properties.tsx index f980c5d47a6..64b8caa97da 100644 --- a/web/ce/components/issues/issue-details/additional-properties.tsx +++ b/web/ce/components/issues/issue-details/additional-properties.tsx @@ -1,8 +1,5 @@ import React, { FC } from "react"; // plane imports -import { observer } from "mobx-react"; -// plane web imports -import { IssueAdditionalPropertyValuesUpdate } from "@/plane-web/components/issue-types"; export type TWorkItemAdditionalSidebarProperties = { workItemId: string; @@ -13,19 +10,4 @@ export type TWorkItemAdditionalSidebarProperties = { isPeekView?: boolean; }; -export const WorkItemAdditionalSidebarProperties: FC = observer((props) => { - const { workItemId, projectId, workItemTypeId, workspaceSlug, isEditable } = props; - return ( - <> - {workItemTypeId && ( - - )} - - ); -}); +export const WorkItemAdditionalSidebarProperties: FC = () => <>; diff --git a/web/ee/components/issue-types/index.ts b/web/ee/components/issue-types/index.ts deleted file mode 100644 index 11413e4c194..00000000000 --- a/web/ee/components/issue-types/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from "./values"; diff --git a/web/ee/components/issue-types/values/index.ts b/web/ee/components/issue-types/values/index.ts deleted file mode 100644 index 635be6440d2..00000000000 --- a/web/ee/components/issue-types/values/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from "./update"; diff --git a/web/ee/components/issue-types/values/update.tsx b/web/ee/components/issue-types/values/update.tsx deleted file mode 100644 index 0077ac339cc..00000000000 --- a/web/ee/components/issue-types/values/update.tsx +++ /dev/null @@ -1 +0,0 @@ -export * from "ce/components/issue-types/values/update";