- Progress update

Signed-off-by: Dave Richer <dave@imexsystems.ca>
This commit is contained in:
Dave Richer
2024-02-13 19:23:08 -05:00
parent aa6c95daaa
commit afdcff62ea
3 changed files with 84 additions and 80 deletions

View File

@@ -1,8 +1,9 @@
import {Button, Col, Form, Input, Row, Select} from "antd";
import {Button, Col, Form, Input, InputNumber, Row, Select} from "antd";
import React, {useEffect, useState} from "react";
import {fetchFilterData} from "../../utils/RenderTemplate";
import {DeleteFilled} from "@ant-design/icons";
import {useTranslation} from "react-i18next";
import {getOperatorsByType} from "../../utils/graphQLmodifier";
export default function ReportCenterModalFiltersSortersComponent({form}) {
return (
@@ -15,7 +16,7 @@ export default function ReportCenterModalFiltersSortersComponent({form}) {
);
}
function RenderFilters({templateId}) {
function RenderFilters({templateId, form}) {
const [state, setState] = useState(null);
console.log("state", state);
@@ -36,6 +37,7 @@ function RenderFilters({templateId}) {
}
}, [templateId]);
if (!templateId || !state) return null;
return (
<div>
@@ -63,8 +65,6 @@ function RenderFilters({templateId}) {
options={
state.filters
? state.filters.map((f) => {
console.log('filter added');
console.dir(f);
return {
value: f.name,
label: f?.translation ? t(f.translation) : f.label,
@@ -76,59 +76,67 @@ function RenderFilters({templateId}) {
</Form.Item>
</Col>
<Col span={6}>
<Form.Item dependencies={[['filters', field.name, "field"]]}>
{
() => {
console.log('Dependencies fired')
return <Form.Item
key={`${index}operator`}
label="operator"
name={[field.name, "operator"]}
dependencies={[]}
rules={[
{
required: true,
//message: t("general.validation.required"),
},
]}
>
<Select
options={[
{value: "_eq", label: "Equals"},
{value: "_ne", label: "Not Equals"},
{value: "_gt", label: "Greater Than"},
{value: "_lt", label: "Less Than"},
{value: "_gte", label: "Greater Than or Equal To"},
{value: "_lte", label: "Less Than or Equal To"},
{value: "_in", label: "In"},
{value: "_nin", label: "Not In"},
{value: "_contains", label: "Contains"},
{value: "_ncontains", label: "Does Not Contain"},
]}
/>
<Form.Item dependencies={[['filters', field.name, "field"]]}>
{
() => {
const name = form.getFieldValue(['filters', field.name, "field"]);
const type = state.filters.find(f => f.name === name)?.type;
return <Form.Item
key={`${index}operator`}
label="operator"
name={[field.name, "operator"]}
dependencies={[]}
rules={[
{
required: true,
//message: t("general.validation.required"),
},
]}
>
<Select options={getOperatorsByType(type)}/>
</Form.Item>
}
}
</Form.Item>
}
}
</Form.Item>
</Col>
<Col span={6}>
<Form.Item
key={`${index}value`}
label="value"
name={[field.name, "value"]}
rules={[
{
required: true,
//message: t("general.validation.required"),
},
]}
>
<Input/>
<Form.Item dependencies={[['filters', field.name, "field"]]}>
{
() => {
const name = form.getFieldValue(['filters', field.name, "field"]);
const type = state.filters.find(f => f.name === name)?.type;
return <Form.Item
key={`${index}value`}
label="value"
name={[field.name, "value"]}
rules={[
{
required: true,
//message: t("general.validation.required"),
},
]}
>
{type === 'number' ?
<InputNumber
onChange={(value) => {
form.setFieldsValue({[field.name]: {value: parseInt(value)}});
}}
/>
:
<Input
onChange={(value) => {
form.setFieldsValue({[field.name]: {value: value.toString()}});
}}
/>
}
</Form.Item>
}
}
</Form.Item>
</Col>
<Col span={2}>
<DeleteFilled

View File

@@ -9,7 +9,7 @@ import {createStructuredSelector} from "reselect";
import {QUERY_ACTIVE_EMPLOYEES} from "../../graphql/employees.queries";
import {QUERY_ALL_VENDORS} from "../../graphql/vendors.queries";
import {selectReportCenter} from "../../redux/modals/modals.selectors";
import DatePIckerRanges from "../../utils/DatePickerRanges";
import DatePickerRanges from "../../utils/DatePickerRanges";
import {GenerateDocument} from "../../utils/RenderTemplate";
import {TemplateList} from "../../utils/TemplateConstants";
import EmployeeSearchSelect from "../employee-search-select/employee-search-select.component";
@@ -251,7 +251,7 @@ export function ReportCenterModalComponent({reportCenterModal}) {
>
<DatePicker.RangePicker
format="MM/DD/YYYY"
presets={DatePIckerRanges}
presets={DatePickerRanges}
/>
</Form.Item>
);

View File

@@ -1,33 +1,29 @@
import {Kind, visit, parse, print} from "graphql";
import {Kind, parse, print, visit} from "graphql";
export const numberOperators = [
{value: "_eq", label: "Equals"},
{value: "_ne", label: "Not Equals"},
{value: "_gt", label: "Greater Than"},
{value: "_lt", label: "Less Than"},
{value: "_gte", label: "Greater Than or Equal To"},
{value: "_lte", label: "Less Than or Equal To"},
];
export const stringOperators = [
{value: "_eq", label: "Equals", type: 'string'},
{value: "_ne", label: "Not Equals", type: 'string'},
{value: "_in", label: "In", type: 'string'},
{value: "_nin", label: "Not In", type: 'string'},
{value: "_contains", label: "Contains", type: 'string'},
{value: "_ncontains", label: "Does Not Contain", type: 'string'},
];
export const numberSorters = [
{value: "asc", label: "Ascending"},
{value: "desc", label: "Descending"},
];
export const stringSorters = [
{value: "asc", label: "Alphabetically Ascending"},
{value: "desc", label: "Alphabetically Descending"},
const STRING_OPERATORS = [
{value: "_eq", label: "equals"},
{value: "_neq", label: "does not equal"},
{value: "_like", label: "contains"},
{value: "_nlike", label: "does not contain"},
{value: "_ilike", label: "contains case-insensitive"},
{value: "_nilike", label: "does not contain case-insensitive"}
];
const NUMBER_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"}
];
export function getOperatorsByType(type = 'string') {
const operators = {
string: STRING_OPERATORS,
number: NUMBER_OPERATORS
};
return operators[type];
}
/* eslint-disable no-loop-func */