diff --git a/client/src/components/report-center-modal/report-center-modal.component.jsx b/client/src/components/report-center-modal/report-center-modal.component.jsx index 641d2724c..5dbdafdaa 100644 --- a/client/src/components/report-center-modal/report-center-modal.component.jsx +++ b/client/src/components/report-center-modal/report-center-modal.component.jsx @@ -25,6 +25,7 @@ import { TemplateList } from "../../utils/TemplateConstants"; import EmployeeSearchSelect from "../employee-search-select/employee-search-select.component"; import VendorSearchSelect from "../vendor-search-select/vendor-search-select.component"; import "./report-center-modal.styles.scss"; +import Test from "./test"; const mapStateToProps = createStructuredSelector({ reportCenterModal: selectReportCenter, }); @@ -67,6 +68,7 @@ export function ReportCenterModalComponent({ reportCenterModal }) { }); const handleFinish = async (values) => { + console.log("🚀 ~ handleFinish ~ values:", values); setLoading(true); const start = values.dates ? values.dates[0] : null; const end = values.dates ? values.dates[1] : null; @@ -79,14 +81,14 @@ export function ReportCenterModalComponent({ reportCenterModal }) { ...(start ? { start: dayjs(start).startOf("day").format("YYYY-MM-DD") } : {}), - ...(end - ? { end: dayjs(end).endOf("day").format("YYYY-MM-DD") } - : {}), + ...(end ? { end: dayjs(end).endOf("day").format("YYYY-MM-DD") } : {}), ...(start ? { starttz: dayjs(start).startOf("day") } : {}), ...(end ? { endtz: dayjs(end).endOf("day") } : {}), ...(id ? { id: id } : {}), }, + filters: values.filters, + sorters: values.sorters, }, { to: values.to, @@ -189,6 +191,7 @@ export function ReportCenterModalComponent({ reportCenterModal }) { ); }} + {() => { const key = form.getFieldValue("key"); diff --git a/client/src/components/report-center-modal/test.jsx b/client/src/components/report-center-modal/test.jsx new file mode 100644 index 000000000..81910c8ba --- /dev/null +++ b/client/src/components/report-center-modal/test.jsx @@ -0,0 +1,206 @@ +import { Button, Col, Form, Input, 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"; +export default function Test({ form }) { + return ( + + {() => { + const key = form.getFieldValue("key"); + return ; + }} + + ); +} + +function RenderFilters({ templateId }) { + const [state, setState] = useState(null); + console.log("state", state); + const { t } = useTranslation(); + useEffect(() => { + const fetch = async () => { + const data = await fetchFilterData({ name: templateId }); + console.log("🚀 ~ fetch ~ data:", data); + setState(JSON.parse(data)); + }; + + console.log("🚀 ~ useEffect ~ templateId:", templateId); + if (templateId) { + fetch(); + } + }, [templateId]); + + if (!templateId || !state) return null; + return ( +
+ + {(fields, { add, remove, move }) => { + return ( +
+ Filters + {fields.map((field, index) => ( + + + + + + + + + + + + + + { + remove(field.name); + }} + /> + + + + ))} + + + +
+ ); + }} +
+ + {(fields, { add, remove, move }) => { + return ( +
+ Sorters + {fields.map((field, index) => ( + + + + + + + + + + { + remove(field.name); + }} + /> + + + + ))} + + + +
+ ); + }} +
+
+ ); +} diff --git a/client/src/utils/RenderTemplate.js b/client/src/utils/RenderTemplate.js index 4d20dc117..f7ecf4c71 100644 --- a/client/src/utils/RenderTemplate.js +++ b/client/src/utils/RenderTemplate.js @@ -305,6 +305,48 @@ export const GenerateDocuments = async (templates) => { await RenderTemplates(templates, bodyshop); }; +export const fetchFilterData = async ({ name }) => { + const bodyshop = store.getState().user.bodyshop; + const jsrAuth = (await axios.post("/utils/jsr")).data; + jsreport.headers["FirebaseAuthorization"] = + "Bearer " + (await auth.currentUser.getIdToken()); + + const folders = await cleanAxios.get(`${server}/odata/folders`, { + headers: { Authorization: jsrAuth }, + }); + const shopSpecificFolder = folders.data.value.find( + (f) => f.name === bodyshop.imexshopid + ); + + const jsReportFilters = await cleanAxios.get( + `${server}/odata/assets?$filter=name eq '${name}.filters'`, + { headers: { Authorization: jsrAuth } } + ); + console.log("🚀 ~ fetchFilterData ~ jsReportFilters:", jsReportFilters); + + let parsedFilterData; + let useShopSpecificTemplate = false; + // let shopSpecificTemplate; + + if (shopSpecificFolder) { + let shopSpecificTemplate = jsReportFilters.data.value.find( + (f) => f?.folder?.shortid === shopSpecificFolder.shortid + ); + if (shopSpecificTemplate) { + useShopSpecificTemplate = true; + parsedFilterData = atob(shopSpecificTemplate.content); + } + } + + if (!parsedFilterData) { + const generalTemplate = jsReportFilters.data.value.find((f) => !f.folder); + useShopSpecificTemplate = false; + if (generalTemplate) parsedFilterData = atob(generalTemplate.content); + } + + return parsedFilterData; +}; + const fetchContextData = async (templateObject, jsrAuth) => { const bodyshop = store.getState().user.bodyshop;