import React from "react"; import { useRouter } from "next/router"; import { observer } from "mobx-react-lite"; // hooks import { useMobxStore } from "lib/mobx/store-provider"; import useProjectDetails from "hooks/use-project-details"; // components import { IssueGanttBlock } from "components/issues"; import { GanttChartRoot, IBlockUpdateData, renderIssueBlocksStructure, IssueGanttSidebar, } from "components/gantt-chart"; // types import { IIssueUnGroupedStructure } from "store/issue"; import { IIssue } from "types"; import { ICycleIssuesFilterStore, ICycleIssuesStore, IModuleIssuesFilterStore, IModuleIssuesStore, IProjectIssuesFilterStore, IProjectIssuesStore, IViewIssuesFilterStore, IViewIssuesStore, } from "store/issues"; import { EUserWorkspaceRoles } from "layouts/settings-layout/workspace/sidebar"; import { TUnGroupedIssues } from "store/issues/types"; interface IBaseGanttRoot { issueFiltersStore: | IProjectIssuesFilterStore | IModuleIssuesFilterStore | ICycleIssuesFilterStore | IViewIssuesFilterStore; issueStore: IProjectIssuesStore | IModuleIssuesStore | ICycleIssuesStore | IViewIssuesStore; viewId?: string; } export const BaseGanttRoot: React.FC = observer((props: IBaseGanttRoot) => { const { issueFiltersStore, issueStore, viewId } = props; const router = useRouter(); const { workspaceSlug } = router.query as { workspaceSlug: string; projectId: string }; const { projectDetails } = useProjectDetails(); const appliedDisplayFilters = issueFiltersStore.issueFilters?.displayFilters; const issuesResponse = issueStore.getIssues; const issueIds = (issueStore.getIssuesIds ?? []) as TUnGroupedIssues; const issues = issueIds.map((id) => issuesResponse?.[id]); const updateIssue = (issue: IIssue, payload: IBlockUpdateData) => { if (!workspaceSlug) return; //Todo fix sort order in the structure issueStore.updateIssue( workspaceSlug, issue.project, issue.id, { start_date: payload.start_date, target_date: payload.target_date, }, viewId ); }; const isAllowed = (projectDetails?.member_role || 0) >= EUserWorkspaceRoles.MEMBER; return ( <>
} sidebarToRender={(props) => ( )} enableBlockLeftResize={isAllowed} enableBlockRightResize={isAllowed} enableBlockMove={isAllowed} enableReorder={appliedDisplayFilters?.order_by === "sort_order" && isAllowed} />
); });