- Progress Commit

Signed-off-by: Dave Richer <dave@imexsystems.ca>
This commit is contained in:
Dave Richer
2024-02-28 18:51:13 -05:00
parent 32bba8060a
commit 58b11fde76
6 changed files with 61 additions and 15 deletions

View File

@@ -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)}/>
); );
})() })()
} }

View File

@@ -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,}

View File

@@ -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",

View File

@@ -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": "",

View File

@@ -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": "",

View File

@@ -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];
} }