@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.
Files changed (102) hide show
  1. package/coverage/clover.xml +588 -590
  2. package/coverage/coverage-final.json +27 -27
  3. package/coverage/lcov-report/index.html +7 -7
  4. package/coverage/lcov-report/src/RecommendationScreen.tsx.html +1039 -70
  5. package/coverage/lcov-report/src/__tests__/index.html +1 -1
  6. package/coverage/lcov-report/src/__tests__/utils.tsx.html +35 -14
  7. package/coverage/lcov-report/src/components/Header.tsx.html +14 -5
  8. package/coverage/lcov-report/src/components/InfoBars.tsx.html +97 -13
  9. package/coverage/lcov-report/src/components/InvisibleNumberInput.tsx.html +206 -14
  10. package/coverage/lcov-report/src/components/LimitationMessage.tsx.html +20 -2
  11. package/coverage/lcov-report/src/components/LineSeparator.tsx.html +13 -4
  12. package/coverage/lcov-report/src/components/RecentInsulin.tsx.html +30 -3
  13. package/coverage/lcov-report/src/components/RecommendationModal.tsx.html +200 -20
  14. package/coverage/lcov-report/src/components/RecommendedCarbs.tsx.html +218 -20
  15. package/coverage/lcov-report/src/components/RecommendedInsulin.tsx.html +195 -27
  16. package/coverage/lcov-report/src/components/Remeasure.tsx.html +125 -14
  17. package/coverage/lcov-report/src/components/TransferToLogbook.tsx.html +71 -8
  18. package/coverage/lcov-report/src/components/TwoOptionModal.tsx.html +34 -10
  19. package/coverage/lcov-report/src/components/activity/Activity.tsx.html +58 -7
  20. package/coverage/lcov-report/src/components/activity/ActivityIcon.tsx.html +42 -3
  21. package/coverage/lcov-report/src/components/activity/ActivityIntensity.tsx.html +30 -6
  22. package/coverage/lcov-report/src/components/activity/index.html +1 -1
  23. package/coverage/lcov-report/src/components/index.html +10 -10
  24. package/coverage/lcov-report/src/components/mood/Emotion.tsx.html +85 -10
  25. package/coverage/lcov-report/src/components/mood/MoodIcon.tsx.html +87 -12
  26. package/coverage/lcov-report/src/components/mood/index.html +1 -1
  27. package/coverage/lcov-report/src/index.html +1 -1
  28. package/coverage/lcov-report/src/locale/i18nUtils.ts.html +47 -8
  29. package/coverage/lcov-report/src/locale/index.html +1 -1
  30. package/coverage/lcov-report/src/utils/AttentionMessages.tsx.html +235 -7
  31. package/coverage/lcov-report/src/utils/Constants.ts.html +71 -2
  32. package/coverage/lcov-report/src/utils/RecommendationError.tsx.html +89 -2
  33. package/coverage/lcov-report/src/utils/RecommendationUtils.ts.html +337 -40
  34. package/coverage/lcov-report/src/utils/Translations.ts.html +27 -3
  35. package/coverage/lcov-report/src/utils/Utils.ts.html +295 -19
  36. package/coverage/lcov-report/src/utils/Validations.ts.html +763 -61
  37. package/coverage/lcov-report/src/utils/index.html +1 -1
  38. package/coverage/lcov.info +1243 -1249
  39. package/ignore-git.sh +1 -0
  40. package/ignore-publish.sh +1 -0
  41. package/package.json +5 -3
  42. package/src/RecommendationScreen.d.ts +323 -6
  43. package/src/RecommendationScreen.js +234 -1
  44. package/src/__tests__/RecommendationScreen.test.js +35 -1
  45. package/src/__tests__/utils.d.ts +5 -5
  46. package/src/__tests__/utils.js +1 -1
  47. package/src/components/Header.d.ts +4 -43
  48. package/src/components/Header.js +3 -1
  49. package/src/components/Icon.d.ts +9 -2
  50. package/src/components/Icon.js +6 -1
  51. package/src/components/InfoBars.d.ts +28 -0
  52. package/src/components/InfoBars.js +23 -0
  53. package/src/components/InvisibleNumberInput.d.ts +66 -3
  54. package/src/components/InvisibleNumberInput.js +53 -0
  55. package/src/components/LimitationMessage.d.ts +6 -0
  56. package/src/components/LimitationMessage.js +4 -0
  57. package/src/components/LineSeparator.d.ts +4 -2
  58. package/src/components/LineSeparator.js +2 -0
  59. package/src/components/RecentInsulin.d.ts +10 -2
  60. package/src/components/RecentInsulin.js +7 -0
  61. package/src/components/RecommendationModal.d.ts +61 -3
  62. package/src/components/RecommendationModal.js +45 -0
  63. package/src/components/RecommendedCarbs.d.ts +71 -4
  64. package/src/components/RecommendedCarbs.js +56 -0
  65. package/src/components/RecommendedInsulin.d.ts +66 -4
  66. package/src/components/RecommendedInsulin.js +51 -5
  67. package/src/components/Remeasure.d.ts +38 -2
  68. package/src/components/Remeasure.js +31 -0
  69. package/src/components/TransferToLogbook.d.ts +23 -3
  70. package/src/components/TransferToLogbook.js +18 -0
  71. package/src/components/TwoOptionModal.d.ts +12 -1
  72. package/src/components/TwoOptionModal.js +3 -3
  73. package/src/components/activity/Activity.d.ts +21 -5
  74. package/src/components/activity/Activity.js +14 -0
  75. package/src/components/activity/ActivityIcon.d.ts +15 -0
  76. package/src/components/activity/ActivityIcon.js +14 -1
  77. package/src/components/activity/ActivityIntensity.d.ts +11 -4
  78. package/src/components/activity/ActivityIntensity.js +7 -0
  79. package/src/components/mood/Emotion.d.ts +26 -1
  80. package/src/components/mood/Emotion.js +20 -0
  81. package/src/components/mood/MoodIcon.d.ts +28 -2
  82. package/src/components/mood/MoodIcon.js +20 -2
  83. package/src/locale/i18nUtils.d.ts +13 -0
  84. package/src/locale/i18nUtils.js +13 -0
  85. package/src/types/enum.d.ts +10 -0
  86. package/src/types/enum.js +9 -0
  87. package/src/types/types.d.ts +9 -7
  88. package/src/utils/AttentionMessages.d.ts +65 -0
  89. package/src/utils/AttentionMessages.js +65 -1
  90. package/src/utils/Constants.d.ts +23 -0
  91. package/src/utils/Constants.js +23 -0
  92. package/src/utils/RecommendationError.d.ts +29 -0
  93. package/src/utils/RecommendationError.js +29 -0
  94. package/src/utils/RecommendationUtils.d.ts +98 -6
  95. package/src/utils/RecommendationUtils.js +92 -0
  96. package/src/utils/Translations.d.ts +7 -0
  97. package/src/utils/Translations.js +7 -0
  98. package/src/utils/Utils.d.ts +92 -0
  99. package/src/utils/Utils.js +94 -2
  100. package/src/utils/Validations.d.ts +232 -9
  101. package/src/utils/Validations.js +225 -2
  102. package/typedoc.json +13 -0
