mirror of
https://github.com/makeplane/plane
synced 2024-06-14 14:31:34 +00:00
8ee5ba96ce
* chore: workspace active cycles
* fix: active cycles tab implementation
* chore: added distribution graph for active cycles
* chore: removed distribution graph and issues
* Revert "chore: removed issues"
This reverts commit 7d977ac8b0
.
* chore: workspace active cycles implementation
* chore: code refactor
---------
Co-authored-by: NarayanBavisetti <narayan3119@gmail.com>
Co-authored-by: sriram veeraghanta <veeraghanta.sriram@gmail.com>
58 lines
2.3 KiB
TypeScript
58 lines
2.3 KiB
TypeScript
import { observer } from "mobx-react-lite";
|
|
import { useRouter } from "next/router";
|
|
import useSWR from "swr";
|
|
// components
|
|
import { ActiveCycleInfo } from "components/cycles";
|
|
// services
|
|
import { CycleService } from "services/cycle.service";
|
|
const cycleService = new CycleService();
|
|
// hooks
|
|
import { useWorkspace } from "hooks/store";
|
|
// helpers
|
|
import { renderEmoji } from "helpers/emoji.helper";
|
|
|
|
export const WorkspaceActiveCyclesList = observer(() => {
|
|
// router
|
|
const router = useRouter();
|
|
const { workspaceSlug } = router.query;
|
|
// fetching active cycles in workspace
|
|
const { data } = useSWR("WORKSPACE_ACTIVE_CYCLES", () => cycleService.workspaceActiveCycles(workspaceSlug as string));
|
|
// store
|
|
const { workspaceActiveCyclesSearchQuery } = useWorkspace();
|
|
// filter cycles based on search query
|
|
const filteredCycles = data?.filter(
|
|
(cycle) =>
|
|
cycle.project_detail.name.toLowerCase().includes(workspaceActiveCyclesSearchQuery.toLowerCase()) ||
|
|
cycle.project_detail.identifier?.toLowerCase().includes(workspaceActiveCyclesSearchQuery.toLowerCase()) ||
|
|
cycle.name.toLowerCase().includes(workspaceActiveCyclesSearchQuery.toLowerCase())
|
|
);
|
|
|
|
return (
|
|
<div>
|
|
{workspaceSlug &&
|
|
filteredCycles &&
|
|
filteredCycles.map((cycle) => (
|
|
<div key={cycle.id} className="px-5 py-7">
|
|
<div className="flex items-center gap-1.5 px-3 py-1.5">
|
|
{cycle.project_detail.emoji ? (
|
|
<span className="grid h-7 w-7 flex-shrink-0 place-items-center rounded uppercase">
|
|
{renderEmoji(cycle.project_detail.emoji)}
|
|
</span>
|
|
) : cycle.project_detail.icon_prop ? (
|
|
<div className="grid h-7 w-7 flex-shrink-0 place-items-center">
|
|
{renderEmoji(cycle.project_detail.icon_prop)}
|
|
</div>
|
|
) : (
|
|
<span className="grid h-7 w-7 flex-shrink-0 place-items-center rounded bg-gray-700 uppercase text-white">
|
|
{cycle.project_detail?.name.charAt(0)}
|
|
</span>
|
|
)}
|
|
<h2 className="text-xl font-semibold">{cycle.project_detail.name}</h2>
|
|
</div>
|
|
<ActiveCycleInfo workspaceSlug={workspaceSlug?.toString()} projectId={cycle.project} cycle={cycle} />
|
|
</div>
|
|
))}
|
|
</div>
|
|
);
|
|
});
|