-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathEditReportingPeriodCell.tsx
91 lines (83 loc) · 2.18 KB
/
EditReportingPeriodCell.tsx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
import type {
EditReportingPeriodById,
UpdateReportingPeriodInput,
} from 'types/graphql'
import { navigate, routes } from '@redwoodjs/router'
import type { CellSuccessProps, CellFailureProps } from '@redwoodjs/web'
import { useMutation } from '@redwoodjs/web'
import { toast } from '@redwoodjs/web/toast'
import ReportingPeriodForm from 'src/components/ReportingPeriod/ReportingPeriodForm'
export const QUERY = gql`
query EditReportingPeriodById($id: Int!) {
reportingPeriod: reportingPeriod(id: $id) {
id
name
startDate
endDate
inputTemplateId
outputTemplateId
createdAt
updatedAt
}
}
`
const UPDATE_REPORTING_PERIOD_MUTATION = gql`
mutation UpdateReportingPeriodMutation(
$id: Int!
$input: UpdateReportingPeriodInput!
) {
updateReportingPeriod(id: $id, input: $input) {
id
name
startDate
endDate
inputTemplateId
outputTemplateId
createdAt
updatedAt
}
}
`
export const Loading = () => <div>Loading...</div>
export const Failure = ({ error }: CellFailureProps) => (
<div className="rw-cell-error">{error?.message}</div>
)
export const Success = ({
reportingPeriod,
}: CellSuccessProps<EditReportingPeriodById>) => {
const [updateReportingPeriod, { loading, error }] = useMutation(
UPDATE_REPORTING_PERIOD_MUTATION,
{
onCompleted: () => {
toast.success('ReportingPeriod updated')
navigate(routes.reportingPeriods())
},
onError: (error) => {
toast.error(error.message)
},
}
)
const onSave = (
input: UpdateReportingPeriodInput,
id: EditReportingPeriodById['reportingPeriod']['id']
) => {
updateReportingPeriod({ variables: { id, input } })
}
return (
<div className="rw-segment">
<header className="rw-segment-header">
<h2 className="rw-heading rw-heading-secondary">
Edit ReportingPeriod {reportingPeriod?.id}
</h2>
</header>
<div className="rw-segment-main">
<ReportingPeriodForm
reportingPeriod={reportingPeriod}
onSave={onSave}
error={error}
loading={loading}
/>
</div>
</div>
)
}