@@ -318,7 +318,73 @@
318
318
  <a name='L259'></a><a href='#L259'>259</a>
319
319
  <a name='L260'></a><a href='#L260'>260</a>
320
320
  <a name='L261'></a><a href='#L261'>261</a>
321
- <a name='L262'></a><a href='#L262'>262</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
321
+ <a name='L262'></a><a href='#L262'>262</a>
322
+ <a name='L263'></a><a href='#L263'>263</a>
323
+ <a name='L264'></a><a href='#L264'>264</a>
324
+ <a name='L265'></a><a href='#L265'>265</a>
325
+ <a name='L266'></a><a href='#L266'>266</a>
326
+ <a name='L267'></a><a href='#L267'>267</a>
327
+ <a name='L268'></a><a href='#L268'>268</a>
328
+ <a name='L269'></a><a href='#L269'>269</a>
329
+ <a name='L270'></a><a href='#L270'>270</a>
330
+ <a name='L271'></a><a href='#L271'>271</a>
331
+ <a name='L272'></a><a href='#L272'>272</a>
332
+ <a name='L273'></a><a href='#L273'>273</a>
333
+ <a name='L274'></a><a href='#L274'>274</a>
334
+ <a name='L275'></a><a href='#L275'>275</a>
335
+ <a name='L276'></a><a href='#L276'>276</a>
336
+ <a name='L277'></a><a href='#L277'>277</a>
337
+ <a name='L278'></a><a href='#L278'>278</a>
338
+ <a name='L279'></a><a href='#L279'>279</a>
339
+ <a name='L280'></a><a href='#L280'>280</a>
340
+ <a name='L281'></a><a href='#L281'>281</a>
341
+ <a name='L282'></a><a href='#L282'>282</a>
342
+ <a name='L283'></a><a href='#L283'>283</a>
343
+ <a name='L284'></a><a href='#L284'>284</a>
344
+ <a name='L285'></a><a href='#L285'>285</a>
345
+ <a name='L286'></a><a href='#L286'>286</a>
346
+ <a name='L287'></a><a href='#L287'>287</a>
347
+ <a name='L288'></a><a href='#L288'>288</a>
348
+ <a name='L289'></a><a href='#L289'>289</a>
349
+ <a name='L290'></a><a href='#L290'>290</a>
350
+ <a name='L291'></a><a href='#L291'>291</a>
351
+ <a name='L292'></a><a href='#L292'>292</a>
352
+ <a name='L293'></a><a href='#L293'>293</a>
353
+ <a name='L294'></a><a href='#L294'>294</a>
354
+ <a name='L295'></a><a href='#L295'>295</a>
355
+ <a name='L296'></a><a href='#L296'>296</a>
356
+ <a name='L297'></a><a href='#L297'>297</a>
357
+ <a name='L298'></a><a href='#L298'>298</a>
358
+ <a name='L299'></a><a href='#L299'>299</a>
359
+ <a name='L300'></a><a href='#L300'>300</a>
360
+ <a name='L301'></a><a href='#L301'>301</a>
361
+ <a name='L302'></a><a href='#L302'>302</a>
362
+ <a name='L303'></a><a href='#L303'>303</a>
363
+ <a name='L304'></a><a href='#L304'>304</a>
364
+ <a name='L305'></a><a href='#L305'>305</a>
365
+ <a name='L306'></a><a href='#L306'>306</a>
366
+ <a name='L307'></a><a href='#L307'>307</a>
367
+ <a name='L308'></a><a href='#L308'>308</a>
368
+ <a name='L309'></a><a href='#L309'>309</a>
369
+ <a name='L310'></a><a href='#L310'>310</a>
370
+ <a name='L311'></a><a href='#L311'>311</a>
371
+ <a name='L312'></a><a href='#L312'>312</a>
372
+ <a name='L313'></a><a href='#L313'>313</a>
373
+ <a name='L314'></a><a href='#L314'>314</a>
374
+ <a name='L315'></a><a href='#L315'>315</a>
375
+ <a name='L316'></a><a href='#L316'>316</a>
376
+ <a name='L317'></a><a href='#L317'>317</a>
377
+ <a name='L318'></a><a href='#L318'>318</a>
378
+ <a name='L319'></a><a href='#L319'>319</a>
379
+ <a name='L320'></a><a href='#L320'>320</a>
380
+ <a name='L321'></a><a href='#L321'>321</a>
381
+ <a name='L322'></a><a href='#L322'>322</a>
382
+ <a name='L323'></a><a href='#L323'>323</a>
383
+ <a name='L324'></a><a href='#L324'>324</a>
384
+ <a name='L325'></a><a href='#L325'>325</a>
385
+ <a name='L326'></a><a href='#L326'>326</a>
386
+ <a name='L327'></a><a href='#L327'>327</a>
387
+ <a name='L328'></a><a href='#L328'>328</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
322
388
  <span class="cline-any cline-neutral">&nbsp;</span>
323
389
  <span class="cline-any cline-neutral">&nbsp;</span>
324
390
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -353,23 +419,64 @@
353
419
  <span class="cline-any cline-neutral">&nbsp;</span>
354
420
  <span class="cline-any cline-neutral">&nbsp;</span>
355
421
  <span class="cline-any cline-neutral">&nbsp;</span>
356
- <span class="cline-any cline-yes">65x</span>
357
422
  <span class="cline-any cline-neutral">&nbsp;</span>
358
423
  <span class="cline-any cline-neutral">&nbsp;</span>
359
424
  <span class="cline-any cline-neutral">&nbsp;</span>
360
425
  <span class="cline-any cline-neutral">&nbsp;</span>
361
426
  <span class="cline-any cline-neutral">&nbsp;</span>
362
- <span class="cline-any cline-yes">65x</span>
427
+ <span class="cline-any cline-neutral">&nbsp;</span>
428
+ <span class="cline-any cline-neutral">&nbsp;</span>
429
+ <span class="cline-any cline-neutral">&nbsp;</span>
430
+ <span class="cline-any cline-neutral">&nbsp;</span>
431
+ <span class="cline-any cline-neutral">&nbsp;</span>
432
+ <span class="cline-any cline-neutral">&nbsp;</span>
433
+ <span class="cline-any cline-neutral">&nbsp;</span>
434
+ <span class="cline-any cline-neutral">&nbsp;</span>
435
+ <span class="cline-any cline-yes">73x</span>
436
+ <span class="cline-any cline-neutral">&nbsp;</span>
437
+ <span class="cline-any cline-neutral">&nbsp;</span>
438
+ <span class="cline-any cline-neutral">&nbsp;</span>
439
+ <span class="cline-any cline-neutral">&nbsp;</span>
440
+ <span class="cline-any cline-neutral">&nbsp;</span>
441
+ <span class="cline-any cline-neutral">&nbsp;</span>
442
+ <span class="cline-any cline-neutral">&nbsp;</span>
443
+ <span class="cline-any cline-neutral">&nbsp;</span>
444
+ <span class="cline-any cline-neutral">&nbsp;</span>
445
+ <span class="cline-any cline-neutral">&nbsp;</span>
446
+ <span class="cline-any cline-neutral">&nbsp;</span>
447
+ <span class="cline-any cline-neutral">&nbsp;</span>
448
+ <span class="cline-any cline-neutral">&nbsp;</span>
449
+ <span class="cline-any cline-yes">73x</span>
363
450
  <span class="cline-any cline-yes">2x</span>
