Some checks failed
Branch Build CE / Build Setup (push) Has been cancelled
Branch Build CE / Build-Push Admin Docker Image (push) Has been cancelled
Branch Build CE / Build-Push Web Docker Image (push) Has been cancelled
Branch Build CE / Build-Push Space Docker Image (push) Has been cancelled
Branch Build CE / Build-Push Live Collaboration Docker Image (push) Has been cancelled
Branch Build CE / Build-Push API Server Docker Image (push) Has been cancelled
Branch Build CE / Build-Push Proxy Docker Image (push) Has been cancelled
Branch Build CE / Build-Push AIO Docker Image (push) Has been cancelled
Branch Build CE / Upload Build Assets (push) Has been cancelled
Branch Build CE / Build Release (push) Has been cancelled
CodeQL / Analyze (javascript) (push) Has been cancelled
CodeQL / Analyze (python) (push) Has been cancelled
Codespell / Check for spelling errors (push) Has been cancelled
Sync Repositories / sync_changes (push) Has been cancelled
Synced from upstream: 8853637e981ed7d8a6cff32bd98e7afe20f54362
116 lines
3.5 KiB
TypeScript
116 lines
3.5 KiB
TypeScript
import type { FC } from "react";
|
|
import { CalendarDays, LayersIcon, Link2, Paperclip } from "lucide-react";
|
|
// types
|
|
import { ISSUE_GROUP_BY_OPTIONS } from "@plane/constants";
|
|
import type { ISvgIcons } from "@plane/propel/icons";
|
|
import {
|
|
CycleIcon,
|
|
StatePropertyIcon,
|
|
ModuleIcon,
|
|
MembersPropertyIcon,
|
|
DueDatePropertyIcon,
|
|
EstimatePropertyIcon,
|
|
LabelPropertyIcon,
|
|
PriorityPropertyIcon,
|
|
StartDatePropertyIcon,
|
|
} from "@plane/propel/icons";
|
|
import type {
|
|
IGroupByColumn,
|
|
IIssueDisplayProperties,
|
|
TGetColumns,
|
|
TIssueGroupByOptions,
|
|
TSpreadsheetColumn,
|
|
} from "@plane/types";
|
|
// components
|
|
import {
|
|
SpreadsheetAssigneeColumn,
|
|
SpreadsheetAttachmentColumn,
|
|
SpreadsheetCreatedOnColumn,
|
|
SpreadsheetDueDateColumn,
|
|
SpreadsheetEstimateColumn,
|
|
SpreadsheetLabelColumn,
|
|
SpreadsheetModuleColumn,
|
|
SpreadsheetCycleColumn,
|
|
SpreadsheetLinkColumn,
|
|
SpreadsheetPriorityColumn,
|
|
SpreadsheetStartDateColumn,
|
|
SpreadsheetStateColumn,
|
|
SpreadsheetSubIssueColumn,
|
|
SpreadsheetUpdatedOnColumn,
|
|
} from "@/components/issues/issue-layouts/spreadsheet/columns";
|
|
// store
|
|
import { store } from "@/lib/store-context";
|
|
|
|
export type TGetScopeMemberIdsResult = {
|
|
memberIds: string[];
|
|
includeNone: boolean;
|
|
};
|
|
|
|
export const getScopeMemberIds = ({ isWorkspaceLevel, projectId }: TGetColumns): TGetScopeMemberIdsResult => {
|
|
// store values
|
|
const { workspaceMemberIds } = store.memberRoot.workspace;
|
|
const { projectMemberIds } = store.memberRoot.project;
|
|
// derived values
|
|
const memberIds = workspaceMemberIds;
|
|
|
|
if (isWorkspaceLevel) {
|
|
return { memberIds: memberIds ?? [], includeNone: true };
|
|
}
|
|
|
|
if (projectId || (projectMemberIds && projectMemberIds.length > 0)) {
|
|
const { getProjectMemberIds } = store.memberRoot.project;
|
|
const _projectMemberIds = projectId ? getProjectMemberIds(projectId, false) : projectMemberIds;
|
|
return {
|
|
memberIds: _projectMemberIds ?? [],
|
|
includeNone: true,
|
|
};
|
|
}
|
|
|
|
return { memberIds: [], includeNone: true };
|
|
};
|
|
|
|
export const getTeamProjectColumns = (): IGroupByColumn[] | undefined => undefined;
|
|
|
|
export const SpreadSheetPropertyIconMap: Record<string, FC<ISvgIcons>> = {
|
|
MembersPropertyIcon: MembersPropertyIcon,
|
|
CalenderDays: CalendarDays,
|
|
DueDatePropertyIcon: DueDatePropertyIcon,
|
|
EstimatePropertyIcon: EstimatePropertyIcon,
|
|
LabelPropertyIcon: LabelPropertyIcon,
|
|
ModuleIcon: ModuleIcon,
|
|
ContrastIcon: CycleIcon,
|
|
PriorityPropertyIcon: PriorityPropertyIcon,
|
|
StartDatePropertyIcon: StartDatePropertyIcon,
|
|
StatePropertyIcon: StatePropertyIcon,
|
|
Link2: Link2,
|
|
Paperclip: Paperclip,
|
|
LayersIcon: LayersIcon,
|
|
};
|
|
|
|
export const SPREADSHEET_COLUMNS: { [key in keyof IIssueDisplayProperties]: TSpreadsheetColumn } = {
|
|
assignee: SpreadsheetAssigneeColumn,
|
|
created_on: SpreadsheetCreatedOnColumn,
|
|
due_date: SpreadsheetDueDateColumn,
|
|
estimate: SpreadsheetEstimateColumn,
|
|
labels: SpreadsheetLabelColumn,
|
|
modules: SpreadsheetModuleColumn,
|
|
cycle: SpreadsheetCycleColumn,
|
|
link: SpreadsheetLinkColumn,
|
|
priority: SpreadsheetPriorityColumn,
|
|
start_date: SpreadsheetStartDateColumn,
|
|
state: SpreadsheetStateColumn,
|
|
sub_issue_count: SpreadsheetSubIssueColumn,
|
|
updated_on: SpreadsheetUpdatedOnColumn,
|
|
attachment_count: SpreadsheetAttachmentColumn,
|
|
};
|
|
|
|
export const useGroupByOptions = (
|
|
options: TIssueGroupByOptions[]
|
|
): {
|
|
key: TIssueGroupByOptions;
|
|
titleTranslationKey: string;
|
|
}[] => {
|
|
const groupByOptions = ISSUE_GROUP_BY_OPTIONS.filter((option) => options.includes(option.key));
|
|
return groupByOptions;
|
|
};
|