From cc541293eb0aba24835c517a5ed45c633afab406 Mon Sep 17 00:00:00 2001 From: Patrick Fic <> Date: Fri, 7 May 2021 15:05:51 -0700 Subject: [PATCH] IO-1043 Date sort fixes. --- .../accounting-payables-table.component.jsx | 4 ++-- .../bills-list-table.component.jsx | 4 ++-- .../time-ticket-list.component.jsx | 19 +++++++++++++++++-- client/src/graphql/timetickets.queries.js | 6 +++++- .../src/pages/bills/bills.page.component.jsx | 4 ++-- 5 files changed, 28 insertions(+), 9 deletions(-) diff --git a/client/src/components/accounting-payables-table/accounting-payables-table.component.jsx b/client/src/components/accounting-payables-table/accounting-payables-table.component.jsx index 7366ccf32..097c66bb4 100644 --- a/client/src/components/accounting-payables-table/accounting-payables-table.component.jsx +++ b/client/src/components/accounting-payables-table/accounting-payables-table.component.jsx @@ -3,7 +3,7 @@ import React, { useState } from "react"; import { useTranslation } from "react-i18next"; import { Link } from "react-router-dom"; import CurrencyFormatter from "../../utils/CurrencyFormatter"; -import { alphaSort } from "../../utils/sorters"; +import { alphaSort, dateSort } from "../../utils/sorters"; import PayableExportButton from "../payable-export-button/payable-export-button.component"; import PayableExportAll from "../payable-export-all-button/payable-export-all-button.component"; import { DateFormatter } from "../../utils/DateFormatter"; @@ -80,7 +80,7 @@ export default function AccountingPayablesTableComponent({ loading, bills }) { dataIndex: "date", key: "date", - sorter: (a, b) => a.date - b.date, + sorter: (a, b) => dateSort(a.date, b.date), sortOrder: state.sortedInfo.columnKey === "date" && state.sortedInfo.order, render: (text, record) => {record.date}, diff --git a/client/src/components/bills-list-table/bills-list-table.component.jsx b/client/src/components/bills-list-table/bills-list-table.component.jsx index 1ef639de8..8d7d7bde4 100644 --- a/client/src/components/bills-list-table/bills-list-table.component.jsx +++ b/client/src/components/bills-list-table/bills-list-table.component.jsx @@ -7,7 +7,7 @@ import { createStructuredSelector } from "reselect"; import { setModalContext } from "../../redux/modals/modals.actions"; import CurrencyFormatter from "../../utils/CurrencyFormatter"; import { DateFormatter } from "../../utils/DateFormatter"; -import { alphaSort } from "../../utils/sorters"; +import { alphaSort, dateSort } from "../../utils/sorters"; import { TemplateList } from "../../utils/TemplateConstants"; import BillDeleteButton from "../bill-delete-button/bill-delete-button.component"; import PrintWrapperComponent from "../print-wrapper/print-wrapper.component"; @@ -112,7 +112,7 @@ export function BillsListTableComponent({ title: t("bills.fields.date"), dataIndex: "date", key: "date", - sorter: (a, b) => a.date - b.date, + sorter: (a, b) => dateSort(a.date, b.date), sortOrder: state.sortedInfo.columnKey === "date" && state.sortedInfo.order, render: (text, record) => {record.date}, diff --git a/client/src/components/time-ticket-list/time-ticket-list.component.jsx b/client/src/components/time-ticket-list/time-ticket-list.component.jsx index f37c74c78..13e9d413f 100644 --- a/client/src/components/time-ticket-list/time-ticket-list.component.jsx +++ b/client/src/components/time-ticket-list/time-ticket-list.component.jsx @@ -10,11 +10,12 @@ import { } from "../../redux/user/user.selectors"; import { onlyUnique } from "../../utils/arrayHelper"; import { DateFormatter, DateTimeFormatter } from "../../utils/DateFormatter"; -import { alphaSort } from "../../utils/sorters"; +import { alphaSort, dateSort } from "../../utils/sorters"; import RbacWrapper, { HasRbacAccess, } from "../rbac-wrapper/rbac-wrapper.component"; import TimeTicketEnterButton from "../time-ticket-enter-button/time-ticket-enter-button.component"; +import { Link } from "react-router-dom"; const mapStateToProps = createStructuredSelector({ bodyshop: selectBodyshop, @@ -61,7 +62,7 @@ export function TimeTicketList({ title: t("timetickets.fields.date"), dataIndex: "date", key: "date", - sorter: (a, b) => a.date - b.date, + sorter: (a, b) => dateSort(a.date, b.date), sortOrder: state.sortedInfo.columnKey === "date" && state.sortedInfo.order, render: (text, record) => {record.date}, @@ -99,6 +100,20 @@ export function TimeTicketList({ }) || [], onFilter: (value, record) => value.includes(record.cost_center), }, + { + title: t("jobs.fields.ro_number"), + dataIndex: "ro_number", + key: "ro_number", + sorter: (a, b) => alphaSort(a.job.ro_number, b.job.ro_number), + sortOrder: + state.sortedInfo.columnKey === "ro_number" && state.sortedInfo.order, + render: (text, record) => + record.job && ( + + {record.job.ro_number || "N/A"} + + ), + }, { title: t("timetickets.fields.productivehrs"), dataIndex: "productivehrs", diff --git a/client/src/graphql/timetickets.queries.js b/client/src/graphql/timetickets.queries.js index 3b85ddec0..d2af11789 100644 --- a/client/src/graphql/timetickets.queries.js +++ b/client/src/graphql/timetickets.queries.js @@ -2,7 +2,10 @@ import { gql } from "@apollo/client"; export const QUERY_TICKETS_BY_JOBID = gql` query QUERY_TICKETS_BY_JOBID($jobid: uuid!) { - timetickets(where: { jobid: { _eq: $jobid } }) { + timetickets( + where: { jobid: { _eq: $jobid } } + order_by: { date: desc_nulls_first } + ) { actualhrs cost_center ciecacode @@ -104,6 +107,7 @@ export const UPDATE_TIME_TICKET = gql` export const QUERY_ACTIVE_TIME_TICKETS = gql` query QUERY_ACTIVE_TIME_TICKETS($employeeId: uuid) { timetickets( + order_by: { date: desc_nulls_first } where: { _and: { clockoff: { _is_null: true } diff --git a/client/src/pages/bills/bills.page.component.jsx b/client/src/pages/bills/bills.page.component.jsx index cbe5ebca6..605e838a5 100644 --- a/client/src/pages/bills/bills.page.component.jsx +++ b/client/src/pages/bills/bills.page.component.jsx @@ -11,7 +11,7 @@ import PrintWrapperComponent from "../../components/print-wrapper/print-wrapper. import { setModalContext } from "../../redux/modals/modals.actions"; import CurrencyFormatter from "../../utils/CurrencyFormatter"; import { DateFormatter } from "../../utils/DateFormatter"; -import { alphaSort } from "../../utils/sorters"; +import { alphaSort, dateSort } from "../../utils/sorters"; import { TemplateList } from "../../utils/TemplateConstants"; const mapDispatchToProps = (dispatch) => ({ @@ -97,7 +97,7 @@ export function BillsListPage({ title: t("bills.fields.date"), dataIndex: "date", key: "date", - sorter: (a, b) => a.date - b.date, + sorter: (a, b) => dateSort(a.date, b.date), sortOrder: state.sortedInfo.columnKey === "date" && state.sortedInfo.order, render: (text, record) => {record.date},