ydb-embedded-ui 6.11.0 → 6.12.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (243) 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/{DeveloperUiLink/DeveloperUiLink.js → DeveloperUILinkButton/DeveloperUILinkButton.js} +3 -3
  18. package/dist/components/{DeveloperUiLink/DeveloperUiLink.scss → DeveloperUILinkButton/DeveloperUILinkButton.scss} +3 -2
  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 +3 -6
  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 +11 -8
  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 +5 -5
  74. package/dist/containers/Tenant/Diagnostics/Overview/TableInfo/i18n/en.json +14 -1
  75. package/dist/containers/Tenant/Diagnostics/Overview/TableInfo/i18n/index.d.ts +1 -1
  76. package/dist/containers/Tenant/Diagnostics/Overview/TableInfo/i18n/index.js +1 -2
  77. package/dist/containers/Tenant/Diagnostics/Overview/TableInfo/prepareTableInfo.js +36 -17
  78. package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantCpu/TopQueries.js +8 -5
  79. package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantOverview.js +1 -1
  80. package/dist/containers/Tenant/Diagnostics/TenantOverview/getSectionTitle.d.ts +2 -1
  81. package/dist/containers/Tenant/Diagnostics/TenantOverview/getSectionTitle.js +2 -2
  82. package/dist/containers/Tenant/Diagnostics/TenantOverview/i18n/en.json +3 -2
  83. package/dist/containers/Tenant/Diagnostics/TenantOverview/i18n/index.d.ts +1 -1
  84. package/dist/containers/Tenant/Diagnostics/TopQueries/TopQueries.js +2 -2
  85. package/dist/containers/Tenant/Diagnostics/TopQueries/getTopQueriesColumns.d.ts +2 -2
  86. package/dist/containers/Tenant/Diagnostics/TopQueries/getTopQueriesColumns.js +14 -14
  87. package/dist/containers/Tenant/Diagnostics/TopShards/TopShards.js +3 -3
  88. package/dist/containers/Tenant/Diagnostics/TopShards/getTopShardsColumns.js +4 -4
  89. package/dist/containers/Tenant/ObjectSummary/ObjectSummary.js +31 -18
  90. package/dist/containers/Tenant/Query/ExplainResult/ExplainResult.js +2 -2
  91. package/dist/containers/Tenant/Query/QueryEditor/QueryEditor.js +8 -3
  92. package/dist/containers/Tenant/Query/QueryEditorControls/QueryEditorControls.d.ts +2 -1
  93. package/dist/containers/Tenant/Query/QueryEditorControls/QueryEditorControls.js +9 -7
  94. package/dist/containers/Tenant/Query/QuerySettingsDialog/QuerySettingsDialog.d.ts +2 -0
  95. package/dist/containers/Tenant/Query/QuerySettingsDialog/QuerySettingsDialog.js +38 -0
  96. package/dist/containers/Tenant/Query/QuerySettingsDialog/QuerySettingsDialog.scss +63 -0
  97. package/dist/containers/Tenant/Query/QuerySettingsDialog/QuerySettingsSelect.d.ts +15 -0
  98. package/dist/containers/Tenant/Query/QuerySettingsDialog/QuerySettingsSelect.js +14 -0
  99. package/dist/containers/Tenant/Query/QuerySettingsDialog/QuerySettingsSelect.scss +19 -0
  100. package/dist/containers/Tenant/Query/QuerySettingsDialog/constants.d.ts +99 -0
  101. package/dist/containers/Tenant/Query/QuerySettingsDialog/constants.js +109 -0
  102. package/dist/containers/Tenant/Query/QuerySettingsDialog/i18n/en.json +13 -0
  103. package/dist/containers/Tenant/Query/QuerySettingsDialog/i18n/index.d.ts +2 -0
  104. package/dist/containers/Tenant/Query/QuerySettingsDialog/i18n/index.js +5 -0
  105. package/dist/containers/Tenant/Query/QuerySettingsDialog/i18n/ru.json +13 -0
  106. package/dist/containers/Tenant/Query/i18n/en.json +14 -0
  107. package/dist/containers/Tenant/Query/i18n/index.d.ts +1 -1
  108. package/dist/containers/Tenant/Schema/CreateDirectoryDialog/CreateDirectoryDialog.d.ts +3 -2
  109. package/dist/containers/Tenant/Schema/CreateDirectoryDialog/CreateDirectoryDialog.js +2 -2
  110. package/dist/containers/Tenant/Schema/SchemaTree/SchemaTree.js +2 -2
  111. package/dist/containers/Tenant/Schema/SchemaViewer/SchemaViewer.js +1 -1
  112. package/dist/containers/Tenant/Tenant.js +1 -1
  113. package/dist/containers/Tenant/TenantPages.d.ts +12 -1
  114. package/dist/containers/Tenant/TenantPages.js +1 -1
  115. package/dist/containers/Tenant/i18n/en.json +2 -2
  116. package/dist/containers/Tenant/i18n/index.d.ts +1 -1
  117. package/dist/containers/Tenant/utils/schema.js +1 -1
  118. package/dist/containers/Tenants/Tenants.js +1 -1
  119. package/dist/containers/Tenants/Tenants.scss +0 -4
  120. package/dist/containers/UserSettings/i18n/en.json +2 -0
  121. package/dist/containers/UserSettings/i18n/index.d.ts +1 -1
  122. package/dist/containers/UserSettings/settings.d.ts +1 -0
  123. package/dist/containers/UserSettings/settings.js +6 -1
  124. package/dist/routes.js +2 -2
  125. package/dist/services/api.d.ts +39 -21
  126. package/dist/services/api.js +45 -56
  127. package/dist/services/settings.d.ts +1 -0
  128. package/dist/services/settings.js +2 -1
  129. package/dist/store/configureStore.d.ts +4 -4
  130. package/dist/store/defaultStore.d.ts +2 -2
  131. package/dist/store/reducers/api.d.ts +1 -1
  132. package/dist/store/reducers/api.js +1 -1
  133. package/dist/store/reducers/cluster/cluster.d.ts +2 -2
  134. package/dist/store/reducers/clusterNodes/clusterNodes.d.ts +2 -2
  135. package/dist/store/reducers/clusters/clusters.d.ts +2 -2
  136. package/dist/store/reducers/describe.d.ts +5 -2
  137. package/dist/store/reducers/describe.js +2 -2
  138. package/dist/store/reducers/executeQuery.d.ts +2 -2
  139. package/dist/store/reducers/executeTopQueries/executeTopQueries.d.ts +2 -2
  140. package/dist/store/reducers/executeTopQueries/executeTopQueries.js +19 -14
  141. package/dist/store/reducers/executeTopQueries/types.d.ts +2 -2
  142. package/dist/store/reducers/executeTopQueries/utils.js +11 -7
  143. package/dist/store/reducers/explainQuery/explainQuery.d.ts +2 -2
  144. package/dist/store/reducers/explainQuery/explainQuery.js +6 -1
  145. package/dist/store/reducers/healthcheckInfo/healthcheckInfo.d.ts +58 -58
  146. package/dist/store/reducers/heatmap.d.ts +2 -2
  147. package/dist/store/reducers/heatmap.js +3 -3
  148. package/dist/store/reducers/hotKeys/hotKeys.d.ts +3 -2
  149. package/dist/store/reducers/hotKeys/hotKeys.js +3 -3
  150. package/dist/store/reducers/index.d.ts +3 -3
  151. package/dist/store/reducers/network/network.d.ts +2 -2
  152. package/dist/store/reducers/network/network.js +1 -1
  153. package/dist/store/reducers/node/node.d.ts +3 -3
  154. package/dist/store/reducers/node/selectors.d.ts +1 -1
  155. package/dist/store/reducers/node/selectors.js +2 -2
  156. package/dist/store/reducers/nodes/nodes.d.ts +3 -3
  157. package/dist/store/reducers/nodesList.d.ts +3 -3
  158. package/dist/store/reducers/overview/overview.d.ts +5 -2
  159. package/dist/store/reducers/overview/overview.js +2 -2
  160. package/dist/store/reducers/partitions/partitions.d.ts +2 -2
  161. package/dist/store/reducers/pdisk/pdisk.d.ts +3 -3
  162. package/dist/store/reducers/pdisk/pdisk.js +15 -2
  163. package/dist/store/reducers/pdisk/types.d.ts +17 -1
  164. package/dist/store/reducers/pdisk/utils.d.ts +2 -2
  165. package/dist/store/reducers/pdisk/utils.js +68 -8
  166. package/dist/store/reducers/preview.d.ts +2 -2
  167. package/dist/store/reducers/preview.js +1 -1
  168. package/dist/store/reducers/queryActions/types.d.ts +1 -1
  169. package/dist/store/reducers/schema/schema.d.ts +28 -10
  170. package/dist/store/reducers/schema/schema.js +11 -12
  171. package/dist/store/reducers/schemaAcl/schemaAcl.d.ts +4 -2
  172. package/dist/store/reducers/schemaAcl/schemaAcl.js +9 -3
  173. package/dist/store/reducers/shardsWorkload/shardsWorkload.d.ts +2 -2
  174. package/dist/store/reducers/shardsWorkload/shardsWorkload.js +22 -6
  175. package/dist/store/reducers/shardsWorkload/types.d.ts +2 -2
  176. package/dist/store/reducers/storage/storage.d.ts +3 -3
  177. package/dist/store/reducers/tablet.d.ts +3 -3
  178. package/dist/store/reducers/tablets.d.ts +13 -13
  179. package/dist/store/reducers/tabletsFilters.d.ts +1 -1
  180. package/dist/store/reducers/tenant/tenant.d.ts +2 -2
  181. package/dist/store/reducers/tenantOverview/executeTopTables/executeTopTables.d.ts +2 -2
  182. package/dist/store/reducers/tenantOverview/executeTopTables/executeTopTables.js +1 -1
  183. package/dist/store/reducers/tenantOverview/topNodes/topNodes.d.ts +2 -2
  184. package/dist/store/reducers/tenantOverview/topShards/tenantOverviewTopShards.d.ts +2 -2
  185. package/dist/store/reducers/tenantOverview/topShards/tenantOverviewTopShards.js +1 -1
  186. package/dist/store/reducers/tenantOverview/topStorageGroups/topStorageGroups.d.ts +2 -2
  187. package/dist/store/reducers/tenants/selectors.d.ts +27 -27
  188. package/dist/store/reducers/tenants/tenants.d.ts +2 -2
  189. package/dist/store/reducers/topic.d.ts +44 -44
  190. package/dist/store/reducers/vdisk/vdisk.d.ts +2 -2
  191. package/dist/store/reducers/vdisk/vdisk.js +1 -1
  192. package/dist/store/reducers/viewSchema/viewSchema.d.ts +2 -2
  193. package/dist/store/reducers/viewSchema/viewSchema.js +1 -1
  194. package/dist/store/state-url-mapping.d.ts +70 -0
  195. package/dist/store/state-url-mapping.js +1 -5
  196. package/dist/styles/mixins.scss +11 -0
  197. package/dist/types/api/acl.d.ts +1 -0
  198. package/dist/types/api/pdisk.d.ts +65 -2
  199. package/dist/types/api/vdisk.d.ts +33 -2
  200. package/dist/types/common.d.ts +3 -0
  201. package/dist/types/store/heatmap.d.ts +1 -0
  202. package/dist/types/store/query.d.ts +4 -1
  203. package/dist/utils/constants.d.ts +1 -0
  204. package/dist/utils/constants.js +1 -0
  205. package/dist/utils/dataFormatters/dataFormatters.d.ts +0 -4
  206. package/dist/utils/dataFormatters/dataFormatters.js +2 -8
  207. package/dist/utils/developerUI/developerUI.d.ts +1 -0
  208. package/dist/utils/developerUI/developerUI.js +3 -0
  209. package/dist/utils/disks/getPDiskType.d.ts +3 -3
  210. package/dist/utils/disks/helpers.d.ts +1 -0
  211. package/dist/utils/disks/helpers.js +3 -0
  212. package/dist/utils/disks/prepareDisks.d.ts +2 -2
  213. package/dist/utils/disks/prepareDisks.js +17 -22
  214. package/dist/utils/disks/types.d.ts +7 -5
  215. package/dist/utils/monaco/constats.d.ts +2 -0
  216. package/dist/utils/monaco/constats.js +2 -0
  217. package/dist/utils/monaco/yql/constants.d.ts +0 -1
  218. package/dist/utils/monaco/yql/constants.js +0 -1
  219. package/dist/utils/monaco/yql/yql.completionItemProvider.js +2 -2
  220. package/dist/utils/query.d.ts +24 -1
  221. package/dist/utils/query.js +40 -0
  222. package/package.json +5 -1
  223. package/dist/components/DeveloperUiLink/DeveloperUiLink.d.ts +0 -8
  224. package/dist/components/NodeHostWrapper/NodeHostWrapper.scss +0 -15
  225. package/dist/containers/Node/NodeStructure/Vdisk.d.ts +0 -6
  226. package/dist/containers/Node/NodeStructure/Vdisk.js +0 -13
  227. package/dist/containers/PDiskPage/PDiskGroups.d.ts +0 -9
  228. package/dist/containers/PDiskPage/PDiskGroups.js +0 -20
  229. package/dist/containers/Tenant/Diagnostics/Overview/TableInfo/i18n/ru.json +0 -5
  230. package/dist/store/reducers/tenantOverview/topQueries/tenantOverviewTopQueries.d.ts +0 -5
  231. package/dist/store/reducers/tenantOverview/topQueries/tenantOverviewTopQueries.js +0 -38
  232. package/dist/utils/monaco/index.d.ts +0 -1
  233. package/dist/utils/monaco/index.js +0 -6
  234. package/dist/utils/monaco/s-expression/constants.d.ts +0 -1
  235. package/dist/utils/monaco/s-expression/constants.js +0 -1
  236. package/dist/utils/monaco/s-expression/registerLanguage.d.ts +0 -1
  237. package/dist/utils/monaco/s-expression/registerLanguage.js +0 -59
  238. package/dist/utils/monaco/yql/registerLanguage.d.ts +0 -1
  239. package/dist/utils/monaco/yql/registerLanguage.js +0 -8
  240. package/dist/utils/monaco/yql/yql.d.ts +0 -7
  241. package/dist/utils/monaco/yql/yql.js +0 -180
  242. package/dist/utils/monaco/yql/yql.keywords.d.ts +0 -3
  243. package/dist/utils/monaco/yql/yql.keywords.js +0 -3
