ydb-embedded-ui 1.10.2 → 1.11.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (28) hide show
  1. package/CHANGELOG.md +36 -0
  2. package/dist/components/IndexInfoViewer/IndexInfoViewer.tsx +2 -2
  3. package/dist/components/InfoViewer/InfoViewer.scss +32 -7
  4. package/dist/components/InfoViewer/InfoViewer.tsx +43 -0
  5. package/dist/components/InfoViewer/index.ts +1 -0
  6. package/dist/components/InfoViewer/utils.ts +6 -4
  7. package/dist/components/Stack/Stack.scss +55 -0
  8. package/dist/components/Stack/Stack.tsx +35 -0
  9. package/dist/containers/Storage/DiskStateProgressBar/DiskStateProgressBar.scss +2 -0
  10. package/dist/containers/Storage/DiskStateProgressBar/DiskStateProgressBar.tsx +5 -0
  11. package/dist/containers/Storage/Pdisk/Pdisk.scss +2 -19
  12. package/dist/containers/Storage/Pdisk/Pdisk.tsx +30 -33
  13. package/dist/containers/Storage/Pdisk/__tests__/colors.tsx +40 -0
  14. package/dist/containers/Storage/StorageGroups/StorageGroups.scss +25 -3
  15. package/dist/containers/Storage/StorageGroups/StorageGroups.tsx +39 -9
  16. package/dist/containers/Storage/Vdisk/Vdisk.js +63 -64
  17. package/dist/containers/Storage/Vdisk/Vdisk.scss +9 -28
  18. package/dist/containers/Storage/Vdisk/__tests__/colors.tsx +163 -0
  19. package/dist/containers/Storage/utils/index.ts +5 -0
  20. package/dist/containers/Tenant/Schema/SchemaInfoViewer/SchemaInfoViewer.js +3 -3
  21. package/dist/setupTests.js +8 -0
  22. package/dist/types/api/schema.ts +6 -14
  23. package/dist/types/api/storage.ts +118 -0
  24. package/dist/types/index.ts +1 -0
  25. package/dist/utils/index.js +22 -2
  26. package/package.json +28 -5
  27. package/dist/components/InfoViewer/InfoViewer.js +0 -47
  28. package/dist/index.test.js +0 -5
@@ -1,14 +1,18 @@
1
1
  import numeral from 'numeral';
2
+ import locales from 'numeral/locales'; // eslint-disable-line no-unused-vars
2
3
  import _ from 'lodash';
3
4
 
4
5
  import {i18n} from './i18n';
5
6
  import {MEGABYTE, TERABYTE, DAY_IN_SECONDS, GIGABYTE} from './constants';
6
-
7
- import locales from 'numeral/locales'; // eslint-disable-line no-unused-vars
7
+ import {isNumeric} from './utils';
8
8
 
9
9
  numeral.locale(i18n.lang);
10
10
 
11
11
  export const formatBytes = (bytes) => {
12
+ if (!isNumeric(bytes)) {
13
+ return '';
14
+ }
15
+
12
16
  // by agreement, display byte values in decimal scale
13
17
  return numeral(bytes).format('0 b');
14
18
  };
@@ -53,13 +57,29 @@ export const formatThroughput = (value, total) => {
53
57
  };
54
58
 
55
59
  export const formatNumber = (number) => {
60
+ if (!isNumeric(number)) {
61
+ return '';
62
+ }
63
+
56
64
  return numeral(number).format();
57
65
  };
58
66
 
59
67
  export const formatCPU = (value) => {
68
+ if (!isNumeric(value)) {
69
+ return '';
70
+ }
71
+
60
72
  return numeral(value / 1000000).format('0.00');
61
73
  };
62
74
 
75
+ export const formatDateTime = (value) => {
76
+ if (!isNumeric(value)) {
77
+ return '';
78
+ }
79
+
80
+ return value > 0 ? new Date(Number(value)).toUTCString() : 'N/A';
81
+ };
82
+
63
83
  export const calcUptime = (milliseconds) => {
64
84
  const currentDate = new Date();
65
85
  return formatUptime((currentDate - Number(milliseconds)) / 1000);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ydb-embedded-ui",
3
- "version": "1.10.2",
3
+ "version": "1.11.1",
4
4
  "files": [
5
5
  "dist"
6
6
  ],
@@ -9,10 +9,6 @@
9
9
  "url": "git@github.com:ydb-platform/ydb-embedded-ui.git"
10
10
  },
