X-Git-Url: https://git.localhorst.tv/?a=blobdiff_plain;f=resources%2Fjs%2Fcomponents%2Fresults%2FReportForm.js;h=2e85f4a4c3abfb9c334b3cd18253bf91727001f3;hb=3a069159f7971758817bb281f72a41ddc7d7a958;hp=943aac39ff059c016bef1f49e9fff978fc75d60e;hpb=920f11ddfeb2175e4e1556886773dcd044c6085b;p=alttp.git diff --git a/resources/js/components/results/ReportForm.js b/resources/js/components/results/ReportForm.js index 943aac3..2e85f4a 100644 --- a/resources/js/components/results/ReportForm.js +++ b/resources/js/components/results/ReportForm.js @@ -8,7 +8,7 @@ import toastr from 'toastr'; import LargeCheck from '../common/LargeCheck'; import laravelErrorsToFormik from '../../helpers/laravelErrorsToFormik'; -import { findResult } from '../../helpers/Participant'; +import { findResult } from '../../helpers/User'; import { formatTime, parseTime } from '../../helpers/Result'; import i18n from '../../i18n'; import yup from '../../schema/yup'; @@ -19,50 +19,86 @@ const ReportForm = ({ handleChange, handleSubmit, onCancel, + round, touched, values, }) =>
- - - {i18n.t('results.reportTime')} - - {touched.time && errors.time ? - - {i18n.t(errors.time)} - - : - - {parseTime(values.time) ? - i18n.t( - 'results.reportPreview', - { time: formatTime({ time: parseTime(values.time) })}, - ) - : null} - - } - - - {i18n.t('results.forfeit')} - - - + {!round.locked ? + + + {i18n.t('results.reportTime')} + + {touched.time && errors.time ? + + {i18n.t(errors.time)} + + : + + {parseTime(values.time) ? + i18n.t( + 'results.reportPreview', + { time: formatTime({ time: parseTime(values.time) })}, + ) + : null} + + } + + + {i18n.t('results.forfeit')} + + + + : null} + + {i18n.t('results.vod')} + + {touched.vod && errors.vod ? + + {i18n.t(errors.vod)} + + : + + {i18n.t('results.vodNote')} + + } + + + {i18n.t('results.comment')} + + {onCancel ? @@ -78,20 +114,29 @@ const ReportForm = ({ ReportForm.propTypes = { errors: PropTypes.shape({ + comment: PropTypes.string, forfeit: PropTypes.string, time: PropTypes.string, + vod: PropTypes.string, }), handleBlur: PropTypes.func, handleChange: PropTypes.func, handleSubmit: PropTypes.func, onCancel: PropTypes.func, + round: PropTypes.shape({ + locked: PropTypes.bool, + }), touched: PropTypes.shape({ + comment: PropTypes.bool, forfeit: PropTypes.bool, time: PropTypes.bool, + vod: PropTypes.bool, }), values: PropTypes.shape({ + comment: PropTypes.string, forfeit: PropTypes.bool, time: PropTypes.string, + vod: PropTypes.string, }), }; @@ -99,15 +144,17 @@ export default withFormik({ displayName: 'ReportForm', enableReinitialize: true, handleSubmit: async (values, actions) => { - const { forfeit, participant_id, round_id, time } = values; + const { comment, forfeit, round_id, time, user_id, vod } = values; const { setErrors } = actions; const { onCancel } = actions.props; try { await axios.post('/api/results', { + comment, forfeit, - participant_id, round_id, time: parseTime(time) || 0, + user_id, + vod, }); toastr.success(i18n.t('results.reportSuccess')); if (onCancel) { @@ -120,21 +167,24 @@ export default withFormik({ } } }, - mapPropsToValues: ({ participant, round }) => { - const result = findResult(participant, round); - console.log(result); + mapPropsToValues: ({ round, user }) => { + const result = findResult(user, round); return { + comment: result && result.comment ? result.comment : '', forfeit: result ? !!result.forfeit : false, - participant_id: participant.id, round_id: round.id, time: result && result.time ? formatTime(result) : '', + user_id: user.id, + vod: result && result.vod ? result.vod : '', }; }, validationSchema: yup.object().shape({ + comment: yup.string(), forfeit: yup.boolean().required(), time: yup.string().time().when('forfeit', { is: false, - then: yup.string().required().time(), + then: () => yup.string().required().time(), }), + vod: yup.string().url(), }), })(withTranslation()(ReportForm));