Fixed manual job creation validation errors BOD-252

This commit is contained in:
Patrick Fic
2020-08-17 09:11:17 -07:00
parent 873e81556d
commit 85ee5bac04
7 changed files with 36 additions and 39 deletions

View File

@@ -6,7 +6,7 @@ import FormItemEmail from "../form-items-formatted/email-form-item.component";
import FormItemPhone from "../form-items-formatted/phone-form-item.component"; import FormItemPhone from "../form-items-formatted/phone-form-item.component";
import LayoutFormRow from "../layout-form-row/layout-form-row.component"; import LayoutFormRow from "../layout-form-row/layout-form-row.component";
export default function JobsCreateJobsInfo({ form }) { export default function JobsCreateJobsInfo({ form, selected }) {
const { t } = useTranslation(); const { t } = useTranslation();
const { getFieldValue } = form; const { getFieldValue } = form;
return ( return (
@@ -74,7 +74,7 @@ export default function JobsCreateJobsInfo({ form }) {
name="est_ct_fn" name="est_ct_fn"
rules={[ rules={[
{ {
required: true, required: selected && true,
message: t("general.validation.required"), message: t("general.validation.required"),
}, },
]} ]}
@@ -86,7 +86,7 @@ export default function JobsCreateJobsInfo({ form }) {
name="est_ct_ln" name="est_ct_ln"
rules={[ rules={[
{ {
required: true, required: selected && true,
message: t("general.validation.required"), message: t("general.validation.required"),
}, },
]} ]}

View File

@@ -12,11 +12,11 @@ export default function JobsCreateOwnerContainer() {
skip: !state.owner.search, skip: !state.owner.search,
}); });
if (error) return <AlertComponent message={error.message} type='error' />; if (error) return <AlertComponent message={error.message} type="error" />;
return ( return (
<JobsCreateOwnerInfoComponent <JobsCreateOwnerInfoComponent
loading={loading} loading={loading}
owners={data ? data.search_owner : null} owners={data ? data.search_owners : null}
/> />
); );
} }

View File

@@ -125,16 +125,11 @@ export default function JobsCreateOwnerInfoNewComponent() {
}, },
]} ]}
name={["owner", "data", "ownr_ea"]} name={["owner", "data", "ownr_ea"]}
shouldUpdate
> >
{() => { <FormItemEmail
return ( //email={form.getFieldValue("ownr_ea")}
<FormItemEmail disabled={!state.owner.new}
//email={form.getFieldValue("ownr_ea")} />
disabled={!state.owner.new}
/>
);
}}
</Form.Item> </Form.Item>
<Form.Item <Form.Item
label={t("owners.fields.ownr_ph1")} label={t("owners.fields.ownr_ph1")}

View File

