Commit eb7931b25516933bb8759242e1d5e0756ae81991
1 parent
a928a85941
Exists in
master
Improved validation messages; Added one more step to student form
Showing
3 changed files
with
51 additions
and
38 deletions
Show diff stats
imports/client/views/core/validations.js
1 | -export const isRequired = value => !value && 'Required' | |
1 | +export const isRequired = (fieldName, value) => { | |
2 | + console.log('isRequired', fieldName, value) | |
3 | + if (!value) { | |
4 | + return fieldName ? `${fieldName} is required` : 'Required' | |
5 | + } | |
6 | +} | |
2 | 7 | |
3 | 8 | export const minLength = minLength => { |
4 | 9 | return value => value && value.length < minLength && `Min. length: ${minLength}` | ... | ... |
imports/client/views/org/admin/students/AddStudentFormContainer.js
... | ... | @@ -28,7 +28,7 @@ export class AddStudentFormContainer extends Component { |
28 | 28 | } |
29 | 29 | |
30 | 30 | handleSubmit() { |
31 | - if (this.state.currentStep === 2) { | |
31 | + if (this.state.currentStep === 3) { | |
32 | 32 | addStudentManually.call(this.form.state.values) |
33 | 33 | } |
34 | 34 | } |
... | ... | @@ -48,33 +48,32 @@ export class AddStudentFormContainer extends Component { |
48 | 48 | values={values} |
49 | 49 | ref={validator => this.validator = validator} |
50 | 50 | validations={{ |
51 | - admissionId: [isRequired], | |
52 | - firstName: [isRequired], | |
53 | - middleName: [isRequired], | |
54 | - lastName: [isRequired], | |
55 | - email: [isRequired, isValidEmail], | |
56 | - dob: [isRequired], | |
57 | - formattedDob: [isRequired], | |
58 | - gender: [isRequired], | |
59 | - rollNo: [(value) => this.state.currentStep === 1 && isRequired(value)], | |
60 | - class: [(value) => this.state.currentStep === 1 && isRequired(value)], | |
61 | - section: [(value) => this.state.currentStep === 1 && isRequired(value)], | |
62 | - community: [(value) => this.state.currentStep === 1 && isRequired(value)], | |
63 | - bloodGroup: [(value) => this.state.currentStep === 1 && isRequired(value)], | |
64 | - phone: [(value) => this.state.currentStep === 1 && isRequired(value)], | |
65 | - address: [(value) => this.state.currentStep === 1 && isRequired(value)], | |
66 | - city: [(value) => this.state.currentStep === 1 && isRequired(value)], | |
67 | - state: [(value) => this.state.currentStep === 1 && isRequired(value)], | |
68 | - parentName: [(value) => this.state.currentStep === 2 && isRequired(value)], | |
69 | - parentEmail: [(value) => this.state.currentStep === 2 && isRequired(value), (value) => this.state.currentStep === 2 && isValidEmail(value)], | |
70 | - relation: [(value) => this.state.currentStep === 2 && isRequired(value)], | |
71 | - profession: [(value) => this.state.currentStep === 2 && isRequired(value)], | |
72 | - parentGender: [(value) => this.state.currentStep === 2 && isRequired(value)], | |
73 | - parentPhone: [(value) => this.state.currentStep === 2 && isRequired(value)], | |
74 | - parentAddress: [(value) => this.state.currentStep === 2 && isRequired(value)], | |
75 | - parentCity: [(value) => this.state.currentStep === 2 && isRequired(value)], | |
76 | - parentState: [(value) => this.state.currentStep === 2 && isRequired(value)], | |
77 | - parentZipcode: [(value) => this.state.currentStep === 2 && isRequired(value)], | |
51 | + admissionId: [(value) => isRequired('Admission id', value)], | |
52 | + firstName: [(value) => isRequired('First name', value)], | |
53 | + middleName: [(value) => isRequired('Middle name', value)], | |
54 | + lastName: [(value) => isRequired('Last name', value)], | |
55 | + email: [(value) => isRequired('Email', value), isValidEmail], | |
56 | + dob: [(value) => isRequired('Date of birth', value)], | |
57 | + gender: [(value) => isRequired('Gender', value)], | |
58 | + rollNo: [(value) => this.state.currentStep === 1 && isRequired('Roll no', value)], | |
59 | + class: [(value) => this.state.currentStep === 1 && isRequired('Class', value)], | |
60 | + section: [(value) => this.state.currentStep === 1 && isRequired('Section', value)], | |
61 | + community: [(value) => this.state.currentStep === 1 && isRequired('Community', value)], | |
62 | + bloodGroup: [(value) => this.state.currentStep === 1 && isRequired('Blood group', value)], | |
63 | + phone: [(value) => this.state.currentStep === 1 && isRequired('Phone', value)], | |
64 | + address: [(value) => this.state.currentStep === 2 && isRequired('Address', value)], | |
65 | + city: [(value) => this.state.currentStep === 2 && isRequired('City', value)], | |
66 | + state: [(value) => this.state.currentStep === 2 && isRequired('State', value)], | |
67 | + parentName: [(value) => this.state.currentStep === 3 && isRequired('Parent name', value)], | |
68 | + parentEmail: [(value) => this.state.currentStep === 3 && isRequired('Parent email', value), (value) => this.state.currentStep === 3 && isValidEmail(value)], | |
69 | + relation: [(value) => this.state.currentStep === 3 && isRequired('Relation', value)], | |
70 | + profession: [(value) => this.state.currentStep === 3 && isRequired('Profession', value)], | |
71 | + parentGender: [(value) => this.state.currentStep === 3 && isRequired('Parent gender', value)], | |
72 | + parentPhone: [(value) => this.state.currentStep === 3 && isRequired('Parent phone', value)], | |
73 | + parentAddress: [(value) => this.state.currentStep === 3 && isRequired('Parent address', value)], | |
74 | + parentCity: [(value) => this.state.currentStep === 3 && isRequired('Parent city', value)], | |
75 | + parentState: [(value) => this.state.currentStep === 3 && isRequired('Parent state', value)], | |
76 | + parentZipcode: [(value) => this.state.currentStep === 3 && isRequired('Parent zip code', value)], | |
78 | 77 | }} |
79 | 78 | > |
80 | 79 | {({ errors }) => ( | ... | ... |
imports/client/views/org/admin/students/StudentForm.js
... | ... | @@ -20,12 +20,16 @@ const StudentForm = props => ( |
20 | 20 | active: props.currentStep === 0, |
21 | 21 | }, |
22 | 22 | { |
23 | - label: 'Address', | |
23 | + label: 'Academic', | |
24 | 24 | active: props.currentStep === 1, |
25 | 25 | }, |
26 | 26 | { |
27 | - label: 'Parent info', | |
27 | + label: 'Address', | |
28 | 28 | active: props.currentStep === 2, |
29 | + }, | |
30 | + { | |
31 | + label: 'Parent info', | |
32 | + active: props.currentStep === 3, | |
29 | 33 | } |
30 | 34 | ]} |
31 | 35 | /> |
... | ... | @@ -127,7 +131,7 @@ const StudentForm = props => ( |
127 | 131 | <Row> |
128 | 132 | <Col xs={12} sm={6}> |
129 | 133 | <FormGroup controlId="formControlsSelect"> |
130 | - <Label required>Gender</Label> | |
134 | + <Label>Gender</Label> | |
131 | 135 | <FormControl componentClass="select" |
132 | 136 | placeholder="select" |
133 | 137 | value={props.getValue('gender')} |
... | ... | @@ -145,8 +149,8 @@ const StudentForm = props => ( |
145 | 149 | </fieldset> |
146 | 150 | )} |
147 | 151 | {props.currentStep === 1 && ( |
148 | - <fieldset title="2"> | |
149 | - <legend className="text-semibold">Address</legend> | |
152 | + <fieldset title="Academic"> | |
153 | + <legend className="text-semibold">Academic</legend> | |
150 | 154 | <Row> |
151 | 155 | <Col xs={12} sm={6}> |
152 | 156 | <FormGroup controlId="rollNo"> |
... | ... | @@ -237,6 +241,11 @@ const StudentForm = props => ( |
237 | 241 | </FormGroup> |
238 | 242 | </Col> |
239 | 243 | </Row> |
244 | + </fieldset> | |
245 | + )} | |
246 | + {props.currentStep === 2 && ( | |
247 | + <fieldset title="Address"> | |
248 | + <legend className="text-semibold">Address</legend> | |
240 | 249 | <Row> |
241 | 250 | <Col xs={12} sm={6}> |
242 | 251 | <FormGroup controlId="address"> |
... | ... | @@ -285,7 +294,7 @@ const StudentForm = props => ( |
285 | 294 | </Row> |
286 | 295 | </fieldset> |
287 | 296 | )} |
288 | - {props.currentStep === 2 && ( | |
297 | + {props.currentStep === 3 && ( | |
289 | 298 | <fieldset title="2"> |
290 | 299 | <legend className="text-semibold">Parent information</legend> |
291 | 300 | <Row> |
... | ... | @@ -351,7 +360,7 @@ const StudentForm = props => ( |
351 | 360 | <Row> |
352 | 361 | <Col xs={12} sm={6}> |
353 | 362 | <FormGroup controlId="parentGender"> |
354 | - <Label required>Parent Gender</Label> | |
363 | + <Label>Parent Gender</Label> | |
355 | 364 | <FormControl componentClass="select" |
356 | 365 | placeholder="select" |
357 | 366 | value={props.getValue('parentGender')} |
... | ... | @@ -438,7 +447,7 @@ const StudentForm = props => ( |
438 | 447 | |
439 | 448 | </div> |
440 | 449 | )} |
441 | - {props.currentStep < 2 && ( | |
450 | + {props.currentStep < 3 && ( | |
442 | 451 | <div style={{ display: 'inline-block' }}> |
443 | 452 | <Button |
444 | 453 | bsStyle="primary" |
... | ... | @@ -449,7 +458,7 @@ const StudentForm = props => ( |
449 | 458 | </Button> |
450 | 459 | </div> |
451 | 460 | )} |
452 | - {props.currentStep === 2 && ( | |
461 | + {props.currentStep === 3 && ( | |
453 | 462 | <div style={{ display: 'inline-block' }}> |
454 | 463 | <Button |
455 | 464 | bsStyle="primary" | ... | ... |