Rev 3308 | Rev 3313 | Ir a la última revisión | Autoría | Comparar con el anterior | Ultima modificación | Ver Log |
import React from 'react'
import { useDispatch } from 'react-redux'
import { useForm } from 'react-hook-form'
import {
Accordion,
AccordionDetails,
AccordionSummary,
Button,
Typography
} from '@mui/material'
import { ExpandMore } from '@mui/icons-material'
import { saveProgress } from '@services/habits/habits'
import { addNotification } from '@store/notification/notification.actions'
import Widget from '@components/UI/Widget'
import Form from '@components/common/form'
import Input from '@components/UI/inputs/Input'
import Ckeditor from '@components/common/ckeditor/Ckeditor'
import LoadingWrapper from '@components/common/loading-wrapper'
export default function ProgressItem({ habit }) {
const dispatch = useDispatch()
const { uuid, name, link } = habit
const {
handleSubmit,
control,
formState: { errors, isSubmitting }
} = useForm({
defaultValues: {}
})
function getCurrentDate() {
const date = new Date()
const year = date.getFullYear()
const month = String(date.getMonth() + 1).padStart(2, '0') // Enero es 0
const day = String(date.getDate()).padStart(2, '0')
const hours = String(date.getHours()).padStart(2, '0')
const minutes = String(date.getMinutes()).padStart(2, '0')
const seconds = String(date.getSeconds()).padStart(2, '0')
return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`
}
const onSubmit = handleSubmit(async (data) => {
try {
const date = getCurrentDate()
const response = await saveProgress(link, { ...data, date })
console.log(response)
} catch (error) {
dispatch(addNotification({ style: 'danger', msg: error.message }))
}
})
return (
<Widget>
<Widget.Body>
<Accordion
sx={{
border: 'none',
width: '100%',
boxShadow: 'none',
padding: 0,
'&::before': {
display: 'none'
}
}}
>
<AccordionSummary
sx={{ padding: '0.5rem 0 !important' }}
expandIcon={<ExpandMore />}
>
<Typography variant='h2'>{name}</Typography>
</AccordionSummary>
<AccordionDetails sx={{ padding: 0 }}>
<Form onSubmit={onSubmit} id={`${uuid}_progress-form`}>
<LoadingWrapper loading={isSubmitting} displayChildren>
<Input
control={control}
label='Valor cuantitativo:'
name='quantitative_value'
type='number'
rules={{ required: 'El valor es requerido' }}
error={errors.quantitative_value?.message}
/>
<Ckeditor
control={control}
name='qualitative_description'
error={errors.qualitative_description?.message}
rules={{ required: 'La descripción es requerida' }}
label='Descripción cualitativa:'
/>
<Button
color='primary'
type='submit'
form={`${uuid}_progress-form`}
>
Enviar
</Button>
</LoadingWrapper>
</Form>
</AccordionDetails>
</Accordion>
</Widget.Body>
</Widget>
)
}