IO-2893 Editing Shift Tickets

Signed-off-by: Allan Carr <allan.carr@thinkimex.com>
This commit is contained in:
Allan Carr
2024-08-29 13:39:21 -07:00
parent 6e8122849a
commit 517d8f4163

View File

@@ -1,6 +1,6 @@
import { EditFilled, SyncOutlined } from "@ant-design/icons"; import { EditFilled, SyncOutlined } from "@ant-design/icons";
import { useSplitTreatments } from "@splitsoftware/splitio-react";
import { Button, Card, Checkbox, Space, Table } from "antd"; import { Button, Card, Checkbox, Space, Table } from "antd";
import dayjs from "../../utils/day";
import React, { useMemo, useState } from "react"; import React, { useMemo, useState } from "react";
import { useTranslation } from "react-i18next"; import { useTranslation } from "react-i18next";
import { connect } from "react-redux"; import { connect } from "react-redux";
@@ -10,10 +10,10 @@ import { setModalContext } from "../../redux/modals/modals.actions";
import { selectAuthLevel, selectBodyshop, selectCurrentUser } from "../../redux/user/user.selectors"; import { selectAuthLevel, selectBodyshop, selectCurrentUser } from "../../redux/user/user.selectors";
import { DateFormatter, DateTimeFormatter } from "../../utils/DateFormatter"; import { DateFormatter, DateTimeFormatter } from "../../utils/DateFormatter";
import { onlyUnique } from "../../utils/arrayHelper"; import { onlyUnique } from "../../utils/arrayHelper";
import dayjs from "../../utils/day";
import { alphaSort, dateSort } from "../../utils/sorters"; import { alphaSort, dateSort } from "../../utils/sorters";
import RbacWrapper, { HasRbacAccess } from "../rbac-wrapper/rbac-wrapper.component"; import RbacWrapper, { HasRbacAccess } from "../rbac-wrapper/rbac-wrapper.component";
import TimeTicketEnterButton from "../time-ticket-enter-button/time-ticket-enter-button.component"; import TimeTicketEnterButton from "../time-ticket-enter-button/time-ticket-enter-button.component";
import { useSplitTreatments } from "@splitsoftware/splitio-react";
const mapStateToProps = createStructuredSelector({ const mapStateToProps = createStructuredSelector({
bodyshop: selectBodyshop, bodyshop: selectBodyshop,
@@ -206,56 +206,56 @@ export function TimeTicketList({
return null; return null;
} }
} }
}, }
]), ]),
{ {
title: t("timetickets.fields.created_by"), title: t("timetickets.fields.created_by"),
dataIndex: "created_by", dataIndex: "created_by",
key: "created_by", key: "created_by",
sorter: (a, b) => alphaSort(a.created_by, b.created_by), sorter: (a, b) => alphaSort(a.created_by, b.created_by),
sortOrder: state.sortedInfo.columnKey === "created_by" && state.sortedInfo.order, sortOrder: state.sortedInfo.columnKey === "created_by" && state.sortedInfo.order,
render: (text, record) => record.created_by render: (text, record) => record.created_by
}, },
// { // {
// title: "Pay", // title: "Pay",
// dataIndex: "pay", // dataIndex: "pay",
// key: "pay", // key: "pay",
// render: (text, record) => // render: (text, record) =>
// Dinero({ amount: Math.round(record.rate * 100) }) // Dinero({ amount: Math.round(record.rate * 100) })
// .multiply(record.flat_rate ? record.productivehrs : record.actualhrs) // .multiply(record.flat_rate ? record.productivehrs : record.actualhrs)
// .toFormat("$0.00"), // .toFormat("$0.00"),
// }, // },
{ {
title: t("general.labels.actions"), title: t("general.labels.actions"),
dataIndex: "actions", dataIndex: "actions",
key: "actions", key: "actions",
render: (text, record) => ( render: (text, record) => (
<Space wrap> <Space wrap>
{techConsole && ( {techConsole && (
<TimeTicketEnterButton <TimeTicketEnterButton
actions={{ refetch }} actions={{ refetch }}
context={{ id: record.id, timeticket: record }} context={{ id: record.id, timeticket: record }}
disabled={!record.job || disabled} disabled={!record.job || disabled}
> >
<EditFilled /> <EditFilled />
</TimeTicketEnterButton> </TimeTicketEnterButton>
)} )}
{!techConsole && ( {!techConsole && (
<RbacWrapper <RbacWrapper
action="timetickets:edit" action="timetickets:edit"
noauth={() => { noauth={() => {
return <div />; return <div />;
}} }}
> >
<TimeTicketEnterButton <TimeTicketEnterButton
actions={{ refetch }} actions={{ refetch }}
context={{ context={{
id: record.id, id: record.id,
timeticket: record timeticket: record
}} }}
disabled={ disabled={
HasRbacAccess({ record.committed_at
? HasRbacAccess({
bodyshop, bodyshop,
authLevel: authLevel, authLevel: authLevel,
action: "timetickets:editcommitted" action: "timetickets:editcommitted"
@@ -265,17 +265,22 @@ export function TimeTicketList({
authLevel: authLevel, authLevel: authLevel,
action: "timetickets:shiftedit" action: "timetickets:shiftedit"
}) })
? disabled : HasRbacAccess({
: !record.jobid bodyshop,
} authLevel: authLevel,
> action: "timetickets:shiftedit"
<EditFilled /> })
</TimeTicketEnterButton> ? disabled
</RbacWrapper> : !record.jobid
)} }
</Space> >
) <EditFilled />
} </TimeTicketEnterButton>
</RbacWrapper>
)}
</Space>
)
}
]; ];
const handleTableChange = (pagination, filters, sorter) => { const handleTableChange = (pagination, filters, sorter) => {