@hedia/recommendation-screen 2.1.15 → 2.1.17-alpha
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/.github/workflows/publish-alpha.yaml +58 -0
- package/.github/workflows/publish.yml +3 -0
- 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/pre-release.sh +5 -0
- 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
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
<div class='fl pad1y space-right2'>
|
|
26
26
|
<span class="strong">100% </span>
|
|
27
27
|
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>
|
|
28
|
+
<span class='fraction'>5/5</span>
|
|
29
29
|
</div>
|
|
30
30
|
|
|
31
31
|
|
|
@@ -39,14 +39,14 @@
|
|
|
39
39
|
<div class='fl pad1y space-right2'>
|
|
40
40
|
<span class="strong">100% </span>
|
|
41
41
|
<span class="quiet">Functions</span>
|
|
42
|
-
<span class='fraction'>
|
|
42
|
+
<span class='fraction'>1/1</span>
|
|
43
43
|
</div>
|
|
44
44
|
|
|
45
45
|
|
|
46
46
|
<div class='fl pad1y space-right2'>
|
|
47
47
|
<span class="strong">100% </span>
|
|
48
48
|
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>
|
|
49
|
+
<span class='fraction'>5/5</span>
|
|
50
50
|
</div>
|
|
51
51
|
|
|
52
52
|
|
|
@@ -244,7 +244,15 @@
|
|
|
244
244
|
<a name='L185'></a><a href='#L185'>185</a>
|
|
245
245
|
<a name='L186'></a><a href='#L186'>186</a>
|
|
246
246
|
<a name='L187'></a><a href='#L187'>187</a>
|
|
247
|
-
<a name='L188'></a><a href='#L188'>188</a
|
|
247
|
+
<a name='L188'></a><a href='#L188'>188</a>
|
|
248
|
+
<a name='L189'></a><a href='#L189'>189</a>
|
|
249
|
+
<a name='L190'></a><a href='#L190'>190</a>
|
|
250
|
+
<a name='L191'></a><a href='#L191'>191</a>
|
|
251
|
+
<a name='L192'></a><a href='#L192'>192</a>
|
|
252
|
+
<a name='L193'></a><a href='#L193'>193</a>
|
|
253
|
+
<a name='L194'></a><a href='#L194'>194</a>
|
|
254
|
+
<a name='L195'></a><a href='#L195'>195</a>
|
|
255
|
+
<a name='L196'></a><a href='#L196'>196</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral"> </span>
|
|
248
256
|
<span class="cline-any cline-neutral"> </span>
|
|
249
257
|
<span class="cline-any cline-neutral"> </span>
|
|
250
258
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -267,7 +275,14 @@
|
|
|
267
275
|
<span class="cline-any cline-neutral"> </span>
|
|
268
276
|
<span class="cline-any cline-neutral"> </span>
|
|
269
277
|
<span class="cline-any cline-neutral"> </span>
|
|
270
|
-
<span class="cline-any cline-
|
|
278
|
+
<span class="cline-any cline-neutral"> </span>
|
|
279
|
+
<span class="cline-any cline-neutral"> </span>
|
|
280
|
+
<span class="cline-any cline-neutral"> </span>
|
|
281
|
+
<span class="cline-any cline-neutral"> </span>
|
|
282
|
+
<span class="cline-any cline-neutral"> </span>
|
|
283
|
+
<span class="cline-any cline-neutral"> </span>
|
|
284
|
+
<span class="cline-any cline-neutral"> </span>
|
|
285
|
+
<span class="cline-any cline-neutral"> </span>
|
|
271
286
|
<span class="cline-any cline-neutral"> </span>
|
|
272
287
|
<span class="cline-any cline-neutral"> </span>
|
|
273
288
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -328,6 +343,7 @@
|
|
|
328
343
|
<span class="cline-any cline-neutral"> </span>
|
|
329
344
|
<span class="cline-any cline-neutral"> </span>
|
|
330
345
|
<span class="cline-any cline-yes">2x</span>
|
|
346
|
+
<span class="cline-any cline-neutral"> </span>
|
|
331
347
|
<span class="cline-any cline-yes">2x</span>
|
|
332
348
|
<span class="cline-any cline-neutral"> </span>
|
|
333
349
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -441,22 +457,29 @@ import { stylesModal } from "./RecommendationModal";
|
|
|
441
457
|
const { TwoOptionModalTestIds } = Testing.Id;
|
|
442
458
|
|
|
443
459
|
export interface ITwoOptionModalProps {
|
|
460
|
+
/** The title of the modal. */
|
|
444
461
|
title: string;
|
|
462
|
+
/** The message to show in the modal. */
|
|
445
463
|
message: string;
|
|
464
|
+
/** The label of the first option. */
|
|
446
465
|
textFirstOption: string;
|
|
466
|
+
/** The label of the second option. */
|
|
447
467
|
textSecondOption: string;
|
|
468
|
+
/** Whether or not the modal shall have a cancel button in the corner to close the modal. */
|
|
448
469
|
isCancelable?: boolean;
|
|
470
|
+
/** If true the buttons will be displayed side-by-side. If false the buttons will be displayed on top of each other. */
|
|
449
471
|
rowAsButtonLayout: boolean;
|
|
472
|
+
/** To be called if the user taps the first option button. */
|
|
450
473
|
firstOption(): void;
|
|
474
|
+
/** To be called if the user taps the second option button. */
|
|
451
475
|
secondOption(): void;
|
|
476
|
+
/** To be called if the user taps the optionally shown close button. */
|
|
452
477
|
onClose?(): void;
|
|
453
478
|
}
|
|
454
479
|
|
|
480
|
+
/** Display a modal with two buttons for the user to choose between. */
|
|
455
481
|
export default class TwoOptionModal extends React.Component<ITwoOptionModalProps> {
|
|
456
|
-
|
|
457
|
-
super(props);
|
|
458
|
-
}
|
|
459
|
-
|
|
482
|
+
/** Compose a JSX element for displaying the modal. */
|
|
460
483
|
public render(): JSX.Element {
|
|
461
484
|
const { rowAsButtonLayout, isCancelable } = this.props;
|
|
462
485
|
return (
|
|
@@ -515,6 +538,7 @@ export default class TwoOptionModal extends React.Component<ITwoOptionModalPr
|
|
|
515
538
|
}
|
|
516
539
|
}
|
|
517
540
|
const { height, width } = Dimensions.get(`screen`);
|
|
541
|
+
/** @internal */
|
|
518
542
|
export const modalStyle = StyleSheet.create({
|
|
519
543
|
container: {
|
|
520
544
|
...StyleSheet.absoluteFillObject,
|
|
@@ -625,7 +649,7 @@ export const modalStyle = StyleSheet.create({
|
|
|
625
649
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
626
650
|
Code coverage generated by
|
|
627
651
|
<a href="https://istanbul.js.org/" target="_blank">istanbul</a>
|
|
628
|
-
at
|
|
652
|
+
at Mon Aug 16 2021 10:59:26 GMT+0000 (Coordinated Universal Time)
|
|
629
653
|
</div>
|
|
630
654
|
</div>
|
|
631
655
|
<script src="../../prettify.js"></script>
|
|
@@ -137,7 +137,41 @@
|
|
|
137
137
|
<a name='L78'></a><a href='#L78'>78</a>
|
|
138
138
|
<a name='L79'></a><a href='#L79'>79</a>
|
|
139
139
|
<a name='L80'></a><a href='#L80'>80</a>
|
|
140
|
-
<a name='L81'></a><a href='#L81'>81</a
|
|
140
|
+
<a name='L81'></a><a href='#L81'>81</a>
|
|
141
|
+
<a name='L82'></a><a href='#L82'>82</a>
|
|
142
|
+
<a name='L83'></a><a href='#L83'>83</a>
|
|
143
|
+
<a name='L84'></a><a href='#L84'>84</a>
|
|
144
|
+
<a name='L85'></a><a href='#L85'>85</a>
|
|
145
|
+
<a name='L86'></a><a href='#L86'>86</a>
|
|
146
|
+
<a name='L87'></a><a href='#L87'>87</a>
|
|
147
|
+
<a name='L88'></a><a href='#L88'>88</a>
|
|
148
|
+
<a name='L89'></a><a href='#L89'>89</a>
|
|
149
|
+
<a name='L90'></a><a href='#L90'>90</a>
|
|
150
|
+
<a name='L91'></a><a href='#L91'>91</a>
|
|
151
|
+
<a name='L92'></a><a href='#L92'>92</a>
|
|
152
|
+
<a name='L93'></a><a href='#L93'>93</a>
|
|
153
|
+
<a name='L94'></a><a href='#L94'>94</a>
|
|
154
|
+
<a name='L95'></a><a href='#L95'>95</a>
|
|
155
|
+
<a name='L96'></a><a href='#L96'>96</a>
|
|
156
|
+
<a name='L97'></a><a href='#L97'>97</a>
|
|
157
|
+
<a name='L98'></a><a href='#L98'>98</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral"> </span>
|
|
158
|
+
<span class="cline-any cline-neutral"> </span>
|
|
159
|
+
<span class="cline-any cline-neutral"> </span>
|
|
160
|
+
<span class="cline-any cline-neutral"> </span>
|
|
161
|
+
<span class="cline-any cline-neutral"> </span>
|
|
162
|
+
<span class="cline-any cline-neutral"> </span>
|
|
163
|
+
<span class="cline-any cline-neutral"> </span>
|
|
164
|
+
<span class="cline-any cline-neutral"> </span>
|
|
165
|
+
<span class="cline-any cline-neutral"> </span>
|
|
166
|
+
<span class="cline-any cline-neutral"> </span>
|
|
167
|
+
<span class="cline-any cline-neutral"> </span>
|
|
168
|
+
<span class="cline-any cline-neutral"> </span>
|
|
169
|
+
<span class="cline-any cline-neutral"> </span>
|
|
170
|
+
<span class="cline-any cline-neutral"> </span>
|
|
171
|
+
<span class="cline-any cline-neutral"> </span>
|
|
172
|
+
<span class="cline-any cline-neutral"> </span>
|
|
173
|
+
<span class="cline-any cline-neutral"> </span>
|
|
174
|
+
<span class="cline-any cline-neutral"> </span>
|
|
141
175
|
<span class="cline-any cline-neutral"> </span>
|
|
142
176
|
<span class="cline-any cline-neutral"> </span>
|
|
143
177
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -217,22 +251,39 @@
|
|
|
217
251
|
<span class="cline-any cline-neutral"> </span>
|
|
218
252
|
<span class="cline-any cline-neutral"> </span>
|
|
219
253
|
<span class="cline-any cline-neutral"> </span>
|
|
220
|
-
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">import {
|
|
254
|
+
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">import { Activity as ActivityTypes, BolusCalculator } from "@hedia/types";
|
|
255
|
+
import { t } from "@lingui/macro";
|
|
221
256
|
import React from "react";
|
|
222
257
|
import { Dimensions, StyleSheet, Text, View } from "react-native";
|
|
223
258
|
import { i18n } from "../../locale/i18nUtils";
|
|
224
259
|
import { Testing } from "../../types/enum";
|
|
225
|
-
import { IActivityDisplayProps
|
|
260
|
+
import { IActivityDisplayProps } from "../../types/types";
|
|
226
261
|
import { infoStyles } from "../InfoBars";
|
|
227
262
|
import ActivityIcon from "./ActivityIcon";
|
|
228
263
|
import ActivityIntensity from "./ActivityIntensity";
|
|
229
264
|
|
|
230
|
-
interface IProps extends IActivityDisplayProps {
|
|
231
|
-
activity
|
|
232
|
-
|
|
265
|
+
export interface IProps extends IActivityDisplayProps {
|
|
266
|
+
/** Details about the activity that affect the calculation */
|
|
267
|
+
activity: BolusCalculator.Types.IActivityParams;
|
|
268
|
+
/** The fraction (in the interval [0; 1]) by which the insulin recommendation is being reduced due to physical activity */
|
|
269
|
+
activityReduction: ActivityTypes.Types.ReductionType;
|
|
233
270
|
}
|
|
234
271
|
|
|
272
|
+
/**
|
|
273
|
+
* Component for displaying a summary of the entered physical activity along with the effect it has on the insulin recommendation.
|
|
274
|
+
*/
|
|
235
275
|
export default class Activity extends React.Component<IProps> {
|
|
276
|
+
/**
|
|
277
|
+
* Steps:
|
|
278
|
+
* 1. Unpack activity, activityType, activityReduction, and activityTitle from props.
|
|
279
|
+
* 2. Compute the reductionPercentage by multiplying the activityReduction prop by 100 and rounding to the nearest integer.
|
|
280
|
+
* 3. Generate and return the JSX element to display the following on the screen:
|
|
281
|
+
* - Print the activity duration.
|
|
282
|
+
* - Display the ActivityIcon that corresponds to the type of activity.
|
|
283
|
+
* - Display the ActivityIntensity for the activity.
|
|
284
|
+
* - Print the reductionPercentage.
|
|
285
|
+
* @returns JSX Element containing all the user's physical activity details
|
|
286
|
+
*/
|
|
236
287
|
public render(): JSX.Element {
|
|
237
288
|
const { activity, activityType, activityReduction, activityTitle } = this.props;
|
|
238
289
|
const reductionPercentage = ((activityReduction ?? 0) * 100).toFixed(0);
|
|
@@ -304,7 +355,7 @@ const activityStyles = StyleSheet.create({
|
|
|
304
355
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
305
356
|
Code coverage generated by
|
|
306
357
|
<a href="https://istanbul.js.org/" target="_blank">istanbul</a>
|
|
307
|
-
at
|
|
358
|
+
at Mon Aug 16 2021 10:59:26 GMT+0000 (Coordinated Universal Time)
|
|
308
359
|
</div>
|
|
309
360
|
</div>
|
|
310
361
|
<script src="../../../prettify.js"></script>
|
|
@@ -111,7 +111,20 @@
|
|
|
111
111
|
<a name='L52'></a><a href='#L52'>52</a>
|
|
112
112
|
<a name='L53'></a><a href='#L53'>53</a>
|
|
113
113
|
<a name='L54'></a><a href='#L54'>54</a>
|
|
114
|
-
<a name='L55'></a><a href='#L55'>55</a
|
|
114
|
+
<a name='L55'></a><a href='#L55'>55</a>
|
|
115
|
+
<a name='L56'></a><a href='#L56'>56</a>
|
|
116
|
+
<a name='L57'></a><a href='#L57'>57</a>
|
|
117
|
+
<a name='L58'></a><a href='#L58'>58</a>
|
|
118
|
+
<a name='L59'></a><a href='#L59'>59</a>
|
|
119
|
+
<a name='L60'></a><a href='#L60'>60</a>
|
|
120
|
+
<a name='L61'></a><a href='#L61'>61</a>
|
|
121
|
+
<a name='L62'></a><a href='#L62'>62</a>
|
|
122
|
+
<a name='L63'></a><a href='#L63'>63</a>
|
|
123
|
+
<a name='L64'></a><a href='#L64'>64</a>
|
|
124
|
+
<a name='L65'></a><a href='#L65'>65</a>
|
|
125
|
+
<a name='L66'></a><a href='#L66'>66</a>
|
|
126
|
+
<a name='L67'></a><a href='#L67'>67</a>
|
|
127
|
+
<a name='L68'></a><a href='#L68'>68</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral"> </span>
|
|
115
128
|
<span class="cline-any cline-neutral"> </span>
|
|
116
129
|
<span class="cline-any cline-neutral"> </span>
|
|
117
130
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -120,6 +133,7 @@
|
|
|
120
133
|
<span class="cline-any cline-neutral"> </span>
|
|
121
134
|
<span class="cline-any cline-yes">2x</span>
|
|
122
135
|
<span class="cline-any cline-neutral"> </span>
|
|
136
|
+
<span class="cline-any cline-neutral"> </span>
|
|
123
137
|
<span class="cline-any cline-yes">2x</span>
|
|
124
138
|
<span class="cline-any cline-neutral"> </span>
|
|
125
139
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -129,11 +143,23 @@
|
|
|
129
143
|
<span class="cline-any cline-neutral"> </span>
|
|
130
144
|
<span class="cline-any cline-neutral"> </span>
|
|
131
145
|
<span class="cline-any cline-neutral"> </span>
|
|
146
|
+
<span class="cline-any cline-neutral"> </span>
|
|
147
|
+
<span class="cline-any cline-neutral"> </span>
|
|
148
|
+
<span class="cline-any cline-neutral"> </span>
|
|
149
|
+
<span class="cline-any cline-neutral"> </span>
|
|
132
150
|
<span class="cline-any cline-yes">21x</span>
|
|
133
151
|
<span class="cline-any cline-yes">25x</span>
|
|
134
152
|
<span class="cline-any cline-neutral"> </span>
|
|
135
153
|
<span class="cline-any cline-neutral"> </span>
|
|
136
154
|
<span class="cline-any cline-neutral"> </span>
|
|
155
|
+
<span class="cline-any cline-neutral"> </span>
|
|
156
|
+
<span class="cline-any cline-neutral"> </span>
|
|
157
|
+
<span class="cline-any cline-neutral"> </span>
|
|
158
|
+
<span class="cline-any cline-neutral"> </span>
|
|
159
|
+
<span class="cline-any cline-neutral"> </span>
|
|
160
|
+
<span class="cline-any cline-neutral"> </span>
|
|
161
|
+
<span class="cline-any cline-neutral"> </span>
|
|
162
|
+
<span class="cline-any cline-neutral"> </span>
|
|
137
163
|
<span class="cline-any cline-yes">25x</span>
|
|
138
164
|
<span class="cline-any cline-yes">25x</span>
|
|
139
165
|
<span class="cline-any cline-yes">25x</span>
|
|
@@ -174,7 +200,8 @@ import { IActivityDisplayProps } from "../../types/types";
|
|
|
174
200
|
|
|
175
201
|
const { Other } = Activity.Enums.ActivityEnum;
|
|
176
202
|
|
|
177
|
-
|
|
203
|
+
/** Mapping from ActivityEnums to corresponding image resource. */
|
|
204
|
+
export const ACTIVITY_ICONS: Record<Activity.Enums.ActivityEnum, ImageURISource> = {
|
|
178
205
|
Run: require(`../../assets/activity/Runner.png`),
|
|
179
206
|
Walk: require(`../../assets/activity/Walk.png`),
|
|
180
207
|
Cycling: require(`../../assets/activity/Cyclist.png`),
|
|
@@ -182,11 +209,23 @@ const ACTIVITY_ICONS: Record<Activity.Enums.ActivityEnum, ImageURISource>
|
|
|
182
209
|
Other: require(`../../assets/activity/Other.png`),
|
|
183
210
|
};
|
|
184
211
|
|
|
212
|
+
/** Component used to displat the user's physical activity type icon */
|
|
185
213
|
export default class ActivityIcon extends React.Component<IActivityDisplayProps> {
|
|
214
|
+
/**
|
|
215
|
+
* @returns The value from the ACTIVITY_ICONS constant that corresponds to the value of the activityType prop.
|
|
216
|
+
*/
|
|
186
217
|
public getActivityIcon = (): ImageURISource => {
|
|
187
218
|
return ACTIVITY_ICONS[this.props.activityType ?? Other];
|
|
188
219
|
};
|
|
189
220
|
|
|
221
|
+
/**
|
|
222
|
+
* Steps:
|
|
223
|
+
* 1. Unpack activityType and activityTitle from props.
|
|
224
|
+
* 2. Create an accessibility label string by appending ‘_activity’ to the enum label corresponding to the activityType prop.
|
|
225
|
+
* @returns A JSX element including the following:
|
|
226
|
+
* 1. An image component with the generated accessibility label displaying the icon from getActivityIcon().
|
|
227
|
+
* 2. The activityTitle if it is truthy or the string “Untitled Activity” otherwise
|
|
228
|
+
*/
|
|
190
229
|
public render(): JSX.Element | null {
|
|
191
230
|
const { activityType, activityTitle } = this.props;
|
|
192
231
|
const label = `${Activity.Enums.ActivityEnum[activityType ?? Other]}_activity`;
|
|
@@ -226,7 +265,7 @@ const activityIconStyles = StyleSheet.create({
|
|
|
226
265
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
227
266
|
Code coverage generated by
|
|
228
267
|
<a href="https://istanbul.js.org/" target="_blank">istanbul</a>
|
|
229
|
-
at
|
|
268
|
+
at Mon Aug 16 2021 10:59:26 GMT+0000 (Coordinated Universal Time)
|
|
230
269
|
</div>
|
|
231
270
|
</div>
|
|
232
271
|
<script src="../../../prettify.js"></script>
|
|
@@ -116,7 +116,23 @@
|
|
|
116
116
|
<a name='L57'></a><a href='#L57'>57</a>
|
|
117
117
|
<a name='L58'></a><a href='#L58'>58</a>
|
|
118
118
|
<a name='L59'></a><a href='#L59'>59</a>
|
|
119
|
-
<a name='L60'></a><a href='#L60'>60</a
|
|
119
|
+
<a name='L60'></a><a href='#L60'>60</a>
|
|
120
|
+
<a name='L61'></a><a href='#L61'>61</a>
|
|
121
|
+
<a name='L62'></a><a href='#L62'>62</a>
|
|
122
|
+
<a name='L63'></a><a href='#L63'>63</a>
|
|
123
|
+
<a name='L64'></a><a href='#L64'>64</a>
|
|
124
|
+
<a name='L65'></a><a href='#L65'>65</a>
|
|
125
|
+
<a name='L66'></a><a href='#L66'>66</a>
|
|
126
|
+
<a name='L67'></a><a href='#L67'>67</a>
|
|
127
|
+
<a name='L68'></a><a href='#L68'>68</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral"> </span>
|
|
128
|
+
<span class="cline-any cline-neutral"> </span>
|
|
129
|
+
<span class="cline-any cline-neutral"> </span>
|
|
130
|
+
<span class="cline-any cline-neutral"> </span>
|
|
131
|
+
<span class="cline-any cline-neutral"> </span>
|
|
132
|
+
<span class="cline-any cline-neutral"> </span>
|
|
133
|
+
<span class="cline-any cline-neutral"> </span>
|
|
134
|
+
<span class="cline-any cline-neutral"> </span>
|
|
135
|
+
<span class="cline-any cline-neutral"> </span>
|
|
120
136
|
<span class="cline-any cline-neutral"> </span>
|
|
121
137
|
<span class="cline-any cline-neutral"> </span>
|
|
122
138
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -175,18 +191,26 @@
|
|
|
175
191
|
<span class="cline-any cline-neutral"> </span>
|
|
176
192
|
<span class="cline-any cline-neutral"> </span>
|
|
177
193
|
<span class="cline-any cline-neutral"> </span>
|
|
178
|
-
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">import { Activity } from "@hedia/types";
|
|
194
|
+
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">import { Activity, BolusCalculator } from "@hedia/types";
|
|
179
195
|
import React from "react";
|
|
180
196
|
import { Dimensions, StyleSheet, Text, View } from "react-native";
|
|
181
|
-
import {
|
|
197
|
+
import {} from "../../types/types";
|
|
182
198
|
import { ActivityIntensityTranslations } from "../../utils/Translations";
|
|
183
199
|
import { infoStyles } from "../InfoBars";
|
|
184
200
|
|
|
185
|
-
interface IProps {
|
|
186
|
-
|
|
201
|
+
export interface IProps {
|
|
202
|
+
/** - Indicates the intensity of the activity. */
|
|
203
|
+
activityIntensity: BolusCalculator.Types.IActivityParams["activityIntensity"];
|
|
187
204
|
}
|
|
188
205
|
|
|
206
|
+
/** Component used to display the users's physical activity intensity on its corresponding background color */
|
|
189
207
|
export default class ActivityIntensity extends React.Component<IProps> {
|
|
208
|
+
/**
|
|
209
|
+
* Steps:
|
|
210
|
+
* 1. Set intensity to the activityIntensity prop.
|
|
211
|
+
* 2. Set the style variable to the style that correspond to the intensity.
|
|
212
|
+
* @returns JSX element that displays the intensity of the user’s activity along with the associated color coding
|
|
213
|
+
*/
|
|
190
214
|
public render = (): JSX.Element => {
|
|
191
215
|
const intensity = this.props.activityIntensity;
|
|
192
216
|
const style = activityIntensityStyles[intensity];
|
|
@@ -241,7 +265,7 @@ const activityIntensityStyles = StyleSheet.create({
|
|
|
241
265
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
242
266
|
Code coverage generated by
|
|
243
267
|
<a href="https://istanbul.js.org/" target="_blank">istanbul</a>
|
|
244
|
-
at
|
|
268
|
+
at Mon Aug 16 2021 10:59:26 GMT+0000 (Coordinated Universal Time)
|
|
245
269
|
</div>
|
|
246
270
|
</div>
|
|
247
271
|
<script src="../../../prettify.js"></script>
|
|
@@ -125,7 +125,7 @@
|
|
|
125
125
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
126
126
|
Code coverage generated by
|
|
127
127
|
<a href="https://istanbul.js.org/" target="_blank">istanbul</a>
|
|
128
|
-
at
|
|
128
|
+
at Mon Aug 16 2021 10:59:26 GMT+0000 (Coordinated Universal Time)
|
|
129
129
|
</div>
|
|
130
130
|
</div>
|
|
131
131
|
<script src="../../../prettify.js"></script>
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
<div class='fl pad1y space-right2'>
|
|
26
26
|
<span class="strong">100% </span>
|
|
27
27
|
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>
|
|
28
|
+
<span class='fraction'>162/162</span>
|
|
29
29
|
</div>
|
|
30
30
|
|
|
31
31
|
|
|
@@ -39,14 +39,14 @@
|
|
|
39
39
|
<div class='fl pad1y space-right2'>
|
|
40
40
|
<span class="strong">100% </span>
|
|
41
41
|
<span class="quiet">Functions</span>
|
|
42
|
-
<span class='fraction'>
|
|
42
|
+
<span class='fraction'>43/43</span>
|
|
43
43
|
</div>
|
|
44
44
|
|
|
45
45
|
|
|
46
46
|
<div class='fl pad1y space-right2'>
|
|
47
47
|
<span class="strong">100% </span>
|
|
48
48
|
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>
|
|
49
|
+
<span class='fraction'>162/162</span>
|
|
50
50
|
</div>
|
|
51
51
|
|
|
52
52
|
|
|
@@ -198,13 +198,13 @@
|
|
|
198
198
|
<div class="chart"><div class="cover-fill cover-full" style="width: 100%"></div><div class="cover-empty" style="width: 0%"></div></div>
|
|
199
199
|
</td>
|
|
200
200
|
<td data-value="100" class="pct high">100%</td>
|
|
201
|
-
<td data-value="
|
|
201
|
+
<td data-value="27" class="abs high">27/27</td>
|
|
202
202
|
<td data-value="100" class="pct high">100%</td>
|
|
203
203
|
<td data-value="18" class="abs high">18/18</td>
|
|
204
204
|
<td data-value="100" class="pct high">100%</td>
|
|
205
|
-
<td data-value="
|
|
205
|
+
<td data-value="6" class="abs high">6/6</td>
|
|
206
206
|
<td data-value="100" class="pct high">100%</td>
|
|
207
|
-
<td data-value="
|
|
207
|
+
<td data-value="27" class="abs high">27/27</td>
|
|
208
208
|
</tr>
|
|
209
209
|
|
|
210
210
|
<tr>
|
|
@@ -243,13 +243,13 @@
|
|
|
243
243
|
<div class="chart"><div class="cover-fill cover-full" style="width: 100%"></div><div class="cover-empty" style="width: 0%"></div></div>
|
|
244
244
|
</td>
|
|
245
245
|
<td data-value="100" class="pct high">100%</td>
|
|
246
|
-
<td data-value="
|
|
246
|
+
<td data-value="5" class="abs high">5/5</td>
|
|
247
247
|
<td data-value="100" class="pct high">100%</td>
|
|
248
248
|
<td data-value="16" class="abs high">16/16</td>
|
|
249
249
|
<td data-value="100" class="pct high">100%</td>
|
|
250
|
-
<td data-value="
|
|
250
|
+
<td data-value="1" class="abs high">1/1</td>
|
|
251
251
|
<td data-value="100" class="pct high">100%</td>
|
|
252
|
-
<td data-value="
|
|
252
|
+
<td data-value="5" class="abs high">5/5</td>
|
|
253
253
|
</tr>
|
|
254
254
|
|
|
255
255
|
</tbody>
|
|
@@ -260,7 +260,7 @@
|
|
|
260
260
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
261
261
|
Code coverage generated by
|
|
262
262
|
<a href="https://istanbul.js.org/" target="_blank">istanbul</a>
|
|
263
|
-
at
|
|
263
|
+
at Mon Aug 16 2021 10:59:26 GMT+0000 (Coordinated Universal Time)
|
|
264
264
|
</div>
|
|
265
265
|
</div>
|
|
266
266
|
<script src="../../prettify.js"></script>
|
|
@@ -123,7 +123,32 @@
|
|
|
123
123
|
<a name='L64'></a><a href='#L64'>64</a>
|
|
124
124
|
<a name='L65'></a><a href='#L65'>65</a>
|
|
125
125
|
<a name='L66'></a><a href='#L66'>66</a>
|
|
126
|
-
<a name='L67'></a><a href='#L67'>67</a
|
|
126
|
+
<a name='L67'></a><a href='#L67'>67</a>
|
|
127
|
+
<a name='L68'></a><a href='#L68'>68</a>
|
|
128
|
+
<a name='L69'></a><a href='#L69'>69</a>
|
|
129
|
+
<a name='L70'></a><a href='#L70'>70</a>
|
|
130
|
+
<a name='L71'></a><a href='#L71'>71</a>
|
|
131
|
+
<a name='L72'></a><a href='#L72'>72</a>
|
|
132
|
+
<a name='L73'></a><a href='#L73'>73</a>
|
|
133
|
+
<a name='L74'></a><a href='#L74'>74</a>
|
|
134
|
+
<a name='L75'></a><a href='#L75'>75</a>
|
|
135
|
+
<a name='L76'></a><a href='#L76'>76</a>
|
|
136
|
+
<a name='L77'></a><a href='#L77'>77</a>
|
|
137
|
+
<a name='L78'></a><a href='#L78'>78</a>
|
|
138
|
+
<a name='L79'></a><a href='#L79'>79</a>
|
|
139
|
+
<a name='L80'></a><a href='#L80'>80</a>
|
|
140
|
+
<a name='L81'></a><a href='#L81'>81</a>
|
|
141
|
+
<a name='L82'></a><a href='#L82'>82</a>
|
|
142
|
+
<a name='L83'></a><a href='#L83'>83</a>
|
|
143
|
+
<a name='L84'></a><a href='#L84'>84</a>
|
|
144
|
+
<a name='L85'></a><a href='#L85'>85</a>
|
|
145
|
+
<a name='L86'></a><a href='#L86'>86</a>
|
|
146
|
+
<a name='L87'></a><a href='#L87'>87</a>
|
|
147
|
+
<a name='L88'></a><a href='#L88'>88</a>
|
|
148
|
+
<a name='L89'></a><a href='#L89'>89</a>
|
|
149
|
+
<a name='L90'></a><a href='#L90'>90</a>
|
|
150
|
+
<a name='L91'></a><a href='#L91'>91</a>
|
|
151
|
+
<a name='L92'></a><a href='#L92'>92</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral"> </span>
|
|
127
152
|
<span class="cline-any cline-neutral"> </span>
|
|
128
153
|
<span class="cline-any cline-neutral"> </span>
|
|
129
154
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -138,10 +163,32 @@
|
|
|
138
163
|
<span class="cline-any cline-neutral"> </span>
|
|
139
164
|
<span class="cline-any cline-neutral"> </span>
|
|
140
165
|
<span class="cline-any cline-neutral"> </span>
|
|
166
|
+
<span class="cline-any cline-neutral"> </span>
|
|
167
|
+
<span class="cline-any cline-neutral"> </span>
|
|
168
|
+
<span class="cline-any cline-neutral"> </span>
|
|
169
|
+
<span class="cline-any cline-neutral"> </span>
|
|
170
|
+
<span class="cline-any cline-neutral"> </span>
|
|
171
|
+
<span class="cline-any cline-neutral"> </span>
|
|
172
|
+
<span class="cline-any cline-neutral"> </span>
|
|
173
|
+
<span class="cline-any cline-neutral"> </span>
|
|
174
|
+
<span class="cline-any cline-neutral"> </span>
|
|
175
|
+
<span class="cline-any cline-neutral"> </span>
|
|
176
|
+
<span class="cline-any cline-neutral"> </span>
|
|
177
|
+
<span class="cline-any cline-neutral"> </span>
|
|
178
|
+
<span class="cline-any cline-neutral"> </span>
|
|
179
|
+
<span class="cline-any cline-neutral"> </span>
|
|
141
180
|
<span class="cline-any cline-yes">69x</span>
|
|
142
181
|
<span class="cline-any cline-yes">8x</span>
|
|
143
182
|
<span class="cline-any cline-neutral"> </span>
|
|
144
183
|
<span class="cline-any cline-neutral"> </span>
|
|
184
|
+
<span class="cline-any cline-neutral"> </span>
|
|
185
|
+
<span class="cline-any cline-neutral"> </span>
|
|
186
|
+
<span class="cline-any cline-neutral"> </span>
|
|
187
|
+
<span class="cline-any cline-neutral"> </span>
|
|
188
|
+
<span class="cline-any cline-neutral"> </span>
|
|
189
|
+
<span class="cline-any cline-neutral"> </span>
|
|
190
|
+
<span class="cline-any cline-neutral"> </span>
|
|
191
|
+
<span class="cline-any cline-neutral"> </span>
|
|
145
192
|
<span class="cline-any cline-yes">69x</span>
|
|
146
193
|
<span class="cline-any cline-yes">1440x</span>
|
|
147
194
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -163,6 +210,9 @@
|
|
|
163
210
|
<span class="cline-any cline-neutral"> </span>
|
|
164
211
|
<span class="cline-any cline-neutral"> </span>
|
|
165
212
|
<span class="cline-any cline-neutral"> </span>
|
|
213
|
+
<span class="cline-any cline-neutral"> </span>
|
|
214
|
+
<span class="cline-any cline-neutral"> </span>
|
|
215
|
+
<span class="cline-any cline-neutral"> </span>
|
|
166
216
|
<span class="cline-any cline-yes">144x</span>
|
|
167
217
|
<span class="cline-any cline-neutral"> </span>
|
|
168
218
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -198,16 +248,38 @@ import MoodIcon from "./MoodIcon";
|
|
|
198
248
|
|
|
199
249
|
const MoodEnum = Logbook.Enums.MoodEnum;
|
|
200
250
|
|
|
201
|
-
interface IProps {
|
|
251
|
+
export interface IProps {
|
|
252
|
+
/** Indicates which mood if any that is currently selected. */
|
|
202
253
|
currentMood: Logbook.Enums.MoodEnum | null;
|
|
254
|
+
/**
|
|
255
|
+
* Callback function to call when the selected icon changes. Takes a single optional argument, mood, which is a {@link Logbook.Enums.MoodEnum} | null.
|
|
256
|
+
* Doesn’t have a return value.
|
|
257
|
+
* */
|
|
203
258
|
moodSelected(mood: Logbook.Enums.MoodEnum | null): void;
|
|
204
259
|
}
|
|
205
260
|
|
|
261
|
+
/** The Emotion component displays a horizontally arranged set of icons representing various moods and allows the user to select one. */
|
|
206
262
|
export default class Emotion extends React.Component<IProps> {
|
|
263
|
+
/**
|
|
264
|
+
* Handle what should happen when the user picks taps on one of the mood icons.
|
|
265
|
+
*
|
|
266
|
+
* Steps:
|
|
267
|
+
* 1. Call the moodSelected prop callback function with selected as argument if toggle is true and null as argument otherwise.
|
|
268
|
+
* @param selected Integer number that represents the icon that was tapped.
|
|
269
|
+
* @param toggle Boolean indicating whether the icon should be deselected.
|
|
270
|
+
*/
|
|
207
271
|
public handleIconPress = (selected: Logbook.Enums.MoodEnum, toggle: boolean): void => {
|
|
208
272
|
this.props.moodSelected(toggle ? selected : null);
|
|
209
273
|
};
|
|
210
274
|
|
|
275
|
+
/**
|
|
276
|
+
* Compose a sequence of MoodIcons
|
|
277
|
+
*
|
|
278
|
+
* Steps:
|
|
279
|
+
* 1. Make a sequence of MoodEnum values from the properties of the MoodEnum object and save the sequence as a variable named values.
|
|
280
|
+
* 2. Map each of the elements of the values sequence to a MoodIcon.
|
|
281
|
+
* @returns JSX Element consisting of an array of MoodIcon components.
|
|
282
|
+
*/
|
|
211
283
|
public mappedMoods = (): Array<JSX.Element> => {
|
|
212
284
|
const values = Object.values(MoodEnum).filter((val): boolean => isNaN(Number(val))) as Array<
|
|
213
285
|
keyof typeof MoodEnum
|
|
@@ -228,6 +300,9 @@ export default class Emotion extends React.Component<IProps> {
|
|
|
228
300
|
);
|
|
229
301
|
};
|
|
230
302
|
|
|
303
|
+
/**
|
|
304
|
+
* @returns JSX element to display the mood icons from mappedMoods() in a horizontal arrangement.
|
|
305
|
+
*/
|
|
231
306
|
public render(): JSX.Element {
|
|
232
307
|
return (
|
|
233
308
|
<View style={emotionStyles.container}>
|
|
@@ -262,7 +337,7 @@ const emotionStyles = StyleSheet.create({
|
|
|
262
337
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
263
338
|
Code coverage generated by
|
|
264
339
|
<a href="https://istanbul.js.org/" target="_blank">istanbul</a>
|
|
265
|
-
at
|
|
340
|
+
at Mon Aug 16 2021 10:59:26 GMT+0000 (Coordinated Universal Time)
|
|
266
341
|
</div>
|
|
267
342
|
</div>
|
|
268
343
|
<script src="../../../prettify.js"></script>
|