diff --git a/client/src/components/job-scoreboard-add-button/job-scoreboard-add-button.component.jsx b/client/src/components/job-scoreboard-add-button/job-scoreboard-add-button.component.jsx index 9f1f12e0e..846950eaa 100644 --- a/client/src/components/job-scoreboard-add-button/job-scoreboard-add-button.component.jsx +++ b/client/src/components/job-scoreboard-add-button/job-scoreboard-add-button.component.jsx @@ -1,11 +1,24 @@ -import { useMutation } from "@apollo/client"; -import { Button, Card, Form, InputNumber, notification, Popover } from "antd"; +import { useMutation, useLazyQuery } from "@apollo/client"; +import { + Button, + Card, + Form, + InputNumber, + notification, + Popover, + Space, +} from "antd"; import moment from "moment"; -import React, { useState } from "react"; +import React, { useState, useEffect } from "react"; import { useTranslation } from "react-i18next"; import { logImEXEvent } from "../../firebase/firebase.utils"; -import { INSERT_SCOREBOARD_ENTRY } from "../../graphql/scoreboard.queries"; +import { + INSERT_SCOREBOARD_ENTRY, + QUERY_SCOREBOARD_ENTRY, + UPDATE_SCOREBOARD_ENTRY, +} from "../../graphql/scoreboard.queries"; import FormDatePicker from "../form-date-picker/form-date-picker.component"; +import LoadingSpinner from "../loading-spinner/loading-spinner.component"; export default function ScoreboardAddButton({ job, @@ -14,17 +27,46 @@ export default function ScoreboardAddButton({ }) { const { t } = useTranslation(); const [insertScoreboardEntry] = useMutation(INSERT_SCOREBOARD_ENTRY); + const [updateScoreboardEntry] = useMutation(UPDATE_SCOREBOARD_ENTRY); const [loading, setLoading] = useState(false); const [form] = Form.useForm(); const [visibility, setVisibility] = useState(false); + const [callQuery, { loading: entryLoading, data: entryData }] = useLazyQuery( + QUERY_SCOREBOARD_ENTRY + ); + + useEffect(() => { + if (visibility) { + callQuery({ variables: { jobid: job.id } }); + } + }, [visibility, job.id, callQuery]); + + useEffect(() => { + console.log("UE", entryData); + if (entryData && entryData.scoreboard && entryData.scoreboard[0]) { + console.log("Setting FOrm"); + form.setFieldsValue(entryData.scoreboard[0]); + } + }, [entryData, form]); const handleFinish = async (values) => { logImEXEvent("job_close_add_to_scoreboard"); setLoading(true); - const result = await insertScoreboardEntry({ - variables: { sbInput: [{ jobid: job.id, ...values }] }, - }); + let result; + + if (entryData && entryData.scoreboard && entryData.scoreboard[0]) { + result = await updateScoreboardEntry({ + variables: { + sbId: entryData.scoreboard[0].id, + sbInput: values, + }, + }); + } else { + result = await insertScoreboardEntry({ + variables: { sbInput: [{ jobid: job.id, ...values }] }, + }); + } if (!!result.errors) { notification["error"]({ @@ -44,53 +86,62 @@ export default function ScoreboardAddButton({ const overlay = (
-
- + ) : ( + - - - - - - - - + + + + + + + + + - -
+ + + + + + )}
); @@ -99,7 +150,7 @@ export default function ScoreboardAddButton({ setLoading(true); const v = job.joblines.reduce( (acc, val) => { - if (val.mod_lbr_ty === "LAB") + if (val.mod_lbr_ty !== "LAR") acc = { ...acc, bodyhrs: acc.bodyhrs + val.mod_lb_hrs }; if (val.mod_lbr_ty === "LAR") acc = { ...acc, painthrs: acc.painthrs + val.mod_lb_hrs }; diff --git a/client/src/graphql/scoreboard.queries.js b/client/src/graphql/scoreboard.queries.js index 1132fd65d..e2b5794d5 100644 --- a/client/src/graphql/scoreboard.queries.js +++ b/client/src/graphql/scoreboard.queries.js @@ -51,3 +51,14 @@ export const UPDATE_SCOREBOARD_ENTRY = gql` } } `; + +export const QUERY_SCOREBOARD_ENTRY = gql` + query QUERY_SCOREBOARD_ENTRY($jobid: uuid!) { + scoreboard(where: { jobid: { _eq: $jobid } }) { + bodyhrs + date + id + painthrs + } + } +`;