Commit eb7931b25516933bb8759242e1d5e0756ae81991

Authored by Rafael Arenas Schuchowsky
1 parent a928a85941
Exists in master

Improved validation messages; Added one more step to student form

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 =&gt; (
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 =&gt; (
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 =&gt; (
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 =&gt; (
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 =&gt; (
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 =&gt; (
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 =&gt; (
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 =&gt; (
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"
... ...