@hedia/recommendation-screen 2.1.15 → 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 +586 -588
- package/coverage/coverage-final.json +27 -27
- package/coverage/lcov-report/index.html +7 -7
- package/coverage/lcov-report/src/RecommendationScreen.tsx.html +979 -10
- package/coverage/lcov-report/src/__tests__/index.html +1 -1
- package/coverage/lcov-report/src/__tests__/utils.tsx.html +29 -8
- package/coverage/lcov-report/src/components/Header.tsx.html +13 -4
- package/coverage/lcov-report/src/components/InfoBars.tsx.html +86 -2
- package/coverage/lcov-report/src/components/InvisibleNumberInput.tsx.html +196 -4
- package/coverage/lcov-report/src/components/LimitationMessage.tsx.html +20 -2
- package/coverage/lcov-report/src/components/LineSeparator.tsx.html +12 -3
- package/coverage/lcov-report/src/components/RecentInsulin.tsx.html +30 -3
- package/coverage/lcov-report/src/components/RecommendationModal.tsx.html +184 -4
- package/coverage/lcov-report/src/components/RecommendedCarbs.tsx.html +205 -7
- package/coverage/lcov-report/src/components/RecommendedInsulin.tsx.html +187 -19
- package/coverage/lcov-report/src/components/Remeasure.tsx.html +114 -3
- package/coverage/lcov-report/src/components/TransferToLogbook.tsx.html +67 -4
- 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 +78 -3
- package/coverage/lcov-report/src/components/mood/MoodIcon.tsx.html +80 -5
- 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 +41 -2
- package/coverage/lcov-report/src/locale/index.html +1 -1
- package/coverage/lcov-report/src/utils/AttentionMessages.tsx.html +231 -3
- 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 +306 -9
- package/coverage/lcov-report/src/utils/Translations.ts.html +27 -3
- package/coverage/lcov-report/src/utils/Utils.ts.html +278 -2
- package/coverage/lcov-report/src/utils/Validations.ts.html +716 -14
- package/coverage/lcov-report/src/utils/index.html +1 -1
- package/coverage/lcov.info +1158 -1164
- 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 +1 -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 +92 -0
- package/src/utils/Validations.d.ts +232 -9
- package/src/utils/Validations.js +225 -2
- package/typedoc.json +13 -0
|
@@ -186,7 +186,131 @@
|
|
|
186
186
|
<a name='L127'></a><a href='#L127'>127</a>
|
|
187
187
|
<a name='L128'></a><a href='#L128'>128</a>
|
|
188
188
|
<a name='L129'></a><a href='#L129'>129</a>
|
|
189
|
-
<a name='L130'></a><a href='#L130'>130</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>
|
|
216
|
+
<a name='L157'></a><a href='#L157'>157</a>
|
|
217
|
+
<a name='L158'></a><a href='#L158'>158</a>
|
|
218
|
+
<a name='L159'></a><a href='#L159'>159</a>
|
|
219
|
+
<a name='L160'></a><a href='#L160'>160</a>
|
|
220
|
+
<a name='L161'></a><a href='#L161'>161</a>
|
|
221
|
+
<a name='L162'></a><a href='#L162'>162</a>
|
|
222
|
+
<a name='L163'></a><a href='#L163'>163</a>
|
|
223
|
+
<a name='L164'></a><a href='#L164'>164</a>
|
|
224
|
+
<a name='L165'></a><a href='#L165'>165</a>
|
|
225
|
+
<a name='L166'></a><a href='#L166'>166</a>
|
|
226
|
+
<a name='L167'></a><a href='#L167'>167</a>
|
|
227
|
+
<a name='L168'></a><a href='#L168'>168</a>
|
|
228
|
+
<a name='L169'></a><a href='#L169'>169</a>
|
|
229
|
+
<a name='L170'></a><a href='#L170'>170</a>
|
|
230
|
+
<a name='L171'></a><a href='#L171'>171</a>
|
|
231
|
+
<a name='L172'></a><a href='#L172'>172</a>
|
|
232
|
+
<a name='L173'></a><a href='#L173'>173</a>
|
|
233
|
+
<a name='L174'></a><a href='#L174'>174</a>
|
|
234
|
+
<a name='L175'></a><a href='#L175'>175</a>
|
|
235
|
+
<a name='L176'></a><a href='#L176'>176</a>
|
|
236
|
+
<a name='L177'></a><a href='#L177'>177</a>
|
|
237
|
+
<a name='L178'></a><a href='#L178'>178</a>
|
|
238
|
+
<a name='L179'></a><a href='#L179'>179</a>
|
|
239
|
+
<a name='L180'></a><a href='#L180'>180</a>
|
|
240
|
+
<a name='L181'></a><a href='#L181'>181</a>
|
|
241
|
+
<a name='L182'></a><a href='#L182'>182</a>
|
|
242
|
+
<a name='L183'></a><a href='#L183'>183</a>
|
|
243
|
+
<a name='L184'></a><a href='#L184'>184</a>
|
|
244
|
+
<a name='L185'></a><a href='#L185'>185</a>
|
|
245
|
+
<a name='L186'></a><a href='#L186'>186</a>
|
|
246
|
+
<a name='L187'></a><a href='#L187'>187</a>
|
|
247
|
+
<a name='L188'></a><a href='#L188'>188</a>
|
|
248
|
+
<a name='L189'></a><a href='#L189'>189</a>
|
|
249
|
+
<a name='L190'></a><a href='#L190'>190</a>
|
|
250
|
+
<a name='L191'></a><a href='#L191'>191</a>
|
|
251
|
+
<a name='L192'></a><a href='#L192'>192</a>
|
|
252
|
+
<a name='L193'></a><a href='#L193'>193</a>
|
|
253
|
+
<a name='L194'></a><a href='#L194'>194</a>
|
|
254
|
+
<a name='L195'></a><a href='#L195'>195</a>
|
|
255
|
+
<a name='L196'></a><a href='#L196'>196</a>
|
|
256
|
+
<a name='L197'></a><a href='#L197'>197</a>
|
|
257
|
+
<a name='L198'></a><a href='#L198'>198</a>
|
|
258
|
+
<a name='L199'></a><a href='#L199'>199</a>
|
|
259
|
+
<a name='L200'></a><a href='#L200'>200</a>
|
|
260
|
+
<a name='L201'></a><a href='#L201'>201</a>
|
|
261
|
+
<a name='L202'></a><a href='#L202'>202</a>
|
|
262
|
+
<a name='L203'></a><a href='#L203'>203</a>
|
|
263
|
+
<a name='L204'></a><a href='#L204'>204</a>
|
|
264
|
+
<a name='L205'></a><a href='#L205'>205</a>
|
|
265
|
+
<a name='L206'></a><a href='#L206'>206</a>
|
|
266
|
+
<a name='L207'></a><a href='#L207'>207</a>
|
|
267
|
+
<a name='L208'></a><a href='#L208'>208</a>
|
|
268
|
+
<a name='L209'></a><a href='#L209'>209</a>
|
|
269
|
+
<a name='L210'></a><a href='#L210'>210</a>
|
|
270
|
+
<a name='L211'></a><a href='#L211'>211</a>
|
|
271
|
+
<a name='L212'></a><a href='#L212'>212</a>
|
|
272
|
+
<a name='L213'></a><a href='#L213'>213</a>
|
|
273
|
+
<a name='L214'></a><a href='#L214'>214</a>
|
|
274
|
+
<a name='L215'></a><a href='#L215'>215</a>
|
|
275
|
+
<a name='L216'></a><a href='#L216'>216</a>
|
|
276
|
+
<a name='L217'></a><a href='#L217'>217</a>
|
|
277
|
+
<a name='L218'></a><a href='#L218'>218</a>
|
|
278
|
+
<a name='L219'></a><a href='#L219'>219</a>
|
|
279
|
+
<a name='L220'></a><a href='#L220'>220</a>
|
|
280
|
+
<a name='L221'></a><a href='#L221'>221</a>
|
|
281
|
+
<a name='L222'></a><a href='#L222'>222</a>
|
|
282
|
+
<a name='L223'></a><a href='#L223'>223</a>
|
|
283
|
+
<a name='L224'></a><a href='#L224'>224</a>
|
|
284
|
+
<a name='L225'></a><a href='#L225'>225</a>
|
|
285
|
+
<a name='L226'></a><a href='#L226'>226</a>
|
|
286
|
+
<a name='L227'></a><a href='#L227'>227</a>
|
|
287
|
+
<a name='L228'></a><a href='#L228'>228</a>
|
|
288
|
+
<a name='L229'></a><a href='#L229'>229</a></td><td class="line-coverage quiet"><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-neutral"> </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>
|
|
302
|
+
<span class="cline-any cline-neutral"> </span>
|
|
303
|
+
<span class="cline-any cline-neutral"> </span>
|
|
304
|
+
<span class="cline-any cline-neutral"> </span>
|
|
305
|
+
<span class="cline-any cline-neutral"> </span>
|
|
306
|
+
<span class="cline-any cline-neutral"> </span>
|
|
307
|
+
<span class="cline-any cline-neutral"> </span>
|
|
308
|
+
<span class="cline-any cline-neutral"> </span>
|
|
309
|
+
<span class="cline-any cline-neutral"> </span>
|
|
310
|
+
<span class="cline-any cline-neutral"> </span>
|
|
311
|
+
<span class="cline-any cline-neutral"> </span>
|
|
312
|
+
<span class="cline-any cline-neutral"> </span>
|
|
313
|
+
<span class="cline-any cline-neutral"> </span>
|
|
190
314
|
<span class="cline-any cline-neutral"> </span>
|
|
191
315
|
<span class="cline-any cline-neutral"> </span>
|
|
192
316
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -235,6 +359,24 @@
|
|
|
235
359
|
<span class="cline-any cline-neutral"> </span>
|
|
236
360
|
<span class="cline-any cline-neutral"> </span>
|
|
237
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-neutral"> </span>
|
|
367
|
+
<span class="cline-any cline-neutral"> </span>
|
|
368
|
+
<span class="cline-any cline-neutral"> </span>
|
|
369
|
+
<span class="cline-any cline-neutral"> </span>
|
|
370
|
+
<span class="cline-any cline-neutral"> </span>
|
|
371
|
+
<span class="cline-any cline-neutral"> </span>
|
|
372
|
+
<span class="cline-any cline-neutral"> </span>
|
|
373
|
+
<span class="cline-any cline-neutral"> </span>
|
|
374
|
+
<span class="cline-any cline-neutral"> </span>
|
|
375
|
+
<span class="cline-any cline-neutral"> </span>
|
|
376
|
+
<span class="cline-any cline-neutral"> </span>
|
|
377
|
+
<span class="cline-any cline-neutral"> </span>
|
|
378
|
+
<span class="cline-any cline-neutral"> </span>
|
|
379
|
+
<span class="cline-any cline-neutral"> </span>
|
|
238
380
|
<span class="cline-any cline-yes">112x</span>
|
|
239
381
|
<span class="cline-any cline-yes">112x</span>
|
|
240
382
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -260,6 +402,33 @@
|
|
|
260
402
|
<span class="cline-any cline-neutral"> </span>
|
|
261
403
|
<span class="cline-any cline-neutral"> </span>
|
|
262
404
|
<span class="cline-any cline-neutral"> </span>
|
|
405
|
+
<span class="cline-any cline-neutral"> </span>
|
|
406
|
+
<span class="cline-any cline-neutral"> </span>
|
|
407
|
+
<span class="cline-any cline-neutral"> </span>
|
|
408
|
+
<span class="cline-any cline-neutral"> </span>
|
|
409
|
+
<span class="cline-any cline-neutral"> </span>
|
|
410
|
+
<span class="cline-any cline-neutral"> </span>
|
|
411
|
+
<span class="cline-any cline-neutral"> </span>
|
|
412
|
+
<span class="cline-any cline-neutral"> </span>
|
|
413
|
+
<span class="cline-any cline-neutral"> </span>
|
|
414
|
+
<span class="cline-any cline-neutral"> </span>
|
|
415
|
+
<span class="cline-any cline-neutral"> </span>
|
|
416
|
+
<span class="cline-any cline-neutral"> </span>
|
|
417
|
+
<span class="cline-any cline-neutral"> </span>
|
|
418
|
+
<span class="cline-any cline-neutral"> </span>
|
|
419
|
+
<span class="cline-any cline-neutral"> </span>
|
|
420
|
+
<span class="cline-any cline-neutral"> </span>
|
|
421
|
+
<span class="cline-any cline-neutral"> </span>
|
|
422
|
+
<span class="cline-any cline-neutral"> </span>
|
|
423
|
+
<span class="cline-any cline-neutral"> </span>
|
|
424
|
+
<span class="cline-any cline-neutral"> </span>
|
|
425
|
+
<span class="cline-any cline-neutral"> </span>
|
|
426
|
+
<span class="cline-any cline-neutral"> </span>
|
|
427
|
+
<span class="cline-any cline-neutral"> </span>
|
|
428
|
+
<span class="cline-any cline-neutral"> </span>
|
|
429
|
+
<span class="cline-any cline-neutral"> </span>
|
|
430
|
+
<span class="cline-any cline-neutral"> </span>
|
|
431
|
+
<span class="cline-any cline-neutral"> </span>
|
|
263
432
|
<span class="cline-any cline-yes">200x</span>
|
|
264
433
|
<span class="cline-any cline-yes">200x</span>
|
|
265
434
|
<span class="cline-any cline-yes">200x</span>
|
|
@@ -292,6 +461,15 @@
|
|
|
292
461
|
<span class="cline-any cline-neutral"> </span>
|
|
293
462
|
<span class="cline-any cline-neutral"> </span>
|
|
294
463
|
<span class="cline-any cline-neutral"> </span>
|
|
464
|
+
<span class="cline-any cline-neutral"> </span>
|
|
465
|
+
<span class="cline-any cline-neutral"> </span>
|
|
466
|
+
<span class="cline-any cline-neutral"> </span>
|
|
467
|
+
<span class="cline-any cline-neutral"> </span>
|
|
468
|
+
<span class="cline-any cline-neutral"> </span>
|
|
469
|
+
<span class="cline-any cline-neutral"> </span>
|
|
470
|
+
<span class="cline-any cline-neutral"> </span>
|
|
471
|
+
<span class="cline-any cline-neutral"> </span>
|
|
472
|
+
<span class="cline-any cline-neutral"> </span>
|
|
295
473
|
<span class="cline-any cline-yes">15x</span>
|
|
296
474
|
<span class="cline-any cline-yes">13x</span>
|
|
297
475
|
<span class="cline-any cline-yes">13x</span>
|
|
@@ -303,6 +481,15 @@
|
|
|
303
481
|
<span class="cline-any cline-neutral"> </span>
|
|
304
482
|
<span class="cline-any cline-neutral"> </span>
|
|
305
483
|
<span class="cline-any cline-neutral"> </span>
|
|
484
|
+
<span class="cline-any cline-neutral"> </span>
|
|
485
|
+
<span class="cline-any cline-neutral"> </span>
|
|
486
|
+
<span class="cline-any cline-neutral"> </span>
|
|
487
|
+
<span class="cline-any cline-neutral"> </span>
|
|
488
|
+
<span class="cline-any cline-neutral"> </span>
|
|
489
|
+
<span class="cline-any cline-neutral"> </span>
|
|
490
|
+
<span class="cline-any cline-neutral"> </span>
|
|
491
|
+
<span class="cline-any cline-neutral"> </span>
|
|
492
|
+
<span class="cline-any cline-neutral"> </span>
|
|
306
493
|
<span class="cline-any cline-yes">217x</span>
|
|
307
494
|
<span class="cline-any cline-yes">217x</span>
|
|
308
495
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -310,20 +497,56 @@
|
|
|
310
497
|
<span class="cline-any cline-neutral"> </span>
|
|
311
498
|
<span class="cline-any cline-neutral"> </span>
|
|
312
499
|
<span class="cline-any cline-neutral"> </span>
|
|
500
|
+
<span class="cline-any cline-neutral"> </span>
|
|
501
|
+
<span class="cline-any cline-neutral"> </span>
|
|
502
|
+
<span class="cline-any cline-neutral"> </span>
|
|
503
|
+
<span class="cline-any cline-neutral"> </span>
|
|
504
|
+
<span class="cline-any cline-neutral"> </span>
|
|
505
|
+
<span class="cline-any cline-neutral"> </span>
|
|
506
|
+
<span class="cline-any cline-neutral"> </span>
|
|
507
|
+
<span class="cline-any cline-neutral"> </span>
|
|
508
|
+
<span class="cline-any cline-neutral"> </span>
|
|
509
|
+
<span class="cline-any cline-neutral"> </span>
|
|
510
|
+
<span class="cline-any cline-neutral"> </span>
|
|
313
511
|
<span class="cline-any cline-yes">135x</span>
|
|
314
512
|
<span class="cline-any cline-neutral"> </span>
|
|
315
513
|
<span class="cline-any cline-neutral"> </span>
|
|
316
514
|
<span class="cline-any cline-yes">135x</span>
|
|
317
515
|
<span class="cline-any cline-neutral"> </span>
|
|
318
|
-
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js"
|
|
516
|
+
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">/**
|
|
517
|
+
* Helper functions for processing and categorising user inputs for determining which warnings and messages to display.
|
|
518
|
+
* @module
|
|
519
|
+
*/
|
|
520
|
+
|
|
521
|
+
import { BolusCalculator, Logbook } from "@hedia/types";
|
|
522
|
+
import moment from "moment";
|
|
319
523
|
import { BgLevel, RecommendationReminders } from "../types/enum";
|
|
320
|
-
import { IActivityParams, logbookEntry } from "../types/types";
|
|
321
524
|
import { addPostponeActivityMessageUnder5MMOL, AttentionMessage, Messages } from "./AttentionMessages";
|
|
322
525
|
import { SEVERE_HYPERGLYCEMIA_START_MMOL } from "./Constants";
|
|
323
526
|
import { CurrentBGLError } from "./RecommendationError";
|
|
324
527
|
import { Utils } from "./Utils";
|
|
325
528
|
|
|
326
|
-
|
|
529
|
+
/**
|
|
530
|
+
* Determine the category of the blood glucose level based on the numerical value of the BGL itself and potentially the most recent previously entered BGL.
|
|
531
|
+
*
|
|
532
|
+
* Steps:
|
|
533
|
+
* 1. If currentBGL is null return BgLevel.BGLevelNotProvided.
|
|
534
|
+
* 2. If currentBGL is in the interval [1.1; 2] return BgLevel.SevereHypoglycemia.
|
|
535
|
+
* 3. If currentBGL is in the interval ]2; 3.5] return BgLevel.Hypoglycemia.
|
|
536
|
+
* 4. If currentBGL is in the interval ]3.5; 4] return BgLevel.MildHypoglycemia.
|
|
537
|
+
* 5. If currentBGL is in the interval ]4; 5[ return BgLevel.NormoglycemiaUnder5MMOL.
|
|
538
|
+
* 6. If currentBGL is in the interval [5; 7] return BgLevel.Normoglycemia.
|
|
539
|
+
* 7. If currentBGL is in the interval ]7; 15[ return BgLevel.MildHyperglycemia.
|
|
540
|
+
* 8. If currentBGL is in the interval ]15; 33.3] and calling isSevereHyperglycemia() with latestLogbookFrom6Hours returns true then return BgLevel.SevereHyperglycemia.
|
|
541
|
+
* 9. If currentBGL is in the interval [15; 33.3] return BgLevel.Hyperglycemia.
|
|
542
|
+
* @param currentBGL The blood glucose level entered by the user or null if they didn’t enter it.
|
|
543
|
+
* @param latestLogbookFrom6Hours The latest saved logbook entry if one was logged within the last 6 hours. Otherwise null.
|
|
544
|
+
* @returns Indication of the category that the blood glucose level belongs to {@link BgLevel}.
|
|
545
|
+
*/
|
|
546
|
+
export function getBGLevel(
|
|
547
|
+
currentBGL: number | null,
|
|
548
|
+
latestLogbookFrom6Hours: Logbook.Types.ILogbookEntry | null,
|
|
549
|
+
): BgLevel {
|
|
327
550
|
if (currentBGL === null) {
|
|
328
551
|
return BgLevel.BGLevelNotProvided;
|
|
329
552
|
}
|
|
@@ -358,11 +581,29 @@ export function getBGLevel(currentBGL: number | null, latestLogbookFrom6Hours: l
|
|
|
358
581
|
return BgLevel.UnsupportedBGLevel;
|
|
359
582
|
}
|
|
360
583
|
|
|
584
|
+
/**
|
|
585
|
+
* Calculate the initial value for the calibration reminder time slider.
|
|
586
|
+
*
|
|
587
|
+
* Steps:
|
|
588
|
+
* 1. Set reminder to be the user’s preferred reminder time if it is defined or to the default reminder time of 1.5 (hours) otherwise.
|
|
589
|
+
* 2. Use a switch statement on {@link BgLevel} to determine the appropriate reminder value to return:
|
|
590
|
+
* - If it is SevereHypoglycemia, Hypoglycemia, or MildHypoglycemia then return Reminder15Minutes.
|
|
591
|
+
* - If it is NormoglycemiaUnder5MMOL, Normoglycemia, MildHyperglycemia, or BGLevelNotProvided then return the value of reminder
|
|
592
|
+
* if the user entered carbohydrates or an activity, or ReminderOff otherwise.
|
|
593
|
+
* - If it is Hyperglycemia, or SevereHyperglycemia then return Reminder15Minutes if isActivityWithin15Minutes() given the activity
|
|
594
|
+
* is true and return Reminder60Minutes otherwise.
|
|
595
|
+
* - If none of the above conditions were triggered, throw a CurrentBGLError().
|
|
596
|
+
* @param bgLevel The severity category that the user’s current BGL belongs to.
|
|
597
|
+
* @param carbohydrates The amount of carbohydrates that the user is ingesting.
|
|
598
|
+
* @param userReminder The user’s preferred initial reminder time interval in hours.
|
|
599
|
+
* @param activity The activity that the user entered.
|
|
600
|
+
* @returns The initial value of the remeasurement reminder timer slider in hours {@link RecommendationReminders}.
|
|
601
|
+
*/
|
|
361
602
|
export function getReminder(
|
|
362
603
|
bgLevel: BgLevel,
|
|
363
604
|
carbohydrates: number,
|
|
364
605
|
userReminder: number,
|
|
365
|
-
activity: IActivityParams | null,
|
|
606
|
+
activity: BolusCalculator.Types.IActivityParams | null,
|
|
366
607
|
): number {
|
|
367
608
|
const reminder = userReminder === undefined ? RecommendationReminders.HediaReminderDefault : userReminder;
|
|
368
609
|
switch (bgLevel) {
|
|
@@ -388,7 +629,34 @@ export function getReminder(
|
|
|
388
629
|
}
|
|
389
630
|
}
|
|
390
631
|
|
|
391
|
-
|
|
632
|
+
/**
|
|
633
|
+
* Get the attention message that fits with the user’s entered blood glucose level and activity.
|
|
634
|
+
*
|
|
635
|
+
* Steps:
|
|
636
|
+
* 1. Use at switch statement on bgLevel to determine the appropriate action to take:
|
|
637
|
+
* - If it is BGLevelNotProvided, Normoglycemia, or MildHyperglycemia then return null.
|
|
638
|
+
* - If it is NormoglycemiaUnder5MMOL then do the following:
|
|
639
|
+
* - If an activity is going to start within 15 minuts as determined by isActivityWithin15Minutes() then return AttentionMessage.NormoglycemiaActivityUnder5MMOL().
|
|
640
|
+
* Otherwise return null.
|
|
641
|
+
* - If it is SevereHypoglycemia, Hypoglycemia, or MildHypoglycemia then do the following:
|
|
642
|
+
* - If an activity is going to start within 15 minuts as determined by isActivityWithin15Minutes() then
|
|
643
|
+
* return the AttentionMessage that corresponds to the bgLevel and append a message about postponing the activity using addPostponeActivityMessage().
|
|
644
|
+
* Otherwise return the AttentionMessage that corresponds to the {@link BgLevel} without further modification.
|
|
645
|
+
* - If it is Hyperglycemia then do the following:
|
|
646
|
+
* - If an activity is going to start within 15 minuts as determined by isActivityWithin15Minutes() then return AttentionMessage.HyperglycemiaActivity().
|
|
647
|
+
* Otherwise return null.
|
|
648
|
+
* - If it is SevereHyperglycemia then do the following:
|
|
649
|
+
* - If an activity is going to start within 15 minuts as determined by isActivityWithin15Minutes() then return AttentionMessage.SevereHyperglycemiaActivity().
|
|
650
|
+
* Otherwise return AttentionMessage.SevereHyperglycemia().
|
|
651
|
+
* - If none of the above conditions were triggered, throw a CurrentBGLError() {@link RecommendationError}.
|
|
652
|
+
* @param bgLevel The category of the user’s blood glucose level.
|
|
653
|
+
* @param activity The activity that the user entered
|
|
654
|
+
* @returns The appropriate attention message {@link AttentionMessage} to display to the user or null if there is no message to be displayed.
|
|
655
|
+
*/
|
|
656
|
+
export function getAttentionMessage(
|
|
657
|
+
bgLevel: BgLevel,
|
|
658
|
+
activity: BolusCalculator.Types.IActivityParams | null,
|
|
659
|
+
): string | null {
|
|
392
660
|
const key = Utils.getKeyFromValue(BgLevel, bgLevel);
|
|
393
661
|
const isAttentionMessageNull = AttentionMessage[key] === null;
|
|
394
662
|
const isWithin15Minutes = isActivityWithin15Minutes(activity);
|
|
@@ -420,7 +688,16 @@ export function getAttentionMessage(bgLevel: BgLevel, activity: IActivityParams
|
|
|
420
688
|
}
|
|
421
689
|
}
|
|
422
690
|
|
|
423
|
-
|
|
691
|
+
/**
|
|
692
|
+
* Determine based on on the previously measured BGL if the hyperglycemia should be categorized as severe.
|
|
693
|
+
*
|
|
694
|
+
* Steps:
|
|
695
|
+
* 1. If the logbook is not null or undefined, return the result of comparing if the blood_glucose_millimolar property of latestLogbookFrom6Hours
|
|
696
|
+
* is strictly larger than the threshold for severe hyperglycemia (15) {@link Constants}.
|
|
697
|
+
* @param logbook The latest previous logbook entry - if any - from the past 6 hours.
|
|
698
|
+
* @returns True if the BGL from the previous logbook entry is above the threshold for severe hyperglycemia. False otherwise.
|
|
699
|
+
*/
|
|
700
|
+
export function isSevereHyperglycemia(logbook?: Logbook.Types.ILogbookEntry | null): boolean {
|
|
424
701
|
if (logbook !== null && logbook !== undefined) {
|
|
425
702
|
const { blood_glucose_millimolar } = logbook;
|
|
426
703
|
if (blood_glucose_millimolar !== null) {
|
|
@@ -431,13 +708,33 @@ export function isSevereHyperglycemia(logbook?: logbookEntry | null): boolean {
|
|
|
431
708
|
return false;
|
|
432
709
|
}
|
|
433
710
|
|
|
434
|
-
|
|
711
|
+
/**
|
|
712
|
+
* Determine whether an activity is either ongoing or is starting within 15 minutes from now.
|
|
713
|
+
*
|
|
714
|
+
* Steps:
|
|
715
|
+
* 1. Extract the duration from the activity.
|
|
716
|
+
* 2. Check if the start date of the activity was between duration minutes in the past or 15 minutes in the future and return the result.
|
|
717
|
+
* @param activity The activity whose start time should be checked.
|
|
718
|
+
* @returns Indication of whether the activity is ongoing or imminent.
|
|
719
|
+
*/
|
|
720
|
+
export function isActivityWithin15Minutes(activity: BolusCalculator.Types.IActivityParams | null): boolean {
|
|
435
721
|
const minutes = activity?.activityDuration;
|
|
436
722
|
return moment
|
|
437
723
|
.utc(activity?.activityDate)
|
|
438
724
|
.isBetween(moment.utc().subtract(minutes, `minutes`), moment.utc().add(15, `minutes`));
|
|
439
725
|
}
|
|
440
726
|
|
|
727
|
+
/**
|
|
728
|
+
* The appropriate message for informing the user if the insulin recommendation was limited.
|
|
729
|
+
*
|
|
730
|
+
* Steps:
|
|
731
|
+
* 1. Set message to the return value of RecommendationWasLimitedActivity() if activityReduction is truthy or to the return value of RecommendationWasLimited() otherwise.
|
|
732
|
+
* 2. Return message if wasLimited is true or undefined otherwise.
|
|
733
|
+
* @param wasLimited Indicator of whether or not the user’s insulin recommendation was limited.
|
|
734
|
+
* @param activityReduction The fraction by which the insulin recommendation and the safety insulin limit has been reduced due to physical activity.
|
|
735
|
+
* @returns Callable that returns the appropriate message {@link Messages} for informing the user about the limitation.
|
|
736
|
+
* If no limitation message should be displayed to the user then null is returned.
|
|
737
|
+
*/
|
|
441
738
|
export function getLimitationMessage(wasLimited: boolean, activityReduction: number | null): string | null {
|
|
442
739
|
const message = activityReduction
|
|
443
740
|
? Messages.RecommendationWasLimitedActivity(activityReduction)
|
|
@@ -451,7 +748,7 @@ export function getLimitationMessage(wasLimited: boolean, activityReduction: num
|
|
|
451
748
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
452
749
|
Code coverage generated by
|
|
453
750
|
<a href="https://istanbul.js.org/" target="_blank">istanbul</a>
|
|
454
|
-
at
|
|
751
|
+
at Thu Jul 29 2021 07:55:43 GMT+0000 (Coordinated Universal Time)
|
|
455
752
|
</div>
|
|
456
753
|
</div>
|
|
457
754
|
<script src="../../prettify.js"></script>
|
|
@@ -66,7 +66,23 @@
|
|
|
66
66
|
<a name='L7'></a><a href='#L7'>7</a>
|
|
67
67
|
<a name='L8'></a><a href='#L8'>8</a>
|
|
68
68
|
<a name='L9'></a><a href='#L9'>9</a>
|
|
69
|
-
<a name='L10'></a><a href='#L10'>10</a
|
|
69
|
+
<a name='L10'></a><a href='#L10'>10</a>
|
|
70
|
+
<a name='L11'></a><a href='#L11'>11</a>
|
|
71
|
+
<a name='L12'></a><a href='#L12'>12</a>
|
|
72
|
+
<a name='L13'></a><a href='#L13'>13</a>
|
|
73
|
+
<a name='L14'></a><a href='#L14'>14</a>
|
|
74
|
+
<a name='L15'></a><a href='#L15'>15</a>
|
|
75
|
+
<a name='L16'></a><a href='#L16'>16</a>
|
|
76
|
+
<a name='L17'></a><a href='#L17'>17</a>
|
|
77
|
+
<a name='L18'></a><a href='#L18'>18</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral"> </span>
|
|
78
|
+
<span class="cline-any cline-neutral"> </span>
|
|
79
|
+
<span class="cline-any cline-neutral"> </span>
|
|
80
|
+
<span class="cline-any cline-neutral"> </span>
|
|
81
|
+
<span class="cline-any cline-neutral"> </span>
|
|
82
|
+
<span class="cline-any cline-neutral"> </span>
|
|
83
|
+
<span class="cline-any cline-neutral"> </span>
|
|
84
|
+
<span class="cline-any cline-neutral"> </span>
|
|
85
|
+
<span class="cline-any cline-neutral"> </span>
|
|
70
86
|
<span class="cline-any cline-neutral"> </span>
|
|
71
87
|
<span class="cline-any cline-neutral"> </span>
|
|
72
88
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -75,10 +91,18 @@
|
|
|
75
91
|
<span class="cline-any cline-yes">21x</span>
|
|
76
92
|
<span class="cline-any cline-yes">5x</span>
|
|
77
93
|
<span class="cline-any cline-neutral"> </span>
|
|
78
|
-
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js"
|
|
94
|
+
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">/**
|
|
95
|
+
* Used for storing Record type objects that contains translations about certain settings that needs to be presented to the user.
|
|
96
|
+
* @module
|
|
97
|
+
*/
|
|
98
|
+
|
|
99
|
+
import { Activity } from "@hedia/types";
|
|
79
100
|
import { t } from "@lingui/macro";
|
|
80
101
|
import { i18n } from "../locale/i18nUtils";
|
|
81
102
|
|
|
103
|
+
/**
|
|
104
|
+
* Object used for storing the translations of a physical activity intensity in order to be presented to the user
|
|
105
|
+
*/
|
|
82
106
|
export const ActivityIntensityTranslations: Record<Activity.Enums.ActivityIntensity, () => string> = {
|
|
83
107
|
light: (): string => i18n._(t`Light`),
|
|
84
108
|
moderate: (): string => i18n._(t`Moderate`),
|
|
@@ -91,7 +115,7 @@ export const ActivityIntensityTranslations: Record<Activity.Enums.ActivityInt
|
|
|
91
115
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
92
116
|
Code coverage generated by
|
|
93
117
|
<a href="https://istanbul.js.org/" target="_blank">istanbul</a>
|
|
94
|
-
at
|
|
118
|
+
at Thu Jul 29 2021 07:55:43 GMT+0000 (Coordinated Universal Time)
|
|
95
119
|
</div>
|
|
96
120
|
</div>
|
|
97
121
|
<script src="../../prettify.js"></script>
|