ydb-embedded-ui 6.10.3 → 6.12.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (250) hide show
  1. package/dist/components/DateRange/DateRange.d.ts +4 -4
  2. package/dist/components/DateRange/DateRange.js +23 -26
  3. package/dist/components/DateRange/DateRange.scss +14 -13
  4. package/dist/components/DateRange/__test__/fromDateRangeValues.test.d.ts +1 -0
  5. package/dist/components/DateRange/__test__/fromDateRangeValues.test.js +80 -0
  6. package/dist/components/DateRange/__test__/getdatePickerSize.test.d.ts +1 -0
  7. package/dist/components/DateRange/__test__/getdatePickerSize.test.js +56 -0
  8. package/dist/components/DateRange/__test__/toDateRangeValues.test.d.ts +1 -0
  9. package/dist/components/DateRange/__test__/toDateRangeValues.test.js +80 -0
  10. package/dist/components/DateRange/i18n/en.json +4 -0
  11. package/dist/components/DateRange/i18n/index.d.ts +2 -0
  12. package/dist/components/DateRange/i18n/index.js +5 -0
  13. package/dist/components/DateRange/i18n/ru.json +4 -0
  14. package/dist/components/DateRange/utils.d.ts +5 -0
  15. package/dist/components/DateRange/utils.js +41 -0
  16. package/dist/components/DeveloperUILinkButton/DeveloperUILinkButton.d.ts +8 -0
  17. package/dist/components/DeveloperUILinkButton/DeveloperUILinkButton.js +9 -0
  18. package/dist/components/DeveloperUILinkButton/DeveloperUILinkButton.scss +12 -0
  19. package/dist/components/DiskStateProgressBar/DiskStateProgressBar.d.ts +6 -1
  20. package/dist/components/DiskStateProgressBar/DiskStateProgressBar.js +22 -12
  21. package/dist/components/DiskStateProgressBar/DiskStateProgressBar.scss +45 -45
  22. package/dist/components/EntityStatus/EntityStatus.js +1 -1
  23. package/dist/components/EntityStatus/EntityStatus.scss +6 -2
  24. package/dist/components/MetricChart/reducer.d.ts +2 -2
  25. package/dist/components/MonacoEditor/MonacoEditor.js +0 -2
  26. package/dist/components/NodeHostWrapper/NodeHostWrapper.d.ts +0 -1
  27. package/dist/components/NodeHostWrapper/NodeHostWrapper.js +11 -7
  28. package/dist/components/PDiskInfo/PDiskInfo.d.ts +7 -4
  29. package/dist/components/PDiskInfo/PDiskInfo.js +73 -26
  30. package/dist/components/PDiskInfo/PDiskInfo.scss +15 -1
  31. package/dist/components/PDiskInfo/i18n/en.json +11 -5
  32. package/dist/components/PDiskInfo/i18n/index.d.ts +1 -1
  33. package/dist/components/PDiskPopup/PDiskPopup.js +8 -2
  34. package/dist/components/VDiskInfo/VDiskInfo.d.ts +3 -2
  35. package/dist/components/VDiskInfo/VDiskInfo.js +9 -4
  36. package/dist/components/VDiskInfo/VDiskInfo.scss +7 -1
  37. package/dist/components/VDiskInfo/i18n/en.json +2 -1
  38. package/dist/components/VDiskInfo/i18n/index.d.ts +1 -1
  39. package/dist/containers/Cluster/Cluster.scss +1 -4
  40. package/dist/containers/Cluster/ClusterInfo/ClusterInfo.scss +1 -1
  41. package/dist/containers/Heatmap/Heatmap.d.ts +2 -1
  42. package/dist/containers/Heatmap/Heatmap.js +2 -2
  43. package/dist/containers/Node/Node.scss +1 -4
  44. package/dist/containers/Node/NodeStructure/NodeStructure.scss +0 -20
  45. package/dist/containers/Node/NodeStructure/Pdisk.js +2 -2
  46. package/dist/containers/PDiskPage/PDiskGroups/PDiskGroups.d.ts +6 -0
  47. package/dist/containers/PDiskPage/PDiskGroups/PDiskGroups.js +24 -0
  48. package/dist/containers/PDiskPage/PDiskPage.js +62 -24
  49. package/dist/containers/PDiskPage/PDiskPage.scss +8 -5
  50. package/dist/containers/PDiskPage/PDiskSpaceDistribution/PDiskSpaceDistribution.d.ts +7 -0
  51. package/dist/containers/PDiskPage/PDiskSpaceDistribution/PDiskSpaceDistribution.js +93 -0
  52. package/dist/containers/PDiskPage/PDiskSpaceDistribution/PDiskSpaceDistribution.scss +52 -0
  53. package/dist/containers/PDiskPage/PDiskSpaceDistribution/utils.d.ts +4 -0
  54. package/dist/containers/PDiskPage/PDiskSpaceDistribution/utils.js +9 -0
  55. package/dist/containers/PDiskPage/i18n/en.json +8 -1
  56. package/dist/containers/PDiskPage/i18n/index.d.ts +1 -1
  57. package/dist/containers/Storage/StorageGroups/getStorageGroupsColumns.js +16 -6
  58. package/dist/containers/Tablets/Tablets.js +12 -5
  59. package/dist/containers/Tenant/Acl/Acl.d.ts +2 -1
  60. package/dist/containers/Tenant/Acl/Acl.js +10 -8
  61. package/dist/containers/Tenant/Acl/Acl.scss +8 -8
  62. package/dist/containers/Tenant/Acl/i18n/en.json +6 -0
  63. package/dist/containers/Tenant/Acl/i18n/index.d.ts +2 -0
  64. package/dist/containers/Tenant/Acl/i18n/index.js +4 -0
  65. package/dist/containers/Tenant/Diagnostics/Describe/Describe.d.ts +2 -1
  66. package/dist/containers/Tenant/Diagnostics/Describe/Describe.js +4 -4
  67. package/dist/containers/Tenant/Diagnostics/DetailedOverview/DetailedOverview.js +1 -1
  68. package/dist/containers/Tenant/Diagnostics/Diagnostics.js +3 -3
  69. package/dist/containers/Tenant/Diagnostics/Diagnostics.scss +3 -1
  70. package/dist/containers/Tenant/Diagnostics/HotKeys/HotKeys.d.ts +2 -1
  71. package/dist/containers/Tenant/Diagnostics/HotKeys/HotKeys.js +3 -3
  72. package/dist/containers/Tenant/Diagnostics/Overview/Overview.d.ts +2 -1
  73. package/dist/containers/Tenant/Diagnostics/Overview/Overview.js +6 -18
  74. package/dist/containers/Tenant/Diagnostics/Overview/TableInfo/TableInfo.d.ts +1 -3
  75. package/dist/containers/Tenant/Diagnostics/Overview/TableInfo/TableInfo.js +2 -2
  76. package/dist/containers/Tenant/Diagnostics/Overview/TableInfo/i18n/en.json +14 -1
  77. package/dist/containers/Tenant/Diagnostics/Overview/TableInfo/i18n/index.d.ts +1 -1
  78. package/dist/containers/Tenant/Diagnostics/Overview/TableInfo/i18n/index.js +1 -2
  79. package/dist/containers/Tenant/Diagnostics/Overview/TableInfo/prepareTableInfo.d.ts +2 -3
  80. package/dist/containers/Tenant/Diagnostics/Overview/TableInfo/prepareTableInfo.js +64 -76
  81. package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantCpu/TopQueries.js +8 -5
  82. package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantOverview.js +28 -3
  83. package/dist/containers/Tenant/Diagnostics/TenantOverview/getSectionTitle.d.ts +2 -1
  84. package/dist/containers/Tenant/Diagnostics/TenantOverview/getSectionTitle.js +2 -2
  85. package/dist/containers/Tenant/Diagnostics/TenantOverview/i18n/en.json +3 -2
  86. package/dist/containers/Tenant/Diagnostics/TenantOverview/i18n/index.d.ts +1 -1
  87. package/dist/containers/Tenant/Diagnostics/TopQueries/TopQueries.js +2 -2
  88. package/dist/containers/Tenant/Diagnostics/TopQueries/getTopQueriesColumns.d.ts +2 -2
  89. package/dist/containers/Tenant/Diagnostics/TopQueries/getTopQueriesColumns.js +19 -28
  90. package/dist/containers/Tenant/Diagnostics/TopShards/TopShards.js +7 -17
  91. package/dist/containers/Tenant/Diagnostics/TopShards/getTopShardsColumns.js +6 -2
  92. package/dist/containers/Tenant/ObjectSummary/ObjectSummary.js +31 -18
  93. package/dist/containers/Tenant/Query/ExplainResult/ExplainResult.js +2 -2
  94. package/dist/containers/Tenant/Query/QueryEditor/QueryEditor.js +8 -3
  95. package/dist/containers/Tenant/Query/QueryEditorControls/QueryEditorControls.d.ts +2 -1
  96. package/dist/containers/Tenant/Query/QueryEditorControls/QueryEditorControls.js +9 -7
  97. package/dist/containers/Tenant/Query/QuerySettingsDialog/QuerySettingsDialog.d.ts +2 -0
  98. package/dist/containers/Tenant/Query/QuerySettingsDialog/QuerySettingsDialog.js +38 -0
  99. package/dist/containers/Tenant/Query/QuerySettingsDialog/QuerySettingsDialog.scss +63 -0
  100. package/dist/containers/Tenant/Query/QuerySettingsDialog/QuerySettingsSelect.d.ts +15 -0
  101. package/dist/containers/Tenant/Query/QuerySettingsDialog/QuerySettingsSelect.js +14 -0
  102. package/dist/containers/Tenant/Query/QuerySettingsDialog/QuerySettingsSelect.scss +19 -0
  103. package/dist/containers/Tenant/Query/QuerySettingsDialog/constants.d.ts +99 -0
  104. package/dist/containers/Tenant/Query/QuerySettingsDialog/constants.js +109 -0
  105. package/dist/containers/Tenant/Query/QuerySettingsDialog/i18n/en.json +13 -0
  106. package/dist/containers/Tenant/Query/QuerySettingsDialog/i18n/index.d.ts +2 -0
  107. package/dist/containers/Tenant/Query/QuerySettingsDialog/i18n/index.js +5 -0
  108. package/dist/containers/Tenant/Query/QuerySettingsDialog/i18n/ru.json +13 -0
  109. package/dist/containers/Tenant/Query/i18n/en.json +14 -0
  110. package/dist/containers/Tenant/Query/i18n/index.d.ts +1 -1
  111. package/dist/containers/Tenant/Schema/CreateDirectoryDialog/CreateDirectoryDialog.d.ts +3 -2
  112. package/dist/containers/Tenant/Schema/CreateDirectoryDialog/CreateDirectoryDialog.js +2 -2
  113. package/dist/containers/Tenant/Schema/SchemaTree/SchemaTree.js +2 -2
  114. package/dist/containers/Tenant/Schema/SchemaViewer/SchemaViewer.js +1 -1
  115. package/dist/containers/Tenant/Tenant.js +1 -1
  116. package/dist/containers/Tenant/TenantPages.d.ts +12 -1
  117. package/dist/containers/Tenant/TenantPages.js +1 -1
  118. package/dist/containers/Tenant/i18n/en.json +2 -2
  119. package/dist/containers/Tenant/i18n/index.d.ts +1 -1
  120. package/dist/containers/Tenant/utils/schema.js +1 -1
  121. package/dist/containers/Tenants/Tenants.js +1 -1
  122. package/dist/containers/Tenants/Tenants.scss +0 -4
  123. package/dist/containers/UserSettings/i18n/en.json +2 -0
  124. package/dist/containers/UserSettings/i18n/index.d.ts +1 -1
  125. package/dist/containers/UserSettings/settings.d.ts +1 -0
  126. package/dist/containers/UserSettings/settings.js +6 -1
  127. package/dist/routes.js +2 -2
  128. package/dist/services/api.d.ts +39 -21
  129. package/dist/services/api.js +45 -56
  130. package/dist/services/settings.d.ts +1 -0
  131. package/dist/services/settings.js +2 -1
  132. package/dist/store/configureStore.d.ts +4 -4
  133. package/dist/store/defaultStore.d.ts +2 -2
  134. package/dist/store/reducers/api.d.ts +1 -1
  135. package/dist/store/reducers/api.js +1 -1
  136. package/dist/store/reducers/cluster/cluster.d.ts +2 -2
  137. package/dist/store/reducers/clusterNodes/clusterNodes.d.ts +2 -2
  138. package/dist/store/reducers/clusters/clusters.d.ts +2 -2
  139. package/dist/store/reducers/describe.d.ts +5 -2
  140. package/dist/store/reducers/describe.js +2 -2
  141. package/dist/store/reducers/executeQuery.d.ts +2 -2
  142. package/dist/store/reducers/executeTopQueries/executeTopQueries.d.ts +2 -2
  143. package/dist/store/reducers/executeTopQueries/executeTopQueries.js +20 -14
  144. package/dist/store/reducers/executeTopQueries/types.d.ts +2 -2
  145. package/dist/store/reducers/executeTopQueries/utils.js +11 -7
  146. package/dist/store/reducers/explainQuery/explainQuery.d.ts +2 -2
  147. package/dist/store/reducers/explainQuery/explainQuery.js +6 -1
  148. package/dist/store/reducers/healthcheckInfo/healthcheckInfo.d.ts +58 -58
  149. package/dist/store/reducers/heatmap.d.ts +2 -2
  150. package/dist/store/reducers/heatmap.js +3 -3
  151. package/dist/store/reducers/hotKeys/hotKeys.d.ts +3 -2
  152. package/dist/store/reducers/hotKeys/hotKeys.js +3 -3
  153. package/dist/store/reducers/index.d.ts +3 -3
  154. package/dist/store/reducers/network/network.d.ts +2 -2
  155. package/dist/store/reducers/network/network.js +1 -1
  156. package/dist/store/reducers/node/node.d.ts +3 -3
  157. package/dist/store/reducers/node/selectors.d.ts +1 -1
  158. package/dist/store/reducers/node/selectors.js +2 -2
  159. package/dist/store/reducers/nodes/nodes.d.ts +3 -3
  160. package/dist/store/reducers/nodesList.d.ts +3 -3
  161. package/dist/store/reducers/overview/overview.d.ts +5 -2
  162. package/dist/store/reducers/overview/overview.js +2 -2
  163. package/dist/store/reducers/partitions/partitions.d.ts +2 -2
  164. package/dist/store/reducers/pdisk/pdisk.d.ts +3 -3
  165. package/dist/store/reducers/pdisk/pdisk.js +15 -2
  166. package/dist/store/reducers/pdisk/types.d.ts +17 -1
  167. package/dist/store/reducers/pdisk/utils.d.ts +2 -2
  168. package/dist/store/reducers/pdisk/utils.js +68 -8
  169. package/dist/store/reducers/preview.d.ts +2 -2
  170. package/dist/store/reducers/preview.js +1 -1
  171. package/dist/store/reducers/queryActions/types.d.ts +1 -1
  172. package/dist/store/reducers/schema/schema.d.ts +28 -10
  173. package/dist/store/reducers/schema/schema.js +11 -12
  174. package/dist/store/reducers/schemaAcl/schemaAcl.d.ts +4 -2
  175. package/dist/store/reducers/schemaAcl/schemaAcl.js +9 -3
  176. package/dist/store/reducers/shardsWorkload/shardsWorkload.d.ts +2 -2
  177. package/dist/store/reducers/shardsWorkload/shardsWorkload.js +22 -6
  178. package/dist/store/reducers/shardsWorkload/types.d.ts +2 -2
  179. package/dist/store/reducers/storage/storage.d.ts +3 -3
  180. package/dist/store/reducers/tablet.d.ts +3 -3
  181. package/dist/store/reducers/tablets.d.ts +13 -13
  182. package/dist/store/reducers/tabletsFilters.d.ts +1 -1
  183. package/dist/store/reducers/tenant/tenant.d.ts +2 -2
  184. package/dist/store/reducers/tenantOverview/executeTopTables/executeTopTables.d.ts +2 -2
  185. package/dist/store/reducers/tenantOverview/executeTopTables/executeTopTables.js +1 -1
  186. package/dist/store/reducers/tenantOverview/topNodes/topNodes.d.ts +2 -2
  187. package/dist/store/reducers/tenantOverview/topShards/tenantOverviewTopShards.d.ts +2 -2
  188. package/dist/store/reducers/tenantOverview/topShards/tenantOverviewTopShards.js +1 -1
  189. package/dist/store/reducers/tenantOverview/topStorageGroups/topStorageGroups.d.ts +2 -2
  190. package/dist/store/reducers/tenants/selectors.d.ts +27 -27
  191. package/dist/store/reducers/tenants/tenants.d.ts +2 -2
  192. package/dist/store/reducers/topic.d.ts +44 -44
  193. package/dist/store/reducers/vdisk/vdisk.d.ts +2 -2
  194. package/dist/store/reducers/vdisk/vdisk.js +1 -1
  195. package/dist/store/reducers/viewSchema/viewSchema.d.ts +2 -2
  196. package/dist/store/reducers/viewSchema/viewSchema.js +1 -1
  197. package/dist/store/state-url-mapping.d.ts +70 -0
  198. package/dist/store/state-url-mapping.js +1 -5
  199. package/dist/styles/mixins.scss +11 -0
  200. package/dist/types/api/acl.d.ts +1 -0
  201. package/dist/types/api/pdisk.d.ts +65 -2
  202. package/dist/types/api/schema/schema.d.ts +21 -0
  203. package/dist/types/api/vdisk.d.ts +33 -2
  204. package/dist/types/common.d.ts +3 -0
  205. package/dist/types/store/heatmap.d.ts +1 -0
  206. package/dist/types/store/query.d.ts +4 -1
  207. package/dist/utils/constants.d.ts +1 -0
  208. package/dist/utils/constants.js +1 -0
  209. package/dist/utils/dataFormatters/dataFormatters.d.ts +0 -4
  210. package/dist/utils/dataFormatters/dataFormatters.js +2 -8
  211. package/dist/utils/developerUI/developerUI.d.ts +1 -0
  212. package/dist/utils/developerUI/developerUI.js +3 -0
  213. package/dist/utils/diagnostics.d.ts +21 -17
  214. package/dist/utils/diagnostics.js +28 -7
  215. package/dist/utils/disks/getPDiskType.d.ts +3 -3
  216. package/dist/utils/disks/helpers.d.ts +1 -0
  217. package/dist/utils/disks/helpers.js +3 -0
  218. package/dist/utils/disks/prepareDisks.d.ts +2 -2
  219. package/dist/utils/disks/prepareDisks.js +17 -22
  220. package/dist/utils/disks/types.d.ts +7 -5
  221. package/dist/utils/monaco/constats.d.ts +2 -0
  222. package/dist/utils/monaco/constats.js +2 -0
  223. package/dist/utils/monaco/yql/constants.d.ts +0 -1
  224. package/dist/utils/monaco/yql/constants.js +0 -1
  225. package/dist/utils/monaco/yql/yql.completionItemProvider.js +3 -3
  226. package/dist/utils/query.d.ts +24 -1
  227. package/dist/utils/query.js +40 -0
  228. package/package.json +5 -1
  229. package/dist/components/NodeHostWrapper/NodeHostWrapper.scss +0 -15
  230. package/dist/containers/Node/NodeStructure/Vdisk.d.ts +0 -6
  231. package/dist/containers/Node/NodeStructure/Vdisk.js +0 -13
  232. package/dist/containers/PDiskPage/PDiskGroups.d.ts +0 -9
  233. package/dist/containers/PDiskPage/PDiskGroups.js +0 -20
  234. package/dist/containers/Tenant/Diagnostics/Overview/TableInfo/i18n/ru.json +0 -5
  235. package/dist/store/reducers/olapStats.d.ts +0 -5
  236. package/dist/store/reducers/olapStats.js +0 -31
  237. package/dist/store/reducers/tenantOverview/topQueries/tenantOverviewTopQueries.d.ts +0 -5
  238. package/dist/store/reducers/tenantOverview/topQueries/tenantOverviewTopQueries.js +0 -38
  239. package/dist/utils/monaco/index.d.ts +0 -1
  240. package/dist/utils/monaco/index.js +0 -6
  241. package/dist/utils/monaco/s-expression/constants.d.ts +0 -1
  242. package/dist/utils/monaco/s-expression/constants.js +0 -1
  243. package/dist/utils/monaco/s-expression/registerLanguage.d.ts +0 -1
  244. package/dist/utils/monaco/s-expression/registerLanguage.js +0 -59
  245. package/dist/utils/monaco/yql/registerLanguage.d.ts +0 -1
  246. package/dist/utils/monaco/yql/registerLanguage.js +0 -8
  247. package/dist/utils/monaco/yql/yql.d.ts +0 -7
  248. package/dist/utils/monaco/yql/yql.js +0 -180
  249. package/dist/utils/monaco/yql/yql.keywords.d.ts +0 -3
  250. package/dist/utils/monaco/yql/yql.keywords.js +0 -3
@@ -1,9 +1,9 @@
1
1
  import './DateRange.scss';
2
2
  export interface DateRangeValues {
3
- /** ms from epoch */
4
- from?: number;
5
- /** ms from epoch */
6
- to?: number;
3
+ /** ms from epoch or special values like now, 1h, 1m, etc*/
4
+ from?: string;
5
+ /** ms from epoch or special values like now, 1h, 1m, etc*/
6
+ to?: string;
7
7
  }
8
8
  interface DateRangeProps extends DateRangeValues {
9
9
  className?: string;
@@ -1,33 +1,30 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import React from 'react';
3
+ import { RelativeRangeDatePicker } from '@gravity-ui/date-components';
2
4
  import { cn } from '../../utils/cn';
5
+ import i18n from './i18n';
6
+ import { fromDateRangeValues, getdatePickerSize, toDateRangeValues } from './utils';
3
7
  import './DateRange.scss';
4
8
  const b = cn('date-range');
5
- const toTimezonelessISOString = (timestamp) => {
6
- if (!timestamp || isNaN(timestamp)) {
7
- return undefined;
8
- }
9
- // shift by local offset to treat toISOString output as local time
10
- const shiftedTimestamp = timestamp - new Date().getTimezoneOffset() * 60 * 1000;
11
- return new Date(shiftedTimestamp).toISOString().substring(0, 'yyyy-MM-DDThh:mm'.length);
9
+ const DEFAULT_VALUE = {
10
+ start: {
11
+ value: 'now-1h',
12
+ type: 'relative',
13
+ },
14
+ end: {
15
+ value: 'now',
16
+ type: 'relative',
17
+ },
12
18
  };
13
19
  export const DateRange = ({ from, to, className, onChange }) => {
14
- const handleFromChange = ({ target: { value } }) => {
15
- let newFrom = value ? new Date(value).getTime() : undefined;
16
- // some browsers allow selecting time after the boundary specified in `max`
17
- if (newFrom && to && newFrom > to) {
18
- newFrom = to;
20
+ const handleUpdate = React.useCallback((pickerValue) => onChange === null || onChange === void 0 ? void 0 : onChange(toDateRangeValues(pickerValue)), [onChange]);
21
+ const value = React.useMemo(() => {
22
+ if (!from && !to) {
23
+ return undefined;
19
24
  }
20
- onChange === null || onChange === void 0 ? void 0 : onChange({ from: newFrom, to });
21
- };
22
- const handleToChange = ({ target: { value } }) => {
23
- let newTo = value ? new Date(value).getTime() : undefined;
24
- // some browsers allow selecting time before the boundary specified in `min`
25
- if (from && newTo && from > newTo) {
26
- newTo = from;
27
- }
28
- onChange === null || onChange === void 0 ? void 0 : onChange({ from, to: newTo });
29
- };
30
- const startISO = toTimezonelessISOString(from);
31
- const endISO = toTimezonelessISOString(to);
32
- return (_jsxs("div", { className: b(null, className), children: [_jsx("input", { type: "datetime-local", value: startISO || '', max: endISO, onChange: handleFromChange, className: b('input') }), "\u2014", _jsx("input", { type: "datetime-local", min: startISO, value: endISO || '', onChange: handleToChange, className: b('input') })] }));
25
+ return fromDateRangeValues({ from, to });
26
+ }, [from, to]);
27
+ // eslint-disable-next-line new-cap
28
+ const timeZoneString = Intl.DateTimeFormat().resolvedOptions().timeZone;
29
+ return (_jsx("div", { className: b(null, className), children: _jsx(RelativeRangeDatePicker, { withPresets: true, className: b('range-input', { [getdatePickerSize(value)]: true }), timeZone: timeZoneString, value: value || DEFAULT_VALUE, allowNullableValues: true, size: "m", format: i18n('date-time-format'), onUpdate: handleUpdate, placeholder: `${i18n('date-time-format')} - ${i18n('date-time-format')}`, withApplyButton: true }) }));
33
30
  };
@@ -1,18 +1,19 @@
1
1
  .date-range {
2
- &__input {
3
- min-width: 190px;
4
- height: 28px;
5
- padding: 5px 8px;
2
+ &__range-input {
3
+ &_s {
4
+ width: 200px;
5
+ }
6
6
 
7
- color: var(--g-color-text-primary);
8
- border: 1px solid var(--g-color-line-generic);
9
- border-radius: var(--g-border-radius-m);
10
- outline: none;
11
- background: transparent;
12
- }
7
+ &_m {
8
+ width: 300px;
9
+ }
10
+
11
+ &_l {
12
+ width: 350px;
13
+ }
13
14
 
14
- &__input:focus,
15
- &__input:focus-visible {
16
- border: 1px solid var(--g-color-line-generic-hover);
15
+ input {
16
+ cursor: pointer;
17
+ }
17
18
  }
18
19
  }
@@ -0,0 +1,80 @@
1
+ import { dateTimeParse } from '@gravity-ui/date-utils';
2
+ import { fromDateRangeValues } from '../utils';
3
+ describe('From daterange values to datepicker values', () => {
4
+ it('should return the correct datepicker values for to-absolute, from-absolute values', () => {
5
+ const from = new Date('2020-01-01 19:00:00').getTime();
6
+ const to = new Date('2022-01-01 19:00:00').getTime();
7
+ const dateRangeValues = {
8
+ from: String(from),
9
+ to: String(to),
10
+ };
11
+ const result = fromDateRangeValues(dateRangeValues);
12
+ expect(result).toEqual({
13
+ start: {
14
+ type: 'absolute',
15
+ value: dateTimeParse(Number(from)),
16
+ },
17
+ end: {
18
+ type: 'absolute',
19
+ value: dateTimeParse(Number(to)),
20
+ },
21
+ });
22
+ });
23
+ it('should return the correct datepicker values for to-relative, from-absolute values', () => {
24
+ const from = new Date('2020-01-01 19:00:00').getTime();
25
+ const to = 'now';
26
+ const dateRangeValues = {
27
+ from: String(from),
28
+ to: String(to),
29
+ };
30
+ const result = fromDateRangeValues(dateRangeValues);
31
+ expect(result).toEqual({
32
+ start: {
33
+ type: 'absolute',
34
+ value: dateTimeParse(Number(from)),
35
+ },
36
+ end: {
37
+ type: 'relative',
38
+ value: to,
39
+ },
40
+ });
41
+ });
42
+ it('should return the correct datepicker values for from-relative, to-absolute values', () => {
43
+ const from = 'now';
44
+ const to = new Date('2022-01-01 19:00:00').getTime();
45
+ const dateRangeValues = {
46
+ from: String(from),
47
+ to: String(to),
48
+ };
49
+ const result = fromDateRangeValues(dateRangeValues);
50
+ expect(result).toEqual({
51
+ start: {
52
+ type: 'relative',
53
+ value: from,
54
+ },
55
+ end: {
56
+ type: 'absolute',
57
+ value: dateTimeParse(Number(to)),
58
+ },
59
+ });
60
+ });
61
+ it('should return the correct datepicker values for from-relative, to-relative values', () => {
62
+ const from = 'now';
63
+ const to = 'now + 1h';
64
+ const dateRangeValues = {
65
+ from: String(from),
66
+ to: String(to),
67
+ };
68
+ const result = fromDateRangeValues(dateRangeValues);
69
+ expect(result).toEqual({
70
+ start: {
71
+ type: 'relative',
72
+ value: from,
73
+ },
74
+ end: {
75
+ type: 'relative',
76
+ value: to,
77
+ },
78
+ });
79
+ });
80
+ });
@@ -0,0 +1,56 @@
1
+ import { dateTimeParse } from '@gravity-ui/date-utils';
2
+ import { getdatePickerSize } from '../utils';
3
+ describe('getdatePickerSize test', () => {
4
+ it('should return the correct datepicker size', () => {
5
+ const datePickerRangeValues = {
6
+ start: {
7
+ type: 'relative',
8
+ value: 'now',
9
+ },
10
+ end: {
11
+ type: 'relative',
12
+ value: 'now',
13
+ },
14
+ };
15
+ expect(getdatePickerSize(datePickerRangeValues)).toEqual('s');
16
+ });
17
+ it('should return the correct datepicker size', () => {
18
+ const datePickerRangeValues = {
19
+ start: {
20
+ type: 'absolute',
21
+ value: dateTimeParse(Number(new Date().getTime())),
22
+ },
23
+ end: {
24
+ type: 'relative',
25
+ value: 'now + 1',
26
+ },
27
+ };
28
+ expect(getdatePickerSize(datePickerRangeValues)).toEqual('m');
29
+ });
30
+ it('should return the correct datepicker size', () => {
31
+ const datePickerRangeValues = {
32
+ start: {
33
+ type: 'relative',
34
+ value: 'now + 1',
35
+ },
36
+ end: {
37
+ type: 'absolute',
38
+ value: dateTimeParse(Number(new Date().getTime())),
39
+ },
40
+ };
41
+ expect(getdatePickerSize(datePickerRangeValues)).toEqual('m');
42
+ });
43
+ it('should return the correct datepicker size', () => {
44
+ const datePickerRangeValues = {
45
+ start: {
46
+ type: 'absolute',
47
+ value: dateTimeParse(Number(new Date().getTime())),
48
+ },
49
+ end: {
50
+ type: 'absolute',
51
+ value: dateTimeParse(Number(new Date().getTime())),
52
+ },
53
+ };
54
+ expect(getdatePickerSize(datePickerRangeValues)).toEqual('l');
55
+ });
56
+ });
@@ -0,0 +1,80 @@
1
+ import { dateTimeParse } from '@gravity-ui/date-utils';
2
+ import { toDateRangeValues } from '../utils';
3
+ describe('To daterange values from datepicker values', () => {
4
+ it('should return the correct datepicker values for to-absolute, from-absolute values', () => {
5
+ const from = new Date('2020-01-01 19:00:00').getTime();
6
+ const to = new Date('2022-01-01 19:00:00').getTime();
7
+ const datePickerRangeValues = {
8
+ start: {
9
+ type: 'absolute',
10
+ value: dateTimeParse(Number(from)),
11
+ },
12
+ end: {
13
+ type: 'absolute',
14
+ value: dateTimeParse(Number(to)),
15
+ },
16
+ };
17
+ const result = toDateRangeValues(datePickerRangeValues);
18
+ expect(result).toEqual({
19
+ from: String(from),
20
+ to: String(to),
21
+ });
22
+ });
23
+ });
24
+ it('should return the correct daterange values for to-relative, from-absolute values', () => {
25
+ const from = new Date('2020-01-01 19:00:00').getTime();
26
+ const to = 'now';
27
+ const datePickerRangeValues = {
28
+ start: {
29
+ type: 'absolute',
30
+ value: dateTimeParse(Number(from)),
31
+ },
32
+ end: {
33
+ type: 'relative',
34
+ value: to,
35
+ },
36
+ };
37
+ const result = toDateRangeValues(datePickerRangeValues);
38
+ expect(result).toEqual({
39
+ from: String(from),
40
+ to: to,
41
+ });
42
+ });
43
+ it('should return the correct daterange values for from-relative, to-absolute values', () => {
44
+ const from = 'now';
45
+ const to = new Date('2022-01-01 19:00:00').getTime();
46
+ const datePickerRangeValues = {
47
+ start: {
48
+ type: 'relative',
49
+ value: from,
50
+ },
51
+ end: {
52
+ type: 'absolute',
53
+ value: dateTimeParse(Number(to)),
54
+ },
55
+ };
56
+ const result = toDateRangeValues(datePickerRangeValues);
57
+ expect(result).toEqual({
58
+ from: from,
59
+ to: String(to),
60
+ });
61
+ });
62
+ it('should return the correct daterange values for from-relative, to-relative values', () => {
63
+ const from = 'now';
64
+ const to = 'now + 1';
65
+ const datePickerRangeValues = {
66
+ start: {
67
+ type: 'relative',
68
+ value: from,
69
+ },
70
+ end: {
71
+ type: 'relative',
72
+ value: to,
73
+ },
74
+ };
75
+ const result = toDateRangeValues(datePickerRangeValues);
76
+ expect(result).toEqual({
77
+ from: from,
78
+ to: to,
79
+ });
80
+ });
@@ -0,0 +1,4 @@
1
+ {
2
+ "date-format": "MM/DD/YYYY",
3
+ "date-time-format": "MM/DD/YYYY HH:mm"
4
+ }
@@ -0,0 +1,2 @@
1
+ declare const _default: (key: "date-format" | "date-time-format", params?: import("@gravity-ui/i18n").Params) => string;
2
+ export default _default;
@@ -0,0 +1,5 @@
1
+ import { registerKeysets } from '../../../utils/i18n';
2
+ import en from './en.json';
3
+ import ru from './ru.json';
4
+ const COMPONENT = 'ydb-date-range';
5
+ export default registerKeysets(COMPONENT, { ru, en });
@@ -0,0 +1,4 @@
1
+ {
2
+ "date-format": "DD.MM.YYYY",
3
+ "date-time-format": "DD.MM.YYYY HH:mm"
4
+ }
@@ -0,0 +1,5 @@
1
+ import type { RelativeRangeDatePickerProps } from '@gravity-ui/date-components';
2
+ import type { DateRangeValues } from './DateRange';
3
+ export declare function fromDateRangeValues(value: DateRangeValues): RelativeRangeDatePickerProps['value'];
4
+ export declare function toDateRangeValues(value: RelativeRangeDatePickerProps['value']): DateRangeValues;
5
+ export declare function getdatePickerSize(value: RelativeRangeDatePickerProps['value']): "m" | "s" | "l";
@@ -0,0 +1,41 @@
1
+ import { dateTimeParse, isLikeRelative } from '@gravity-ui/date-utils';
2
+ export function fromDateRangeValues(value) {
3
+ var _a, _b;
4
+ const isFromRelative = isLikeRelative((_a = value.from) !== null && _a !== void 0 ? _a : '');
5
+ const isToRelative = isLikeRelative((_b = value.to) !== null && _b !== void 0 ? _b : '');
6
+ return {
7
+ start: value.from
8
+ ? {
9
+ type: isFromRelative ? 'relative' : 'absolute',
10
+ value: isFromRelative ? value.from : dateTimeParse(Number(value.from)),
11
+ }
12
+ : null,
13
+ end: value.to
14
+ ? {
15
+ type: isToRelative ? 'relative' : 'absolute',
16
+ value: isToRelative ? value.to : dateTimeParse(Number(value.to)),
17
+ }
18
+ : null,
19
+ };
20
+ }
21
+ export function toDateRangeValues(value) {
22
+ var _a, _b, _c, _d, _e, _f;
23
+ return {
24
+ from: ((_a = value === null || value === void 0 ? void 0 : value.start) === null || _a === void 0 ? void 0 : _a.type) === 'relative'
25
+ ? value.start.value.toString()
26
+ : String((_c = dateTimeParse((_b = value === null || value === void 0 ? void 0 : value.start) === null || _b === void 0 ? void 0 : _b.value)) === null || _c === void 0 ? void 0 : _c.valueOf()),
27
+ to: ((_d = value === null || value === void 0 ? void 0 : value.end) === null || _d === void 0 ? void 0 : _d.type) === 'relative'
28
+ ? value.end.value.toString()
29
+ : String((_f = dateTimeParse((_e = value === null || value === void 0 ? void 0 : value.end) === null || _e === void 0 ? void 0 : _e.value)) === null || _f === void 0 ? void 0 : _f.valueOf()),
30
+ };
31
+ }
32
+ export function getdatePickerSize(value) {
33
+ var _a, _b, _c, _d;
34
+ if (((_a = value === null || value === void 0 ? void 0 : value.start) === null || _a === void 0 ? void 0 : _a.type) === 'relative' && ((_b = value === null || value === void 0 ? void 0 : value.end) === null || _b === void 0 ? void 0 : _b.type) === 'relative') {
35
+ return 's';
36
+ }
37
+ else if (((_c = value === null || value === void 0 ? void 0 : value.start) === null || _c === void 0 ? void 0 : _c.type) === 'relative' || ((_d = value === null || value === void 0 ? void 0 : value.end) === null || _d === void 0 ? void 0 : _d.type) === 'relative') {
38
+ return 'm';
39
+ }
40
+ return 'l';
41
+ }
@@ -0,0 +1,8 @@
1
+ import './DeveloperUILinkButton.scss';
2
+ interface DeveloperUiLinkProps {
3
+ className?: string;
4
+ visible?: boolean;
5
+ href: string;
6
+ }
7
+ export declare function DeveloperUILinkButton({ href, visible, className }: DeveloperUiLinkProps): import("react/jsx-runtime").JSX.Element;
8
+ export {};
@@ -0,0 +1,9 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { ArrowUpRightFromSquare } from '@gravity-ui/icons';
3
+ import { Button, Icon } from '@gravity-ui/uikit';
4
+ import { cn } from '../../utils/cn';
5
+ import './DeveloperUILinkButton.scss';
6
+ const b = cn('developer-ui-link-button');
7
+ export function DeveloperUILinkButton({ href, visible = false, className }) {
8
+ return (_jsx(Button, { size: "s", href: href, className: b({ visible }, className), target: "_blank", children: _jsx(Icon, { data: ArrowUpRightFromSquare }) }));
9
+ }
@@ -0,0 +1,12 @@
1
+ .developer-ui-link-button {
2
+ display: none;
3
+
4
+ &_visible {
5
+ display: inline-block;
6
+ }
7
+
8
+ .data-table__row:hover &,
9
+ .ydb-paginated-table__row:hover & {
10
+ display: inline-block;
11
+ }
12
+ }
@@ -1,8 +1,13 @@
1
+ import React from 'react';
1
2
  import './DiskStateProgressBar.scss';
2
3
  interface DiskStateProgressBarProps {
3
4
  diskAllocatedPercent?: number;
4
5
  severity?: number;
5
6
  compact?: boolean;
7
+ faded?: boolean;
8
+ empty?: boolean;
9
+ content?: React.ReactNode;
10
+ className?: string;
6
11
  }
7
- export declare function DiskStateProgressBar({ diskAllocatedPercent, severity, compact, }: DiskStateProgressBarProps): import("react/jsx-runtime").JSX.Element;
12
+ export declare function DiskStateProgressBar({ diskAllocatedPercent, severity, compact, faded, empty, content, className, }: DiskStateProgressBarProps): import("react/jsx-runtime").JSX.Element;
8
13
  export {};
@@ -1,25 +1,35 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import React from 'react';
3
2
  import { cn } from '../../utils/cn';
4
3
  import { INVERTED_DISKS_KEY } from '../../utils/constants';
5
4
  import { getSeverityColor } from '../../utils/disks/helpers';
6
5
  import { useSetting } from '../../utils/hooks';
7
6
  import './DiskStateProgressBar.scss';
8
7
  const b = cn('storage-disk-progress-bar');
9
- export function DiskStateProgressBar({ diskAllocatedPercent = -1, severity, compact, }) {
8
+ export function DiskStateProgressBar({ diskAllocatedPercent = -1, severity, compact, faded, empty, content, className, }) {
10
9
  const [inverted] = useSetting(INVERTED_DISKS_KEY);
11
- const renderAllocatedPercent = () => {
12
- if (compact) {
13
- return _jsx("div", { className: b('filled'), style: { width: '100%' } });
14
- }
15
- return (diskAllocatedPercent >= 0 && (_jsxs(React.Fragment, { children: [_jsx("div", { className: b('filled'), style: {
16
- width: `${inverted ? 100 - diskAllocatedPercent : diskAllocatedPercent}%`,
17
- } }), _jsx("div", { className: b('filled-title'), children: `${Math.round(diskAllocatedPercent)}%` })] })));
18
- };
19
- const mods = { inverted, compact };
10
+ const mods = { inverted, compact, faded, empty };
20
11
  const color = severity !== undefined && getSeverityColor(severity);
21
12
  if (color) {
22
13
  mods[color.toLocaleLowerCase()] = true;
23
14
  }
24
- return (_jsx("div", { className: b(mods), role: "meter", "aria-label": "Disk allocated space", "aria-valuemin": 0, "aria-valuemax": 100, "aria-valuenow": diskAllocatedPercent, children: renderAllocatedPercent() }));
15
+ const renderAllocatedPercent = () => {
16
+ if (compact) {
17
+ return _jsx("div", { className: b('fill-bar', mods), style: { width: '100%' } });
18
+ }
19
+ const fillWidth = inverted ? 100 - diskAllocatedPercent : diskAllocatedPercent;
20
+ if (diskAllocatedPercent >= 0) {
21
+ return _jsx("div", { className: b('fill-bar', mods), style: { width: `${fillWidth}%` } });
22
+ }
23
+ return null;
24
+ };
25
+ const renderContent = () => {
26
+ if (content) {
27
+ return content;
28
+ }
29
+ if (!compact && diskAllocatedPercent >= 0) {
30
+ return _jsx("div", { className: b('title'), children: `${Math.round(diskAllocatedPercent)}%` });
31
+ }
32
+ return null;
33
+ };
34
+ return (_jsxs("div", { className: b(mods, className), role: "meter", "aria-label": "Disk allocated space", "aria-valuemin": 0, "aria-valuemax": 100, "aria-valuenow": diskAllocatedPercent, children: [renderAllocatedPercent(), renderContent()] }));
25
35
  }
@@ -5,81 +5,70 @@
5
5
  $outer-border-radius: 4px;
6
6
  $inner-border-radius: $outer-border-radius - $border-width;
7
7
 
8
+ --progress-bar-border-color: var(--g-color-base-misc-heavy);
9
+ --progress-bar-background-color: var(--g-color-base-misc-light);
10
+ --progress-bar-fill-color: var(--g-color-base-misc-medium);
11
+
8
12
  position: relative;
9
13
  z-index: 0;
10
14
 
11
- display: block;
12
-
13
15
  min-width: 50px;
14
16
  height: var(--g-text-body-3-line-height);
15
17
 
16
18
  text-align: center;
17
19
 
18
20
  color: var(--g-color-text-primary);
19
- border: $border-width solid var(--g-color-base-misc-heavy);
21
+ border: $border-width solid var(--progress-bar-border-color);
20
22
  border-radius: $outer-border-radius;
21
- background-color: var(--g-color-base-misc-light);
23
+ background-color: var(--progress-bar-background-color);
22
24
 
23
25
  &_compact {
24
26
  min-width: 0;
25
27
  height: 12px;
26
28
 
27
29
  border-radius: 2px;
28
-
29
- #{$block}__filled {
30
- border-radius: 1px;
31
- }
32
- }
33
-
34
- #{$block}__filled {
35
- background-color: var(--g-color-base-misc-medium);
36
30
  }
37
31
 
38
32
  &_green {
39
- border-color: var(--g-color-base-positive-heavy);
40
- background-color: var(--g-color-base-positive-light);
41
- #{$block}__filled {
42
- background-color: var(--g-color-base-positive-medium);
43
-
44
- .g-root_theme_dark & {
45
- // the common medium green is too bright for this case
46
- background-color: rgb(124, 227, 121, 0.4);
47
- }
48
- }
33
+ --progress-bar-border-color: var(--g-color-base-positive-heavy);
34
+ --progress-bar-background-color: var(--g-color-base-positive-light);
35
+ --progress-bar-fill-color: var(--g-color-base-positive-medium);
49
36
  }
50
37
 
51
38
  &_blue {
52
- border-color: var(--g-color-base-info-heavy);
53
- background-color: var(--g-color-base-info-light);
54
- #{$block}__filled {
55
- background-color: var(--g-color-base-info-medium);
56
- }
39
+ --progress-bar-border-color: var(--g-color-base-info-heavy);
40
+ --progress-bar-background-color: var(--g-color-base-info-light);
41
+ --progress-bar-fill-color: var(--g-color-base-info-medium);
57
42
  }
58
43
 
59
44
  &_yellow {
60
- border-color: var(--g-color-base-warning-heavy);
61
- background-color: var(--g-color-base-yellow-light);
62
- #{$block}__filled {
63
- background-color: var(--g-color-base-yellow-medium);
64
- }
45
+ --progress-bar-border-color: var(--g-color-base-warning-heavy);
46
+ --progress-bar-background-color: var(--g-color-base-yellow-light);
47
+ --progress-bar-fill-color: var(--g-color-base-yellow-medium);
65
48
  }
