IO-909 RBAC Shift Editing

This commit is contained in:
Patrick Fic
2021-04-22 09:52:49 -07:00
parent e6c7599813
commit cdf99a16fe
11 changed files with 207 additions and 55 deletions

View File

@@ -2,18 +2,37 @@ import { useQuery } from "@apollo/client";
import { Form, Input, InputNumber, Select } from "antd";
import React from "react";
import { useTranslation } from "react-i18next";
import { connect } from "react-redux";
import { createStructuredSelector } from "reselect";
import { GET_LINE_TICKET_BY_PK } from "../../graphql/jobs-lines.queries";
import {
selectAuthLevel,
selectBodyshop,
} from "../../redux/user/user.selectors";
import EmployeeSearchSelect from "../employee-search-select/employee-search-select.component";
import FormDatePicker from "../form-date-picker/form-date-picker.component";
import FormDateTimePicker from "../form-date-time-picker/form-date-time-picker.component";
import JobSearchSelect from "../job-search-select/job-search-select.component";
import LaborAllocationsTable from "../labor-allocations-table/labor-allocations-table.component";
import LayoutFormRow from "../layout-form-row/layout-form-row.component";
import LoadingSkeleton from "../loading-skeleton/loading-skeleton.component";
import { HasRbacAccess } from "../rbac-wrapper/rbac-wrapper.component";
import TimeTicketList from "../time-ticket-list/time-ticket-list.component";
export default function TimeTicketModalComponent({
form,
const mapStateToProps = createStructuredSelector({
bodyshop: selectBodyshop,
authLevel: selectAuthLevel,
});
const mapDispatchToProps = (dispatch) => ({});
export default connect(
mapStateToProps,
mapDispatchToProps
)(TimeTicketModalComponent);
export function TimeTicketModalComponent({
form,
bodyshop,
authLevel,
employeeAutoCompleteOptions,
}) {
const { t } = useTranslation();
@@ -21,17 +40,23 @@ export default function TimeTicketModalComponent({
return (
<div>
<LayoutFormRow grow>
<Form.Item
name="jobid"
label={t("timetickets.fields.ro_number")}
rules={[
{
required: true,
message: t("general.validation.required"),
},
]}
>
<JobSearchSelect convertedOnly notExported={false} />
<Form.Item shouldUpdate>
{() => (
<Form.Item
name="jobid"
label={t("timetickets.fields.ro_number")}
rules={[
{
required:
!form.getFieldValue("cost_center") ===
"timetickets.labels.shift",
message: t("general.validation.required"),
},
]}
>
<JobSearchSelect convertedOnly notExported={false} />
</Form.Item>
)}
</Form.Item>
<Form.Item
label={t("timetickets.fields.date")}
@@ -104,34 +129,51 @@ export default function TimeTicketModalComponent({
>
<InputNumber min={0} precision={1} />
</Form.Item>
<Form.Item
label={t("timetickets.fields.actualhrs")}
name="actualhrs"
// rules={[
// {
// required: true,
// message: t("general.validation.required"),
// },
// ]}
>
<Form.Item label={t("timetickets.fields.actualhrs")} name="actualhrs">
<InputNumber min={0} precision={1} />
</Form.Item>
<Form.Item label={t("timetickets.fields.clockon")} name="clockon">
<FormDateTimePicker
disabled={
!HasRbacAccess({
bodyshop,
authLevel,
action: "timetickets:shiftedit",
})
}
/>
</Form.Item>
<Form.Item label={t("timetickets.fields.clockoff")} name="clockoff">
<FormDateTimePicker
disabled={
!HasRbacAccess({
bodyshop,
authLevel,
action: "timetickets:shiftedit",
})
}
/>
</Form.Item>
<Form.Item label={t("timetickets.fields.memo")} name="memo">
<Input />
</Form.Item>
<Form.Item
name="ciecacode"
label={t("timetickets.fields.ciecacode")}
rules={[
{
required: true,
message: t("general.validation.required"),
},
]}
>
<Input disabled />
<Form.Item shouldUpdate>
{() => (
<Form.Item
name="ciecacode"
label={t("timetickets.fields.ciecacode")}
rules={[
{
required:
!form.getFieldValue("cost_center") ===
"timetickets.labels.shift",
message: t("general.validation.required"),
},
]}
>
<Input disabled />
</Form.Item>
)}
</Form.Item>
</LayoutFormRow>
<Form.Item dependencies={["jobid"]}>