• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

akvo / nmis-mobile / 5584204952

18 Jul 2023 06:46AM UTC coverage: 72.915% (+2.2%) from 70.668%
5584204952

Pull #50

github

web-flow
Merge 62a70bc2b into 79adab1f4
Pull Request #50: Feature/46 question group list

337 of 500 branches covered (67.4%)

Branch coverage included in aggregate %.

43 of 43 new or added lines in 7 files covered. (100.0%)

791 of 1047 relevant lines covered (75.55%)

8.21 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

56.1
/app/src/form/components/QuestionField.js
1
import React, { useEffect } from 'react';
2
import {
3
  TypeDate,
4
  TypeImage,
5
  TypeInput,
6
  TypeMultipleOption,
7
  TypeOption,
8
  TypeText,
9
  TypeNumber,
10
  TypeGeo,
11
} from '../fields';
12
import { useField } from 'formik';
13
import { View, Text } from 'react-native';
14
import { styles } from '../styles';
15
import { FormState } from '../../store';
16

17
const QuestionField = ({ keyform, field: questionField, setFieldValue, values, validate }) => {
4✔
18
  const [field, meta, helpers] = useField({ name: questionField.id, validate });
124✔
19

20
  useEffect(() => {
124✔
21
    if (meta.error && field.name && values?.[field.name]) {
22!
22
      setTimeout(() => {
×
23
        delete values?.[field.name];
×
24
        FormState.update((s) => {
×
25
          s.currentValues = values;
×
26
        });
27
      }, 100);
28
    }
29
  }, [meta.error, field.name, values]);
30

31
  const handleOnChangeField = (id, value) => {
124✔
32
    helpers.setTouched({ [field.name]: true });
×
33
    FormState.update((s) => {
×
34
      s.currentValues = { ...s.currentValues, [id]: value };
×
35
    });
36
    setFieldValue(id, value);
×
37
  };
38

39
  const renderField = () => {
124✔
40
    switch (questionField?.type) {
124!
41
      case 'date':
42
        return (
14✔
43
          <TypeDate
44
            keyform={keyform}
45
            onChange={handleOnChangeField}
46
            values={values}
47
            {...questionField}
48
          />
49
        );
50
      case 'image':
51
        return (
×
52
          <TypeImage
53
            keyform={keyform}
54
            onChange={handleOnChangeField}
55
            values={values}
56
            {...questionField}
57
          />
58
        );
59
      case 'multiple_option':
60
        return (
×
61
          <TypeMultipleOption
62
            keyform={keyform}
63
            onChange={handleOnChangeField}
64
            values={values}
65
            {...questionField}
66
          />
67
        );
68
      case 'option':
69
        return (
57✔
70
          <TypeOption
71
            keyform={keyform}
72
            onChange={handleOnChangeField}
73
            values={values}
74
            {...questionField}
75
          />
76
        );
77
      case 'text':
78
        return (
16✔
79
          <TypeText
80
            keyform={keyform}
81
            onChange={handleOnChangeField}
82
            values={values}
83
            {...questionField}
84
          />
85
        );
86
      case 'number':
87
        return (
22✔
88
          <TypeNumber
89
            keyform={keyform}
90
            onChange={handleOnChangeField}
91
            values={values}
92
            {...questionField}
93
          />
94
        );
95
      case 'geo':
96
        return (
×
97
          <TypeGeo
98
            keyform={keyform}
99
            onChange={handleOnChangeField}
100
            values={values}
101
            {...questionField}
102
          />
103
        );
104
      default:
105
        return (
15✔
106
          <TypeInput
107
            keyform={keyform}
108
            onChange={handleOnChangeField}
109
            values={values}
110
            {...questionField}
111
          />
112
        );
113
    }
114
  };
115

116
  return (
124✔
117
    <View>
118
      {renderField()}
119
      {meta.touched && meta.error ? (
350!
120
        <Text style={styles.validationErrorText}>{meta.error}</Text>
121
      ) : null}
122
    </View>
123
  );
124
};
125

126
export default QuestionField;
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc