@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
|
@@ -535,7 +535,338 @@
|
|
|
535
535
|
<a name='L476'></a><a href='#L476'>476</a>
|
|
536
536
|
<a name='L477'></a><a href='#L477'>477</a>
|
|
537
537
|
<a name='L478'></a><a href='#L478'>478</a>
|
|
538
|
-
<a name='L479'></a><a href='#L479'>479</a
|
|
538
|
+
<a name='L479'></a><a href='#L479'>479</a>
|
|
539
|
+
<a name='L480'></a><a href='#L480'>480</a>
|
|
540
|
+
<a name='L481'></a><a href='#L481'>481</a>
|
|
541
|
+
<a name='L482'></a><a href='#L482'>482</a>
|
|
542
|
+
<a name='L483'></a><a href='#L483'>483</a>
|
|
543
|
+
<a name='L484'></a><a href='#L484'>484</a>
|
|
544
|
+
<a name='L485'></a><a href='#L485'>485</a>
|
|
545
|
+
<a name='L486'></a><a href='#L486'>486</a>
|
|
546
|
+
<a name='L487'></a><a href='#L487'>487</a>
|
|
547
|
+
<a name='L488'></a><a href='#L488'>488</a>
|
|
548
|
+
<a name='L489'></a><a href='#L489'>489</a>
|
|
549
|
+
<a name='L490'></a><a href='#L490'>490</a>
|
|
550
|
+
<a name='L491'></a><a href='#L491'>491</a>
|
|
551
|
+
<a name='L492'></a><a href='#L492'>492</a>
|
|
552
|
+
<a name='L493'></a><a href='#L493'>493</a>
|
|
553
|
+
<a name='L494'></a><a href='#L494'>494</a>
|
|
554
|
+
<a name='L495'></a><a href='#L495'>495</a>
|
|
555
|
+
<a name='L496'></a><a href='#L496'>496</a>
|
|
556
|
+
<a name='L497'></a><a href='#L497'>497</a>
|
|
557
|
+
<a name='L498'></a><a href='#L498'>498</a>
|
|
558
|
+
<a name='L499'></a><a href='#L499'>499</a>
|
|
559
|
+
<a name='L500'></a><a href='#L500'>500</a>
|
|
560
|
+
<a name='L501'></a><a href='#L501'>501</a>
|
|
561
|
+
<a name='L502'></a><a href='#L502'>502</a>
|
|
562
|
+
<a name='L503'></a><a href='#L503'>503</a>
|
|
563
|
+
<a name='L504'></a><a href='#L504'>504</a>
|
|
564
|
+
<a name='L505'></a><a href='#L505'>505</a>
|
|
565
|
+
<a name='L506'></a><a href='#L506'>506</a>
|
|
566
|
+
<a name='L507'></a><a href='#L507'>507</a>
|
|
567
|
+
<a name='L508'></a><a href='#L508'>508</a>
|
|
568
|
+
<a name='L509'></a><a href='#L509'>509</a>
|
|
569
|
+
<a name='L510'></a><a href='#L510'>510</a>
|
|
570
|
+
<a name='L511'></a><a href='#L511'>511</a>
|
|
571
|
+
<a name='L512'></a><a href='#L512'>512</a>
|
|
572
|
+
<a name='L513'></a><a href='#L513'>513</a>
|
|
573
|
+
<a name='L514'></a><a href='#L514'>514</a>
|
|
574
|
+
<a name='L515'></a><a href='#L515'>515</a>
|
|
575
|
+
<a name='L516'></a><a href='#L516'>516</a>
|
|
576
|
+
<a name='L517'></a><a href='#L517'>517</a>
|
|
577
|
+
<a name='L518'></a><a href='#L518'>518</a>
|
|
578
|
+
<a name='L519'></a><a href='#L519'>519</a>
|
|
579
|
+
<a name='L520'></a><a href='#L520'>520</a>
|
|
580
|
+
<a name='L521'></a><a href='#L521'>521</a>
|
|
581
|
+
<a name='L522'></a><a href='#L522'>522</a>
|
|
582
|
+
<a name='L523'></a><a href='#L523'>523</a>
|
|
583
|
+
<a name='L524'></a><a href='#L524'>524</a>
|
|
584
|
+
<a name='L525'></a><a href='#L525'>525</a>
|
|
585
|
+
<a name='L526'></a><a href='#L526'>526</a>
|
|
586
|
+
<a name='L527'></a><a href='#L527'>527</a>
|
|
587
|
+
<a name='L528'></a><a href='#L528'>528</a>
|
|
588
|
+
<a name='L529'></a><a href='#L529'>529</a>
|
|
589
|
+
<a name='L530'></a><a href='#L530'>530</a>
|
|
590
|
+
<a name='L531'></a><a href='#L531'>531</a>
|
|
591
|
+
<a name='L532'></a><a href='#L532'>532</a>
|
|
592
|
+
<a name='L533'></a><a href='#L533'>533</a>
|
|
593
|
+
<a name='L534'></a><a href='#L534'>534</a>
|
|
594
|
+
<a name='L535'></a><a href='#L535'>535</a>
|
|
595
|
+
<a name='L536'></a><a href='#L536'>536</a>
|
|
596
|
+
<a name='L537'></a><a href='#L537'>537</a>
|
|
597
|
+
<a name='L538'></a><a href='#L538'>538</a>
|
|
598
|
+
<a name='L539'></a><a href='#L539'>539</a>
|
|
599
|
+
<a name='L540'></a><a href='#L540'>540</a>
|
|
600
|
+
<a name='L541'></a><a href='#L541'>541</a>
|
|
601
|
+
<a name='L542'></a><a href='#L542'>542</a>
|
|
602
|
+
<a name='L543'></a><a href='#L543'>543</a>
|
|
603
|
+
<a name='L544'></a><a href='#L544'>544</a>
|
|
604
|
+
<a name='L545'></a><a href='#L545'>545</a>
|
|
605
|
+
<a name='L546'></a><a href='#L546'>546</a>
|
|
606
|
+
<a name='L547'></a><a href='#L547'>547</a>
|
|
607
|
+
<a name='L548'></a><a href='#L548'>548</a>
|
|
608
|
+
<a name='L549'></a><a href='#L549'>549</a>
|
|
609
|
+
<a name='L550'></a><a href='#L550'>550</a>
|
|
610
|
+
<a name='L551'></a><a href='#L551'>551</a>
|
|
611
|
+
<a name='L552'></a><a href='#L552'>552</a>
|
|
612
|
+
<a name='L553'></a><a href='#L553'>553</a>
|
|
613
|
+
<a name='L554'></a><a href='#L554'>554</a>
|
|
614
|
+
<a name='L555'></a><a href='#L555'>555</a>
|
|
615
|
+
<a name='L556'></a><a href='#L556'>556</a>
|
|
616
|
+
<a name='L557'></a><a href='#L557'>557</a>
|
|
617
|
+
<a name='L558'></a><a href='#L558'>558</a>
|
|
618
|
+
<a name='L559'></a><a href='#L559'>559</a>
|
|
619
|
+
<a name='L560'></a><a href='#L560'>560</a>
|
|
620
|
+
<a name='L561'></a><a href='#L561'>561</a>
|
|
621
|
+
<a name='L562'></a><a href='#L562'>562</a>
|
|
622
|
+
<a name='L563'></a><a href='#L563'>563</a>
|
|
623
|
+
<a name='L564'></a><a href='#L564'>564</a>
|
|
624
|
+
<a name='L565'></a><a href='#L565'>565</a>
|
|
625
|
+
<a name='L566'></a><a href='#L566'>566</a>
|
|
626
|
+
<a name='L567'></a><a href='#L567'>567</a>
|
|
627
|
+
<a name='L568'></a><a href='#L568'>568</a>
|
|
628
|
+
<a name='L569'></a><a href='#L569'>569</a>
|
|
629
|
+
<a name='L570'></a><a href='#L570'>570</a>
|
|
630
|
+
<a name='L571'></a><a href='#L571'>571</a>
|
|
631
|
+
<a name='L572'></a><a href='#L572'>572</a>
|
|
632
|
+
<a name='L573'></a><a href='#L573'>573</a>
|
|
633
|
+
<a name='L574'></a><a href='#L574'>574</a>
|
|
634
|
+
<a name='L575'></a><a href='#L575'>575</a>
|
|
635
|
+
<a name='L576'></a><a href='#L576'>576</a>
|
|
636
|
+
<a name='L577'></a><a href='#L577'>577</a>
|
|
637
|
+
<a name='L578'></a><a href='#L578'>578</a>
|
|
638
|
+
<a name='L579'></a><a href='#L579'>579</a>
|
|
639
|
+
<a name='L580'></a><a href='#L580'>580</a>
|
|
640
|
+
<a name='L581'></a><a href='#L581'>581</a>
|
|
641
|
+
<a name='L582'></a><a href='#L582'>582</a>
|
|
642
|
+
<a name='L583'></a><a href='#L583'>583</a>
|
|
643
|
+
<a name='L584'></a><a href='#L584'>584</a>
|
|
644
|
+
<a name='L585'></a><a href='#L585'>585</a>
|
|
645
|
+
<a name='L586'></a><a href='#L586'>586</a>
|
|
646
|
+
<a name='L587'></a><a href='#L587'>587</a>
|
|
647
|
+
<a name='L588'></a><a href='#L588'>588</a>
|
|
648
|
+
<a name='L589'></a><a href='#L589'>589</a>
|
|
649
|
+
<a name='L590'></a><a href='#L590'>590</a>
|
|
650
|
+
<a name='L591'></a><a href='#L591'>591</a>
|
|
651
|
+
<a name='L592'></a><a href='#L592'>592</a>
|
|
652
|
+
<a name='L593'></a><a href='#L593'>593</a>
|
|
653
|
+
<a name='L594'></a><a href='#L594'>594</a>
|
|
654
|
+
<a name='L595'></a><a href='#L595'>595</a>
|
|
655
|
+
<a name='L596'></a><a href='#L596'>596</a>
|
|
656
|
+
<a name='L597'></a><a href='#L597'>597</a>
|
|
657
|
+
<a name='L598'></a><a href='#L598'>598</a>
|
|
658
|
+
<a name='L599'></a><a href='#L599'>599</a>
|
|
659
|
+
<a name='L600'></a><a href='#L600'>600</a>
|
|
660
|
+
<a name='L601'></a><a href='#L601'>601</a>
|
|
661
|
+
<a name='L602'></a><a href='#L602'>602</a>
|
|
662
|
+
<a name='L603'></a><a href='#L603'>603</a>
|
|
663
|
+
<a name='L604'></a><a href='#L604'>604</a>
|
|
664
|
+
<a name='L605'></a><a href='#L605'>605</a>
|
|
665
|
+
<a name='L606'></a><a href='#L606'>606</a>
|
|
666
|
+
<a name='L607'></a><a href='#L607'>607</a>
|
|
667
|
+
<a name='L608'></a><a href='#L608'>608</a>
|
|
668
|
+
<a name='L609'></a><a href='#L609'>609</a>
|
|
669
|
+
<a name='L610'></a><a href='#L610'>610</a>
|
|
670
|
+
<a name='L611'></a><a href='#L611'>611</a>
|
|
671
|
+
<a name='L612'></a><a href='#L612'>612</a>
|
|
672
|
+
<a name='L613'></a><a href='#L613'>613</a>
|
|
673
|
+
<a name='L614'></a><a href='#L614'>614</a>
|
|
674
|
+
<a name='L615'></a><a href='#L615'>615</a>
|
|
675
|
+
<a name='L616'></a><a href='#L616'>616</a>
|
|
676
|
+
<a name='L617'></a><a href='#L617'>617</a>
|
|
677
|
+
<a name='L618'></a><a href='#L618'>618</a>
|
|
678
|
+
<a name='L619'></a><a href='#L619'>619</a>
|
|
679
|
+
<a name='L620'></a><a href='#L620'>620</a>
|
|
680
|
+
<a name='L621'></a><a href='#L621'>621</a>
|
|
681
|
+
<a name='L622'></a><a href='#L622'>622</a>
|
|
682
|
+
<a name='L623'></a><a href='#L623'>623</a>
|
|
683
|
+
<a name='L624'></a><a href='#L624'>624</a>
|
|
684
|
+
<a name='L625'></a><a href='#L625'>625</a>
|
|
685
|
+
<a name='L626'></a><a href='#L626'>626</a>
|
|
686
|
+
<a name='L627'></a><a href='#L627'>627</a>
|
|
687
|
+
<a name='L628'></a><a href='#L628'>628</a>
|
|
688
|
+
<a name='L629'></a><a href='#L629'>629</a>
|
|
689
|
+
<a name='L630'></a><a href='#L630'>630</a>
|
|
690
|
+
<a name='L631'></a><a href='#L631'>631</a>
|
|
691
|
+
<a name='L632'></a><a href='#L632'>632</a>
|
|
692
|
+
<a name='L633'></a><a href='#L633'>633</a>
|
|
693
|
+
<a name='L634'></a><a href='#L634'>634</a>
|
|
694
|
+
<a name='L635'></a><a href='#L635'>635</a>
|
|
695
|
+
<a name='L636'></a><a href='#L636'>636</a>
|
|
696
|
+
<a name='L637'></a><a href='#L637'>637</a>
|
|
697
|
+
<a name='L638'></a><a href='#L638'>638</a>
|
|
698
|
+
<a name='L639'></a><a href='#L639'>639</a>
|
|
699
|
+
<a name='L640'></a><a href='#L640'>640</a>
|
|
700
|
+
<a name='L641'></a><a href='#L641'>641</a>
|
|
701
|
+
<a name='L642'></a><a href='#L642'>642</a>
|
|
702
|
+
<a name='L643'></a><a href='#L643'>643</a>
|
|
703
|
+
<a name='L644'></a><a href='#L644'>644</a>
|
|
704
|
+
<a name='L645'></a><a href='#L645'>645</a>
|
|
705
|
+
<a name='L646'></a><a href='#L646'>646</a>
|
|
706
|
+
<a name='L647'></a><a href='#L647'>647</a>
|
|
707
|
+
<a name='L648'></a><a href='#L648'>648</a>
|
|
708
|
+
<a name='L649'></a><a href='#L649'>649</a>
|
|
709
|
+
<a name='L650'></a><a href='#L650'>650</a>
|
|
710
|
+
<a name='L651'></a><a href='#L651'>651</a>
|
|
711
|
+
<a name='L652'></a><a href='#L652'>652</a>
|
|
712
|
+
<a name='L653'></a><a href='#L653'>653</a>
|
|
713
|
+
<a name='L654'></a><a href='#L654'>654</a>
|
|
714
|
+
<a name='L655'></a><a href='#L655'>655</a>
|
|
715
|
+
<a name='L656'></a><a href='#L656'>656</a>
|
|
716
|
+
<a name='L657'></a><a href='#L657'>657</a>
|
|
717
|
+
<a name='L658'></a><a href='#L658'>658</a>
|
|
718
|
+
<a name='L659'></a><a href='#L659'>659</a>
|
|
719
|
+
<a name='L660'></a><a href='#L660'>660</a>
|
|
720
|
+
<a name='L661'></a><a href='#L661'>661</a>
|
|
721
|
+
<a name='L662'></a><a href='#L662'>662</a>
|
|
722
|
+
<a name='L663'></a><a href='#L663'>663</a>
|
|
723
|
+
<a name='L664'></a><a href='#L664'>664</a>
|
|
724
|
+
<a name='L665'></a><a href='#L665'>665</a>
|
|
725
|
+
<a name='L666'></a><a href='#L666'>666</a>
|
|
726
|
+
<a name='L667'></a><a href='#L667'>667</a>
|
|
727
|
+
<a name='L668'></a><a href='#L668'>668</a>
|
|
728
|
+
<a name='L669'></a><a href='#L669'>669</a>
|
|
729
|
+
<a name='L670'></a><a href='#L670'>670</a>
|
|
730
|
+
<a name='L671'></a><a href='#L671'>671</a>
|
|
731
|
+
<a name='L672'></a><a href='#L672'>672</a>
|
|
732
|
+
<a name='L673'></a><a href='#L673'>673</a>
|
|
733
|
+
<a name='L674'></a><a href='#L674'>674</a>
|
|
734
|
+
<a name='L675'></a><a href='#L675'>675</a>
|
|
735
|
+
<a name='L676'></a><a href='#L676'>676</a>
|
|
736
|
+
<a name='L677'></a><a href='#L677'>677</a>
|
|
737
|
+
<a name='L678'></a><a href='#L678'>678</a>
|
|
738
|
+
<a name='L679'></a><a href='#L679'>679</a>
|
|
739
|
+
<a name='L680'></a><a href='#L680'>680</a>
|
|
740
|
+
<a name='L681'></a><a href='#L681'>681</a>
|
|
741
|
+
<a name='L682'></a><a href='#L682'>682</a>
|
|
742
|
+
<a name='L683'></a><a href='#L683'>683</a>
|
|
743
|
+
<a name='L684'></a><a href='#L684'>684</a>
|
|
744
|
+
<a name='L685'></a><a href='#L685'>685</a>
|
|
745
|
+
<a name='L686'></a><a href='#L686'>686</a>
|
|
746
|
+
<a name='L687'></a><a href='#L687'>687</a>
|
|
747
|
+
<a name='L688'></a><a href='#L688'>688</a>
|
|
748
|
+
<a name='L689'></a><a href='#L689'>689</a>
|
|
749
|
+
<a name='L690'></a><a href='#L690'>690</a>
|
|
750
|
+
<a name='L691'></a><a href='#L691'>691</a>
|
|
751
|
+
<a name='L692'></a><a href='#L692'>692</a>
|
|
752
|
+
<a name='L693'></a><a href='#L693'>693</a>
|
|
753
|
+
<a name='L694'></a><a href='#L694'>694</a>
|
|
754
|
+
<a name='L695'></a><a href='#L695'>695</a>
|
|
755
|
+
<a name='L696'></a><a href='#L696'>696</a>
|
|
756
|
+
<a name='L697'></a><a href='#L697'>697</a>
|
|
757
|
+
<a name='L698'></a><a href='#L698'>698</a>
|
|
758
|
+
<a name='L699'></a><a href='#L699'>699</a>
|
|
759
|
+
<a name='L700'></a><a href='#L700'>700</a>
|
|
760
|
+
<a name='L701'></a><a href='#L701'>701</a>
|
|
761
|
+
<a name='L702'></a><a href='#L702'>702</a>
|
|
762
|
+
<a name='L703'></a><a href='#L703'>703</a>
|
|
763
|
+
<a name='L704'></a><a href='#L704'>704</a>
|
|
764
|
+
<a name='L705'></a><a href='#L705'>705</a>
|
|
765
|
+
<a name='L706'></a><a href='#L706'>706</a>
|
|
766
|
+
<a name='L707'></a><a href='#L707'>707</a>
|
|
767
|
+
<a name='L708'></a><a href='#L708'>708</a>
|
|
768
|
+
<a name='L709'></a><a href='#L709'>709</a>
|
|
769
|
+
<a name='L710'></a><a href='#L710'>710</a>
|
|
770
|
+
<a name='L711'></a><a href='#L711'>711</a>
|
|
771
|
+
<a name='L712'></a><a href='#L712'>712</a>
|
|
772
|
+
<a name='L713'></a><a href='#L713'>713</a>
|
|
773
|
+
<a name='L714'></a><a href='#L714'>714</a>
|
|
774
|
+
<a name='L715'></a><a href='#L715'>715</a>
|
|
775
|
+
<a name='L716'></a><a href='#L716'>716</a>
|
|
776
|
+
<a name='L717'></a><a href='#L717'>717</a>
|
|
777
|
+
<a name='L718'></a><a href='#L718'>718</a>
|
|
778
|
+
<a name='L719'></a><a href='#L719'>719</a>
|
|
779
|
+
<a name='L720'></a><a href='#L720'>720</a>
|
|
780
|
+
<a name='L721'></a><a href='#L721'>721</a>
|
|
781
|
+
<a name='L722'></a><a href='#L722'>722</a>
|
|
782
|
+
<a name='L723'></a><a href='#L723'>723</a>
|
|
783
|
+
<a name='L724'></a><a href='#L724'>724</a>
|
|
784
|
+
<a name='L725'></a><a href='#L725'>725</a>
|
|
785
|
+
<a name='L726'></a><a href='#L726'>726</a>
|
|
786
|
+
<a name='L727'></a><a href='#L727'>727</a>
|
|
787
|
+
<a name='L728'></a><a href='#L728'>728</a>
|
|
788
|
+
<a name='L729'></a><a href='#L729'>729</a>
|
|
789
|
+
<a name='L730'></a><a href='#L730'>730</a>
|
|
790
|
+
<a name='L731'></a><a href='#L731'>731</a>
|
|
791
|
+
<a name='L732'></a><a href='#L732'>732</a>
|
|
792
|
+
<a name='L733'></a><a href='#L733'>733</a>
|
|
793
|
+
<a name='L734'></a><a href='#L734'>734</a>
|
|
794
|
+
<a name='L735'></a><a href='#L735'>735</a>
|
|
795
|
+
<a name='L736'></a><a href='#L736'>736</a>
|
|
796
|
+
<a name='L737'></a><a href='#L737'>737</a>
|
|
797
|
+
<a name='L738'></a><a href='#L738'>738</a>
|
|
798
|
+
<a name='L739'></a><a href='#L739'>739</a>
|
|
799
|
+
<a name='L740'></a><a href='#L740'>740</a>
|
|
800
|
+
<a name='L741'></a><a href='#L741'>741</a>
|
|
801
|
+
<a name='L742'></a><a href='#L742'>742</a>
|
|
802
|
+
<a name='L743'></a><a href='#L743'>743</a>
|
|
803
|
+
<a name='L744'></a><a href='#L744'>744</a>
|
|
804
|
+
<a name='L745'></a><a href='#L745'>745</a>
|
|
805
|
+
<a name='L746'></a><a href='#L746'>746</a>
|
|
806
|
+
<a name='L747'></a><a href='#L747'>747</a>
|
|
807
|
+
<a name='L748'></a><a href='#L748'>748</a>
|
|
808
|
+
<a name='L749'></a><a href='#L749'>749</a>
|
|
809
|
+
<a name='L750'></a><a href='#L750'>750</a>
|
|
810
|
+
<a name='L751'></a><a href='#L751'>751</a>
|
|
811
|
+
<a name='L752'></a><a href='#L752'>752</a>
|
|
812
|
+
<a name='L753'></a><a href='#L753'>753</a>
|
|
813
|
+
<a name='L754'></a><a href='#L754'>754</a>
|
|
814
|
+
<a name='L755'></a><a href='#L755'>755</a>
|
|
815
|
+
<a name='L756'></a><a href='#L756'>756</a>
|
|
816
|
+
<a name='L757'></a><a href='#L757'>757</a>
|
|
817
|
+
<a name='L758'></a><a href='#L758'>758</a>
|
|
818
|
+
<a name='L759'></a><a href='#L759'>759</a>
|
|
819
|
+
<a name='L760'></a><a href='#L760'>760</a>
|
|
820
|
+
<a name='L761'></a><a href='#L761'>761</a>
|
|
821
|
+
<a name='L762'></a><a href='#L762'>762</a>
|
|
822
|
+
<a name='L763'></a><a href='#L763'>763</a>
|
|
823
|
+
<a name='L764'></a><a href='#L764'>764</a>
|
|
824
|
+
<a name='L765'></a><a href='#L765'>765</a>
|
|
825
|
+
<a name='L766'></a><a href='#L766'>766</a>
|
|
826
|
+
<a name='L767'></a><a href='#L767'>767</a>
|
|
827
|
+
<a name='L768'></a><a href='#L768'>768</a>
|
|
828
|
+
<a name='L769'></a><a href='#L769'>769</a>
|
|
829
|
+
<a name='L770'></a><a href='#L770'>770</a>
|
|
830
|
+
<a name='L771'></a><a href='#L771'>771</a>
|
|
831
|
+
<a name='L772'></a><a href='#L772'>772</a>
|
|
832
|
+
<a name='L773'></a><a href='#L773'>773</a>
|
|
833
|
+
<a name='L774'></a><a href='#L774'>774</a>
|
|
834
|
+
<a name='L775'></a><a href='#L775'>775</a>
|
|
835
|
+
<a name='L776'></a><a href='#L776'>776</a>
|
|
836
|
+
<a name='L777'></a><a href='#L777'>777</a>
|
|
837
|
+
<a name='L778'></a><a href='#L778'>778</a>
|
|
838
|
+
<a name='L779'></a><a href='#L779'>779</a>
|
|
839
|
+
<a name='L780'></a><a href='#L780'>780</a>
|
|
840
|
+
<a name='L781'></a><a href='#L781'>781</a>
|
|
841
|
+
<a name='L782'></a><a href='#L782'>782</a>
|
|
842
|
+
<a name='L783'></a><a href='#L783'>783</a>
|
|
843
|
+
<a name='L784'></a><a href='#L784'>784</a>
|
|
844
|
+
<a name='L785'></a><a href='#L785'>785</a>
|
|
845
|
+
<a name='L786'></a><a href='#L786'>786</a>
|
|
846
|
+
<a name='L787'></a><a href='#L787'>787</a>
|
|
847
|
+
<a name='L788'></a><a href='#L788'>788</a>
|
|
848
|
+
<a name='L789'></a><a href='#L789'>789</a>
|
|
849
|
+
<a name='L790'></a><a href='#L790'>790</a>
|
|
850
|
+
<a name='L791'></a><a href='#L791'>791</a>
|
|
851
|
+
<a name='L792'></a><a href='#L792'>792</a>
|
|
852
|
+
<a name='L793'></a><a href='#L793'>793</a>
|
|
853
|
+
<a name='L794'></a><a href='#L794'>794</a>
|
|
854
|
+
<a name='L795'></a><a href='#L795'>795</a>
|
|
855
|
+
<a name='L796'></a><a href='#L796'>796</a>
|
|
856
|
+
<a name='L797'></a><a href='#L797'>797</a>
|
|
857
|
+
<a name='L798'></a><a href='#L798'>798</a>
|
|
858
|
+
<a name='L799'></a><a href='#L799'>799</a>
|
|
859
|
+
<a name='L800'></a><a href='#L800'>800</a>
|
|
860
|
+
<a name='L801'></a><a href='#L801'>801</a>
|
|
861
|
+
<a name='L802'></a><a href='#L802'>802</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral"> </span>
|
|
862
|
+
<span class="cline-any cline-neutral"> </span>
|
|
863
|
+
<span class="cline-any cline-neutral"> </span>
|
|
864
|
+
<span class="cline-any cline-neutral"> </span>
|
|
865
|
+
<span class="cline-any cline-neutral"> </span>
|
|
866
|
+
<span class="cline-any cline-neutral"> </span>
|
|
867
|
+
<span class="cline-any cline-neutral"> </span>
|
|
868
|
+
<span class="cline-any cline-neutral"> </span>
|
|
869
|
+
<span class="cline-any cline-neutral"> </span>
|
|
539
870
|
<span class="cline-any cline-neutral"> </span>
|
|
540
871
|
<span class="cline-any cline-neutral"> </span>
|
|
541
872
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -628,11 +959,127 @@
|
|
|
628
959
|
<span class="cline-any cline-neutral"> </span>
|
|
629
960
|
<span class="cline-any cline-neutral"> </span>
|
|
630
961
|
<span class="cline-any cline-neutral"> </span>
|
|
962
|
+
<span class="cline-any cline-neutral"> </span>
|
|
963
|
+
<span class="cline-any cline-neutral"> </span>
|
|
964
|
+
<span class="cline-any cline-neutral"> </span>
|
|
965
|
+
<span class="cline-any cline-neutral"> </span>
|
|
966
|
+
<span class="cline-any cline-neutral"> </span>
|
|
967
|
+
<span class="cline-any cline-neutral"> </span>
|
|
968
|
+
<span class="cline-any cline-neutral"> </span>
|
|
969
|
+
<span class="cline-any cline-neutral"> </span>
|
|
970
|
+
<span class="cline-any cline-neutral"> </span>
|
|
971
|
+
<span class="cline-any cline-neutral"> </span>
|
|
972
|
+
<span class="cline-any cline-neutral"> </span>
|
|
973
|
+
<span class="cline-any cline-neutral"> </span>
|
|
974
|
+
<span class="cline-any cline-neutral"> </span>
|
|
975
|
+
<span class="cline-any cline-neutral"> </span>
|
|
976
|
+
<span class="cline-any cline-neutral"> </span>
|
|
977
|
+
<span class="cline-any cline-neutral"> </span>
|
|
978
|
+
<span class="cline-any cline-neutral"> </span>
|
|
979
|
+
<span class="cline-any cline-neutral"> </span>
|
|
980
|
+
<span class="cline-any cline-neutral"> </span>
|
|
981
|
+
<span class="cline-any cline-neutral"> </span>
|
|
982
|
+
<span class="cline-any cline-neutral"> </span>
|
|
983
|
+
<span class="cline-any cline-neutral"> </span>
|
|
984
|
+
<span class="cline-any cline-neutral"> </span>
|
|
985
|
+
<span class="cline-any cline-neutral"> </span>
|
|
986
|
+
<span class="cline-any cline-neutral"> </span>
|
|
987
|
+
<span class="cline-any cline-neutral"> </span>
|
|
988
|
+
<span class="cline-any cline-neutral"> </span>
|
|
989
|
+
<span class="cline-any cline-neutral"> </span>
|
|
990
|
+
<span class="cline-any cline-neutral"> </span>
|
|
991
|
+
<span class="cline-any cline-neutral"> </span>
|
|
992
|
+
<span class="cline-any cline-neutral"> </span>
|
|
993
|
+
<span class="cline-any cline-neutral"> </span>
|
|
994
|
+
<span class="cline-any cline-neutral"> </span>
|
|
995
|
+
<span class="cline-any cline-neutral"> </span>
|
|
996
|
+
<span class="cline-any cline-neutral"> </span>
|
|
997
|
+
<span class="cline-any cline-neutral"> </span>
|
|
998
|
+
<span class="cline-any cline-neutral"> </span>
|
|
999
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1000
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1001
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1002
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1003
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1004
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1005
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1006
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1007
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1008
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1009
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1010
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1011
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1012
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1013
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1014
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1015
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1016
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1017
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1018
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1019
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1020
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1021
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1022
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1023
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1024
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1025
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1026
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1027
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1028
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1029
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1030
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1031
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1032
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1033
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1034
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1035
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1036
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1037
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1038
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1039
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1040
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1041
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1042
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1043
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1044
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1045
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1046
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1047
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1048
|
+
<span class="cline-any cline-neutral"> </span>
|
|
631
1049
|
<span class="cline-any cline-yes">64x</span>
|
|
632
1050
|
<span class="cline-any cline-neutral"> </span>
|
|
633
1051
|
<span class="cline-any cline-neutral"> </span>
|
|
634
1052
|
<span class="cline-any cline-neutral"> </span>
|
|
635
1053
|
<span class="cline-any cline-neutral"> </span>
|
|
1054
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1055
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1056
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1057
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1058
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1059
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1060
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1061
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1062
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1063
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1064
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1065
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1066
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1067
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1068
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1069
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1070
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1071
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1072
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1073
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1074
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1075
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1076
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1077
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1078
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1079
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1080
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1081
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1082
|
+
<span class="cline-any cline-neutral"> </span>
|
|
636
1083
|
<span class="cline-any cline-yes">64x</span>
|
|
637
1084
|
<span class="cline-any cline-yes">64x</span>
|
|
638
1085
|
<span class="cline-any cline-yes">64x</span>
|
|
@@ -676,16 +1123,38 @@
|
|
|
676
1123
|
<span class="cline-any cline-neutral"> </span>
|
|
677
1124
|
<span class="cline-any cline-neutral"> </span>
|
|
678
1125
|
<span class="cline-any cline-neutral"> </span>
|
|
1126
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1127
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1128
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1129
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1130
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1131
|
+
<span class="cline-any cline-neutral"> </span>
|
|
679
1132
|
<span class="cline-any cline-yes">64x</span>
|
|
680
1133
|
<span class="cline-any cline-neutral"> </span>
|
|
681
1134
|
<span class="cline-any cline-neutral"> </span>
|
|
682
1135
|
<span class="cline-any cline-neutral"> </span>
|
|
1136
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1137
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1138
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1139
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1140
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1141
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1142
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1143
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1144
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1145
|
+
<span class="cline-any cline-neutral"> </span>
|
|
683
1146
|
<span class="cline-any cline-yes">64x</span>
|
|
684
1147
|
<span class="cline-any cline-yes">62x</span>
|
|
685
1148
|
<span class="cline-any cline-neutral"> </span>
|
|
686
1149
|
<span class="cline-any cline-yes">64x</span>
|
|
687
1150
|
<span class="cline-any cline-neutral"> </span>
|
|
688
1151
|
<span class="cline-any cline-neutral"> </span>
|
|
1152
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1153
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1154
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1155
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1156
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1157
|
+
<span class="cline-any cline-neutral"> </span>
|
|
689
1158
|
<span class="cline-any cline-yes">64x</span>
|
|
690
1159
|
<span class="cline-any cline-yes">4x</span>
|
|
691
1160
|
<span class="cline-any cline-yes">4x</span>
|
|
@@ -694,10 +1163,27 @@
|
|
|
694
1163
|
<span class="cline-any cline-neutral"> </span>
|
|
695
1164
|
<span class="cline-any cline-neutral"> </span>
|
|
696
1165
|
<span class="cline-any cline-neutral"> </span>
|
|
1166
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1167
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1168
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1169
|
+
<span class="cline-any cline-neutral"> </span>
|
|
697
1170
|
<span class="cline-any cline-yes">64x</span>
|
|
698
1171
|
<span class="cline-any cline-yes">6x</span>
|
|
699
1172
|
<span class="cline-any cline-neutral"> </span>
|
|
700
1173
|
<span class="cline-any cline-neutral"> </span>
|
|
1174
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1175
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1176
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1177
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1178
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1179
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1180
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1181
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1182
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1183
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1184
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1185
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1186
|
+
<span class="cline-any cline-neutral"> </span>
|
|
701
1187
|
<span class="cline-any cline-yes">64x</span>
|
|
702
1188
|
<span class="cline-any cline-yes">5x</span>
|
|
703
1189
|
<span class="cline-any cline-yes">5x</span>
|
|
@@ -709,6 +1195,15 @@
|
|
|
709
1195
|
<span class="cline-any cline-neutral"> </span>
|
|
710
1196
|
<span class="cline-any cline-neutral"> </span>
|
|
711
1197
|
<span class="cline-any cline-neutral"> </span>
|
|
1198
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1199
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1200
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1201
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1202
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1203
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1204
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1205
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1206
|
+
<span class="cline-any cline-neutral"> </span>
|
|
712
1207
|
<span class="cline-any cline-yes">64x</span>
|
|
713
1208
|
<span class="cline-any cline-yes">5x</span>
|
|
714
1209
|
<span class="cline-any cline-yes">4x</span>
|
|
@@ -717,26 +1212,71 @@
|
|
|
717
1212
|
<span class="cline-any cline-neutral"> </span>
|
|
718
1213
|
<span class="cline-any cline-neutral"> </span>
|
|
719
1214
|
<span class="cline-any cline-neutral"> </span>
|
|
1215
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1216
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1217
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1218
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1219
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1220
|
+
<span class="cline-any cline-neutral"> </span>
|
|
720
1221
|
<span class="cline-any cline-yes">64x</span>
|
|
721
1222
|
<span class="cline-any cline-yes">8x</span>
|
|
722
1223
|
<span class="cline-any cline-neutral"> </span>
|
|
723
1224
|
<span class="cline-any cline-neutral"> </span>
|
|
1225
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1226
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1227
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1228
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1229
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1230
|
+
<span class="cline-any cline-neutral"> </span>
|
|
724
1231
|
<span class="cline-any cline-yes">64x</span>
|
|
725
1232
|
<span class="cline-any cline-yes">1x</span>
|
|
726
1233
|
<span class="cline-any cline-neutral"> </span>
|
|
727
1234
|
<span class="cline-any cline-neutral"> </span>
|
|
1235
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1236
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1237
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1238
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1239
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1240
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1241
|
+
<span class="cline-any cline-neutral"> </span>
|
|
728
1242
|
<span class="cline-any cline-yes">64x</span>
|
|
729
1243
|
<span class="cline-any cline-yes">3x</span>
|
|
730
1244
|
<span class="cline-any cline-neutral"> </span>
|
|
731
1245
|
<span class="cline-any cline-neutral"> </span>
|
|
1246
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1247
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1248
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1249
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1250
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1251
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1252
|
+
<span class="cline-any cline-neutral"> </span>
|
|
732
1253
|
<span class="cline-any cline-yes">64x</span>
|
|
733
1254
|
<span class="cline-any cline-yes">10x</span>
|
|
734
1255
|
<span class="cline-any cline-neutral"> </span>
|
|
735
1256
|
<span class="cline-any cline-neutral"> </span>
|
|
1257
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1258
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1259
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1260
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1261
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1262
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1263
|
+
<span class="cline-any cline-neutral"> </span>
|
|
736
1264
|
<span class="cline-any cline-yes">64x</span>
|
|
737
1265
|
<span class="cline-any cline-yes">3x</span>
|
|
738
1266
|
<span class="cline-any cline-neutral"> </span>
|
|
739
1267
|
<span class="cline-any cline-neutral"> </span>
|
|
1268
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1269
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1270
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1271
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1272
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1273
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1274
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1275
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1276
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1277
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1278
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1279
|
+
<span class="cline-any cline-neutral"> </span>
|
|
740
1280
|
<span class="cline-any cline-yes">64x</span>
|
|
741
1281
|
<span class="cline-any cline-yes">6x</span>
|
|
742
1282
|
<span class="cline-any cline-yes">6x</span>
|
|
@@ -745,6 +1285,16 @@
|
|
|
745
1285
|
<span class="cline-any cline-neutral"> </span>
|
|
746
1286
|
<span class="cline-any cline-neutral"> </span>
|
|
747
1287
|
<span class="cline-any cline-neutral"> </span>
|
|
1288
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1289
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1290
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1291
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1292
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1293
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1294
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1295
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1296
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1297
|
+
<span class="cline-any cline-neutral"> </span>
|
|
748
1298
|
<span class="cline-any cline-yes">64x</span>
|
|
749
1299
|
<span class="cline-any cline-yes">2x</span>
|
|
750
1300
|
<span class="cline-any cline-yes">2x</span>
|
|
@@ -752,41 +1302,106 @@
|
|
|
752
1302
|
<span class="cline-any cline-neutral"> </span>
|
|
753
1303
|
<span class="cline-any cline-neutral"> </span>
|
|
754
1304
|
<span class="cline-any cline-neutral"> </span>
|
|
1305
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1306
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1307
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1308
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1309
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1310
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1311
|
+
<span class="cline-any cline-neutral"> </span>
|
|
755
1312
|
<span class="cline-any cline-yes">64x</span>
|
|
756
1313
|
<span class="cline-any cline-yes">3x</span>
|
|
757
1314
|
<span class="cline-any cline-yes">3x</span>
|
|
758
1315
|
<span class="cline-any cline-neutral"> </span>
|
|
759
1316
|
<span class="cline-any cline-neutral"> </span>
|
|
760
1317
|
<span class="cline-any cline-neutral"> </span>
|
|
1318
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1319
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1320
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1321
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1322
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1323
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1324
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1325
|
+
<span class="cline-any cline-neutral"> </span>
|
|
761
1326
|
<span class="cline-any cline-yes">64x</span>
|
|
762
1327
|
<span class="cline-any cline-yes">1x</span>
|
|
763
1328
|
<span class="cline-any cline-yes">1x</span>
|
|
764
1329
|
<span class="cline-any cline-yes">1x</span>
|
|
765
1330
|
<span class="cline-any cline-neutral"> </span>
|
|
766
1331
|
<span class="cline-any cline-neutral"> </span>
|
|
1332
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1333
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1334
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1335
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1336
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1337
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1338
|
+
<span class="cline-any cline-neutral"> </span>
|
|
767
1339
|
<span class="cline-any cline-yes">64x</span>
|
|
768
1340
|
<span class="cline-any cline-yes">5x</span>
|
|
769
1341
|
<span class="cline-any cline-yes">5x</span>
|
|
770
1342
|
<span class="cline-any cline-neutral"> </span>
|
|
771
1343
|
<span class="cline-any cline-neutral"> </span>
|
|
1344
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1345
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1346
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1347
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1348
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1349
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1350
|
+
<span class="cline-any cline-neutral"> </span>
|
|
772
1351
|
<span class="cline-any cline-yes">64x</span>
|
|
773
1352
|
<span class="cline-any cline-yes">4x</span>
|
|
774
1353
|
<span class="cline-any cline-yes">4x</span>
|
|
775
1354
|
<span class="cline-any cline-neutral"> </span>
|
|
776
1355
|
<span class="cline-any cline-neutral"> </span>
|
|
1356
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1357
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1358
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1359
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1360
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1361
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1362
|
+
<span class="cline-any cline-neutral"> </span>
|
|
777
1363
|
<span class="cline-any cline-yes">64x</span>
|
|
778
1364
|
<span class="cline-any cline-yes">1x</span>
|
|
779
1365
|
<span class="cline-any cline-yes">1x</span>
|
|
780
1366
|
<span class="cline-any cline-neutral"> </span>
|
|
781
1367
|
<span class="cline-any cline-neutral"> </span>
|
|
1368
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1369
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1370
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1371
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1372
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1373
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1374
|
+
<span class="cline-any cline-neutral"> </span>
|
|
782
1375
|
<span class="cline-any cline-yes">64x</span>
|
|
783
1376
|
<span class="cline-any cline-yes">2x</span>
|
|
784
1377
|
<span class="cline-any cline-neutral"> </span>
|
|
785
1378
|
<span class="cline-any cline-neutral"> </span>
|
|
1379
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1380
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1381
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1382
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1383
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1384
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1385
|
+
<span class="cline-any cline-neutral"> </span>
|
|
786
1386
|
<span class="cline-any cline-yes">64x</span>
|
|
787
1387
|
<span class="cline-any cline-yes">2x</span>
|
|
788
1388
|
<span class="cline-any cline-neutral"> </span>
|
|
789
1389
|
<span class="cline-any cline-neutral"> </span>
|
|
1390
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1391
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1392
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1393
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1394
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1395
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1396
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1397
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1398
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1399
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1400
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1401
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1402
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1403
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1404
|
+
<span class="cline-any cline-neutral"> </span>
|
|
790
1405
|
<span class="cline-any cline-yes">64x</span>
|
|
791
1406
|
<span class="cline-any cline-neutral"> </span>
|
|
792
1407
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -803,6 +1418,17 @@
|
|
|
803
1418
|
<span class="cline-any cline-yes">7x</span>
|
|
804
1419
|
<span class="cline-any cline-neutral"> </span>
|
|
805
1420
|
<span class="cline-any cline-neutral"> </span>
|
|
1421
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1422
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1423
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1424
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1425
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1426
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1427
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1428
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1429
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1430
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1431
|
+
<span class="cline-any cline-neutral"> </span>
|
|
806
1432
|
<span class="cline-any cline-yes">64x</span>
|
|
807
1433
|
<span class="cline-any cline-yes">180x</span>
|
|
808
1434
|
<span class="cline-any cline-yes">180x</span>
|
|
@@ -810,6 +1436,16 @@
|
|
|
810
1436
|
<span class="cline-any cline-yes">180x</span>
|
|
811
1437
|
<span class="cline-any cline-neutral"> </span>
|
|
812
1438
|
<span class="cline-any cline-neutral"> </span>
|
|
1439
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1440
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1441
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1442
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1443
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1444
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1445
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1446
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1447
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1448
|
+
<span class="cline-any cline-neutral"> </span>
|
|
813
1449
|
<span class="cline-any cline-yes">64x</span>
|
|
814
1450
|
<span class="cline-any cline-yes">62x</span>
|
|
815
1451
|
<span class="cline-any cline-yes">62x</span>
|
|
@@ -818,6 +1454,15 @@
|
|
|
818
1454
|
<span class="cline-any cline-yes">62x</span>
|
|
819
1455
|
<span class="cline-any cline-neutral"> </span>
|
|
820
1456
|
<span class="cline-any cline-neutral"> </span>
|
|
1457
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1458
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1459
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1460
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1461
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1462
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1463
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1464
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1465
|
+
<span class="cline-any cline-neutral"> </span>
|
|
821
1466
|
<span class="cline-any cline-yes">64x</span>
|
|
822
1467
|
<span class="cline-any cline-yes">132x</span>
|
|
823
1468
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -825,6 +1470,7 @@
|
|
|
825
1470
|
<span class="cline-any cline-neutral"> </span>
|
|
826
1471
|
<span class="cline-any cline-neutral"> </span>
|
|
827
1472
|
<span class="cline-any cline-neutral"> </span>
|
|
1473
|
+
<span class="cline-any cline-neutral"> </span>
|
|
828
1474
|
<span class="cline-any cline-yes">133x</span>
|
|
829
1475
|
<span class="cline-any cline-yes">2x</span>
|
|
830
1476
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -1026,7 +1672,15 @@ import RecommendedInsulin from "./components/RecommendedInsulin";
|
|
|
1026
1672
|
import Remeasure from "./components/Remeasure";
|
|
1027
1673
|
|
|
1028
1674
|
import * as Calculator from "@hedia/recommendation-calculator";
|
|
1029
|
-
import {
|
|
1675
|
+
import {
|
|
1676
|
+
BloodGlucoseUnit,
|
|
1677
|
+
BloodKetonesUnit,
|
|
1678
|
+
BolusCalculator,
|
|
1679
|
+
Languages,
|
|
1680
|
+
Logbook,
|
|
1681
|
+
Milliseconds,
|
|
1682
|
+
UserSettings,
|
|
1683
|
+
} from "@hedia/types";
|
|
1030
1684
|
import { I18nProvider } from "@lingui/react";
|
|
1031
1685
|
import Emotion from "./components/mood/Emotion";
|
|
1032
1686
|
import TransferToLogbook from "./components/TransferToLogbook";
|
|
@@ -1040,7 +1694,7 @@ import RecommendationModal from "./components/RecommendationModal";
|
|
|
1040
1694
|
import TwoOptionModal, { modalStyle } from "./components/TwoOptionModal";
|
|
1041
1695
|
import { changeLanguage, i18n } from "./locale/i18nUtils";
|
|
1042
1696
|
import { Testing } from "./types/enum";
|
|
1043
|
-
import { IActivityDisplayProps
|
|
1697
|
+
import { IActivityDisplayProps } from "./types/types";
|
|
1044
1698
|
import { Messages } from "./utils/AttentionMessages";
|
|
1045
1699
|
import { getAttentionMessage, getBGLevel, getLimitationMessage, getReminder } from "./utils/RecommendationUtils";
|
|
1046
1700
|
import { Utils } from "./utils/Utils";
|
|
@@ -1052,28 +1706,65 @@ const { InfoBarTestIds, RecommendationScreenTestIds } = Testing.Id;
|
|
|
1052
1706
|
// https://github.com/facebook/react-native/issues/12981#issuecomment-652745831
|
|
1053
1707
|
YellowBox.ignoreWarnings([`Setting a timer`]);
|
|
1054
1708
|
|
|
1055
|
-
|
|
1709
|
+
/** Represents both a suggestion by HDA and an actual amount of either insulin or carbohydrates. */
|
|
1710
|
+
export interface IResult {
|
|
1711
|
+
/** The suggested amount (of insulin in units or carbohydrates in grams) */
|
|
1056
1712
|
suggested: number;
|
|
1713
|
+
/** The actual amount (of insulin in units or carbohydrates in grams) */
|
|
1057
1714
|
entered: number | null;
|
|
1058
1715
|
}
|
|
1059
1716
|
|
|
1060
1717
|
export interface IRecommendationProps {
|
|
1061
|
-
|
|
1718
|
+
/** The blood glucose measurement unit that the user prefers. */
|
|
1062
1719
|
bloodGlucoseUnit: BloodGlucoseUnit;
|
|
1720
|
+
/** The user’s preferred language. */
|
|
1063
1721
|
language: Languages;
|
|
1722
|
+
/** The user’s preferred default reminder time in hours when they enter carbohydrates or an activity. */
|
|
1064
1723
|
userReminder: number;
|
|
1065
|
-
|
|
1724
|
+
/** The values needed to make an insulin recommendation calculation. */
|
|
1725
|
+
calculatorParams: BolusCalculator.Types.IRecommendationParams;
|
|
1726
|
+
/** Indicates which method the user uses to inject insulin and thus how insulin amounts should be rounded. */
|
|
1066
1727
|
injectionMethod: UserSettings.Enums.InjectionMethod;
|
|
1728
|
+
/** The user’s entered current blood ketones value. Null if no blood ketones value was entered. */
|
|
1067
1729
|
currentBKL: number | null;
|
|
1730
|
+
/** The blood ketones measurement unit that the user prefers. Null if the user hasn’t selected a preferred blood ketones unit. */
|
|
1068
1731
|
bloodKetoneUnit: BloodKetonesUnit | null;
|
|
1069
|
-
|
|
1732
|
+
/** The latest logbook entry (if any) from the last 6 hours. */
|
|
1733
|
+
latestLogbookFrom6Hours: Logbook.Types.ILogbookEntry | null;
|
|
1734
|
+
/** The properties of the entered activity that are not used for making the calculation itself, but will be used on the recommendation screen. */
|
|
1070
1735
|
activityDisplayProps: IActivityDisplayProps | null;
|
|
1071
1736
|
|
|
1072
|
-
|
|
1737
|
+
/**
|
|
1738
|
+
* Callback function taking a single boolean argument and returning nothing.
|
|
1739
|
+
* To be called when the user decides on a presented carbohydrate recommendation.
|
|
1740
|
+
* @param carbRecommendationAnswer Whether the user chose to accept (true) or reject (false) the carbohydrate recommendation.
|
|
1741
|
+
*/
|
|
1073
1742
|
carbRecommendationAnswer(carbRecommendationAnswer: boolean): void;
|
|
1743
|
+
/**
|
|
1744
|
+
* Callback function without arguments or return values.
|
|
1745
|
+
* To be called if the user decides to exit the recommendation screen without transferring any of the data to the logbook.
|
|
1746
|
+
* The unsaved logbook data shall be cleared.
|
|
1747
|
+
*/
|
|
1074
1748
|
closeCalculationCallback(): void;
|
|
1749
|
+
/**
|
|
1750
|
+
* Callback function without arguments or return values.
|
|
1751
|
+
* To be called if the user closes the recommendation screen by tapping the cancel button in the header.
|
|
1752
|
+
*/
|
|
1075
1753
|
exitCallback(): void;
|
|
1754
|
+
/**
|
|
1755
|
+
* Callback function without arguments or return values.
|
|
1756
|
+
* To be called if the user taps “Yes” when asked if they have taken insulin recently.
|
|
1757
|
+
* Should allow the user to enter when they injected insulin and how much.
|
|
1758
|
+
*/
|
|
1076
1759
|
onRecentInsulinYes(): void;
|
|
1760
|
+
/**
|
|
1761
|
+
* To be called when the “Transfer to Logbook” button is pressed.
|
|
1762
|
+
* @param carbs The suggested and entered amount of carbohydrates.
|
|
1763
|
+
* @param insulin The suggested and entered amount of insulin.
|
|
1764
|
+
* @param reminder The amount of time in hours until the user should get a reminder to measure their BGL again.
|
|
1765
|
+
* @param recommendationDate The date and time when the recommendation calculation was made.
|
|
1766
|
+
* @param mood The mood the user has selected
|
|
1767
|
+
*/
|
|
1077
1768
|
transferToLogbook(
|
|
1078
1769
|
carbs: IResult,
|
|
1079
1770
|
insulin: IResult,
|
|
@@ -1081,35 +1772,114 @@ export interface IRecommendationProps {
|
|
|
1081
1772
|
recommendationDate: Date,
|
|
1082
1773
|
mood: Logbook.Enums.MoodEnum | null,
|
|
1083
1774
|
): void;
|
|
1775
|
+
/**
|
|
1776
|
+
* Callback function taking a single argument of type RecommendationError.
|
|
1777
|
+
* To be called in case a serious issue with the validity of input data is detected.
|
|
1778
|
+
* @param error The detected error.
|
|
1779
|
+
*/
|
|
1084
1780
|
onError(error: RecommendationError): void;
|
|
1781
|
+
/**
|
|
1782
|
+
* Callback function taking a single argument of type boolean.
|
|
1783
|
+
* To be called to hide the bottom navigation bar while displaying modal dialogs.
|
|
1784
|
+
* @param toggle Showing (true) or hiding (false) the bottom navigation bar on the calculation flow screens.
|
|
1785
|
+
*/
|
|
1085
1786
|
showBolusBar(toggle: boolean): void;
|
|
1787
|
+
/**
|
|
1788
|
+
* Callback function taking no arguments.
|
|
1789
|
+
* To be called if the user chooses to restart the calculation.
|
|
1790
|
+
*/
|
|
1086
1791
|
restartCalculation(): void;
|
|
1087
1792
|
}
|
|
1088
1793
|
|
|
1089
1794
|
interface IState {
|
|
1795
|
+
/** The time in hours in hours until a reminder notification will be sent to the user. If 0 then no notification will be sent. */
|
|
1090
1796
|
remeasureTime: number;
|
|
1797
|
+
/**
|
|
1798
|
+
* If true then the user will see the insulin input field with their recommendation.
|
|
1799
|
+
* Otherwise, the user will be presented with a card that asks them whether they have taken bolus insulin within the last 4 hours
|
|
1800
|
+
*/
|
|
1091
1801
|
isRecommendationDisplayed: boolean;
|
|
1802
|
+
/** The suggested amount of insulin. */
|
|
1092
1803
|
insulinRecommendation: number;
|
|
1804
|
+
/** The fraction by which the recommendation was multiplied to get the reduced amount */
|
|
1093
1805
|
activityReduction: number | null;
|
|
1806
|
+
/** Indicates whether or not the insulin recommendation was limited by the maximum threshold. */
|
|
1094
1807
|
wasLimited: boolean;
|
|
1808
|
+
/** The suggested amount of additional carbs. */
|
|
1095
1809
|
carbRecommendation: number | null;
|
|
1810
|
+
/** The amount of IOB that was estimated during the recommendation calculation. */
|
|
1096
1811
|
activeInsulin: number;
|
|
1812
|
+
/** The mood that is currently selected or null if no mood is selected. */
|
|
1097
1813
|
selectedMood: Logbook.Enums.MoodEnum | null;
|
|
1814
|
+
/** The amount of carbs that are being shown in the additional carbs input field. */
|
|
1098
1815
|
enteredCarbs: number | null;
|
|
1816
|
+
/** The current insulin value in the insulin recommendation/input field. */
|
|
1099
1817
|
enteredInsulin: number | null;
|
|
1818
|
+
/** Indicates whether or not the modal for displaying warnings and other special messages should be visible. */
|
|
1100
1819
|
recommendationModal: boolean;
|
|
1820
|
+
/**
|
|
1821
|
+
* Keeps track of whether or not the exit modal should be displayed.
|
|
1822
|
+
* The exit modal prompts the user to consider saving the calculation to a logbook entry before closing the recommendation screen.
|
|
1823
|
+
*/
|
|
1101
1824
|
showExitModal: boolean;
|
|
1825
|
+
/** Keeps track of whether or not a message about insulin limitation should be displayed. */
|
|
1102
1826
|
showLimitationMessage: boolean;
|
|
1827
|
+
/** Keeps track of whether or not a message about the recommendation being too old should be displayed. */
|
|
1103
1828
|
showTimeoutModal: boolean;
|
|
1104
1829
|
}
|
|
1105
1830
|
|
|
1831
|
+
/**
|
|
1832
|
+
* The RecommendationScreen is the React component that passes relevant inputs to the recommendation calculation module and presents
|
|
1833
|
+
* the resulting recommendation along with related messages or warnings to the user.
|
|
1834
|
+
* The RecommendationScreen component accepts properties with the user’s settings/preferences and other inputs needed for calculating a recommendation.
|
|
1835
|
+
* @noInheritDoc
|
|
1836
|
+
*/
|
|
1106
1837
|
export default class RecommendationScreen extends React.Component<IRecommendationProps, IState> {
|
|
1838
|
+
/** Reference to the timer that prompts the user to make a new calculation after 15 minutes. */
|
|
1107
1839
|
private readonly timer!: ReturnType<typeof setTimeout>;
|
|
1840
|
+
/**
|
|
1841
|
+
* The carbohydrate recommendation for the user.
|
|
1842
|
+
* This value is saved in a member variable because we want to store it unmodified if the logbook entry
|
|
1843
|
+
* gets saved regardless of what other changes were made on the recommendation screen.
|
|
1844
|
+
*/
|
|
1108
1845
|
private readonly suggestedCarbs!: number;
|
|
1846
|
+
/**
|
|
1847
|
+
* A guard against displaying wrong or dangerous information to the user.
|
|
1848
|
+
* If an error has occurred, this variable will be set to true and an empty placeholder will be rendered instead of the normal recommendation screen.
|
|
1849
|
+
*/
|
|
1109
1850
|
private readonly hasError: boolean = false;
|
|
1851
|
+
/** The timestamp when the current recommendation was made. For determining if the recommendation is too old and should be hidden from the user. */
|
|
1110
1852
|
private readonly recommendationDate!: Date;
|
|
1853
|
+
/**
|
|
1854
|
+
* A reference to the screens scrollview allowing us to programmatically scroll the screen in the handleNoRecentInsulin() method.
|
|
1855
|
+
* The member is initiated without a value but will be set as soon as the component is being rendered.
|
|
1856
|
+
*/
|
|
1111
1857
|
private scrollView?: ScrollView;
|
|
1112
1858
|
|
|
1859
|
+
/**
|
|
1860
|
+
* Steps:
|
|
1861
|
+
* 1. Call the super() method with the props.
|
|
1862
|
+
* 2. Execute the following steps and if an exception is thrown, catch it, set the hasError member variable to true and call the onError callback prop with the caught exception as argument:
|
|
1863
|
+
* - Call the validateParams() method with the props as argument
|
|
1864
|
+
* - Set the recommendationDate member to the current date and time
|
|
1865
|
+
* - Set the language by using the language prop as argument for calling changeLanguage()
|
|
1866
|
+
* - Unpack recentBoluses from the calculatorParams prop.
|
|
1867
|
+
* - Use the calculatorParams prop as argument for calling calculateRecommendation() and unpack all of the resulting values.
|
|
1868
|
+
* - Copy the carbRecommendation to the suggestedCarbs member variable.
|
|
1869
|
+
* - Set the following state variables:
|
|
1870
|
+
* - Set remeasureTime to the return value from calling the getBGLevelRemeasurementReminder() method.
|
|
1871
|
+
* - Set isRecommendationDisplayed to be false if the length of recentBoluses is 0 or false otherwise.
|
|
1872
|
+
* - Set insulinRecommendation to be the bolus insulin recommendation rounded using roundValue().
|
|
1873
|
+
* - Set wasLimited to the wasLimited return value from calling calculateRecommendation() above.
|
|
1874
|
+
* - Set activityReduction to the reduction returned from the calculation result.
|
|
1875
|
+
* - Set carbRecommendation to the recommendation returned from the calculation result.
|
|
1876
|
+
* - Set activeInsulin to the estimation returned from the calculation result.
|
|
1877
|
+
* - Set enteredCarbs, enteredInsulin, selectedMood to null.
|
|
1878
|
+
* - Set recommendationModal to be true if wasLimited is true or if carbRecommendation after being rounded is truthy or if the return value from calling the getBGLevelAttentionMessage() method is truthy.
|
|
1879
|
+
* - Set showExitModal, showLimitationMessage, showTimeoutModal to be false.
|
|
1880
|
+
* 3. Start a 15 minute timer assigned to the timer member variable using the setTimeout() function. When the timer expires, call the showTimeoutModal() method.
|
|
1881
|
+
* @param props The data required to initialise the Recommendation Screen
|
|
1882
|
+
*/
|
|
1113
1883
|
constructor(props: IRecommendationProps) {
|
|
1114
1884
|
super(props);
|
|
1115
1885
|
try {
|
|
@@ -1153,10 +1923,26 @@ export default class RecommendationScreen extends React.Component<IRecommenda
|
|
|
1153
1923
|
}
|
|
1154
1924
|
}
|
|
1155
1925
|
|
|
1926
|
+
/**
|
|
1927
|
+
* Called immediately after a component is mounted. Setting state here will trigger re-rendering.
|
|
1928
|
+
*
|
|
1929
|
+
* Steps:
|
|
1930
|
+
* 1. Create a listener to call the handleAppStateChange() method when the app state changes.
|
|
1931
|
+
*/
|
|
1156
1932
|
public componentDidMount(): void {
|
|
1157
1933
|
AppState.addEventListener(`change`, this.handleAppStateChange);
|
|
1158
1934
|
}
|
|
1159
1935
|
|
|
1936
|
+
/**
|
|
1937
|
+
* Called immediately before a component is destroyed.
|
|
1938
|
+
* Perform any necessary cleanup in this method, such as cancelled network requests, or cleaning up any DOM elements created in componentDidMount.
|
|
1939
|
+
*
|
|
1940
|
+
* Clear the 15 minute timer that was set in the constructor during initialisation so it doesn’t keep running and gets triggered after the recommendation screen was closed.
|
|
1941
|
+
*
|
|
1942
|
+
* Steps:
|
|
1943
|
+
* 1. Call clearTimeout on the timer member variable.
|
|
1944
|
+
* 2. Remove the listener for app state changes that was set by the componentDidMount() method.
|
|
1945
|
+
*/
|
|
1160
1946
|
public componentWillUnmount(): void {
|
|
1161
1947
|
if (this.timer !== undefined) {
|
|
1162
1948
|
clearTimeout(this.timer);
|
|
@@ -1164,6 +1950,12 @@ export default class RecommendationScreen extends React.Component<IRecommenda
|
|
|
1164
1950
|
AppState.removeEventListener(`change`, this.handleAppStateChange);
|
|
1165
1951
|
}
|
|
1166
1952
|
|
|
1953
|
+
/**
|
|
1954
|
+
* Steps:
|
|
1955
|
+
* 1. Evaluate a boolean called isOlderThan15Minutes to indicate whether the recommendationDate member variable represents a time more than 15 minutes ago.
|
|
1956
|
+
* 2. If nextAppState is ‘active’ and isOlderThan15Minutes is true then call the showTimeoutModal() method.
|
|
1957
|
+
* @param nextAppState The new state of the app.
|
|
1958
|
+
*/
|
|
1167
1959
|
public handleAppStateChange = (nextAppState: AppStateStatus): void => {
|
|
1168
1960
|
const time = this.recommendationDate.getTime();
|
|
1169
1961
|
const isOlderThan15Minutes = global.Date.now() - time > Milliseconds.Minute * 15;
|
|
@@ -1172,11 +1964,28 @@ export default class RecommendationScreen extends React.Component<IRecommenda
|
|
|
1172
1964
|
}
|
|
1173
1965
|
};
|
|
1174
1966
|
|
|
1967
|
+
/**
|
|
1968
|
+
* Steps:
|
|
1969
|
+
* 1. Set the showTimeoutModal state variable to be true. Use a callback function to call the showBolusBar prop callback function with false as argument when the state has been updated.
|
|
1970
|
+
* */
|
|
1175
1971
|
public showTimeoutModal = (): void => {
|
|
1176
1972
|
this.setState({ showTimeoutModal: true }, (): void => this.props.showBolusBar(!this.state.showTimeoutModal));
|
|
1177
1973
|
};
|
|
1178
1974
|
|
|
1179
|
-
|
|
1975
|
+
/**
|
|
1976
|
+
* Make a new insulin calculation and set the result to be displayed to the user.
|
|
1977
|
+
*
|
|
1978
|
+
* Steps:
|
|
1979
|
+
* 1. Use calculatorParams as an argument for calling calculateRecommendation(). Unpack bolus, wasLimited, and activityReduction from the result.
|
|
1980
|
+
* 2. Set the following state variables:
|
|
1981
|
+
* - Set insulinRecommendation to the bolus rounded using the roundValue() function.
|
|
1982
|
+
* - Set enteredInsulin to be undefined.
|
|
1983
|
+
* - Set wasLimited to be the value returned from the insulin calculator.
|
|
1984
|
+
* - Set activityReduction to be the value returned from the insulin calculator.
|
|
1985
|
+
* - Set showLimitationMessage to be the wasLimited value returned from the insulin calculator.
|
|
1986
|
+
* @param calculatorParams The input values for the bolus calculator itself.
|
|
1987
|
+
*/
|
|
1988
|
+
public recalculateInsulin = (calculatorParams: BolusCalculator.Types.IRecommendationParams): void => {
|
|
1180
1989
|
const { bolus, wasLimited, activityReduction } = Calculator.calculateRecommendation(calculatorParams);
|
|
1181
1990
|
this.setState({
|
|
1182
1991
|
insulinRecommendation: Utils.roundValue(bolus, this.props.injectionMethod),
|
|
@@ -1187,6 +1996,15 @@ export default class RecommendationScreen extends React.Component<IRecommenda
|
|
|
1187
1996
|
});
|
|
1188
1997
|
};
|
|
1189
1998
|
|
|
1999
|
+
/**
|
|
2000
|
+
* Handle presses on the exit button in the header bar.
|
|
2001
|
+
*
|
|
2002
|
+
* Steps:
|
|
2003
|
+
* 1. If the insulin recommendation is being displayed (the isRecommendationDisplayed state variable is true):
|
|
2004
|
+
* - Set the showExitModal state variable to true. When the state has been updated, call the showBolusBar prop callback function with the inverse value of the showExitModal state variable as argument.
|
|
2005
|
+
* 2. Else:
|
|
2006
|
+
* - Call the exitCallback prop callback function.
|
|
2007
|
+
*/
|
|
1190
2008
|
public onExit = (): void => {
|
|
1191
2009
|
if (this.state.isRecommendationDisplayed) {
|
|
1192
2010
|
this.setState({ showExitModal: true }, (): void => this.props.showBolusBar(!this.state.showExitModal));
|
|
@@ -1195,26 +2013,71 @@ export default class RecommendationScreen extends React.Component<IRecommenda
|
|
|
1195
2013
|
}
|
|
1196
2014
|
};
|
|
1197
2015
|
|
|
2016
|
+
/**
|
|
2017
|
+
* Hide the modal that shows attention messages.
|
|
2018
|
+
*
|
|
2019
|
+
* Steps:
|
|
2020
|
+
* 1. Set the recommendationModal state variable to false.
|
|
2021
|
+
*/
|
|
1198
2022
|
public hideAttentionModal = (): void => {
|
|
1199
2023
|
this.setState({ recommendationModal: false });
|
|
1200
2024
|
};
|
|
1201
2025
|
|
|
2026
|
+
/**
|
|
2027
|
+
* Hide the modal that shows attention messages.
|
|
2028
|
+
*
|
|
2029
|
+
* Steps:
|
|
2030
|
+
* 1. Set the showLimitationMessage state variable to false.
|
|
2031
|
+
*/
|
|
1202
2032
|
public hideLimitationMessage = (): void => {
|
|
1203
2033
|
this.setState({ showLimitationMessage: false });
|
|
1204
2034
|
};
|
|
1205
2035
|
|
|
2036
|
+
/**
|
|
2037
|
+
* Hide the exit modal. To be used when the user closes the modal directly or in some way exits the recommendation screen.
|
|
2038
|
+
*
|
|
2039
|
+
* Steps:
|
|
2040
|
+
* 1. Set the showExitModal state variable to false.
|
|
2041
|
+
* When the state has been updated, call the showBolusBar prop callback function with the inverse value of the showExitModal state variable as argument.
|
|
2042
|
+
*/
|
|
1206
2043
|
public hideExitModal = (): void => {
|
|
1207
2044
|
this.setState({ showExitModal: false }, (): void => this.props.showBolusBar(!this.state.showExitModal));
|
|
1208
2045
|
};
|
|
1209
2046
|
|
|
2047
|
+
/**
|
|
2048
|
+
* Hide the modal that warns the user that their recommendation is old.
|
|
2049
|
+
*
|
|
2050
|
+
* Steps:
|
|
2051
|
+
* 1. Set the showTimeoutModal state variable to false.
|
|
2052
|
+
* When the state has been updated, call the showBolusBar prop callback function with the inverse value of the showTimeoutModal state variable as argument.
|
|
2053
|
+
*/
|
|
1210
2054
|
public hideTimeoutModal = (): void => {
|
|
1211
2055
|
this.setState({ showTimeoutModal: false }, (): void => this.props.showBolusBar(!this.state.showTimeoutModal));
|
|
1212
2056
|
};
|
|
1213
2057
|
|
|
2058
|
+
/**
|
|
2059
|
+
* Used as a callback function for the Remeasure component to update the state when the remeasure time slider’s value changes.
|
|
2060
|
+
*
|
|
2061
|
+
* Steps:
|
|
2062
|
+
* 1. Set the remeasureTime state variable to the value of the remeasureTime argument.
|
|
2063
|
+
* @param remeasureTime The number of hours for which to wait before reminding the user to measure their BGL again. 0 indicates that the user should not be reminded.
|
|
2064
|
+
*/
|
|
1214
2065
|
public updateRemeasureTime = (remeasureTime: number): void => {
|
|
1215
2066
|
this.setState({ remeasureTime });
|
|
1216
2067
|
};
|
|
1217
2068
|
|
|
2069
|
+
/**
|
|
2070
|
+
* Handle what happens if the user taps “No” to the question about injecting insulin within the last 4 hours.
|
|
2071
|
+
* The card that prompts the user to answer if they have injected insulin within the last 4 hours shall be hidden and
|
|
2072
|
+
* the screen shall automatically be scrolled to the bottom so the user can see the now visible “Transfer to logbook” button.
|
|
2073
|
+
*
|
|
2074
|
+
* Steps:
|
|
2075
|
+
* 1. Set the isRecommendationDisplayed state variable to be true.
|
|
2076
|
+
* 2. As a callback to the setState() method, define a new anonymous function that calls setTimeout() with a duration of 0 milliseconds.
|
|
2077
|
+
* When the time expires, call the scrollToEnd() method of the scrollView member, with the animated argument set to true.
|
|
2078
|
+
* This ensures that the scroll event happens after all other events that get queued to happen at the same time,
|
|
2079
|
+
* so all relevant elements are visible on the screen and the scroll happens reliably.
|
|
2080
|
+
*/
|
|
1218
2081
|
public handleNoRecentInsulin = (): void => {
|
|
1219
2082
|
this.setState({ isRecommendationDisplayed: true }, (): void => {
|
|
1220
2083
|
setTimeout((): void => {
|
|
@@ -1223,6 +2086,16 @@ export default class RecommendationScreen extends React.Component<IRecommenda
|
|
|
1223
2086
|
});
|
|
1224
2087
|
};
|
|
1225
2088
|
|
|
2089
|
+
/**
|
|
2090
|
+
* Handle what happens when the user changes the content of the additional carbohydrates input field.
|
|
2091
|
+
*
|
|
2092
|
+
* Steps:
|
|
2093
|
+
* 1. Set the enteredCarbs state variable to the value of the enteredCarbs argument.
|
|
2094
|
+
* 2. As a callback to the setState() method, define a new anonymous function that calls the recalculateInsulin() function using
|
|
2095
|
+
* a copy of the calculatorParams prop where the carbohydrates property has been overwritten to be
|
|
2096
|
+
* the sum of the carbohydrates property of the calculatorParams prop and the enteredCarbs argument.
|
|
2097
|
+
* @param enteredCarbs The amount of carbohydrates in grams that has been entered in the additional carbohydrates input field.
|
|
2098
|
+
*/
|
|
1226
2099
|
public updateCarbRecommendation = (enteredCarbs: number): void => {
|
|
1227
2100
|
const providedCarbs = this.props.calculatorParams.carbohydrates;
|
|
1228
2101
|
this.setState({ enteredCarbs }, (): void => {
|
|
@@ -1230,41 +2103,106 @@ export default class RecommendationScreen extends React.Component<IRecommenda
|
|
|
1230
2103
|
});
|
|
1231
2104
|
};
|
|
1232
2105
|
|
|
2106
|
+
/**
|
|
2107
|
+
* Handle what happens when the cross button by the additional carbohydrates button is tapped.
|
|
2108
|
+
*
|
|
2109
|
+
* Steps:
|
|
2110
|
+
* 1. Set both the enteredCarbs and the carbRecommendation state variables to null.
|
|
2111
|
+
* 2. As a callback to the setState() method, define a new anonymous function that calls the recalculateInsulin() function using a copy of the calculatorParams prop.
|
|
2112
|
+
*/
|
|
1233
2113
|
public removeCarbRecommendation = (): void => {
|
|
1234
2114
|
this.setState({ enteredCarbs: null, carbRecommendation: null }, (): void =>
|
|
1235
2115
|
this.recalculateInsulin({ ...this.props.calculatorParams }),
|
|
1236
2116
|
);
|
|
1237
2117
|
};
|
|
1238
2118
|
|
|
2119
|
+
/**
|
|
2120
|
+
* Handle what happens when the user is recommended to eat additional carbohydrates but taps the decline button.
|
|
2121
|
+
*
|
|
2122
|
+
* Steps:
|
|
2123
|
+
* 1. Call the hideAttentionModal() method.
|
|
2124
|
+
* 2. Call the removeCarbRecommendation() method.
|
|
2125
|
+
* 3. Call the carbRecommendationAnswer() prop callback function with false as argument.
|
|
2126
|
+
*/
|
|
1239
2127
|
public declineCarbRecommendation = (): void => {
|
|
1240
2128
|
this.hideAttentionModal();
|
|
1241
2129
|
this.removeCarbRecommendation();
|
|
1242
2130
|
this.props.carbRecommendationAnswer(false);
|
|
1243
2131
|
};
|
|
1244
2132
|
|
|
2133
|
+
/**
|
|
2134
|
+
* Handle what happens when the user is recommended to eat additional carbohydrates and they tap the accept button.
|
|
2135
|
+
*
|
|
2136
|
+
* Steps:
|
|
2137
|
+
* 1. Call the hideAttentionModal() method.
|
|
2138
|
+
* 2. Call the carbRecommendationAnswer() prop callback function with true as argument.
|
|
2139
|
+
*/
|
|
1245
2140
|
public acceptCarbRecommendation = (): void => {
|
|
1246
2141
|
this.hideAttentionModal();
|
|
1247
2142
|
this.props.carbRecommendationAnswer(true);
|
|
1248
2143
|
};
|
|
1249
2144
|
|
|
2145
|
+
/**
|
|
2146
|
+
* Handles what happens when the user hits the “close calculation”-button on the exit modal.
|
|
2147
|
+
*
|
|
2148
|
+
* Steps:
|
|
2149
|
+
* 1. If the showExitModal state variable is true then call the hideExitModal() method. Otherwise, call the hideTimeoutModal() method
|
|
2150
|
+
* 2. Call the closeCalculationCallback prop callback function.
|
|
2151
|
+
*/
|
|
1250
2152
|
public closeCalculation = (): void => {
|
|
1251
2153
|
this.state.showExitModal ? this.hideExitModal() : this.hideTimeoutModal();
|
|
1252
2154
|
this.props.closeCalculationCallback();
|
|
1253
2155
|
};
|
|
1254
2156
|
|
|
2157
|
+
/**
|
|
2158
|
+
* Close the current recommendation and start a new bolus calculation.
|
|
2159
|
+
*
|
|
2160
|
+
* Steps:
|
|
2161
|
+
* 1. Call the hideTimeoutModal() method.
|
|
2162
|
+
* 2. Call the restartCalculation prop callback function.
|
|
2163
|
+
*/
|
|
1255
2164
|
public restartCalculation = (): void => {
|
|
1256
2165
|
this.hideTimeoutModal();
|
|
1257
2166
|
this.props.restartCalculation();
|
|
1258
2167
|
};
|
|
1259
2168
|
|
|
2169
|
+
/**
|
|
2170
|
+
* Used as a callback function for the Emotion component to update the state when a mood icon is tapped.
|
|
2171
|
+
*
|
|
2172
|
+
* Steps:
|
|
2173
|
+
* 1. Set the selectedMood state variable to the value of the selectedMood argument.
|
|
2174
|
+
* @param selectedMood he mood that should be selected going forward or null if no mood should be selected.
|
|
2175
|
+
*/
|
|
1260
2176
|
public handleMoodSelected = (selectedMood: IState["selectedMood"]): void => {
|
|
1261
2177
|
this.setState({ selectedMood });
|
|
1262
2178
|
};
|
|
1263
2179
|
|
|
2180
|
+
/**
|
|
2181
|
+
* Handle what happens when the user changes the content of the insulin input field.
|
|
2182
|
+
*
|
|
2183
|
+
* Steps:
|
|
2184
|
+
* 1. Set the enteredInsulin state variable to the value of the enteredInsulin argument.
|
|
2185
|
+
* @param enteredInsulin The amount of insulin (in units) that has been entered in the insulin input field.
|
|
2186
|
+
*/
|
|
1264
2187
|
public updateInsulinRecommendation = (enteredInsulin: number): void => {
|
|
1265
2188
|
this.setState({ enteredInsulin });
|
|
1266
2189
|
};
|
|
1267
2190
|
|
|
2191
|
+
/**
|
|
2192
|
+
* Handle what happens when the “Transfer to Logbook” button is pressed.
|
|
2193
|
+
* Namely, the entered data should be saved in a logbook entry and the recommendation screen should be closed.
|
|
2194
|
+
*
|
|
2195
|
+
* Steps:
|
|
2196
|
+
* 1. Unpack the enteredCarbs, enteredInsulin, insulinRecommendation, remeasureTime, and showExitModal state variables
|
|
2197
|
+
* 2. Create an IResult object called carbs consisting of suggestedCarbs and enteredCarbs.
|
|
2198
|
+
* 3. Create an IResult object called Insulin consisting of insulinRecommendation and enteredInsulin.
|
|
2199
|
+
* 4. If showExitModal is true then call the hideExitModal() method. otherwise call the hideTimeoutModal() method.
|
|
2200
|
+
* 5. Call the transferToLogbook prop callback function with the following arguments:
|
|
2201
|
+
* - Set the carbs argument to the carbs IResult object.
|
|
2202
|
+
* - Set the insulin argument to the insulin IResult object.
|
|
2203
|
+
* - Set the reminder argument to the remeasureTime state variable.
|
|
2204
|
+
* - Set the recommendationDate argument to the recommendationDate member variable.
|
|
2205
|
+
*/
|
|
1268
2206
|
public handleTransfer = (): void => {
|
|
1269
2207
|
const {
|
|
1270
2208
|
enteredCarbs,
|
|
@@ -1281,6 +2219,17 @@ export default class RecommendationScreen extends React.Component<IRecommenda
|
|
|
1281
2219
|
this.props.transferToLogbook(carbs, insulin, remeasureTime, this.recommendationDate, selectedMood);
|
|
1282
2220
|
};
|
|
1283
2221
|
|
|
2222
|
+
/**
|
|
2223
|
+
* Get the attention message that should be displayed for the user to draw their attention to noteworthy circumstances regarding their current blood glucose level.
|
|
2224
|
+
*
|
|
2225
|
+
* Steps:
|
|
2226
|
+
* 1. Unpack calculatorParams and latestLogbookFrom6Hours from the props.
|
|
2227
|
+
* 2. Unpack currentBGL and activity from calculatorparams.
|
|
2228
|
+
* 3. Get bgLevel, the categorisation of the blood glucose level, by calling the getBGLevel() function with the currentBGL and latestLogbookFrom6Hours as arguments.
|
|
2229
|
+
* 4. Return the attention message that is returned when calling getAttentionMessage() using bgLevel and activity as arguments.
|
|
2230
|
+
* @returns A string describing what the user needs to be aware of regarding their current blood glucose level.
|
|
2231
|
+
* If there is nothing noteworthy, null will be returned instead.
|
|
2232
|
+
*/
|
|
1284
2233
|
public getBGLevelAttentionMessage = (): string | null => {
|
|
1285
2234
|
const { calculatorParams, latestLogbookFrom6Hours } = this.props;
|
|
1286
2235
|
const { currentBGL, activity } = calculatorParams;
|
|
@@ -1288,6 +2237,16 @@ export default class RecommendationScreen extends React.Component<IRecommenda
|
|
|
1288
2237
|
return getAttentionMessage(bgLevel, activity);
|
|
1289
2238
|
};
|
|
1290
2239
|
|
|
2240
|
+
/**
|
|
2241
|
+
* Get the initial value for the remeasurement reminder time slider depending on the user’s entered information.
|
|
2242
|
+
*
|
|
2243
|
+
* Steps:
|
|
2244
|
+
* 1. Unpack calculatorParams, userReminder, and latestLogbookFrom6Hours from the props.
|
|
2245
|
+
* 2. Unpack currentBGL, activity, and carbohydrates from calculatorParams.
|
|
2246
|
+
* 3. Get bgLevel, the categorisation of the blood glucose level, by calling the getBGLevel() function with the currentBGL and latestLogbookFrom6Hours as arguments.
|
|
2247
|
+
* 4. Return the attention message that is returned when calling getReminder() using bgLevel, carbohydrates, userReminder, and activity as arguments.
|
|
2248
|
+
* @returns The time interval in hours that should be used as the initial value for the remeasurement reminder time slider.
|
|
2249
|
+
*/
|
|
1291
2250
|
public getBGLevelRemeasurementReminder = (): number => {
|
|
1292
2251
|
const { calculatorParams, userReminder, latestLogbookFrom6Hours } = this.props;
|
|
1293
2252
|
const { currentBGL, activity, carbohydrates } = calculatorParams;
|
|
@@ -1296,12 +2255,22 @@ export default class RecommendationScreen extends React.Component<IRecommenda
|
|
|
1296
2255
|
return getReminder(bgLevel, carbohydrates, userReminder, activity);
|
|
1297
2256
|
};
|
|
1298
2257
|
|
|
2258
|
+
/**
|
|
2259
|
+
* Get the attention message that should be displayed to the user to let them know that the insulin recommendation that
|
|
2260
|
+
* is being displayed to them was limited by the maximum insulin threshold.
|
|
2261
|
+
*
|
|
2262
|
+
* Steps:
|
|
2263
|
+
* 1. Unpack the wasLimited and activityReduction state variables.
|
|
2264
|
+
* 2. Return the result from calling getLimitationMessage() with wasLimited and activityReduction as arguments.
|
|
2265
|
+
* @returns A message to inform the user how the insulin recommendation was limited. If there is no limitation attention message, null will be returned instead.
|
|
2266
|
+
*/
|
|
1299
2267
|
public getLimitationAttentionMessage = (): string | null => {
|
|
1300
2268
|
const { wasLimited, activityReduction } = this.state;
|
|
1301
2269
|
|
|
1302
2270
|
return getLimitationMessage(wasLimited, activityReduction);
|
|
1303
2271
|
};
|
|
1304
2272
|
|
|
2273
|
+
/** Render a JSX element for displaying the insulin recommendation screen. */
|
|
1305
2274
|
public render(): JSX.Element {
|
|
1306
2275
|
if (this.hasError) {
|
|
1307
2276
|
return <View style={containerStyles.container} />;
|
|
@@ -1498,7 +2467,7 @@ const containerStyles = StyleSheet.create({
|
|
|
1498
2467
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
1499
2468
|
Code coverage generated by
|
|
1500
2469
|
<a href="https://istanbul.js.org/" target="_blank">istanbul</a>
|
|
1501
|
-
at
|
|
2470
|
+
at Thu Jul 29 2021 07:55:43 GMT+0000 (Coordinated Universal Time)
|
|
1502
2471
|
</div>
|
|
1503
2472
|
</div>
|
|
1504
2473
|
<script src="../prettify.js"></script>
|