- Fix DMS Socket (missing reference)

- Add preview mode

Signed-off-by: Dave Richer <dave@imexsystems.ca>
This commit is contained in:
Dave Richer
2024-09-11 10:30:55 -04:00
parent f83deb0c26
commit 11b903f24b
4 changed files with 63 additions and 28 deletions

View File

@@ -90,6 +90,9 @@
"start:imex": "dotenvx run --env-file=.env.development.imex -- vite", "start:imex": "dotenvx run --env-file=.env.development.imex -- vite",
"start:rome": "dotenvx run --env-file=.env.development.rome -- vite", "start:rome": "dotenvx run --env-file=.env.development.rome -- vite",
"start:promanager": "dotenvx run --env-file=.env.development.promanager -- vite", "start:promanager": "dotenvx run --env-file=.env.development.promanager -- vite",
"preview:imex": "dotenvx run --env-file=.env.development.imex -- vite preview",
"preview:rome": "dotenvx run --env-file=.env.development.rome -- vite preview",
"preview:promanager": "dotenvx run --env-file=.env.development.promanager -- vite preview",
"build:test:imex": "env-cmd -f .env.test.imex npm run build", "build:test:imex": "env-cmd -f .env.test.imex npm run build",
"build:test:rome": "env-cmd -f .env.test.rome npm run build", "build:test:rome": "env-cmd -f .env.test.rome npm run build",
"build:test:promanager": "env-cmd -f .env.test.promanager npm run build", "build:test:promanager": "env-cmd -f .env.test.promanager npm run build",

View File

