@hedia/recommendation-screen 2.1.14 → 2.1.16
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/coverage/clover.xml +588 -590
- package/coverage/coverage-final.json +27 -27
- package/coverage/lcov-report/index.html +7 -7
- package/coverage/lcov-report/src/RecommendationScreen.tsx.html +1039 -70
- package/coverage/lcov-report/src/__tests__/index.html +1 -1
- package/coverage/lcov-report/src/__tests__/utils.tsx.html +35 -14
- package/coverage/lcov-report/src/components/Header.tsx.html +14 -5
- package/coverage/lcov-report/src/components/InfoBars.tsx.html +97 -13
- package/coverage/lcov-report/src/components/InvisibleNumberInput.tsx.html +206 -14
- package/coverage/lcov-report/src/components/LimitationMessage.tsx.html +20 -2
- package/coverage/lcov-report/src/components/LineSeparator.tsx.html +13 -4
- package/coverage/lcov-report/src/components/RecentInsulin.tsx.html +30 -3
- package/coverage/lcov-report/src/components/RecommendationModal.tsx.html +200 -20
- package/coverage/lcov-report/src/components/RecommendedCarbs.tsx.html +218 -20
- package/coverage/lcov-report/src/components/RecommendedInsulin.tsx.html +195 -27
- package/coverage/lcov-report/src/components/Remeasure.tsx.html +125 -14
- package/coverage/lcov-report/src/components/TransferToLogbook.tsx.html +71 -8
- package/coverage/lcov-report/src/components/TwoOptionModal.tsx.html +34 -10
- package/coverage/lcov-report/src/components/activity/Activity.tsx.html +58 -7
- package/coverage/lcov-report/src/components/activity/ActivityIcon.tsx.html +42 -3
- package/coverage/lcov-report/src/components/activity/ActivityIntensity.tsx.html +30 -6
- package/coverage/lcov-report/src/components/activity/index.html +1 -1
- package/coverage/lcov-report/src/components/index.html +10 -10
- package/coverage/lcov-report/src/components/mood/Emotion.tsx.html +85 -10
- package/coverage/lcov-report/src/components/mood/MoodIcon.tsx.html +87 -12
- package/coverage/lcov-report/src/components/mood/index.html +1 -1
- package/coverage/lcov-report/src/index.html +1 -1
- package/coverage/lcov-report/src/locale/i18nUtils.ts.html +47 -8
- package/coverage/lcov-report/src/locale/index.html +1 -1
- package/coverage/lcov-report/src/utils/AttentionMessages.tsx.html +235 -7
- package/coverage/lcov-report/src/utils/Constants.ts.html +71 -2
- package/coverage/lcov-report/src/utils/RecommendationError.tsx.html +89 -2
- package/coverage/lcov-report/src/utils/RecommendationUtils.ts.html +337 -40
- package/coverage/lcov-report/src/utils/Translations.ts.html +27 -3
- package/coverage/lcov-report/src/utils/Utils.ts.html +295 -19
- package/coverage/lcov-report/src/utils/Validations.ts.html +763 -61
- package/coverage/lcov-report/src/utils/index.html +1 -1
- package/coverage/lcov.info +1243 -1249
- package/ignore-git.sh +1 -0
- package/ignore-publish.sh +1 -0
- package/package.json +5 -3
- package/src/RecommendationScreen.d.ts +323 -6
- package/src/RecommendationScreen.js +234 -1
- package/src/__tests__/RecommendationScreen.test.js +35 -1
- package/src/__tests__/utils.d.ts +5 -5
- package/src/__tests__/utils.js +1 -1
- package/src/components/Header.d.ts +4 -43
- package/src/components/Header.js +3 -1
- package/src/components/Icon.d.ts +9 -2
- package/src/components/Icon.js +6 -1
- package/src/components/InfoBars.d.ts +28 -0
- package/src/components/InfoBars.js +23 -0
- package/src/components/InvisibleNumberInput.d.ts +66 -3
- package/src/components/InvisibleNumberInput.js +53 -0
- package/src/components/LimitationMessage.d.ts +6 -0
- package/src/components/LimitationMessage.js +4 -0
- package/src/components/LineSeparator.d.ts +4 -2
- package/src/components/LineSeparator.js +2 -0
- package/src/components/RecentInsulin.d.ts +10 -2
- package/src/components/RecentInsulin.js +7 -0
- package/src/components/RecommendationModal.d.ts +61 -3
- package/src/components/RecommendationModal.js +45 -0
- package/src/components/RecommendedCarbs.d.ts +71 -4
- package/src/components/RecommendedCarbs.js +56 -0
- package/src/components/RecommendedInsulin.d.ts +66 -4
- package/src/components/RecommendedInsulin.js +51 -5
- package/src/components/Remeasure.d.ts +38 -2
- package/src/components/Remeasure.js +31 -0
- package/src/components/TransferToLogbook.d.ts +23 -3
- package/src/components/TransferToLogbook.js +18 -0
- package/src/components/TwoOptionModal.d.ts +12 -1
- package/src/components/TwoOptionModal.js +3 -3
- package/src/components/activity/Activity.d.ts +21 -5
- package/src/components/activity/Activity.js +14 -0
- package/src/components/activity/ActivityIcon.d.ts +15 -0
- package/src/components/activity/ActivityIcon.js +14 -1
- package/src/components/activity/ActivityIntensity.d.ts +11 -4
- package/src/components/activity/ActivityIntensity.js +7 -0
- package/src/components/mood/Emotion.d.ts +26 -1
- package/src/components/mood/Emotion.js +20 -0
- package/src/components/mood/MoodIcon.d.ts +28 -2
- package/src/components/mood/MoodIcon.js +20 -2
- package/src/locale/i18nUtils.d.ts +13 -0
- package/src/locale/i18nUtils.js +13 -0
- package/src/types/enum.d.ts +10 -0
- package/src/types/enum.js +9 -0
- package/src/types/types.d.ts +9 -7
- package/src/utils/AttentionMessages.d.ts +65 -0
- package/src/utils/AttentionMessages.js +65 -1
- package/src/utils/Constants.d.ts +23 -0
- package/src/utils/Constants.js +23 -0
- package/src/utils/RecommendationError.d.ts +29 -0
- package/src/utils/RecommendationError.js +29 -0
- package/src/utils/RecommendationUtils.d.ts +98 -6
- package/src/utils/RecommendationUtils.js +92 -0
- package/src/utils/Translations.d.ts +7 -0
- package/src/utils/Translations.js +7 -0
- package/src/utils/Utils.d.ts +92 -0
- package/src/utils/Utils.js +94 -2
- package/src/utils/Validations.d.ts +232 -9
- package/src/utils/Validations.js +225 -2
- package/typedoc.json +13 -0
|
@@ -120,7 +120,99 @@
|
|
|
120
120
|
<a name='L61'></a><a href='#L61'>61</a>
|
|
121
121
|
<a name='L62'></a><a href='#L62'>62</a>
|
|
122
122
|
<a name='L63'></a><a href='#L63'>63</a>
|
|
123
|
-
<a name='L64'></a><a href='#L64'>64</a
|
|
123
|
+
<a name='L64'></a><a href='#L64'>64</a>
|
|
124
|
+
<a name='L65'></a><a href='#L65'>65</a>
|
|
125
|
+
<a name='L66'></a><a href='#L66'>66</a>
|
|
126
|
+
<a name='L67'></a><a href='#L67'>67</a>
|
|
127
|
+
<a name='L68'></a><a href='#L68'>68</a>
|
|
128
|
+
<a name='L69'></a><a href='#L69'>69</a>
|
|
129
|
+
<a name='L70'></a><a href='#L70'>70</a>
|
|
130
|
+
<a name='L71'></a><a href='#L71'>71</a>
|
|
131
|
+
<a name='L72'></a><a href='#L72'>72</a>
|
|
132
|
+
<a name='L73'></a><a href='#L73'>73</a>
|
|
133
|
+
<a name='L74'></a><a href='#L74'>74</a>
|
|
134
|
+
<a name='L75'></a><a href='#L75'>75</a>
|
|
135
|
+
<a name='L76'></a><a href='#L76'>76</a>
|
|
136
|
+
<a name='L77'></a><a href='#L77'>77</a>
|
|
137
|
+
<a name='L78'></a><a href='#L78'>78</a>
|
|
138
|
+
<a name='L79'></a><a href='#L79'>79</a>
|
|
139
|
+
<a name='L80'></a><a href='#L80'>80</a>
|
|
140
|
+
<a name='L81'></a><a href='#L81'>81</a>
|
|
141
|
+
<a name='L82'></a><a href='#L82'>82</a>
|
|
142
|
+
<a name='L83'></a><a href='#L83'>83</a>
|
|
143
|
+
<a name='L84'></a><a href='#L84'>84</a>
|
|
144
|
+
<a name='L85'></a><a href='#L85'>85</a>
|
|
145
|
+
<a name='L86'></a><a href='#L86'>86</a>
|
|
146
|
+
<a name='L87'></a><a href='#L87'>87</a>
|
|
147
|
+
<a name='L88'></a><a href='#L88'>88</a>
|
|
148
|
+
<a name='L89'></a><a href='#L89'>89</a>
|
|
149
|
+
<a name='L90'></a><a href='#L90'>90</a>
|
|
150
|
+
<a name='L91'></a><a href='#L91'>91</a>
|
|
151
|
+
<a name='L92'></a><a href='#L92'>92</a>
|
|
152
|
+
<a name='L93'></a><a href='#L93'>93</a>
|
|
153
|
+
<a name='L94'></a><a href='#L94'>94</a>
|
|
154
|
+
<a name='L95'></a><a href='#L95'>95</a>
|
|
155
|
+
<a name='L96'></a><a href='#L96'>96</a>
|
|
156
|
+
<a name='L97'></a><a href='#L97'>97</a>
|
|
157
|
+
<a name='L98'></a><a href='#L98'>98</a>
|
|
158
|
+
<a name='L99'></a><a href='#L99'>99</a>
|
|
159
|
+
<a name='L100'></a><a href='#L100'>100</a>
|
|
160
|
+
<a name='L101'></a><a href='#L101'>101</a>
|
|
161
|
+
<a name='L102'></a><a href='#L102'>102</a>
|
|
162
|
+
<a name='L103'></a><a href='#L103'>103</a>
|
|
163
|
+
<a name='L104'></a><a href='#L104'>104</a>
|
|
164
|
+
<a name='L105'></a><a href='#L105'>105</a>
|
|
165
|
+
<a name='L106'></a><a href='#L106'>106</a>
|
|
166
|
+
<a name='L107'></a><a href='#L107'>107</a>
|
|
167
|
+
<a name='L108'></a><a href='#L108'>108</a>
|
|
168
|
+
<a name='L109'></a><a href='#L109'>109</a>
|
|
169
|
+
<a name='L110'></a><a href='#L110'>110</a>
|
|
170
|
+
<a name='L111'></a><a href='#L111'>111</a>
|
|
171
|
+
<a name='L112'></a><a href='#L112'>112</a>
|
|
172
|
+
<a name='L113'></a><a href='#L113'>113</a>
|
|
173
|
+
<a name='L114'></a><a href='#L114'>114</a>
|
|
174
|
+
<a name='L115'></a><a href='#L115'>115</a>
|
|
175
|
+
<a name='L116'></a><a href='#L116'>116</a>
|
|
176
|
+
<a name='L117'></a><a href='#L117'>117</a>
|
|
177
|
+
<a name='L118'></a><a href='#L118'>118</a>
|
|
178
|
+
<a name='L119'></a><a href='#L119'>119</a>
|
|
179
|
+
<a name='L120'></a><a href='#L120'>120</a>
|
|
180
|
+
<a name='L121'></a><a href='#L121'>121</a>
|
|
181
|
+
<a name='L122'></a><a href='#L122'>122</a>
|
|
182
|
+
<a name='L123'></a><a href='#L123'>123</a>
|
|
183
|
+
<a name='L124'></a><a href='#L124'>124</a>
|
|
184
|
+
<a name='L125'></a><a href='#L125'>125</a>
|
|
185
|
+
<a name='L126'></a><a href='#L126'>126</a>
|
|
186
|
+
<a name='L127'></a><a href='#L127'>127</a>
|
|
187
|
+
<a name='L128'></a><a href='#L128'>128</a>
|
|
188
|
+
<a name='L129'></a><a href='#L129'>129</a>
|
|
189
|
+
<a name='L130'></a><a href='#L130'>130</a>
|
|
190
|
+
<a name='L131'></a><a href='#L131'>131</a>
|
|
191
|
+
<a name='L132'></a><a href='#L132'>132</a>
|
|
192
|
+
<a name='L133'></a><a href='#L133'>133</a>
|
|
193
|
+
<a name='L134'></a><a href='#L134'>134</a>
|
|
194
|
+
<a name='L135'></a><a href='#L135'>135</a>
|
|
195
|
+
<a name='L136'></a><a href='#L136'>136</a>
|
|
196
|
+
<a name='L137'></a><a href='#L137'>137</a>
|
|
197
|
+
<a name='L138'></a><a href='#L138'>138</a>
|
|
198
|
+
<a name='L139'></a><a href='#L139'>139</a>
|
|
199
|
+
<a name='L140'></a><a href='#L140'>140</a>
|
|
200
|
+
<a name='L141'></a><a href='#L141'>141</a>
|
|
201
|
+
<a name='L142'></a><a href='#L142'>142</a>
|
|
202
|
+
<a name='L143'></a><a href='#L143'>143</a>
|
|
203
|
+
<a name='L144'></a><a href='#L144'>144</a>
|
|
204
|
+
<a name='L145'></a><a href='#L145'>145</a>
|
|
205
|
+
<a name='L146'></a><a href='#L146'>146</a>
|
|
206
|
+
<a name='L147'></a><a href='#L147'>147</a>
|
|
207
|
+
<a name='L148'></a><a href='#L148'>148</a>
|
|
208
|
+
<a name='L149'></a><a href='#L149'>149</a>
|
|
209
|
+
<a name='L150'></a><a href='#L150'>150</a>
|
|
210
|
+
<a name='L151'></a><a href='#L151'>151</a>
|
|
211
|
+
<a name='L152'></a><a href='#L152'>152</a>
|
|
212
|
+
<a name='L153'></a><a href='#L153'>153</a>
|
|
213
|
+
<a name='L154'></a><a href='#L154'>154</a>
|
|
214
|
+
<a name='L155'></a><a href='#L155'>155</a>
|
|
215
|
+
<a name='L156'></a><a href='#L156'>156</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral"> </span>
|
|
124
216
|
<span class="cline-any cline-neutral"> </span>
|
|
125
217
|
<span class="cline-any cline-neutral"> </span>
|
|
126
218
|
<span class="cline-any cline-yes">9x</span>
|
|
@@ -128,12 +220,25 @@
|
|
|
128
220
|
<span class="cline-any cline-neutral"> </span>
|
|
129
221
|
<span class="cline-any cline-neutral"> </span>
|
|
130
222
|
<span class="cline-any cline-neutral"> </span>
|
|
131
|
-
<span class="cline-any cline-
|
|
223
|
+
<span class="cline-any cline-neutral"> </span>
|
|
224
|
+
<span class="cline-any cline-neutral"> </span>
|
|
225
|
+
<span class="cline-any cline-neutral"> </span>
|
|
226
|
+
<span class="cline-any cline-neutral"> </span>
|
|
227
|
+
<span class="cline-any cline-neutral"> </span>
|
|
228
|
+
<span class="cline-any cline-neutral"> </span>
|
|
229
|
+
<span class="cline-any cline-neutral"> </span>
|
|
230
|
+
<span class="cline-any cline-neutral"> </span>
|
|
231
|
+
<span class="cline-any cline-neutral"> </span>
|
|
232
|
+
<span class="cline-any cline-neutral"> </span>
|
|
233
|
+
<span class="cline-any cline-neutral"> </span>
|
|
234
|
+
<span class="cline-any cline-neutral"> </span>
|
|
235
|
+
<span class="cline-any cline-neutral"> </span>
|
|
236
|
+
<span class="cline-any cline-yes">111x</span>
|
|
132
237
|
<span class="cline-any cline-neutral"> </span>
|
|
133
238
|
<span class="cline-any cline-yes">8x</span>
|
|
134
239
|
<span class="cline-any cline-neutral"> </span>
|
|
135
240
|
<span class="cline-any cline-neutral"> </span>
|
|
136
|
-
<span class="cline-any cline-yes">
|
|
241
|
+
<span class="cline-any cline-yes">73x</span>
|
|
137
242
|
<span class="cline-any cline-neutral"> </span>
|
|
138
243
|
<span class="cline-any cline-neutral"> </span>
|
|
139
244
|
<span class="cline-any cline-yes">29x</span>
|
|
@@ -144,43 +249,122 @@
|
|
|
144
249
|
<span class="cline-any cline-neutral"> </span>
|
|
145
250
|
<span class="cline-any cline-neutral"> </span>
|
|
146
251
|
<span class="cline-any cline-neutral"> </span>
|
|
147
|
-
<span class="cline-any cline-yes">100x</span>
|
|
148
|
-
<span class="cline-any cline-yes">99x</span>
|
|
149
252
|
<span class="cline-any cline-neutral"> </span>
|
|
150
253
|
<span class="cline-any cline-neutral"> </span>
|
|
151
254
|
<span class="cline-any cline-neutral"> </span>
|
|
152
|
-
<span class="cline-any cline-
|
|
255
|
+
<span class="cline-any cline-neutral"> </span>
|
|
256
|
+
<span class="cline-any cline-neutral"> </span>
|
|
257
|
+
<span class="cline-any cline-neutral"> </span>
|
|
258
|
+
<span class="cline-any cline-neutral"> </span>
|
|
259
|
+
<span class="cline-any cline-neutral"> </span>
|
|
260
|
+
<span class="cline-any cline-neutral"> </span>
|
|
261
|
+
<span class="cline-any cline-neutral"> </span>
|
|
262
|
+
<span class="cline-any cline-neutral"> </span>
|
|
263
|
+
<span class="cline-any cline-neutral"> </span>
|
|
264
|
+
<span class="cline-any cline-neutral"> </span>
|
|
265
|
+
<span class="cline-any cline-yes">108x</span>
|
|
266
|
+
<span class="cline-any cline-yes">107x</span>
|
|
267
|
+
<span class="cline-any cline-neutral"> </span>
|
|
268
|
+
<span class="cline-any cline-neutral"> </span>
|
|
269
|
+
<span class="cline-any cline-neutral"> </span>
|
|
270
|
+
<span class="cline-any cline-neutral"> </span>
|
|
271
|
+
<span class="cline-any cline-neutral"> </span>
|
|
272
|
+
<span class="cline-any cline-neutral"> </span>
|
|
273
|
+
<span class="cline-any cline-neutral"> </span>
|
|
274
|
+
<span class="cline-any cline-neutral"> </span>
|
|
275
|
+
<span class="cline-any cline-neutral"> </span>
|
|
276
|
+
<span class="cline-any cline-neutral"> </span>
|
|
277
|
+
<span class="cline-any cline-neutral"> </span>
|
|
278
|
+
<span class="cline-any cline-neutral"> </span>
|
|
279
|
+
<span class="cline-any cline-neutral"> </span>
|
|
280
|
+
<span class="cline-any cline-neutral"> </span>
|
|
281
|
+
<span class="cline-any cline-yes">909x</span>
|
|
153
282
|
<span class="cline-any cline-yes">18x</span>
|
|
154
283
|
<span class="cline-any cline-neutral"> </span>
|
|
155
284
|
<span class="cline-any cline-neutral"> </span>
|
|
156
|
-
<span class="cline-any cline-yes">
|
|
285
|
+
<span class="cline-any cline-yes">891x</span>
|
|
286
|
+
<span class="cline-any cline-neutral"> </span>
|
|
287
|
+
<span class="cline-any cline-neutral"> </span>
|
|
288
|
+
<span class="cline-any cline-neutral"> </span>
|
|
289
|
+
<span class="cline-any cline-neutral"> </span>
|
|
290
|
+
<span class="cline-any cline-neutral"> </span>
|
|
291
|
+
<span class="cline-any cline-neutral"> </span>
|
|
292
|
+
<span class="cline-any cline-neutral"> </span>
|
|
293
|
+
<span class="cline-any cline-neutral"> </span>
|
|
294
|
+
<span class="cline-any cline-neutral"> </span>
|
|
295
|
+
<span class="cline-any cline-neutral"> </span>
|
|
296
|
+
<span class="cline-any cline-neutral"> </span>
|
|
297
|
+
<span class="cline-any cline-yes">8x</span>
|
|
298
|
+
<span class="cline-any cline-neutral"> </span>
|
|
299
|
+
<span class="cline-any cline-neutral"> </span>
|
|
300
|
+
<span class="cline-any cline-neutral"> </span>
|
|
301
|
+
<span class="cline-any cline-neutral"> </span>
|
|
157
302
|
<span class="cline-any cline-neutral"> </span>
|
|
158
303
|
<span class="cline-any cline-neutral"> </span>
|
|
159
304
|
<span class="cline-any cline-neutral"> </span>
|
|
160
|
-
<span class="cline-any cline-yes">6x</span>
|
|
161
305
|
<span class="cline-any cline-neutral"> </span>
|
|
162
306
|
<span class="cline-any cline-neutral"> </span>
|
|
163
307
|
<span class="cline-any cline-neutral"> </span>
|
|
164
|
-
<span class="cline-any cline-yes">122x</span>
|
|
165
308
|
<span class="cline-any cline-neutral"> </span>
|
|
166
309
|
<span class="cline-any cline-neutral"> </span>
|
|
167
310
|
<span class="cline-any cline-neutral"> </span>
|
|
168
|
-
<span class="cline-any cline-yes">
|
|
311
|
+
<span class="cline-any cline-yes">130x</span>
|
|
312
|
+
<span class="cline-any cline-neutral"> </span>
|
|
313
|
+
<span class="cline-any cline-neutral"> </span>
|
|
314
|
+
<span class="cline-any cline-neutral"> </span>
|
|
315
|
+
<span class="cline-any cline-neutral"> </span>
|
|
316
|
+
<span class="cline-any cline-neutral"> </span>
|
|
169
317
|
<span class="cline-any cline-neutral"> </span>
|
|
170
318
|
<span class="cline-any cline-neutral"> </span>
|
|
171
319
|
<span class="cline-any cline-neutral"> </span>
|
|
172
|
-
<span class="cline-any cline-yes">121x</span>
|
|
173
320
|
<span class="cline-any cline-neutral"> </span>
|
|
174
321
|
<span class="cline-any cline-neutral"> </span>
|
|
175
322
|
<span class="cline-any cline-yes">9x</span>
|
|
176
|
-
<span class="cline-any cline-yes">257x</span>
|
|
177
|
-
<span class="cline-any cline-yes">257x</span>
|
|
178
|
-
<span class="cline-any cline-yes">257x</span>
|
|
179
323
|
<span class="cline-any cline-neutral"> </span>
|
|
180
324
|
<span class="cline-any cline-neutral"> </span>
|
|
181
325
|
<span class="cline-any cline-neutral"> </span>
|
|
182
|
-
<span class="cline-any cline-
|
|
183
|
-
<span class="cline-any cline-
|
|
326
|
+
<span class="cline-any cline-neutral"> </span>
|
|
327
|
+
<span class="cline-any cline-neutral"> </span>
|
|
328
|
+
<span class="cline-any cline-neutral"> </span>
|
|
329
|
+
<span class="cline-any cline-neutral"> </span>
|
|
330
|
+
<span class="cline-any cline-neutral"> </span>
|
|
331
|
+
<span class="cline-any cline-neutral"> </span>
|
|
332
|
+
<span class="cline-any cline-neutral"> </span>
|
|
333
|
+
<span class="cline-any cline-neutral"> </span>
|
|
334
|
+
<span class="cline-any cline-neutral"> </span>
|
|
335
|
+
<span class="cline-any cline-neutral"> </span>
|
|
336
|
+
<span class="cline-any cline-yes">129x</span>
|
|
337
|
+
<span class="cline-any cline-neutral"> </span>
|
|
338
|
+
<span class="cline-any cline-neutral"> </span>
|
|
339
|
+
<span class="cline-any cline-neutral"> </span>
|
|
340
|
+
<span class="cline-any cline-neutral"> </span>
|
|
341
|
+
<span class="cline-any cline-neutral"> </span>
|
|
342
|
+
<span class="cline-any cline-neutral"> </span>
|
|
343
|
+
<span class="cline-any cline-neutral"> </span>
|
|
344
|
+
<span class="cline-any cline-neutral"> </span>
|
|
345
|
+
<span class="cline-any cline-neutral"> </span>
|
|
346
|
+
<span class="cline-any cline-neutral"> </span>
|
|
347
|
+
<span class="cline-any cline-neutral"> </span>
|
|
348
|
+
<span class="cline-any cline-neutral"> </span>
|
|
349
|
+
<span class="cline-any cline-yes">9x</span>
|
|
350
|
+
<span class="cline-any cline-yes">273x</span>
|
|
351
|
+
<span class="cline-any cline-yes">273x</span>
|
|
352
|
+
<span class="cline-any cline-yes">273x</span>
|
|
353
|
+
<span class="cline-any cline-neutral"> </span>
|
|
354
|
+
<span class="cline-any cline-neutral"> </span>
|
|
355
|
+
<span class="cline-any cline-neutral"> </span>
|
|
356
|
+
<span class="cline-any cline-neutral"> </span>
|
|
357
|
+
<span class="cline-any cline-neutral"> </span>
|
|
358
|
+
<span class="cline-any cline-neutral"> </span>
|
|
359
|
+
<span class="cline-any cline-neutral"> </span>
|
|
360
|
+
<span class="cline-any cline-neutral"> </span>
|
|
361
|
+
<span class="cline-any cline-neutral"> </span>
|
|
362
|
+
<span class="cline-any cline-neutral"> </span>
|
|
363
|
+
<span class="cline-any cline-neutral"> </span>
|
|
364
|
+
<span class="cline-any cline-neutral"> </span>
|
|
365
|
+
<span class="cline-any cline-neutral"> </span>
|
|
366
|
+
<span class="cline-any cline-yes">200x</span>
|
|
367
|
+
<span class="cline-any cline-yes">200x</span>
|
|
184
368
|
<span class="cline-any cline-neutral"> </span>
|
|
185
369
|
<span class="cline-any cline-neutral"> </span>
|
|
186
370
|
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">import { BloodGlucoseUnit, BloodKetonesUnit, UserSettings } from "@hedia/types";
|
|
@@ -189,7 +373,20 @@ import { MGDL_PER_MMOLL_BGL, MGDL_PER_MMOLL_BKL } from "./Constants";
|
|
|
189
373
|
const InjectionMethod = UserSettings.Enums.InjectionMethod;
|
|
190
374
|
const { PenHalf, PenWhole, Pump } = InjectionMethod;
|
|
191
375
|
|
|
376
|
+
/** Helper functions used for displaying data to the user. */
|
|
192
377
|
export class Utils {
|
|
378
|
+
/**
|
|
379
|
+
* Get the inverse of the precision to an insulin amount should be rounded based on the user’s injection method.
|
|
380
|
+
*
|
|
381
|
+
* Steps:
|
|
382
|
+
* 1. Use a switch statement to return the appropriate number depending on the value of the method argument:
|
|
383
|
+
* - If PenWhole, return 1.
|
|
384
|
+
* - If PenHalf, return 2.
|
|
385
|
+
* - If Pump, return 10.
|
|
386
|
+
* - Otherwise throw an exception.
|
|
387
|
+
* @param method The method by which the user injects insulin.
|
|
388
|
+
* @returns The inverse of the precision to which an insulin amount should be rounded based on the user’s injection method.
|
|
389
|
+
*/
|
|
193
390
|
public static getRounding(method: UserSettings.Enums.InjectionMethod): number {
|
|
194
391
|
switch (method) {
|
|
195
392
|
case PenWhole:
|
|
@@ -206,11 +403,35 @@ export class Utils {
|
|
|
206
403
|
}
|
|
207
404
|
}
|
|
208
405
|
|
|
406
|
+
/**
|
|
407
|
+
* Round an insulin amount to the precision that is dictated by the user’s injection method.
|
|
408
|
+
*
|
|
409
|
+
* Steps:
|
|
410
|
+
* 1. Get the inverse rounding precision by calling getRounding() with injectMethod as argument.
|
|
411
|
+
* 2. Return the rounded insulin amount calculated by the following operations:
|
|
412
|
+
* - Multiply the insulin value prop by the inverse rounding precision.
|
|
413
|
+
* - Round to the nearest whole number.
|
|
414
|
+
* - Divide by the inverse rounding precision and return the result.
|
|
415
|
+
* @param value The amount of insulin to be rounded.
|
|
416
|
+
* @param injectMethod The method by which the user injects insulin.
|
|
417
|
+
* @returns The rounded insulin amount.
|
|
418
|
+
*/
|
|
209
419
|
public static roundValue(value: number, injectMethod: UserSettings.Enums.InjectionMethod): number {
|
|
210
420
|
const rounding: number = Utils.getRounding(injectMethod);
|
|
211
421
|
return Math.round(value * rounding) / rounding;
|
|
212
422
|
}
|
|
213
423
|
|
|
424
|
+
/**
|
|
425
|
+
* Determine whether a numerical value is in the given closed interval.
|
|
426
|
+
*
|
|
427
|
+
* Steps:
|
|
428
|
+
* 1. If value is null then return false. (Note that we only need to check explicitly for null comparing it
|
|
429
|
+
* to a number returns true while comparing undefined to a number returns false).
|
|
430
|
+
* 2. Evaluate whether value >= the interval argument’s min property && value <= the interval argument’s max property and return the result.
|
|
431
|
+
* @param value The number that will be checked for membership of the interval.
|
|
432
|
+
* @param interval The interval to compare the value to.
|
|
433
|
+
* @returns Boolean value indicating whether the value is in the closed interval.
|
|
434
|
+
*/
|
|
214
435
|
public static isInRange(value: number | null, interval: IInterval): boolean {
|
|
215
436
|
if (value === null) {
|
|
216
437
|
return false;
|
|
@@ -219,28 +440,83 @@ export class Utils {
|
|
|
219
440
|
return value >= interval.min && value <= interval.max;
|
|
220
441
|
}
|
|
221
442
|
|
|
443
|
+
/**
|
|
444
|
+
* Convert a blood glucose level value from mmol/L to mg/dL.
|
|
445
|
+
*
|
|
446
|
+
* Steps:
|
|
447
|
+
* 1. Return the result of rounding the product of multiplying value with MGDL_PER_MMOLL_BGL.
|
|
448
|
+
* @param value The blood glucose level value in mmol/L to be converted.
|
|
449
|
+
* @returns The blood glucose value in mg/dL that corresponds to the given value in mmol/L.
|
|
450
|
+
*/
|
|
222
451
|
public static convertBGLToMGDL(value: number): number {
|
|
223
452
|
return Math.round(value * MGDL_PER_MMOLL_BGL);
|
|
224
453
|
}
|
|
225
454
|
|
|
455
|
+
/**
|
|
456
|
+
* Depending on the blood glucose unit passed, returns the value as a string or returns a stringified call to the convertBGLToMGDL method.
|
|
457
|
+
*
|
|
458
|
+
* Steps:
|
|
459
|
+
* 1. Using a ternary operator on the unit argument return the passed value argument in case unit is a MMOL_L.
|
|
460
|
+
* Otherwise, return a call to the convertBGLToMGDL method with the value passed as an argument.
|
|
461
|
+
* @param value The blood glucose level value in mmol/L to be converted.
|
|
462
|
+
* @param unit The blood glucose measurement unit.
|
|
463
|
+
* @returns The blood glucose value that will be displayed to the user.
|
|
464
|
+
*/
|
|
226
465
|
public static displayedBGLValue(value: number, unit: BloodGlucoseUnit): string {
|
|
227
|
-
return unit === BloodGlucoseUnit.MMOL_L ?
|
|
466
|
+
return unit === BloodGlucoseUnit.MMOL_L ? value.toFixed(1) : `${Utils.convertBGLToMGDL(value)}`;
|
|
228
467
|
}
|
|
229
468
|
|
|
469
|
+
/**
|
|
470
|
+
* Convert a blood ketones concentration from mmol/L to mg/dL.
|
|
471
|
+
* Steps:
|
|
472
|
+
* 1. Return the result of rounding the product of multiplying value with MGDL_PER_MMOLL_BKL.
|
|
473
|
+
* @param value The blood ketones concentration in mmol/L to be converted.
|
|
474
|
+
* @returns The blood ketones concentration in mg/dL that corresponds to the given value in mmol/L.
|
|
475
|
+
*/
|
|
230
476
|
public static convertBKLToMGDL(value: number): number {
|
|
231
477
|
return Math.round(value * MGDL_PER_MMOLL_BKL);
|
|
232
478
|
}
|
|
233
479
|
|
|
480
|
+
/**
|
|
481
|
+
* Depending on the blood ketone unit passed, returns the value as a string or returns a call to the convertBKLToMGDL method.
|
|
482
|
+
*
|
|
483
|
+
* Steps:
|
|
484
|
+
* 1. Using a ternary operator on the unit argument return the passed value argument in case unit is a MMOL_L.
|
|
485
|
+
* Otherwise, return a call to the convertBKLToMGDL method with the value passed as an argument.
|
|
486
|
+
* @param value The blood ketone level value in mmol/L to be converted.
|
|
487
|
+
* @param unit The blood ketone measurement unit.
|
|
488
|
+
* @returns The blood ketone value that will be displayed to the user.
|
|
489
|
+
*/
|
|
234
490
|
public static displayedBKLValue(value: number, unit: BloodKetonesUnit): string {
|
|
235
|
-
return unit === BloodKetonesUnit.MMOL_L ?
|
|
491
|
+
return unit === BloodKetonesUnit.MMOL_L ? value.toFixed(1) : `${Utils.convertBKLToMGDL(value)}`;
|
|
236
492
|
}
|
|
237
493
|
|
|
494
|
+
/**
|
|
495
|
+
* Format a measurement unit for displaying to the user. More concrete, it is used to display the litre symbol with uppercase "L".
|
|
496
|
+
*
|
|
497
|
+
* Steps:
|
|
498
|
+
* 1. Set unitWithoutLastLetter to be unit except for the last character.
|
|
499
|
+
* 2. Set lastLetterUppercase to be the last letter of unit converted to uppercase.
|
|
500
|
+
* 3. Return unitWithoutLastLetter concatenated with lastLetterUppercase.
|
|
501
|
+
* @param unit The measurement unit to format.
|
|
502
|
+
* @returns The measurement unit formatted for displaying to the user.
|
|
503
|
+
*/
|
|
238
504
|
public static formatUnit = (unit: BloodGlucoseUnit | BloodKetonesUnit): string => {
|
|
239
505
|
const unitWithoutLastLetter = unit.substring(0, unit.length - 1);
|
|
240
506
|
const lastLetterUppercase = unit.substring(unit.length - 1, unit.length).toUpperCase();
|
|
241
507
|
return `${unitWithoutLastLetter}${lastLetterUppercase}`;
|
|
242
508
|
};
|
|
243
509
|
|
|
510
|
+
/**
|
|
511
|
+
* Returns the key of key/value object when passing the key value as argument.
|
|
512
|
+
*
|
|
513
|
+
* Steps:
|
|
514
|
+
* 1. Save all the values of the keys object into the values constant
|
|
515
|
+
* 2. From the array of keys, return the one at the index of the first occurence of the value in the values constant
|
|
516
|
+
* @param keys The keys of the T object.
|
|
517
|
+
* @param value The value for the requested key.
|
|
518
|
+
* @returns The key of the passed value.
|
|
519
|
+
*/
|
|
244
520
|
public static getKeyFromValue<T>(keys: T, value: T[keyof T]): keyof T {
|
|
245
521
|
const values = Object.values(keys);
|
|
246
522
|
return Object.keys(keys)[values.indexOf(value)] as keyof T;
|
|
@@ -253,7 +529,7 @@ export class Utils {
|
|
|
253
529
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
254
530
|
Code coverage generated by
|
|
255
531
|
<a href="https://istanbul.js.org/" target="_blank">istanbul</a>
|
|
256
|
-
at
|
|
532
|
+
at Thu Jul 29 2021 07:55:43 GMT+0000 (Coordinated Universal Time)
|
|
257
533
|
</div>
|
|
258
534
|
</div>
|
|
259
535
|
<script src="../../prettify.js"></script>
|