base
This commit is contained in:
@@ -0,0 +1,8 @@
|
||||
/**
|
||||
* Copyright (c) 2023-present Plane Software, Inc. and contributors
|
||||
* SPDX-License-Identifier: AGPL-3.0-only
|
||||
* See the LICENSE file for details.
|
||||
*/
|
||||
|
||||
export * from "./rich-filter.helper";
|
||||
export * from "./work-item-filters.helper";
|
||||
@@ -0,0 +1,48 @@
|
||||
/**
|
||||
* Copyright (c) 2023-present Plane Software, Inc. and contributors
|
||||
* SPDX-License-Identifier: AGPL-3.0-only
|
||||
* See the LICENSE file for details.
|
||||
*/
|
||||
|
||||
// plane imports
|
||||
import type { TBuildFilterExpressionParams, TExternalFilter, TFilterProperty, TFilterValue } from "@plane/types";
|
||||
import { LOGICAL_OPERATOR } from "@plane/types";
|
||||
import { getOperatorForPayload } from "@plane/utils";
|
||||
// local imports
|
||||
import { FilterInstance } from "../store/rich-filters/filter";
|
||||
|
||||
/**
|
||||
* Builds a temporary filter expression from conditions.
|
||||
* @param params.conditions - The conditions for building the filter expression.
|
||||
* @param params.adapter - The adapter for building the filter expression.
|
||||
* @returns The temporary filter expression.
|
||||
*/
|
||||
export const buildTempFilterExpressionFromConditions = <
|
||||
P extends TFilterProperty,
|
||||
V extends TFilterValue,
|
||||
E extends TExternalFilter,
|
||||
>(
|
||||
params: TBuildFilterExpressionParams<P, V, E>
|
||||
): E | undefined => {
|
||||
const { conditions, adapter } = params;
|
||||
let tempExpression: E | undefined = undefined;
|
||||
const tempFilterInstance = new FilterInstance<P, E>({
|
||||
adapter,
|
||||
onExpressionChange: (expression) => {
|
||||
tempExpression = expression;
|
||||
},
|
||||
});
|
||||
for (const condition of conditions) {
|
||||
const { operator, isNegation } = getOperatorForPayload(condition.operator);
|
||||
tempFilterInstance.addCondition(
|
||||
LOGICAL_OPERATOR.AND,
|
||||
{
|
||||
property: condition.property,
|
||||
operator,
|
||||
value: condition.value,
|
||||
},
|
||||
isNegation
|
||||
);
|
||||
}
|
||||
return tempExpression;
|
||||
};
|
||||
@@ -0,0 +1,38 @@
|
||||
/**
|
||||
* Copyright (c) 2023-present Plane Software, Inc. and contributors
|
||||
* SPDX-License-Identifier: AGPL-3.0-only
|
||||
* See the LICENSE file for details.
|
||||
*/
|
||||
|
||||
// plane imports
|
||||
import type {
|
||||
TBuildFilterExpressionParams,
|
||||
TFilterConditionForBuild,
|
||||
TFilterValue,
|
||||
TWorkItemFilterExpression,
|
||||
TWorkItemFilterProperty,
|
||||
} from "@plane/types";
|
||||
// local imports
|
||||
import { workItemFiltersAdapter } from "../store/work-item-filters/adapter";
|
||||
import { buildTempFilterExpressionFromConditions } from "./rich-filter.helper";
|
||||
|
||||
export type TWorkItemFilterCondition = TFilterConditionForBuild<TWorkItemFilterProperty, TFilterValue>;
|
||||
|
||||
/**
|
||||
* Builds a work item filter expression from conditions.
|
||||
* @param params.conditions - The conditions for building the filter expression.
|
||||
* @returns The work item filter expression.
|
||||
*/
|
||||
export const buildWorkItemFilterExpressionFromConditions = (
|
||||
params: Omit<
|
||||
TBuildFilterExpressionParams<TWorkItemFilterProperty, TFilterValue, TWorkItemFilterExpression>,
|
||||
"adapter"
|
||||
>
|
||||
): TWorkItemFilterExpression | undefined => {
|
||||
const workItemFilterExpression = buildTempFilterExpressionFromConditions({
|
||||
...params,
|
||||
adapter: workItemFiltersAdapter,
|
||||
});
|
||||
if (!workItemFilterExpression) console.error("Failed to build work item filter expression from conditions");
|
||||
return workItemFilterExpression;
|
||||
};
|
||||
Reference in New Issue
Block a user