@@ -1,3 +1,3 @@
1
1
  export declare const networkApi: import("@reduxjs/toolkit/query").Api<import("@reduxjs/toolkit/query").BaseQueryFn<void, typeof import("../api")._NEVER, unknown, {}>, {
2
- getNetworkInfo: import("@reduxjs/toolkit/query").QueryDefinition<string, import("@reduxjs/toolkit/query").BaseQueryFn<void, typeof import("../api")._NEVER, unknown, {}>, "All", import("../../../types/api/netInfo").TNetInfo | undefined, "api">;
3
- }, "api", "All", typeof import("@reduxjs/toolkit/query").coreModuleName | typeof import("@reduxjs/toolkit/query/react").reactHooksModuleName>;
2
+ getNetworkInfo: import("@reduxjs/toolkit/query").QueryDefinition<string, import("@reduxjs/toolkit/query").BaseQueryFn<void, typeof import("../api")._NEVER, unknown, {}>, "All" | "PDiskData", import("../../../types/api/netInfo").TNetInfo | undefined, "api">;
3
+ }, "api", "All" | "PDiskData", typeof import("@reduxjs/toolkit/query").coreModuleName | typeof import("@reduxjs/toolkit/query/react").reactHooksModuleName>;
@@ -4,7 +4,7 @@ export const networkApi = api.injectEndpoints({
4
4
  getNetworkInfo: build.query({
5
5
  queryFn: async (tenant, { signal }) => {
6
6
  try {
7
- const data = await window.api.getNetwork(tenant, { signal });
7
+ const data = await window.api.getNetwork({ path: tenant, database: tenant }, { signal });
8
8
  return { data };
9
9
  }
10
10
  catch (error) {
@@ -1,8 +1,8 @@
1
1
  export declare const nodeApi: import("@reduxjs/toolkit/query").Api<import("@reduxjs/toolkit/query").BaseQueryFn<void, typeof import("../api")._NEVER, unknown, {}>, {
2
2
  getNodeInfo: import("@reduxjs/toolkit/query").QueryDefinition<{
3
3
  nodeId: string;
4
- }, import("@reduxjs/toolkit/query").BaseQueryFn<void, typeof import("../api")._NEVER, unknown, {}>, "All", import("./types").PreparedNode | undefined, "api">;
4
+ }, import("@reduxjs/toolkit/query").BaseQueryFn<void, typeof import("../api")._NEVER, unknown, {}>, "All" | "PDiskData", import("./types").PreparedNode | undefined, "api">;
5
5
  getNodeStructure: import("@reduxjs/toolkit/query").QueryDefinition<{
6
6
  nodeId: string;
7
- }, import("@reduxjs/toolkit/query").BaseQueryFn<void, typeof import("../api")._NEVER, unknown, {}>, "All", import("../../../types/api/storage").TStorageInfo | undefined, "api">;
8
- }, "api", "All", typeof import("@reduxjs/toolkit/query").coreModuleName | typeof import("@reduxjs/toolkit/query/react").reactHooksModuleName>;
7
+ }, import("@reduxjs/toolkit/query").BaseQueryFn<void, typeof import("../api")._NEVER, unknown, {}>, "All" | "PDiskData", import("../../../types/api/storage").TStorageInfo | undefined, "api">;
8
+ }, "api", "All" | "PDiskData", typeof import("@reduxjs/toolkit/query").coreModuleName | typeof import("@reduxjs/toolkit/query/react").reactHooksModuleName>;
@@ -1,7 +1,7 @@
1
1
  import type { RootState } from '../../defaultStore';
2
2
  import type { PreparedNodeStructure } from './types';
3
3
  export declare const selectNodeStructure: ((state: {
4
- api: import("@reduxjs/toolkit/query").CombinedState<{}, "All", "api">;
4
+ api: import("@reduxjs/toolkit/query").CombinedState<{}, "All" | "PDiskData", "api">;
5
5
  singleClusterMode: boolean;
6
6
  cluster: import("../cluster/types").ClusterState;
7
7
  tenant: import("../tenant/types").TenantState;
@@ -1,6 +1,6 @@
1
1
  import { createSelector } from '@reduxjs/toolkit';
2
2
  import { stringifyVdiskId } from '../../../utils/dataFormatters/dataFormatters';
3
- import { preparePDiskData } from '../../../utils/disks/prepareDisks';
3
+ import { preparePDiskData, prepareVDiskData } from '../../../utils/disks/prepareDisks';
4
4
  import { nodeApi } from './node';
5
5
  const getNodeStructureSelector = createSelector((nodeId) => nodeId, (nodeId) => nodeApi.endpoints.getNodeStructure.select({ nodeId }));
6
6
  const selectGetNodeStructureData = createSelector((state) => state, (_state, nodeId) => getNodeStructureSelector(nodeId), (state, selectGetNodeStructure) => selectGetNodeStructure(state).data);
@@ -11,7 +11,7 @@ export const selectNodeStructure = createSelector((_state, nodeId) => Number(nod
11
11
  const groups = pool.Groups;
12
12
  groups === null || groups === void 0 ? void 0 : groups.forEach((group) => {
13
13
  var _a;
14
- const vDisks = (_a = group.VDisks) === null || _a === void 0 ? void 0 : _a.filter((el) => el.NodeId === nodeId);
14
+ const vDisks = (_a = group.VDisks) === null || _a === void 0 ? void 0 : _a.filter((el) => el.NodeId === nodeId).map(prepareVDiskData);
15
15
  vDisks === null || vDisks === void 0 ? void 0 : vDisks.forEach((vd) => {
16
16
  const vDiskId = stringifyVdiskId(vd.VDiskId);
17
17
  const preparedPDisk = preparePDiskData(vd.PDisk);
@@ -1,5 +1,5 @@
1
1
  import type { ComputeApiRequestParams, NodesApiRequestParams } from './types';
2
2
  export declare const nodesApi: import("@reduxjs/toolkit/query").Api<import("@reduxjs/toolkit/query").BaseQueryFn<void, typeof import("../api")._NEVER, unknown, {}>, {
3
- getNodes: import("@reduxjs/toolkit/query").QueryDefinition<NodesApiRequestParams, import("@reduxjs/toolkit/query").BaseQueryFn<void, typeof import("../api")._NEVER, unknown, {}>, "All", import("./types").NodesHandledResponse | undefined, "api">;
4
- getComputeNodes: import("@reduxjs/toolkit/query").QueryDefinition<ComputeApiRequestParams, import("@reduxjs/toolkit/query").BaseQueryFn<void, typeof import("../api")._NEVER, unknown, {}>, "All", import("./types").NodesHandledResponse | undefined, "api">;
5
- }, "api", "All", typeof import("@reduxjs/toolkit/query").coreModuleName | typeof import("@reduxjs/toolkit/query/react").reactHooksModuleName>;
3
+ getNodes: import("@reduxjs/toolkit/query").QueryDefinition<NodesApiRequestParams, import("@reduxjs/toolkit/query").BaseQueryFn<void, typeof import("../api")._NEVER, unknown, {}>, "All" | "PDiskData", import("./types").NodesHandledResponse | undefined, "api">;
4
+ getComputeNodes: import("@reduxjs/toolkit/query").QueryDefinition<ComputeApiRequestParams, import("@reduxjs/toolkit/query").BaseQueryFn<void, typeof import("../api")._NEVER, unknown, {}>, "All" | "PDiskData", import("./types").NodesHandledResponse | undefined, "api">;
5
+ }, "api", "All" | "PDiskData", typeof import("@reduxjs/toolkit/query").coreModuleName | typeof import("@reduxjs/toolkit/query/react").reactHooksModuleName>;
@@ -1,9 +1,9 @@
1
1
  import type { RootState } from '../defaultStore';
2
2
  export declare const nodesListApi: import("@reduxjs/toolkit/query").Api<import("@reduxjs/toolkit/query").BaseQueryFn<void, typeof import("./api")._NEVER, unknown, {}>, {
3
- getNodesList: import("@reduxjs/toolkit/query").QueryDefinition<any, import("@reduxjs/toolkit/query").BaseQueryFn<void, typeof import("./api")._NEVER, unknown, {}>, "All", import("../../types/api/nodesList").TEvNodesInfo | undefined, "api">;
4
- }, "api", "All", typeof import("@reduxjs/toolkit/query").coreModuleName | typeof import("@reduxjs/toolkit/query/react").reactHooksModuleName>;
3
+ getNodesList: import("@reduxjs/toolkit/query").QueryDefinition<any, import("@reduxjs/toolkit/query").BaseQueryFn<void, typeof import("./api")._NEVER, unknown, {}>, "All" | "PDiskData", import("../../types/api/nodesList").TEvNodesInfo | undefined, "api">;
4
+ }, "api", "All" | "PDiskData", typeof import("@reduxjs/toolkit/query").coreModuleName | typeof import("@reduxjs/toolkit/query/react").reactHooksModuleName>;
5
5
  export declare const selectNodesMap: ((state: {
6
- api: import("@reduxjs/toolkit/query").CombinedState<{}, "All", "api">;
6
+ api: import("@reduxjs/toolkit/query").CombinedState<{}, "All" | "PDiskData", "api">;
7
7
  singleClusterMode: boolean;
8
8
  cluster: import("./cluster/types").ClusterState;
9
9
  tenant: import("./tenant/types").TenantState;
@@ -1,6 +1,9 @@
1
1
  export declare const overviewApi: import("@reduxjs/toolkit/query").Api<import("@reduxjs/toolkit/query").BaseQueryFn<void, typeof import("../api")._NEVER, unknown, {}>, {
2
- getOverview: import("@reduxjs/toolkit/query").QueryDefinition<string[], import("@reduxjs/toolkit/query").BaseQueryFn<void, typeof import("../api")._NEVER, unknown, {}>, "All", {
2
+ getOverview: import("@reduxjs/toolkit/query").QueryDefinition<{
3
+ paths: string[];
4
+ database: string;
5
+ }, import("@reduxjs/toolkit/query").BaseQueryFn<void, typeof import("../api")._NEVER, unknown, {}>, "All" | "PDiskData", {
3
6
  data: import("../../../utils/typecheckers").Nullable<import("../../../types/api/schema").TEvDescribeSchemeResult>;
4
7
  additionalData: import("../../../utils/typecheckers").Nullable<import("../../../types/api/schema").TEvDescribeSchemeResult>[];
5
8
  } | undefined, "api">;
6
- }, "api", "All", typeof import("@reduxjs/toolkit/query").coreModuleName | typeof import("@reduxjs/toolkit/query/react").reactHooksModuleName>;
9
+ }, "api", "All" | "PDiskData", typeof import("@reduxjs/toolkit/query").coreModuleName | typeof import("@reduxjs/toolkit/query/react").reactHooksModuleName>;
@@ -2,9 +2,9 @@ import { api } from '../api';
2
2
  export const overviewApi = api.injectEndpoints({
3
3
  endpoints: (build) => ({
4
4
  getOverview: build.query({
5
- queryFn: async (paths, { signal }) => {
5
+ queryFn: async ({ paths, database }, { signal }) => {
6
6
  try {
7
- const [data, ...additionalData] = await Promise.all(paths.map((p) => window.api.getDescribe({ path: p }, { signal })));
7
+ const [data, ...additionalData] = await Promise.all(paths.map((p) => window.api.getDescribe({ path: p, database }, { signal })));
8
8
  return { data: { data, additionalData } };
9
9
  }
10
10
  catch (error) {
@@ -6,5 +6,5 @@ export declare const partitionsApi: import("@reduxjs/toolkit/query").Api<import(
6
6
  getPartitions: import("@reduxjs/toolkit/query").QueryDefinition<{
7
7
  path: string;
8
8
  consumerName?: string;
9
- }, import("@reduxjs/toolkit/query").BaseQueryFn<void, typeof import("../api")._NEVER, unknown, {}>, "All", import("./types").PreparedPartitionData[] | undefined, "api">;
10
- }, "api", "All", typeof import("@reduxjs/toolkit/query").coreModuleName | typeof import("@reduxjs/toolkit/query/react").reactHooksModuleName>;
9
+ }, import("@reduxjs/toolkit/query").BaseQueryFn<void, typeof import("../api")._NEVER, unknown, {}>, "All" | "PDiskData", import("./types").PreparedPartitionData[] | undefined, "api">;
10
+ }, "api", "All" | "PDiskData", typeof import("@reduxjs/toolkit/query").coreModuleName | typeof import("@reduxjs/toolkit/query/react").reactHooksModuleName>;
@@ -3,7 +3,7 @@ interface PDiskParams {
3
3
  pDiskId: number | string;
4
4
  }
5
5
  export declare const pDiskApi: import("@reduxjs/toolkit/query").Api<import("@reduxjs/toolkit/query").BaseQueryFn<void, typeof import("../api")._NEVER, unknown, {}>, {
6
- getPdiskInfo: import("@reduxjs/toolkit/query").QueryDefinition<PDiskParams, import("@reduxjs/toolkit/query").BaseQueryFn<void, typeof import("../api")._NEVER, unknown, {}>, "All", import("./types").PDiskData | undefined, "api">;
7
- getStorageInfo: import("@reduxjs/toolkit/query").QueryDefinition<PDiskParams, import("@reduxjs/toolkit/query").BaseQueryFn<void, typeof import("../api")._NEVER, unknown, {}>, "All", import("../storage/types").PreparedStorageGroup[] | undefined, "api">;
8
- }, "api", "All", typeof import("@reduxjs/toolkit/query").coreModuleName | typeof import("@reduxjs/toolkit/query/react").reactHooksModuleName>;
6
+ getPdiskInfo: import("@reduxjs/toolkit/query").QueryDefinition<PDiskParams, import("@reduxjs/toolkit/query").BaseQueryFn<void, typeof import("../api")._NEVER, unknown, {}>, "All" | "PDiskData", import("./types").PDiskData | undefined, "api">;
7
+ getStorageInfo: import("@reduxjs/toolkit/query").QueryDefinition<PDiskParams, import("@reduxjs/toolkit/query").BaseQueryFn<void, typeof import("../api")._NEVER, unknown, {}>, "All" | "PDiskData", import("../storage/types").PreparedStorageGroup[] | undefined, "api">;
8
+ }, "api", "All" | "PDiskData", typeof import("@reduxjs/toolkit/query").coreModuleName | typeof import("@reduxjs/toolkit/query/react").reactHooksModuleName>;
9
9
  export {};
@@ -1,4 +1,5 @@
1
1
  import { EVersion } from '../../../types/api/storage';
2
+ import { getPDiskId } from '../../../utils/disks/helpers';
2
3
  import { api } from '../api';
3
4
  import { preparePDiskDataResponse, preparePDiskStorageResponse } from './utils';
4
5
  export const pDiskApi = api.injectEndpoints({
@@ -17,7 +18,13 @@ export const pDiskApi = api.injectEndpoints({
17
18
  return { error };
18
19
  }
19
20
  },
20
- providesTags: ['All'],
21
+ providesTags: (_result, _error, arg) => [
22
+ 'All',
23
+ {
24
+ type: 'PDiskData',
25
+ id: getPDiskId(arg.nodeId, arg.pDiskId),
26
+ },
27
+ ],
21
28
  }),
22
29
  getStorageInfo: build.query({
23
30
  queryFn: async ({ nodeId, pDiskId }, { signal }) => {
@@ -30,7 +37,13 @@ export const pDiskApi = api.injectEndpoints({
30
37
  return { error };
31
38
  }
32
39
  },
33
- providesTags: ['All'],
40
+ providesTags: (_result, _error, arg) => [
41
+ 'All',
42
+ {
43
+ type: 'PDiskData',
44
+ id: getPDiskId(arg.nodeId, arg.pDiskId),
45
+ },
46
+ ],
34
47
  }),
35
48
  }),
36
49
  overrideExisting: 'throw',
@@ -1,7 +1,23 @@
1
- import type { PreparedPDisk } from '../../../utils/disks/types';
1
+ import type { PreparedPDisk, PreparedVDisk } from '../../../utils/disks/types';
2
2
  export interface PDiskData extends PreparedPDisk {
3
3
  NodeId?: number;
4
4
  NodeHost?: string;
5
5
  NodeType?: string;
6
6
  NodeDC?: string;
7
+ SlotItems?: (SlotItem<'vDisk'> | SlotItem<'log'> | SlotItem<'empty'>)[];
7
8
  }
9
+ export interface SlotItem<T extends SlotItemType> {
10
+ SlotType: T;
11
+ Id?: string | number;
12
+ Title?: string;
13
+ Severity?: number;
14
+ Used?: number;
15
+ Total?: number;
16
+ UsagePercent?: number;
17
+ SlotData: T extends 'vDisk' ? PreparedVDisk : T extends 'log' ? LogSlotData : T extends 'empty' ? EmptySlotData : undefined;
18
+ }
19
+ export type LogSlotData = Pick<PDiskData, 'LogUsedSize' | 'LogTotalSize' | 'SystemSize'>;
20
+ export type EmptySlotData = {
21
+ Size: number;
22
+ };
23
+ export type SlotItemType = 'vDisk' | 'log' | 'empty';
@@ -1,10 +1,10 @@
1
- import type { TEvPDiskStateResponse } from '../../../types/api/pdisk';
1
+ import type { TPDiskInfoResponse } from '../../../types/api/pdisk';
2
2
  import type { TStorageInfo } from '../../../types/api/storage';
3
3
  import type { TEvSystemStateResponse } from '../../../types/api/systemState';
4
4
  import type { PreparedStorageGroup } from '../storage/types';
5
5
  import type { PDiskData } from './types';
6
6
  export declare function preparePDiskDataResponse([pdiskResponse, nodeResponse]: [
7
- TEvPDiskStateResponse,
7
+ TPDiskInfoResponse,
8
8
  TEvSystemStateResponse
9
9
  ]): PDiskData;
10
10
  export declare function preparePDiskStorageResponse(data: TStorageInfo, pDiskId: number | string, nodeId: number | string): PreparedStorageGroup[];
@@ -1,18 +1,78 @@
1
- import { preparePDiskData } from '../../../utils/disks/prepareDisks';
1
+ import { getArray, valueIsDefined } from '../../../utils';
2
+ import { preparePDiskData, prepareVDiskData } from '../../../utils/disks/prepareDisks';
2
3
  import { prepareNodeSystemState } from '../../../utils/nodes';
3
4
  import { prepareStorageGroupData } from '../storage/utils';
4
- export function preparePDiskDataResponse([pdiskResponse, nodeResponse]) {
5
- var _a, _b, _c, _d;
6
- const rawPDisk = (_a = pdiskResponse.PDiskStateInfo) === null || _a === void 0 ? void 0 : _a[0];
7
- const preparedPDisk = preparePDiskData(rawPDisk);
8
- const rawNode = (_b = nodeResponse.SystemStateInfo) === null || _b === void 0 ? void 0 : _b[0];
5
+ export function preparePDiskDataResponse([pdiskResponse = {}, nodeResponse]) {
6
+ var _a, _b, _c;
7
+ const { BSC = {}, Whiteboard = {} } = pdiskResponse || {};
8
+ const { PDisk: WhiteboardPDiskData = {}, VDisks: WhiteboardVDisksData = [] } = Whiteboard;
9
+ const { PDisk: BSCPDiskData = {} } = BSC;
10
+ const preparedPDisk = preparePDiskData(WhiteboardPDiskData, BSCPDiskData);
11
+ const { LogUsedSize, LogTotalSize, TotalSize: PDiskTotalSize, SystemSize, ExpectedSlotCount, EnforcedDynamicSlotSize, } = preparedPDisk;
12
+ let logSlot;
13
+ if (valueIsDefined(LogTotalSize)) {
14
+ logSlot = {
15
+ SlotType: 'log',
16
+ Used: Number(LogUsedSize),
17
+ Total: Number(LogTotalSize),
18
+ UsagePercent: (Number(LogUsedSize) * 100) / Number(LogTotalSize),
19
+ Severity: 1,
20
+ SlotData: {
21
+ LogUsedSize,
22
+ LogTotalSize,
23
+ SystemSize,
24
+ },
25
+ };
26
+ }
27
+ const preparedVDisks = WhiteboardVDisksData.map(prepareVDiskData).sort((disk1, disk2) => Number(disk2.VDiskSlotId) - Number(disk1.VDiskSlotId));
28
+ const vdisksSlots = preparedVDisks.map((preparedVDisk) => {
29
+ var _a;
30
+ return {
31
+ SlotType: 'vDisk',
32
+ Id: (_a = preparedVDisk.VDiskId) === null || _a === void 0 ? void 0 : _a.GroupID,
33
+ Title: preparedVDisk.StoragePoolName,
34
+ Severity: preparedVDisk.Severity,
35
+ Used: Number(preparedVDisk.AllocatedSize),
36
+ Total: Number(preparedVDisk.TotalSize),
37
+ UsagePercent: preparedVDisk.AllocatedPercent,
38
+ SlotData: preparedVDisk,
39
+ };
40
+ });
41
+ let emptySlots = [];
42
+ if (ExpectedSlotCount && ExpectedSlotCount > vdisksSlots.length) {
43
+ const emptySlotsCount = ExpectedSlotCount - vdisksSlots.length;
44
+ let emptySlotSize = Number(EnforcedDynamicSlotSize);
45
+ if (isNaN(emptySlotSize)) {
46
+ const vDisksTotalSize = vdisksSlots.reduce((sum, item) => {
47
+ return item.Total ? sum + item.Total : sum;
48
+ }, 0);
49
+ emptySlotSize =
50
+ (Number(PDiskTotalSize) - vDisksTotalSize - Number(LogTotalSize)) / emptySlotsCount;
51
+ }
52
+ emptySlots = getArray(emptySlotsCount).map(() => {
53
+ return {
54
+ SlotType: 'empty',
55
+ Total: emptySlotSize,
56
+ Severity: 1,
57
+ SlotData: {
58
+ Size: emptySlotSize,
59
+ },
60
+ };
61
+ });
62
+ }
63
+ const diskSlots = [...vdisksSlots, ...emptySlots];
64
+ if (logSlot) {
65
+ diskSlots.unshift(logSlot);
66
+ }
67
+ const rawNode = (_a = nodeResponse.SystemStateInfo) === null || _a === void 0 ? void 0 : _a[0];
9
68
  const preparedNode = prepareNodeSystemState(rawNode);
10
69
  return {
11
70
  ...preparedPDisk,
12
- NodeId: (_c = preparedPDisk.NodeId) !== null && _c !== void 0 ? _c : preparedNode.NodeId,
71
+ NodeId: (_b = preparedPDisk.NodeId) !== null && _b !== void 0 ? _b : preparedNode.NodeId,
13
72
  NodeHost: preparedNode.Host,
14
- NodeType: (_d = preparedNode.Roles) === null || _d === void 0 ? void 0 : _d[0],
73
+ NodeType: (_c = preparedNode.Roles) === null || _c === void 0 ? void 0 : _c[0],
15
74
  NodeDC: preparedNode.DC,
75
+ SlotItems: diskSlots,
16
76
  };
17
77
  }
18
78
  export function preparePDiskStorageResponse(data, pDiskId, nodeId) {
@@ -5,6 +5,6 @@ interface SendQueryParams {
5
5
  action?: ExecuteActions;
6
6
  }
7
7
  export declare const previewApi: import("@reduxjs/toolkit/query").Api<import("@reduxjs/toolkit/query").BaseQueryFn<void, typeof import("./api")._NEVER, unknown, {}>, {
8
- sendQuery: import("@reduxjs/toolkit/query").QueryDefinition<SendQueryParams, import("@reduxjs/toolkit/query").BaseQueryFn<void, typeof import("./api")._NEVER, unknown, {}>, "All", import("../../types/store/query").IQueryResult | undefined, "api">;
9
- }, "api", "All", typeof import("@reduxjs/toolkit/query").coreModuleName | typeof import("@reduxjs/toolkit/query/react").reactHooksModuleName>;
8
+ sendQuery: import("@reduxjs/toolkit/query").QueryDefinition<SendQueryParams, import("@reduxjs/toolkit/query").BaseQueryFn<void, typeof import("./api")._NEVER, unknown, {}>, "All" | "PDiskData", import("../../types/store/query").IQueryResult | undefined, "api">;
9
+ }, "api", "All" | "PDiskData", typeof import("@reduxjs/toolkit/query").coreModuleName | typeof import("@reduxjs/toolkit/query/react").reactHooksModuleName>;
10
10
  export {};
@@ -5,7 +5,7 @@ export const previewApi = api.injectEndpoints({
5
5
  sendQuery: build.query({
6
6
  queryFn: async ({ query, database, action }, { signal }) => {
7
7
  try {
8
- const response = await window.api.sendQuery({ schema: 'modern', query, database, action }, { signal });
8
+ const response = await window.api.sendQuery({ schema: 'modern', query, database, action }, { signal, withRetries: true });
9
9
  if (isQueryErrorResponse(response)) {
10
10
  return { error: response };
11
11
  }
@@ -1,4 +1,4 @@
1
- export type QueryActions = 'save' | 'idle';
1
+ export type QueryActions = 'save' | 'idle' | 'settings';
2
2
  export interface QueryActionsState {
3
3
  queryName: string | null;
4
4
  queryAction: QueryActions;
@@ -1,6 +1,5 @@
1
- import type { Reducer, Selector } from '@reduxjs/toolkit';
1
+ import type { Reducer } from '@reduxjs/toolkit';
2
2
  import type { EPathType, TEvDescribeSchemeResult } from '../../../types/api/schema';
3
- import type { RootState } from '../../defaultStore';
4
3
  import type { SchemaAction, SchemaState } from './types';
5
4
  export declare const initialState: {
6
5
  loading: boolean;
@@ -18,21 +17,40 @@ export declare const schemaApi: import("@reduxjs/toolkit/query").Api<import("@re
18
17
  createDirectory: import("@reduxjs/toolkit/query").MutationDefinition<{
19
18
  database: string;
20
19
  path: string;
21
- }, import("@reduxjs/toolkit/query").BaseQueryFn<void, typeof import("../api")._NEVER, unknown, {}>, "All", unknown, "api">;
20
+ }, import("@reduxjs/toolkit/query").BaseQueryFn<void, typeof import("../api")._NEVER, unknown, {}>, "All" | "PDiskData", unknown, "api">;
22
21
  getSchema: import("@reduxjs/toolkit/query").QueryDefinition<{
23
22
  path: string;
24
- }, import("@reduxjs/toolkit/query").BaseQueryFn<void, typeof import("../api")._NEVER, unknown, {}>, "All", {
23
+ database: string;
24
+ }, import("@reduxjs/toolkit/query").BaseQueryFn<void, typeof import("../api")._NEVER, unknown, {}>, "All" | "PDiskData", {
25
25
  [path: string]: TEvDescribeSchemeResult & {
26
26
  partial?: boolean;
27
27
  };
28
28
  }, "api">;
29
- }, "api", "All", typeof import("@reduxjs/toolkit/query").coreModuleName | typeof import("@reduxjs/toolkit/query/react").reactHooksModuleName>;
30
- export declare const selectSchemaMergedChildrenPaths: Selector<RootState, string[] | undefined, [
31
- string | undefined,
32
- EPathType | undefined
33
- ]>;
34
- export declare function useGetSchemaQuery({ path }: {
29
+ }, "api", "All" | "PDiskData", typeof import("@reduxjs/toolkit/query").coreModuleName | typeof import("@reduxjs/toolkit/query/react").reactHooksModuleName>;
30
+ export declare const selectSchemaMergedChildrenPaths: ((state: any, path: any, _type: any, database: string) => string[] | undefined) & {
31
+ clearCache: () => void;
32
+ resultsCount: () => number;
33
+ resetResultsCount: () => void;
34
+ } & {
35
+ resultFunc: (resultFuncArgs_0: string, resultFuncArgs_1: EPathType | undefined, resultFuncArgs_2: import("../../../types/api/schema").TDirEntry[] | undefined) => string[] | undefined;
36
+ memoizedResultFunc: ((resultFuncArgs_0: string, resultFuncArgs_1: EPathType | undefined, resultFuncArgs_2: import("../../../types/api/schema").TDirEntry[] | undefined) => string[] | undefined) & {
37
+ clearCache: () => void;
38
+ resultsCount: () => number;
39
+ resetResultsCount: () => void;
40
+ };
41
+ lastResult: () => string[] | undefined;
42
+ dependencies: [(_: any, path: string) => string, (_: any, _path: any, type: EPathType | undefined) => EPathType | undefined, (state: any, path: any, _type: any, database: string) => import("../../../types/api/schema").TDirEntry[] | undefined];
43
+ recomputations: () => number;
44
+ resetRecomputations: () => void;
45
+ dependencyRecomputations: () => number;
46
+ resetDependencyRecomputations: () => void;
47
+ } & {
48
+ argsMemoize: typeof import("reselect").weakMapMemoize;
49
+ memoize: typeof import("reselect").weakMapMemoize;
50
+ };
51
+ export declare function useGetSchemaQuery({ path, database }: {
35
52
  path: string;
53
+ database: string;
36
54
  }): {
37
55
  data: (TEvDescribeSchemeResult & {
38
56
  partial?: boolean;
@@ -33,7 +33,7 @@ export const schemaApi = api.injectEndpoints({
33
33
  createDirectory: builder.mutation({
34
34
  queryFn: async ({ database, path }, { signal }) => {
35
35
  try {
36
- const data = await window.api.createSchemaDirectory(database, path, { signal });
36
+ const data = await window.api.createSchemaDirectory({ database, path }, { signal });
37
37
  return { data };
38
38
  }
39
39
  catch (error) {
@@ -42,9 +42,9 @@ export const schemaApi = api.injectEndpoints({
42
42
  },
43
43
  }),
44
44
  getSchema: builder.query({
45
- queryFn: async ({ path }, { signal }) => {
45
+ queryFn: async ({ path, database }, { signal }) => {
46
46
  try {
47
- const data = await window.api.getSchema({ path }, { signal });
47
+ const data = await window.api.getSchema({ path, database }, { signal });
48
48
  return { data: data ? { [path]: data, ...getSchemaChildren(data) } : {} };
49
49
  }
50
50
  catch (error) {
@@ -52,9 +52,8 @@ export const schemaApi = api.injectEndpoints({
52
52
  }
53
53
  },
54
54
  keepUnusedDataFor: Infinity,
55
- serializeQueryArgs: ({ queryArgs: { path } }) => {
56
- const parts = path.split('/');
57
- return { path: parts[0] || parts[1] };
55
+ serializeQueryArgs: ({ queryArgs: { database } }) => {
56
+ return { database };
58
57
  },
59
58
  merge: (existing, incoming, { arg: { path } }) => {
60
59
  const { [path]: data, ...children } = incoming;
@@ -81,20 +80,20 @@ function getSchemaChildren(data) {
81
80
  }
82
81
  return children;
83
82
  }
84
- const getSchemaSelector = createSelector((path) => path, (path) => schemaApi.endpoints.getSchema.select({ path }));
85
- const selectGetSchema = createSelector((state) => state, (_state, path) => path, (_state, path) => getSchemaSelector(path), (state, path, selectTabletsInfo) => { var _a; return (_a = selectTabletsInfo(state).data) === null || _a === void 0 ? void 0 : _a[path]; });
86
- const selectSchemaChildren = (state, path) => { var _a, _b; return (_b = (_a = selectGetSchema(state, path)) === null || _a === void 0 ? void 0 : _a.PathDescription) === null || _b === void 0 ? void 0 : _b.Children; };
83
+ const getSchemaSelector = createSelector((path) => path, (_path, database) => database, (path, database) => schemaApi.endpoints.getSchema.select({ path, database }));
84
+ const selectGetSchema = createSelector((state) => state, (_state, path) => path, (_state, path, database) => getSchemaSelector(path, database), (state, path, selectTabletsInfo) => { var _a; return (_a = selectTabletsInfo(state).data) === null || _a === void 0 ? void 0 : _a[path]; });
85
+ const selectSchemaChildren = (state, path, database) => { var _a, _b; return (_b = (_a = selectGetSchema(state, path, database)) === null || _a === void 0 ? void 0 : _a.PathDescription) === null || _b === void 0 ? void 0 : _b.Children; };
87
86
  export const selectSchemaMergedChildrenPaths = createSelector([
88
87
  (_, path) => path,
89
88
  (_, _path, type) => type,
90
- selectSchemaChildren,
89
+ (state, path, _type, database) => selectSchemaChildren(state, path, database),
91
90
  ], (path, type, children) => {
92
91
  return isEntityWithMergedImplementation(type)
93
92
  ? children === null || children === void 0 ? void 0 : children.map(({ Name }) => path + '/' + Name)
94
93
  : undefined;
95
94
  });
96
- export function useGetSchemaQuery({ path }) {
97
- const { currentData, isFetching, error, refetch } = schemaApi.useGetSchemaQuery({ path });
95
+ export function useGetSchemaQuery({ path, database }) {
96
+ const { currentData, isFetching, error, refetch } = schemaApi.useGetSchemaQuery({ path, database });
98
97
  const data = currentData === null || currentData === void 0 ? void 0 : currentData[path];
99
98
  const isLoading = isFetching && data === undefined;
100
99
  const shouldLoad = !isLoading && ((!data && !error) || (data === null || data === void 0 ? void 0 : data.partial));
@@ -1,8 +1,10 @@
1
1
  export declare const schemaAclApi: import("@reduxjs/toolkit/query").Api<import("@reduxjs/toolkit/query").BaseQueryFn<void, typeof import("../api")._NEVER, unknown, {}>, {
2
2
  getSchemaAcl: import("@reduxjs/toolkit/query").QueryDefinition<{
3
3
  path: string;
4
- }, import("@reduxjs/toolkit/query").BaseQueryFn<void, typeof import("../api")._NEVER, unknown, {}>, "All", {
4
+ database: string;
5
+ }, import("@reduxjs/toolkit/query").BaseQueryFn<void, typeof import("../api")._NEVER, unknown, {}>, "All" | "PDiskData", {
5
6
  acl: import("../../../types/api/acl").TACE[] | undefined;
7
+ effectiveAcl: import("../../../types/api/acl").TACE[] | undefined;
6
8
  owner: string | undefined;
7
9
  } | undefined, "api">;
8
- }, "api", "All", typeof import("@reduxjs/toolkit/query").coreModuleName | typeof import("@reduxjs/toolkit/query/react").reactHooksModuleName>;
10
+ }, "api", "All" | "PDiskData", typeof import("@reduxjs/toolkit/query").coreModuleName | typeof import("@reduxjs/toolkit/query/react").reactHooksModuleName>;
@@ -2,10 +2,16 @@ import { api } from '../api';
2
2
  export const schemaAclApi = api.injectEndpoints({
3
3
  endpoints: (build) => ({
4
4
  getSchemaAcl: build.query({
5
- queryFn: async ({ path }, { signal }) => {
5
+ queryFn: async ({ path, database }, { signal }) => {
6
6
  try {
7
- const data = await window.api.getSchemaAcl({ path }, { signal });
8
- return { data: { acl: data.Common.ACL, owner: data.Common.Owner } };
7
+ const data = await window.api.getSchemaAcl({ path, database }, { signal });
8
+ return {
9
+ data: {
10
+ acl: data.Common.ACL,
11
+ effectiveAcl: data.Common.EffectiveACL,
12
+ owner: data.Common.Owner,
13
+ },
14
+ };
9
15
  }
10
16
  catch (error) {
11
17
  return { error };
@@ -13,5 +13,5 @@ interface SendShardQueryParams {
13
13
  filters?: ShardsWorkloadFilters;
14
14
  }
15
15
  export declare const shardApi: import("@reduxjs/toolkit/query").Api<import("@reduxjs/toolkit/query").BaseQueryFn<void, typeof import("../api")._NEVER, unknown, {}>, {
16
- sendShardQuery: import("@reduxjs/toolkit/query").QueryDefinition<SendShardQueryParams, import("@reduxjs/toolkit/query").BaseQueryFn<void, typeof import("../api")._NEVER, unknown, {}>, "All", import("../../../types/store/query").IQueryResult | undefined, "api">;
17
- }, "api", "All", typeof import("@reduxjs/toolkit/query").coreModuleName | typeof import("@reduxjs/toolkit/query/react").reactHooksModuleName>;
16
+ sendShardQuery: import("@reduxjs/toolkit/query").QueryDefinition<SendShardQueryParams, import("@reduxjs/toolkit/query").BaseQueryFn<void, typeof import("../api")._NEVER, unknown, {}>, "All" | "PDiskData", import("../../../types/store/query").IQueryResult | undefined, "api">;
17
+ }, "api", "All" | "PDiskData", typeof import("@reduxjs/toolkit/query").coreModuleName | typeof import("@reduxjs/toolkit/query/react").reactHooksModuleName>;
@@ -1,3 +1,4 @@
1
+ import { dateTimeParse, isLikeRelative } from '@gravity-ui/date-utils';
1
2
  import { createSlice } from '@reduxjs/toolkit';
2
3
  import { isQueryErrorResponse, parseQueryAPIExecuteResponse } from '../../../utils/query';
3
4
  import { api } from '../api';
@@ -7,18 +8,21 @@ function formatSortOrder({ columnId, order }) {
7
8
  return `${columnId} ${order}`;
8
9
  }
9
10
  function getFiltersConditions(filters) {
11
+ var _a, _b;
10
12
  const conditions = [];
11
- if ((filters === null || filters === void 0 ? void 0 : filters.from) && (filters === null || filters === void 0 ? void 0 : filters.to) && filters.from > filters.to) {
13
+ const to = (_a = dateTimeParse(Number(filters === null || filters === void 0 ? void 0 : filters.to) || (filters === null || filters === void 0 ? void 0 : filters.to))) === null || _a === void 0 ? void 0 : _a.valueOf();
14
+ const from = (_b = dateTimeParse(Number(filters === null || filters === void 0 ? void 0 : filters.from) || (filters === null || filters === void 0 ? void 0 : filters.from))) === null || _b === void 0 ? void 0 : _b.valueOf();
15
+ if (from && to && from > to) {
12
16
  throw new Error('Invalid date range');
13
17
  }
14
- if (filters === null || filters === void 0 ? void 0 : filters.from) {
18
+ if (from) {
15
19
  // matching `from` & `to` is an edge case
16
20
  // other cases should not include the starting point, since intervals are stored using the ending time
17
- const gt = filters.to === filters.from ? '>=' : '>';
18
- conditions.push(`IntervalEnd ${gt} Timestamp('${new Date(filters.from).toISOString()}')`);
21
+ const gt = to === from ? '>=' : '>';
22
+ conditions.push(`IntervalEnd ${gt} Timestamp('${new Date(from).toISOString()}')`);
19
23
  }
20
- if (filters === null || filters === void 0 ? void 0 : filters.to) {
21
- conditions.push(`IntervalEnd <= Timestamp('${new Date(filters.to).toISOString()}')`);
24
+ if (to) {
25
+ conditions.push(`IntervalEnd <= Timestamp('${new Date(to).toISOString()}')`);
22
26
  }
23
27
  return conditions.join(' AND ');
24
28
  }
@@ -94,6 +98,7 @@ export const shardApi = api.injectEndpoints({
94
98
  action: queryAction,
95
99
  }, {
96
100
  signal,
101
+ withRetries: true,
97
102
  });
98
103
  if (isQueryErrorResponse(response)) {
99
104
  return { error: response };
@@ -106,6 +111,17 @@ export const shardApi = api.injectEndpoints({
106
111
  }
107
112
  },
108
113
  providesTags: ['All'],
114
+ forceRefetch: ({ currentArg }) => {
115
+ var _a, _b, _c;
116
+ if (((_a = currentArg === null || currentArg === void 0 ? void 0 : currentArg.filters) === null || _a === void 0 ? void 0 : _a.mode) === 'immediate') {
117
+ return true;
118
+ }
119
+ if (isLikeRelative((_b = currentArg === null || currentArg === void 0 ? void 0 : currentArg.filters) === null || _b === void 0 ? void 0 : _b.from) ||
120
+ isLikeRelative((_c = currentArg === null || currentArg === void 0 ? void 0 : currentArg.filters) === null || _c === void 0 ? void 0 : _c.to)) {
121
+ return true;
122
+ }
123
+ return false;
124
+ },
109
125
  }),
110
126
  }),
111
127
  overrideExisting: 'throw',
@@ -4,9 +4,9 @@ export declare enum EShardsWorkloadMode {
4
4
  }
5
5
  export interface ShardsWorkloadFilters {
6
6
  /** ms from epoch */
7
- from?: number;
7
+ from?: string;
8
8
  /** ms from epoch */
9
- to?: number;
9
+ to?: string;
10
10
  mode?: EShardsWorkloadMode;
11
11
  }
12
12
  export interface ShardsWorkloadRootStateSlice {
@@ -1,6 +1,6 @@
1
1
  import type { NodesApiRequestParams } from '../nodes/types';
2
2
  import type { StorageApiRequestParams } from './types';
3
3
  export declare const storageApi: import("@reduxjs/toolkit/query").Api<import("@reduxjs/toolkit/query").BaseQueryFn<void, typeof import("../api")._NEVER, unknown, {}>, {
4
- getStorageNodesInfo: import("@reduxjs/toolkit/query").QueryDefinition<Omit<NodesApiRequestParams, "type">, import("@reduxjs/toolkit/query").BaseQueryFn<void, typeof import("../api")._NEVER, unknown, {}>, "All", import("./types").PreparedStorageResponse | undefined, "api">;
5
- getStorageGroupsInfo: import("@reduxjs/toolkit/query").QueryDefinition<StorageApiRequestParams, import("@reduxjs/toolkit/query").BaseQueryFn<void, typeof import("../api")._NEVER, unknown, {}>, "All", import("./types").PreparedStorageResponse | undefined, "api">;
6
- }, "api", "All", typeof import("@reduxjs/toolkit/query").coreModuleName | typeof import("@reduxjs/toolkit/query/react").reactHooksModuleName>;
4
+ getStorageNodesInfo: import("@reduxjs/toolkit/query").QueryDefinition<Omit<NodesApiRequestParams, "type">, import("@reduxjs/toolkit/query").BaseQueryFn<void, typeof import("../api")._NEVER, unknown, {}>, "All" | "PDiskData", import("./types").PreparedStorageResponse | undefined, "api">;
5
+ getStorageGroupsInfo: import("@reduxjs/toolkit/query").QueryDefinition<StorageApiRequestParams, import("@reduxjs/toolkit/query").BaseQueryFn<void, typeof import("../api")._NEVER, unknown, {}>, "All" | "PDiskData", import("./types").PreparedStorageResponse | undefined, "api">;
6
+ }, "api", "All" | "PDiskData", typeof import("@reduxjs/toolkit/query").coreModuleName | typeof import("@reduxjs/toolkit/query/react").reactHooksModuleName>;
@@ -3,12 +3,12 @@ import type { ITabletPreparedHistoryItem } from '../../types/store/tablet';
3
3
  export declare const tabletApi: import("@reduxjs/toolkit/query").Api<import("@reduxjs/toolkit/query").BaseQueryFn<void, typeof import("./api")._NEVER, unknown, {}>, {
4
4
  getTablet: import("@reduxjs/toolkit/query").QueryDefinition<{
5
5
  id: string;
6
- }, import("@reduxjs/toolkit/query").BaseQueryFn<void, typeof import("./api")._NEVER, unknown, {}>, "All", {
6
+ }, import("@reduxjs/toolkit/query").BaseQueryFn<void, typeof import("./api")._NEVER, unknown, {}>, "All" | "PDiskData", {
7
7
  id: string | undefined;
8
8
  data: import("../../types/api/tablet").TTabletStateInfo;
9
9
  history: ITabletPreparedHistoryItem[];
10
10
  } | undefined, "api">;
11
11
  getTabletDescribe: import("@reduxjs/toolkit/query").QueryDefinition<{
12
12
  tenantId: TDomainKey;
13
- }, import("@reduxjs/toolkit/query").BaseQueryFn<void, typeof import("./api")._NEVER, unknown, {}>, "All", string | undefined, "api">;
14
- }, "api", "All", typeof import("@reduxjs/toolkit/query").coreModuleName | typeof import("@reduxjs/toolkit/query/react").reactHooksModuleName>;
13
+ }, import("@reduxjs/toolkit/query").BaseQueryFn<void, typeof import("./api")._NEVER, unknown, {}>, "All" | "PDiskData", string | undefined, "api">;
14
+ }, "api", "All" | "PDiskData", typeof import("@reduxjs/toolkit/query").coreModuleName | typeof import("@reduxjs/toolkit/query/react").reactHooksModuleName>;