@@ -20,27 +20,28 @@ export default function OwnerFindModalContainer({
const ownersList = useQuery(QUERY_SEARCH_OWNER_BY_IDX, { const ownersList = useQuery(QUERY_SEARCH_OWNER_BY_IDX, {
variables: { variables: {
search: owner ? `${owner.ownr_fn || ""} ${owner.ownr_ln || ""}` : null search: owner ? `${owner.ownr_fn || ""} ${owner.ownr_ln || ""}` : null,
}, },
skip: !owner, skip: !owner,
fetchPolicy: "network-only" fetchPolicy: "network-only",
}); });
return ( return (
<Modal <Modal
title={t("owners.labels.existing_owners")} title={t("owners.labels.existing_owners")}
width={"80%"} width={"80%"}
{...modalProps}> {...modalProps}
>
{loading ? <LoadingSpinner /> : null} {loading ? <LoadingSpinner /> : null}
{error ? <AlertComponent message={error.message} type='error' /> : null} {error ? <AlertComponent message={error.message} type="error" /> : null}
{owner ? ( {owner ? (
<OwnerFindModalComponent <OwnerFindModalComponent
selectedOwner={selectedOwner} selectedOwner={selectedOwner}
setSelectedOwner={setSelectedOwner} setSelectedOwner={setSelectedOwner}
ownersListLoading={ownersList.loading} ownersListLoading={ownersList.loading}
ownersList={ ownersList={
ownersList.data && ownersList.data.search_owner ownersList.data && ownersList.data.search_owners
? ownersList.data.search_owner ? ownersList.data.search_owners
: null : null
} }
/> />

View File

@@ -1,4 +1,3 @@
import PropTypes from "prop-types";
import React from "react"; import React from "react";
import { useTranslation } from "react-i18next"; import { useTranslation } from "react-i18next";
import { connect } from "react-redux"; import { connect } from "react-redux";
@@ -46,12 +45,12 @@ function RbacWrapper({
); );
} }
RbacWrapper.propTypes = { // RbacWrapper.propTypes = {
currentUser: PropTypes.object.isRequired, // currentUser: PropTypes.object.isRequired,
authLevel: PropTypes.number.isRequired, // authLevel: PropTypes.number.isRequired,
noauth: PropTypes.oneOfType(PropTypes.string, PropTypes.func), // noauth: PropTypes.oneOfType(PropTypes.string, PropTypes.func),
requiredAuthLevel: PropTypes.number, // requiredAuthLevel: PropTypes.number,
action: PropTypes.string, // action: PropTypes.string,
}; // };
export default connect(mapStateToProps, null)(RbacWrapper); export default connect(mapStateToProps, null)(RbacWrapper);

View File

@@ -2,7 +2,7 @@ import gql from "graphql-tag";
export const QUERY_SEARCH_OWNER_BY_IDX = gql` export const QUERY_SEARCH_OWNER_BY_IDX = gql`
query QUERY_SEARCH_OWNER_BY_IDX($search: String!) { query QUERY_SEARCH_OWNER_BY_IDX($search: String!) {
search_owner(args: { search: $search }) { search_owners(args: { search: $search }) {
ownr_fn ownr_fn
ownr_ln ownr_ln
ownr_ph1 ownr_ph1

View File

@@ -29,7 +29,7 @@ export default function JobsCreateComponent({ form }) {
}, },
{ {
title: t("jobs.labels.create.jobinfo"), title: t("jobs.labels.create.jobinfo"),
content: <JobsCreateJobsInfo form={form} />, content: <JobsCreateJobsInfo form={form} selected={pageIndex === 2} />,
}, },
]; ];
@@ -47,7 +47,7 @@ export default function JobsCreateComponent({ form }) {
{pageIndex > 0 && <Button onClick={() => prev()}>Previous</Button>} {pageIndex > 0 && <Button onClick={() => prev()}>Previous</Button>}
{pageIndex < steps.length - 1 && ( {pageIndex < steps.length - 1 && (
<Button <Button
type='primary' type="primary"
onClick={() => { onClick={() => {
form form
.validateFields() .validateFields()
@@ -60,12 +60,13 @@ export default function JobsCreateComponent({ form }) {
} }
}) })
.catch((error) => console.log("error", error)); .catch((error) => console.log("error", error));
}}> }}
>
Next Next
</Button> </Button>
)} )}
{pageIndex === steps.length - 1 && ( {pageIndex === steps.length - 1 && (
<Button type='primary' htmlType='submit'> <Button type="primary" htmlType="submit">
Done Done
</Button> </Button>
)} )}
@@ -78,16 +79,16 @@ export default function JobsCreateComponent({ form }) {
{state.created ? ( {state.created ? (
<div> <div>
<Result <Result
status='success' status="success"
title={t("jobs.successes.creatednoclick")} title={t("jobs.successes.creatednoclick")}
subTitle={t("jobs.successes.created_subtitle", { subTitle={t("jobs.successes.created_subtitle", {
est_number: state.newJobEstNum, est_number: state.newJobEstNum,
})} })}
extra={[ extra={[
<Link to={`/manage/jobs/${state.newJobId}`} key='gotojob'> <Link to={`/manage/jobs/${state.newJobId}`} key="gotojob">
<Button type='primary'>{t("jobs.actions.gotojob")}</Button> <Button type="primary">{t("jobs.actions.gotojob")}</Button>
</Link>, </Link>,
<Link to={`/manage/jobs/`} key='gotojoblist'> <Link to={`/manage/jobs/`} key="gotojoblist">
<Button>{t("menus.header.activejobs")}</Button> <Button>{t("menus.header.activejobs")}</Button>
</Link>, </Link>,
]} ]}
@@ -121,7 +122,7 @@ export default function JobsCreateComponent({ form }) {
{errorMessage ? ( {errorMessage ? (
<div> <div>
<AlertComponent message={errorMessage} type='error' /> <AlertComponent message={errorMessage} type="error" />
</div> </div>
) : null} ) : null}
@@ -131,7 +132,8 @@ export default function JobsCreateComponent({ form }) {
style={{ style={{
display: idx === pageIndex ? "" : "none", display: idx === pageIndex ? "" : "none",
margin: "1rem", margin: "1rem",
}}> }}
>
{item.content} {item.content}
</div> </div>
))} ))}