import React, { useEffect } from 'react'; import { change, Field, formValueSelector, reduxForm } from 'redux-form'; import { Trans, withTranslation } from 'react-i18next'; import flow from 'lodash/flow'; import { connect } from 'react-redux'; import { renderRadioField, toNumber, CheckboxField, renderTextareaField, toFloatNumber, renderInputField, } from '../../../helpers/form'; import { FORM_NAME, STATS_INTERVALS_DAYS, DAY, RETENTION_CUSTOM, RETENTION_CUSTOM_INPUT, CUSTOM_INTERVAL, RETENTION_RANGE, } from '../../../helpers/constants'; import { trimLinesAndRemoveEmpty } from '../../../helpers/helpers'; import '../FormButton.css'; const getIntervalTitle = (intervalMs: any, t: any) => { switch (intervalMs) { case RETENTION_CUSTOM: return t('settings_custom'); case DAY: return t('interval_24_hour'); default: return t('interval_days', { count: intervalMs / DAY }); } }; interface FormProps { handleSubmit: (...args: unknown[]) => string; handleReset: (...args: unknown[]) => string; change: (...args: unknown[]) => unknown; submitting: boolean; invalid: boolean; processing: boolean; processingReset: boolean; t: (...args: unknown[]) => string; interval?: number; customInterval?: number; dispatch: (...args: unknown[]) => unknown; } let Form = (props: FormProps) => { const { handleSubmit, processing, submitting, invalid, handleReset, processingReset, t, interval, customInterval, dispatch, } = props; useEffect(() => { if (STATS_INTERVALS_DAYS.includes(interval)) { dispatch(change(FORM_NAME.STATS_CONFIG, CUSTOM_INTERVAL, null)); } }, [interval]); return (
); }; const selector = formValueSelector(FORM_NAME.STATS_CONFIG); Form = connect((state) => { const interval = selector(state, 'interval'); const customInterval = selector(state, CUSTOM_INTERVAL); return { interval, customInterval, }; })(Form); export default flow([withTranslation(), reduxForm({ form: FORM_NAME.STATS_CONFIG })])(Form);