Merged in feature/IO-1828-Front-End-Package-Updates (pull request #1144)
Feature/IO-1828 Front End Package Updates
This commit is contained in:
405
client/package-lock.json
generated
405
client/package-lock.json
generated
@@ -16,13 +16,13 @@
|
||||
"@fingerprintjs/fingerprintjs": "^4.2.1",
|
||||
"@jsreport/browser-client": "^3.1.0",
|
||||
"@reduxjs/toolkit": "^2.0.1",
|
||||
"@sentry/react": "^7.91.0",
|
||||
"@sentry/tracing": "^7.91.0",
|
||||
"@sentry/react": "^7.92.0",
|
||||
"@sentry/tracing": "^7.92.0",
|
||||
"@splitsoftware/splitio-react": "^1.10.2",
|
||||
"@tanem/react-nprogress": "^5.0.51",
|
||||
"antd": "^5.12.5",
|
||||
"antd": "^5.12.8",
|
||||
"apollo-link-logger": "^2.0.1",
|
||||
"axios": "^1.6.3",
|
||||
"axios": "^1.6.4",
|
||||
"craco-less": "^3.0.1",
|
||||
"dayjs": "^1.11.10",
|
||||
"dayjs-business-days2": "^1.2.2",
|
||||
@@ -33,7 +33,7 @@
|
||||
"exifr": "^7.1.3",
|
||||
"firebase": "^10.7.1",
|
||||
"graphql": "^16.6.0",
|
||||
"i18next": "^23.7.12",
|
||||
"i18next": "^23.7.16",
|
||||
"i18next-browser-languagedetector": "^7.0.2",
|
||||
"jsoneditor": "^10.0.0",
|
||||
"jsreport-browser-client-dist": "^1.3.0",
|
||||
@@ -41,7 +41,7 @@
|
||||
"logrocket": "^7.0.0",
|
||||
"markerjs2": "^2.31.4",
|
||||
"normalize-url": "^8.0.0",
|
||||
"phone": "^3.1.41",
|
||||
"phone": "^3.1.42",
|
||||
"preval.macro": "^5.0.0",
|
||||
"prop-types": "^15.8.1",
|
||||
"query-string": "^8.1.0",
|
||||
@@ -50,7 +50,7 @@
|
||||
"react": "^18.2.0",
|
||||
"react-big-calendar": "^1.8.5",
|
||||
"react-color": "^2.19.3",
|
||||
"react-cookie": "^6.1.1",
|
||||
"react-cookie": "^7.0.0",
|
||||
"react-dom": "^18.2.0",
|
||||
"react-drag-listview": "^2.0.0",
|
||||
"react-grid-gallery": "^1.0.0",
|
||||
@@ -70,11 +70,11 @@
|
||||
"recharts": "^2.4.3",
|
||||
"redux": "^5.0.1",
|
||||
"redux-persist": "^6.0.0",
|
||||
"redux-saga": "^1.2.3",
|
||||
"redux-saga": "^1.3.0",
|
||||
"redux-state-sync": "^3.1.4",
|
||||
"reselect": "^5.0.1",
|
||||
"sass": "^1.58.3",
|
||||
"socket.io-client": "^4.7.2",
|
||||
"reselect": "^5.1.0",
|
||||
"sass": "^1.69.7",
|
||||
"socket.io-client": "^4.7.3",
|
||||
"styled-components": "^6.1.6",
|
||||
"subscriptions-transport-ws": "^0.11.0",
|
||||
"terser-webpack-plugin": "^5.3.10",
|
||||
@@ -136,11 +136,11 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@ant-design/colors": {
|
||||
"version": "7.0.0",
|
||||
"resolved": "https://registry.npmjs.org/@ant-design/colors/-/colors-7.0.0.tgz",
|
||||
"integrity": "sha512-iVm/9PfGCbC0dSMBrz7oiEXZaaGH7ceU40OJEfKmyuzR9R5CRimJYPlRiFtMQGQcbNMea/ePcoIebi4ASGYXtg==",
|
||||
"version": "7.0.2",
|
||||
"resolved": "https://registry.npmjs.org/@ant-design/colors/-/colors-7.0.2.tgz",
|
||||
"integrity": "sha512-7KJkhTiPiLHSu+LmMJnehfJ6242OCxSlR3xHVBecYxnMW8MS/878NXct1GqYARyL59fyeFdKRxXTfvR9SnDgJg==",
|
||||
"dependencies": {
|
||||
"@ctrl/tinycolor": "^3.4.0"
|
||||
"@ctrl/tinycolor": "^3.6.1"
|
||||
}
|
||||
},
|
||||
"node_modules/@ant-design/compatible": {
|
||||
@@ -168,15 +168,15 @@
|
||||
"integrity": "sha512-LrX0OGZtW+W6iLnTAqnTaoIsRelYeuLZWsrmBJFUXDALQphPsN8cE5DCsmoSlL0QYb94BQxINiuS70Ar/8BNgA=="
|
||||
},
|
||||
"node_modules/@ant-design/cssinjs": {
|
||||
"version": "1.18.1",
|
||||
"resolved": "https://registry.npmjs.org/@ant-design/cssinjs/-/cssinjs-1.18.1.tgz",
|
||||
"integrity": "sha512-1JURAPrsjK1GwpqByTq3bJ7nF7lbMKDZpehqeR2n8/IR5O58/W1U4VcOeaw5ZyTHri3tEMcom7dyP2tvxpW54g==",
|
||||
"version": "1.18.2",
|
||||
"resolved": "https://registry.npmjs.org/@ant-design/cssinjs/-/cssinjs-1.18.2.tgz",
|
||||
"integrity": "sha512-514V9rjLaFYb3v4s55/8bg2E6fb81b99s3crDZf4nSwtiDLLXs8axnIph+q2TVkY2hbJPZOn/cVsVcnLkzFy7w==",
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.11.1",
|
||||
"@emotion/hash": "^0.8.0",
|
||||
"@emotion/unitless": "^0.7.5",
|
||||
"classnames": "^2.3.1",
|
||||
"csstype": "3.1.2",
|
||||
"csstype": "^3.1.3",
|
||||
"rc-util": "^5.35.0",
|
||||
"stylis": "^4.0.13"
|
||||
},
|
||||
@@ -185,6 +185,11 @@
|
||||
"react-dom": ">=16.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@ant-design/cssinjs/node_modules/csstype": {
|
||||
"version": "3.1.3",
|
||||
"resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz",
|
||||
"integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw=="
|
||||
},
|
||||
"node_modules/@ant-design/icons": {
|
||||
"version": "5.2.6",
|
||||
"resolved": "https://registry.npmjs.org/@ant-design/icons/-/icons-5.2.6.tgz",
|
||||
@@ -4203,14 +4208,14 @@
|
||||
"integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw=="
|
||||
},
|
||||
"node_modules/@rc-component/color-picker": {
|
||||
"version": "1.4.1",
|
||||
"resolved": "https://registry.npmjs.org/@rc-component/color-picker/-/color-picker-1.4.1.tgz",
|
||||
"integrity": "sha512-vh5EWqnsayZa/JwUznqDaPJz39jznx/YDbyBuVJntv735tKXKwEUZZb2jYEldOg+NKWZwtALjGMrNeGBmqFoEw==",
|
||||
"version": "1.5.1",
|
||||
"resolved": "https://registry.npmjs.org/@rc-component/color-picker/-/color-picker-1.5.1.tgz",
|
||||
"integrity": "sha512-onyAFhWKXuG4P162xE+7IgaJkPkwM94XlOYnQuu69XdXWMfxpeFi6tpJBsieIMV7EnyLV5J3lDzdLiFeK0iEBA==",
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.10.1",
|
||||
"@ctrl/tinycolor": "^3.6.0",
|
||||
"@babel/runtime": "^7.23.6",
|
||||
"@ctrl/tinycolor": "^3.6.1",
|
||||
"classnames": "^2.2.6",
|
||||
"rc-util": "^5.30.0"
|
||||
"rc-util": "^5.38.1"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"react": ">=16.9.0",
|
||||
@@ -4315,9 +4320,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@redux-saga/core": {
|
||||
"version": "1.2.3",
|
||||
"resolved": "https://registry.npmjs.org/@redux-saga/core/-/core-1.2.3.tgz",
|
||||
"integrity": "sha512-U1JO6ncFBAklFTwoQ3mjAeQZ6QGutsJzwNBjgVLSWDpZTRhobUzuVDS1qH3SKGJD8fvqoaYOjp6XJ3gCmeZWgA==",
|
||||
"version": "1.3.0",
|
||||
"resolved": "https://registry.npmjs.org/@redux-saga/core/-/core-1.3.0.tgz",
|
||||
"integrity": "sha512-L+i+qIGuyWn7CIg7k1MteHGfttKPmxwZR5E7OsGikCL2LzYA0RERlaUY00Y3P3ZV2EYgrsYlBrGs6cJP5OKKqA==",
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.6.3",
|
||||
"@redux-saga/deferred": "^1.2.1",
|
||||
@@ -4325,7 +4330,6 @@
|
||||
"@redux-saga/is": "^1.1.3",
|
||||
"@redux-saga/symbols": "^1.1.3",
|
||||
"@redux-saga/types": "^1.2.1",
|
||||
"redux": "^4.0.4",
|
||||
"typescript-tuple": "^2.2.1"
|
||||
},
|
||||
"funding": {
|
||||
@@ -4333,14 +4337,6 @@
|
||||
"url": "https://opencollective.com/redux-saga"
|
||||
}
|
||||
},
|
||||
"node_modules/@redux-saga/core/node_modules/redux": {
|
||||
"version": "4.2.1",
|
||||
"resolved": "https://registry.npmjs.org/redux/-/redux-4.2.1.tgz",
|
||||
"integrity": "sha512-LAUYz4lc+Do8/g7aeRa8JkyDErK6ekstQaqWQrNRW//MY1TvCEpMtpTWvlQ+FPbWCx+Xixu/6SHt5N0HR+SB4w==",
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.9.2"
|
||||
}
|
||||
},
|
||||
"node_modules/@redux-saga/deferred": {
|
||||
"version": "1.2.1",
|
||||
"resolved": "https://registry.npmjs.org/@redux-saga/deferred/-/deferred-1.2.1.tgz",
|
||||
@@ -4512,44 +4508,44 @@
|
||||
"integrity": "sha512-2/U3GXA6YiPYQDLGwtGlnNgKYBSwCFIHf8Y9LUY5VATHdtbLlU0Y1R3QoBnT0aB4qv/BEiVVsj7LJXoQCgJ2vA=="
|
||||
},
|
||||
"node_modules/@sentry-internal/feedback": {
|
||||
"version": "7.91.0",
|
||||
"resolved": "https://registry.npmjs.org/@sentry-internal/feedback/-/feedback-7.91.0.tgz",
|
||||
"integrity": "sha512-SJKTSaz68F5YIwF79EttBm915M2LnacgZMYRnRumyTmMKnebGhYQLwWbZdpaDvOa1U18dgRajDX8Qed/8A3tXw==",
|
||||
"version": "7.92.0",
|
||||
"resolved": "https://registry.npmjs.org/@sentry-internal/feedback/-/feedback-7.92.0.tgz",
|
||||
"integrity": "sha512-/jEALRtVqboxB9kcK2tag8QCO6XANTlGBb9RV3oeGXJe0DDNJXRq6wVZbfgztXJRrfgx4XVDcNt1pRVoGGG++g==",
|
||||
"dependencies": {
|
||||
"@sentry/core": "7.91.0",
|
||||
"@sentry/types": "7.91.0",
|
||||
"@sentry/utils": "7.91.0"
|
||||
"@sentry/core": "7.92.0",
|
||||
"@sentry/types": "7.92.0",
|
||||
"@sentry/utils": "7.92.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=12"
|
||||
}
|
||||
},
|
||||
"node_modules/@sentry-internal/feedback/node_modules/@sentry/core": {
|
||||
"version": "7.91.0",
|
||||
"resolved": "https://registry.npmjs.org/@sentry/core/-/core-7.91.0.tgz",
|
||||
"integrity": "sha512-tu+gYq4JrTdrR+YSh5IVHF0fJi/Pi9y0HZ5H9HnYy+UMcXIotxf6hIEaC6ZKGeLWkGXffz2gKpQLe/g6vy/lPA==",
|
||||
"version": "7.92.0",
|
||||
"resolved": "https://registry.npmjs.org/@sentry/core/-/core-7.92.0.tgz",
|
||||
"integrity": "sha512-1Tly7YB2I1byI5xb0Cwrxs56Rhww+6mQ7m9P7rTmdC3/ijOzbEoohtYIUPwcooCEarpbEJe/tAayRx6BrH2UbQ==",
|
||||
"dependencies": {
|
||||
"@sentry/types": "7.91.0",
|
||||
"@sentry/utils": "7.91.0"
|
||||
"@sentry/types": "7.92.0",
|
||||
"@sentry/utils": "7.92.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=8"
|
||||
}
|
||||
},
|
||||
"node_modules/@sentry-internal/feedback/node_modules/@sentry/types": {
|
||||
"version": "7.91.0",
|
||||
"resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.91.0.tgz",
|
||||
"integrity": "sha512-bcQnb7J3P3equbCUc+sPuHog2Y47yGD2sCkzmnZBjvBT0Z1B4f36fI/5WjyZhTjLSiOdg3F2otwvikbMjmBDew==",
|
||||
"version": "7.92.0",
|
||||
"resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.92.0.tgz",
|
||||
"integrity": "sha512-APmSOuZuoRGpbPpPeYIbMSplPjiWNLZRQa73QiXuTflW4Tu/ItDlU8hOa2+A6JKVkJCuD2EN6yUrxDGSMyNXeg==",
|
||||
"engines": {
|
||||
"node": ">=8"
|
||||
}
|
||||
},
|
||||
"node_modules/@sentry-internal/feedback/node_modules/@sentry/utils": {
|
||||
"version": "7.91.0",
|
||||
"resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-7.91.0.tgz",
|
||||
"integrity": "sha512-fvxjrEbk6T6Otu++Ax9ntlQ0sGRiwSC179w68aC3u26Wr30FAIRKqHTCCdc2jyWk7Gd9uWRT/cq+g8NG/8BfSg==",
|
||||
"version": "7.92.0",
|
||||
"resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-7.92.0.tgz",
|
||||
"integrity": "sha512-3nEfrQ1z28b/2zgFGANPh5yMVtgwXmrasZxTvKbrAj+KWJpjrJHrIR84r9W277J44NMeZ5RhRW2uoDmuBslPnA==",
|
||||
"dependencies": {
|
||||
"@sentry/types": "7.91.0"
|
||||
"@sentry/types": "7.92.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=8"
|
||||
@@ -4570,60 +4566,60 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@sentry/browser": {
|
||||
"version": "7.91.0",
|
||||
"resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-7.91.0.tgz",
|
||||
"integrity": "sha512-lJv3x/xekzC/biiyAsVCioq2XnKNOZhI6jY3ZzLJZClYV8eKRi7D3KCsHRvMiCdGak1d/6sVp8F4NYY+YiWy1Q==",
|
||||
"version": "7.92.0",
|
||||
"resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-7.92.0.tgz",
|
||||
"integrity": "sha512-loMr02/zQ38u8aQhYLtIBg0i5n3ps2e3GUXrt3CdsJQdkRYfa62gcrE7SzvoEpMVHTk7VOI4fWGht8cWw/1k3A==",
|
||||
"dependencies": {
|
||||
"@sentry-internal/feedback": "7.91.0",
|
||||
"@sentry-internal/tracing": "7.91.0",
|
||||
"@sentry/core": "7.91.0",
|
||||
"@sentry/replay": "7.91.0",
|
||||
"@sentry/types": "7.91.0",
|
||||
"@sentry/utils": "7.91.0"
|
||||
"@sentry-internal/feedback": "7.92.0",
|
||||
"@sentry-internal/tracing": "7.92.0",
|
||||
"@sentry/core": "7.92.0",
|
||||
"@sentry/replay": "7.92.0",
|
||||
"@sentry/types": "7.92.0",
|
||||
"@sentry/utils": "7.92.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=8"
|
||||
}
|
||||
},
|
||||
"node_modules/@sentry/browser/node_modules/@sentry-internal/tracing": {
|
||||
"version": "7.91.0",
|
||||
"resolved": "https://registry.npmjs.org/@sentry-internal/tracing/-/tracing-7.91.0.tgz",
|
||||
"integrity": "sha512-JH5y6gs6BS0its7WF2DhySu7nkhPDfZcdpAXldxzIlJpqFkuwQKLU5nkYJpiIyZz1NHYYtW5aum2bV2oCOdDRA==",
|
||||
"version": "7.92.0",
|
||||
"resolved": "https://registry.npmjs.org/@sentry-internal/tracing/-/tracing-7.92.0.tgz",
|
||||
"integrity": "sha512-ur55vPcUUUWFUX4eVLNP71ohswK7ZZpleNZw9Y1GfLqyI+0ILQUwjtzqItJrdClvVsdRZJMRmDV40Hp9Lbb9mA==",
|
||||
"dependencies": {
|
||||
"@sentry/core": "7.91.0",
|
||||
"@sentry/types": "7.91.0",
|
||||
"@sentry/utils": "7.91.0"
|
||||
"@sentry/core": "7.92.0",
|
||||
"@sentry/types": "7.92.0",
|
||||
"@sentry/utils": "7.92.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=8"
|
||||
}
|
||||
},
|
||||
"node_modules/@sentry/browser/node_modules/@sentry/core": {
|
||||
"version": "7.91.0",
|
||||
"resolved": "https://registry.npmjs.org/@sentry/core/-/core-7.91.0.tgz",
|
||||
"integrity": "sha512-tu+gYq4JrTdrR+YSh5IVHF0fJi/Pi9y0HZ5H9HnYy+UMcXIotxf6hIEaC6ZKGeLWkGXffz2gKpQLe/g6vy/lPA==",
|
||||
"version": "7.92.0",
|
||||
"resolved": "https://registry.npmjs.org/@sentry/core/-/core-7.92.0.tgz",
|
||||
"integrity": "sha512-1Tly7YB2I1byI5xb0Cwrxs56Rhww+6mQ7m9P7rTmdC3/ijOzbEoohtYIUPwcooCEarpbEJe/tAayRx6BrH2UbQ==",
|
||||
"dependencies": {
|
||||
"@sentry/types": "7.91.0",
|
||||
"@sentry/utils": "7.91.0"
|
||||
"@sentry/types": "7.92.0",
|
||||
"@sentry/utils": "7.92.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=8"
|
||||
}
|
||||
},
|
||||
"node_modules/@sentry/browser/node_modules/@sentry/types": {
|
||||
"version": "7.91.0",
|
||||
"resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.91.0.tgz",
|
||||
"integrity": "sha512-bcQnb7J3P3equbCUc+sPuHog2Y47yGD2sCkzmnZBjvBT0Z1B4f36fI/5WjyZhTjLSiOdg3F2otwvikbMjmBDew==",
|
||||
"version": "7.92.0",
|
||||
"resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.92.0.tgz",
|
||||
"integrity": "sha512-APmSOuZuoRGpbPpPeYIbMSplPjiWNLZRQa73QiXuTflW4Tu/ItDlU8hOa2+A6JKVkJCuD2EN6yUrxDGSMyNXeg==",
|
||||
"engines": {
|
||||
"node": ">=8"
|
||||
}
|
||||
},
|
||||
"node_modules/@sentry/browser/node_modules/@sentry/utils": {
|
||||
"version": "7.91.0",
|
||||
"resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-7.91.0.tgz",
|
||||
"integrity": "sha512-fvxjrEbk6T6Otu++Ax9ntlQ0sGRiwSC179w68aC3u26Wr30FAIRKqHTCCdc2jyWk7Gd9uWRT/cq+g8NG/8BfSg==",
|
||||
"version": "7.92.0",
|
||||
"resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-7.92.0.tgz",
|
||||
"integrity": "sha512-3nEfrQ1z28b/2zgFGANPh5yMVtgwXmrasZxTvKbrAj+KWJpjrJHrIR84r9W277J44NMeZ5RhRW2uoDmuBslPnA==",
|
||||
"dependencies": {
|
||||
"@sentry/types": "7.91.0"
|
||||
"@sentry/types": "7.92.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=8"
|
||||
@@ -4821,13 +4817,13 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@sentry/react": {
|
||||
"version": "7.91.0",
|
||||
"resolved": "https://registry.npmjs.org/@sentry/react/-/react-7.91.0.tgz",
|
||||
"integrity": "sha512-7JH2rWaX3WKHHvBcZQ4f/KnkYIXTf7hMojRFncUwPocdtDlhJw/JUvjAYNpEysixXIgsMes3B32lmtZjGjRhwQ==",
|
||||
"version": "7.92.0",
|
||||
"resolved": "https://registry.npmjs.org/@sentry/react/-/react-7.92.0.tgz",
|
||||
"integrity": "sha512-lTvrLuvxtGEZbkW6NHru03K6eyixKyBliwiLwO+k37FK7Ha8Bwat2m77weyizWCdQ6DKlVazJNppkNeAlACIvQ==",
|
||||
"dependencies": {
|
||||
"@sentry/browser": "7.91.0",
|
||||
"@sentry/types": "7.91.0",
|
||||
"@sentry/utils": "7.91.0",
|
||||
"@sentry/browser": "7.92.0",
|
||||
"@sentry/types": "7.92.0",
|
||||
"@sentry/utils": "7.92.0",
|
||||
"hoist-non-react-statics": "^3.3.2"
|
||||
},
|
||||
"engines": {
|
||||
@@ -4838,132 +4834,132 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@sentry/react/node_modules/@sentry/types": {
|
||||
"version": "7.91.0",
|
||||
"resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.91.0.tgz",
|
||||
"integrity": "sha512-bcQnb7J3P3equbCUc+sPuHog2Y47yGD2sCkzmnZBjvBT0Z1B4f36fI/5WjyZhTjLSiOdg3F2otwvikbMjmBDew==",
|
||||
"version": "7.92.0",
|
||||
"resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.92.0.tgz",
|
||||
"integrity": "sha512-APmSOuZuoRGpbPpPeYIbMSplPjiWNLZRQa73QiXuTflW4Tu/ItDlU8hOa2+A6JKVkJCuD2EN6yUrxDGSMyNXeg==",
|
||||
"engines": {
|
||||
"node": ">=8"
|
||||
}
|
||||
},
|
||||
"node_modules/@sentry/react/node_modules/@sentry/utils": {
|
||||
"version": "7.91.0",
|
||||
"resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-7.91.0.tgz",
|
||||
"integrity": "sha512-fvxjrEbk6T6Otu++Ax9ntlQ0sGRiwSC179w68aC3u26Wr30FAIRKqHTCCdc2jyWk7Gd9uWRT/cq+g8NG/8BfSg==",
|
||||
"version": "7.92.0",
|
||||
"resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-7.92.0.tgz",
|
||||
"integrity": "sha512-3nEfrQ1z28b/2zgFGANPh5yMVtgwXmrasZxTvKbrAj+KWJpjrJHrIR84r9W277J44NMeZ5RhRW2uoDmuBslPnA==",
|
||||
"dependencies": {
|
||||
"@sentry/types": "7.91.0"
|
||||
"@sentry/types": "7.92.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=8"
|
||||
}
|
||||
},
|
||||
"node_modules/@sentry/replay": {
|
||||
"version": "7.91.0",
|
||||
"resolved": "https://registry.npmjs.org/@sentry/replay/-/replay-7.91.0.tgz",
|
||||
"integrity": "sha512-XwbesnLLNtaVXKtDoyBB96GxJuhGi9zy3a662Ba/McmumCnkXrMQYpQPh08U7MgkTyDRgjDwm7PXDhiKpcb03g==",
|
||||
"version": "7.92.0",
|
||||
"resolved": "https://registry.npmjs.org/@sentry/replay/-/replay-7.92.0.tgz",
|
||||
"integrity": "sha512-G1t9Uvc9cR8VpNkElwvHIMGzykjIKikb10n0tfVd3e+rBPMCCjCPWOduwG6jZYxcvCjTpqmJh6NSLXxL/Mt4JA==",
|
||||
"dependencies": {
|
||||
"@sentry-internal/tracing": "7.91.0",
|
||||
"@sentry/core": "7.91.0",
|
||||
"@sentry/types": "7.91.0",
|
||||
"@sentry/utils": "7.91.0"
|
||||
"@sentry-internal/tracing": "7.92.0",
|
||||
"@sentry/core": "7.92.0",
|
||||
"@sentry/types": "7.92.0",
|
||||
"@sentry/utils": "7.92.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=12"
|
||||
}
|
||||
},
|
||||
"node_modules/@sentry/replay/node_modules/@sentry-internal/tracing": {
|
||||
"version": "7.91.0",
|
||||
"resolved": "https://registry.npmjs.org/@sentry-internal/tracing/-/tracing-7.91.0.tgz",
|
||||
"integrity": "sha512-JH5y6gs6BS0its7WF2DhySu7nkhPDfZcdpAXldxzIlJpqFkuwQKLU5nkYJpiIyZz1NHYYtW5aum2bV2oCOdDRA==",
|
||||
"version": "7.92.0",
|
||||
"resolved": "https://registry.npmjs.org/@sentry-internal/tracing/-/tracing-7.92.0.tgz",
|
||||
"integrity": "sha512-ur55vPcUUUWFUX4eVLNP71ohswK7ZZpleNZw9Y1GfLqyI+0ILQUwjtzqItJrdClvVsdRZJMRmDV40Hp9Lbb9mA==",
|
||||
"dependencies": {
|
||||
"@sentry/core": "7.91.0",
|
||||
"@sentry/types": "7.91.0",
|
||||
"@sentry/utils": "7.91.0"
|
||||
"@sentry/core": "7.92.0",
|
||||
"@sentry/types": "7.92.0",
|
||||
"@sentry/utils": "7.92.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=8"
|
||||
}
|
||||
},
|
||||
"node_modules/@sentry/replay/node_modules/@sentry/core": {
|
||||
"version": "7.91.0",
|
||||
"resolved": "https://registry.npmjs.org/@sentry/core/-/core-7.91.0.tgz",
|
||||
"integrity": "sha512-tu+gYq4JrTdrR+YSh5IVHF0fJi/Pi9y0HZ5H9HnYy+UMcXIotxf6hIEaC6ZKGeLWkGXffz2gKpQLe/g6vy/lPA==",
|
||||
"version": "7.92.0",
|
||||
"resolved": "https://registry.npmjs.org/@sentry/core/-/core-7.92.0.tgz",
|
||||
"integrity": "sha512-1Tly7YB2I1byI5xb0Cwrxs56Rhww+6mQ7m9P7rTmdC3/ijOzbEoohtYIUPwcooCEarpbEJe/tAayRx6BrH2UbQ==",
|
||||
"dependencies": {
|
||||
"@sentry/types": "7.91.0",
|
||||
"@sentry/utils": "7.91.0"
|
||||
"@sentry/types": "7.92.0",
|
||||
"@sentry/utils": "7.92.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=8"
|
||||
}
|
||||
},
|
||||
"node_modules/@sentry/replay/node_modules/@sentry/types": {
|
||||
"version": "7.91.0",
|
||||
"resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.91.0.tgz",
|
||||
"integrity": "sha512-bcQnb7J3P3equbCUc+sPuHog2Y47yGD2sCkzmnZBjvBT0Z1B4f36fI/5WjyZhTjLSiOdg3F2otwvikbMjmBDew==",
|
||||
"version": "7.92.0",
|
||||
"resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.92.0.tgz",
|
||||
"integrity": "sha512-APmSOuZuoRGpbPpPeYIbMSplPjiWNLZRQa73QiXuTflW4Tu/ItDlU8hOa2+A6JKVkJCuD2EN6yUrxDGSMyNXeg==",
|
||||
"engines": {
|
||||
"node": ">=8"
|
||||
}
|
||||
},
|
||||
"node_modules/@sentry/replay/node_modules/@sentry/utils": {
|
||||
"version": "7.91.0",
|
||||
"resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-7.91.0.tgz",
|
||||
"integrity": "sha512-fvxjrEbk6T6Otu++Ax9ntlQ0sGRiwSC179w68aC3u26Wr30FAIRKqHTCCdc2jyWk7Gd9uWRT/cq+g8NG/8BfSg==",
|
||||
"version": "7.92.0",
|
||||
"resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-7.92.0.tgz",
|
||||
"integrity": "sha512-3nEfrQ1z28b/2zgFGANPh5yMVtgwXmrasZxTvKbrAj+KWJpjrJHrIR84r9W277J44NMeZ5RhRW2uoDmuBslPnA==",
|
||||
"dependencies": {
|
||||
"@sentry/types": "7.91.0"
|
||||
"@sentry/types": "7.92.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=8"
|
||||
}
|
||||
},
|
||||
"node_modules/@sentry/tracing": {
|
||||
"version": "7.91.0",
|
||||
"resolved": "https://registry.npmjs.org/@sentry/tracing/-/tracing-7.91.0.tgz",
|
||||
"integrity": "sha512-IlSAMvqfCL/2TwwN4Tmk6bGMgilGruv5oIJ1GMenVZk53bHwjpjzMbd0ms8+S5zJwAgTQXoCbRhaFFrNmptteQ==",
|
||||
"version": "7.92.0",
|
||||
"resolved": "https://registry.npmjs.org/@sentry/tracing/-/tracing-7.92.0.tgz",
|
||||
"integrity": "sha512-1+TFFPVEdax4dNi68gin6MENiyGe9mOuNXfjulrP5eCzUEByus5HAxeDI/LLQ1hArfn048AzwSwKUsS2fO5sbg==",
|
||||
"dependencies": {
|
||||
"@sentry-internal/tracing": "7.91.0"
|
||||
"@sentry-internal/tracing": "7.92.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=8"
|
||||
}
|
||||
},
|
||||
"node_modules/@sentry/tracing/node_modules/@sentry-internal/tracing": {
|
||||
"version": "7.91.0",
|
||||
"resolved": "https://registry.npmjs.org/@sentry-internal/tracing/-/tracing-7.91.0.tgz",
|
||||
"integrity": "sha512-JH5y6gs6BS0its7WF2DhySu7nkhPDfZcdpAXldxzIlJpqFkuwQKLU5nkYJpiIyZz1NHYYtW5aum2bV2oCOdDRA==",
|
||||
"version": "7.92.0",
|
||||
"resolved": "https://registry.npmjs.org/@sentry-internal/tracing/-/tracing-7.92.0.tgz",
|
||||
"integrity": "sha512-ur55vPcUUUWFUX4eVLNP71ohswK7ZZpleNZw9Y1GfLqyI+0ILQUwjtzqItJrdClvVsdRZJMRmDV40Hp9Lbb9mA==",
|
||||
"dependencies": {
|
||||
"@sentry/core": "7.91.0",
|
||||
"@sentry/types": "7.91.0",
|
||||
"@sentry/utils": "7.91.0"
|
||||
"@sentry/core": "7.92.0",
|
||||
"@sentry/types": "7.92.0",
|
||||
"@sentry/utils": "7.92.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=8"
|
||||
}
|
||||
},
|
||||
"node_modules/@sentry/tracing/node_modules/@sentry/core": {
|
||||
"version": "7.91.0",
|
||||
"resolved": "https://registry.npmjs.org/@sentry/core/-/core-7.91.0.tgz",
|
||||
"integrity": "sha512-tu+gYq4JrTdrR+YSh5IVHF0fJi/Pi9y0HZ5H9HnYy+UMcXIotxf6hIEaC6ZKGeLWkGXffz2gKpQLe/g6vy/lPA==",
|
||||
"version": "7.92.0",
|
||||
"resolved": "https://registry.npmjs.org/@sentry/core/-/core-7.92.0.tgz",
|
||||
"integrity": "sha512-1Tly7YB2I1byI5xb0Cwrxs56Rhww+6mQ7m9P7rTmdC3/ijOzbEoohtYIUPwcooCEarpbEJe/tAayRx6BrH2UbQ==",
|
||||
"dependencies": {
|
||||
"@sentry/types": "7.91.0",
|
||||
"@sentry/utils": "7.91.0"
|
||||
"@sentry/types": "7.92.0",
|
||||
"@sentry/utils": "7.92.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=8"
|
||||
}
|
||||
},
|
||||
"node_modules/@sentry/tracing/node_modules/@sentry/types": {
|
||||
"version": "7.91.0",
|
||||
"resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.91.0.tgz",
|
||||
"integrity": "sha512-bcQnb7J3P3equbCUc+sPuHog2Y47yGD2sCkzmnZBjvBT0Z1B4f36fI/5WjyZhTjLSiOdg3F2otwvikbMjmBDew==",
|
||||
"version": "7.92.0",
|
||||
"resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.92.0.tgz",
|
||||
"integrity": "sha512-APmSOuZuoRGpbPpPeYIbMSplPjiWNLZRQa73QiXuTflW4Tu/ItDlU8hOa2+A6JKVkJCuD2EN6yUrxDGSMyNXeg==",
|
||||
"engines": {
|
||||
"node": ">=8"
|
||||
}
|
||||
},
|
||||
"node_modules/@sentry/tracing/node_modules/@sentry/utils": {
|
||||
"version": "7.91.0",
|
||||
"resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-7.91.0.tgz",
|
||||
"integrity": "sha512-fvxjrEbk6T6Otu++Ax9ntlQ0sGRiwSC179w68aC3u26Wr30FAIRKqHTCCdc2jyWk7Gd9uWRT/cq+g8NG/8BfSg==",
|
||||
"version": "7.92.0",
|
||||
"resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-7.92.0.tgz",
|
||||
"integrity": "sha512-3nEfrQ1z28b/2zgFGANPh5yMVtgwXmrasZxTvKbrAj+KWJpjrJHrIR84r9W277J44NMeZ5RhRW2uoDmuBslPnA==",
|
||||
"dependencies": {
|
||||
"@sentry/types": "7.91.0"
|
||||
"@sentry/types": "7.92.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=8"
|
||||
@@ -5478,9 +5474,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@types/cookie": {
|
||||
"version": "0.5.4",
|
||||
"resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.5.4.tgz",
|
||||
"integrity": "sha512-7z/eR6O859gyWIAjuvBWFzNURmf2oPBmJlfVWkwehU5nzIyjwBsTh7WMmEEV4JFnHuQ3ex4oyTvfKzcyJVDBNA=="
|
||||
"version": "0.6.0",
|
||||
"resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.6.0.tgz",
|
||||
"integrity": "sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA=="
|
||||
},
|
||||
"node_modules/@types/d3-array": {
|
||||
"version": "3.2.1",
|
||||
@@ -6544,23 +6540,22 @@
|
||||
}
|
||||
},
|
||||
"node_modules/antd": {
|
||||
"version": "5.12.5",
|
||||
"resolved": "https://registry.npmjs.org/antd/-/antd-5.12.5.tgz",
|
||||
"integrity": "sha512-m9r9VhTmANS4kdBwHcxI4QWIGoZh3LspXNb2SxoezRSUZ9RUFpf+gO0AjPx8EPeO/nLKsHAoCSLza9r041bAgw==",
|
||||
"version": "5.12.8",
|
||||
"resolved": "https://registry.npmjs.org/antd/-/antd-5.12.8.tgz",
|
||||
"integrity": "sha512-R2CRcB+aaVZurb3J0IKpBRWq5kW4CLcSqDF58/QBsqYdzK7XjSvM8+eF3rWVRUDbSJfGmyW7I80ywNRYpW1+vA==",
|
||||
"dependencies": {
|
||||
"@ant-design/colors": "^7.0.0",
|
||||
"@ant-design/cssinjs": "^1.18.1",
|
||||
"@ant-design/colors": "^7.0.2",
|
||||
"@ant-design/cssinjs": "^1.18.2",
|
||||
"@ant-design/icons": "^5.2.6",
|
||||
"@ant-design/react-slick": "~1.0.2",
|
||||
"@babel/runtime": "^7.23.4",
|
||||
"@ctrl/tinycolor": "^3.6.1",
|
||||
"@rc-component/color-picker": "~1.4.1",
|
||||
"@rc-component/color-picker": "~1.5.1",
|
||||
"@rc-component/mutate-observer": "^1.1.0",
|
||||
"@rc-component/tour": "~1.11.1",
|
||||
"@rc-component/trigger": "^1.18.2",
|
||||
"classnames": "^2.3.2",
|
||||
"classnames": "^2.5.1",
|
||||
"copy-to-clipboard": "^3.3.3",
|
||||
"dayjs": "^1.11.1",
|
||||
"dayjs": "^1.11.10",
|
||||
"qrcode.react": "^3.1.0",
|
||||
"rc-cascader": "~3.20.0",
|
||||
"rc-checkbox": "~3.1.0",
|
||||
@@ -6576,7 +6571,7 @@
|
||||
"rc-menu": "~9.12.4",
|
||||
"rc-motion": "^2.9.0",
|
||||
"rc-notification": "~5.3.0",
|
||||
"rc-pagination": "~4.0.3",
|
||||
"rc-pagination": "~4.0.4",
|
||||
"rc-picker": "~3.14.6",
|
||||
"rc-progress": "~3.5.1",
|
||||
"rc-rate": "~2.12.0",
|
||||
@@ -6592,7 +6587,7 @@
|
||||
"rc-tooltip": "~6.1.3",
|
||||
"rc-tree": "~5.8.2",
|
||||
"rc-tree-select": "~5.15.0",
|
||||
"rc-upload": "~4.3.5",
|
||||
"rc-upload": "~4.5.2",
|
||||
"rc-util": "^5.38.1",
|
||||
"scroll-into-view-if-needed": "^3.1.0",
|
||||
"throttle-debounce": "^5.0.0"
|
||||
@@ -6966,11 +6961,11 @@
|
||||
}
|
||||
},
|
||||
"node_modules/axios": {
|
||||
"version": "1.6.3",
|
||||
"resolved": "https://registry.npmjs.org/axios/-/axios-1.6.3.tgz",
|
||||
"integrity": "sha512-fWyNdeawGam70jXSVlKl+SUNVcL6j6W79CuSIPfi6HnDUmSCH6gyUys/HrqHeA/wU0Az41rRgean494d0Jb+ww==",
|
||||
"version": "1.6.4",
|
||||
"resolved": "https://registry.npmjs.org/axios/-/axios-1.6.4.tgz",
|
||||
"integrity": "sha512-heJnIs6N4aa1eSthhN9M5ioILu8Wi8vmQW9iHQ9NUvfkJb0lEEDUiIdQNAuBtfUt3FxReaKdpQA5DbmMOqzF/A==",
|
||||
"dependencies": {
|
||||
"follow-redirects": "^1.15.0",
|
||||
"follow-redirects": "^1.15.4",
|
||||
"form-data": "^4.0.0",
|
||||
"proxy-from-env": "^1.1.0"
|
||||
}
|
||||
@@ -7814,9 +7809,9 @@
|
||||
"integrity": "sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ=="
|
||||
},
|
||||
"node_modules/classnames": {
|
||||
"version": "2.3.2",
|
||||
"resolved": "https://registry.npmjs.org/classnames/-/classnames-2.3.2.tgz",
|
||||
"integrity": "sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw=="
|
||||
"version": "2.5.1",
|
||||
"resolved": "https://registry.npmjs.org/classnames/-/classnames-2.5.1.tgz",
|
||||
"integrity": "sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow=="
|
||||
},
|
||||
"node_modules/clean-css": {
|
||||
"version": "5.3.3",
|
||||
@@ -11089,9 +11084,9 @@
|
||||
"integrity": "sha512-GmrB+b6woz6CCdQe6w1GHs/1lt25l7SR5hmhF8jRdarpv/OgjLyuQygLu1makJapixeb1aQhP/Oa1iKi93o/aQ=="
|
||||
},
|
||||
"node_modules/follow-redirects": {
|
||||
"version": "1.15.3",
|
||||
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.3.tgz",
|
||||
"integrity": "sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q==",
|
||||
"version": "1.15.4",
|
||||
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.4.tgz",
|
||||
"integrity": "sha512-Cr4D/5wlrb0z9dgERpUL3LrmPKVDsETIJhaCMeDfuFYcqa5bldGV6wBsAN6X/vxlXQtFBMrXdXxdL8CbDTGniw==",
|
||||
"funding": [
|
||||
{
|
||||
"type": "individual",
|
||||
@@ -12009,9 +12004,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/i18next": {
|
||||
"version": "23.7.12",
|
||||
"resolved": "https://registry.npmjs.org/i18next/-/i18next-23.7.12.tgz",
|
||||
"integrity": "sha512-BZcAvh5M/s2CDrbxNFT8kscfzCYW607wnc4wnQ11HaHDJlS46P/0+P++nmgnc5CIjSQ1DfHAM9RE+hIyALvI7g==",
|
||||
"version": "23.7.16",
|
||||
"resolved": "https://registry.npmjs.org/i18next/-/i18next-23.7.16.tgz",
|
||||
"integrity": "sha512-SrqFkMn9W6Wb43ZJ9qrO6U2U4S80RsFMA7VYFSqp7oc7RllQOYDCdRfsse6A7Cq/V8MnpxKvJCYgM8++27n4Fw==",
|
||||
"funding": [
|
||||
{
|
||||
"type": "individual",
|
||||
@@ -15655,9 +15650,9 @@
|
||||
"integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow=="
|
||||
},
|
||||
"node_modules/phone": {
|
||||
"version": "3.1.41",
|
||||
"resolved": "https://registry.npmjs.org/phone/-/phone-3.1.41.tgz",
|
||||
"integrity": "sha512-sjYk1DdjYqSbcfYyeHQ6FNXr2RH7gHtkQflyleSBQ0V83db3tO9sXHhsr5WyYdsXaOW2tBg4p+P8HVgwFRJp+Q==",
|
||||
"version": "3.1.42",
|
||||
"resolved": "https://registry.npmjs.org/phone/-/phone-3.1.42.tgz",
|
||||
"integrity": "sha512-J+cbZtGcN/ph10TRxwCLYZx9/k4WOU1wImMiUiUjr/2sWnY7bR7CadehbsM8E9UyG+/shgmH++eKbhD0kR4EZA==",
|
||||
"engines": {
|
||||
"node": ">=12"
|
||||
}
|
||||
@@ -17652,9 +17647,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/rc-pagination": {
|
||||
"version": "4.0.3",
|
||||
"resolved": "https://registry.npmjs.org/rc-pagination/-/rc-pagination-4.0.3.tgz",
|
||||
"integrity": "sha512-s1MNwyU83AgycikYckRdpmkN+4ZZuul0E0YdDp7dMgcjg/d2fak767ZIbLP4Q5YPPla7NDorfVFTvGQAPj6jXA==",
|
||||
"version": "4.0.4",
|
||||
"resolved": "https://registry.npmjs.org/rc-pagination/-/rc-pagination-4.0.4.tgz",
|
||||
"integrity": "sha512-GGrLT4NgG6wgJpT/hHIpL9nELv27A1XbSZzECIuQBQTVSf4xGKxWr6I/jhpRPauYEWEbWVw22ObG6tJQqwJqWQ==",
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.10.1",
|
||||
"classnames": "^2.3.2",
|
||||
@@ -17977,9 +17972,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/rc-upload": {
|
||||
"version": "4.3.5",
|
||||
"resolved": "https://registry.npmjs.org/rc-upload/-/rc-upload-4.3.5.tgz",
|
||||
"integrity": "sha512-EHlKJbhkgFSQHliTj9v/2K5aEuFwfUQgZARzD7AmAPOneZEPiCNF3n6PEWIuqz9h7oq6FuXgdR67sC5BWFxJbA==",
|
||||
"version": "4.5.2",
|
||||
"resolved": "https://registry.npmjs.org/rc-upload/-/rc-upload-4.5.2.tgz",
|
||||
"integrity": "sha512-QO3ne77DwnAPKFn0bA5qJM81QBjQi0e0NHdkvpFyY73Bea2NfITiotqJqVjHgeYPOJu5lLVR32TNGP084aSoXA==",
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.18.3",
|
||||
"classnames": "^2.2.5",
|
||||
@@ -18173,13 +18168,13 @@
|
||||
}
|
||||
},
|
||||
"node_modules/react-cookie": {
|
||||
"version": "6.1.1",
|
||||
"resolved": "https://registry.npmjs.org/react-cookie/-/react-cookie-6.1.1.tgz",
|
||||
"integrity": "sha512-fuFRpf8LH6SfmVMowDUIRywJF5jAUDUWrm0EI5VdXfTl5bPcJ7B0zWbuYpT0Tvikx7Gs18MlvAT+P+744dUz2g==",
|
||||
"version": "7.0.0",
|
||||
"resolved": "https://registry.npmjs.org/react-cookie/-/react-cookie-7.0.0.tgz",
|
||||
"integrity": "sha512-BDXJ9J0zo8xJtoTY3vu6Mn+67gdi1Q1JIJndFMemeHu3tEAN2G3EYqYfB0KNL3IXev3h+lfuOKJYvPYWMN4ijg==",
|
||||
"dependencies": {
|
||||
"@types/hoist-non-react-statics": "^3.3.1",
|
||||
"@types/hoist-non-react-statics": "^3.3.5",
|
||||
"hoist-non-react-statics": "^3.3.2",
|
||||
"universal-cookie": "^6.0.0"
|
||||
"universal-cookie": "^7.0.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"react": ">= 16.3.0"
|
||||
@@ -18848,11 +18843,11 @@
|
||||
}
|
||||
},
|
||||
"node_modules/redux-saga": {
|
||||
"version": "1.2.3",
|
||||
"resolved": "https://registry.npmjs.org/redux-saga/-/redux-saga-1.2.3.tgz",
|
||||
"integrity": "sha512-HDe0wTR5nhd8Xr5xjGzoyTbdAw6rjy1GDplFt3JKtKN8/MnkQSRqK/n6aQQhpw5NI4ekDVOaW+w4sdxPBaCoTQ==",
|
||||
"version": "1.3.0",
|
||||
"resolved": "https://registry.npmjs.org/redux-saga/-/redux-saga-1.3.0.tgz",
|
||||
"integrity": "sha512-J9RvCeAZXSTAibFY0kGw6Iy4EdyDNW7k6Q+liwX+bsck7QVsU78zz8vpBRweEfANxnnlG/xGGeOvf6r8UXzNJQ==",
|
||||
"dependencies": {
|
||||
"@redux-saga/core": "^1.2.3"
|
||||
"@redux-saga/core": "^1.3.0"
|
||||
}
|
||||
},
|
||||
"node_modules/redux-state-sync": {
|
||||
@@ -19031,9 +19026,9 @@
|
||||
"integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ=="
|
||||
},
|
||||
"node_modules/reselect": {
|
||||
"version": "5.0.1",
|
||||
"resolved": "https://registry.npmjs.org/reselect/-/reselect-5.0.1.tgz",
|
||||
"integrity": "sha512-D72j2ubjgHpvuCiORWkOUxndHJrxDaSolheiz5CO+roz8ka97/4msh2E8F5qay4GawR5vzBt5MkbDHT+Rdy/Wg=="
|
||||
"version": "5.1.0",
|
||||
"resolved": "https://registry.npmjs.org/reselect/-/reselect-5.1.0.tgz",
|
||||
"integrity": "sha512-aw7jcGLDpSgNDyWBQLv2cedml85qd95/iszJjN988zX1t7AVRJi19d9kto5+W7oCfQ94gyo40dVbT6g2k4/kXg=="
|
||||
},
|
||||
"node_modules/resize-observer-polyfill": {
|
||||
"version": "1.5.1",
|
||||
@@ -19390,9 +19385,9 @@
|
||||
"integrity": "sha512-ZRwKbh/eQ6w9vmTjkuG0Ioi3HBwPFce0O+v//ve+aOq1oeCy7jMV2qzzAlpsNuqpqCBjjriM1lbtZbF/Q8jVyA=="
|
||||
},
|
||||
"node_modules/sass": {
|
||||
"version": "1.69.5",
|
||||
"resolved": "https://registry.npmjs.org/sass/-/sass-1.69.5.tgz",
|
||||
"integrity": "sha512-qg2+UCJibLr2LCVOt3OlPhr/dqVHWOa9XtZf2OjbLs/T4VPSJ00udtgJxH3neXZm+QqX8B+3cU7RaLqp1iVfcQ==",
|
||||
"version": "1.69.7",
|
||||
"resolved": "https://registry.npmjs.org/sass/-/sass-1.69.7.tgz",
|
||||
"integrity": "sha512-rzj2soDeZ8wtE2egyLXgOOHQvaC2iosZrkF6v3EUG+tBwEvhqUCzm0VP3k9gHF9LXbSrRhT5SksoI56Iw8NPnQ==",
|
||||
"dependencies": {
|
||||
"chokidar": ">=3.0.0 <4.0.0",
|
||||
"immutable": "^4.0.0",
|
||||
@@ -19798,9 +19793,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/socket.io-client": {
|
||||
"version": "4.7.2",
|
||||
"resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.7.2.tgz",
|
||||
"integrity": "sha512-vtA0uD4ibrYD793SOIAwlo8cj6haOeMHrGvwPxJsxH7CeIksqJ+3Zc06RvWTIFgiSqx4A3sOnTXpfAEE2Zyz6w==",
|
||||
"version": "4.7.3",
|
||||
"resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.7.3.tgz",
|
||||
"integrity": "sha512-nU+ywttCyBitXIl9Xe0RSEfek4LneYkJxCeNnKCuhwoH4jGXO1ipIUw/VA/+Vvv2G1MTym11fzFC0SxkrcfXDw==",
|
||||
"dependencies": {
|
||||
"@socket.io/component-emitter": "~3.1.0",
|
||||
"debug": "~4.3.2",
|
||||
@@ -21665,12 +21660,20 @@
|
||||
}
|
||||
},
|
||||
"node_modules/universal-cookie": {
|
||||
"version": "6.1.1",
|
||||
"resolved": "https://registry.npmjs.org/universal-cookie/-/universal-cookie-6.1.1.tgz",
|
||||
"integrity": "sha512-33S9x3CpdUnnjwTNs2Fgc41WGve2tdLtvaK2kPSbZRc5pGpz2vQFbRWMxlATsxNNe/Cy8SzmnmbuBM85jpZPtA==",
|
||||
"version": "7.0.0",
|
||||
"resolved": "https://registry.npmjs.org/universal-cookie/-/universal-cookie-7.0.0.tgz",
|
||||
"integrity": "sha512-T3XwZ2cUbHRU+UNfPSaPd0zti50tVIvk6onLA90pa+qKwsP8ksn5pwYM7rWMODoX1OCA9qPAN8uK88Avq5YbtQ==",
|
||||
"dependencies": {
|
||||
"@types/cookie": "^0.5.1",
|
||||
"cookie": "^0.5.0"
|
||||
"@types/cookie": "^0.6.0",
|
||||
"cookie": "^0.6.0"
|
||||
}
|
||||
},
|
||||
"node_modules/universal-cookie/node_modules/cookie": {
|
||||
"version": "0.6.0",
|
||||
"resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz",
|
||||
"integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==",
|
||||
"engines": {
|
||||
"node": ">= 0.6"
|
||||
}
|
||||
},
|
||||
"node_modules/universalify": {
|
||||
|
||||
@@ -12,13 +12,13 @@
|
||||
"@fingerprintjs/fingerprintjs": "^4.2.1",
|
||||
"@jsreport/browser-client": "^3.1.0",
|
||||
"@reduxjs/toolkit": "^2.0.1",
|
||||
"@sentry/react": "^7.91.0",
|
||||
"@sentry/tracing": "^7.91.0",
|
||||
"@sentry/react": "^7.92.0",
|
||||
"@sentry/tracing": "^7.92.0",
|
||||
"@splitsoftware/splitio-react": "^1.10.2",
|
||||
"@tanem/react-nprogress": "^5.0.51",
|
||||
"antd": "^5.12.5",
|
||||
"antd": "^5.12.8",
|
||||
"apollo-link-logger": "^2.0.1",
|
||||
"axios": "^1.6.3",
|
||||
"axios": "^1.6.4",
|
||||
"craco-less": "^3.0.1",
|
||||
"dayjs": "^1.11.10",
|
||||
"dayjs-business-days2": "^1.2.2",
|
||||
@@ -29,7 +29,7 @@
|
||||
"exifr": "^7.1.3",
|
||||
"firebase": "^10.7.1",
|
||||
"graphql": "^16.6.0",
|
||||
"i18next": "^23.7.12",
|
||||
"i18next": "^23.7.16",
|
||||
"i18next-browser-languagedetector": "^7.0.2",
|
||||
"jsoneditor": "^10.0.0",
|
||||
"jsreport-browser-client-dist": "^1.3.0",
|
||||
@@ -37,7 +37,7 @@
|
||||
"logrocket": "^7.0.0",
|
||||
"markerjs2": "^2.31.4",
|
||||
"normalize-url": "^8.0.0",
|
||||
"phone": "^3.1.41",
|
||||
"phone": "^3.1.42",
|
||||
"preval.macro": "^5.0.0",
|
||||
"prop-types": "^15.8.1",
|
||||
"query-string": "^8.1.0",
|
||||
@@ -46,7 +46,7 @@
|
||||
"react": "^18.2.0",
|
||||
"react-big-calendar": "^1.8.5",
|
||||
"react-color": "^2.19.3",
|
||||
"react-cookie": "^6.1.1",
|
||||
"react-cookie": "^7.0.0",
|
||||
"react-dom": "^18.2.0",
|
||||
"react-drag-listview": "^2.0.0",
|
||||
"react-grid-gallery": "^1.0.0",
|
||||
@@ -66,11 +66,11 @@
|
||||
"recharts": "^2.4.3",
|
||||
"redux": "^5.0.1",
|
||||
"redux-persist": "^6.0.0",
|
||||
"redux-saga": "^1.2.3",
|
||||
"redux-saga": "^1.3.0",
|
||||
"redux-state-sync": "^3.1.4",
|
||||
"reselect": "^5.0.1",
|
||||
"sass": "^1.58.3",
|
||||
"socket.io-client": "^4.7.2",
|
||||
"reselect": "^5.1.0",
|
||||
"sass": "^1.69.7",
|
||||
"socket.io-client": "^4.7.3",
|
||||
"styled-components": "^6.1.6",
|
||||
"subscriptions-transport-ws": "^0.11.0",
|
||||
"terser-webpack-plugin": "^5.3.10",
|
||||
|
||||
@@ -215,10 +215,7 @@ export default function CourtesyCarCreateFormComponent({ form, saveLoading }) {
|
||||
>
|
||||
<CourtesyCarStatus />
|
||||
</Form.Item>
|
||||
<Form.Item
|
||||
label={t("courtesycars.fields.readiness")}
|
||||
name="readiness"
|
||||
>
|
||||
<Form.Item label={t("courtesycars.fields.readiness")} name="readiness">
|
||||
<CourtesyCarReadiness />
|
||||
</Form.Item>
|
||||
<div>
|
||||
@@ -235,8 +232,9 @@ export default function CourtesyCarCreateFormComponent({ form, saveLoading }) {
|
||||
>
|
||||
{() => {
|
||||
const nextservicekm = form.getFieldValue("nextservicekm");
|
||||
const mileageOver =
|
||||
nextservicekm && nextservicekm <= form.getFieldValue("mileage");
|
||||
const mileageOver = nextservicekm
|
||||
? nextservicekm <= form.getFieldValue("mileage")
|
||||
: false;
|
||||
if (mileageOver)
|
||||
return (
|
||||
<Space direction="vertical" style={{ color: "tomato" }}>
|
||||
|
||||
@@ -73,10 +73,10 @@ export default function CourtesyCarsList({ loading, courtesycars, refetch }) {
|
||||
render: (text, record) => {
|
||||
const { nextservicedate, nextservicekm, mileage } = record;
|
||||
|
||||
const mileageOver = nextservicekm <= mileage;
|
||||
const mileageOver = nextservicekm ? nextservicekm <= mileage : false;
|
||||
|
||||
const dueForService =
|
||||
nextservicedate && dayjs(nextservicedate).isBefore(dayjs());
|
||||
nextservicedate && dayjs(nextservicedate).end('day').isSameOrBefore(dayjs());
|
||||
|
||||
return (
|
||||
<Space>
|
||||
|
||||
@@ -28,7 +28,7 @@ export function DmsLogEvents({ socket, logs, bodyshop }) {
|
||||
items={logs.map((log, idx) => ({
|
||||
key: idx,
|
||||
color: LogLevelHierarchy(log.level),
|
||||
label: (
|
||||
children: (
|
||||
<Space wrap align="start" style={{}}>
|
||||
<Tag color={LogLevelHierarchy(log.level)}>{log.level}</Tag>
|
||||
<span>{dayjs(log.timestamp).format("MM/DD/YYYY HH:mm:ss")}</span>
|
||||
|
||||
@@ -62,7 +62,8 @@ export function DocumentEditorComponent({ currentUser, bodyshop, document }) {
|
||||
// attach an event handler to assign annotated image back to our image element
|
||||
markerArea.current.addEventListener("close", (closeEvent) => {});
|
||||
|
||||
markerArea.current.addEventListener("render", (dataUrl) => {
|
||||
markerArea.current.addEventListener("render", (event) => {
|
||||
const dataUrl = event.dataUrl;
|
||||
imgRef.current.src = dataUrl;
|
||||
markerArea.current.close();
|
||||
triggerUpload(dataUrl);
|
||||
|
||||
@@ -1,100 +1,105 @@
|
||||
import { DatePicker } from "antd";
|
||||
import {DatePicker} from "antd";
|
||||
import dayjs from "../../utils/day";
|
||||
import React, { useRef } from "react";
|
||||
import React, {useRef} from "react";
|
||||
|
||||
import {connect} from "react-redux";
|
||||
import {createStructuredSelector} from "reselect";
|
||||
import {selectBodyshop} from "../../redux/user/user.selectors";
|
||||
|
||||
import { connect } from "react-redux";
|
||||
import { createStructuredSelector } from "reselect";
|
||||
import { selectBodyshop } from "../../redux/user/user.selectors";
|
||||
const mapStateToProps = createStructuredSelector({
|
||||
bodyshop: selectBodyshop,
|
||||
bodyshop: selectBodyshop,
|
||||
});
|
||||
const mapDispatchToProps = (dispatch) => ({
|
||||
//setUserLanguage: language => dispatch(setUserLanguage(language))
|
||||
});
|
||||
const mapDispatchToProps = (dispatch) => ({});
|
||||
export default connect(mapStateToProps, mapDispatchToProps)(FormDatePicker);
|
||||
|
||||
const dateFormat = "MM/DD/YYYY";
|
||||
|
||||
|
||||
// TODO, this is causing a dirty change when it should not (click the picker, click off the picker)
|
||||
export function FormDatePicker({
|
||||
bodyshop,
|
||||
value,
|
||||
onChange,
|
||||
onBlur,
|
||||
onlyFuture,
|
||||
isDateOnly = true,
|
||||
...restProps
|
||||
bodyshop,
|
||||
value,
|
||||
onChange,
|
||||
onBlur,
|
||||
onlyFuture,
|
||||
isDateOnly = true,
|
||||
...restProps
|
||||
}) {
|
||||
const ref = useRef();
|
||||
const ref = useRef();
|
||||
|
||||
const handleChange = (newDate) => {
|
||||
if (value !== newDate && onChange) {
|
||||
onChange(isDateOnly ? newDate && newDate.format("YYYY-MM-DD") : newDate);
|
||||
}
|
||||
};
|
||||
|
||||
const handleKeyDown = (e) => {
|
||||
if (e.key.toLowerCase() === "t") {
|
||||
if (onChange) {
|
||||
onChange(isDateOnly ? dayjs().format("YYYY-MM-DD") : dayjs());
|
||||
}
|
||||
} else if (e.key.toLowerCase() === "enter") {
|
||||
if (ref.current && ref.current.blur) ref.current.blur();
|
||||
}
|
||||
};
|
||||
|
||||
const handleBlur = (e) => {
|
||||
const v = e.target.value;
|
||||
if (!v) return;
|
||||
|
||||
const _a = dayjs(
|
||||
v,
|
||||
["MMDDYY", "MMDDYYYY", "MMDD", "MM/DD/YY"],
|
||||
"en",
|
||||
false
|
||||
);
|
||||
|
||||
if (
|
||||
_a.isValid()
|
||||
&& value
|
||||
&& value.isValid
|
||||
&& value.isValid()
|
||||
) {
|
||||
_a.set({
|
||||
hours: value.hours(),
|
||||
minutes: value.minutes(),
|
||||
seconds: value.seconds(),
|
||||
milliseconds: value.milliseconds(),
|
||||
});
|
||||
}
|
||||
|
||||
if (_a.isValid() && onChange) {
|
||||
if (onlyFuture) {
|
||||
if (dayjs().subtract(1, "day").isBefore(_a)) {
|
||||
onChange(isDateOnly ? _a.format("YYYY-MM-DD") : _a);
|
||||
} else {
|
||||
onChange(isDateOnly ? dayjs().format("YYYY-MM-DD") : dayjs());
|
||||
const handleChange = (newDate) => {
|
||||
if (value !== newDate && onChange) {
|
||||
onChange(isDateOnly ? newDate && newDate.format("YYYY-MM-DD") : newDate);
|
||||
}
|
||||
} else {
|
||||
onChange(isDateOnly ? _a.format("YYYY-MM-DD") : _a);
|
||||
}
|
||||
}
|
||||
};
|
||||
};
|
||||
|
||||
return (
|
||||
<div onKeyDown={handleKeyDown}>
|
||||
<DatePicker
|
||||
ref={ref}
|
||||
value={value ? dayjs(value) : null}
|
||||
onChange={handleChange}
|
||||
format={dateFormat}
|
||||
onBlur={onBlur || handleBlur}
|
||||
showToday={false}
|
||||
disabledTime
|
||||
{...(onlyFuture && {
|
||||
disabledDate: (d) => dayjs().subtract(1, "day").isAfter(d),
|
||||
})}
|
||||
{...restProps}
|
||||
/>
|
||||
</div>
|
||||
);
|
||||
const handleKeyDown = (e) => {
|
||||
if (e.key.toLowerCase() === "t") {
|
||||
if (onChange) {
|
||||
onChange(isDateOnly ? dayjs().format("YYYY-MM-DD") : dayjs());
|
||||
}
|
||||
} else if (e.key.toLowerCase() === "enter") {
|
||||
if (ref.current && ref.current.blur) ref.current.blur();
|
||||
}
|
||||
};
|
||||
|
||||
const handleBlur = (e) => {
|
||||
const v = e.target.value;
|
||||
if (!v) return;
|
||||
|
||||
const formats = ["MMDDYY", "MMDDYYYY", "MMDD", "MM/DD/YY", "MM/DD/YYYY"];
|
||||
let _a;
|
||||
|
||||
// Iterate through formats to find the correct one
|
||||
for (let format of formats) {
|
||||
_a = dayjs(v, format);
|
||||
if (v === _a.format(format)) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (
|
||||
_a.isValid()
|
||||
&& value
|
||||
&& value.isValid
|
||||
&& value.isValid()
|
||||
) {
|
||||
_a.set({
|
||||
hours: value.hours(),
|
||||
minutes: value.minutes(),
|
||||
seconds: value.seconds(),
|
||||
milliseconds: value.milliseconds(),
|
||||
});
|
||||
}
|
||||
|
||||
if (_a.isValid() && onChange) {
|
||||
if (onlyFuture) {
|
||||
if (dayjs().subtract(1, "day").isBefore(_a)) {
|
||||
onChange(isDateOnly ? _a.format("YYYY-MM-DD") : _a);
|
||||
} else {
|
||||
onChange(isDateOnly ? dayjs().format("YYYY-MM-DD") : dayjs());
|
||||
}
|
||||
} else {
|
||||
onChange(isDateOnly ? _a.format("YYYY-MM-DD") : _a);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
return (
|
||||
<div onKeyDown={handleKeyDown}>
|
||||
<DatePicker
|
||||
ref={ref}
|
||||
value={value ? dayjs(value) : null}
|
||||
onChange={handleChange}
|
||||
format={dateFormat}
|
||||
onBlur={onBlur || handleBlur}
|
||||
showToday={false}
|
||||
disabledTime
|
||||
{...(onlyFuture && {
|
||||
disabledDate: (d) => dayjs().subtract(1, "day").isAfter(d),
|
||||
})}
|
||||
{...restProps}
|
||||
/>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
@@ -16,7 +16,7 @@ export default function JobDetailCardsDatesComponent({loading, data}) {
|
||||
? [
|
||||
{
|
||||
key: "date_last_contacted",
|
||||
label: (
|
||||
children: (
|
||||
<>
|
||||
<label>{t("jobs.fields.date_last_contacted")}: </label>
|
||||
<DateTimeFormatter>{data.date_last_contacted}</DateTimeFormatter>
|
||||
@@ -29,7 +29,7 @@ export default function JobDetailCardsDatesComponent({loading, data}) {
|
||||
? [
|
||||
{
|
||||
key: "date_open",
|
||||
label: (
|
||||
children: (
|
||||
<>
|
||||
<label>{t("jobs.fields.date_open")}: </label>
|
||||
<DateTimeFormatter>{data.date_open}</DateTimeFormatter>
|
||||
@@ -42,7 +42,7 @@ export default function JobDetailCardsDatesComponent({loading, data}) {
|
||||
? [
|
||||
{
|
||||
key: "date_estimated",
|
||||
label: (
|
||||
children: (
|
||||
<>
|
||||
<label>{t("jobs.fields.date_estimated")}: </label>
|
||||
<DateTimeFormatter>{data.date_estimated}</DateTimeFormatter>
|
||||
@@ -55,7 +55,7 @@ export default function JobDetailCardsDatesComponent({loading, data}) {
|
||||
? [
|
||||
{
|
||||
key: "date_scheduled",
|
||||
label: (
|
||||
children: (
|
||||
<>
|
||||
<label>{t("jobs.fields.date_scheduled")}: </label>
|
||||
<DateTimeFormatter>{data.date_scheduled}</DateTimeFormatter>
|
||||
@@ -68,7 +68,7 @@ export default function JobDetailCardsDatesComponent({loading, data}) {
|
||||
? [
|
||||
{
|
||||
key: "scheduled_in",
|
||||
label: (
|
||||
children: (
|
||||
<>
|
||||
<label>{t("jobs.fields.scheduled_in")}: </label>
|
||||
<DateTimeFormatter>{data.scheduled_in}</DateTimeFormatter>
|
||||
@@ -81,7 +81,7 @@ export default function JobDetailCardsDatesComponent({loading, data}) {
|
||||
? [
|
||||
{
|
||||
key: "actual_in",
|
||||
label: (
|
||||
children: (
|
||||
<>
|
||||
<label>{t("jobs.fields.actual_in")}: </label>
|
||||
<DateTimeFormatter>{data.actual_in}</DateTimeFormatter>
|
||||
@@ -94,7 +94,7 @@ export default function JobDetailCardsDatesComponent({loading, data}) {
|
||||
? [
|
||||
{
|
||||
key: "date_repairstarted",
|
||||
label: (
|
||||
children: (
|
||||
<>
|
||||
<label>{t("jobs.fields.date_repairstarted")}: </label>
|
||||
<DateTimeFormatter>{data.date_repairstarted}</DateTimeFormatter>
|
||||
@@ -107,7 +107,7 @@ export default function JobDetailCardsDatesComponent({loading, data}) {
|
||||
? [
|
||||
{
|
||||
key: "scheduled_completion",
|
||||
label: (
|
||||
children: (
|
||||
<>
|
||||
<label>{t("jobs.fields.scheduled_completion")}: </label>
|
||||
<DateTimeFormatter>{data.scheduled_completion}</DateTimeFormatter>
|
||||
@@ -120,7 +120,7 @@ export default function JobDetailCardsDatesComponent({loading, data}) {
|
||||
? [
|
||||
{
|
||||
key: "actual_completion",
|
||||
label: (
|
||||
children: (
|
||||
<>
|
||||
<label>{t("jobs.fields.actual_completion")}: </label>
|
||||
<DateTimeFormatter>{data.actual_completion}</DateTimeFormatter>
|
||||
@@ -133,7 +133,7 @@ export default function JobDetailCardsDatesComponent({loading, data}) {
|
||||
? [
|
||||
{
|
||||
key: "scheduled_delivery",
|
||||
label: (
|
||||
children: (
|
||||
<>
|
||||
<label>{t("jobs.fields.scheduled_delivery")}: </label>
|
||||
<DateTimeFormatter>{data.scheduled_delivery}</DateTimeFormatter>
|
||||
@@ -146,7 +146,7 @@ export default function JobDetailCardsDatesComponent({loading, data}) {
|
||||
? [
|
||||
{
|
||||
key: "actual_delivery",
|
||||
label: (
|
||||
children: (
|
||||
<>
|
||||
<label>{t("jobs.fields.actual_delivery")}: </label>
|
||||
<DateTimeFormatter>{data.actual_delivery}</DateTimeFormatter>
|
||||
@@ -159,7 +159,7 @@ export default function JobDetailCardsDatesComponent({loading, data}) {
|
||||
? [
|
||||
{
|
||||
key: "date_invoiced",
|
||||
label: (
|
||||
children: (
|
||||
<>
|
||||
<label>{t("jobs.fields.date_invoiced")}: </label>
|
||||
<DateTimeFormatter>{data.date_invoiced}</DateTimeFormatter>
|
||||
@@ -172,7 +172,7 @@ export default function JobDetailCardsDatesComponent({loading, data}) {
|
||||
? [
|
||||
{
|
||||
key: "date_exported",
|
||||
label: (
|
||||
children: (
|
||||
<>
|
||||
<label>{t("jobs.fields.date_exported")}: </label>
|
||||
<DateTimeFormatter>{data.date_exported}</DateTimeFormatter>
|
||||
|
||||
@@ -32,7 +32,7 @@ export default function JobLinesExpander({jobline, jobid}) {
|
||||
data.parts_order_lines.length > 0
|
||||
? data.parts_order_lines.map((line) => ({
|
||||
key: line.id,
|
||||
label: (
|
||||
children: (
|
||||
<Space split={<Divider type="vertical"/>} wrap>
|
||||
<Link
|
||||
to={`/manage/jobs/${jobid}?partsorderid=${line.parts_order.id}`}
|
||||
@@ -47,7 +47,7 @@ export default function JobLinesExpander({jobline, jobid}) {
|
||||
: [
|
||||
{
|
||||
key: "no-orders",
|
||||
label: t("parts_orders.labels.notyetordered"),
|
||||
children: t("parts_orders.labels.notyetordered"),
|
||||
},
|
||||
]
|
||||
}
|
||||
@@ -59,7 +59,7 @@ export default function JobLinesExpander({jobline, jobid}) {
|
||||
data.billlines.length > 0
|
||||
? data.billlines.map((line) => ({
|
||||
key: line.id,
|
||||
label: (
|
||||
children: (
|
||||
<Row wrap>
|
||||
<Col span={4}>
|
||||
<Link
|
||||
@@ -84,7 +84,7 @@ export default function JobLinesExpander({jobline, jobid}) {
|
||||
: [
|
||||
{
|
||||
key: "no-orders",
|
||||
label: t("parts_orders.labels.notyetordered"),
|
||||
children: t("parts_orders.labels.notyetordered"),
|
||||
},
|
||||
]
|
||||
}
|
||||
|
||||
@@ -27,6 +27,7 @@ import {HasFeatureAccess} from "../feature-wrapper/feature-wrapper.component";
|
||||
import {DateTimeFormatter} from "../../utils/DateFormatter";
|
||||
import FormDateTimePickerComponent from "../form-date-time-picker/form-date-time-picker.component";
|
||||
import dayjs from "../../utils/day";
|
||||
import {useSplitTreatments} from "@splitsoftware/splitio-react";
|
||||
|
||||
const mapStateToProps = createStructuredSelector({
|
||||
bodyshop: selectBodyshop,
|
||||
@@ -82,6 +83,14 @@ export function JobsDetailHeaderActions({
|
||||
const [updateJob] = useMutation(UPDATE_JOB);
|
||||
const [voidJob] = useMutation(VOID_JOB);
|
||||
const [cancelAllAppointments] = useMutation(CANCEL_APPOINTMENTS_BY_JOB_ID);
|
||||
|
||||
const {treatments: {ImEXPay}} = useSplitTreatments({
|
||||
attributes: {},
|
||||
names: ["ImEXPay"],
|
||||
splitKey: bodyshop && bodyshop.imexshopid,
|
||||
});
|
||||
|
||||
|
||||
const jobInProduction = useMemo(() => {
|
||||
return bodyshop.md_ro_statuses.production_statuses.includes(job.status);
|
||||
}, [job, bodyshop.md_ro_statuses.production_statuses]);
|
||||
@@ -97,7 +106,7 @@ export function JobsDetailHeaderActions({
|
||||
);
|
||||
}, [job.status, bodyshop.md_ro_statuses.post_production_statuses]);
|
||||
|
||||
const handleDuplicate =() =>
|
||||
const handleDuplicate = () =>
|
||||
DuplicateJob(
|
||||
client,
|
||||
job.id,
|
||||
@@ -694,33 +703,37 @@ export function JobsDetailHeaderActions({
|
||||
context: {jobid: job.id},
|
||||
});
|
||||
}
|
||||
},
|
||||
{
|
||||
key: 'entercardpayments',
|
||||
disabled: !job.converted,
|
||||
label: t("menus.header.entercardpayment"),
|
||||
onClick: () => {
|
||||
logImEXEvent("job_header_enter_card_payment");
|
||||
}];
|
||||
|
||||
setCardPaymentContext({
|
||||
actions: {},
|
||||
context: {jobid: job.id},
|
||||
});
|
||||
}
|
||||
},
|
||||
{
|
||||
key: 'cccontract',
|
||||
disabled: jobRO || !job.converted,
|
||||
label: <Link
|
||||
to={{
|
||||
pathname: "/manage/courtesycars/contracts/new",
|
||||
state: {jobId: job.id},
|
||||
}}
|
||||
>
|
||||
{t("menus.jobsactions.newcccontract")}
|
||||
</Link>
|
||||
}
|
||||
];
|
||||
if (ImEXPay.treatment === "on") {
|
||||
menuItems.push({
|
||||
key: 'entercardpayments',
|
||||
disabled: !job.converted,
|
||||
label: t("menus.header.entercardpayment"),
|
||||
onClick: () => {
|
||||
logImEXEvent("job_header_enter_card_payment");
|
||||
|
||||
setCardPaymentContext({
|
||||
actions: {},
|
||||
context: {jobid: job.id},
|
||||
});
|
||||
}
|
||||
},
|
||||
);
|
||||
}
|
||||
|
||||
menuItems.push({
|
||||
key: 'cccontract',
|
||||
disabled: jobRO || !job.converted,
|
||||
label: <Link
|
||||
to={{
|
||||
pathname: "/manage/courtesycars/contracts/new",
|
||||
state: {jobId: job.id},
|
||||
}}
|
||||
>
|
||||
{t("menus.jobsactions.newcccontract")}
|
||||
</Link>
|
||||
});
|
||||
|
||||
menuItems.push(
|
||||
job.inproduction ?
|
||||
|
||||
@@ -221,6 +221,11 @@ export function JobsDetailHeader({ job, bodyshop, disabled }) {
|
||||
<VehicleVinDisplay>
|
||||
{`${job.v_vin || t("general.labels.na")}`}
|
||||
</VehicleVinDisplay>
|
||||
{bodyshop.pbs_serialnumber || bodyshop.cdk_dealerid ? (
|
||||
job.v_vin.length !== 17 ? (
|
||||
<WarningFilled style={{ color: "tomato", marginLeft: ".3rem" }} />
|
||||
) : null
|
||||
) : null}
|
||||
</DataLabel>
|
||||
<DataLabel label={t("jobs.fields.regie_number")}>
|
||||
{job.regie_number || t("general.labels.na")}
|
||||
|
||||
@@ -24,6 +24,7 @@ export function ProductionColumnsComponent({
|
||||
columnState,
|
||||
technician,
|
||||
bodyshop,
|
||||
data,
|
||||
tableState,
|
||||
}) {
|
||||
const [columns, setColumns] = columnState;
|
||||
@@ -36,6 +37,7 @@ export function ProductionColumnsComponent({
|
||||
bodyshop,
|
||||
technician,
|
||||
state: tableState,
|
||||
data,
|
||||
activeStatuses: bodyshop.md_ro_statuses.active_statuses,
|
||||
}).filter((i) => i.key === e.key),
|
||||
]);
|
||||
@@ -44,6 +46,7 @@ export function ProductionColumnsComponent({
|
||||
const columnKeys = columns.map((i) => i.key);
|
||||
const cols = dataSource({
|
||||
technician,
|
||||
data,
|
||||
state: tableState,
|
||||
activeStatuses: bodyshop.md_ro_statuses.active_statuses,
|
||||
});
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { PauseCircleOutlined, BranchesOutlined } from "@ant-design/icons";
|
||||
import { BranchesOutlined, PauseCircleOutlined } from "@ant-design/icons";
|
||||
import { Space, Tooltip } from "antd";
|
||||
import i18n from "i18next";
|
||||
import dayjs from "../../utils/day";
|
||||
@@ -6,6 +6,7 @@ import { Link } from "react-router-dom";
|
||||
import CurrencyFormatter from "../../utils/CurrencyFormatter";
|
||||
import { TimeFormatter } from "../../utils/DateFormatter";
|
||||
import PhoneFormatter from "../../utils/PhoneFormatter";
|
||||
import { onlyUnique } from "../../utils/arrayHelper";
|
||||
import { alphaSort, dateSort, statusSort } from "../../utils/sorters";
|
||||
import JobAltTransportChange from "../job-at-change/job-at-change.component";
|
||||
import JobPartsQueueCount from "../job-parts-queue-count/job-parts-queue-count.component";
|
||||
@@ -25,7 +26,7 @@ import ProductionListColumnCategory from "./production-list-columns.status.categ
|
||||
import ProductionListColumnStatus from "./production-list-columns.status.component";
|
||||
import ProductionlistColumnTouchTime from "./prodution-list-columns.touchtime.component";
|
||||
|
||||
const r = ({ technician, state, activeStatuses, bodyshop }) => {
|
||||
const r = ({ technician, state, activeStatuses, data, bodyshop }) => {
|
||||
return [
|
||||
{
|
||||
title: i18n.t("jobs.actions.viewdetail"),
|
||||
@@ -536,6 +537,36 @@ const r = ({ technician, state, activeStatuses, bodyshop }) => {
|
||||
<JobPartsQueueCount parts={record.joblines_status} record={record} />
|
||||
),
|
||||
},
|
||||
{
|
||||
title: i18n.t("jobs.labels.estimator"),
|
||||
dataIndex: "estimator",
|
||||
key: "estimator",
|
||||
sorter: (a, b) =>
|
||||
alphaSort(
|
||||
`${a.est_ct_fn || ""} ${a.est_ct_ln || ""}`.trim(),
|
||||
`${b.est_ct_fn || ""} ${b.est_ct_ln || ""}`.trim()
|
||||
),
|
||||
sortOrder:
|
||||
state.sortedInfo.columnKey === "estimator" && state.sortedInfo.order,
|
||||
filters:
|
||||
(data &&
|
||||
data
|
||||
.map((j) => `${j.est_ct_fn || ""} ${j.est_ct_ln || ""}`.trim())
|
||||
.filter(onlyUnique)
|
||||
.map((s) => {
|
||||
return {
|
||||
text: s || "N/A",
|
||||
value: [s],
|
||||
};
|
||||
})) ||
|
||||
[],
|
||||
onFilter: (value, record) =>
|
||||
value.includes(
|
||||
`${record.est_ct_fn || ""} ${record.est_ct_ln || ""}`.trim()
|
||||
),
|
||||
render: (text, record) =>
|
||||
`${record.est_ct_fn || ""} ${record.est_ct_ln || ""}`.trim(),
|
||||
},
|
||||
|
||||
//Added as a place holder for St Claude. Not implemented as it requires another join for a field used by only 1 client.
|
||||
// {
|
||||
|
||||
@@ -24,6 +24,7 @@ export function ProductionListTable({
|
||||
technician,
|
||||
currentUser,
|
||||
state,
|
||||
data,
|
||||
setColumns,
|
||||
setState,
|
||||
}) {
|
||||
@@ -41,6 +42,7 @@ export function ProductionListTable({
|
||||
bodyshop,
|
||||
technician,
|
||||
state,
|
||||
data: data,
|
||||
activeStatuses: bodyshop.md_ro_statuses.active_statuses,
|
||||
}).find((e) => e.key === k.key),
|
||||
width: k.width,
|
||||
@@ -95,6 +97,7 @@ export function ProductionListTable({
|
||||
...ProductionListColumns({
|
||||
technician,
|
||||
state,
|
||||
data: data,
|
||||
activeStatuses: bodyshop.md_ro_statuses.active_statuses,
|
||||
}).find((e) => e.key === k.key),
|
||||
width: k.width,
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
import {SyncOutlined} from "@ant-design/icons";
|
||||
import {useSplitTreatments} from "@splitsoftware/splitio-react";
|
||||
import {Button, Dropdown, Input, Space, Statistic, Table,} from "antd";
|
||||
import {Button, Dropdown, Input, Space, Statistic, Table} from "antd";
|
||||
import {PageHeader} from "@ant-design/pro-layout";
|
||||
import React, {useMemo, useState} from "react";
|
||||
import React, {useEffect, useMemo, useState} from "react";
|
||||
import ReactDragListView from "react-drag-listview";
|
||||
import {useTranslation} from "react-i18next";
|
||||
import {connect} from "react-redux";
|
||||
@@ -66,6 +66,7 @@ export function ProductionListTable({loading, data, refetch, bodyshop, technicia
|
||||
bodyshop,
|
||||
technician,
|
||||
state,
|
||||
data,
|
||||
activeStatuses: bodyshop.md_ro_statuses.active_statuses,
|
||||
}).find((e) => e.key === k.key),
|
||||
width: k.width ?? 100,
|
||||
@@ -74,6 +75,34 @@ export function ProductionListTable({loading, data, refetch, bodyshop, technicia
|
||||
[]
|
||||
);
|
||||
|
||||
useEffect(() => {
|
||||
const newColumns =
|
||||
(state &&
|
||||
matchingColumnConfig &&
|
||||
matchingColumnConfig.columns.columnKeys.map((k) => {
|
||||
return {
|
||||
...ProductionListColumns({
|
||||
bodyshop,
|
||||
technician,
|
||||
state,
|
||||
data: data,
|
||||
activeStatuses: bodyshop.md_ro_statuses.active_statuses,
|
||||
}).find((e) => e.key === k.key),
|
||||
width: k.width ?? 100,
|
||||
};
|
||||
})) ||
|
||||
[];
|
||||
setColumns(newColumns);
|
||||
// eslint-disable-next-line react-hooks/exhaustive-deps
|
||||
}, [
|
||||
//state,
|
||||
matchingColumnConfig,
|
||||
bodyshop,
|
||||
technician,
|
||||
data,
|
||||
]); //State removed from dependency array as it causes race condition when removing columns from table view and is not needed.
|
||||
|
||||
|
||||
const handleTableChange = (pagination, filters, sorter) => {
|
||||
setState({
|
||||
...state,
|
||||
@@ -89,10 +118,11 @@ export function ProductionListTable({loading, data, refetch, bodyshop, technicia
|
||||
setColumns(columnsCopy);
|
||||
};
|
||||
|
||||
const removeColumn = (e) => {
|
||||
const {key} = e;
|
||||
setColumns(columns.filter((i) => i.key !== key));
|
||||
};
|
||||
const removeColumn = (e) => {
|
||||
const { key } = e;
|
||||
const newColumns = columns.filter((i) => i.key !== key);
|
||||
setColumns(newColumns);
|
||||
};
|
||||
|
||||
const handleResize =
|
||||
(index) =>
|
||||
@@ -221,6 +251,7 @@ export function ProductionListTable({loading, data, refetch, bodyshop, technicia
|
||||
<ProductionListColumnsAdd
|
||||
columnState={[columns, setColumns]}
|
||||
tableState={state}
|
||||
data={data}
|
||||
/>
|
||||
<ProductionListSaveConfigButton
|
||||
columns={columns}
|
||||
@@ -231,6 +262,7 @@ export function ProductionListTable({loading, data, refetch, bodyshop, technicia
|
||||
state={state}
|
||||
setState={setState}
|
||||
setColumns={setColumns}
|
||||
data={data}
|
||||
/>
|
||||
|
||||
<Input
|
||||
|
||||
@@ -27,7 +27,7 @@ export default function ScheduleExistingAppointmentsList({
|
||||
? existingAppointments.data.appointments.map((item) => ({
|
||||
key: item.id,
|
||||
color: item.canceled ? "red" : item.arrived ? "green" : "blue",
|
||||
label: (
|
||||
children: (
|
||||
<>
|
||||
{item.canceled
|
||||
? t("appointments.labels.cancelledappointment")
|
||||
|
||||
@@ -364,6 +364,8 @@ export const QUERY_JOBS_IN_PRODUCTION = gql`
|
||||
employee_refinish
|
||||
employee_prep
|
||||
employee_csr
|
||||
est_ct_fn
|
||||
est_ct_ln
|
||||
suspended
|
||||
date_repairstarted
|
||||
joblines_status {
|
||||
|
||||
@@ -261,17 +261,15 @@ export function JobsDetailPage({
|
||||
items={[
|
||||
{
|
||||
key: "general",
|
||||
label: (
|
||||
<span><Icon component={FaShieldAlt} />{t("menus.jobsdetail.general")}</span>
|
||||
),
|
||||
icon: <Icon component={FaShieldAlt} />,
|
||||
label: t("menus.jobsdetail.general"),
|
||||
forceRender: true,
|
||||
children: <JobsDetailGeneral job={job} form={form} />,
|
||||
},
|
||||
{
|
||||
key: "repairdata",
|
||||
label: (
|
||||
<span><BarsOutlined />{t("menus.jobsdetail.repairdata")}</span>
|
||||
),
|
||||
icon: <BarsOutlined />,
|
||||
label: t("menus.jobsdetail.repairdata"),
|
||||
forceRender: true,
|
||||
children: (
|
||||
<JobsLinesContainer
|
||||
@@ -284,46 +282,40 @@ export function JobsDetailPage({
|
||||
},
|
||||
{
|
||||
key: "rates",
|
||||
label: (
|
||||
<span><DollarCircleOutlined />{t("menus.jobsdetail.rates")}</span>
|
||||
),
|
||||
icon: <DollarCircleOutlined />,
|
||||
label: t("menus.jobsdetail.rates"),
|
||||
forceRender: true,
|
||||
children: <JobsDetailRates job={job} form={form} />,
|
||||
},
|
||||
{
|
||||
key: "totals",
|
||||
label: (
|
||||
<span><DollarCircleOutlined />{t("menus.jobsdetail.totals")}</span>
|
||||
),
|
||||
icon: <DollarCircleOutlined />,
|
||||
label: t("menus.jobsdetail.totals"),
|
||||
children: <JobsDetailTotals job={job} refetch={refetch} />,
|
||||
},
|
||||
{
|
||||
key: "partssublet",
|
||||
label: (
|
||||
<span><ToolFilled />{t("menus.jobsdetail.partssublet")}</span>
|
||||
),
|
||||
icon: <ToolFilled />,
|
||||
label: t("menus.jobsdetail.partssublet"),
|
||||
children: <JobsDetailPliContainer job={job} />,
|
||||
},
|
||||
{
|
||||
key: "labor",
|
||||
label: (
|
||||
<span><Icon component={FaHardHat} />{t("menus.jobsdetail.labor")}</span>
|
||||
),
|
||||
icon: <Icon component={FaHardHat} />,
|
||||
label: t("menus.jobsdetail.labor"),
|
||||
children: <JobsDetailLaborContainer job={job} jobId={job.id} />,
|
||||
},
|
||||
{
|
||||
key: "dates",
|
||||
label: (
|
||||
<span><CalendarFilled />{t("menus.jobsdetail.dates")}</span>
|
||||
),
|
||||
icon: <CalendarFilled />,
|
||||
label: t("menus.jobsdetail.dates"),
|
||||
forceRender: true,
|
||||
children: <JobsDetailDatesComponent job={job} />,
|
||||
},
|
||||
{
|
||||
key: "documents",
|
||||
label: (
|
||||
<span><FileImageFilled />{t("jobs.labels.documents")}</span>
|
||||
),
|
||||
icon: <FileImageFilled />,
|
||||
label: t("jobs.labels.documents"),
|
||||
children: bodyshop.uselocalmediaserver ? (
|
||||
<JobsDocumentsLocalGallery job={job} />
|
||||
) : (
|
||||
@@ -332,15 +324,14 @@ export function JobsDetailPage({
|
||||
},
|
||||
{
|
||||
key: "notes",
|
||||
label: (
|
||||
<span><Icon component={FaRegStickyNote} />{t("jobs.labels.notes")}</span>
|
||||
),
|
||||
icon: <Icon component={FaRegStickyNote} />,
|
||||
label: t("jobs.labels.notes"),
|
||||
children: <JobNotesContainer jobId={job.id} />,
|
||||
},
|
||||
{
|
||||
key: "audit",
|
||||
label: (<span><HistoryOutlined />{t("jobs.labels.audit")}</span>
|
||||
),
|
||||
icon: <HistoryOutlined />,
|
||||
label: t("jobs.labels.audit"),
|
||||
children: <JobAuditTrail jobId={job.id} />,
|
||||
},
|
||||
]}
|
||||
|
||||
@@ -77,22 +77,22 @@ export function ScoreboardContainer({ setBreadcrumbs, setSelectedHeader }) {
|
||||
items={[
|
||||
{
|
||||
key: "sb",
|
||||
label: (<span><Icon component={FaShieldAlt} />{t("scoreboard.labels.jobs")}</span>
|
||||
),
|
||||
icon: <Icon component={FaShieldAlt} />,
|
||||
label: t("scoreboard.labels.jobs"),
|
||||
forceRender: true,
|
||||
children: <ScoreboardDisplay />,
|
||||
},
|
||||
{
|
||||
key: "tickets",
|
||||
label: (<span><FieldTimeOutlined />{t("scoreboard.labels.timeticketsemployee")}</span>
|
||||
),
|
||||
icon: <FieldTimeOutlined />,
|
||||
label: t("scoreboard.labels.timeticketsemployee"),
|
||||
forceRender: true,
|
||||
children: <ScoreboardTimeTickets />,
|
||||
},
|
||||
{
|
||||
key: "ticketsstats",
|
||||
label: (<span><FieldTimeOutlined />{t("scoreboard.labels.allemployeetimetickets")}</span>
|
||||
),
|
||||
icon: <FieldTimeOutlined />,
|
||||
label: t("scoreboard.labels.allemployeetimetickets"),
|
||||
forceRender: true,
|
||||
children: <ScoreboardTimeTicketsStats />,
|
||||
},
|
||||
|
||||
@@ -2023,24 +2023,24 @@
|
||||
- active:
|
||||
_eq: true
|
||||
columns:
|
||||
- labor_rates
|
||||
- percentage
|
||||
- created_at
|
||||
- updated_at
|
||||
- employeeid
|
||||
- id
|
||||
- labor_rates
|
||||
- percentage
|
||||
- teamid
|
||||
- updated_at
|
||||
select_permissions:
|
||||
- role: user
|
||||
permission:
|
||||
columns:
|
||||
- labor_rates
|
||||
- percentage
|
||||
- created_at
|
||||
- updated_at
|
||||
- employeeid
|
||||
- id
|
||||
- labor_rates
|
||||
- percentage
|
||||
- teamid
|
||||
- updated_at
|
||||
filter:
|
||||
employee_team:
|
||||
bodyshop:
|
||||
@@ -2055,13 +2055,13 @@
|
||||
- role: user
|
||||
permission:
|
||||
columns:
|
||||
- labor_rates
|
||||
- percentage
|
||||
- created_at
|
||||
- updated_at
|
||||
- employeeid
|
||||
- id
|
||||
- labor_rates
|
||||
- percentage
|
||||
- teamid
|
||||
- updated_at
|
||||
filter:
|
||||
employee_team:
|
||||
bodyshop:
|
||||
@@ -2123,21 +2123,23 @@
|
||||
_eq: true
|
||||
columns:
|
||||
- active
|
||||
- name
|
||||
- created_at
|
||||
- updated_at
|
||||
- bodyshopid
|
||||
- created_at
|
||||
- id
|
||||
- max_load
|
||||
- name
|
||||
- updated_at
|
||||
select_permissions:
|
||||
- role: user
|
||||
permission:
|
||||
columns:
|
||||
- active
|
||||
- name
|
||||
- created_at
|
||||
- updated_at
|
||||
- bodyshopid
|
||||
- created_at
|
||||
- id
|
||||
- max_load
|
||||
- name
|
||||
- updated_at
|
||||
filter:
|
||||
bodyshop:
|
||||
associations:
|
||||
@@ -2153,6 +2155,7 @@
|
||||
columns:
|
||||
- active
|
||||
- bodyshopid
|
||||
- max_load
|
||||
- name
|
||||
- updated_at
|
||||
filter:
|
||||
|
||||
@@ -0,0 +1,4 @@
|
||||
-- Could not auto-generate a down migration.
|
||||
-- Please write an appropriate down migration for the SQL below:
|
||||
-- alter table "public"."employee_team_members" add column "max_load" numeric
|
||||
-- not null default '10000';
|
||||
@@ -0,0 +1,2 @@
|
||||
alter table "public"."employee_team_members" add column "max_load" numeric
|
||||
not null default '10000';
|
||||
@@ -0,0 +1,3 @@
|
||||
alter table "public"."employee_team_members" alter column "max_load" set default '10000'::numeric;
|
||||
alter table "public"."employee_team_members" alter column "max_load" drop not null;
|
||||
alter table "public"."employee_team_members" add column "max_load" numeric;
|
||||
@@ -0,0 +1 @@
|
||||
alter table "public"."employee_team_members" drop column "max_load" cascade;
|
||||
@@ -0,0 +1,4 @@
|
||||
-- Could not auto-generate a down migration.
|
||||
-- Please write an appropriate down migration for the SQL below:
|
||||
-- alter table "public"."employee_teams" add column "max_load" numeric
|
||||
-- not null default '10000';
|
||||
@@ -0,0 +1,2 @@
|
||||
alter table "public"."employee_teams" add column "max_load" numeric
|
||||
not null default '10000';
|
||||
@@ -132,6 +132,7 @@ exports.payment_refund = async (req, res) => {
|
||||
exports.generate_payment_url = async (req, res) => {
|
||||
logger.log("intellipay-payment-url", "DEBUG", req.user?.email, null, null);
|
||||
const shopCredentials = await getShopCredentials(req.body.bodyshop);
|
||||
|
||||
try {
|
||||
const options = {
|
||||
method: "POST",
|
||||
@@ -139,7 +140,12 @@ exports.generate_payment_url = async (req, res) => {
|
||||
//TODO: Move these to environment variables/database.
|
||||
data: qs.stringify({
|
||||
...shopCredentials,
|
||||
...req.body,
|
||||
//...req.body,
|
||||
amount: Dinero({ amount: Math.round(req.body.amount * 100) }).toFormat(
|
||||
"0.00"
|
||||
),
|
||||
account: req.body.account,
|
||||
invoice: req.body.invoice,
|
||||
createshorturl: true,
|
||||
//The postback URL is set at the CP teller global terminal settings page.
|
||||
}),
|
||||
|
||||
Reference in New Issue
Block a user