From 77e009f31663be6838c95330701fe14888eba4a6 Mon Sep 17 00:00:00 2001 From: Allan Carr Date: Wed, 30 Oct 2024 11:19:46 -0700 Subject: [PATCH 1/4] IO-3012 Remove Sort from SB Timeticket Query Signed-off-by: Allan Carr --- client/src/graphql/timetickets.queries.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/client/src/graphql/timetickets.queries.js b/client/src/graphql/timetickets.queries.js index f56976e2b..ba7cf60fc 100644 --- a/client/src/graphql/timetickets.queries.js +++ b/client/src/graphql/timetickets.queries.js @@ -145,7 +145,6 @@ export const QUERY_TIME_TICKETS_IN_RANGE_SB = gql` ) { timetickets( where: { date: { _gte: $start, _lte: $end }, cost_center: { _neq: "timetickets.labels.shift" } } - order_by: { date: desc_nulls_first } ) { actualhrs ciecacode @@ -180,7 +179,6 @@ export const QUERY_TIME_TICKETS_IN_RANGE_SB = gql` } fixedperiod: timetickets( where: { date: { _gte: $fixedStart, _lte: $fixedEnd }, cost_center: { _neq: "timetickets.labels.shift" } } - order_by: { date: desc_nulls_first } ) { actualhrs ciecacode From dd5961d4199d09fe579bf87b6e42b40b818c21d3 Mon Sep 17 00:00:00 2001 From: Dave Richer Date: Wed, 30 Oct 2024 12:07:50 -0700 Subject: [PATCH 2/4] release/2024-11-01 - Update Trigger for job_updated Signed-off-by: Dave Richer --- hasura/metadata/tables.yaml | 62 ++++++++++++------------------------- server/job/job-updated.js | 4 +-- 2 files changed, 22 insertions(+), 44 deletions(-) diff --git a/hasura/metadata/tables.yaml b/hasura/metadata/tables.yaml index 70be46ad0..240b218a4 100644 --- a/hasura/metadata/tables.yaml +++ b/hasura/metadata/tables.yaml @@ -69,7 +69,6 @@ delete_permissions: - role: user permission: - backend_only: false filter: jobline: job: @@ -180,7 +179,6 @@ delete_permissions: - role: user permission: - backend_only: false filter: bodyshop: associations: @@ -387,7 +385,6 @@ delete_permissions: - role: user permission: - backend_only: false filter: bodyshop: associations: @@ -504,7 +501,6 @@ delete_permissions: - role: user permission: - backend_only: false filter: bill: job: @@ -671,7 +667,6 @@ delete_permissions: - role: user permission: - backend_only: false filter: _and: - job: @@ -1285,7 +1280,6 @@ delete_permissions: - role: user permission: - backend_only: false filter: courtesycar: bodyshop: @@ -1526,7 +1520,6 @@ delete_permissions: - role: user permission: - backend_only: false filter: bodyshop: associations: @@ -1786,7 +1779,6 @@ delete_permissions: - role: user permission: - backend_only: false filter: bodyshop: associations: @@ -1920,7 +1912,6 @@ delete_permissions: - role: user permission: - backend_only: false filter: _or: - job: @@ -2105,7 +2096,6 @@ delete_permissions: - role: user permission: - backend_only: false filter: employee_team: bodyshop: @@ -2268,7 +2258,6 @@ delete_permissions: - role: user permission: - backend_only: false filter: employee: bodyshop: @@ -2449,7 +2438,6 @@ delete_permissions: - role: user permission: - backend_only: false filter: bodyshop: associations: @@ -2696,7 +2684,6 @@ delete_permissions: - role: user permission: - backend_only: false filter: bodyshop: associations: @@ -2808,7 +2795,6 @@ delete_permissions: - role: user permission: - backend_only: false filter: conversation: bodyshop: @@ -3123,7 +3109,6 @@ delete_permissions: - role: user permission: - backend_only: false filter: job: bodyshop: @@ -4232,7 +4217,6 @@ delete_permissions: - role: user permission: - backend_only: false filter: bodyshop: associations: @@ -4248,41 +4232,41 @@ enable_manual: false update: columns: - - clm_no - - v_make_desc - - date_next_contact - - status - - employee_csr - employee_prep - clm_total - suspended - employee_body - ro_number - - actual_in - ownr_co_nm - - v_model_yr - - comment - - job_totals - v_vin - - ownr_fn - scheduled_completion - special_coverage_policy - - v_color - - ca_gst_registrant - scheduled_delivery - actual_delivery - actual_completion - kanbanparent - est_ct_fn + - alt_transport + - v_model_desc + - clm_no + - v_make_desc + - date_next_contact + - status + - employee_csr + - actual_in + - v_model_yr + - comment + - job_totals + - ownr_fn + - v_color + - ca_gst_registrant - employee_refinish - ownr_ph1 - date_last_contacted - - alt_transport - inproduction - est_ct_ln - production_vars - category - - v_model_desc - date_invoiced - est_co_nm - ownr_ln @@ -4295,6 +4279,12 @@ - name: event-secret value_from_env: EVENT_SECRET request_transform: + body: + action: transform + template: |- + { + "data": {{$body?.event?.data?.new}} + } method: POST query_params: {} template_engine: Kriti @@ -4496,7 +4486,6 @@ delete_permissions: - role: user permission: - backend_only: false filter: conversation: bodyshop: @@ -4670,7 +4659,6 @@ delete_permissions: - role: user permission: - backend_only: false filter: job: bodyshop: @@ -4805,7 +4793,6 @@ delete_permissions: - role: user permission: - backend_only: false filter: bodyshop: associations: @@ -5110,7 +5097,6 @@ delete_permissions: - role: user permission: - backend_only: false filter: parts_order: job: @@ -5243,7 +5229,6 @@ delete_permissions: - role: user permission: - backend_only: false filter: job: bodyshop: @@ -5419,7 +5404,6 @@ delete_permissions: - role: user permission: - backend_only: false filter: job: bodyshop: @@ -5559,7 +5543,6 @@ delete_permissions: - role: user permission: - backend_only: false filter: bodyshop: associations: @@ -5670,7 +5653,6 @@ delete_permissions: - role: user permission: - backend_only: false filter: _or: - parentjob_rel: @@ -5760,7 +5742,6 @@ delete_permissions: - role: user permission: - backend_only: false filter: job: bodyshop: @@ -6045,7 +6026,6 @@ delete_permissions: - role: user permission: - backend_only: false filter: bodyshop: associations: @@ -6541,7 +6521,6 @@ delete_permissions: - role: user permission: - backend_only: false filter: bodyshop: associations: @@ -6698,7 +6677,6 @@ delete_permissions: - role: user permission: - backend_only: false filter: bodyshop: associations: diff --git a/server/job/job-updated.js b/server/job/job-updated.js index 3373c94a7..62f63b0e2 100644 --- a/server/job/job-updated.js +++ b/server/job/job-updated.js @@ -3,7 +3,7 @@ const { isObject } = require("lodash"); const jobUpdated = async (req, res) => { const { ioRedis, logger, ioHelpers } = req; - if (!req?.body?.event?.data?.new || !isObject(req?.body?.event?.data?.new)) { + if (!req?.body?.data || !isObject(req.body.data)) { logger.log("job-update-error", "ERROR", req.user?.email, null, { message: `Malformed Job Update request sent from Hasura`, body: req?.body @@ -22,7 +22,7 @@ const jobUpdated = async (req, res) => { // jobid: req?.body?.event?.data?.new?.id // }); - const updatedJob = req.body.event.data.new; + const updatedJob = req.body.data; const bodyshopID = updatedJob.shopid; // Emit the job-updated event only to the room corresponding to the bodyshop From 2ab4615642921ea568e8627e65fb4dd9319c96c6 Mon Sep 17 00:00:00 2001 From: Allan Carr Date: Wed, 30 Oct 2024 12:48:27 -0700 Subject: [PATCH 3/4] IO-3009 Clear Dates Signed-off-by: Allan Carr --- .../form-date-time-picker.component.jsx | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/client/src/components/form-date-time-picker/form-date-time-picker.component.jsx b/client/src/components/form-date-time-picker/form-date-time-picker.component.jsx index 707dfbdf8..0ef0faf80 100644 --- a/client/src/components/form-date-time-picker/form-date-time-picker.component.jsx +++ b/client/src/components/form-date-time-picker/form-date-time-picker.component.jsx @@ -2,11 +2,11 @@ import { DatePicker } from "antd"; import PropTypes from "prop-types"; import React, { useCallback, useState } from "react"; import { useTranslation } from "react-i18next"; -import dayjs from "../../utils/day"; -import { fuzzyMatchDate } from "./formats.js"; +import { connect } from "react-redux"; import { createStructuredSelector } from "reselect"; import { selectBodyshop } from "../../redux/user/user.selectors.js"; -import { connect } from "react-redux"; +import dayjs from "../../utils/day"; +import { fuzzyMatchDate } from "./formats.js"; const mapStateToProps = createStructuredSelector({ bodyshop: selectBodyshop @@ -28,7 +28,6 @@ const DateTimePicker = ({ const handleChange = useCallback( (newDate) => { - if (!newDate) return; if (onChange) { onChange(bodyshop?.timezone ? dayjs(newDate).tz(bodyshop.timezone, true) : newDate); } From 6cac0f95947db654606724492c22d5c099a54149 Mon Sep 17 00:00:00 2001 From: Allan Carr Date: Wed, 30 Oct 2024 17:38:09 -0700 Subject: [PATCH 4/4] IO-3010 Task Table UI refactor Signed-off-by: Allan Carr --- .../task-list/task-list.component.jsx | 115 +++++++++--------- client/src/translations/en_us/common.json | 1 + client/src/translations/es/common.json | 1 + client/src/translations/fr/common.json | 1 + 4 files changed, 63 insertions(+), 55 deletions(-) diff --git a/client/src/components/task-list/task-list.component.jsx b/client/src/components/task-list/task-list.component.jsx index 0c01ef6a8..ba7d71b17 100644 --- a/client/src/components/task-list/task-list.component.jsx +++ b/client/src/components/task-list/task-list.component.jsx @@ -144,7 +144,7 @@ function TaskListComponent({ title: t("tasks.fields.created_by"), dataIndex: "created_by", key: "created_by", - width: "10%", + width: "8%", defaultSortOrder: "descend", sorter: true, sortOrder: sortcolumn === "created_by" && sortorder, @@ -166,65 +166,70 @@ function TaskListComponent({ }); } - if (showRo) { - columns.push({ - title: t("tasks.fields.job.ro_number"), - dataIndex: ["job", "ro_number"], - key: "job.ro_number", - width: "8%", - render: (text, record) => - record.job ? ( - {record.job.ro_number || t("general.labels.na")} - ) : ( - t("general.labels.na") - ) - }); - } + columns.push({ + title: t("tasks.fields.related_items"), + key: "related_items", + width: "12%", + render: (text, record) => { + const items = []; + + // Job + if (showRo && record.job) { + items.push( + + {t("tasks.fields.job.ro_number")}: {record.job.ro_number} + + ); + } + if (showRo && !record.job) { + items.push(`${t("tasks.fields.job.ro_number")}: ${t("general.labels.na")}`); + } + + // Jobline + if (record.jobline?.line_desc) { + items.push( + + {t("tasks.fields.jobline")}: {record.jobline.line_desc} + + ); + } + + // Parts Order + if (record.parts_order) { + const { order_number, vendor } = record.parts_order; + const partsOrderText = + order_number && vendor?.name ? `${order_number} - ${vendor.name}` : t("general.labels.na"); + items.push( + + {t("tasks.fields.parts_order")}: {partsOrderText} + + ); + } + + // Bill + if (record.bill) { + const { invoice_number, vendor } = record.bill; + const billText = invoice_number && vendor?.name ? `${invoice_number} - ${vendor.name}` : t("general.labels.na"); + items.push( + + {t("tasks.fields.bill")}: {billText} + + ); + } + + return items.length > 0 ? {items} : null; + } + }); columns.push( - { - title: t("tasks.fields.jobline"), - dataIndex: ["jobline", "id"], - key: "jobline.id", - width: "8%", - render: (text, record) => record?.jobline?.line_desc || "" - }, - { - title: t("tasks.fields.parts_order"), - dataIndex: ["parts_order", "id"], - key: "part_order.id", - width: "8%", - render: (text, record) => - record.parts_order ? ( - - {record.parts_order.order_number && record.parts_order.vendor && record.parts_order.vendor.name - ? `${record.parts_order.order_number} - ${record.parts_order.vendor.name}` - : t("general.labels.na")} - - ) : ( - "" - ) - }, - { - title: t("tasks.fields.bill"), - dataIndex: ["bill", "id"], - key: "bill.id", - width: "10%", - render: (text, record) => - record.bill ? ( - - {record.bill.invoice_number && record.bill.vendor && record.bill.vendor.name - ? `${record.bill.invoice_number} - ${record.bill.vendor.name}` - : t("general.labels.na")} - - ) : ( - "" - ) - }, { title: t("tasks.fields.title"), dataIndex: "title", key: "title", + minWidth: "20%", sorter: true, sortOrder: sortcolumn === "title" && sortorder }, @@ -258,7 +263,7 @@ function TaskListComponent({ { title: t("tasks.fields.actions"), key: "toggleCompleted", - width: "5%", + width: "8%", render: (text, record) => (