From 2215c8439e706f7232e983747e823252c1f51b50 Mon Sep 17 00:00:00 2001 From: Dave Richer Date: Fri, 15 Mar 2024 16:12:27 -0400 Subject: [PATCH 01/27] - Hasura Migration Changes Signed-off-by: Dave Richer --- hasura/metadata/tables.yaml | 194 +++++++++++++++++- .../down.sql | 1 + .../up.sql | 18 ++ 3 files changed, 212 insertions(+), 1 deletion(-) create mode 100644 hasura/migrations/1710532848432_create_table_public_tasks/down.sql create mode 100644 hasura/migrations/1710532848432_create_table_public_tasks/up.sql diff --git a/hasura/metadata/tables.yaml b/hasura/metadata/tables.yaml index 587fa8ac3..2f47a4e8f 100644 --- a/hasura/metadata/tables.yaml +++ b/hasura/metadata/tables.yaml @@ -569,6 +569,13 @@ table: name: parts_orders schema: public + - name: tasks + using: + foreign_key_constraint_on: + column: billid + table: + name: tasks + schema: public insert_permissions: - role: user permission: @@ -818,6 +825,13 @@ table: name: inventory schema: public + - name: ioevents + using: + foreign_key_constraint_on: + column: bodyshopid + table: + name: ioevents + schema: public - name: jobs using: foreign_key_constraint_on: @@ -846,6 +860,13 @@ table: name: phonebook schema: public + - name: tasks + using: + foreign_key_constraint_on: + column: bodyshopid + table: + name: tasks + schema: public - name: timetickets using: foreign_key_constraint_on: @@ -2675,6 +2696,13 @@ - table: name: ioevents schema: public + object_relationships: + - name: bodyshop + using: + foreign_key_constraint_on: bodyshopid + - name: user + using: + foreign_key_constraint_on: useremail - table: name: job_ar_schema schema: public @@ -2824,6 +2852,13 @@ table: name: parts_order_lines schema: public + - name: tasks + using: + foreign_key_constraint_on: + column: joblineid + table: + name: tasks + schema: public insert_permissions: - role: user permission: @@ -3311,6 +3346,13 @@ table: name: scoreboard schema: public + - name: tasks + using: + foreign_key_constraint_on: + column: jobid + table: + name: tasks + schema: public - name: timetickets using: foreign_key_constraint_on: @@ -4200,7 +4242,7 @@ interval_sec: 10 num_retries: 0 timeout_sec: 60 - webhook_from_env: HASURA_API_URL + webhook: https://worktest.home.irony.online headers: - name: event-secret value_from_env: EVENT_SECRET @@ -5008,6 +5050,13 @@ table: name: parts_order_lines schema: public + - name: tasks + using: + foreign_key_constraint_on: + column: partsorderid + table: + name: tasks + schema: public insert_permissions: - role: user permission: @@ -5623,6 +5672,128 @@ _eq: X-Hasura-User-Id - active: _eq: true +- table: + name: tasks + schema: public + object_relationships: + - name: bill + using: + foreign_key_constraint_on: billid + - name: bodyshop + using: + foreign_key_constraint_on: bodyshopid + - name: job + using: + foreign_key_constraint_on: jobid + - name: jobline + using: + foreign_key_constraint_on: joblineid + - name: parts_order + using: + foreign_key_constraint_on: partsorderid + - name: user + using: + foreign_key_constraint_on: assigned_to + - name: userByCreatedBy + using: + foreign_key_constraint_on: created_by + insert_permissions: + - role: user + permission: + check: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + columns: + - completed + - deleted + - priority + - assigned_to + - created_by + - description + - title + - completed_at + - created_at + - deleted_at + - due_date + - remind_at + - updated_at + - billid + - bodyshopid + - id + - jobid + - joblineid + - partsorderid + select_permissions: + - role: user + permission: + columns: + - completed + - deleted + - priority + - assigned_to + - created_by + - description + - title + - completed_at + - created_at + - deleted_at + - due_date + - remind_at + - updated_at + - billid + - bodyshopid + - id + - jobid + - joblineid + - partsorderid + filter: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + update_permissions: + - role: user + permission: + columns: + - completed + - deleted + - priority + - assigned_to + - created_by + - description + - title + - completed_at + - created_at + - deleted_at + - due_date + - remind_at + - updated_at + - billid + - bodyshopid + - id + - jobid + - joblineid + - partsorderid + filter: + bodyshop: + associations: + _and: + - user: + authid: + _eq: X-Hasura-User-Id + - active: + _eq: true + check: null - table: name: timetickets schema: public @@ -6006,6 +6177,13 @@ table: name: exportlog schema: public + - name: ioevents + using: + foreign_key_constraint_on: + column: useremail + table: + name: ioevents + schema: public - name: messages using: foreign_key_constraint_on: @@ -6034,6 +6212,20 @@ table: name: parts_orders schema: public + - name: tasks + using: + foreign_key_constraint_on: + column: assigned_to + table: + name: tasks + schema: public + - name: tasksByCreatedBy + using: + foreign_key_constraint_on: + column: created_by + table: + name: tasks + schema: public - name: timetickets using: foreign_key_constraint_on: diff --git a/hasura/migrations/1710532848432_create_table_public_tasks/down.sql b/hasura/migrations/1710532848432_create_table_public_tasks/down.sql new file mode 100644 index 000000000..ba949320f --- /dev/null +++ b/hasura/migrations/1710532848432_create_table_public_tasks/down.sql @@ -0,0 +1 @@ +DROP TABLE "public"."tasks"; diff --git a/hasura/migrations/1710532848432_create_table_public_tasks/up.sql b/hasura/migrations/1710532848432_create_table_public_tasks/up.sql new file mode 100644 index 000000000..f5e9db3c6 --- /dev/null +++ b/hasura/migrations/1710532848432_create_table_public_tasks/up.sql @@ -0,0 +1,18 @@ +CREATE TABLE "public"."tasks" ("id" uuid NOT NULL DEFAULT gen_random_uuid(), "created_at" timestamptz NOT NULL DEFAULT now(), "updated_at" timestamptz NOT NULL DEFAULT now(), "title" text NOT NULL, "description" Text, "deleted" boolean NOT NULL DEFAULT false, "deleted_at" timestamptz, "due_date" timestamptz, "created_by" text NOT NULL, "assigned_to" Text, "completed" boolean NOT NULL DEFAULT false, "completed_at" timestamptz, "remind_at" timestamptz, "priority" numeric, "bodyshopid" UUID NOT NULL, "jobid" UUID NOT NULL, "joblineid" UUID, "partsorderid" UUID, "billid" UUID, PRIMARY KEY ("id") , FOREIGN KEY ("created_by") REFERENCES "public"."users"("email") ON UPDATE restrict ON DELETE restrict, FOREIGN KEY ("assigned_to") REFERENCES "public"."users"("email") ON UPDATE restrict ON DELETE restrict, FOREIGN KEY ("bodyshopid") REFERENCES "public"."bodyshops"("id") ON UPDATE restrict ON DELETE restrict, FOREIGN KEY ("jobid") REFERENCES "public"."jobs"("id") ON UPDATE cascade ON DELETE cascade, FOREIGN KEY ("joblineid") REFERENCES "public"."joblines"("id") ON UPDATE set null ON DELETE set null, FOREIGN KEY ("partsorderid") REFERENCES "public"."parts_orders"("id") ON UPDATE set null ON DELETE set null, FOREIGN KEY ("billid") REFERENCES "public"."bills"("id") ON UPDATE set null ON DELETE set null); +CREATE OR REPLACE FUNCTION "public"."set_current_timestamp_updated_at"() +RETURNS TRIGGER AS $$ +DECLARE + _new record; +BEGIN + _new := NEW; + _new."updated_at" = NOW(); + RETURN _new; +END; +$$ LANGUAGE plpgsql; +CREATE TRIGGER "set_public_tasks_updated_at" +BEFORE UPDATE ON "public"."tasks" +FOR EACH ROW +EXECUTE PROCEDURE "public"."set_current_timestamp_updated_at"(); +COMMENT ON TRIGGER "set_public_tasks_updated_at" ON "public"."tasks" +IS 'trigger to set value of column "updated_at" to current timestamp on row update'; +CREATE EXTENSION IF NOT EXISTS pgcrypto; From bc25c2398246b6a2edbfb48ae6b830673ec277e3 Mon Sep 17 00:00:00 2001 From: Patrick Fic Date: Mon, 18 Mar 2024 15:41:32 -0700 Subject: [PATCH 02/27] Resolve event env var. --- hasura/metadata/tables.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hasura/metadata/tables.yaml b/hasura/metadata/tables.yaml index 2f47a4e8f..1dd02cf6a 100644 --- a/hasura/metadata/tables.yaml +++ b/hasura/metadata/tables.yaml @@ -4242,7 +4242,7 @@ interval_sec: 10 num_retries: 0 timeout_sec: 60 - webhook: https://worktest.home.irony.online + webhook_from_env: HASURA_API_URL headers: - name: event-secret value_from_env: EVENT_SECRET From f35ea026b8376198ca3029df469167834acd64df Mon Sep 17 00:00:00 2001 From: Dave Richer Date: Tue, 19 Mar 2024 16:25:21 -0400 Subject: [PATCH 03/27] - Hasura Migration Changes Signed-off-by: Dave Richer --- .../job-lifecycle/job-lifecycle-dashboard.component.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/components/dashboard-components/job-lifecycle/job-lifecycle-dashboard.component.jsx b/client/src/components/dashboard-components/job-lifecycle/job-lifecycle-dashboard.component.jsx index 417907eb9..85e8ef8fc 100644 --- a/client/src/components/dashboard-components/job-lifecycle/job-lifecycle-dashboard.component.jsx +++ b/client/src/components/dashboard-components/job-lifecycle/job-lifecycle-dashboard.component.jsx @@ -19,7 +19,7 @@ export default function JobLifecycleDashboardComponent({data, bodyshop, ...cardP setLoading(true); const response = await axios.post("/job/lifecycle", { jobids: data.job_lifecycle.map(x => x.id), - statuses: bodyshop.md_order_statuses + statuses: bodyshop.md_ro_statuses }); setLifecycleData(response.data.durations); setLoading(false); From d1132e7d4579b35934c0c58fb691d6a98543abec Mon Sep 17 00:00:00 2001 From: Allan Carr Date: Tue, 19 Mar 2024 14:30:31 -0700 Subject: [PATCH 04/27] IO-2711 Check Box Visibility Signed-off-by: Allan Carr --- .../job-reconciliation-bills-table.component.jsx | 2 +- .../production-list-columns.data.js | 2 +- client/src/pages/bills/bills.page.component.jsx | 8 +++----- .../src/pages/export-logs/export-logs.page.component.jsx | 4 +--- 4 files changed, 6 insertions(+), 10 deletions(-) diff --git a/client/src/components/job-reconciliation-bills-table/job-reconciliation-bills-table.component.jsx b/client/src/components/job-reconciliation-bills-table/job-reconciliation-bills-table.component.jsx index 5cbe83620..f40da850a 100644 --- a/client/src/components/job-reconciliation-bills-table/job-reconciliation-bills-table.component.jsx +++ b/client/src/components/job-reconciliation-bills-table/job-reconciliation-bills-table.component.jsx @@ -82,7 +82,7 @@ export default function JobReconciliationBillsTable({ state.sortedInfo.order, render: (text, record) => ( - + ), }, ]; diff --git a/client/src/components/production-list-columns/production-list-columns.data.js b/client/src/components/production-list-columns/production-list-columns.data.js index 7e706e430..6677c2127 100644 --- a/client/src/components/production-list-columns/production-list-columns.data.js +++ b/client/src/components/production-list-columns/production-list-columns.data.js @@ -302,7 +302,7 @@ const r = ({ technician, state, activeStatuses, data, bodyshop }) => { onFilter: (value, record) => value.includes(record.special_coverage_policy), render: (text, record) => ( - + ), }, diff --git a/client/src/pages/bills/bills.page.component.jsx b/client/src/pages/bills/bills.page.component.jsx index 169a94a5e..43e199ae5 100644 --- a/client/src/pages/bills/bills.page.component.jsx +++ b/client/src/pages/bills/bills.page.component.jsx @@ -13,8 +13,8 @@ import { setModalContext } from "../../redux/modals/modals.actions"; import CurrencyFormatter from "../../utils/CurrencyFormatter"; import { DateFormatter } from "../../utils/DateFormatter"; import { TemplateList } from "../../utils/TemplateConstants"; +import { pageLimit } from "../../utils/config"; import { alphaSort, dateSort } from "../../utils/sorters"; -import {pageLimit} from "../../utils/config"; const mapDispatchToProps = (dispatch) => ({ setPartsOrderContext: (context) => @@ -125,9 +125,7 @@ export function BillsListPage({ sortOrder: state.sortedInfo.columnKey === "is_credit_memo" && state.sortedInfo.order, - render: (text, record) => ( - - ), + render: (text, record) => , }, { title: t("bills.fields.exported"), @@ -136,7 +134,7 @@ export function BillsListPage({ sorter: (a, b) => a.exported - b.exported, sortOrder: state.sortedInfo.columnKey === "exported" && state.sortedInfo.order, - render: (text, record) => , + render: (text, record) => , }, { title: t("general.labels.actions"), diff --git a/client/src/pages/export-logs/export-logs.page.component.jsx b/client/src/pages/export-logs/export-logs.page.component.jsx index 8e090a712..565b13510 100644 --- a/client/src/pages/export-logs/export-logs.page.component.jsx +++ b/client/src/pages/export-logs/export-logs.page.component.jsx @@ -167,9 +167,7 @@ export function ExportLogsPageComponent({ bodyshop }) { { text: "False", value: false }, ], onFilter: (value, record) => record.successful === value, - render: (text, record) => ( - - ), + render: (text, record) => , }, { title: t("general.labels.message"), From 8f9b05b974b90205b924c8f857feac8c8445236f Mon Sep 17 00:00:00 2001 From: Allan Carr Date: Tue, 19 Mar 2024 14:41:34 -0700 Subject: [PATCH 05/27] IO-2698 Fuel Level & Sorter Signed-off-by: Allan Carr --- .../courtesy-cars-list/courtesy-cars-list.component.jsx | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/client/src/components/courtesy-cars-list/courtesy-cars-list.component.jsx b/client/src/components/courtesy-cars-list/courtesy-cars-list.component.jsx index 3bd49d6e7..de1c6f0ed 100644 --- a/client/src/components/courtesy-cars-list/courtesy-cars-list.component.jsx +++ b/client/src/components/courtesy-cars-list/courtesy-cars-list.component.jsx @@ -178,7 +178,7 @@ export default function CourtesyCarsList({ loading, courtesycars, refetch }) { title: t("courtesycars.fields.fuel"), dataIndex: "fuel", key: "fuel", - sorter: (a, b) => alphaSort(a.fuel, b.fuel), + sorter: (a, b) => a.fuel - b.fuel, sortOrder: state.sortedInfo.columnKey === "fuel" && state.sortedInfo.order, render: (text, record) => { @@ -187,12 +187,14 @@ export default function CourtesyCarsList({ loading, courtesycars, refetch }) { return t("courtesycars.labels.fuel.full"); case 88: return t("courtesycars.labels.fuel.78"); + case 75: + return t("courtesycars.labels.fuel.34"); case 63: return t("courtesycars.labels.fuel.58"); case 50: return t("courtesycars.labels.fuel.12"); case 38: - return t("courtesycars.labels.fuel.34"); + return t("courtesycars.labels.fuel.38"); case 25: return t("courtesycars.labels.fuel.14"); case 13: From 23b5b740cb609c8a12c8f3d1534ce47015a8cdcd Mon Sep 17 00:00:00 2001 From: Allan Carr Date: Tue, 19 Mar 2024 17:17:15 -0700 Subject: [PATCH 06/27] IO-2686 Disable Return Item button on Bill Drawer if InHouse Signed-off-by: Allan Carr --- .../bill-detail-edit/bill-detail-edit-return.component.jsx | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/client/src/components/bill-detail-edit/bill-detail-edit-return.component.jsx b/client/src/components/bill-detail-edit/bill-detail-edit-return.component.jsx index 3935fc5f2..87ea3e730 100644 --- a/client/src/components/bill-detail-edit/bill-detail-edit-return.component.jsx +++ b/client/src/components/bill-detail-edit/bill-detail-edit-return.component.jsx @@ -173,7 +173,11 @@ export function BillDetailEditReturn({ diff --git a/client/src/components/job-employee-assignments/job-employee-assignments.container.jsx b/client/src/components/job-employee-assignments/job-employee-assignments.container.jsx index a5feb3fa7..cd04d4fa1 100644 --- a/client/src/components/job-employee-assignments/job-employee-assignments.container.jsx +++ b/client/src/components/job-employee-assignments/job-employee-assignments.container.jsx @@ -43,13 +43,13 @@ export function JobEmployeeAssignmentsContainer({ }); if (refetch) refetch(); - insertAuditTrail({ - jobid: job.id, - operation: AuditTrailMapping.jobassignmentchange(operation, name), - type: "jobassignmentchange", - }); - - if (!!result.errors) { + if (!!!result.errors) { + insertAuditTrail({ + jobid: job.id, + operation: AuditTrailMapping.jobassignmentchange(operation, name), + type: "jobassignmentchange", + }); + } else { notification["error"]({ message: t("jobs.errors.assigning", { message: JSON.stringify(result.errors), @@ -67,18 +67,19 @@ export function JobEmployeeAssignmentsContainer({ variables: { jobId: job.id, job: { [empAssignment]: null } }, }); - if (!!result.errors) { + if (!!!result.errors) { + insertAuditTrail({ + jobid: job.id, + operation: AuditTrailMapping.jobassignmentremoved(operation), + type: "jobassignmentremoved", + }); + } else { notification["error"]({ message: t("jobs.errors.assigning", { message: JSON.stringify(result.errors), }), }); } - insertAuditTrail({ - jobid: job.id, - operation: AuditTrailMapping.jobassignmentremoved(operation), - type: "jobassignmentremoved", - }); setLoading(false); }; From b1ca09bd4fa908ed8b71bccde03b633b69d4100f Mon Sep 17 00:00:00 2001 From: Allan Carr Date: Tue, 19 Mar 2024 17:55:59 -0700 Subject: [PATCH 09/27] IO-2710 Prettierr Signed-off-by: Allan Carr --- .../job-employee-assignments.component.jsx | 1 - 1 file changed, 1 deletion(-) diff --git a/client/src/components/job-employee-assignments/job-employee-assignments.component.jsx b/client/src/components/job-employee-assignments/job-employee-assignments.component.jsx index 5962d40fe..283a49447 100644 --- a/client/src/components/job-employee-assignments/job-employee-assignments.component.jsx +++ b/client/src/components/job-employee-assignments/job-employee-assignments.component.jsx @@ -23,7 +23,6 @@ export function JobEmployeeAssignments({ jobRO, body, refinish, - prep, csr, handleAdd, From 6831a794079c395a69237799168ac14b3645d1ea Mon Sep 17 00:00:00 2001 From: Patrick Fic Date: Wed, 20 Mar 2024 14:01:17 -0700 Subject: [PATCH 10/27] Minor proman changes. --- bodyshop_translations.babel | 21 +++++++++++++++++++ .../jobs-detail.page.component.jsx | 2 +- .../pages/manage/manage.page.component.jsx | 3 +-- client/src/translations/en_us/common.json | 1 + client/src/translations/es/common.json | 1 + client/src/translations/fr/common.json | 1 + client/vite.config.js | 3 +++ 7 files changed, 29 insertions(+), 3 deletions(-) diff --git a/bodyshop_translations.babel b/bodyshop_translations.babel index 6b24dfd21..105fb3b01 100644 --- a/bodyshop_translations.babel +++ b/bodyshop_translations.babel @@ -37126,6 +37126,27 @@ + + parts + false + + + + + + en-US + false + + + es-MX + false + + + fr-CA + false + + + partssublet false diff --git a/client/src/pages/jobs-detail/jobs-detail.page.component.jsx b/client/src/pages/jobs-detail/jobs-detail.page.component.jsx index d9121f1fe..1027001f4 100644 --- a/client/src/pages/jobs-detail/jobs-detail.page.component.jsx +++ b/client/src/pages/jobs-detail/jobs-detail.page.component.jsx @@ -332,7 +332,7 @@ export function JobsDetailPage({ { key: "partssublet", icon: , - label: t("menus.jobsdetail.partssublet"), + label: HasFeatureAccess({featureName: "bills", bodyshop}) ? t("menus.jobsdetail.partssublet") : t("menus.jobsdetail.parts"), children: , }, ...InstanceRenderManager({ imex: true, rome: true, promanager: HasFeatureAccess({ featureName: 'timetickets', bodyshop }) }) ? [ { diff --git a/client/src/pages/manage/manage.page.component.jsx b/client/src/pages/manage/manage.page.component.jsx index 3dd482974..f00fb4a9e 100644 --- a/client/src/pages/manage/manage.page.component.jsx +++ b/client/src/pages/manage/manage.page.component.jsx @@ -521,13 +521,12 @@ export function Manage({conflict, bodyshop,enableJoyRide,joyRideSteps,setJoyRide }} >
- {`Joy Ride Status: ${enableJoyRide}`}
{`${InstanceRenderManager({ imex: t('titles.imexonline'), rome: t('titles.romeonline'), promanager: t('titles.promanager'), - })} ${import.meta.env.VITE_APP_GIT_SHA || 'Local Build'} - ${ + })} - ${ import.meta.env.VITE_APP_GIT_SHA_DATE }`}
diff --git a/client/src/translations/en_us/common.json b/client/src/translations/en_us/common.json index 08a6737cf..3bb37edb9 100644 --- a/client/src/translations/en_us/common.json +++ b/client/src/translations/en_us/common.json @@ -2174,6 +2174,7 @@ "insurance": "Insurance Information", "labor": "Labor", "lifecycle": "Lifecycle", + "parts": "Parts", "partssublet": "Parts & Bills", "rates": "Rates", "repairdata": "Repair Data", diff --git a/client/src/translations/es/common.json b/client/src/translations/es/common.json index 7c4416b16..ba11bb4a3 100644 --- a/client/src/translations/es/common.json +++ b/client/src/translations/es/common.json @@ -2174,6 +2174,7 @@ "insurance": "", "labor": "Labor", "lifecycle": "", + "parts": "", "partssublet": "Piezas / Subarrendamiento", "rates": "", "repairdata": "Datos de reparación", diff --git a/client/src/translations/fr/common.json b/client/src/translations/fr/common.json index c219fbd89..1117003e0 100644 --- a/client/src/translations/fr/common.json +++ b/client/src/translations/fr/common.json @@ -2174,6 +2174,7 @@ "insurance": "", "labor": "La main d'oeuvre", "lifecycle": "", + "parts": "", "partssublet": "Pièces / Sous-location", "rates": "", "repairdata": "Données de réparation", diff --git a/client/vite.config.js b/client/vite.config.js index 2ec487ccb..a5d9f6734 100644 --- a/client/vite.config.js +++ b/client/vite.config.js @@ -105,6 +105,9 @@ export default defineConfig({ react(), // CompressionPlugin(), //Cloudfront already compresses assets, so not needed. ], + define:{ + "APP_VERSION": JSON.stringify(process.env.npm_package_version) + }, server: { host: true, port: 3000, From 6463e13eebb294e799f53448d1dd52323f93fbf9 Mon Sep 17 00:00:00 2001 From: Patrick Fic Date: Thu, 21 Mar 2024 09:12:49 -0700 Subject: [PATCH 11/27] IO-2715 Resolve vendor search select. --- client/package-lock.json | 271 ++++++++++++------ client/package.json | 3 +- client/src/App/App.container.jsx | 6 + .../vendor-search-select.component.jsx | 158 +++++----- client/src/redux/user/user.sagas.js | 10 + 5 files changed, 277 insertions(+), 171 deletions(-) diff --git a/client/package-lock.json b/client/package-lock.json index 14e0ce87c..730af5400 100644 --- a/client/package-lock.json +++ b/client/package-lock.json @@ -20,7 +20,7 @@ "@splitsoftware/splitio-react": "^1.11.0", "@tanem/react-nprogress": "^5.0.51", "@vitejs/plugin-react": "^4.2.1", - "antd": "^5.14.2", + "antd": "^5.15.3", "apollo-link-logger": "^2.0.1", "apollo-link-sentry": "^3.3.0", "axios": "^1.6.7", @@ -71,6 +71,7 @@ "styled-components": "^6.1.8", "subscriptions-transport-ws": "^0.11.0", "terser-webpack-plugin": "^5.3.10", + "userpilot": "^1.3.1", "vite-plugin-ejs": "^1.7.0", "web-vitals": "^3.5.2", "workbox-core": "^7.0.0", @@ -186,8 +187,9 @@ } }, "node_modules/@ant-design/icons": { - "version": "5.3.0", - "license": "MIT", + "version": "5.3.4", + "resolved": "https://registry.npmjs.org/@ant-design/icons/-/icons-5.3.4.tgz", + "integrity": "sha512-U5eTSeSFr2V9SeJzYOo5mybAZfsoNuiIA8bvFoZUe+h9LBLs8UwrVaVwcMQC4AhBuojXkLMlmtnIlvUczXXHaQ==", "dependencies": { "@ant-design/colors": "^7.0.0", "@ant-design/icons-svg": "^4.4.0", @@ -2104,8 +2106,9 @@ "license": "MIT" }, "node_modules/@babel/runtime": { - "version": "7.23.9", - "license": "MIT", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.1.tgz", + "integrity": "sha512-+BIznRzyqBf+2wCTxcKE3wDjfGeCoVE61KSHGpkzqrLi8qxqFwBeUFyId2cxkTmm55fzDGnm0+yCxaxygrLUnQ==", "dependencies": { "regenerator-runtime": "^0.14.0" }, @@ -4970,6 +4973,32 @@ "version": "2.0.4", "license": "MIT" }, + "node_modules/@ndhoule/each": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@ndhoule/each/-/each-2.0.1.tgz", + "integrity": "sha512-wHuJw6x+rF6Q9Skgra++KccjBozCr9ymtna0FhxmV/8xT/hZ2ExGYR8SV8prg8x4AH/7mzDYErNGIVHuzHeybw==", + "dependencies": { + "@ndhoule/keys": "^2.0.0" + } + }, + "node_modules/@ndhoule/includes": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@ndhoule/includes/-/includes-2.0.1.tgz", + "integrity": "sha512-Q8zN6f3yIhxgBwZ5ldLozHqJlc/fRQ5+hFFsPMFeC9SJvz0nq8vG9hoRXL1c1iaNFQd7yAZIy2igQpERoFqxqg==", + "dependencies": { + "@ndhoule/each": "^2.0.1" + } + }, + "node_modules/@ndhoule/keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@ndhoule/keys/-/keys-2.0.0.tgz", + "integrity": "sha512-vtCqKBC1Av6dsBA8xpAO+cgk051nfaI+PnmTZep2Px0vYrDvpUmLxv7z40COlWH5yCpu3gzNhepk+02yiQiZNw==" + }, + "node_modules/@ndhoule/pick": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@ndhoule/pick/-/pick-2.0.0.tgz", + "integrity": "sha512-xkYtpf1pRd8egwvl5tJcdGu+GBd6ZZH3S/zoIQ9txEI+pHF9oTIlxMC9G4CB3sRugAeLgu8qYJGl3tnxWq74Qw==" + }, "node_modules/@nicolo-ribaudo/eslint-scope-5-internals": { "version": "5.1.1-v1", "license": "MIT", @@ -5150,8 +5179,9 @@ "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==" }, "node_modules/@rc-component/color-picker": { - "version": "1.5.2", - "license": "MIT", + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/@rc-component/color-picker/-/color-picker-1.5.3.tgz", + "integrity": "sha512-+tGGH3nLmYXTalVe0L8hSZNs73VTP5ueSHwUlDC77KKRaN7G4DS4wcpG5DTDzdcV/Yas+rzA6UGgIyzd8fS4cw==", "dependencies": { "@babel/runtime": "^7.23.6", "@ctrl/tinycolor": "^3.6.1", @@ -5165,7 +5195,8 @@ }, "node_modules/@rc-component/context": { "version": "1.4.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@rc-component/context/-/context-1.4.0.tgz", + "integrity": "sha512-kFcNxg9oLRMoL3qki0OMxK+7g5mypjgaaJp/pkOis/6rVxma9nJBF/8kCIuTYHUQNr0ii7MxqE33wirPZLJQ2w==", "dependencies": { "@babel/runtime": "^7.10.1", "rc-util": "^5.27.0" @@ -5203,7 +5234,8 @@ }, "node_modules/@rc-component/portal": { "version": "1.1.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@rc-component/portal/-/portal-1.1.2.tgz", + "integrity": "sha512-6f813C0IsasTZms08kfA8kPAGxbbkYToa8ALaiDIGGECU4i9hj8Plgbx0sNJDrey3EtHO30hmdaxtT0138xZcg==", "dependencies": { "@babel/runtime": "^7.18.0", "classnames": "^2.3.2", @@ -5218,12 +5250,13 @@ } }, "node_modules/@rc-component/tour": { - "version": "1.12.3", - "license": "MIT", + "version": "1.14.2", + "resolved": "https://registry.npmjs.org/@rc-component/tour/-/tour-1.14.2.tgz", + "integrity": "sha512-A75DZ8LVvahBIvxooj3Gvf2sxe+CGOkmzPNX7ek0i0AJHyKZ1HXe5ieIGo3m0FMdZfVOlbCJ952Duq8VKAHk6g==", "dependencies": { "@babel/runtime": "^7.18.0", "@rc-component/portal": "^1.0.0-9", - "@rc-component/trigger": "^1.3.6", + "@rc-component/trigger": "^2.0.0", "classnames": "^2.3.2", "rc-util": "^5.24.4" }, @@ -5236,8 +5269,9 @@ } }, "node_modules/@rc-component/trigger": { - "version": "1.18.3", - "license": "MIT", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@rc-component/trigger/-/trigger-2.0.0.tgz", + "integrity": "sha512-niwKADPdY5dhdIblV6uwSayVivwo2uUISfJqri+/ovYQcH/omxDYBJKo755QKeoIIsWptxnRpgr7reEnNEZGFg==", "dependencies": { "@babel/runtime": "^7.23.2", "@rc-component/portal": "^1.1.0", @@ -7522,54 +7556,56 @@ } }, "node_modules/antd": { - "version": "5.14.2", - "license": "MIT", + "version": "5.15.3", + "resolved": "https://registry.npmjs.org/antd/-/antd-5.15.3.tgz", + "integrity": "sha512-53dpdGbfwipHVbqITmppp8N16i+BscMzz8NUNwaJgxwSvO9VQh/NfC/90lqGq3I2oBmxQ8TzRIxzFVKD/9OhlQ==", "dependencies": { "@ant-design/colors": "^7.0.2", "@ant-design/cssinjs": "^1.18.4", - "@ant-design/icons": "^5.3.0", + "@ant-design/icons": "^5.3.3", "@ant-design/react-slick": "~1.0.2", + "@babel/runtime": "^7.24.0", "@ctrl/tinycolor": "^3.6.1", - "@rc-component/color-picker": "~1.5.2", + "@rc-component/color-picker": "~1.5.3", "@rc-component/mutate-observer": "^1.1.0", - "@rc-component/tour": "~1.12.3", - "@rc-component/trigger": "^1.18.3", + "@rc-component/tour": "~1.14.2", + "@rc-component/trigger": "^2.0.0", "classnames": "^2.5.1", "copy-to-clipboard": "^3.3.3", "dayjs": "^1.11.10", "qrcode.react": "^3.1.0", - "rc-cascader": "~3.21.2", - "rc-checkbox": "~3.1.0", + "rc-cascader": "~3.24.0", + "rc-checkbox": "~3.2.0", "rc-collapse": "~3.7.2", - "rc-dialog": "~9.3.4", - "rc-drawer": "~7.0.0", - "rc-dropdown": "~4.1.0", - "rc-field-form": "~1.41.0", - "rc-image": "~7.5.1", - "rc-input": "~1.4.3", + "rc-dialog": "~9.4.0", + "rc-drawer": "~7.1.0", + "rc-dropdown": "~4.2.0", + "rc-field-form": "~1.42.1", + "rc-image": "~7.6.0", + "rc-input": "~1.4.5", "rc-input-number": "~9.0.0", - "rc-mentions": "~2.10.1", - "rc-menu": "~9.12.4", + "rc-mentions": "~2.11.1", + "rc-menu": "~9.13.0", "rc-motion": "^2.9.0", "rc-notification": "~5.3.0", "rc-pagination": "~4.0.4", - "rc-picker": "~4.1.4", + "rc-picker": "~4.3.0", "rc-progress": "~3.5.1", "rc-rate": "~2.12.0", "rc-resize-observer": "^1.4.0", "rc-segmented": "~2.3.0", - "rc-select": "~14.11.0", + "rc-select": "~14.13.0", "rc-slider": "~10.5.0", "rc-steps": "~6.0.1", "rc-switch": "~4.1.0", - "rc-table": "~7.39.0", - "rc-tabs": "~14.0.0", + "rc-table": "~7.42.0", + "rc-tabs": "~14.1.1", "rc-textarea": "~1.6.3", - "rc-tooltip": "~6.1.3", + "rc-tooltip": "~6.2.0", "rc-tree": "~5.8.5", - "rc-tree-select": "~5.17.0", + "rc-tree-select": "~5.19.0", "rc-upload": "~4.5.2", - "rc-util": "^5.38.2", + "rc-util": "^5.39.1", "scroll-into-view-if-needed": "^3.1.0", "throttle-debounce": "^5.0.0" }, @@ -7698,7 +7734,8 @@ }, "node_modules/array-tree-filter": { "version": "2.1.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/array-tree-filter/-/array-tree-filter-2.1.0.tgz", + "integrity": "sha512-4ROwICNlNw/Hqa9v+rk5h22KjmzB1JGTMVKP2AKJBOCgb0yL0ASf0+YvCcLNNwquOHNX48jkeZIJ3a+oOQqKcw==" }, "node_modules/array-union": { "version": "2.1.0", @@ -7887,7 +7924,8 @@ }, "node_modules/async-validator": { "version": "4.2.5", - "license": "MIT" + "resolved": "https://registry.npmjs.org/async-validator/-/async-validator-4.2.5.tgz", + "integrity": "sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg==" }, "node_modules/asynciterator.prototype": { "version": "1.0.0", @@ -9625,6 +9663,11 @@ "version": "1.0.1", "license": "MIT" }, + "node_modules/component-indexof": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/component-indexof/-/component-indexof-0.0.3.tgz", + "integrity": "sha512-puDQKvx/64HZXb4hBwIcvQLaLgux8o1CbWl39s41hrIIZDl1lJiD5jc22gj3RBeGK0ovxALDYpIbyjqDUUl0rw==" + }, "node_modules/compressible": { "version": "2.0.18", "license": "MIT", @@ -14347,6 +14390,14 @@ "node": ">= 10" } }, + "node_modules/is": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/is/-/is-3.3.0.tgz", + "integrity": "sha512-nW24QBoPcFGGHJGUwnfpI7Yc5CdqWNdsyHQszVE/z2pKHXzh7FZ5GWhJqSyaQ9wMkQnsTx+kAI8bHlCX4tKdbg==", + "engines": { + "node": "*" + } + }, "node_modules/is-alphabetical": { "version": "2.0.1", "license": "MIT", @@ -18809,6 +18860,11 @@ "version": "2.2.7", "license": "MIT" }, + "node_modules/obj-case": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/obj-case/-/obj-case-0.2.1.tgz", + "integrity": "sha512-PquYBBTy+Y6Ob/O2574XHhDtHJlV1cJHMCgW+rDRc9J5hhmRelJB3k5dTK/3cVmFVtzvAKuENeuLpoyTzMzkOg==" + }, "node_modules/object-assign": { "version": "4.1.1", "license": "MIT", @@ -21136,13 +21192,14 @@ } }, "node_modules/rc-cascader": { - "version": "3.21.2", - "license": "MIT", + "version": "3.24.0", + "resolved": "https://registry.npmjs.org/rc-cascader/-/rc-cascader-3.24.0.tgz", + "integrity": "sha512-NwkYsVULA61S085jbOYbq8Z7leyIxVmLwf+71mWLjA3kCfUf/rAKC0WfjQbqBDaLGlU9d4z1EzyPaHBKLYWv6A==", "dependencies": { "@babel/runtime": "^7.12.5", "array-tree-filter": "^2.1.0", "classnames": "^2.3.1", - "rc-select": "~14.11.0", + "rc-select": "~14.13.0", "rc-tree": "~5.8.1", "rc-util": "^5.37.0" }, @@ -21152,8 +21209,9 @@ } }, "node_modules/rc-checkbox": { - "version": "3.1.0", - "license": "MIT", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/rc-checkbox/-/rc-checkbox-3.2.0.tgz", + "integrity": "sha512-8inzw4y9dAhZmv/Ydl59Qdy5tdp9CKg4oPVcRigi+ga/yKPZS5m5SyyQPtYSgbcqHRYOdUhiPSeKfktc76du1A==", "dependencies": { "@babel/runtime": "^7.10.1", "classnames": "^2.3.2", @@ -21179,8 +21237,9 @@ } }, "node_modules/rc-dialog": { - "version": "9.3.4", - "license": "MIT", + "version": "9.4.0", + "resolved": "https://registry.npmjs.org/rc-dialog/-/rc-dialog-9.4.0.tgz", + "integrity": "sha512-AScCexaLACvf8KZRqCPz12BJ8olszXOS4lKlkMyzDQHS1m0zj1KZMYgmMCh39ee0Dcv8kyrj8mTqxuLyhH+QuQ==", "dependencies": { "@babel/runtime": "^7.10.1", "@rc-component/portal": "^1.0.0-8", @@ -21194,14 +21253,15 @@ } }, "node_modules/rc-drawer": { - "version": "7.0.0", - "license": "MIT", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/rc-drawer/-/rc-drawer-7.1.0.tgz", + "integrity": "sha512-nBE1rF5iZvpavoyqhSSz2mk/yANltA7g3aF0U45xkx381n3we/RKs9cJfNKp9mSWCedOKWt9FLEwZDaAaOGn2w==", "dependencies": { - "@babel/runtime": "^7.10.1", + "@babel/runtime": "^7.23.9", "@rc-component/portal": "^1.1.1", "classnames": "^2.2.6", "rc-motion": "^2.6.1", - "rc-util": "^5.36.0" + "rc-util": "^5.38.1" }, "peerDependencies": { "react": ">=16.9.0", @@ -21209,11 +21269,12 @@ } }, "node_modules/rc-dropdown": { - "version": "4.1.0", - "license": "MIT", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/rc-dropdown/-/rc-dropdown-4.2.0.tgz", + "integrity": "sha512-odM8Ove+gSh0zU27DUj5cG1gNKg7mLWBYzB5E4nNLrLwBmYEgYP43vHKDGOVZcJSVElQBI0+jTQgjnq0NfLjng==", "dependencies": { "@babel/runtime": "^7.18.3", - "@rc-component/trigger": "^1.7.0", + "@rc-component/trigger": "^2.0.0", "classnames": "^2.2.6", "rc-util": "^5.17.0" }, @@ -21223,8 +21284,9 @@ } }, "node_modules/rc-field-form": { - "version": "1.41.0", - "license": "MIT", + "version": "1.42.1", + "resolved": "https://registry.npmjs.org/rc-field-form/-/rc-field-form-1.42.1.tgz", + "integrity": "sha512-SqiEmWNP+I61Lt80+ofPvT+3l8Ij6vb35IS+x14gheVnCJN0SRnOwEgsqCEB5FslT7xqjUqDnU845hRZ1jzlAA==", "dependencies": { "@babel/runtime": "^7.18.0", "async-validator": "^4.1.0", @@ -21271,13 +21333,14 @@ } }, "node_modules/rc-image": { - "version": "7.5.1", - "license": "MIT", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/rc-image/-/rc-image-7.6.0.tgz", + "integrity": "sha512-tL3Rvd1sS+frZQ01i+tkeUPaOeFz2iG9/scAt/Cfs0hyCRVA/w0Pu1J/JxIX8blalvmHE0bZQRYdOmRAzWu4Hg==", "dependencies": { "@babel/runtime": "^7.11.2", "@rc-component/portal": "^1.0.2", "classnames": "^2.2.6", - "rc-dialog": "~9.3.4", + "rc-dialog": "~9.4.0", "rc-motion": "^2.6.2", "rc-util": "^5.34.1" }, @@ -21287,8 +21350,9 @@ } }, "node_modules/rc-input": { - "version": "1.4.3", - "license": "MIT", + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/rc-input/-/rc-input-1.4.5.tgz", + "integrity": "sha512-AjzykhwnwYTRSwwgCu70CGKBIAv6bP2nqnFptnNTprph/TF1BAs0Qxl91mie/BR6n827WIJB6ZjaRf9iiMwAfw==", "dependencies": { "@babel/runtime": "^7.11.1", "classnames": "^2.2.1", @@ -21315,14 +21379,15 @@ } }, "node_modules/rc-mentions": { - "version": "2.10.1", - "license": "MIT", + "version": "2.11.1", + "resolved": "https://registry.npmjs.org/rc-mentions/-/rc-mentions-2.11.1.tgz", + "integrity": "sha512-upb4AK1SRFql7qGnbLEvJqLMugVVIyjmwBJW9L0eLoN9po4JmJZaBzmKA4089fNtsU8k6l/tdZiVafyooeKnLw==", "dependencies": { "@babel/runtime": "^7.22.5", - "@rc-component/trigger": "^1.5.0", + "@rc-component/trigger": "^2.0.0", "classnames": "^2.2.6", "rc-input": "~1.4.0", - "rc-menu": "~9.12.0", + "rc-menu": "~9.13.0", "rc-textarea": "~1.6.1", "rc-util": "^5.34.1" }, @@ -21332,11 +21397,12 @@ } }, "node_modules/rc-menu": { - "version": "9.12.4", - "license": "MIT", + "version": "9.13.0", + "resolved": "https://registry.npmjs.org/rc-menu/-/rc-menu-9.13.0.tgz", + "integrity": "sha512-1l8ooCB3HcYJKCltC/s7OxRKRjgymdl9htrCeGZcXNaMct0RxZRK6OPV3lPhVksIvAGMgzPd54ClpZ5J4b8cZA==", "dependencies": { "@babel/runtime": "^7.10.1", - "@rc-component/trigger": "^1.17.0", + "@rc-component/trigger": "^2.0.0", "classnames": "2.x", "rc-motion": "^2.4.3", "rc-overflow": "^1.3.1", @@ -21379,7 +21445,8 @@ }, "node_modules/rc-overflow": { "version": "1.3.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/rc-overflow/-/rc-overflow-1.3.2.tgz", + "integrity": "sha512-nsUm78jkYAoPygDAcGZeC2VwIg/IBGSodtOY3pMof4W3M9qRJgqaDYm03ZayHlde3I6ipliAxbN0RUcGf5KOzw==", "dependencies": { "@babel/runtime": "^7.11.1", "classnames": "^2.2.1", @@ -21405,11 +21472,12 @@ } }, "node_modules/rc-picker": { - "version": "4.1.4", - "license": "MIT", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/rc-picker/-/rc-picker-4.3.0.tgz", + "integrity": "sha512-bQNB/+NdW55jlQ5lPnNqF5J90Tq4SihLbAF7tzPBvGDJyoYmDgwLm4FN0ZB3Ot9i1v6vJY/1mgqZZTT9jbYc5w==", "dependencies": { "@babel/runtime": "^7.10.1", - "@rc-component/trigger": "^1.5.0", + "@rc-component/trigger": "^2.0.0", "classnames": "^2.2.1", "rc-overflow": "^1.3.2", "rc-resize-observer": "^1.4.0", @@ -21499,11 +21567,12 @@ } }, "node_modules/rc-select": { - "version": "14.11.0", - "license": "MIT", + "version": "14.13.0", + "resolved": "https://registry.npmjs.org/rc-select/-/rc-select-14.13.0.tgz", + "integrity": "sha512-ew34FsaqHokK4dxVrcIxSYrgWJ2XJYlkk32eiOIiEo3GkHUExdCzmozMYaUc2P67c5QJRUvvY0uqCs3QG67h5A==", "dependencies": { "@babel/runtime": "^7.10.1", - "@rc-component/trigger": "^1.5.0", + "@rc-component/trigger": "^2.0.0", "classnames": "2.x", "rc-motion": "^2.0.1", "rc-overflow": "^1.3.1", @@ -21564,8 +21633,9 @@ } }, "node_modules/rc-table": { - "version": "7.39.0", - "license": "MIT", + "version": "7.42.0", + "resolved": "https://registry.npmjs.org/rc-table/-/rc-table-7.42.0.tgz", + "integrity": "sha512-GwHV9Zs3HvWxBkoXatO/IeKoElzy3Ojf3dcyw1Rj3cyQVb+ZHtexslKdyzsrKRPJ0mUa62BoX+ZAg3zgTEql8w==", "dependencies": { "@babel/runtime": "^7.10.1", "@rc-component/context": "^1.4.0", @@ -21583,13 +21653,14 @@ } }, "node_modules/rc-tabs": { - "version": "14.0.0", - "license": "MIT", + "version": "14.1.1", + "resolved": "https://registry.npmjs.org/rc-tabs/-/rc-tabs-14.1.1.tgz", + "integrity": "sha512-5nOr9PVpJy2SWHTLgv1+kESDOb0tFzl0cYU9r9d8LfL0Wg9i/n1B558rmkxdQHgBwMqxmwoyPSAbQROxMQe8nw==", "dependencies": { "@babel/runtime": "^7.11.2", "classnames": "2.x", - "rc-dropdown": "~4.1.0", - "rc-menu": "~9.12.0", + "rc-dropdown": "~4.2.0", + "rc-menu": "~9.13.0", "rc-motion": "^2.6.2", "rc-resize-observer": "^1.0.0", "rc-util": "^5.34.1" @@ -21604,7 +21675,8 @@ }, "node_modules/rc-textarea": { "version": "1.6.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/rc-textarea/-/rc-textarea-1.6.3.tgz", + "integrity": "sha512-8k7+8Y2GJ/cQLiClFMg8kUXOOdvcFQrnGeSchOvI2ZMIVvX5a3zQpLxoODL0HTrvU63fPkRmMuqaEcOF9dQemA==", "dependencies": { "@babel/runtime": "^7.10.1", "classnames": "^2.2.1", @@ -21618,11 +21690,12 @@ } }, "node_modules/rc-tooltip": { - "version": "6.1.3", - "license": "MIT", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/rc-tooltip/-/rc-tooltip-6.2.0.tgz", + "integrity": "sha512-iS/3iOAvtDh9GIx1ulY7EFUXUtktFccNLsARo3NPgLf0QW9oT0w3dA9cYWlhqAKmD+uriEwdWz1kH0Qs4zk2Aw==", "dependencies": { "@babel/runtime": "^7.11.2", - "@rc-component/trigger": "^1.18.0", + "@rc-component/trigger": "^2.0.0", "classnames": "^2.3.1" }, "peerDependencies": { @@ -21632,7 +21705,8 @@ }, "node_modules/rc-tree": { "version": "5.8.5", - "license": "MIT", + "resolved": "https://registry.npmjs.org/rc-tree/-/rc-tree-5.8.5.tgz", + "integrity": "sha512-PRfcZtVDNkR7oh26RuNe1hpw11c1wfgzwmPFL0lnxGnYefe9lDAO6cg5wJKIAwyXFVt5zHgpjYmaz0CPy1ZtKg==", "dependencies": { "@babel/runtime": "^7.10.1", "classnames": "2.x", @@ -21649,12 +21723,13 @@ } }, "node_modules/rc-tree-select": { - "version": "5.17.0", - "license": "MIT", + "version": "5.19.0", + "resolved": "https://registry.npmjs.org/rc-tree-select/-/rc-tree-select-5.19.0.tgz", + "integrity": "sha512-f4l5EsmSGF3ggj76YTzKNPY9SnXfFaer7ZccTSGb3urUf54L+cCqyT+UsPr+S5TAr8mZSxJ7g3CgkCe+cVQ6sw==", "dependencies": { "@babel/runtime": "^7.10.1", "classnames": "2.x", - "rc-select": "~14.11.0-0", + "rc-select": "~14.13.0", "rc-tree": "~5.8.1", "rc-util": "^5.16.1" }, @@ -21677,8 +21752,9 @@ } }, "node_modules/rc-util": { - "version": "5.38.2", - "license": "MIT", + "version": "5.39.1", + "resolved": "https://registry.npmjs.org/rc-util/-/rc-util-5.39.1.tgz", + "integrity": "sha512-OW/ERynNDgNr4y0oiFmtes3rbEamXw7GHGbkbNd9iRr7kgT03T6fT0b9WpJ3mbxKhyOcAHnGcIoh5u/cjrC2OQ==", "dependencies": { "@babel/runtime": "^7.18.3", "react-is": "^18.2.0" @@ -21694,7 +21770,8 @@ }, "node_modules/rc-virtual-list": { "version": "3.11.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/rc-virtual-list/-/rc-virtual-list-3.11.4.tgz", + "integrity": "sha512-NbBi0fvyIu26gP69nQBiWgUMTPX3mr4FcuBQiVqagU0BnuX8WQkiivnMs105JROeuUIFczLrlgUhLQwTWV1XDA==", "dependencies": { "@babel/runtime": "^7.20.0", "classnames": "^2.2.6", @@ -25941,6 +26018,18 @@ "react": "^16.8.0 || ^17.0.0 || ^18.0.0" } }, + "node_modules/userpilot": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/userpilot/-/userpilot-1.3.1.tgz", + "integrity": "sha512-HwOqRhTY829m++tx76E/4wMHLpqG39JPAESXnC54zdYIBASoX1wOO8ItaqpBlf5sH1rdIxU8/dUFa8nMQ60KYQ==", + "dependencies": { + "@ndhoule/includes": "^2.0.1", + "@ndhoule/pick": "^2.0.0", + "component-indexof": "0.0.3", + "is": "^3.1.0", + "obj-case": "^0.2.0" + } + }, "node_modules/util": { "version": "0.12.5", "dev": true, diff --git a/client/package.json b/client/package.json index d4ff11605..2102876c1 100644 --- a/client/package.json +++ b/client/package.json @@ -20,7 +20,7 @@ "@splitsoftware/splitio-react": "^1.11.0", "@tanem/react-nprogress": "^5.0.51", "@vitejs/plugin-react": "^4.2.1", - "antd": "^5.14.2", + "antd": "^5.15.3", "apollo-link-logger": "^2.0.1", "apollo-link-sentry": "^3.3.0", "axios": "^1.6.7", @@ -71,6 +71,7 @@ "styled-components": "^6.1.8", "subscriptions-transport-ws": "^0.11.0", "terser-webpack-plugin": "^5.3.10", + "userpilot": "^1.3.1", "vite-plugin-ejs": "^1.7.0", "web-vitals": "^3.5.2", "workbox-core": "^7.0.0", diff --git a/client/src/App/App.container.jsx b/client/src/App/App.container.jsx index e908ba45f..13c751c58 100644 --- a/client/src/App/App.container.jsx +++ b/client/src/App/App.container.jsx @@ -12,6 +12,12 @@ import App from "./App"; import * as Sentry from "@sentry/react"; import themeProvider from "./themeProvider"; +import { Userpilot } from 'userpilot' + +// Initialize Userpilot +if(import.meta.env.DEV){ + Userpilot.initialize('NX-69145f08'); +} dayjs.locale("en"); diff --git a/client/src/components/vendor-search-select/vendor-search-select.component.jsx b/client/src/components/vendor-search-select/vendor-search-select.component.jsx index aaf0626ed..a190d08a5 100644 --- a/client/src/components/vendor-search-select/vendor-search-select.component.jsx +++ b/client/src/components/vendor-search-select/vendor-search-select.component.jsx @@ -1,92 +1,92 @@ -import {HeartOutlined} from "@ant-design/icons"; -import {Select, Space, Tag} from "antd"; -import React, {forwardRef, useEffect, useState} from "react"; -import PhoneNumberFormatter from "../../utils/PhoneFormatter"; +import { HeartOutlined } from '@ant-design/icons'; +import { Select, Space, Tag } from 'antd'; +import React, { forwardRef, useEffect, useState } from 'react'; +import PhoneNumberFormatter from '../../utils/PhoneFormatter'; -const {Option} = Select; +const { Option } = Select; //To be used as a form element only. const VendorSearchSelect = ( - {value, onChange, options, onSelect, disabled, preferredMake, showPhone}, - ref + { value, onChange, options, onSelect, disabled, preferredMake, showPhone }, + ref ) => { - const [option, setOption] = useState(value); + const [option, setOption] = useState(value); - useEffect(() => { - if (value !== option && onChange) { - onChange(option); - } - }, [value, option, onChange]); + useEffect(() => { + if (value !== option && onChange) { + onChange(option); + } + }, [value, option, onChange]); - const favorites = - preferredMake && options - ? options.filter( - (o) => - o.favorite.filter( - (f) => f.toLowerCase() === preferredMake.toLowerCase() - ).length > 0 - ) - : []; + const favorites = + preferredMake && options + ? options.filter( + (o) => + o.favorite.filter((f) => f.toLowerCase() === preferredMake.toLowerCase()).length > 0 + ) + : []; - return ( - { + console.log(value, label, rest); + if (!value) return label; + const discount = options.find((o) => o.id === value)?.discount; + return ( +
+
{label}
- - {o.phone && showPhone && ( - {o.phone} - )} - {o.discount && o.discount !== 0 ? ( - {`${o.discount * 100}%`} - ) : null} - -
- + {discount && discount !== 0 ? {`${discount * 100}%`} : null} +
+ ); + }} + popupMatchSelectWidth={false} + onChange={setOption} + optionFilterProp="name" + onSelect={onSelect} + disabled={disabled || false} + optionLabelProp={'name'} + > + {favorites + ? favorites.map((o) => ( + + )) + : null} + {options + ? options.map((o) => ( + + )) + : null} + + ); }; export default forwardRef(VendorSearchSelect); diff --git a/client/src/redux/user/user.sagas.js b/client/src/redux/user/user.sagas.js index 6f00c390d..6d6921d0d 100644 --- a/client/src/redux/user/user.sagas.js +++ b/client/src/redux/user/user.sagas.js @@ -47,6 +47,7 @@ import client from "../../utils/GraphQLClient"; import {QUERY_EULA} from "../../graphql/bodyshop.queries"; import day from "../../utils/day"; import InstanceRenderManager from "../../utils/instanceRenderMgr"; +import { Userpilot } from "userpilot"; const fpPromise = FingerprintJS.load(); @@ -227,6 +228,15 @@ export function* signInSuccessSaga({payload}) { window.$crisp.push(['set', 'user:nickname', [payload.displayName || payload.email]]); window.$crisp.push(['set', 'session:segments', [['user']]]); }, + promanager: () =>{ + Userpilot.identify( + payload.email, + { + email: payload.email, + } + ); + console.log("*** Userpilot identified.") + } }); } catch (error) { From 8d729f1e834ee618e662d90819d7560131aa750f Mon Sep 17 00:00:00 2001 From: Patrick Fic Date: Thu, 21 Mar 2024 09:17:07 -0700 Subject: [PATCH 12/27] IO-2716 Resolve payers missing icon. --- ...p-info.responsibilitycenters.component.jsx | 22 +++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/client/src/components/shop-info/shop-info.responsibilitycenters.component.jsx b/client/src/components/shop-info/shop-info.responsibilitycenters.component.jsx index e727e0f1c..177d622c8 100644 --- a/client/src/components/shop-info/shop-info.responsibilitycenters.component.jsx +++ b/client/src/components/shop-info/shop-info.responsibilitycenters.component.jsx @@ -241,17 +241,17 @@ export function ShopInfoResponsibilityCenterComponent({bodyshop, form}) { - - d - onClick={() => { - remove(field.name); - }} - /> - + + { + remove(field.name); + }} + /> + From 568e74b21f33a59e38c0e3b14878cc280c953061 Mon Sep 17 00:00:00 2001 From: Patrick Fic Date: Thu, 21 Mar 2024 09:49:19 -0700 Subject: [PATCH 13/27] Resolve display issue for Multi payer on job close. --- client/src/pages/jobs-close/jobs-close.component.jsx | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/client/src/pages/jobs-close/jobs-close.component.jsx b/client/src/pages/jobs-close/jobs-close.component.jsx index 44d9b5f86..e01138250 100644 --- a/client/src/pages/jobs-close/jobs-close.component.jsx +++ b/client/src/pages/jobs-close/jobs-close.component.jsx @@ -371,8 +371,9 @@ export function JobsCloseComponent({job, bodyshop, jobRO, insertAuditTrail}) { )} - {t("jobs.labels.multipayers")} + {Qb_Multi_Ar.treatment === "on" && ( + <>{t("jobs.labels.multipayers")} { + if(!jobRO){ remove(field.name); + } }} /> @@ -529,6 +532,7 @@ export function JobsCloseComponent({job, bodyshop, jobRO, insertAuditTrail}) { + )} From 5bb82863010197193455b538915a7416517bff2d Mon Sep 17 00:00:00 2001 From: Patrick Fic Date: Thu, 21 Mar 2024 11:05:38 -0700 Subject: [PATCH 14/27] Add back notification for FCM. --- client/src/components/chat-affix/chat-affix.container.jsx | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/client/src/components/chat-affix/chat-affix.container.jsx b/client/src/components/chat-affix/chat-affix.container.jsx index 0ce09211e..772dfb2b1 100644 --- a/client/src/components/chat-affix/chat-affix.container.jsx +++ b/client/src/components/chat-affix/chat-affix.container.jsx @@ -12,6 +12,7 @@ import "./chat-affix.styles.scss"; export function ChatAffixContainer({bodyshop, chatVisible}) { const {t} = useTranslation(); const client = useApolloClient(); + c useEffect(() => { if (!bodyshop || !bodyshop.messagingservicesid) return; @@ -62,7 +63,7 @@ export function ChatAffixContainer({bodyshop, chatVisible}) { SubscribeToTopic(); // eslint-disable-next-line react-hooks/exhaustive-deps - }, []); + }, [bodyshop]); useEffect(() => { function handleMessage(payload) { From 23f9f8fa206d3d6f93aeb01c2629ff523691d112 Mon Sep 17 00:00:00 2001 From: Patrick Fic Date: Thu, 21 Mar 2024 11:05:51 -0700 Subject: [PATCH 15/27] Resolve additional typo. --- client/src/components/chat-affix/chat-affix.container.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/components/chat-affix/chat-affix.container.jsx b/client/src/components/chat-affix/chat-affix.container.jsx index 772dfb2b1..5f252024e 100644 --- a/client/src/components/chat-affix/chat-affix.container.jsx +++ b/client/src/components/chat-affix/chat-affix.container.jsx @@ -12,7 +12,7 @@ import "./chat-affix.styles.scss"; export function ChatAffixContainer({bodyshop, chatVisible}) { const {t} = useTranslation(); const client = useApolloClient(); - c + useEffect(() => { if (!bodyshop || !bodyshop.messagingservicesid) return; From 1f896b1edea948bfe079becf34b28bb94a0d4906 Mon Sep 17 00:00:00 2001 From: Allan Carr Date: Thu, 21 Mar 2024 11:09:13 -0700 Subject: [PATCH 16/27] IO-2719 Missing CC Filter Signed-off-by: Allan Carr --- .../courtesy-cars-list/courtesy-cars-list.component.jsx | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/client/src/components/courtesy-cars-list/courtesy-cars-list.component.jsx b/client/src/components/courtesy-cars-list/courtesy-cars-list.component.jsx index 3bd49d6e7..fd3dfa15e 100644 --- a/client/src/components/courtesy-cars-list/courtesy-cars-list.component.jsx +++ b/client/src/components/courtesy-cars-list/courtesy-cars-list.component.jsx @@ -61,6 +61,10 @@ export default function CourtesyCarsList({ loading, courtesycars, refetch }) { text: t("courtesycars.status.in"), value: "courtesycars.status.in", }, + { + text: t("courtesycars.status.inservice"), + value: "courtesycars.status.inservice", + }, { text: t("courtesycars.status.out"), value: "courtesycars.status.out", @@ -74,7 +78,7 @@ export default function CourtesyCarsList({ loading, courtesycars, refetch }) { value: "courtesycars.status.leasereturn", }, ], - onFilter: (value, record) => value.includes(record.status), + onFilter: (value, record) => record.status === value, sortOrder: state.sortedInfo.columnKey === "status" && state.sortedInfo.order, render: (text, record) => { From cd9e67c9dfdfb6f46b7a58267b5f6cf4ffe84642 Mon Sep 17 00:00:00 2001 From: Patrick Fic Date: Thu, 21 Mar 2024 11:58:00 -0700 Subject: [PATCH 17/27] Resolve search select. --- .../vendor-search-select/vendor-search-select.component.jsx | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/client/src/components/vendor-search-select/vendor-search-select.component.jsx b/client/src/components/vendor-search-select/vendor-search-select.component.jsx index a190d08a5..dbc588137 100644 --- a/client/src/components/vendor-search-select/vendor-search-select.component.jsx +++ b/client/src/components/vendor-search-select/vendor-search-select.component.jsx @@ -36,9 +36,8 @@ const VendorSearchSelect = ( width: '100%', }} labelRender={({ label, value, ...rest }) => { - console.log(value, label, rest); - if (!value) return label; - const discount = options.find((o) => o.id === value)?.discount; + if (!value || !options) return label; + const discount = options?.find((o) => o.id === value)?.discount; return (
{label}
From 9b060b272c345bf88a4e9583397d2a6bd4d57ce7 Mon Sep 17 00:00:00 2001 From: Patrick Fic Date: Thu, 21 Mar 2024 12:23:45 -0700 Subject: [PATCH 18/27] IO-2692 Await refetch for returns posting. --- .../components/bill-enter-modal/bill-enter-modal.container.jsx | 1 + client/src/components/chat-affix/chat-affix.container.jsx | 1 + 2 files changed, 2 insertions(+) diff --git a/client/src/components/bill-enter-modal/bill-enter-modal.container.jsx b/client/src/components/bill-enter-modal/bill-enter-modal.container.jsx index 84281c109..c93a4a0be 100644 --- a/client/src/components/bill-enter-modal/bill-enter-modal.container.jsx +++ b/client/src/components/bill-enter-modal/bill-enter-modal.container.jsx @@ -172,6 +172,7 @@ function BillEnterModalContainer({ ], }, refetchQueries: ["QUERY_PARTS_BILLS_BY_JOBID", "GET_JOB_BY_PK"], + awaitRefetchQueries: true }); await Promise.all( diff --git a/client/src/components/chat-affix/chat-affix.container.jsx b/client/src/components/chat-affix/chat-affix.container.jsx index 5f252024e..d82115e72 100644 --- a/client/src/components/chat-affix/chat-affix.container.jsx +++ b/client/src/components/chat-affix/chat-affix.container.jsx @@ -32,6 +32,7 @@ export function ChatAffixContainer({bodyshop, chatVisible}) { error ); notification.open({ + key: 'fcm', type: "warning", message: t("general.errors.fcm"), btn: ( From 32a98ed4383b24c1ee277c17ca766b9b1e854199 Mon Sep 17 00:00:00 2001 From: Patrick Fic Date: Thu, 21 Mar 2024 14:38:05 -0700 Subject: [PATCH 19/27] Disable product fruits in production. --- client/package-lock.json | 17 +++++++++++++++++ client/package.json | 1 + client/src/App/App.jsx | 11 ++++++++++- 3 files changed, 28 insertions(+), 1 deletion(-) diff --git a/client/package-lock.json b/client/package-lock.json index 730af5400..5fc873078 100644 --- a/client/package-lock.json +++ b/client/package-lock.json @@ -54,6 +54,7 @@ "react-joyride": "^2.7.4", "react-markdown": "^9.0.1", "react-number-format": "^5.3.3", + "react-product-fruits": "^2.2.6", "react-redux": "^9.1.0", "react-resizable": "^3.0.5", "react-router-dom": "^6.22.2", @@ -20892,6 +20893,11 @@ "version": "2.0.1", "license": "MIT" }, + "node_modules/product-fruits": { + "version": "1.0.25", + "resolved": "https://registry.npmjs.org/product-fruits/-/product-fruits-1.0.25.tgz", + "integrity": "sha512-w//YC14ZBv3AJ9Ki/XEYPPltodXGJYLue/Wkv/E0Q6BnB/mZ4UvFZMcVYqTCMKUJWdsaeqwO840JC0BGaG3g1w==" + }, "node_modules/progress": { "version": "2.0.3", "license": "MIT", @@ -22302,6 +22308,17 @@ "react-dom": ">=16.3.0" } }, + "node_modules/react-product-fruits": { + "version": "2.2.6", + "resolved": "https://registry.npmjs.org/react-product-fruits/-/react-product-fruits-2.2.6.tgz", + "integrity": "sha512-f57m1rCD+Cu8QfFQSpkHJjLaWauPbD01GNrbh4icQaOHA/6bHJGpcoSSEQfAtk3g2PyQBpsDdRvL9jC+hyxhhQ==", + "dependencies": { + "product-fruits": "^1.0.25" + }, + "peerDependencies": { + "react": ">= 17.0.0" + } + }, "node_modules/react-redux": { "version": "9.1.0", "license": "MIT", diff --git a/client/package.json b/client/package.json index 2102876c1..cfbe171ea 100644 --- a/client/package.json +++ b/client/package.json @@ -54,6 +54,7 @@ "react-joyride": "^2.7.4", "react-markdown": "^9.0.1", "react-number-format": "^5.3.3", + "react-product-fruits": "^2.2.6", "react-redux": "^9.1.0", "react-resizable": "^3.0.5", "react-router-dom": "^6.22.2", diff --git a/client/src/App/App.jsx b/client/src/App/App.jsx index 54808973e..5453a25a3 100644 --- a/client/src/App/App.jsx +++ b/client/src/App/App.jsx @@ -27,6 +27,8 @@ import "./App.styles.scss"; import handleBeta from "../utils/betaHandler"; import Eula from "../components/eula/eula.component"; import InstanceRenderMgr from "../utils/instanceRenderMgr"; +import { ProductFruits } from 'react-product-fruits'; + const ResetPassword = lazy(() => import("../pages/reset-password/reset-password.component") ); @@ -149,6 +151,7 @@ export function App({ // Any route that is not assigned and matched will default to the Landing Page component return ( + } - > + > + + Date: Thu, 21 Mar 2024 15:16:17 -0700 Subject: [PATCH 20/27] Missing in merge. --- .../production-list-columns/production-list-columns.data.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/components/production-list-columns/production-list-columns.data.jsx b/client/src/components/production-list-columns/production-list-columns.data.jsx index 0dd7a849f..abff04e3c 100644 --- a/client/src/components/production-list-columns/production-list-columns.data.jsx +++ b/client/src/components/production-list-columns/production-list-columns.data.jsx @@ -327,7 +327,7 @@ const {Enhanced_Payroll} = treatments; onFilter: (value, record) => value.includes(record.special_coverage_policy), render: (text, record) => ( - + ), }, From 39b119b2e83466c9c05c87f2f0ab54a1e6f183a4 Mon Sep 17 00:00:00 2001 From: Allan Carr Date: Thu, 21 Mar 2024 17:49:46 -0700 Subject: [PATCH 21/27] IO-2721 Owners Note in Owners Card Signed-off-by: Allan Carr --- .../jobs-detail-header.component.jsx | 14 ++++++++++++-- client/src/graphql/jobs.queries.js | 1 + 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/client/src/components/jobs-detail-header/jobs-detail-header.component.jsx b/client/src/components/jobs-detail-header/jobs-detail-header.component.jsx index 694fea5d7..4d737ee67 100644 --- a/client/src/components/jobs-detail-header/jobs-detail-header.component.jsx +++ b/client/src/components/jobs-detail-header/jobs-detail-header.component.jsx @@ -5,6 +5,7 @@ import { WarningFilled, } from "@ant-design/icons"; import { Card, Col, Divider, Row, Space, Tag, Tooltip } from "antd"; +import moment from "moment"; import React, { useState } from "react"; import { useTranslation } from "react-i18next"; import { connect } from "react-redux"; @@ -26,7 +27,6 @@ import ProductionListColumnComment from "../production-list-columns/production-l import ProductionListColumnProductionNote from "../production-list-columns/production-list-columns.productionnote.component"; import VehicleVinDisplay from "../vehicle-vin-display/vehicle-vin-display.component"; import "./jobs-detail-header.styles.scss"; -import moment from "moment"; const mapStateToProps = createStructuredSelector({ jobRO: selectJobReadOnly, @@ -101,7 +101,11 @@ export function JobsDetailHeader({ job, bodyshop, disabled }) { {job.status === bodyshop.md_ro_statuses.default_scheduled && job.scheduled_in ? ( - + {job.scheduled_in} @@ -221,6 +225,12 @@ export function JobsDetailHeader({ job, bodyshop, disabled }) { {job.owner?.tax_number || ""} )} + + {job.owner?.note || ""} +
diff --git a/client/src/graphql/jobs.queries.js b/client/src/graphql/jobs.queries.js index 1379535e1..31f9be07c 100644 --- a/client/src/graphql/jobs.queries.js +++ b/client/src/graphql/jobs.queries.js @@ -704,6 +704,7 @@ export const GET_JOB_BY_PK = gql` other_amount_payable owner { id + note ownr_fn ownr_ln ownr_co_nm From 0ea422ab7c08a73c133570ddd8a8e0ecc4ec95cb Mon Sep 17 00:00:00 2001 From: Patrick Fic Date: Fri, 22 Mar 2024 11:35:46 -0700 Subject: [PATCH 22/27] CI updates to replace beta environments. --- .circleci/config.yml | 67 ++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 62 insertions(+), 5 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 167007b98..2a0c74422 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -41,9 +41,8 @@ jobs: imex-app-build: docker: - image: cimg/node:18.18.2 - + resource_class: large working_directory: ~/repo/client - steps: - checkout: path: ~/repo @@ -63,6 +62,31 @@ jobs: to: "s3://imex-online-production/" arguments: "--exclude '*.map'" + imex-app-beta-build: + docker: + - image: cimg/node:18.18.2 + resource_class: large + working_directory: ~/repo/client + + steps: + - checkout: + path: ~/repo + - run: + name: Install Dependencies + command: npm i + + - run: npm run build:production:imex + + - aws-cli/setup: + aws_access_key_id: AWS_ACCESS_KEY_ID + aws_secret_access_key: AWS_SECRET_ACCESS_KEY + region: AWS_REGION + + - aws-s3/sync: + from: build + to: "s3://imex-online-beta/" + arguments: "--exclude '*.map'" + rome-api-deploy: docker: - image: "cimg/base:stable" @@ -181,7 +205,7 @@ jobs: imex-test-app-build: docker: - - image: cimg/node:16.15.0 + - image: cimg/node:18.18.2 resource_class: large working_directory: ~/repo/client @@ -199,6 +223,32 @@ jobs: to: "s3://imex-online-test/" arguments: "--exclude '*.map'" + imex-test-app-beta-build: + docker: + - image: cimg/node:18.18.2 + resource_class: large + working_directory: ~/repo/client + + steps: + - checkout: + path: ~/repo + + - run: + name: Install Dependencies + command: npm i + + - run: npm run build:test:imex + + - aws-cli/setup: + aws_access_key_id: AWS_ACCESS_KEY_ID + aws_secret_access_key: AWS_SECRET_ACCESS_KEY + region: AWS_REGION + + - aws-s3/sync: + from: build + to: "s3://imex-online-test-beta/" + arguments: "--exclude '*.map'" + admin-app-build: docker: @@ -236,11 +286,15 @@ workflows: - imex-api-deploy: filters: branches: - only: master + only: master-AIO - imex-app-build: filters: branches: only: master + - imex-app-beta-build: + filters: + branches: + only: master-AIO - hasura-migrate: secret: ${HASURA_PROD_SECRET} filters: @@ -263,7 +317,10 @@ workflows: filters: branches: only: test - + - imex-test-app-beta-build: + filters: + branches: + only: test-AIO - test-hasura-migrate: secret: ${HASURA_TEST_SECRET} filters: From b83a39dc4aa53b75119b19b30993e5483148ca29 Mon Sep 17 00:00:00 2001 From: Patrick Fic Date: Fri, 22 Mar 2024 11:37:03 -0700 Subject: [PATCH 23/27] Fix CI. --- .circleci/config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 2a0c74422..c127f4ccd 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -295,7 +295,7 @@ workflows: filters: branches: only: master-AIO - - hasura-migrate: + - imex-hasura-migrate: secret: ${HASURA_PROD_SECRET} filters: branches: From 9c6e514db0ca3e7935df78a9175717d50e999e3f Mon Sep 17 00:00:00 2001 From: Patrick Fic Date: Fri, 22 Mar 2024 11:40:33 -0700 Subject: [PATCH 24/27] Add optional dependency for CI. --- client/package.json | 3 +++ 1 file changed, 3 insertions(+) diff --git a/client/package.json b/client/package.json index cfbe171ea..135f59420 100644 --- a/client/package.json +++ b/client/package.json @@ -123,6 +123,9 @@ "resolutions": { "react-error-overlay": "6.0.9" }, + "optionalDependencies": { + "@rollup/rollup-linux-x64-gnu": "4.6.1" + }, "devDependencies": { "@babel/plugin-proposal-private-property-in-object": "^7.21.11", "@babel/preset-react": "^7.23.3", From 37b251a5142f7aaa411d2caf27ef573543f9a992 Mon Sep 17 00:00:00 2001 From: Patrick Fic Date: Fri, 22 Mar 2024 11:43:32 -0700 Subject: [PATCH 25/27] Resolve CI --- .circleci/config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index c127f4ccd..79a9f7217 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -83,7 +83,7 @@ jobs: region: AWS_REGION - aws-s3/sync: - from: build + from: dist to: "s3://imex-online-beta/" arguments: "--exclude '*.map'" From bfa5cdcedefe4cb9a95e836dab006c5f5863b746 Mon Sep 17 00:00:00 2001 From: Patrick Fic Date: Fri, 22 Mar 2024 14:58:26 -0700 Subject: [PATCH 26/27] FIx PBS export. --- server/accounting/pbs/pbs-job-export.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/accounting/pbs/pbs-job-export.js b/server/accounting/pbs/pbs-job-export.js index 69945505e..5a37a4beb 100644 --- a/server/accounting/pbs/pbs-job-export.js +++ b/server/accounting/pbs/pbs-job-export.js @@ -661,7 +661,7 @@ async function InsertAccountPostingData(socket) { .toISOString(), //"0001-01-01T00:00:00.0000000Z", Description: socket.txEnvelope.story, //AdditionalInfo: "String", - Source: InstanceManager({imex: t("titles.imexonline"), rome:t("titles.romeonline")}), + Source: InstanceManager({imex: "ImEX Online", rome:"Rome Online"}), Lines: wips, }, }, From 98b14f2a5b792a7373ee45a8cc5b47a74225190e Mon Sep 17 00:00:00 2001 From: Patrick Fic Date: Fri, 22 Mar 2024 15:18:01 -0700 Subject: [PATCH 27/27] resolve pbs. --- server/accounting/pbs/pbs-job-export.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/accounting/pbs/pbs-job-export.js b/server/accounting/pbs/pbs-job-export.js index 5a37a4beb..013d49c1d 100644 --- a/server/accounting/pbs/pbs-job-export.js +++ b/server/accounting/pbs/pbs-job-export.js @@ -16,7 +16,7 @@ const CalculateAllocations = const CdkBase = require("../../web-sockets/web-socket"); const moment = require("moment-timezone"); const Dinero = require("dinero.js"); -const { default: InstanceManager } = require("../../utils/instanceMgr").default; +const InstanceManager = require("../../utils/instanceMgr").default; const axios = AxiosLib.create(); axios.interceptors.request.use((x) => {