66
49
 
67
50
  &_orange {
68
- border-color: var(--ydb-color-status-orange);
69
- background-color: var(--g-color-base-warning-light);
70
- #{$block}__filled {
71
- background-color: var(--g-color-base-warning-medium);
72
- }
51
+ --progress-bar-border-color: var(--ydb-color-status-orange);
52
+ --progress-bar-background-color: var(--g-color-base-warning-light);
53
+ --progress-bar-fill-color: var(--g-color-base-warning-medium);
73
54
  }
74
55
  &_red {
75
- border-color: var(--g-color-base-danger-heavy);
76
- background-color: var(--g-color-base-danger-light);
77
- #{$block}__filled {
78
- background-color: var(--g-color-base-danger-medium);
79
- }
56
+ --progress-bar-border-color: var(--g-color-base-danger-heavy);
57
+ --progress-bar-background-color: var(--g-color-base-danger-light);
58
+ --progress-bar-fill-color: var(--g-color-base-danger-medium);
59
+ }
60
+
61
+ &_faded {
62
+ background-color: unset;
80
63
  }
81
64
 
82
- &__filled {
65
+ &_empty {
66
+ color: var(--g-color-text-hint);
67
+ border-style: dashed;
68
+ background-color: unset;
69
+ }
70
+
71
+ &__fill-bar {
83
72
  position: absolute;
84
73
  top: 0;
85
74
  left: 0;
@@ -87,15 +76,26 @@
87
76
  height: 100%;
88
77
 
89
78
  border-radius: $inner-border-radius 0 0 $inner-border-radius;
79
+ background-color: var(--progress-bar-fill-color);
90
80
 
91
- #{$block}_inverted & {
81
+ &_faded {
82
+ // Bg color is light variant, use it to make bar less bright
83
+ background-color: var(--progress-bar-background-color);
84
+ }
85
+
86
+ &_compact {
87
+ border-radius: 1px;
88
+ }
89
+
90
+ &_inverted {
92
91
  right: 0;
93
92
  left: auto;
94
93
 
95
94
  border-radius: 0 $inner-border-radius $inner-border-radius 0;
96
95
  }
97
96
  }
98
- &__filled-title {
97
+
98
+ &__title {
99
99
  position: relative;
100
100
  z-index: 2;
101
101
 
@@ -28,5 +28,5 @@ export function EntityStatus({ status = EFlag.Grey, name = '', label, path, icon
28
28
  };
29
29
  return (_jsxs("div", { className: b(null, className), title: name, children: [iconPath ? renderStatusLink(iconPath) : renderIcon(), label && (_jsx("span", { title: label, className: b('label', { size, state: status.toLowerCase() }), children: label })), _jsx("span", { className: b('link', { 'with-left-trim': withLeftTrim }), children: renderLink() }), hasClipboardButton && (_jsx(ClipboardButton, { text: name, size: "s", className: b('clipboard-button', {
30
30
  visible: clipboardButtonAlwaysVisible,
31
- }) })), additionalControls] }));
31
+ }) })), additionalControls && (_jsx("span", { className: b('additional-controls '), children: additionalControls }))] }));
32
32
  }