Multiple validations

This commit is contained in:
Belen Curcio
2017-02-06 23:18:14 -03:00
parent 16f93a0a19
commit 77f090fd3c
4 changed files with 59 additions and 38 deletions
+34 -24
View File
@@ -1,8 +1,7 @@
import coralApi from 'coral-framework/helpers/response';
import * as actions from '../constants/install';
// import validate from 'coral-framework/helpers/validate';
// import errorMsj from 'coral-framework/helpers/error';
import validate from 'coral-framework/helpers/validate';
import errorMsj from 'coral-framework/helpers/error';
export const nextStep = () => ({type: actions.NEXT_STEP});
export const previousStep = () => ({type: actions.PREVIOUS_STEP});
@@ -12,35 +11,46 @@ const installRequest = () => ({type: actions.INSTALL_REQUEST});
const installSuccess = () => ({type: actions.INSTALL_SUCCESS});
const installFailure = error => ({type: actions.INSTALL_FAILURE, error});
export const submit = () => (dispatch, getState) => {
const formData = getState().install.toJS().data;
console.log('Handling Submit');
console.log(formData.settings);
const addError = (name, error) => ({type: actions.ADD_ERROR, name, error});
const hasError = error => ({type: actions.HAS_ERROR, error});
const clearErrors = () => ({type: actions.CLEAR_ERRORS});
if (!(formData.settings != null)) {
return console.log('Validation Failed');
export const submitSettings = () => (dispatch, getState) => {
const formData = getState().install.toJS().data.settings;
if (!(formData != null)) {
return dispatch(hasError());
}
const empty = Object.keys(formData.settings).filter(name => {
console.log(name);
return !formData.settings[name].length;
// Required Validation
const empty = Object.keys(formData).filter(name => {
const cond = !formData[name].length;
// Adding Error
dispatch(addError(name, 'Please, fill this field '));
return cond;
});
console.log(
empty
);
if (empty.length) {
return dispatch(hasError('Please fill the form'));
}
// const empty = Object.keys(formData.settings)
// .filter(name => !formData[name].length)
// RegExp Validation
const validation = Object.keys(formData).filter(name => {
const cond = !validate[name](formData[name]);
if (cond) {
// Adding Error
dispatch(addError(name, errorMsj[name]));
}
// console.log(
// empty
// )
// if (empty.length) {
// console.log('Validation Failed')
// }
// .filter(name => data[name])
return cond;
});
if (validation.length) {
return dispatch(hasError('Please check the form'));
}
return dispatch(clearErrors());
};
export const install = () => dispatch => {
+6 -5
View File
@@ -1,11 +1,12 @@
export const NEXT_STEP = 'NEXT_STEP';
export const PREVIOUS_STEP = 'PREVIOUS_STEP';
export const GO_TO_STEP = 'GO_TO_STEP';
export const PREVIOUS_STEP = 'PREVIOUS_STEP';
export const ADD_ERROR = 'ADD_ERROR';
export const HAS_ERROR = 'HAS_ERROR';
export const SHOW_ERRORS = 'SHOW_ERRORS';
export const CLEAR_ERRORS = 'CLEAR_ERRORS';
export const INSTALL_REQUEST = 'INSTALL_REQUEST';
export const INSTALL_SUCCESS = 'INSTALL_SUCCESS';
export const INSTALL_FAILURE = 'INSTALL_FAILURE';
export const SHOW_ERRORS = 'SHOW_ERRORS';
export const HAS_ERROR = 'HAS_ERROR';
export const UPDATE_FORMDATA_SETTINGS = 'UPDATE_FORMDATA_SETTINGS';
export const UPDATE_FORMDATA_USER = 'UPDATE_FORMDATA_USER';
export const ADD_ERROR = 'ADD_ERROR';
export const UPDATE_FORMDATA_SETTINGS = 'UPDATE_FORMDATA_SETTINGS';
@@ -3,7 +3,7 @@ import {connect} from 'react-redux';
import styles from './style.css';
import {Wizard, WizardNav} from 'coral-ui';
import {Layout} from '../../components/ui/Layout';
import {nextStep, previousStep, goToStep, updateUserFormData, updateSettingsFormData, submit} from '../../actions/install';
import {nextStep, previousStep, goToStep, updateUserFormData, updateSettingsFormData, submitSettings} from '../../actions/install';
import InitialStep from './components/Steps/InitialStep';
import AddOrganizationName from './components/Steps/AddOrganizationName';
@@ -47,7 +47,7 @@ const mapDispatchToProps = dispatch => ({
},
handleSubmit: e => {
e.preventDefault();
dispatch(submit());
dispatch(submitSettings());
}
});
+17 -7
View File
@@ -3,10 +3,20 @@ import {Map} from 'immutable';
import * as actions from '../constants/install';
const initialState = Map({
data: Map(),
errors: Map(),
data: Map({
settings: Map({
organizationName: ''
}),
user: Map({
displayName: ''
})
}),
errors: Map({
organizationName: ''
}),
showErrors: false,
hasError: false,
error: null,
step: 0,
navItems: [{
text: '1. Add Organization Name',
@@ -35,16 +45,16 @@ export default function install (state = initialState, action) {
case actions.UPDATE_FORMDATA_USER:
return state
.setIn(['data', 'user', action.name], action.value);
case actions.SHOW_ERRORS:
return state
.set('showErrors', action.show);
case actions.HAS_ERROR:
return state
.set('hasError', action.has);
.merge({
hasError: true,
showErrors: true
});
case actions.ADD_ERROR:
return state
.setIn(['errors', action.name], action.error);
case actions.NO_ERROR:
case actions.CLEAR_ERRORS:
return state
.set('errors', Map());
default :