|
@@ -1,29 +1,20 @@
|
|
import { useCreateTrainingMutation, useUpdateTrainingMutation } from '../../gql'
|
|
import { useCreateTrainingMutation, useUpdateTrainingMutation } from '../../gql'
|
|
import { useForm, TextInput, DateTimeInput, Checkbox } from '../../form'
|
|
import { useForm, TextInput, DateTimeInput, Checkbox } from '../../form'
|
|
-import {
|
|
|
|
- emptyTraining,
|
|
|
|
- emptyBlockInstance,
|
|
|
|
- transformArrayToDB,
|
|
|
|
- diffDB,
|
|
|
|
- prepareDataForDB
|
|
|
|
-} from '../utils'
|
|
|
|
|
|
+import { emptyTraining, emptyBlockInstance, prepareDataForDB } from '../utils'
|
|
import TrainingTypeSelector from './TrainingTypeSelector'
|
|
import TrainingTypeSelector from './TrainingTypeSelector'
|
|
import BlockInstanceInputs from './BlockInstanceInputs'
|
|
import BlockInstanceInputs from './BlockInstanceInputs'
|
|
import { TTraining } from '../types'
|
|
import { TTraining } from '../types'
|
|
-import { transform, isEqual, isObject } from 'lodash'
|
|
|
|
import Registrations from './Registrations'
|
|
import Registrations from './Registrations'
|
|
import Ratings from './Ratings'
|
|
import Ratings from './Ratings'
|
|
|
|
|
|
const EditTraining = ({ training }: { training?: TTraining }) => {
|
|
const EditTraining = ({ training }: { training?: TTraining }) => {
|
|
- const { values, touched, onChange, loadData } = useForm(
|
|
|
|
- training || emptyTraining()
|
|
|
|
- )
|
|
|
|
|
|
+ const { values, touched, onChange, loadData } = useForm(training || emptyTraining())
|
|
const [createTraining, createData] = useCreateTrainingMutation()
|
|
const [createTraining, createData] = useCreateTrainingMutation()
|
|
const [updateTraining, updateDate] = useUpdateTrainingMutation()
|
|
const [updateTraining, updateDate] = useUpdateTrainingMutation()
|
|
|
|
|
|
return (
|
|
return (
|
|
<form
|
|
<form
|
|
- onSubmit={async event => {
|
|
|
|
|
|
+ onSubmit={async (event) => {
|
|
event.preventDefault()
|
|
event.preventDefault()
|
|
const newValues = prepareDataForDB(values, training || emptyTraining())
|
|
const newValues = prepareDataForDB(values, training || emptyTraining())
|
|
if (!newValues || Object.keys(newValues).length === 0) {
|
|
if (!newValues || Object.keys(newValues).length === 0) {
|
|
@@ -37,88 +28,71 @@ const EditTraining = ({ training }: { training?: TTraining }) => {
|
|
console.log('created training', createData)
|
|
console.log('created training', createData)
|
|
} else if (id.startsWith('@@')) {
|
|
} else if (id.startsWith('@@')) {
|
|
const updateData = await updateTraining({
|
|
const updateData = await updateTraining({
|
|
- variables: { where: { id: id.substr(2) }, data }
|
|
|
|
|
|
+ variables: { where: { id: id.substr(2) }, data },
|
|
})
|
|
})
|
|
console.log('updated training', updateData)
|
|
console.log('updated training', updateData)
|
|
}
|
|
}
|
|
}}
|
|
}}
|
|
>
|
|
>
|
|
- <p>
|
|
|
|
- {values.createdAt} {values.id}
|
|
|
|
- </p>
|
|
|
|
- <TextInput
|
|
|
|
- name='title'
|
|
|
|
- label='Title'
|
|
|
|
- value={values.title}
|
|
|
|
- onChange={onChange}
|
|
|
|
- />
|
|
|
|
- <TrainingTypeSelector
|
|
|
|
- name='type'
|
|
|
|
- value={values.type}
|
|
|
|
- onChange={onChange}
|
|
|
|
- />
|
|
|
|
- <DateTimeInput
|
|
|
|
- name='trainingDate'
|
|
|
|
- label='Training date'
|
|
|
|
- value={values.trainingDate}
|
|
|
|
- onChange={onChange}
|
|
|
|
- />
|
|
|
|
- <TextInput
|
|
|
|
- name='location'
|
|
|
|
- label='Location'
|
|
|
|
- value={values.location}
|
|
|
|
- onChange={onChange}
|
|
|
|
- />
|
|
|
|
- <Registrations registrations={values.registrations} />
|
|
|
|
- <TextInput
|
|
|
|
- name='attendance'
|
|
|
|
- label='Attendance'
|
|
|
|
- type='number'
|
|
|
|
- value={values.attendance}
|
|
|
|
- onChange={onChange}
|
|
|
|
- />
|
|
|
|
- <Ratings ratings={values.ratings} />
|
|
|
|
- <Checkbox
|
|
|
|
- name='published'
|
|
|
|
- label='Published'
|
|
|
|
- value={values.published}
|
|
|
|
- onChange={onChange}
|
|
|
|
- />
|
|
|
|
- <label>Blocks</label>
|
|
|
|
- {values.blocks && (
|
|
|
|
- <BlockInstanceInputs
|
|
|
|
- name='blocks'
|
|
|
|
- value={values.blocks}
|
|
|
|
|
|
+ <fieldset className='fields-training'>
|
|
|
|
+ <p>
|
|
|
|
+ {values.createdAt} {values.id}
|
|
|
|
+ </p>
|
|
|
|
+ <TextInput name='title' label='Title' value={values.title} onChange={onChange} />
|
|
|
|
+ <TrainingTypeSelector name='type' value={values.type} onChange={onChange} />
|
|
|
|
+ <DateTimeInput
|
|
|
|
+ name='trainingDate'
|
|
|
|
+ label='Training date'
|
|
|
|
+ value={values.trainingDate}
|
|
onChange={onChange}
|
|
onChange={onChange}
|
|
/>
|
|
/>
|
|
- )}
|
|
|
|
- <button
|
|
|
|
- onClick={event => {
|
|
|
|
- event.preventDefault()
|
|
|
|
- const newBlock = emptyBlockInstance({
|
|
|
|
- order: values.blocks
|
|
|
|
- ? values.blocks.filter(block => !block.id.startsWith('--')).length
|
|
|
|
- : 0
|
|
|
|
- })
|
|
|
|
- onChange({
|
|
|
|
- target: {
|
|
|
|
- type: 'custom',
|
|
|
|
- name: 'blocks',
|
|
|
|
- value: values.blocks ? [...values.blocks, newBlock] : [newBlock]
|
|
|
|
- }
|
|
|
|
- })
|
|
|
|
- }}
|
|
|
|
- type='button'
|
|
|
|
- >
|
|
|
|
- Add block
|
|
|
|
- </button>
|
|
|
|
- <button type='submit' disabled={createData.loading}>
|
|
|
|
- Save
|
|
|
|
- </button>
|
|
|
|
- {createData.data && <span color='green'>Saved.</span>}
|
|
|
|
- {createData.error && (
|
|
|
|
- <span color='red'>Error saving: {createData.error.message}</span>
|
|
|
|
- )}
|
|
|
|
|
|
+ <TextInput name='location' label='Location' value={values.location} onChange={onChange} />
|
|
|
|
+ <Registrations registrations={values.registrations} />
|
|
|
|
+ <TextInput
|
|
|
|
+ name='attendance'
|
|
|
|
+ label='Attendance'
|
|
|
|
+ type='number'
|
|
|
|
+ value={values.attendance}
|
|
|
|
+ onChange={onChange}
|
|
|
|
+ />
|
|
|
|
+ <Ratings ratings={values.ratings} />
|
|
|
|
+ <Checkbox name='published' label='Published' value={values.published} onChange={onChange} />
|
|
|
|
+ <label>Blocks</label>
|
|
|
|
+ {values.blocks && (
|
|
|
|
+ <BlockInstanceInputs name='blocks' value={values.blocks} onChange={onChange} />
|
|
|
|
+ )}
|
|
|
|
+ <button
|
|
|
|
+ onClick={(event) => {
|
|
|
|
+ event.preventDefault()
|
|
|
|
+ const newBlock = emptyBlockInstance({
|
|
|
|
+ order: values.blocks
|
|
|
|
+ ? values.blocks.filter((block) => !block.id.startsWith('--')).length
|
|
|
|
+ : 0,
|
|
|
|
+ })
|
|
|
|
+ onChange({
|
|
|
|
+ target: {
|
|
|
|
+ type: 'custom',
|
|
|
|
+ name: 'blocks',
|
|
|
|
+ value: values.blocks ? [...values.blocks, newBlock] : [newBlock],
|
|
|
|
+ },
|
|
|
|
+ })
|
|
|
|
+ }}
|
|
|
|
+ type='button'
|
|
|
|
+ >
|
|
|
|
+ Add block
|
|
|
|
+ </button>
|
|
|
|
+ <button type='submit' disabled={createData.loading}>
|
|
|
|
+ Save
|
|
|
|
+ </button>
|
|
|
|
+ {createData.data && <span color='green'>Saved.</span>}
|
|
|
|
+ {createData.error && <span color='red'>Error saving: {createData.error.message}</span>}
|
|
|
|
+ </fieldset>
|
|
|
|
+
|
|
|
|
+ <style jsx>{`
|
|
|
|
+ .fields-training {
|
|
|
|
+ display: grid;
|
|
|
|
+ }
|
|
|
|
+ `}</style>
|
|
</form>
|
|
</form>
|
|
)
|
|
)
|
|
}
|
|
}
|