forked from github/plane
53 lines
1.3 KiB
TypeScript
53 lines
1.3 KiB
TypeScript
import { TIssueBoardKeys } from "types/issue";
|
|
import { IIssueFilterOptions, TIssueParams } from "./types";
|
|
|
|
export const isNil = (value: any) => {
|
|
if (value === undefined || value === null) return true;
|
|
|
|
return false;
|
|
};
|
|
|
|
export interface ILayoutDisplayFiltersOptions {
|
|
filters: (keyof IIssueFilterOptions)[];
|
|
display_properties: boolean | null;
|
|
display_filters: null;
|
|
extra_options: null;
|
|
}
|
|
|
|
export const ISSUE_DISPLAY_FILTERS_BY_LAYOUT: {
|
|
[pageType: string]: { [layoutType: string]: ILayoutDisplayFiltersOptions };
|
|
} = {
|
|
issues: {
|
|
list: {
|
|
filters: ["priority", "state", "labels"],
|
|
display_properties: null,
|
|
display_filters: null,
|
|
extra_options: null,
|
|
},
|
|
kanban: {
|
|
filters: ["priority", "state", "labels"],
|
|
display_properties: null,
|
|
display_filters: null,
|
|
extra_options: null,
|
|
},
|
|
},
|
|
};
|
|
|
|
export const handleIssueQueryParamsByLayout = (
|
|
layout: TIssueBoardKeys | undefined,
|
|
viewType: "issues"
|
|
): TIssueParams[] | null => {
|
|
const queryParams: TIssueParams[] = [];
|
|
|
|
if (!layout) return null;
|
|
|
|
const layoutOptions = ISSUE_DISPLAY_FILTERS_BY_LAYOUT[viewType][layout];
|
|
|
|
// add filters query params
|
|
layoutOptions.filters.forEach((option) => {
|
|
queryParams.push(option);
|
|
});
|
|
|
|
return queryParams;
|
|
};
|