364
451
  <span class="cline-any cline-neutral">&nbsp;</span>
365
452
  <span class="cline-any cline-neutral">&nbsp;</span>
366
- <span class="cline-any cline-yes">65x</span>
453
+ <span class="cline-any cline-neutral">&nbsp;</span>
454
+ <span class="cline-any cline-neutral">&nbsp;</span>
455
+ <span class="cline-any cline-neutral">&nbsp;</span>
456
+ <span class="cline-any cline-neutral">&nbsp;</span>
457
+ <span class="cline-any cline-neutral">&nbsp;</span>
458
+ <span class="cline-any cline-neutral">&nbsp;</span>
459
+ <span class="cline-any cline-neutral">&nbsp;</span>
460
+ <span class="cline-any cline-yes">73x</span>
367
461
  <span class="cline-any cline-yes">1x</span>
368
462
  <span class="cline-any cline-neutral">&nbsp;</span>
369
463
  <span class="cline-any cline-neutral">&nbsp;</span>
370
464
  <span class="cline-any cline-neutral">&nbsp;</span>
371
465
  <span class="cline-any cline-neutral">&nbsp;</span>
372
- <span class="cline-any cline-yes">65x</span>
466
+ <span class="cline-any cline-neutral">&nbsp;</span>
467
+ <span class="cline-any cline-neutral">&nbsp;</span>
468
+ <span class="cline-any cline-neutral">&nbsp;</span>
469
+ <span class="cline-any cline-neutral">&nbsp;</span>
470
+ <span class="cline-any cline-neutral">&nbsp;</span>
471
+ <span class="cline-any cline-neutral">&nbsp;</span>
472
+ <span class="cline-any cline-neutral">&nbsp;</span>
473
+ <span class="cline-any cline-neutral">&nbsp;</span>
474
+ <span class="cline-any cline-neutral">&nbsp;</span>
475
+ <span class="cline-any cline-neutral">&nbsp;</span>
476
+ <span class="cline-any cline-neutral">&nbsp;</span>
477
+ <span class="cline-any cline-neutral">&nbsp;</span>
478
+ <span class="cline-any cline-neutral">&nbsp;</span>
479
+ <span class="cline-any cline-yes">73x</span>
373
480
  <span class="cline-any cline-yes">6x</span>
374
481
  <span class="cline-any cline-yes">5x</span>
375
482
  <span class="cline-any cline-yes">1x</span>
@@ -383,10 +490,6 @@
383
490
  <span class="cline-any cline-neutral">&nbsp;</span>
384
491
  <span class="cline-any cline-neutral">&nbsp;</span>