11
11
  "dependencies": {
12
- "@testing-library/jest-dom": "5.15.0",
13
- "@testing-library/react": "11.2.7",
14
- "@testing-library/user-event": "12.8.3",
15
- "@types/qs": "6.9.7",
16
12
  "@yandex-cloud/i18n": "0.6.0",
17
13
  "@yandex-cloud/paranoid": "1.0.0",
18
14
  "@yandex-cloud/react-data-table": "0.2.1",
@@ -63,6 +59,27 @@
63
59
  "eslint --fix --quiet"
64
60
  ]
65
61
  },
62
+ "jest": {
63
+ "verbose": true,
64
+ "moduleFileExtensions": [
65
+ "js",
66
+ "json",
67
+ "ts",
68
+ "tsx"
69
+ ],
70
+ "rootDir": ".",
71
+ "transform": {
72
+ "^.+\\.[jt]sx?$": "ts-jest"
73
+ },
74
+ "coverageDirectory": "./coverage",
75
+ "collectCoverageFrom": [
76
+ "src/**/*.{ts,tsx,js,jsx}"
77
+ ],
78
+ "testEnvironment": "jsdom",
79
+ "moduleNameMapper": {
80
+ "\\.(css|less|scss|sass)$": "jest-transform-css"
81
+ }
82
+ },
66
83
  "browserslist": {
67
84
  "production": [
68
85
  ">0.2%",
@@ -78,7 +95,11 @@
78
95
  "devDependencies": {
79
96
  "@commitlint/cli": "^15.0.0",
80
97
  "@commitlint/config-conventional": "^15.0.0",
98
+ "@testing-library/jest-dom": "^5.15.0",
99
+ "@testing-library/react": "^11.2.7",
100
+ "@testing-library/user-event": "^12.8.3",
81
101
  "@types/lodash": "^4.14.178",
102
+ "@types/qs": "^6.9.7",
82
103
  "@types/react": "^17.0.44",
83
104
  "@types/react-dom": "^17.0.11",
84
105
  "@types/react-router": "^5.1.17",
@@ -95,6 +116,7 @@
95
116
  "copyfiles": "^2.4.1",
96
117
  "eslint-config-prettier": "^8.3.0",
97
118
  "husky": "^7.0.4",
119
+ "jest-transform-css": "^4.0.1",
98
120
  "lint-staged": "^12.3.7",
99
121
  "postcss": "^8.4.6",
100
122
  "prettier": "^2.5.1",
@@ -102,6 +124,7 @@
102
124
  "react-app-rewired": "^2.1.11",
103
125
  "react-dom": "^17.0.2",
104
126
  "stylelint": "^14.3.0",
127
+ "ts-jest": "^28.0.7",
105
128
  "typescript": "^4.5.5"
106
129
  },
107
130
  "peerDependencies": {
@@ -1,47 +0,0 @@
1
- import React from 'react';
2
- import PropTypes from 'prop-types';
3
- import cn from 'bem-cn-lite';
4
- import './InfoViewer.scss';
5
-
6
- const b = cn('info-viewer');
7
-
8
- class InfoViewer extends React.Component {
9
- render() {
10
- const {info, className, title} = this.props;
11
-
12
- return (
13
- <div className={`${b()} ${className}`}>
14
- {title && <div className={b('title')}>{title}</div>}
15
- {info && info.length > 0 ? (
16
- <div className={b('items')}>
17
- {info.map((data, infoIndex) => (
18
- <div className={b('row')} key={infoIndex}>
19
- <div className={b('label')}>
20
- {data.label}
21
- <div className={b('dots')}></div>
22
- </div>
23
-
24
- <div className={b('value')}>{data.value}</div>
25
- </div>
26
- ))}
27
- </div>
28
- ) : (
29
- <div>no {title} data</div>
30
- )}
31
- </div>
32
- );
33
- }
34
- }
35
-
36
- InfoViewer.propTypes = {
37
- className: PropTypes.string,
38
- info: PropTypes.array.isRequired,
39
- title: PropTypes.string,
40
- dots: PropTypes.bool,
41
- };
42
-
43
- InfoViewer.defaultProps = {
44
- className: '',
45
- };
46
-
47
- export default InfoViewer;
@@ -1,5 +0,0 @@
1
- describe('Fake tests', () => {
2
- it('A fake test', () => {
3
- expect(true).toBe(true);
4
- });
5
- });