Some checks failed
CodeQL / Analyze (javascript) (push) Failing after 16s
CodeQL / Analyze (python) (push) Failing after 3s
i18n sync check / check:sync (push) Failing after 3s
React Doctor / react-doctor (push) Failing after 16s
Branch Build CE / Build-Push Admin Docker Image (${{ matrix.arch }}) (push) Has been cancelled
Branch Build CE / Merge Admin Manifest (push) Has been cancelled
Branch Build CE / Build-Push Web Docker Image (${{ matrix.arch }}) (push) Has been cancelled
Branch Build CE / Merge Web Manifest (push) Has been cancelled
Branch Build CE / Build-Push Space Docker Image (${{ matrix.arch }}) (push) Has been cancelled
Branch Build CE / Merge Proxy Manifest (push) Has been cancelled
Branch Build CE / Merge Space Manifest (push) Has been cancelled
Branch Build CE / Prepare AIO Assets (push) Has been cancelled
Branch Build CE / Build Setup (push) Has been cancelled
Branch Build CE / Build-Push Live Collaboration Docker Image (${{ matrix.arch }}) (push) Has been cancelled
Branch Build CE / Merge Live Collaboration Manifest (push) Has been cancelled
Branch Build CE / Build-Push API Server Docker Image (${{ matrix.arch }}) (push) Has been cancelled
Branch Build CE / Merge API Server Manifest (push) Has been cancelled
Branch Build CE / Build-Push Proxy Docker Image (${{ matrix.arch }}) (push) Has been cancelled
Branch Build CE / Build-Push AIO Docker Image (${{ matrix.arch }}) (push) Has been cancelled
Branch Build CE / Merge AIO Manifest (push) Has been cancelled
Branch Build CE / Upload Build Assets (push) Has been cancelled
Branch Build CE / Build Release (push) Has been cancelled
100 lines
3.0 KiB
TypeScript
100 lines
3.0 KiB
TypeScript
/**
|
|
* Copyright (c) 2023-present Plane Software, Inc. and contributors
|
|
* SPDX-License-Identifier: AGPL-3.0-only
|
|
* See the LICENSE file for details.
|
|
*/
|
|
|
|
import { useEffect } from "react";
|
|
import { observer } from "mobx-react";
|
|
// components
|
|
import type { IBlockUpdateData, IBlockUpdateDependencyData } from "@plane/types";
|
|
// hooks
|
|
import { useTimeLineChartStore } from "@/hooks/use-timeline-chart";
|
|
import { ChartViewRoot } from "./chart/root";
|
|
|
|
type GanttChartRootProps = {
|
|
border?: boolean;
|
|
title: string;
|
|
loaderTitle: string;
|
|
blockIds: string[];
|
|
blockUpdateHandler: (block: any, payload: IBlockUpdateData) => void;
|
|
blockToRender: (data: any) => React.ReactNode;
|
|
sidebarToRender: (props: any) => React.ReactNode;
|
|
quickAdd?: React.ReactNode | undefined;
|
|
canLoadMoreBlocks?: boolean;
|
|
loadMoreBlocks?: () => void;
|
|
updateBlockDates?: (updates: IBlockUpdateDependencyData[]) => Promise<void>;
|
|
enableBlockLeftResize?: boolean | ((blockId: string) => boolean);
|
|
enableBlockRightResize?: boolean | ((blockId: string) => boolean);
|
|
enableBlockMove?: boolean | ((blockId: string) => boolean);
|
|
enableReorder?: boolean | ((blockId: string) => boolean);
|
|
enableAddBlock?: boolean | ((blockId: string) => boolean);
|
|
enableSelection?: boolean | ((blockId: string) => boolean);
|
|
enableDependency?: boolean | ((blockId: string) => boolean);
|
|
bottomSpacing?: boolean;
|
|
showAllBlocks?: boolean;
|
|
showToday?: boolean;
|
|
isEpic?: boolean;
|
|
};
|
|
|
|
export const GanttChartRoot = observer(function GanttChartRoot(props: GanttChartRootProps) {
|
|
const {
|
|
border = true,
|
|
title,
|
|
blockIds,
|
|
loaderTitle = "blocks",
|
|
blockUpdateHandler,
|
|
sidebarToRender,
|
|
blockToRender,
|
|
loadMoreBlocks,
|
|
canLoadMoreBlocks,
|
|
enableBlockLeftResize = false,
|
|
enableBlockRightResize = false,
|
|
enableBlockMove = false,
|
|
enableReorder = false,
|
|
enableAddBlock = false,
|
|
enableSelection = false,
|
|
enableDependency = false,
|
|
bottomSpacing = false,
|
|
showAllBlocks = false,
|
|
showToday = true,
|
|
quickAdd,
|
|
updateBlockDates,
|
|
isEpic = false,
|
|
} = props;
|
|
|
|
const { setBlockIds } = useTimeLineChartStore();
|
|
|
|
// update the timeline store with updated blockIds
|
|
useEffect(() => {
|
|
setBlockIds(blockIds);
|
|
}, [blockIds]);
|
|
|
|
return (
|
|
<ChartViewRoot
|
|
border={border}
|
|
title={title}
|
|
blockIds={blockIds}
|
|
loadMoreBlocks={loadMoreBlocks}
|
|
canLoadMoreBlocks={canLoadMoreBlocks}
|
|
loaderTitle={loaderTitle}
|
|
blockUpdateHandler={blockUpdateHandler}
|
|
sidebarToRender={sidebarToRender}
|
|
blockToRender={blockToRender}
|
|
enableBlockLeftResize={enableBlockLeftResize}
|
|
enableBlockRightResize={enableBlockRightResize}
|
|
enableBlockMove={enableBlockMove}
|
|
enableReorder={enableReorder}
|
|
enableAddBlock={enableAddBlock}
|
|
enableSelection={enableSelection}
|
|
enableDependency={enableDependency}
|
|
bottomSpacing={bottomSpacing}
|
|
showAllBlocks={showAllBlocks}
|
|
quickAdd={quickAdd}
|
|
showToday={showToday}
|
|
updateBlockDates={updateBlockDates}
|
|
isEpic={isEpic}
|
|
/>
|
|
);
|
|
});
|