385
492
  <span class="cline-any cline-neutral">&nbsp;</span>
386
- <span class="cline-any cline-yes">65x</span>
387
- <span class="cline-any cline-yes">37x</span>
388
- <span class="cline-any cline-yes">37x</span>
389
- <span class="cline-any cline-yes">37x</span>
390
493
  <span class="cline-any cline-neutral">&nbsp;</span>
391
494
  <span class="cline-any cline-neutral">&nbsp;</span>
392
495
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -400,6 +503,20 @@
400
503
  <span class="cline-any cline-neutral">&nbsp;</span>
401
504
  <span class="cline-any cline-neutral">&nbsp;</span>
402
505
  <span class="cline-any cline-neutral">&nbsp;</span>
506
+ <span class="cline-any cline-yes">73x</span>
507
+ <span class="cline-any cline-yes">38x</span>
508
+ <span class="cline-any cline-yes">38x</span>
509
+ <span class="cline-any cline-yes">38x</span>
510
+ <span class="cline-any cline-neutral">&nbsp;</span>
511
+ <span class="cline-any cline-neutral">&nbsp;</span>
512
+ <span class="cline-any cline-neutral">&nbsp;</span>
513
+ <span class="cline-any cline-neutral">&nbsp;</span>
514
+ <span class="cline-any cline-neutral">&nbsp;</span>
515
+ <span class="cline-any cline-neutral">&nbsp;</span>
516
+ <span class="cline-any cline-neutral">&nbsp;</span>
517
+ <span class="cline-any cline-neutral">&nbsp;</span>
518
+ <span class="cline-any cline-neutral">&nbsp;</span>
519
+ <span class="cline-any cline-neutral">&nbsp;</span>
403
520
  <span class="cline-any cline-neutral">&nbsp;</span>
404
521
  <span class="cline-any cline-neutral">&nbsp;</span>
405
522
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -449,18 +566,16 @@
449
566
  <span class="cline-any cline-neutral">&nbsp;</span>
450
567
  <span class="cline-any cline-neutral">&nbsp;</span>
451
568
  <span class="cline-any cline-neutral">&nbsp;</span>
452
- <span class="cline-any cline-yes">19x</span>
453
569
  <span class="cline-any cline-neutral">&nbsp;</span>
454
570
  <span class="cline-any cline-neutral">&nbsp;</span>
455
571
  <span class="cline-any cline-neutral">&nbsp;</span>
572
+ <span class="cline-any cline-yes">20x</span>
456
573
  <span class="cline-any cline-neutral">&nbsp;</span>
457
574
  <span class="cline-any cline-neutral">&nbsp;</span>
458
575
  <span class="cline-any cline-neutral">&nbsp;</span>
459
576
  <span class="cline-any cline-neutral">&nbsp;</span>
460
577
  <span class="cline-any cline-neutral">&nbsp;</span>
461
578
  <span class="cline-any cline-neutral">&nbsp;</span>
462
- <span class="cline-any cline-yes">65x</span>
463
- <span class="cline-any cline-yes">174x</span>
464
579
  <span class="cline-any cline-neutral">&nbsp;</span>
465
580
  <span class="cline-any cline-neutral">&nbsp;</span>
466
581
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -470,6 +585,8 @@
470
585
  <span class="cline-any cline-neutral">&nbsp;</span>
471
586
  <span class="cline-any cline-neutral">&nbsp;</span>
472
587
  <span class="cline-any cline-neutral">&nbsp;</span>
588
+ <span class="cline-any cline-yes">73x</span>
589
+ <span class="cline-any cline-yes">183x</span>
473
590
  <span class="cline-any cline-neutral">&nbsp;</span>
474
591
  <span class="cline-any cline-neutral">&nbsp;</span>
475
592
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -480,8 +597,23 @@
480
597
  <span class="cline-any cline-neutral">&nbsp;</span>
481
598
  <span class="cline-any cline-neutral">&nbsp;</span>
482
599
  <span class="cline-any cline-neutral">&nbsp;</span>