@@ -1,37 +1,51 @@
import { Button, Checkbox, Col, Table } from "antd"; import { Button, Checkbox, Col, Table } from "antd";
import React, { useState } from "react"; import React, { useContext, useEffect, useState } from "react";
import { useTranslation } from "react-i18next"; import { useTranslation } from "react-i18next";
import { connect } from "react-redux"; import { connect } from "react-redux";
import { createStructuredSelector } from "reselect"; import { createStructuredSelector } from "reselect";
import { socket } from "../../pages/dms/dms.container";
import { selectBodyshop } from "../../redux/user/user.selectors"; import { selectBodyshop } from "../../redux/user/user.selectors";
import { alphaSort } from "../../utils/sorters"; import { alphaSort } from "../../utils/sorters";
import SocketContext from "../../contexts/SocketIO/socketContext"; // Import Socket Context
const mapStateToProps = createStructuredSelector({ const mapStateToProps = createStructuredSelector({
bodyshop: selectBodyshop bodyshop: selectBodyshop
}); });
const mapDispatchToProps = (dispatch) => ({ const mapDispatchToProps = (dispatch) => ({});
//setUserLanguage: language => dispatch(setUserLanguage(language))
});
export default connect(mapStateToProps, mapDispatchToProps)(DmsCustomerSelector); export default connect(mapStateToProps, mapDispatchToProps)(DmsCustomerSelector);
export function DmsCustomerSelector({ bodyshop }) { export function DmsCustomerSelector({ bodyshop }) {
const { t } = useTranslation(); const { t } = useTranslation();
const [customerList, setcustomerList] = useState([]); const { socket } = useContext(SocketContext); // Use Socket Context
const [customerList, setCustomerList] = useState([]);
const [open, setOpen] = useState(false); const [open, setOpen] = useState(false);
const [selectedCustomer, setSelectedCustomer] = useState(null); const [selectedCustomer, setSelectedCustomer] = useState(null);
const [dmsType, setDmsType] = useState("cdk"); const [dmsType, setDmsType] = useState("cdk");
socket.on("cdk-select-customer", (customerList, callback) => { useEffect(() => {
setOpen(true); if (socket) {
setDmsType("cdk"); const handleCdkSelectCustomer = (customerList) => {
setcustomerList(customerList); setOpen(true);
}); setDmsType("cdk");
socket.on("pbs-select-customer", (customerList, callback) => { setCustomerList(customerList);
setOpen(true); };
setDmsType("pbs");
setcustomerList(customerList); const handlePbsSelectCustomer = (customerList) => {
}); setOpen(true);
setDmsType("pbs");
setCustomerList(customerList);
};
socket.on("cdk-select-customer", handleCdkSelectCustomer);
socket.on("pbs-select-customer", handlePbsSelectCustomer);
// Clean up listeners on unmount
return () => {
socket.off("cdk-select-customer", handleCdkSelectCustomer);
socket.off("pbs-select-customer", handlePbsSelectCustomer);
};
}
}, [socket]);
const onUseSelected = () => { const onUseSelected = () => {
setOpen(false); setOpen(false);
@@ -69,17 +83,11 @@ export function DmsCustomerSelector({ bodyshop }) {
key: "name1", key: "name1",
sorter: (a, b) => alphaSort(a.name1 && a.name1.fullName, b.name1 && b.name1.fullName) sorter: (a, b) => alphaSort(a.name1 && a.name1.fullName, b.name1 && b.name1.fullName)
}, },
{ {
title: t("jobs.fields.dms.address"), title: t("jobs.fields.dms.address"),
//dataIndex: ["name2", "fullName"],
key: "address", key: "address",
render: (record, value) => render: (record) =>
`${ `${record.address?.addressLine?.[0]}, ${record.address?.city} ${record.address?.stateOrProvince} ${record.address?.postalCode}`
record.address && record.address.addressLine && record.address.addressLine[0]
}, ${record.address && record.address.city} ${
record.address && record.address.stateOrProvince
} ${record.address && record.address.postalCode}`
} }
]; ];
@@ -95,15 +103,15 @@ export function DmsCustomerSelector({ bodyshop }) {
sorter: (a, b) => alphaSort(a.LastName, b.LastName), sorter: (a, b) => alphaSort(a.LastName, b.LastName),
render: (text, record) => `${record.FirstName || ""} ${record.LastName || ""}` render: (text, record) => `${record.FirstName || ""} ${record.LastName || ""}`
}, },
{ {
title: t("jobs.fields.dms.address"), title: t("jobs.fields.dms.address"),
key: "address", key: "address",
render: (record, value) => `${record.Address}, ${record.City} ${record.State} ${record.ZipCode}` render: (record) => `${record.Address}, ${record.City} ${record.State} ${record.ZipCode}`
} }
]; ];
if (!open) return null; if (!open) return null;
return ( return (
<Col span={24}> <Col span={24}>
<Table <Table
@@ -125,7 +133,6 @@ export function DmsCustomerSelector({ bodyshop }) {
columns={dmsType === "cdk" ? cdkColumns : pbsColumns} columns={dmsType === "cdk" ? cdkColumns : pbsColumns}
rowKey={(record) => (dmsType === "cdk" ? record.id.value : record.ContactId)} rowKey={(record) => (dmsType === "cdk" ? record.id.value : record.ContactId)}
dataSource={customerList} dataSource={customerList}
//onChange={handleTableChange}
rowSelection={{ rowSelection={{
onSelect: (record) => { onSelect: (record) => {
setSelectedCustomer(dmsType === "cdk" ? record.id.value : record.ContactId); setSelectedCustomer(dmsType === "cdk" ? record.id.value : record.ContactId);

View File

@@ -41,7 +41,7 @@ export default connect(mapStateToProps, mapDispatchToProps)(DmsContainer);
export function DmsContainer({ bodyshop, setBreadcrumbs, setSelectedHeader, insertAuditTrail }) { export function DmsContainer({ bodyshop, setBreadcrumbs, setSelectedHeader, insertAuditTrail }) {
const { t } = useTranslation(); const { t } = useTranslation();
const { socket, clientId } = useContext(SocketContext); const { socket } = useContext(SocketContext);
const [logLevel, setLogLevel] = useState("DEBUG"); const [logLevel, setLogLevel] = useState("DEBUG");
const history = useNavigate(); const history = useNavigate();
const [logs, setLogs] = useState([]); const [logs, setLogs] = useState([]);
@@ -54,6 +54,7 @@ export function DmsContainer({ bodyshop, setBreadcrumbs, setSelectedHeader, inse
fetchPolicy: "network-only", fetchPolicy: "network-only",
nextFetchPolicy: "network-only" nextFetchPolicy: "network-only"
}); });
const logsRef = useRef(null); const logsRef = useRef(null);
useEffect(() => { useEffect(() => {

View File

@@ -146,6 +146,30 @@ export default defineConfig({
allowHTTP1: false // Force HTTP/2 allowHTTP1: false // Force HTTP/2
} }
}, },
preview: {
port: 6000,
host: true,
open: true,
https: {
key: await fsPromises.readFile("../certs/key.pem"),
cert: await fsPromises.readFile("../certs/cert.pem"),
allowHTTP1: false // Force HTTP/2
},
proxy: {
"/ws": {
target: "ws://localhost:4000",
rewriteWsOrigin: true,
secure: false,
ws: true
},
"/api": {
target: "http://localhost:4000",
changeOrigin: true,
secure: false,
ws: false
}
}
},
build: { build: {
rollupOptions: { rollupOptions: {
output: { output: {