@cloudflare/util-formatters 2.6.14 → 2.7.2

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 CHANGED
@@ -3,6 +3,41 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ ## [2.7.2](http://stash.cfops.it:7999/fe/stratus/compare/@cloudflare/util-formatters@2.7.1...@cloudflare/util-formatters@2.7.2) (2022-02-14)
7
+
8
+ **Note:** Version bump only for package @cloudflare/util-formatters
9
+
10
+
11
+
12
+
13
+
14
+ ## [2.7.1](http://stash.cfops.it:7999/fe/stratus/compare/@cloudflare/util-formatters@2.7.0...@cloudflare/util-formatters@2.7.1) (2021-12-06)
15
+
16
+ **Note:** Version bump only for package @cloudflare/util-formatters
17
+
18
+
19
+
20
+
21
+
22
+ # [2.7.0](http://stash.cfops.it:7999/fe/stratus/compare/@cloudflare/util-formatters@2.6.15...@cloudflare/util-formatters@2.7.0) (2021-11-29)
23
+
24
+
25
+ ### Features
26
+
27
+ * **stratus:** EW-5929 Integrate percentage view for chart legend ([7fecfd9](http://stash.cfops.it:7999/fe/stratus/commits/7fecfd9))
28
+
29
+
30
+
31
+
32
+
33
+ ## [2.6.15](http://stash.cfops.it:7999/fe/stratus/compare/@cloudflare/util-formatters@2.6.14...@cloudflare/util-formatters@2.6.15) (2021-11-23)
34
+
35
+ **Note:** Version bump only for package @cloudflare/util-formatters
36
+
37
+
38
+
39
+
40
+
6
41
  ## [2.6.14](http://stash.cfops.it:7999/fe/stratus/compare/@cloudflare/util-formatters@2.6.13...@cloudflare/util-formatters@2.6.14) (2021-11-22)
7
42
 
8
43
  **Note:** Version bump only for package @cloudflare/util-formatters
@@ -67,3 +67,5 @@ export declare const formatBits: (number: number, locale: SupportedLocales | und
67
67
  */
68
68
  export declare const formatNumberForAnalytics: (number: number, locale?: SupportedLocales, useSI?: boolean, decimalPlaces?: number, trimInsignificantZeros?: boolean) => string;
69
69
  export declare const capitalizeStr: (str: string) => string | undefined;
70
+ export declare const formatPercentage: (value: number, total: number) => string;
71
+ export declare const roundPercentage: (val: number, roundDecimalCases?: number, locale?: SupportedLocales) => string;
package/es/formatters.js CHANGED
@@ -163,4 +163,27 @@ export const formatBits = (number, locale = DEFAULT_LOCALE, includeDecimals, use
163
163
  export const formatNumberForAnalytics = (number, locale = DEFAULT_LOCALE, useSI = false, decimalPlaces = 2, trimInsignificantZeros = true) => {
164
164
  return formatNumber(number, locale, useSI, decimalPlaces, trimInsignificantZeros);
165
165
  };
166
- export const capitalizeStr = str => str && str.charAt(0).toUpperCase() + str.slice(1);
166
+ export const capitalizeStr = str => str && str.charAt(0).toUpperCase() + str.slice(1);
167
+ export const formatPercentage = (value, total) => `${Math.round(value * 100 / total * 100) / 100}%`;
168
+ export const roundPercentage = (val, roundDecimalCases = 0, locale = DEFAULT_LOCALE) => {
169
+ const roundDiv = Math.pow(10, roundDecimalCases); // Treat ~0% and ~100% values specially so the precision is surfaced
170
+
171
+ let localizedString = '';
172
+
173
+ if (val > 99) {
174
+ // Edge case: between 99 and 100, produce values with precision like this:
175
+ // 99.999735 --> 99.9997
176
+ localizedString = localizeNumberWithPrecision(100 - +(100 - val).toPrecision(1), locale);
177
+ } else if (val < 1) {
178
+ // Edge case: between 0 and 1, produce values with the precision of one
179
+ // significant digit:
180
+ // 0.000273 --> 0.0003
181
+ localizedString = localizeNumberWithPrecision(+val.toPrecision(1), locale);
182
+ } else {
183
+ // In all other cases, round to the nearest integer:
184
+ // 78.612 --> 79
185
+ localizedString = formatNumberForAnalytics(val * roundDiv / roundDiv, locale, false, roundDecimalCases);
186
+ }
187
+
188
+ return localizedString + '%';
189
+ };
package/lib/formatters.js CHANGED
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.capitalizeStr = exports.formatNumberForAnalytics = exports.formatBits = exports.formatBytes = exports.formatCurrency = exports.formatNumber = exports.localizeNumberWithPrecision = exports.formatDate = exports.DateFormatters = void 0;
6
+ exports.roundPercentage = exports.formatPercentage = exports.capitalizeStr = exports.formatNumberForAnalytics = exports.formatBits = exports.formatBytes = exports.formatCurrency = exports.formatNumber = exports.localizeNumberWithPrecision = exports.formatDate = exports.DateFormatters = void 0;
7
7
 
8
8
  var _d3Format = require("d3-format");
9
9
 
@@ -221,4 +221,37 @@ var capitalizeStr = function capitalizeStr(str) {
221
221
  return str && str.charAt(0).toUpperCase() + str.slice(1);
222
222
  };
223
223
 
224
- exports.capitalizeStr = capitalizeStr;
224
+ exports.capitalizeStr = capitalizeStr;
225
+
226
+ var formatPercentage = function formatPercentage(value, total) {
227
+ return "".concat(Math.round(value * 100 / total * 100) / 100, "%");
228
+ };
229
+
230
+ exports.formatPercentage = formatPercentage;
231
+
232
+ var roundPercentage = function roundPercentage(val) {
233
+ var roundDecimalCases = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
234
+ var locale = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : DEFAULT_LOCALE;
235
+ var roundDiv = Math.pow(10, roundDecimalCases); // Treat ~0% and ~100% values specially so the precision is surfaced
236
+
237
+ var localizedString = '';
238
+
239
+ if (val > 99) {
240
+ // Edge case: between 99 and 100, produce values with precision like this:
241
+ // 99.999735 --> 99.9997
242
+ localizedString = localizeNumberWithPrecision(100 - +(100 - val).toPrecision(1), locale);
243
+ } else if (val < 1) {
244
+ // Edge case: between 0 and 1, produce values with the precision of one
245
+ // significant digit:
246
+ // 0.000273 --> 0.0003
247
+ localizedString = localizeNumberWithPrecision(+val.toPrecision(1), locale);
248
+ } else {
249
+ // In all other cases, round to the nearest integer:
250
+ // 78.612 --> 79
251
+ localizedString = formatNumberForAnalytics(val * roundDiv / roundDiv, locale, false, roundDecimalCases);
252
+ }
253
+
254
+ return localizedString + '%';
255
+ };
256
+
257
+ exports.roundPercentage = roundPercentage;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@cloudflare/util-formatters",
3
3
  "description": "",
4
- "version": "2.6.14",
4
+ "version": "2.7.2",
5
5
  "types": "./dist/index.d.ts",
6
6
  "main": "lib/index.js",
7
7
  "module": "es/index.js",
@@ -17,9 +17,9 @@
17
17
  "autoGeneratedReadme": true
18
18
  },
19
19
  "dependencies": {
20
- "@cloudflare/intl-core": "^1.10.3",
20
+ "@cloudflare/intl-core": "^1.10.4",
21
21
  "d3-format": "^1.3.2",
22
- "moment": "^2.22.1"
22
+ "moment": "^2.29.1"
23
23
  },
24
- "gitHead": "569113c2ab73ce93969008d15ad9e6648d0d3ed0"
24
+ "gitHead": "e291d1ce7d364a3bdc62b63aaf17a0164e3abce0"
25
25
  }