483
- <span class="cline-any cline-yes">137x</span>
484
- <span class="cline-any cline-yes">137x</span>
600
+ <span class="cline-any cline-neutral">&nbsp;</span>
601
+ <span class="cline-any cline-neutral">&nbsp;</span>
602
+ <span class="cline-any cline-neutral">&nbsp;</span>
603
+ <span class="cline-any cline-neutral">&nbsp;</span>
604
+ <span class="cline-any cline-neutral">&nbsp;</span>
605
+ <span class="cline-any cline-neutral">&nbsp;</span>
606
+ <span class="cline-any cline-neutral">&nbsp;</span>
607
+ <span class="cline-any cline-neutral">&nbsp;</span>
608
+ <span class="cline-any cline-neutral">&nbsp;</span>
609
+ <span class="cline-any cline-neutral">&nbsp;</span>
610
+ <span class="cline-any cline-neutral">&nbsp;</span>
611
+ <span class="cline-any cline-neutral">&nbsp;</span>
612
+ <span class="cline-any cline-neutral">&nbsp;</span>
613
+ <span class="cline-any cline-neutral">&nbsp;</span>
614
+ <span class="cline-any cline-neutral">&nbsp;</span>
615
+ <span class="cline-any cline-yes">145x</span>
616
+ <span class="cline-any cline-yes">145x</span>
485
617
  <span class="cline-any cline-neutral">&nbsp;</span>
486
618
  <span class="cline-any cline-neutral">&nbsp;</span>
487
619
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -593,43 +725,84 @@ import LineSeparator from "./LineSeparator";
593
725
  &nbsp;
594
726
  const { RecommendedCarbsTestIds } = Testing.Id;
595
727
  &nbsp;
