feature/IO-3497-Ant-Design-v5-to-v6 - Signed off Files

This commit is contained in:
Dave
2026-01-12 11:34:25 -05:00
parent c3da0d9035
commit c119a66f27
70 changed files with 442 additions and 463 deletions

153
client/package-lock.json generated
View File

@@ -11,7 +11,7 @@
"dependencies": {
"@amplitude/analytics-browser": "^2.33.1",
"@ant-design/pro-layout": "^7.22.6",
"@apollo/client": "^3.13.9",
"@apollo/client": "^4.0.12",
"@emotion/is-prop-valid": "^1.4.0",
"@fingerprintjs/fingerprintjs": "^4.6.1",
"@firebase/analytics": "^0.10.19",
@@ -27,7 +27,7 @@
"@splitsoftware/splitio-react": "^2.6.1",
"@tanem/react-nprogress": "^5.0.56",
"antd": "^6.1.4",
"apollo-link-logger": "^2.0.1",
"apollo-link-logger": "^3.0.0",
"apollo-link-sentry": "^4.4.0",
"autosize": "^6.0.1",
"axios": "^1.13.2",
@@ -51,7 +51,7 @@
"normalize-url": "^8.1.1",
"object-hash": "^3.0.0",
"phone": "^3.1.69",
"posthog-js": "^1.316.1",
"posthog-js": "^1.318.2",
"prop-types": "^15.8.1",
"query-string": "^9.3.1",
"raf-schd": "^4.0.3",
@@ -84,7 +84,7 @@
"reselect": "^5.1.1",
"sass": "^1.97.2",
"socket.io-client": "^4.8.3",
"styled-components": "^6.2.0",
"styled-components": "^6.3.5",
"subscriptions-transport-ws": "^0.11.0",
"use-memo-one": "^1.1.3",
"vite-plugin-ejs": "^1.7.0",
@@ -553,30 +553,30 @@
}
},
"node_modules/@apollo/client": {
"version": "3.14.0",
"resolved": "https://registry.npmjs.org/@apollo/client/-/client-3.14.0.tgz",
"integrity": "sha512-0YQKKRIxiMlIou+SekQqdCo0ZTHxOcES+K8vKB53cIDpwABNR0P0yRzPgsbgcj3zRJniD93S/ontsnZsCLZrxQ==",
"version": "4.0.12",
"resolved": "https://registry.npmjs.org/@apollo/client/-/client-4.0.12.tgz",
"integrity": "sha512-CyDR+2A18TFH08rKvH3DaV63eRE0E4pj34gT8UZIQVP64bRRXnQiYuKTf/c6oJNY8+4FrCrcPwWEldnVbh02bA==",
"license": "MIT",
"workspaces": [
"dist",
"codegen",
"scripts/codemods/ac3-to-ac4"
],
"dependencies": {
"@graphql-typed-document-node/core": "^3.1.1",
"@wry/caches": "^1.0.0",
"@wry/equality": "^0.5.6",
"@wry/trie": "^0.5.0",
"graphql-tag": "^2.12.6",
"hoist-non-react-statics": "^3.3.2",
"optimism": "^0.18.0",
"prop-types": "^15.7.2",
"rehackt": "^0.1.0",
"symbol-observable": "^4.0.0",
"ts-invariant": "^0.10.3",
"tslib": "^2.3.0",
"zen-observable-ts": "^1.2.5"
"tslib": "^2.3.0"
},
"peerDependencies": {
"graphql": "^15.0.0 || ^16.0.0",
"graphql": "^16.0.0",
"graphql-ws": "^5.5.5 || ^6.0.3",
"react": "^16.8.0 || ^17.0.0 || ^18.0.0 || >=19.0.0-rc",
"react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || >=19.0.0-rc",
"react": "^17.0.0 || ^18.0.0 || >=19.0.0-rc",
"react-dom": "^17.0.0 || ^18.0.0 || >=19.0.0-rc",
"rxjs": "^7.3.0",
"subscriptions-transport-ws": "^0.9.0 || ^0.11.0"
},
"peerDependenciesMeta": {
@@ -4225,9 +4225,9 @@
}
},
"node_modules/@posthog/types": {
"version": "1.316.1",
"resolved": "https://registry.npmjs.org/@posthog/types/-/types-1.316.1.tgz",
"integrity": "sha512-rh8GSOnmnwd0fUIBYzQcXt4WYXMg9QPkY0tE46K0eneWYVyqNYXFXzcdf2U37g+ZYNiBq9ubLeCD7h0C0MDJgw==",
"version": "1.318.2",
"resolved": "https://registry.npmjs.org/@posthog/types/-/types-1.318.2.tgz",
"integrity": "sha512-/4m1DStpyaZStTJJ4b7RyftnFoSM/IWmVBTiWvdm2e2I8A8W3D4+YY7YkTpPtTinRZEhDQEZFjhlHdDgNCiNuA==",
"license": "MIT"
},
"node_modules/@protobufjs/aspromise": {
@@ -6805,7 +6805,7 @@
"version": "2.0.7",
"resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz",
"integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==",
"dev": true,
"devOptional": true,
"license": "MIT"
},
"node_modules/@types/unist": {
@@ -7266,16 +7266,16 @@
}
},
"node_modules/apollo-link-logger": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/apollo-link-logger/-/apollo-link-logger-2.0.1.tgz",
"integrity": "sha512-4KkdwCqWtlOc0vx0W/5o+UfotyZtcJZicraKNyo2KTaCmAGSJ8vDnNRyDlv6o5XtSgdv4NA36cSe6dt49OkGWA==",
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/apollo-link-logger/-/apollo-link-logger-3.0.0.tgz",
"integrity": "sha512-7j557AndpQXqmOg6MLERh9eCGrKdQSoIzHPSU+9Umw8EnkwU+CphCXb4p22Zx6yRnYxVV7fOrqbB+4lsfloATQ==",
"license": "MIT",
"engines": {
"node": ">= 10",
"npm": "> 3"
},
"peerDependencies": {
"@apollo/client": "^3.0.0"
"@apollo/client": "^4.0.0"
}
},
"node_modules/apollo-link-sentry": {
@@ -9156,6 +9156,15 @@
"url": "https://bevry.me/fund"
}
},
"node_modules/dompurify": {
"version": "3.3.1",
"resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.3.1.tgz",
"integrity": "sha512-qkdCKzLNtrgPFP1Vo+98FRzJnBRGe4ffyCea9IwHB1fyxPOeNTHpLKYGd4Uk9xvNoH0ZoOjwZxNptyMwqrId1Q==",
"license": "(MPL-2.0 OR Apache-2.0)",
"optionalDependencies": {
"@types/trusted-types": "^2.0.7"
}
},
"node_modules/dot-case": {
"version": "3.0.4",
"resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz",
@@ -14189,16 +14198,18 @@
"license": "MIT"
},
"node_modules/posthog-js": {
"version": "1.316.1",
"resolved": "https://registry.npmjs.org/posthog-js/-/posthog-js-1.316.1.tgz",
"integrity": "sha512-4B0PHnMZwjV9aoQRQ5OqrPa40aCVlqRx1aZMCZCbZ4Z7c91bpOJDpENGGyxFvjUoNN+f8MP8LHZBdn5DPQyWTg==",
"version": "1.318.2",
"resolved": "https://registry.npmjs.org/posthog-js/-/posthog-js-1.318.2.tgz",
"integrity": "sha512-M5C/3HYlyNaqmCIwgGkmJLcGt5MREwsllwGLAOO3nMYhrWSjEuJnEzenplHxa/4UgwvhR4121ErzRHgK67qq1A==",
"license": "SEE LICENSE IN LICENSE",
"dependencies": {
"@posthog/core": "1.9.1",
"@posthog/types": "1.316.1",
"@posthog/types": "1.318.2",
"core-js": "^3.38.1",
"dompurify": "^3.3.1",
"fflate": "^0.4.8",
"preact": "^10.19.3",
"query-selector-shadow-dom": "^1.0.1",
"web-vitals": "^4.2.4"
}
},
@@ -14411,6 +14422,12 @@
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/query-selector-shadow-dom": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/query-selector-shadow-dom/-/query-selector-shadow-dom-1.0.1.tgz",
"integrity": "sha512-lT5yCqEBgfoMYpf3F2xQRK7zEr1rhIIZuceDK6+xRkJQ4NMbHTwXqk4NkwDwQMNqXgG9r9fyHnzwNVs6zV5KRw==",
"license": "MIT"
},
"node_modules/query-string": {
"version": "9.3.1",
"resolved": "https://registry.npmjs.org/query-string/-/query-string-9.3.1.tgz",
@@ -15249,24 +15266,6 @@
"regjsparser": "bin/parser"
}
},
"node_modules/rehackt": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/rehackt/-/rehackt-0.1.0.tgz",
"integrity": "sha512-7kRDOuLHB87D/JESKxQoRwv4DzbIdwkAGQ7p6QKGdVlY1IZheUnVhlk/4UZlNUVxdAXpyxikE3URsG067ybVzw==",
"license": "MIT",
"peerDependencies": {
"@types/react": "*",
"react": "*"
},
"peerDependenciesMeta": {
"@types/react": {
"optional": true
},
"react": {
"optional": true
}
}
},
"node_modules/remark-parse": {
"version": "11.0.0",
"resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-11.0.0.tgz",
@@ -16543,20 +16542,20 @@
}
},
"node_modules/styled-components": {
"version": "6.2.0",
"resolved": "https://registry.npmjs.org/styled-components/-/styled-components-6.2.0.tgz",
"integrity": "sha512-ryFCkETE++8jlrBmC+BoGPUN96ld1/Yp0s7t5bcXDobrs4XoXroY1tN+JbFi09hV6a5h3MzbcVi8/BGDP0eCgQ==",
"version": "6.3.5",
"resolved": "https://registry.npmjs.org/styled-components/-/styled-components-6.3.5.tgz",
"integrity": "sha512-f8jAunVw/r41o17+JlWVlMTsyBKyghCdQ84YCKPxgKSMOZJbK3CKPxeIhotz6hlXvHb0w62zG4yyOdGY0kaB3g==",
"license": "MIT",
"dependencies": {
"@emotion/is-prop-valid": "1.2.2",
"@emotion/unitless": "0.8.1",
"@emotion/is-prop-valid": "1.4.0",
"@emotion/unitless": "0.10.0",
"@types/stylis": "4.2.7",
"css-to-react-native": "3.2.0",
"csstype": "3.2.3",
"postcss": "8.4.49",
"shallowequal": "1.1.0",
"stylis": "4.3.6",
"tslib": "2.6.2"
"tslib": "2.8.1"
},
"engines": {
"node": ">= 16"
@@ -16570,33 +16569,12 @@
"react-dom": ">= 16.8.0"
}
},
"node_modules/styled-components/node_modules/@emotion/is-prop-valid": {
"version": "1.2.2",
"resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.2.2.tgz",
"integrity": "sha512-uNsoYd37AFmaCdXlg6EYD1KaPOaRWRByMCYzbKUX4+hhMfrxdVSelShywL4JVaAeM/eHUOSprYBQls+/neX3pw==",
"license": "MIT",
"dependencies": {
"@emotion/memoize": "^0.8.1"
}
},
"node_modules/styled-components/node_modules/@emotion/memoize": {
"version": "0.8.1",
"resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.8.1.tgz",
"integrity": "sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA==",
"license": "MIT"
},
"node_modules/styled-components/node_modules/@emotion/unitless": {
"version": "0.8.1",
"resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.8.1.tgz",
"integrity": "sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ==",
"version": "0.10.0",
"resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.10.0.tgz",
"integrity": "sha512-dFoMUuQA20zvtVTuxZww6OHoJYgrzfKM1t52mVySDJnMSEa08ruEvdYQbhvyu6soU+NeLVd3yKfTfT0NeV6qGg==",
"license": "MIT"
},
"node_modules/styled-components/node_modules/tslib": {
"version": "2.6.2",
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
"integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==",
"license": "0BSD"
},
"node_modules/stylis": {
"version": "4.3.6",
"resolved": "https://registry.npmjs.org/stylis/-/stylis-4.3.6.tgz",
@@ -16695,15 +16673,6 @@
"react": "^16.11.0 || ^17.0.0 || ^18.0.0 || ^19.0.0"
}
},
"node_modules/symbol-observable": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-4.0.0.tgz",
"integrity": "sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ==",
"license": "MIT",
"engines": {
"node": ">=0.10"
}
},
"node_modules/symbol-tree": {
"version": "3.2.4",
"resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz",
@@ -17038,18 +17007,6 @@
"url": "https://github.com/sponsors/wooorm"
}
},
"node_modules/ts-invariant": {
"version": "0.10.3",
"resolved": "https://registry.npmjs.org/ts-invariant/-/ts-invariant-0.10.3.tgz",
"integrity": "sha512-uivwYcQaxAucv1CzRp2n/QdYPo4ILf9VXgH19zEIjFx2EJufV16P0JtJVpYHy89DItG6Kwj2oIUjrcK5au+4tQ==",
"license": "MIT",
"dependencies": {
"tslib": "^2.1.0"
},
"engines": {
"node": ">=8"
}
},
"node_modules/tslib": {
"version": "2.8.1",
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz",

View File

@@ -10,7 +10,7 @@
"dependencies": {
"@amplitude/analytics-browser": "^2.33.1",
"@ant-design/pro-layout": "^7.22.6",
"@apollo/client": "^3.13.9",
"@apollo/client": "^4.0.12",
"@emotion/is-prop-valid": "^1.4.0",
"@fingerprintjs/fingerprintjs": "^4.6.1",
"@firebase/analytics": "^0.10.19",
@@ -26,7 +26,7 @@
"@splitsoftware/splitio-react": "^2.6.1",
"@tanem/react-nprogress": "^5.0.56",
"antd": "^6.1.4",
"apollo-link-logger": "^2.0.1",
"apollo-link-logger": "^3.0.0",
"apollo-link-sentry": "^4.4.0",
"autosize": "^6.0.1",
"axios": "^1.13.2",
@@ -50,7 +50,7 @@
"normalize-url": "^8.1.1",
"object-hash": "^3.0.0",
"phone": "^3.1.69",
"posthog-js": "^1.316.1",
"posthog-js": "^1.318.2",
"prop-types": "^15.8.1",
"query-string": "^9.3.1",
"raf-schd": "^4.0.3",
@@ -83,7 +83,7 @@
"reselect": "^5.1.1",
"sass": "^1.97.2",
"socket.io-client": "^4.8.3",
"styled-components": "^6.2.0",
"styled-components": "^6.3.5",
"subscriptions-transport-ws": "^0.11.0",
"use-memo-one": "^1.1.3",
"vite-plugin-ejs": "^1.7.0",

View File

@@ -176,7 +176,7 @@ export function AccountingPayablesTableComponent({ bodyshop, loading, bills, ref
<Table
loading={loading}
dataSource={dataSource}
pagination={{ position: "top", pageSize: exportPageLimit }}
pagination={{ placement: "top", pageSize: exportPageLimit }}
columns={columns}
rowKey="id"
onChange={handleTableChange}

View File

@@ -189,7 +189,7 @@ export function AccountingPayablesTableComponent({ bodyshop, loading, payments,
<Table
loading={loading}
dataSource={dataSource}
pagination={{ position: "top", pageSize: exportPageLimit }}
pagination={{ placement: "top", pageSize: exportPageLimit }}
columns={columns}
rowKey="id"
onChange={handleTableChange}

View File

@@ -211,7 +211,7 @@ export function AccountingReceivablesTableComponent({ bodyshop, loading, jobs, r
<Table
loading={loading}
dataSource={dataSource}
pagination={{ position: "top", pageSize: exportPageLimit }}
pagination={{ placement: "top", pageSize: exportPageLimit }}
columns={columns}
rowKey="id"
onChange={handleTableChange}

View File

@@ -65,7 +65,7 @@ export default function AuditTrailListComponent({ loading, data }) {
<Table
{...formItemLayout}
loading={loading}
pagination={{ position: "top", defaultPageSize: pageLimit }}
pagination={{ placement: "top", defaultPageSize: pageLimit }}
columns={columns}
rowKey="id"
dataSource={data}

View File

@@ -50,7 +50,7 @@ export default function EmailAuditTrailListComponent({ loading, data }) {
<Table
{...formItemLayout}
loading={loading}
pagination={{ position: "top", defaultPageSize: pageLimit }}
pagination={{ placement: "top", defaultPageSize: pageLimit }}
columns={columns}
rowKey="id"
dataSource={data}

View File

@@ -189,7 +189,7 @@ export function BillDetailEditcontainer({ insertAuditTrail, bodyshop }) {
/>
<Form form={form} onFinish={handleFinish} initialValues={transformData(data)} layout="vertical">
<BillFormContainer form={form} billEdit disabled={exported} disableInHouse={isinhouse} />
<Divider orientation="left">{t("general.labels.media")}</Divider>
<Divider titlePlacement="left">{t("general.labels.media")}</Divider>
{bodyshop.uselocalmediaserver ? (
<JobsDocumentsLocalGallery
job={{ id: data ? data.bills_by_pk.jobid : null }}

View File

@@ -429,7 +429,7 @@ export function BillFormComponent({
}}
</Form.Item>
</LayoutFormRow>
<Divider orientation="left">{t("bills.labels.bill_lines")}</Divider>
<Divider titlePlacement="left">{t("bills.labels.bill_lines")}</Divider>
{Extended_Bill_Posting.treatment === "on" ? (
<BillFormLinesExtended
@@ -449,7 +449,7 @@ export function BillFormComponent({
billEdit={billEdit}
/>
)}
<Divider orientation="left" style={{ display: billEdit ? "none" : null }}>
<Divider titlePlacement="left" style={{ display: billEdit ? "none" : null }}>
{t("documents.labels.upload")}
</Divider>
<Form.Item

View File

@@ -89,7 +89,7 @@ export default function BillsVendorsList() {
);
}}
dataSource={dataSource}
pagination={{ position: "top" }}
pagination={{ placement: "top" }}
columns={columns}
rowKey="id"
onChange={handleTableChange}

View File

@@ -104,7 +104,7 @@ export default function ContractsCarsComponent({ loading, data, selectedCarId, h
>
<Table
loading={loading}
pagination={{ position: "top" }}
pagination={{ placement: "top" }}
columns={columns}
rowKey="id"
dataSource={filteredData}

View File

@@ -128,11 +128,7 @@ export default function ContractsJobsComponent({ loading, data, selectedJob, han
>
<Table
loading={loading}
pagination={{
position: "top",
defaultPageSize: pageLimit,
defaultCurrent: defaultCurrent
}}
pagination={{ placement: "top", defaultPageSize: pageLimit, defaultCurrent: defaultCurrent }}
columns={columns}
rowKey="id"
dataSource={filteredData}

View File

@@ -172,12 +172,7 @@ export function ContractsList({ bodyshop, loading, contracts, refetch, total, se
scroll={{
x: "50%" //y: "40rem"
}}
pagination={{
position: "top",
pageSize: pageLimit,
current: parseInt(page || 1, 10),
total: total
}}
pagination={{ placement: "top", pageSize: pageLimit, current: parseInt(page || 1, 10), total: total }}
columns={columns}
rowKey="id"
dataSource={contracts}

View File

@@ -75,12 +75,7 @@ export default function CourtesyCarContractListComponent({ contracts, totalContr
<Card title={t("menus.header.courtesycars-contracts")}>
<Table
scroll={{ x: true }}
pagination={{
position: "top",
pageSize: pageLimit,
current: parseInt(page || 1),
total: totalContracts
}}
pagination={{ placement: "top", pageSize: pageLimit, current: parseInt(page || 1), total: totalContracts }}
columns={columns}
rowKey="id"
dataSource={contracts}

View File

@@ -278,7 +278,7 @@ export default function CourtesyCarsList({ loading, courtesycars, refetch }) {
>
<Table
loading={loading}
pagination={{ position: "top" }}
pagination={{ placement: "top" }}
columns={columns}
rowKey="id"
dataSource={tableData}

View File

@@ -94,12 +94,7 @@ export default function CsiResponseListPaginated({ refetch, loading, responses,
>
<Table
loading={loading}
pagination={{
position: "top",
pageSize: pageLimit,
current: parseInt(state.page || 1),
total: total
}}
pagination={{ placement: "top", pageSize: pageLimit, current: parseInt(state.page || 1), total: total }}
columns={columns}
rowKey="id"
dataSource={responses}

View File

@@ -105,7 +105,7 @@ export default function DashboardMonthlyJobCosting({ data, ...cardProps }) {
<div style={{ height: "100%" }}>
<Table
onChange={handleTableChange}
pagination={{ position: "top", defaultPageSize: pageLimit }}
pagination={{ placement: "top", defaultPageSize: pageLimit }}
columns={columns}
scroll={{ x: true, y: "calc(100% - 4em)" }}
rowKey="id"

View File

@@ -2,14 +2,14 @@ import Icon, { SyncOutlined } from "@ant-design/icons";
import { useMutation, useQuery } from "@apollo/client";
import { Button, Dropdown, Space } from "antd";
import { PageHeader } from "@ant-design/pro-layout";
import { useMemo, useState, useEffect } from "react";
import { useEffect, useMemo, useState } from "react";
import { Responsive, WidthProvider } from "react-grid-layout";
import { useTranslation } from "react-i18next";
import { MdClose } from "react-icons/md";
import { connect } from "react-redux";
import { createStructuredSelector } from "reselect";
import { logImEXEvent } from "../../firebase/firebase.utils";
import { UPDATE_DASHBOARD_LAYOUT, QUERY_USER_DASHBOARD_LAYOUT } from "../../graphql/user.queries";
import { QUERY_USER_DASHBOARD_LAYOUT, UPDATE_DASHBOARD_LAYOUT } from "../../graphql/user.queries";
import { QUERY_DASHBOARD_BODYSHOP } from "../../graphql/bodyshop.queries";
import { selectCurrentUser } from "../../redux/user/user.selectors";
import AlertComponent from "../alert/alert.component";

View File

@@ -112,7 +112,7 @@ export function DmsAllocationsSummaryAp({ socket, bodyshop, billids, title }) {
}
>
<Table
pagination={{ position: "top", defaultPageSize: pageLimit }}
pagination={{ placement: "top", defaultPageSize: pageLimit }}
columns={columns}
rowKey={(record) => `${record.InvoiceNumber}${record.Account}`}
dataSource={allocationsSummary}

View File

@@ -116,7 +116,7 @@ export function DmsAllocationsSummary({ mode, socket, bodyshop, jobId, title, on
)}
<Table
pagination={{ position: "top", defaultPageSize: pageLimit }}
pagination={{ placement: "top", defaultPageSize: pageLimit }}
columns={columns}
rowKey="center"
dataSource={allocationsSummary}

View File

@@ -84,7 +84,7 @@ export default function CDKCustomerSelector({ bodyshop, socket }) {
<Button onClick={onCreateNew}>{t("jobs.actions.dms.createnewcustomer")}</Button>
</div>
)}
pagination={{ position: "top" }}
pagination={{ placement: "top" }}
columns={columns}
rowKey={rowKey}
dataSource={customerList}

View File

@@ -90,7 +90,7 @@ export default function FortellisCustomerSelector({ bodyshop, jobid, socket }) {
<Button onClick={onCreateNew}>{t("jobs.actions.dms.createnewcustomer")}</Button>
</div>
)}
pagination={{ position: "top" }}
pagination={{ placement: "top" }}
columns={columns}
rowKey={(r) => r.customerId}
dataSource={customerList}

View File

@@ -78,7 +78,7 @@ export default function PBSCustomerSelector({ bodyshop, socket }) {
<Button onClick={onCreateNew}>{t("jobs.actions.dms.createnewcustomer")}</Button>
</div>
)}
pagination={{ position: "top" }}
pagination={{ placement: "top" }}
columns={columns}
rowKey={(r) => r.ContactId}
dataSource={customerList}

View File

@@ -251,7 +251,7 @@ export default function RRCustomerSelector({
)}
</div>
)}
pagination={{ position: "top" }}
pagination={{ placement: "top" }}
columns={columns}
rowKey={(r) => r.custNo}
dataSource={customerList}

View File

@@ -74,13 +74,13 @@ export function DmsLogEvents({
{/* Row 1: summary + inline "Details" toggle */}
<Space wrap align="start">
<Tag color={logLevelColor(level)}>{level}</Tag>
<Divider type="vertical" />
<Divider orientation="vertical" />
<span>{dayjs(timestamp).format("MM/DD/YYYY HH:mm:ss")}</span>
<Divider type="vertical" />
<Divider orientation="vertical" />
<span>{message}</span>
{hasMeta && (
<>
<Divider type="vertical" />
<Divider orientation="vertical" />
<a
role="button"
aria-expanded={isOpen}

View File

@@ -131,10 +131,7 @@ const DateTimePicker = ({
if (timeValue) {
// When time changes, combine it with the existing date
const existingDate = dayjs(value);
const newDateTime = existingDate
.hour(timeValue.hour())
.minute(timeValue.minute())
.second(0);
const newDateTime = existingDate.hour(timeValue.hour()).minute(timeValue.minute()).second(0);
handleChange(newDateTime);
} else {
// If time is cleared, just update with null time but keep date

View File

@@ -37,7 +37,7 @@ export default function GlobalSearch() {
value: job.ro_number || "N/A",
label: (
<Link to={`/manage/jobs/${job.id}`}>
<Space size="small" split={<Divider type="vertical" />}>
<Space size="small" split={<Divider orientation="vertical" />}>
<strong>{job.ro_number || t("general.labels.na")}</strong>
<span>{`${job.status || ""}`}</span>
<span>
@@ -59,7 +59,7 @@ export default function GlobalSearch() {
value: OwnerNameDisplayFunction(owner),
label: (
<Link to={`/manage/owners/${owner.id}`}>
<Space size="small" split={<Divider type="vertical" />} wrap>
<Space size="small" split={<Divider orientation="vertical" />} wrap>
<span>
<OwnerNameDisplay ownerObject={owner} />
</span>
@@ -79,7 +79,7 @@ export default function GlobalSearch() {
value: `${vehicle.v_model_yr || ""} ${vehicle.v_make_desc || ""} ${vehicle.v_model_desc || ""}`,
label: (
<Link to={`/manage/vehicles/${vehicle.id}`}>
<Space size="small" split={<Divider type="vertical" />}>
<Space size="small" split={<Divider orientation="vertical" />}>
<span>
{`${vehicle.v_model_yr || ""} ${vehicle.v_make_desc || ""} ${vehicle.v_model_desc || ""}`}
</span>
@@ -101,7 +101,7 @@ export default function GlobalSearch() {
value: `${payment.job.ro_number} ${payment.payer} ${payment.amount}`,
label: (
<Link to={`/manage/jobs/${payment.job.id}`}>
<Space size="small" split={<Divider type="vertical" />}>
<Space size="small" split={<Divider orientation="vertical" />}>
<span>{payment.paymentnum}</span>
<span>{payment.job.ro_number}</span>
<span>{payment.memo || ""}</span>
@@ -121,7 +121,7 @@ export default function GlobalSearch() {
value: `${bill.invoice_number} - ${bill.vendor.name}`,
label: (
<Link to={`/manage/bills?billid=${bill.id}`}>
<Space size="small" split={<Divider type="vertical" />}>
<Space size="small" split={<Divider orientation="vertical" />}>
<span>{bill.invoice_number}</span>
<span>{bill.vendor.name}</span>
<span>{bill.date}</span>
@@ -139,7 +139,7 @@ export default function GlobalSearch() {
value: `${pb.firstname || ""} ${pb.lastname || ""} ${pb.company || ""}`,
label: (
<Link to={`/manage/phonebook?phonebookentry=${pb.id}`}>
<Space size="small" split={<Divider type="vertical" />}>
<Space size="small" split={<Divider orientation="vertical" />}>
<span>{`${pb.firstname || ""} ${pb.lastname || ""} ${pb.company || ""}`}</span>
<PhoneNumberFormatter>{pb.phone1}</PhoneNumberFormatter>
<span>{pb.email}</span>

View File

@@ -183,12 +183,7 @@ export function JobsList({ refetch, loading, jobs, total, setInventoryUpsertCont
>
<Table
loading={loading}
pagination={{
position: "top",
pageSize: pageLimit,
current: parseInt(page || 1),
total: total
}}
pagination={{ placement: "top", pageSize: pageLimit, current: parseInt(page || 1), total: total }}
columns={columns}
rowKey="id"
dataSource={jobs}

View File

@@ -55,8 +55,9 @@ export function JobBillsTotalComponent({
);
if (pol.cm_received === null) {
return; //TODO:AIO This was previously removed. Check if functionality impacted.
//TODO:AIO This was previously removed. Check if functionality impacted.
// Skip this calculation for bills posted prior to the CNR change.
return;
} else {
if (pol.cm_received === false) {
totalReturnsMarkedNotReceived = totalReturnsMarkedNotReceived.add(
@@ -174,8 +175,10 @@ export function JobBillsTotalComponent({
<BlurWrapperComponent featureName="bills" overrideValueFunction="RandomDinero">
<Statistic
title={t("bills.labels.discrepancy")}
valueStyle={{
color: discrepancy.getAmount() === 0 ? "green" : "red"
styles={{
content: {
color: discrepancy.getAmount() === 0 ? "green" : "red"
}
}}
value={discrepancy.toFormat()}
/>
@@ -208,8 +211,10 @@ export function JobBillsTotalComponent({
<BlurWrapperComponent featureName="bills" overrideValueFunction="RandomDinero">
<Statistic
title={t("bills.labels.discrepancy")}
valueStyle={{
color: discrepWithLbrAdj.getAmount() === 0 ? "green" : "red"
styles={{
content: {
color: discrepWithLbrAdj.getAmount() === 0 ? "green" : "red"
}
}}
value={discrepWithLbrAdj.toFormat()}
/>
@@ -242,8 +247,10 @@ export function JobBillsTotalComponent({
<BlurWrapperComponent featureName="bills" overrideValueFunction="RandomDinero">
<Statistic
title={t("bills.labels.discrepancy")}
valueStyle={{
color: discrepWithCms.getAmount() === 0 ? "green" : "red"
styles={{
content: {
color: discrepWithCms.getAmount() === 0 ? "green" : "red"
}
}}
value={discrepWithCms.toFormat()}
/>
@@ -290,8 +297,10 @@ export function JobBillsTotalComponent({
<BlurWrapperComponent featureName="bills" overrideValueFunction="RandomDinero">
<Statistic
title={t("bills.labels.calculatedcreditsnotreceived")}
valueStyle={{
color: calculatedCreditsNotReceived.getAmount() <= 0 ? "green" : "red"
styles={{
content: {
color: calculatedCreditsNotReceived.getAmount() <= 0 ? "green" : "red"
}
}}
value={
calculatedCreditsNotReceived.getAmount() >= 0
@@ -313,8 +322,10 @@ export function JobBillsTotalComponent({
<BlurWrapperComponent featureName="bills" overrideValueFunction="RandomDinero">
<Statistic
title={t("bills.labels.creditsnotreceived")}
valueStyle={{
color: totalReturnsMarkedNotReceived.getAmount() <= 0 ? "green" : "red"
styles={{
content: {
color: totalReturnsMarkedNotReceived.getAmount() <= 0 ? "green" : "red"
}
}}
value={
totalReturnsMarkedNotReceived.getAmount() >= 0

View File

@@ -84,7 +84,7 @@ export default function JobCostingPartsTable({ data, summaryData }) {
x: "50%" //y: "40rem"
}}
onChange={handleTableChange}
pagination={{ position: "top", defaultPageSize: pageLimit }}
pagination={{ placement: "top", defaultPageSize: pageLimit }}
columns={columns}
rowKey="id"
dataSource={filteredData}

View File

@@ -154,7 +154,7 @@ export function JobDetailCards({ bodyshop, setPrintCenterContext, insertAuditTra
}
>
<JobsDetailHeader job={data ? data.jobs_by_pk : null} />
<Divider type="horizontal" />
<Divider orientation="horizontal" />
<Row gutter={[16, 16]}>
<Col {...span}>
<JobDetailCardsInsuranceComponent loading={loading} data={data ? data.jobs_by_pk : null} />

View File

@@ -147,7 +147,7 @@ export function JobsAvailableScan({ partnerVersion, refetch }) {
>
<Table
loading={loading}
pagination={{ position: "top" }}
pagination={{ placement: "top" }}
columns={columns}
rowKey="id"
dataSource={data}

View File

@@ -98,7 +98,7 @@ export default function JobsCreateOwnerInfoSearchComponent({ loading, owners })
<Table
loading={loading}
scroll={{ x: true }}
pagination={{ position: "top" }}
pagination={{ placement: "top" }}
columns={columns}
rowKey="id"
dataSource={owners}

View File

@@ -71,7 +71,7 @@ export default function JobsCreateVehicleInfoSearchComponent({ loading, vehicles
<Table
loading={loading}
scroll={{ x: true }}
pagination={{ position: "top" }}
pagination={{ placement: "top" }}
columns={columns}
rowKey="id"
dataSource={vehicles}

View File

@@ -133,7 +133,7 @@ export function JobsDetailRates({ jobRO, form, job, bodyshop }) {
</FormRow>
)
})}
<Divider orientation="left" type="horizontal" style={{ marginTop: ".8rem", float: "right" }}>
<Divider titlePlacement="left" orientation="horizontal" style={{ marginTop: ".8rem", float: "right" }}>
{t("jobs.forms.laborrates")}
</Divider>
<Space>
@@ -217,7 +217,7 @@ export function JobsDetailRates({ jobRO, form, job, bodyshop }) {
imex: <JobsDetailRatesParts form={form} />,
rome: (
<>
<Divider orientation="left">Tax Profile</Divider>
<Divider titlePlacement="left">Tax Profile</Divider>
<JobsDetailRatesProfileOVerride form={form} />
<JobsDetailRatesParts form={form} />
<JobsDetailRatesLabor form={form} />

View File

@@ -1,4 +1,4 @@
import { useEffect, useState, useCallback } from "react";
import { useCallback, useEffect, useState } from "react";
import { useTranslation } from "react-i18next";
import LocalMediaGrid from "../jobs-documents-local-gallery/local-media-grid.component";
import LoadingSpinner from "../loading-spinner/loading-spinner.component";

View File

@@ -1,4 +1,4 @@
import { useEffect, useMemo, useState, useCallback } from "react";
import { useCallback, useEffect, useMemo, useState } from "react";
import LocalMediaGrid from "./local-media-grid.component";
import { useTranslation } from "react-i18next";
import { connect } from "react-redux";

View File

@@ -60,7 +60,7 @@ export function JobsDocumentsLocalGalleryReassign({ bodyshop, jobid, allMedia, g
]}
name={"jobid"}
>
<JobSearchSelect notExported={false} notInvoiced={false}/>
<JobSearchSelect notExported={false} notInvoiced={false} />
</Form.Item>
</Form>
<Space>

View File

@@ -190,7 +190,7 @@ export default function JobsFindModalComponent({
/>
</div>
)}
pagination={{ position: "bottom" }}
pagination={{ placement: "bottom" }}
columns={columns}
rowKey="id"
loading={jobsListLoading}

View File

@@ -4,7 +4,7 @@ import "./layout-form-row.styles.scss";
export default function LayoutFormRow({ header, children, grow = false, noDivider = false, ...restProps }) {
const DividerHeader = () =>
!noDivider && (
<Divider orientation="left" type="horizontal" style={{ marginTop: ".8rem" }}>
<Divider titlePlacement="left" orientation="horizontal" style={{ marginTop: ".8rem" }}>
{header}
</Divider>
);

View File

@@ -110,7 +110,7 @@ function OwnerDetailJobsComponent({ bodyshop, owner, isPartsEntry }) {
}
>
<Table
pagination={{ position: "bottom" }}
pagination={{ placement: "bottom" }}
columns={columns}
scroll={{ x: true }}
rowKey="id"

View File

@@ -76,7 +76,7 @@ export default function OwnerFindModalComponent({
return (
<div>
<Table
pagination={{ position: "bottom" }}
pagination={{ placement: "bottom" }}
columns={columns}
rowKey="id"
loading={ownersListLoading}

View File

@@ -116,12 +116,7 @@ export default function OwnersListComponent({ loading, owners, total, refetch })
>
<Table
loading={loading}
pagination={{
position: "top",
pageSize: pageLimit,
current: parseInt(page || 1, 10),
total: total
}}
pagination={{ placement: "top", pageSize: pageLimit, current: parseInt(page || 1, 10), total: total }}
columns={columns}
rowKey="id"
scroll={{ x: true }}

View File

@@ -116,7 +116,7 @@ export function PartsOrderModalComponent({
</Radio.Group>
</Form.Item>
</LayoutFormRow>
<Divider orientation="left">{t("parts_orders.labels.inthisorder")}</Divider>
<Divider titlePlacement="left">{t("parts_orders.labels.inthisorder")}</Divider>
<Form.List name={["parts_order_lines", "data"]}>
{(fields, { remove, move }) => {
return (

View File

@@ -58,7 +58,7 @@ export default function PartsQueueDetailCard() {
}
>
<JobsDetailHeader job={data ? data.jobs_by_pk : null} />
<Divider type="horizontal" />
<Divider orientation="horizontal" />
<PartsQueueJobLinesComponent jobLines={data.jobs_by_pk ? data.jobs_by_pk.joblines : null} />
</Card>
) : null}

View File

@@ -289,7 +289,7 @@ export function PartsQueueListComponent({ bodyshop }) {
<Table
loading={loading}
pagination={{
position: "top",
placement: "top",
pageSize: pageLimit
// current: parseInt(page || 1),
// total: data && data.jobs_aggregate.aggregate.count,

View File

@@ -87,7 +87,7 @@ function ProductionBoardKanbanSettings({ associationSettings, parentLoading, bod
};
const overlay = (
<Card style={{ maxWidth: "80vw", width: "100%"}}>
<Card style={{ maxWidth: "80vw", width: "100%" }}>
<Form form={form} onFinish={handleFinish} layout="vertical" onValuesChange={handleValuesChange}>
<Tabs
defaultActiveKey="1"

View File

@@ -127,7 +127,7 @@ export function ProductionListDetail({ bodyshop, jobs, setPrintCenterContext, te
/>
}
placement="right"
width={"50%"}
width="50%"
onClose={handleClose}
open={selected}
>
@@ -199,7 +199,11 @@ export function ProductionListDetail({ bodyshop, jobs, setPrintCenterContext, te
{!bodyshop.uselocalmediaserver && (
<>
<div style={{ height: "8px" }} />
<JobDetailCardsDocumentsComponent loading={loading} data={data ? data.jobs_by_pk : null} bodyshop={bodyshop} />
<JobDetailCardsDocumentsComponent
loading={loading}
data={data ? data.jobs_by_pk : null}
bodyshop={bodyshop}
/>
</>
)}
</div>

View File

@@ -178,7 +178,14 @@ export function ReportCenterModalComponent({ reportCenterModal, bodyshop }) {
<BlurWrapperComponent
featureName={groupExcludeKeyFilter.find((g) => g.key === key).featureName}
>
<ul style={{ listStyleType: "none", columns: grouped[key].length > 4 ? "2 auto" : "1", padding: 0, margin: 0 }}>
<ul
style={{
listStyleType: "none",
columns: grouped[key].length > 4 ? "2 auto" : "1",
padding: 0,
margin: 0
}}
>
{grouped[key].map((item) => (
<li key={item.key}>
<Radio key={item.key} value={item.key}>
@@ -189,7 +196,14 @@ export function ReportCenterModalComponent({ reportCenterModal, bodyshop }) {
</ul>
</BlurWrapperComponent>
) : (
<ul style={{ listStyleType: "none", columns: grouped[key].length > 4 ? "2 auto" : "1", padding: 0, margin: 0 }}>
<ul
style={{
listStyleType: "none",
columns: grouped[key].length > 4 ? "2 auto" : "1",
padding: 0,
margin: 0
}}
>
{grouped[key].map((item) =>
item.featureNameRestricted ? (
<li key={item.key}>

View File

@@ -224,7 +224,7 @@ export function ScheduleJobModalContainer({
email: (job && job.ownr_ea) || "",
// smartDates: [],
start: context.scheduled_in,
scheduled_completion: context.scheduled_completion ,
scheduled_completion: context.scheduled_completion,
color: context.color,
alt_transport: context.alt_transport,
note: context.note

View File

@@ -30,12 +30,12 @@ export function ScoreboardDayStats({ bodyshop, date, entries }) {
return (
<Card title={dayjs(date).format("D - ddd")} className="ant-card-grid-hoverable" style={{ height: "100%" }}>
<Statistic
valueStyle={{ color: dailyBodyTarget > bodyHrs ? "red" : "green" }}
styles={{ content: { color: dailyBodyTarget > bodyHrs ? "red" : "green" } }}
label="Body"
value={bodyHrs.toFixed(1)}
/>
<Statistic
valueStyle={{ color: dailyPaintTarget > paintHrs ? "red" : "green" }}
styles={{ content: { color: dailyPaintTarget > paintHrs ? "red" : "green" } }}
label="Refinish"
value={paintHrs.toFixed(1)}
/>

View File

@@ -149,7 +149,7 @@ export default function ScoreboardJobsList() {
onClick={(e) => e.stopPropagation()}
onChange={(tableArgs) => setState((state) => ({ ...state, ...tableArgs }))}
pagination={{
position: "top",
placement: "top",
pageSize: state.pageSize || pageLimit,
current: state.current || 1,
total: data ? data.scoreboard_aggregate.aggregate.count : 0

View File

@@ -1,4 +1,4 @@
import { Card, Col, Form, Row, Space, Statistic, Switch, Typography } from "antd";
import { Card, Col, Row, Space, Statistic, Switch, Typography } from "antd";
import dayjs from "../../utils/day";
import { useEffect, useState } from "react";
import { useTranslation } from "react-i18next";
@@ -41,9 +41,10 @@ export function ScoreboardTicketsStats({ data, jobData, bodyshop }) {
<Card
title={t("scoreboard.labels.productivestatistics")}
extra={
<Form.Item label={t("general.labels.tvmode")} valuePropName="checked" name={["tvmode"]}>
<Space>
<Typography.Text>{t("general.labels.tvmode")}</Typography.Text>
<Switch onClick={() => setIsLarge(!isLarge)} defaultChecked={isLarge} />
</Form.Item>
</Space>
}
>
<Row gutter={[16, 16]}>
@@ -60,15 +61,17 @@ export function ScoreboardTicketsStats({ data, jobData, bodyshop }) {
<Col span={24}>
<Statistic
value={data.seperatedThisWeek[day].total}
valueStyle={{
color:
parseFloat(data.seperatedThisWeek[day].total) >=
bodyshop.scoreboard_target.dailyBodyTarget +
bodyshop.scoreboard_target.dailyPaintTarget
? "green"
: "red",
fontSize: statisticSize,
fontWeight: statisticWeight
styles={{
content: {
color:
parseFloat(data.seperatedThisWeek[day].total) >=
bodyshop.scoreboard_target.dailyBodyTarget +
bodyshop.scoreboard_target.dailyPaintTarget
? "green"
: "red",
fontSize: statisticSize,
fontWeight: statisticWeight
}
}}
/>
</Col>
@@ -78,14 +81,16 @@ export function ScoreboardTicketsStats({ data, jobData, bodyshop }) {
<Statistic
title={<Typography.Text strong>{t("scoreboard.labels.body")}</Typography.Text>}
value={data.seperatedThisWeek[day].lab}
valueStyle={{
color:
parseFloat(data.seperatedThisWeek[day].lab) >=
bodyshop.scoreboard_target.dailyBodyTarget
? "green"
: "red",
fontSize: statisticSize,
fontWeight: statisticWeight
styles={{
content: {
color:
parseFloat(data.seperatedThisWeek[day].lab) >=
bodyshop.scoreboard_target.dailyBodyTarget
? "green"
: "red",
fontSize: statisticSize,
fontWeight: statisticWeight
}
}}
/>
</Col>
@@ -93,14 +98,16 @@ export function ScoreboardTicketsStats({ data, jobData, bodyshop }) {
<Statistic
title={<Typography.Text strong>{t("scoreboard.labels.refinish")}</Typography.Text>}
value={data.seperatedThisWeek[day].lar}
valueStyle={{
color:
parseFloat(data.seperatedThisWeek[day].lar) >=
bodyshop.scoreboard_target.dailyPaintTarget
? "green"
: "red",
fontSize: statisticSize,
fontWeight: statisticWeight
styles={{
content: {
color:
parseFloat(data.seperatedThisWeek[day].lar) >=
bodyshop.scoreboard_target.dailyPaintTarget
? "green"
: "red",
fontSize: statisticSize,
fontWeight: statisticWeight
}
}}
/>
</Col>
@@ -122,25 +129,27 @@ export function ScoreboardTicketsStats({ data, jobData, bodyshop }) {
<Col span={24}>
<Statistic
value={data.totalThisWeek}
valueStyle={{
color:
parseFloat(data.totalThisWeek) >=
Util.WeeklyTargetHrsInPeriod(
bodyshop.scoreboard_target.dailyBodyTarget,
dayjs().startOf("week"),
dayjs().endOf("week"),
bodyshop
) +
styles={{
content: {
color:
parseFloat(data.totalThisWeek) >=
Util.WeeklyTargetHrsInPeriod(
bodyshop.scoreboard_target.dailyPaintTarget,
bodyshop.scoreboard_target.dailyBodyTarget,
dayjs().startOf("week"),
dayjs().endOf("week"),
bodyshop
)
? "green"
: "red",
fontSize: statisticSize,
fontWeight: statisticWeight
) +
Util.WeeklyTargetHrsInPeriod(
bodyshop.scoreboard_target.dailyPaintTarget,
dayjs().startOf("week"),
dayjs().endOf("week"),
bodyshop
)
? "green"
: "red",
fontSize: statisticSize,
fontWeight: statisticWeight
}
}}
/>
</Col>
@@ -150,19 +159,21 @@ export function ScoreboardTicketsStats({ data, jobData, bodyshop }) {
<Statistic
title={<Typography.Text strong>{t("scoreboard.labels.body")}</Typography.Text>}
value={data.totalThisWeekLAB}
valueStyle={{
color:
parseFloat(data.totalThisWeekLAB) >=
Util.WeeklyTargetHrsInPeriod(
bodyshop.scoreboard_target.dailyBodyTarget,
dayjs().startOf("week"),
dayjs().endOf("week"),
bodyshop
)
? "green"
: "red",
fontSize: statisticSize,
fontWeight: statisticWeight
styles={{
content: {
color:
parseFloat(data.totalThisWeekLAB) >=
Util.WeeklyTargetHrsInPeriod(
bodyshop.scoreboard_target.dailyBodyTarget,
dayjs().startOf("week"),
dayjs().endOf("week"),
bodyshop
)
? "green"
: "red",
fontSize: statisticSize,
fontWeight: statisticWeight
}
}}
/>
</Col>
@@ -170,19 +181,21 @@ export function ScoreboardTicketsStats({ data, jobData, bodyshop }) {
<Statistic
title={<Typography.Text strong>{t("scoreboard.labels.refinish")}</Typography.Text>}
value={data.totalThisWeekLAR}
valueStyle={{
color:
parseFloat(data.totalThisWeekLAR) >=
Util.WeeklyTargetHrsInPeriod(
bodyshop.scoreboard_target.dailyPaintTarget,
dayjs().startOf("week"),
dayjs().endOf("week"),
bodyshop
)
? "green"
: "red",
fontSize: statisticSize,
fontWeight: statisticWeight
styles={{
content: {
color:
parseFloat(data.totalThisWeekLAR) >=
Util.WeeklyTargetHrsInPeriod(
bodyshop.scoreboard_target.dailyPaintTarget,
dayjs().startOf("week"),
dayjs().endOf("week"),
bodyshop
)
? "green"
: "red",
fontSize: statisticSize,
fontWeight: statisticWeight
}
}}
/>
</Col>
@@ -196,25 +209,27 @@ export function ScoreboardTicketsStats({ data, jobData, bodyshop }) {
<Col span={24}>
<Statistic
value={data.totalLastWeek}
valueStyle={{
color:
parseFloat(data.totalLastWeek) >=
Util.WeeklyTargetHrsInPeriod(
bodyshop.scoreboard_target.dailyBodyTarget,
dayjs().subtract(1, "week").startOf("week"),
dayjs().subtract(1, "week").endOf("week"),
bodyshop
) +
styles={{
content: {
color:
parseFloat(data.totalLastWeek) >=
Util.WeeklyTargetHrsInPeriod(
bodyshop.scoreboard_target.dailyPaintTarget,
bodyshop.scoreboard_target.dailyBodyTarget,
dayjs().subtract(1, "week").startOf("week"),
dayjs().subtract(1, "week").endOf("week"),
bodyshop
)
? "green"
: "red",
fontSize: statisticSize,
fontWeight: statisticWeight
) +
Util.WeeklyTargetHrsInPeriod(
bodyshop.scoreboard_target.dailyPaintTarget,
dayjs().subtract(1, "week").startOf("week"),
dayjs().subtract(1, "week").endOf("week"),
bodyshop
)
? "green"
: "red",
fontSize: statisticSize,
fontWeight: statisticWeight
}
}}
/>
</Col>
@@ -224,19 +239,21 @@ export function ScoreboardTicketsStats({ data, jobData, bodyshop }) {
<Statistic
title={<Typography.Text strong>{t("scoreboard.labels.body")}</Typography.Text>}
value={data.totalLastWeekLAB}
valueStyle={{
color:
parseFloat(data.totalLastWeekLAB) >=
Util.WeeklyTargetHrsInPeriod(
bodyshop.scoreboard_target.dailyBodyTarget,
dayjs().subtract(1, "week").startOf("week"),
dayjs().subtract(1, "week").endOf("week"),
bodyshop
)
? "green"
: "red",
fontSize: statisticSize,
fontWeight: statisticWeight
styles={{
content: {
color:
parseFloat(data.totalLastWeekLAB) >=
Util.WeeklyTargetHrsInPeriod(
bodyshop.scoreboard_target.dailyBodyTarget,
dayjs().subtract(1, "week").startOf("week"),
dayjs().subtract(1, "week").endOf("week"),
bodyshop
)
? "green"
: "red",
fontSize: statisticSize,
fontWeight: statisticWeight
}
}}
/>
</Col>
@@ -244,19 +261,21 @@ export function ScoreboardTicketsStats({ data, jobData, bodyshop }) {
<Statistic
title={<Typography.Text strong>{t("scoreboard.labels.refinish")}</Typography.Text>}
value={data.totalLastWeekLAR}
valueStyle={{
color:
parseFloat(data.totalLastWeekLAR) >=
Util.WeeklyTargetHrsInPeriod(
bodyshop.scoreboard_target.dailyPaintTarget,
dayjs().subtract(1, "week").startOf("week"),
dayjs().subtract(1, "week").endOf("week"),
bodyshop
)
? "green"
: "red",
fontSize: statisticSize,
fontWeight: statisticWeight
styles={{
content: {
color:
parseFloat(data.totalLastWeekLAR) >=
Util.WeeklyTargetHrsInPeriod(
bodyshop.scoreboard_target.dailyPaintTarget,
dayjs().subtract(1, "week").startOf("week"),
dayjs().subtract(1, "week").endOf("week"),
bodyshop
)
? "green"
: "red",
fontSize: statisticSize,
fontWeight: statisticWeight
}
}}
/>
</Col>
@@ -270,25 +289,27 @@ export function ScoreboardTicketsStats({ data, jobData, bodyshop }) {
<Col span={24}>
<Statistic
value={data.totalPriorWeek}
valueStyle={{
color:
parseFloat(data.totalPriorWeek) >=
Util.WeeklyTargetHrsInPeriod(
bodyshop.scoreboard_target.dailyBodyTarget,
dayjs().subtract(2, "week").startOf("week"),
dayjs().subtract(2, "week").endOf("week"),
bodyshop
) +
styles={{
content: {
color:
parseFloat(data.totalPriorWeek) >=
Util.WeeklyTargetHrsInPeriod(
bodyshop.scoreboard_target.dailyPaintTarget,
bodyshop.scoreboard_target.dailyBodyTarget,
dayjs().subtract(2, "week").startOf("week"),
dayjs().subtract(2, "week").endOf("week"),
bodyshop
)
? "green"
: "red",
fontSize: statisticSize,
fontWeight: statisticWeight
) +
Util.WeeklyTargetHrsInPeriod(
bodyshop.scoreboard_target.dailyPaintTarget,
dayjs().subtract(2, "week").startOf("week"),
dayjs().subtract(2, "week").endOf("week"),
bodyshop
)
? "green"
: "red",
fontSize: statisticSize,
fontWeight: statisticWeight
}
}}
/>
</Col>
@@ -298,19 +319,21 @@ export function ScoreboardTicketsStats({ data, jobData, bodyshop }) {
<Statistic
title={<Typography.Text strong>{t("scoreboard.labels.body")}</Typography.Text>}
value={data.totalPriorWeekLAB}
valueStyle={{
color:
parseFloat(data.totalPriorWeekLAB) >=
Util.WeeklyTargetHrsInPeriod(
bodyshop.scoreboard_target.dailyBodyTarget,
dayjs().subtract(2, "week").startOf("week"),
dayjs().subtract(2, "week").endOf("week"),
bodyshop
)
? "green"
: "red",
fontSize: statisticSize,
fontWeight: statisticWeight
styles={{
content: {
color:
parseFloat(data.totalPriorWeekLAB) >=
Util.WeeklyTargetHrsInPeriod(
bodyshop.scoreboard_target.dailyBodyTarget,
dayjs().subtract(2, "week").startOf("week"),
dayjs().subtract(2, "week").endOf("week"),
bodyshop
)
? "green"
: "red",
fontSize: statisticSize,
fontWeight: statisticWeight
}
}}
/>
</Col>
@@ -318,19 +341,21 @@ export function ScoreboardTicketsStats({ data, jobData, bodyshop }) {
<Statistic
title={<Typography.Text strong>{t("scoreboard.labels.refinish")}</Typography.Text>}
value={data.totalPriorWeekLAR}
valueStyle={{
color:
parseFloat(data.totalPriorWeekLAR) >=
Util.WeeklyTargetHrsInPeriod(
bodyshop.scoreboard_target.dailyPaintTarget,
dayjs().subtract(2, "week").startOf("week"),
dayjs().subtract(2, "week").endOf("week"),
bodyshop
)
? "green"
: "red",
fontSize: statisticSize,
fontWeight: statisticWeight
styles={{
content: {
color:
parseFloat(data.totalPriorWeekLAR) >=
Util.WeeklyTargetHrsInPeriod(
bodyshop.scoreboard_target.dailyPaintTarget,
dayjs().subtract(2, "week").startOf("week"),
dayjs().subtract(2, "week").endOf("week"),
bodyshop
)
? "green"
: "red",
fontSize: statisticSize,
fontWeight: statisticWeight
}
}}
/>
</Col>
@@ -347,15 +372,17 @@ export function ScoreboardTicketsStats({ data, jobData, bodyshop }) {
<Col span={24}>
<Statistic
value={data.totalThisMonth}
valueStyle={{
color:
parseFloat(data.totalThisMonth) >=
Util.MonthlyTargetHrs(bodyshop.scoreboard_target.dailyBodyTarget, bodyshop) +
Util.MonthlyTargetHrs(bodyshop.scoreboard_target.dailyPaintTarget, bodyshop)
? "green"
: "red",
fontSize: statisticSize,
fontWeight: statisticWeight
styles={{
content: {
color:
parseFloat(data.totalThisMonth) >=
Util.MonthlyTargetHrs(bodyshop.scoreboard_target.dailyBodyTarget, bodyshop) +
Util.MonthlyTargetHrs(bodyshop.scoreboard_target.dailyPaintTarget, bodyshop)
? "green"
: "red",
fontSize: statisticSize,
fontWeight: statisticWeight
}
}}
/>
</Col>
@@ -365,14 +392,16 @@ export function ScoreboardTicketsStats({ data, jobData, bodyshop }) {
<Statistic
title={<Typography.Text strong>{t("scoreboard.labels.body")}</Typography.Text>}
value={data.totalThisMonthLAB}
valueStyle={{
color:
parseFloat(data.totalThisMonthLAB) >=
Util.MonthlyTargetHrs(bodyshop.scoreboard_target.dailyBodyTarget, bodyshop)
? "green"
: "red",
fontSize: statisticSize,
fontWeight: statisticWeight
styles={{
content: {
color:
parseFloat(data.totalThisMonthLAB) >=
Util.MonthlyTargetHrs(bodyshop.scoreboard_target.dailyBodyTarget, bodyshop)
? "green"
: "red",
fontSize: statisticSize,
fontWeight: statisticWeight
}
}}
/>
</Col>
@@ -380,14 +409,16 @@ export function ScoreboardTicketsStats({ data, jobData, bodyshop }) {
<Statistic
title={<Typography.Text strong>{t("scoreboard.labels.refinish")}</Typography.Text>}
value={data.totalThisMonthLAR}
valueStyle={{
color:
parseFloat(data.totalThisMonthLAR) >=
Util.MonthlyTargetHrs(bodyshop.scoreboard_target.dailyPaintTarget, bodyshop)
? "green"
: "red",
fontSize: statisticSize,
fontWeight: statisticWeight
styles={{
content: {
color:
parseFloat(data.totalThisMonthLAR) >=
Util.MonthlyTargetHrs(bodyshop.scoreboard_target.dailyPaintTarget, bodyshop)
? "green"
: "red",
fontSize: statisticSize,
fontWeight: statisticWeight
}
}}
/>
</Col>
@@ -401,15 +432,17 @@ export function ScoreboardTicketsStats({ data, jobData, bodyshop }) {
<Col span={24}>
<Statistic
value={data.totalLastMonth}
valueStyle={{
color:
parseFloat(data.totalLastMonth) >=
Util.LastMonthTargetHrs(bodyshop.scoreboard_target.dailyBodyTarget, bodyshop) +
Util.LastMonthTargetHrs(bodyshop.scoreboard_target.dailyPaintTarget, bodyshop)
? "green"
: "red",
fontSize: statisticSize,
fontWeight: statisticWeight
styles={{
content: {
color:
parseFloat(data.totalLastMonth) >=
Util.LastMonthTargetHrs(bodyshop.scoreboard_target.dailyBodyTarget, bodyshop) +
Util.LastMonthTargetHrs(bodyshop.scoreboard_target.dailyPaintTarget, bodyshop)
? "green"
: "red",
fontSize: statisticSize,
fontWeight: statisticWeight
}
}}
/>
</Col>
@@ -419,14 +452,16 @@ export function ScoreboardTicketsStats({ data, jobData, bodyshop }) {
<Statistic
title={<Typography.Text strong>{t("scoreboard.labels.body")}</Typography.Text>}
value={data.totalLastMonthLAB}
valueStyle={{
color:
parseFloat(data.totalLastMonthLAB) >=
Util.LastMonthTargetHrs(bodyshop.scoreboard_target.dailyBodyTarget, bodyshop)
? "green"
: "red",
fontSize: statisticSize,
fontWeight: statisticWeight
styles={{
content: {
color:
parseFloat(data.totalLastMonthLAB) >=
Util.LastMonthTargetHrs(bodyshop.scoreboard_target.dailyBodyTarget, bodyshop)
? "green"
: "red",
fontSize: statisticSize,
fontWeight: statisticWeight
}
}}
/>
</Col>
@@ -434,14 +469,16 @@ export function ScoreboardTicketsStats({ data, jobData, bodyshop }) {
<Statistic
title={<Typography.Text strong>{t("scoreboard.labels.refinish")}</Typography.Text>}
value={data.totalLastMonthLAR}
valueStyle={{
color:
parseFloat(data.totalLastMonthLAR) >=
Util.LastMonthTargetHrs(bodyshop.scoreboard_target.dailyPaintTarget, bodyshop)
? "green"
: "red",
fontSize: statisticSize,
fontWeight: statisticWeight
styles={{
content: {
color:
parseFloat(data.totalLastMonthLAR) >=
Util.LastMonthTargetHrs(bodyshop.scoreboard_target.dailyPaintTarget, bodyshop)
? "green"
: "red",
fontSize: statisticSize,
fontWeight: statisticWeight
}
}}
/>
</Col>
@@ -455,9 +492,11 @@ export function ScoreboardTicketsStats({ data, jobData, bodyshop }) {
<Col span={24}>
<Statistic
value={`${data.totalEffieciencyOverPeriod || 0}%`}
valueStyle={{
fontSize: statisticSize,
fontWeight: statisticWeight
styles={{
content: {
fontSize: statisticSize,
fontWeight: statisticWeight
}
}}
/>
</Col>
@@ -467,9 +506,11 @@ export function ScoreboardTicketsStats({ data, jobData, bodyshop }) {
<Statistic
title={<Typography.Text strong>{t("scoreboard.labels.body")}</Typography.Text>}
value={`${data.totalEffieciencyOverPeriodLAB || 0}%`}
valueStyle={{
fontSize: statisticSize,
fontWeight: statisticWeight
styles={{
content: {
fontSize: statisticSize,
fontWeight: statisticWeight
}
}}
/>
</Col>
@@ -477,9 +518,11 @@ export function ScoreboardTicketsStats({ data, jobData, bodyshop }) {
<Statistic
title={<Typography.Text strong>{t("scoreboard.labels.refinish")}</Typography.Text>}
value={`${data.totalEffieciencyOverPeriodLAR || 0}%`}
valueStyle={{
fontSize: statisticSize,
fontWeight: statisticWeight
styles={{
content: {
fontSize: statisticSize,
fontWeight: statisticWeight
}
}}
/>
</Col>
@@ -492,9 +535,11 @@ export function ScoreboardTicketsStats({ data, jobData, bodyshop }) {
<Col span={24}>
<Statistic
value={jobData.count}
valueStyle={{
fontSize: statisticSize,
fontWeight: statisticWeight
styles={{
content: {
fontSize: statisticSize,
fontWeight: statisticWeight
}
}}
/>
</Col>
@@ -504,9 +549,11 @@ export function ScoreboardTicketsStats({ data, jobData, bodyshop }) {
<Statistic
title={<Typography.Text strong>{t("scoreboard.labels.totalhrs")}</Typography.Text>}
value={jobData.tthrs}
valueStyle={{
fontSize: statisticSize,
fontWeight: statisticWeight
styles={{
content: {
fontSize: statisticSize,
fontWeight: statisticWeight
}
}}
/>
</Col>

View File

@@ -104,7 +104,7 @@ export default function ShopEmployeesListComponent({ loading, employees }) {
);
}}
loading={loading}
pagination={{ position: "top" }}
pagination={{ placement: "top" }}
columns={columns}
rowKey="id"
dataSource={employees}

View File

@@ -100,7 +100,7 @@ export function ShopInfoSchedulingComponent({ form, bodyshop }) {
<Select mode="tags" />
</Form.Item>
</LayoutFormRow>
<Divider orientation="left">{t("bodyshop.labels.workingdays")}</Divider>
<Divider titlePlacement="left">{t("bodyshop.labels.workingdays")}</Divider>
<Space wrap size="large" id="workingdays">
<Form.Item label={t("general.labels.sunday")} name={["workingdays", "sunday"]} valuePropName="checked">
<Switch />

View File

@@ -10,9 +10,7 @@ export default function ShopInfoSpeedPrint() {
const { t } = useTranslation();
const allTemplates = TemplateList("job");
const TemplateListGenerated = InstanceRenderManager({
imex: Object.fromEntries(
Object.entries(allTemplates).filter(([, { enhanced_payroll }]) => !enhanced_payroll)
),
imex: Object.fromEntries(Object.entries(allTemplates).filter(([, { enhanced_payroll }]) => !enhanced_payroll)),
rome: allTemplates
});

View File

@@ -42,7 +42,7 @@ export default function ShopEmployeeTeamsListComponent({ loading, employee_teams
);
}}
loading={loading}
pagination={{ position: "top" }}
pagination={{ placement: "top" }}
columns={columns}
rowKey="id"
dataSource={employee_teams}

View File

@@ -68,7 +68,7 @@ export function ShopInfoUsersComponent({ bodyshop }) {
<div>
<Table
loading={loading}
pagination={{ position: "top" }}
pagination={{ placement: "top" }}
columns={columns}
rowKey="id"
dataSource={data && data.associations}

View File

@@ -95,9 +95,9 @@ export function TechLookupJobsDrawer({ bodyshop, setPrintCenterContext }) {
}
>
<JobsDetailHeader job={data.jobs_by_pk} disabled />
<Divider type="horizontal" />
<Divider orientation="horizontal" />
<Tabs
size="large"
width="large"
defaultActiveKey="lines"
items={[
{

View File

@@ -189,12 +189,7 @@ export function TtApprovalsListComponent({
scroll={{
x: true
}}
pagination={{
position: "top",
pageSize: 25,
current: parseInt(page || 1),
total: total
}}
pagination={{ placement: "top", pageSize: 25, current: parseInt(page || 1), total: total }}
dataSource={tt_approval_queue}
onChange={handleTableChange}
rowSelection={{

View File

@@ -104,12 +104,7 @@ export default function VehiclesListComponent({ loading, vehicles, total, refetc
>
<Table
loading={loading}
pagination={{
position: "top",
pageSize: pageLimit,
current: parseInt(page || 1),
total: total
}}
pagination={{ placement: "top", pageSize: pageLimit, current: parseInt(page || 1), total: total }}
columns={columns}
rowKey="id"
scroll={{ x: true }}

View File

@@ -89,7 +89,7 @@ export default function VendorsListComponent({ handleNewVendor, loading, handleO
>
<Table
loading={loading}
pagination={{ position: "top" }}
pagination={{ placement: "top" }}
columns={columns}
rowKey="id"
onChange={handleTableChange}

View File

@@ -537,17 +537,7 @@ const SocketProvider = ({ children, bodyshop, navigate, currentUser }) => {
setIsConnected(false);
}
};
}, [
bodyshop,
notification,
userAssociationId,
markNotificationRead,
markAllNotificationsRead,
navigate,
currentUser,
Realtime_Notifications_UI,
t
]);
}, [bodyshop?.id, userAssociationId, Realtime_Notifications_UI?.treatment]);
return (
<SocketContext.Provider

View File

@@ -8,7 +8,7 @@ export default function CourtesyCarDetailPageComponent({ contracts, form, saveLo
<Col span={24}>
<CourtesyCarCreateFormComponent form={form} saveLoading={saveLoading} />
</Col>
<Divider type="horizontal" />
<Divider orientation="horizontal" />
<Col span={24}>
<CourtesyCarContractListComponent contracts={contracts} totalContracts={totalContracts} />
</Col>

View File

@@ -190,7 +190,7 @@ export function ExportLogsPageComponent() {
<Table
loading={loading}
pagination={{
position: "top",
placement: "top",
pageSize: pageLimit,
current: parseInt(page || 1, 10),
total: data && data.search_exportlog_aggregate.aggregate.count

View File

@@ -332,7 +332,7 @@ export function JobsDetailPage({
extra={menuExtra}
/>
<JobsDetailHeader job={job} />
<Divider type="horizontal" />
<Divider orientation="horizontal" />
<JobProfileDataWarning job={job} />
<FormFieldsChanged form={form} />
<Tabs

View File

@@ -8,7 +8,7 @@ export default function OwnersDetailComponent({ owner, refetch }) {
<Col span={24}>
<OwnerDetailForm owner={owner} refetch={refetch} />
</Col>
<Divider type="horizontal" />
<Divider orientation="horizontal" />
<Col span={24}>
<OwnerDetailJobsComponent owner={owner} />
</Col>

View File

@@ -176,7 +176,7 @@ export function PhonebookPageComponent({ bodyshop, authLevel }) {
<Table
loading={loading}
pagination={{
position: "top",
placement: "top",
pageSize: pageLimit,
current: parseInt(page || 1, 10),
total: data && data.search_phonebook_aggregate.aggregate.count

View File

@@ -133,7 +133,7 @@ export function SimplifiedPartsJobDetailComponent({ setPrintCenterContext, jobRO
<PageHeader title={<Space>{job.ro_number || t("general.labels.na")}</Space>} extra={menuExtra} />
<JobsDetailHeader job={job} />
<Divider type="horizontal" />
<Divider orientation="horizontal" />
<FormFieldsChanged form={form} />
<Tabs
defaultActiveKey={search.tab}

View File

@@ -9,7 +9,7 @@ export default function VehicleDetailComponent({ vehicle, refetch }) {
<Col span={24}>
<VehicleDetailFormContainer vehicle={vehicle} refetch={refetch} />
</Col>
<Divider type="horizontal" />
<Divider orientation="horizontal" />
<Col span={24}>
<VehicleDetailJobsComponent vehicle={vehicle} />
</Col>