@spaced-out/ui-design-system 0.3.8 → 0.3.9
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/CHANGELOG.md +7 -0
- package/design-tokens/color/app-color.json +6 -6
- package/lib/components/ScoreBar/ScoreBar.js +11 -3
- package/lib/components/ScoreBar/ScoreBar.js.flow +25 -7
- package/lib/components/ScoreBar/ScoreBar.module.css +19 -13
- package/lib/styles/index.css +6 -6
- package/lib/styles/index.js +6 -6
- package/lib/styles/index.js.flow +6 -6
- package/lib/styles/variables/_color.css +6 -6
- package/lib/styles/variables/_color.js +6 -6
- package/lib/styles/variables/_color.js.flow +6 -6
- package/lib/utils/score-bar/score-bar.js +22 -8
- package/lib/utils/score-bar/score-bar.js.flow +35 -10
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,13 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
|
|
4
4
|
|
|
5
|
+
### [0.3.9](https://github.com/spaced-out/ui-design-system/compare/v0.3.8...v0.3.9) (2024-12-17)
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
### Features
|
|
9
|
+
|
|
10
|
+
* [GDS-473] introduces withBorder and labelMap props in the score-bar component. ([#297](https://github.com/spaced-out/ui-design-system/issues/297)) ([9c741d2](https://github.com/spaced-out/ui-design-system/commit/9c741d285aa91f97f1afb35bc4e9379d3bf09d0b))
|
|
11
|
+
|
|
5
12
|
### [0.3.8](https://github.com/spaced-out/ui-design-system/compare/v0.3.8-beta.0...v0.3.8) (2024-12-13)
|
|
6
13
|
|
|
7
14
|
### [0.3.8-beta.0](https://github.com/spaced-out/ui-design-system/compare/v0.3.7...v0.3.8-beta.0) (2024-12-12)
|
|
@@ -261,23 +261,23 @@
|
|
|
261
261
|
"score-bar": {
|
|
262
262
|
"level": {
|
|
263
263
|
"1": {
|
|
264
|
-
"value": "{baseColor.
|
|
264
|
+
"value": "{baseColor.gray.400.value}"
|
|
265
265
|
},
|
|
266
266
|
"2": {
|
|
267
|
-
"value": "{baseColor.
|
|
267
|
+
"value": "{baseColor.red.400.value}"
|
|
268
268
|
},
|
|
269
269
|
"3": {
|
|
270
|
-
"value": "{baseColor.
|
|
270
|
+
"value": "{baseColor.orange.400.value}"
|
|
271
271
|
},
|
|
272
272
|
"4": {
|
|
273
|
-
"value": "{baseColor.
|
|
273
|
+
"value": "{baseColor.blue.400.value}"
|
|
274
274
|
},
|
|
275
275
|
"5": {
|
|
276
|
-
"value": "{baseColor.green.
|
|
276
|
+
"value": "{baseColor.green.400.value}"
|
|
277
277
|
}
|
|
278
278
|
},
|
|
279
279
|
"inactive": {
|
|
280
|
-
"value": "{baseColor.
|
|
280
|
+
"value": "{baseColor.gray.200.value}"
|
|
281
281
|
}
|
|
282
282
|
},
|
|
283
283
|
"gray.lightest": {
|
|
@@ -11,6 +11,7 @@ var _color = require("../../styles/variables/_color.js");
|
|
|
11
11
|
var _size = require("../../styles/variables/_size");
|
|
12
12
|
var _classify = require("../../utils/classify");
|
|
13
13
|
var _scoreBar = require("../../utils/score-bar");
|
|
14
|
+
var _Text = require("../Text");
|
|
14
15
|
var _ScoreBarModule = _interopRequireDefault(require("./ScoreBar.module.css"));
|
|
15
16
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
16
17
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
@@ -37,13 +38,18 @@ const ScoreBar = /*#__PURE__*/React.forwardRef((_ref, ref) => {
|
|
|
37
38
|
colorMap = DEFAULT_COLOR_MAP,
|
|
38
39
|
totalBars = DEFAULT_BARS_COUNT,
|
|
39
40
|
direction = 'vertical',
|
|
40
|
-
classNames
|
|
41
|
+
classNames,
|
|
42
|
+
withBorder = false,
|
|
43
|
+
labelMap
|
|
41
44
|
} = _ref;
|
|
42
45
|
(0, _invariant.default)(totalBars > 0, JSON.stringify(_scoreBar.SCORE_BAR_ERRORS.INVALID_BAR_COUNT));
|
|
46
|
+
const activeLabel = (0, _scoreBar.getLabelByScorePercentage)(score, totalBars, labelMap);
|
|
43
47
|
return /*#__PURE__*/React.createElement("div", {
|
|
44
48
|
ref: ref,
|
|
45
49
|
"data-testid": "ScoreBar",
|
|
46
|
-
className: (0, _classify.classify)(_ScoreBarModule.default.scoreBarWrapper,
|
|
50
|
+
className: (0, _classify.classify)(_ScoreBarModule.default.scoreBarWrapper, {
|
|
51
|
+
[_ScoreBarModule.default.scoreBarBorder]: withBorder
|
|
52
|
+
}, classNames?.wrapper)
|
|
47
53
|
}, /*#__PURE__*/React.createElement("div", {
|
|
48
54
|
className: (0, _classify.classify)(_ScoreBarModule.default.scoreBarContainer, classNames?.container),
|
|
49
55
|
style: {
|
|
@@ -59,6 +65,8 @@ const ScoreBar = /*#__PURE__*/React.forwardRef((_ref, ref) => {
|
|
|
59
65
|
'--width': direction === Direction.vertical ? _size.size18 : _size.size2
|
|
60
66
|
},
|
|
61
67
|
key: count
|
|
62
|
-
})))
|
|
68
|
+
}))), activeLabel && /*#__PURE__*/React.createElement(_Text.SubTitleExtraSmall, {
|
|
69
|
+
className: (0, _classify.classify)(_ScoreBarModule.default.scoreBarLabel, classNames?.label)
|
|
70
|
+
}, activeLabel));
|
|
63
71
|
});
|
|
64
72
|
exports.ScoreBar = ScoreBar;
|
|
@@ -16,8 +16,10 @@ import {size2, size18} from '../../styles/variables/_size';
|
|
|
16
16
|
import {classify} from '../../utils/classify';
|
|
17
17
|
import {
|
|
18
18
|
getColorByScorePercentage,
|
|
19
|
+
getLabelByScorePercentage,
|
|
19
20
|
SCORE_BAR_ERRORS,
|
|
20
21
|
} from '../../utils/score-bar';
|
|
22
|
+
import {SubTitleExtraSmall} from '../Text';
|
|
21
23
|
|
|
22
24
|
import css from './ScoreBar.module.css';
|
|
23
25
|
|
|
@@ -31,24 +33,24 @@ export type ClassNames = $ReadOnly<{
|
|
|
31
33
|
container?: string,
|
|
32
34
|
wrapper?: string,
|
|
33
35
|
bar?: string,
|
|
36
|
+
label?: string,
|
|
34
37
|
}>;
|
|
35
38
|
|
|
36
39
|
export type ScoreBarDirection = $Values<typeof Direction>;
|
|
37
40
|
export type ScoreBarColorMap = $ReadOnly<{
|
|
38
|
-
|
|
39
|
-
'100': string, // score > 80%
|
|
40
|
-
'80': string, // score > 60% and score <= %80
|
|
41
|
-
'60': string, // score > 40% and score <= %60
|
|
42
|
-
'40': string, // score > 20% and score <= 40%
|
|
43
|
-
'20': string, // score > 0% and score <= 20%
|
|
41
|
+
[key: string]: string,
|
|
44
42
|
}>;
|
|
45
43
|
|
|
44
|
+
export type ScoreBarLabelMap = ScoreBarColorMap;
|
|
45
|
+
|
|
46
46
|
export type ScoreBarProps = {
|
|
47
47
|
classNames?: ClassNames,
|
|
48
48
|
direction?: ScoreBarDirection,
|
|
49
49
|
colorMap?: ScoreBarColorMap,
|
|
50
|
+
labelMap?: ScoreBarLabelMap,
|
|
50
51
|
totalBars?: number,
|
|
51
52
|
score?: number,
|
|
53
|
+
withBorder?: boolean,
|
|
52
54
|
};
|
|
53
55
|
|
|
54
56
|
const DEFAULT_BARS_COUNT = 5;
|
|
@@ -70,6 +72,8 @@ export const ScoreBar: React$AbstractComponent<ScoreBarProps, HTMLDivElement> =
|
|
|
70
72
|
totalBars = DEFAULT_BARS_COUNT,
|
|
71
73
|
direction = 'vertical',
|
|
72
74
|
classNames,
|
|
75
|
+
withBorder = false,
|
|
76
|
+
labelMap,
|
|
73
77
|
}: ScoreBarProps,
|
|
74
78
|
ref,
|
|
75
79
|
): React.Node => {
|
|
@@ -78,11 +82,17 @@ export const ScoreBar: React$AbstractComponent<ScoreBarProps, HTMLDivElement> =
|
|
|
78
82
|
JSON.stringify(SCORE_BAR_ERRORS.INVALID_BAR_COUNT),
|
|
79
83
|
);
|
|
80
84
|
|
|
85
|
+
const activeLabel = getLabelByScorePercentage(score, totalBars, labelMap);
|
|
86
|
+
|
|
81
87
|
return (
|
|
82
88
|
<div
|
|
83
89
|
ref={ref}
|
|
84
90
|
data-testid="ScoreBar"
|
|
85
|
-
className={classify(
|
|
91
|
+
className={classify(
|
|
92
|
+
css.scoreBarWrapper,
|
|
93
|
+
{[css.scoreBarBorder]: withBorder},
|
|
94
|
+
classNames?.wrapper,
|
|
95
|
+
)}
|
|
86
96
|
>
|
|
87
97
|
<div
|
|
88
98
|
className={classify(css.scoreBarContainer, classNames?.container)}
|
|
@@ -111,6 +121,14 @@ export const ScoreBar: React$AbstractComponent<ScoreBarProps, HTMLDivElement> =
|
|
|
111
121
|
/>
|
|
112
122
|
))}
|
|
113
123
|
</div>
|
|
124
|
+
|
|
125
|
+
{activeLabel && (
|
|
126
|
+
<SubTitleExtraSmall
|
|
127
|
+
className={classify(css.scoreBarLabel, classNames?.label)}
|
|
128
|
+
>
|
|
129
|
+
{activeLabel}
|
|
130
|
+
</SubTitleExtraSmall>
|
|
131
|
+
)}
|
|
114
132
|
</div>
|
|
115
133
|
);
|
|
116
134
|
},
|
|
@@ -1,31 +1,28 @@
|
|
|
1
1
|
@value (
|
|
2
|
+
spaceXSmall,
|
|
3
|
+
spaceXXSmall
|
|
4
|
+
) from '../../styles/variables/_space.css';
|
|
5
|
+
@value (
|
|
6
|
+
borderRadiusSmall,
|
|
2
7
|
borderRadiusXSmall
|
|
3
8
|
) from '../../styles/variables/_border.css';
|
|
4
|
-
@value (
|
|
5
|
-
size34,
|
|
6
|
-
size18,
|
|
7
|
-
size2
|
|
8
|
-
) from '../../styles/variables/_size.css';
|
|
9
|
-
@value (
|
|
10
|
-
spaceXXSmall,
|
|
11
|
-
spaceXSmall
|
|
12
|
-
) from '../../styles/variables/_space.css';
|
|
13
9
|
|
|
14
10
|
.scoreBarWrapper {
|
|
15
11
|
display: flex;
|
|
16
12
|
padding: spaceXSmall;
|
|
17
13
|
align-items: center;
|
|
18
14
|
justify-content: center;
|
|
15
|
+
width: fit-content;
|
|
19
16
|
}
|
|
20
17
|
|
|
21
18
|
.scoreBarContainer {
|
|
19
|
+
display: flex;
|
|
20
|
+
align-items: center;
|
|
21
|
+
justify-content: space-between;
|
|
22
|
+
gap: calc(spaceXXSmall / 2);
|
|
22
23
|
width: var(--width);
|
|
23
24
|
height: var(--height);
|
|
24
|
-
gap: calc(spaceXXSmall / 2);
|
|
25
|
-
display: flex;
|
|
26
25
|
flex-direction: var(--direction);
|
|
27
|
-
justify-content: space-between;
|
|
28
|
-
align-items: center;
|
|
29
26
|
}
|
|
30
27
|
|
|
31
28
|
.bar {
|
|
@@ -34,3 +31,12 @@
|
|
|
34
31
|
border-radius: borderRadiusXSmall;
|
|
35
32
|
background-color: var(--background-color);
|
|
36
33
|
}
|
|
34
|
+
|
|
35
|
+
.scoreBarBorder {
|
|
36
|
+
composes: borderPrimary from '../../styles/border.module.css';
|
|
37
|
+
border-radius: borderRadiusSmall;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
.scoreBarLabel {
|
|
41
|
+
padding-left: spaceXSmall;
|
|
42
|
+
}
|
package/lib/styles/index.css
CHANGED
|
@@ -162,17 +162,17 @@
|
|
|
162
162
|
|
|
163
163
|
@value colorDataViz8: #F5EBB4;
|
|
164
164
|
|
|
165
|
-
@value colorScoreBarLevel1: #
|
|
165
|
+
@value colorScoreBarLevel1: #7e7e7e;
|
|
166
166
|
|
|
167
|
-
@value colorScoreBarLevel2: #
|
|
167
|
+
@value colorScoreBarLevel2: #e94970;
|
|
168
168
|
|
|
169
|
-
@value colorScoreBarLevel3: #
|
|
169
|
+
@value colorScoreBarLevel3: #e5983d;
|
|
170
170
|
|
|
171
|
-
@value colorScoreBarLevel4: #
|
|
171
|
+
@value colorScoreBarLevel4: #3987f3;
|
|
172
172
|
|
|
173
|
-
@value colorScoreBarLevel5: #
|
|
173
|
+
@value colorScoreBarLevel5: #35ab71;
|
|
174
174
|
|
|
175
|
-
@value colorScoreBarInactive: #
|
|
175
|
+
@value colorScoreBarInactive: #d1d1d1;
|
|
176
176
|
|
|
177
177
|
@value colorGrayLightest: #EBEBEB;
|
|
178
178
|
|
package/lib/styles/index.js
CHANGED
|
@@ -171,17 +171,17 @@ const colorDataViz7 = '#F5B8E1';
|
|
|
171
171
|
exports.colorDataViz7 = colorDataViz7;
|
|
172
172
|
const colorDataViz8 = '#F5EBB4';
|
|
173
173
|
exports.colorDataViz8 = colorDataViz8;
|
|
174
|
-
const colorScoreBarLevel1 = '#
|
|
174
|
+
const colorScoreBarLevel1 = '#7e7e7e';
|
|
175
175
|
exports.colorScoreBarLevel1 = colorScoreBarLevel1;
|
|
176
|
-
const colorScoreBarLevel2 = '#
|
|
176
|
+
const colorScoreBarLevel2 = '#e94970';
|
|
177
177
|
exports.colorScoreBarLevel2 = colorScoreBarLevel2;
|
|
178
|
-
const colorScoreBarLevel3 = '#
|
|
178
|
+
const colorScoreBarLevel3 = '#e5983d';
|
|
179
179
|
exports.colorScoreBarLevel3 = colorScoreBarLevel3;
|
|
180
|
-
const colorScoreBarLevel4 = '#
|
|
180
|
+
const colorScoreBarLevel4 = '#3987f3';
|
|
181
181
|
exports.colorScoreBarLevel4 = colorScoreBarLevel4;
|
|
182
|
-
const colorScoreBarLevel5 = '#
|
|
182
|
+
const colorScoreBarLevel5 = '#35ab71';
|
|
183
183
|
exports.colorScoreBarLevel5 = colorScoreBarLevel5;
|
|
184
|
-
const colorScoreBarInactive = '#
|
|
184
|
+
const colorScoreBarInactive = '#d1d1d1';
|
|
185
185
|
exports.colorScoreBarInactive = colorScoreBarInactive;
|
|
186
186
|
const colorGrayLightest = '#EBEBEB';
|
|
187
187
|
exports.colorGrayLightest = colorGrayLightest;
|
package/lib/styles/index.js.flow
CHANGED
|
@@ -164,17 +164,17 @@ export const colorDataViz7 = '#F5B8E1';
|
|
|
164
164
|
|
|
165
165
|
export const colorDataViz8 = '#F5EBB4';
|
|
166
166
|
|
|
167
|
-
export const colorScoreBarLevel1 = '#
|
|
167
|
+
export const colorScoreBarLevel1 = '#7e7e7e';
|
|
168
168
|
|
|
169
|
-
export const colorScoreBarLevel2 = '#
|
|
169
|
+
export const colorScoreBarLevel2 = '#e94970';
|
|
170
170
|
|
|
171
|
-
export const colorScoreBarLevel3 = '#
|
|
171
|
+
export const colorScoreBarLevel3 = '#e5983d';
|
|
172
172
|
|
|
173
|
-
export const colorScoreBarLevel4 = '#
|
|
173
|
+
export const colorScoreBarLevel4 = '#3987f3';
|
|
174
174
|
|
|
175
|
-
export const colorScoreBarLevel5 = '#
|
|
175
|
+
export const colorScoreBarLevel5 = '#35ab71';
|
|
176
176
|
|
|
177
|
-
export const colorScoreBarInactive = '#
|
|
177
|
+
export const colorScoreBarInactive = '#d1d1d1';
|
|
178
178
|
|
|
179
179
|
export const colorGrayLightest = '#EBEBEB';
|
|
180
180
|
|
|
@@ -138,17 +138,17 @@
|
|
|
138
138
|
|
|
139
139
|
@value colorDataViz8: #F5EBB4;
|
|
140
140
|
|
|
141
|
-
@value colorScoreBarLevel1: #
|
|
141
|
+
@value colorScoreBarLevel1: #7e7e7e;
|
|
142
142
|
|
|
143
|
-
@value colorScoreBarLevel2: #
|
|
143
|
+
@value colorScoreBarLevel2: #e94970;
|
|
144
144
|
|
|
145
|
-
@value colorScoreBarLevel3: #
|
|
145
|
+
@value colorScoreBarLevel3: #e5983d;
|
|
146
146
|
|
|
147
|
-
@value colorScoreBarLevel4: #
|
|
147
|
+
@value colorScoreBarLevel4: #3987f3;
|
|
148
148
|
|
|
149
|
-
@value colorScoreBarLevel5: #
|
|
149
|
+
@value colorScoreBarLevel5: #35ab71;
|
|
150
150
|
|
|
151
|
-
@value colorScoreBarInactive: #
|
|
151
|
+
@value colorScoreBarInactive: #d1d1d1;
|
|
152
152
|
|
|
153
153
|
@value colorGrayLightest: #EBEBEB;
|
|
154
154
|
|
|
@@ -146,17 +146,17 @@ const colorDataViz7 = '#F5B8E1';
|
|
|
146
146
|
exports.colorDataViz7 = colorDataViz7;
|
|
147
147
|
const colorDataViz8 = '#F5EBB4';
|
|
148
148
|
exports.colorDataViz8 = colorDataViz8;
|
|
149
|
-
const colorScoreBarLevel1 = '#
|
|
149
|
+
const colorScoreBarLevel1 = '#7e7e7e';
|
|
150
150
|
exports.colorScoreBarLevel1 = colorScoreBarLevel1;
|
|
151
|
-
const colorScoreBarLevel2 = '#
|
|
151
|
+
const colorScoreBarLevel2 = '#e94970';
|
|
152
152
|
exports.colorScoreBarLevel2 = colorScoreBarLevel2;
|
|
153
|
-
const colorScoreBarLevel3 = '#
|
|
153
|
+
const colorScoreBarLevel3 = '#e5983d';
|
|
154
154
|
exports.colorScoreBarLevel3 = colorScoreBarLevel3;
|
|
155
|
-
const colorScoreBarLevel4 = '#
|
|
155
|
+
const colorScoreBarLevel4 = '#3987f3';
|
|
156
156
|
exports.colorScoreBarLevel4 = colorScoreBarLevel4;
|
|
157
|
-
const colorScoreBarLevel5 = '#
|
|
157
|
+
const colorScoreBarLevel5 = '#35ab71';
|
|
158
158
|
exports.colorScoreBarLevel5 = colorScoreBarLevel5;
|
|
159
|
-
const colorScoreBarInactive = '#
|
|
159
|
+
const colorScoreBarInactive = '#d1d1d1';
|
|
160
160
|
exports.colorScoreBarInactive = colorScoreBarInactive;
|
|
161
161
|
const colorGrayLightest = '#EBEBEB';
|
|
162
162
|
exports.colorGrayLightest = colorGrayLightest;
|
|
@@ -140,17 +140,17 @@ export const colorDataViz7 = '#F5B8E1';
|
|
|
140
140
|
|
|
141
141
|
export const colorDataViz8 = '#F5EBB4';
|
|
142
142
|
|
|
143
|
-
export const colorScoreBarLevel1 = '#
|
|
143
|
+
export const colorScoreBarLevel1 = '#7e7e7e';
|
|
144
144
|
|
|
145
|
-
export const colorScoreBarLevel2 = '#
|
|
145
|
+
export const colorScoreBarLevel2 = '#e94970';
|
|
146
146
|
|
|
147
|
-
export const colorScoreBarLevel3 = '#
|
|
147
|
+
export const colorScoreBarLevel3 = '#e5983d';
|
|
148
148
|
|
|
149
|
-
export const colorScoreBarLevel4 = '#
|
|
149
|
+
export const colorScoreBarLevel4 = '#3987f3';
|
|
150
150
|
|
|
151
|
-
export const colorScoreBarLevel5 = '#
|
|
151
|
+
export const colorScoreBarLevel5 = '#35ab71';
|
|
152
152
|
|
|
153
|
-
export const colorScoreBarInactive = '#
|
|
153
|
+
export const colorScoreBarInactive = '#d1d1d1';
|
|
154
154
|
|
|
155
155
|
export const colorGrayLightest = '#EBEBEB';
|
|
156
156
|
|
|
@@ -3,21 +3,35 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.getColorByScorePercentage = exports.SCORE_BAR_ERRORS = void 0;
|
|
6
|
+
exports.getLabelByScorePercentage = exports.getColorByScorePercentage = exports.SCORE_BAR_ERRORS = void 0;
|
|
7
7
|
|
|
8
|
-
const
|
|
9
|
-
if (score <= 0) {
|
|
10
|
-
return colorMap.inactive;
|
|
11
|
-
}
|
|
8
|
+
const getValidRange = (score, totalBars, keys) => {
|
|
12
9
|
const scorePercentage = 100 * score / totalBars;
|
|
13
|
-
const
|
|
14
|
-
|
|
10
|
+
for (const key of keys) {
|
|
11
|
+
if (scorePercentage <= Number(key)) {
|
|
12
|
+
return key;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
return [...keys].pop() || '';
|
|
15
16
|
};
|
|
16
17
|
const getColorByScorePercentage = (totalBars, score, currentBarNumber, colorMap) => {
|
|
17
|
-
|
|
18
|
+
if (score <= 0) {
|
|
19
|
+
return colorMap.inactive;
|
|
20
|
+
}
|
|
21
|
+
const validRange = getValidRange(score, totalBars, Object.keys(colorMap));
|
|
22
|
+
const validColor = colorMap[validRange];
|
|
18
23
|
return currentBarNumber < score ? validColor : colorMap.inactive;
|
|
19
24
|
};
|
|
20
25
|
exports.getColorByScorePercentage = getColorByScorePercentage;
|
|
26
|
+
const getLabelByScorePercentage = (score, totalBars, labelMap) => {
|
|
27
|
+
if (!labelMap) {
|
|
28
|
+
return '';
|
|
29
|
+
}
|
|
30
|
+
const validRange = getValidRange(score, totalBars, Object.keys(labelMap));
|
|
31
|
+
const validLabel = labelMap[validRange];
|
|
32
|
+
return validLabel || '';
|
|
33
|
+
};
|
|
34
|
+
exports.getLabelByScorePercentage = getLabelByScorePercentage;
|
|
21
35
|
const SCORE_BAR_ERRORS = Object.freeze({
|
|
22
36
|
INVALID_BAR_COUNT: {
|
|
23
37
|
type: 'INVALID_BAR_COUNT',
|
|
@@ -1,18 +1,24 @@
|
|
|
1
1
|
// @flow strict
|
|
2
|
-
import type {ScoreBarColorMap} from '../../components/ScoreBar';
|
|
3
2
|
|
|
3
|
+
import type {
|
|
4
|
+
ScoreBarColorMap,
|
|
5
|
+
ScoreBarLabelMap,
|
|
6
|
+
} from '../../components/ScoreBar';
|
|
4
7
|
|
|
5
|
-
|
|
6
|
-
|
|
8
|
+
|
|
9
|
+
const getValidRange = (
|
|
7
10
|
score: number,
|
|
8
|
-
|
|
11
|
+
totalBars: number,
|
|
12
|
+
keys: Array<string>,
|
|
9
13
|
): string => {
|
|
10
|
-
if (score <= 0) {
|
|
11
|
-
return colorMap.inactive;
|
|
12
|
-
}
|
|
13
14
|
const scorePercentage = (100 * score) / totalBars;
|
|
14
|
-
const
|
|
15
|
-
|
|
15
|
+
for (const key of keys) {
|
|
16
|
+
if (scorePercentage <= Number(key)) {
|
|
17
|
+
return key;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
return [...keys].pop() || '';
|
|
16
22
|
};
|
|
17
23
|
|
|
18
24
|
export const getColorByScorePercentage = (
|
|
@@ -21,10 +27,29 @@ export const getColorByScorePercentage = (
|
|
|
21
27
|
currentBarNumber: number,
|
|
22
28
|
colorMap: ScoreBarColorMap,
|
|
23
29
|
): string => {
|
|
24
|
-
|
|
30
|
+
if (score <= 0) {
|
|
31
|
+
return colorMap.inactive;
|
|
32
|
+
}
|
|
33
|
+
const validRange = getValidRange(score, totalBars, Object.keys(colorMap));
|
|
34
|
+
const validColor = colorMap[validRange];
|
|
35
|
+
|
|
25
36
|
return currentBarNumber < score ? validColor : colorMap.inactive;
|
|
26
37
|
};
|
|
27
38
|
|
|
39
|
+
export const getLabelByScorePercentage = (
|
|
40
|
+
score: number,
|
|
41
|
+
totalBars: number,
|
|
42
|
+
labelMap?: ScoreBarLabelMap,
|
|
43
|
+
): string => {
|
|
44
|
+
if (!labelMap) {
|
|
45
|
+
return '';
|
|
46
|
+
}
|
|
47
|
+
const validRange = getValidRange(score, totalBars, Object.keys(labelMap));
|
|
48
|
+
const validLabel = labelMap[validRange];
|
|
49
|
+
|
|
50
|
+
return validLabel || '';
|
|
51
|
+
};
|
|
52
|
+
|
|
28
53
|
export const SCORE_BAR_ERRORS = Object.freeze({
|
|
29
54
|
INVALID_BAR_COUNT: {
|
|
30
55
|
type: 'INVALID_BAR_COUNT',
|