@@ -119,7 +119,7 @@ function FiltersSection({filters, form, bodyshop}) {
|
|||||||
const type = filters.find(f => f.name === name)?.type;
|
const type = filters.find(f => f.name === name)?.type;
|
||||||
const reflector = filters.find(f => f.name === name)?.reflector;
|
const reflector = filters.find(f => f.name === name)?.reflector;
|
||||||
const operator = form.getFieldValue(['filters', field.name, "operator"]);
|
const operator = form.getFieldValue(['filters', field.name, "operator"]);
|
||||||
const operatorType = getWhereOperatorsByType(type).find((o) => o.value === operator)?.type;
|
const operatorType = operator ? getWhereOperatorsByType(type).find((o) => o.value === operator)?.type : null;
|
||||||
|
|
||||||
return <Form.Item
|
return <Form.Item
|
||||||
key={`${index}value`}
|
key={`${index}value`}
|
||||||
@@ -160,6 +160,7 @@ function FiltersSection({filters, form, bodyshop}) {
|
|||||||
if (operatorType === "array") {
|
if (operatorType === "array") {
|
||||||
return (
|
return (
|
||||||
<Select
|
<Select
|
||||||
|
disabled={!operator}
|
||||||
mode="multiple"
|
mode="multiple"
|
||||||
options={reflections}
|
options={reflections}
|
||||||
getPopupContainer={trigger => trigger.parentNode}
|
getPopupContainer={trigger => trigger.parentNode}
|
||||||
@@ -184,7 +185,8 @@ function FiltersSection({filters, form, bodyshop}) {
|
|||||||
if (type === "number") {
|
if (type === "number") {
|
||||||
return (
|
return (
|
||||||
<InputNumber
|
<InputNumber
|
||||||
onChange={(value) => form.setFieldValue(fieldPath, value)}/>
|
disabled={!operator}
|
||||||
|
onChange={(value) => form.setFieldValue(fieldPath, value)}/>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -192,6 +194,7 @@ function FiltersSection({filters, form, bodyshop}) {
|
|||||||
if (type === "date") {
|
if (type === "date") {
|
||||||
return (
|
return (
|
||||||
<FormDatePicker
|
<FormDatePicker
|
||||||
|
disabled={!operator}
|
||||||
onChange={(date) => form.setFieldValue(fieldPath, date)}
|
onChange={(date) => form.setFieldValue(fieldPath, date)}
|
||||||
/>
|
/>
|
||||||
);
|
);
|
||||||
@@ -201,14 +204,15 @@ function FiltersSection({filters, form, bodyshop}) {
|
|||||||
if (type === "boolean" || type === "bool") {
|
if (type === "boolean" || type === "bool") {
|
||||||
return (
|
return (
|
||||||
<Select
|
<Select
|
||||||
|
disabled={!operator}
|
||||||
getPopupContainer={trigger => trigger.parentNode}
|
getPopupContainer={trigger => trigger.parentNode}
|
||||||
options={[
|
options={[
|
||||||
{
|
{
|
||||||
label: "True",
|
label: t('reportcenter.labels.advanced_filters_true'),
|
||||||
value: true
|
value: true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: "False",
|
label: t('reportcenter.labels.advanced_filters_false'),
|
||||||
value: false
|
value: false
|
||||||
}
|
}
|
||||||
]}
|
]}
|
||||||
@@ -218,7 +222,8 @@ function FiltersSection({filters, form, bodyshop}) {
|
|||||||
}
|
}
|
||||||
return (
|
return (
|
||||||
<Input
|
<Input
|
||||||
onChange={(e) => form.setFieldValue(fieldPath, e.target.value)}/>
|
disabled={!operator}
|
||||||
|
onChange={(e) => form.setFieldValue(fieldPath, e.target.value)}/>
|
||||||
);
|
);
|
||||||
})()
|
})()
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -38,6 +38,14 @@ const generateOptionsFromObject = (bodyshop, path, labelPath, valuePath) => {
|
|||||||
})), 'value');
|
})), 'value');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const generateOptionsFromArray = (bodyshop, path) => {
|
||||||
|
const options = getValueFromPath(bodyshop, path);
|
||||||
|
return uniqBy(options.map((value) => ({
|
||||||
|
label: value,
|
||||||
|
value: value,
|
||||||
|
})), 'value');
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Generate special reflections
|
* Generate special reflections
|
||||||
* @param bodyshop
|
* @param bodyshop
|
||||||
@@ -46,15 +54,15 @@ const generateOptionsFromObject = (bodyshop, path, labelPath, valuePath) => {
|
|||||||
*/
|
*/
|
||||||
const generateSpecialReflections = (bodyshop, finalPath) => {
|
const generateSpecialReflections = (bodyshop, finalPath) => {
|
||||||
switch (finalPath) {
|
switch (finalPath) {
|
||||||
|
// Special case because Referral Sources is an Array, not an Object.
|
||||||
|
case 'referral_source':
|
||||||
|
return generateOptionsFromArray(bodyshop, 'md_referral_sources');
|
||||||
|
case 'class':
|
||||||
|
return generateOptionsFromArray(bodyshop, 'md_classes');
|
||||||
case 'cost_centers':
|
case 'cost_centers':
|
||||||
return generateOptionsFromObject(bodyshop, 'md_responsibility_centers.costs', 'name', 'name');
|
return generateOptionsFromObject(bodyshop, 'md_responsibility_centers.costs', 'name', 'name');
|
||||||
// Special case because Categories is an Array, not an Object.
|
|
||||||
case 'categories':
|
case 'categories':
|
||||||
const catOptions = getValueFromPath(bodyshop, 'md_categories');
|
return generateOptionsFromArray(bodyshop, 'md_categories');
|
||||||
return uniqBy(catOptions.map((value) => ({
|
|
||||||
label: value,
|
|
||||||
value: value,
|
|
||||||
})), 'value');
|
|
||||||
case 'insurance_companies':
|
case 'insurance_companies':
|
||||||
return generateOptionsFromObject(bodyshop, 'md_ins_cos', 'name', 'name');
|
return generateOptionsFromObject(bodyshop, 'md_ins_cos', 'name', 'name');
|
||||||
case 'employee_teams':
|
case 'employee_teams':
|
||||||
@@ -118,4 +126,4 @@ const generateInternalReflections = ({bodyshop, upperPath, finalPath}) => {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
export {generateInternalReflections,}
|
export {generateInternalReflections,}
|
||||||
|
|||||||
@@ -2708,7 +2708,9 @@
|
|||||||
"advanced_filters_filters": "Filters",
|
"advanced_filters_filters": "Filters",
|
||||||
"advanced_filters_hide": "Hide",
|
"advanced_filters_hide": "Hide",
|
||||||
"advanced_filters_show": "Show",
|
"advanced_filters_show": "Show",
|
||||||
"advanced_filters_sorter_direction": "Direction",
|
"advanced_filters_true": "True",
|
||||||
|
"advanced_filters_false": "False",
|
||||||
|
"advanced_filters_sorter_direction": "Direction",
|
||||||
"advanced_filters_sorter_field": "Field",
|
"advanced_filters_sorter_field": "Field",
|
||||||
"advanced_filters_sorters": "Sorters",
|
"advanced_filters_sorters": "Sorters",
|
||||||
"dates": "Dates",
|
"dates": "Dates",
|
||||||
|
|||||||
@@ -2708,6 +2708,8 @@
|
|||||||
"advanced_filters_filters": "",
|
"advanced_filters_filters": "",
|
||||||
"advanced_filters_hide": "",
|
"advanced_filters_hide": "",
|
||||||
"advanced_filters_show": "",
|
"advanced_filters_show": "",
|
||||||
|
"advanced_filters_true": "",
|
||||||
|
"advanced_filters_false": "",
|
||||||
"advanced_filters_sorter_direction": "",
|
"advanced_filters_sorter_direction": "",
|
||||||
"advanced_filters_sorter_field": "",
|
"advanced_filters_sorter_field": "",
|
||||||
"advanced_filters_sorters": "",
|
"advanced_filters_sorters": "",
|
||||||
|
|||||||
@@ -2708,6 +2708,8 @@
|
|||||||
"advanced_filters_filters": "",
|
"advanced_filters_filters": "",
|
||||||
"advanced_filters_hide": "",
|
"advanced_filters_hide": "",
|
||||||
"advanced_filters_show": "",
|
"advanced_filters_show": "",
|
||||||
|
"advanced_filters_true": "",
|
||||||
|
"advanced_filters_false": "",
|
||||||
"advanced_filters_sorter_direction": "",
|
"advanced_filters_sorter_direction": "",
|
||||||
"advanced_filters_sorter_field": "",
|
"advanced_filters_sorter_field": "",
|
||||||
"advanced_filters_sorters": "",
|
"advanced_filters_sorters": "",
|
||||||
|
|||||||
@@ -19,6 +19,30 @@ const STRING_OPERATORS = [
|
|||||||
{value: "_nin", label: "not in", type: "array"}
|
{value: "_nin", label: "not in", type: "array"}
|
||||||
];
|
];
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The available operators for filtering (dates)
|
||||||
|
* @type {[{label: string, value: string},{label: string, value: string},{label: string, value: string},{label: string, value: string},{label: string, value: string},null,null,null]}
|
||||||
|
*/
|
||||||
|
const DATE_OPERATORS = [
|
||||||
|
{value: "_eq", label: "equals"},
|
||||||
|
{value: "_neq", label: "does not equal"},
|
||||||
|
{value: "_gt", label: "greater than"},
|
||||||
|
{value: "_lt", label: "less than"},
|
||||||
|
{value: "_gte", label: "greater than or equal"},
|
||||||
|
{value: "_lte", label: "less than or equal"},
|
||||||
|
{value: "_in", label: "in", type: "array"},
|
||||||
|
{value: "_nin", label: "not in", type: "array"}
|
||||||
|
];
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The available operators for filtering (booleans)
|
||||||
|
* @type {[{label: string, value: string},{label: string, value: string}]}
|
||||||
|
*/
|
||||||
|
const BOOLEAN_OPERATORS = [
|
||||||
|
{value: "_eq", label: "equals"},
|
||||||
|
{value: "_neq", label: "does not equal"},
|
||||||
|
];
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The available operators for filtering (numbers)
|
* The available operators for filtering (numbers)
|
||||||
* @type {[{label: string, value: string},{label: string, value: string},{label: string, value: string},{label: string, value: string},{label: string, value: string},null,null,null]}
|
* @type {[{label: string, value: string},{label: string, value: string},{label: string, value: string},{label: string, value: string},{label: string, value: string},null,null,null]}
|
||||||
@@ -58,8 +82,11 @@ export function getOrderOperatorsByType() {
|
|||||||
*/
|
*/
|
||||||
export function getWhereOperatorsByType(type = 'string') {
|
export function getWhereOperatorsByType(type = 'string') {
|
||||||
const operators = {
|
const operators = {
|
||||||
string: STRING_OPERATORS,
|
string: STRING_OPERATORS,
|
||||||
number: NUMBER_OPERATORS
|
number: NUMBER_OPERATORS,
|
||||||
|
boolean: BOOLEAN_OPERATORS,
|
||||||
|
bool: BOOLEAN_OPERATORS,
|
||||||
|
date: DATE_OPERATORS
|
||||||
};
|
};
|
||||||
return operators[type];
|
return operators[type];
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user