596
- interface ICalculationRow {
728
+ export interface ICalculationRow {
597
729
  label: string;
598
730
  value: string;
599
731
  units: string;
600
732
  }
601
733
  &nbsp;
602
- interface IProps {
603
- // Values
734
+ export interface IProps {
735
+ /** The amount of carbs in grams that was recommended to and accepted by the user. */
604
736
  recommendedCarbs?: string;
737
+ /** The amount of carbs in grams that the user entered on the food screen. */
605
738
  enteredCarbs: string;
606
739
  &nbsp;
607
- // Callbacks
740
+ /** Callback function that doesn’t accept any arguments and doesn’t return anything - To be called every time the “remove additional carbs” button has been pressed. */
608
741
  removeRecommendedCarbs(): void;
742
+ /**
743
+ * Callback function that takes a single number as argument and doesn’t return anything.
744
+ * Function to be called when the entered carbohydrate value is changed by the user. The new value should be given as argument
745
+ */
609
746
  changedRecommendedCarbs(value: number): void;
610
747
  }
611
748
  &nbsp;
612
- interface IState {
749
+ export interface IState {
750
+ /** The internal value of the input field. */
613
751
  partialInput?: string;
614
752
  }
615
753
  &nbsp;
754
+ /**
755
+ * The contents of the RecommendedCarbs component may vary quite a bit depending on data that was entered by the user
756
+ * and on the result of the recommendation calculation.
757
+ * For instance the part of the component that displays any recommendation of eating additional carbohydrates
758
+ * (composed by the renderRecommendedCarbs() method) will only be visible if it is actually recommended that the user eats additional carbohydrates.
759
+ */
616
760
  export default class RecommendedCarbs extends React.Component&lt;IProps, IState&gt; {
761
+ /** Initialise the state partialInput variable with undefined */
617
762
  public state: IState = {
618
763
  partialInput: undefined,
619
764
  };
620
765
  &nbsp;
766
+ /**
767
+ * Function taking no arguments and returning no value.
768
+ * Will be bound to the function that activates input for InvisibleNumberInput when that component has been mounted.
769
+ */
621
770
  public callbackInput?: () =&gt; void;
622
771
  &nbsp;
772
+ /**
773
+ * Handle what should happen when the additional carbohydrates amount has been pressed.
774
+ * Uses the InvisibleNumberInput child component to enable the user to input the amount of additional carbohydrates that they are taking.
775
+ */
623
776
  public showTextInput = (): void =&gt; {
624
777
  this.callbackInput?.();
625
778
  };
626
779
  &nbsp;
780
+ /**
781
+ * Passed to the InvisibleNumberInput child component as a callback function to be called every time the content of the input field changes.
782
+ *
783
+ * Steps:
784
+ * 1. Save partialInput argument to the partialInput state variable.
785
+ * @param partialInput The contents of the input field.
786
+ */
627
787
  public handlePartialInput = (partialInput: string): void =&gt; {
628
788
  this.setState({
629
789
  partialInput,
630
790
  });
631
791
  };
632
792
  &nbsp;
793
+ /**
794
+ * Handle what happens when input in the InvisibleNumberInput child component is completed.
795
+ *
796
+ * Steps:
797
+ * 1. If the carbs argument is greater than or equal to 0:
798
+ * - If the carbs argument is greater than 300:
799
+ * - Set the partialInput state variable to the value of the recommemdedCarbs prop.
800
+ * - Return - An alert message with the message of CarbohydrateLimitError() and with an OK button for closing it.
801
+ * - Use carbs as argument to call the changedRecommendedCarbs prop callback function.
802
+ &nbsp;
803
+ * @param carbs The numerical value of the input field at completion.
804
+ * @returns void
805
+ */
633
806
  public handleChangedCarbs = (carbs: number): void =&gt; {
634
807
  if (carbs &gt;= 0) {
635
808
  if (carbs &gt; 300) {
@@ -644,6 +817,19 @@ export default class RecommendedCarbs extends React.Component&lt;IProps, IState&
644
817
  }
645
818
  };
646
819
  &nbsp;
820
+ /**
821
+ * Render the section of the component that displays the extra carbs that the user should eat
822
+ * and allows the user to change the contents to indicate how many extra carbs they are actually going to eat.
823
+ *
824
+ * Steps:
825
+ * 1. Set a variable named shownCarbs to the partialInput state if it is set, or to the recommendedCarbs prop rounded to the nearest integer otherwise.
826
+ * 2. Set a variable named totalCarbs to the sum of the enteredCarbs prop and shownCarbs rounded to the nearest integer.
827
+ * 3. Compose and return a JSX element consisting of the following sub-components
828
+ * - A cancel button to remove recommended carbs from the calculation - When tapped, call the removeRecommendedCarbs prop callback function.
829
+ * - The text from the shownCarbs variable from step 1 - When tapped, call the showTextInput() method.
830
+ * - Use renderRow() to display the value of totalCarbs.
831
+ * - InvisibleNumberInput for showing the keyboard to enable the user to enter a number.
832
+ */
647
833
  public renderRecommendedCarbs = (): JSX.Element =&gt; {
648
834
  const shownCarbs = this.state.partialInput ?? Math.round(Number(this.props.recommendedCarbs));
649
835
  const totalCarbs = Math.round(parseFloat(this.props.enteredCarbs) + Number(shownCarbs));
@@ -720,6 +906,12 @@ export default class RecommendedCarbs extends React.Component&lt;IProps, IState&
720
906
  );
721
907
  };
722
908
  &nbsp;
909
+ /**
910
+ * Display a row of information for the user. Specifically used to display the amount of carbohydrates that the user has entered.
911
+ * @param row The values to display
912
+ * @param testID Id used for component testing
913
+ * @returns A JSX element to display 3 strings on the screen: label, value, and a unit.
914
+ */
723
915
  public renderRow = (row: ICalculationRow, testID: Testing.Id.RecommendedCarbsTestIds): JSX.Element =&gt; {
724
916
  return (
725
917
  &lt;View style={[calculationStyles.borderContainer, { paddingVertical: `1%` }]}&gt;
@@ -740,6 +932,12 @@ export default class RecommendedCarbs extends React.Component&lt;IProps, IState&
740
932
  );
741
933
  };
742
934
  &nbsp;
935
+ /**
936
+ * Steps:
937
+ * 1. Convert the recommendedCarbs prop to a number and save that as a variable named carbs.
938
+ * 2. Use renderRow() to display the user’s entered amount of carbohydrates
939
+ * 3. If carbs is not a NaN-value and it is positive, call renderRecommendedCarbs() to display the carbohydrate recommendation.
940
+ */
743
941
  public render(): JSX.Element {
744
942
  const carbs = Number(this.props.recommendedCarbs);
745
943
  return (
@@ -847,7 +1045,7 @@ const calculationStyles = StyleSheet.create({
847
1045
  <div class='footer quiet pad2 space-top1 center small'>
848
1046
  Code coverage generated by
849
1047
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
850
- at Tue Jul 06 2021 09:58:23 GMT+0000 (Coordinated Universal Time)
1048
+ at Thu Jul 29 2021 07:55:43 GMT+0000 (Coordinated Universal Time)
851
1049
  </div>
852
1050
  </div>
853
1051
  <script src="../../prettify.js"></script>