ydb-embedded-ui 20.3.0 → 20.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (167) hide show
  1. package/dist/components/Drawer/Drawer.d.ts +2 -1
  2. package/dist/components/Drawer/Drawer.js +4 -4
  3. package/dist/components/Drawer/Drawer.js.map +1 -1
  4. package/dist/components/EntityStatus/EntityStatus.d.ts +4 -1
  5. package/dist/components/EntityStatus/EntityStatus.js +2 -2
  6. package/dist/components/EntityStatus/EntityStatus.js.map +1 -1
  7. package/dist/components/InfoViewer/formatters/pqGroup.d.ts +5 -1
  8. package/dist/components/InfoViewer/formatters/pqGroup.js +24 -2
  9. package/dist/components/InfoViewer/formatters/pqGroup.js.map +1 -1
  10. package/dist/components/InfoViewer/i18n/en.json +8 -1
  11. package/dist/components/InfoViewer/i18n/index.d.ts +1 -1
  12. package/dist/components/PDiskInfo/i18n/index.d.ts +1 -1
  13. package/dist/components/TenantNameWrapper/utils.d.ts +1 -1
  14. package/dist/components/TenantNameWrapper/utils.js.map +1 -1
  15. package/dist/containers/App/Content.js +9 -2
  16. package/dist/containers/App/Content.js.map +1 -1
  17. package/dist/containers/App/clusterRouteGuard.d.ts +5 -0
  18. package/dist/containers/App/clusterRouteGuard.js +13 -0
  19. package/dist/containers/App/clusterRouteGuard.js.map +1 -0
  20. package/dist/containers/Cluster/Cluster.js +1 -1
  21. package/dist/containers/Cluster/Cluster.js.map +1 -1
  22. package/dist/containers/Cluster/ClusterDrawerHealthcheck.d.ts +8 -0
  23. package/dist/containers/Cluster/ClusterDrawerHealthcheck.js +71 -9
  24. package/dist/containers/Cluster/ClusterDrawerHealthcheck.js.map +1 -1
  25. package/dist/containers/Cluster/ClusterInfo/ClusterInfo.d.ts +2 -1
  26. package/dist/containers/Cluster/ClusterInfo/ClusterInfo.js +2 -2
  27. package/dist/containers/Cluster/ClusterInfo/ClusterInfo.js.map +1 -1
  28. package/dist/containers/Cluster/ClusterOverview/ClusterOverview.d.ts +1 -0
  29. package/dist/containers/Cluster/ClusterOverview/ClusterOverview.js.map +1 -1
  30. package/dist/containers/Cluster/ClusterOverview/components/BridgeInfoTable.d.ts +2 -0
  31. package/dist/containers/Cluster/ClusterOverview/components/BridgeInfoTable.js +54 -103
  32. package/dist/containers/Cluster/ClusterOverview/components/BridgeInfoTable.js.map +1 -1
  33. package/dist/containers/Cluster/ClusterOverview/components/BridgeInfoTable.scss +24 -89
  34. package/dist/containers/Cluster/ClusterOverview/components/bridgePileHealthcheck.d.ts +13 -0
  35. package/dist/containers/Cluster/ClusterOverview/components/bridgePileHealthcheck.js +94 -0
  36. package/dist/containers/Cluster/ClusterOverview/components/bridgePileHealthcheck.js.map +1 -0
  37. package/dist/containers/Cluster/i18n/en.json +8 -5
  38. package/dist/containers/Cluster/i18n/index.d.ts +1 -1
  39. package/dist/containers/Clusters/constants.d.ts +1 -1
  40. package/dist/containers/Header/DatabaseRightControls.d.ts +4 -2
  41. package/dist/containers/Header/DatabaseRightControls.js +2 -2
  42. package/dist/containers/Header/DatabaseRightControls.js.map +1 -1
  43. package/dist/containers/Header/Header.js +2 -2
  44. package/dist/containers/Header/Header.js.map +1 -1
  45. package/dist/containers/Header/HeaderActionsMenu.d.ts +4 -2
  46. package/dist/containers/Header/HeaderActionsMenu.js +19 -2
  47. package/dist/containers/Header/HeaderActionsMenu.js.map +1 -1
  48. package/dist/containers/Header/HeaderRightControls.d.ts +4 -2
  49. package/dist/containers/Header/HeaderRightControls.js +2 -2
  50. package/dist/containers/Header/HeaderRightControls.js.map +1 -1
  51. package/dist/containers/Header/hooks/useClusterData.d.ts +1 -0
  52. package/dist/containers/Header/hooks/useHeaderData.d.ts +1 -0
  53. package/dist/containers/Header/hooks/useHeaderData.js +1 -0
  54. package/dist/containers/Header/hooks/useHeaderData.js.map +1 -1
  55. package/dist/containers/Header/hooks/useSharedDatabasePath.d.ts +10 -0
  56. package/dist/containers/Header/hooks/useSharedDatabasePath.js +102 -0
  57. package/dist/containers/Header/hooks/useSharedDatabasePath.js.map +1 -0
  58. package/dist/containers/Header/i18n/en.json +1 -0
  59. package/dist/containers/Header/i18n/index.d.ts +1 -1
  60. package/dist/containers/Operations/constants.d.ts +1 -1
  61. package/dist/containers/Storage/PaginatedStorageGroupsTable/columns/i18n/index.d.ts +1 -1
  62. package/dist/containers/Tablets/Tablets.js +3 -3
  63. package/dist/containers/Tablets/Tablets.js.map +1 -1
  64. package/dist/containers/Tablets/TabletsTable.js +17 -27
  65. package/dist/containers/Tablets/TabletsTable.js.map +1 -1
  66. package/dist/containers/Tablets/i18n/en.json +3 -0
  67. package/dist/containers/Tablets/i18n/index.d.ts +1 -1
  68. package/dist/containers/Tablets/useTabletQueryParams.d.ts +8 -0
  69. package/dist/containers/Tablets/useTabletQueryParams.js +40 -0
  70. package/dist/containers/Tablets/useTabletQueryParams.js.map +1 -0
  71. package/dist/containers/Tablets/utils.d.ts +11 -0
  72. package/dist/containers/Tablets/utils.js +23 -0
  73. package/dist/containers/Tablets/utils.js.map +1 -0
  74. package/dist/containers/Tenant/Diagnostics/Overview/TableInfo/i18n/index.d.ts +1 -1
  75. package/dist/containers/Tenant/Diagnostics/Overview/utils/prepareTopicSchemaInfo.js +17 -3
  76. package/dist/containers/Tenant/Diagnostics/Overview/utils/prepareTopicSchemaInfo.js.map +1 -1
  77. package/dist/containers/Tenant/Healthcheck/Healthcheck.d.ts +6 -1
  78. package/dist/containers/Tenant/Healthcheck/Healthcheck.js +5 -5
  79. package/dist/containers/Tenant/Healthcheck/Healthcheck.js.map +1 -1
  80. package/dist/containers/Tenant/Healthcheck/components/HealthcheckDrawer.d.ts +2 -1
  81. package/dist/containers/Tenant/Healthcheck/components/HealthcheckDrawer.js +2 -2
  82. package/dist/containers/Tenant/Healthcheck/components/HealthcheckDrawer.js.map +1 -1
  83. package/dist/containers/Tenant/Healthcheck/components/HealthcheckIssue.d.ts +5 -1
  84. package/dist/containers/Tenant/Healthcheck/components/HealthcheckIssue.js +5 -3
  85. package/dist/containers/Tenant/Healthcheck/components/HealthcheckIssue.js.map +1 -1
  86. package/dist/containers/Tenant/Healthcheck/components/HealthcheckIssueDetails/ComputeLocation.d.ts +1 -1
  87. package/dist/containers/Tenant/Healthcheck/components/HealthcheckIssueDetails/ComputeLocation.js +11 -2
  88. package/dist/containers/Tenant/Healthcheck/components/HealthcheckIssueDetails/ComputeLocation.js.map +1 -1
  89. package/dist/containers/Tenant/Healthcheck/components/HealthcheckIssueDetails/NodeInfo.js +2 -0
  90. package/dist/containers/Tenant/Healthcheck/components/HealthcheckIssueDetails/NodeInfo.js.map +1 -1
  91. package/dist/containers/Tenant/Healthcheck/components/HealthcheckIssueDetails/StorageLocation.js +4 -1
  92. package/dist/containers/Tenant/Healthcheck/components/HealthcheckIssueDetails/StorageLocation.js.map +1 -1
  93. package/dist/containers/Tenant/Healthcheck/components/HealthcheckIssues.d.ts +5 -1
  94. package/dist/containers/Tenant/Healthcheck/components/HealthcheckIssues.js +2 -2
  95. package/dist/containers/Tenant/Healthcheck/components/HealthcheckIssues.js.map +1 -1
  96. package/dist/containers/Tenant/Healthcheck/i18n/en.json +2 -1
  97. package/dist/containers/Tenant/Healthcheck/i18n/index.d.ts +1 -1
  98. package/dist/containers/Tenant/Query/SavedQueries/SavedQueries.scss +2 -0
  99. package/dist/containers/VDiskPage/i18n/index.d.ts +1 -1
  100. package/dist/routes.d.ts +4 -1
  101. package/dist/routes.js +3 -2
  102. package/dist/routes.js.map +1 -1
  103. package/dist/services/api/viewer.d.ts +3 -1
  104. package/dist/services/api/viewer.js +3 -2
  105. package/dist/services/api/viewer.js.map +1 -1
  106. package/dist/store/reducers/cluster/cluster.d.ts +2 -1
  107. package/dist/store/reducers/cluster/cluster.js +1 -0
  108. package/dist/store/reducers/cluster/cluster.js.map +1 -1
  109. package/dist/store/reducers/healthcheckInfo/types.d.ts +1 -0
  110. package/dist/store/reducers/healthcheckInfo/utils.d.ts +1 -0
  111. package/dist/store/reducers/healthcheckInfo/utils.js +43 -9
  112. package/dist/store/reducers/healthcheckInfo/utils.js.map +1 -1
  113. package/dist/store/reducers/tenants/tenants.d.ts +10 -1
  114. package/dist/store/reducers/tenants/tenants.js +33 -0
  115. package/dist/store/reducers/tenants/tenants.js.map +1 -1
  116. package/dist/store/reducers/tenants/types.d.ts +4 -0
  117. package/dist/types/api/healthcheck.d.ts +7 -0
  118. package/dist/types/api/schema/persQueueGroup.d.ts +16 -0
  119. package/dist/types/api/schema/persQueueGroup.js +7 -0
  120. package/dist/types/api/schema/persQueueGroup.js.map +1 -1
  121. package/package.json +2 -2
  122. package/src/components/Drawer/Drawer.tsx +6 -0
  123. package/src/components/EntityStatus/EntityStatus.tsx +9 -1
  124. package/src/components/InfoViewer/formatters/pqGroup.ts +30 -2
  125. package/src/components/InfoViewer/i18n/en.json +8 -1
  126. package/src/components/TenantNameWrapper/utils.ts +1 -1
  127. package/src/containers/App/Content.tsx +9 -1
  128. package/src/containers/App/clusterRouteGuard.ts +24 -0
  129. package/src/containers/Cluster/Cluster.tsx +1 -0
  130. package/src/containers/Cluster/ClusterDrawerHealthcheck.tsx +112 -13
  131. package/src/containers/Cluster/ClusterInfo/ClusterInfo.tsx +7 -1
  132. package/src/containers/Cluster/ClusterOverview/ClusterOverview.tsx +1 -0
  133. package/src/containers/Cluster/ClusterOverview/components/BridgeInfoTable.scss +24 -89
  134. package/src/containers/Cluster/ClusterOverview/components/BridgeInfoTable.tsx +156 -200
  135. package/src/containers/Cluster/ClusterOverview/components/bridgePileHealthcheck.ts +142 -0
  136. package/src/containers/Cluster/i18n/en.json +8 -5
  137. package/src/containers/Header/DatabaseRightControls.tsx +7 -1
  138. package/src/containers/Header/Header.tsx +3 -0
  139. package/src/containers/Header/HeaderActionsMenu.tsx +24 -2
  140. package/src/containers/Header/HeaderRightControls.tsx +7 -1
  141. package/src/containers/Header/hooks/useHeaderData.ts +1 -0
  142. package/src/containers/Header/hooks/useSharedDatabasePath.ts +195 -0
  143. package/src/containers/Header/i18n/en.json +1 -0
  144. package/src/containers/Tablets/Tablets.tsx +3 -3
  145. package/src/containers/Tablets/TabletsTable.tsx +37 -31
  146. package/src/containers/Tablets/i18n/en.json +3 -0
  147. package/src/containers/Tablets/useTabletQueryParams.ts +54 -0
  148. package/src/containers/Tablets/utils.ts +43 -0
  149. package/src/containers/Tenant/Diagnostics/Overview/utils/prepareTopicSchemaInfo.ts +23 -2
  150. package/src/containers/Tenant/Healthcheck/Healthcheck.tsx +37 -4
  151. package/src/containers/Tenant/Healthcheck/components/HealthcheckDrawer.tsx +3 -0
  152. package/src/containers/Tenant/Healthcheck/components/HealthcheckIssue.tsx +17 -4
  153. package/src/containers/Tenant/Healthcheck/components/HealthcheckIssueDetails/ComputeLocation.tsx +13 -3
  154. package/src/containers/Tenant/Healthcheck/components/HealthcheckIssueDetails/NodeInfo.tsx +1 -0
  155. package/src/containers/Tenant/Healthcheck/components/HealthcheckIssueDetails/StorageLocation.tsx +3 -1
  156. package/src/containers/Tenant/Healthcheck/components/HealthcheckIssues.tsx +15 -2
  157. package/src/containers/Tenant/Healthcheck/i18n/en.json +2 -1
  158. package/src/containers/Tenant/Query/SavedQueries/SavedQueries.scss +2 -0
  159. package/src/routes.ts +8 -2
  160. package/src/services/api/viewer.ts +10 -2
  161. package/src/store/reducers/cluster/cluster.ts +2 -1
  162. package/src/store/reducers/healthcheckInfo/types.ts +1 -0
  163. package/src/store/reducers/healthcheckInfo/utils.ts +50 -10
  164. package/src/store/reducers/tenants/tenants.ts +55 -1
  165. package/src/store/reducers/tenants/types.ts +5 -0
  166. package/src/types/api/healthcheck.ts +8 -0
  167. package/src/types/api/schema/persQueueGroup.ts +19 -0
@@ -24,16 +24,19 @@
24
24
  "value_bridge-state-suspended": "Suspended",
25
25
  "value_bridge-state-disconnected": "Disconnected",
26
26
  "value_bridge-state-unspecified": "Unspecified",
27
+ "label_you-are-here": "You are here",
28
+ "label_bridge-pile-health-status-prefix": "Health status for pile {{pileName}}:",
27
29
  "value_bridge-group-status-unknown": "Unknown",
28
30
  "value_bridge-group-status-full": "Full",
29
31
  "value_bridge-group-status-partial": "Partial",
30
32
  "value_bridge-group-status-degraded": "Degraded",
31
33
  "value_bridge-group-status-disintegrated": "Disintegrated",
32
- "context_bridge-pile-state-promoted": "Pile that is being promoted from SYNCHRONIZED\nto PRIMARY. It stays in this state during the graceful\nswitchover. After completion, YDB will automatically\nset it to PRIMARY.",
33
- "context_bridge-pile-state-synchronised": "Secondary pile where all storage groups are fully\nsynchronized with PRIMARY. In normal operation,\nthe pair works as PRIMARY + SYNCHRONISED.",
34
- "context_bridge-pile-state-not-synchronised": "Storage groups of this pile are not yet fully synchronized\nwith PRIMARY. After synchronization is complete, YDB\nwill automatically transition the pile to SYNCHRONIZED.",
35
- "context_bridge-pile-state-suspended": "Pile is being gracefully transitioned to DISCONNECTED\nstate. It remains in this state during the graceful shutdown.\nAfter completion, YDB will automatically move it\nto DISCONNECTED.",
36
- "context_bridge-pile-state-disconnected": "Pile is disconnected from PRIMARY and does\nnot participate in operation execution.",
34
+ "context_bridge-pile-state-promoted": "Pile that is being promoted from Synchronized to\u00a0Primary",
35
+ "context_bridge-pile-state-primary": "Primary pile that currently participates in operation execution.",
36
+ "context_bridge-pile-state-synchronised": "Secondary pile where all storage groups are fully synchronized with Primary",
37
+ "context_bridge-pile-state-not-synchronised": "Storage groups are not yet fully synchronized with Primary",
38
+ "context_bridge-pile-state-suspended": "Pile is being transitioned to\u00a0Disconnected state",
39
+ "context_bridge-pile-state-disconnected": "Pile is disconnected from Primary and does not participate in operation execution",
37
40
  "context_group-statuses": "Storage group statuses",
38
41
  "context_group-statuses-empty": "No storage group status data",
39
42
  "context_cpu": "CPU load",
@@ -1,2 +1,2 @@
1
- declare const _default: (key: "title_allocated" | "title_available-one" | "title_available-other" | "context_storage-group-allocation-progress" | "title_cpu" | "title_storage-groups" | "title_memory" | "title_network" | "title_links" | "title_details" | "title_bridge" | "label_overview" | "field_state" | "field_nodes" | "value_nodes" | "value_bridge-state-primary" | "value_bridge-state-promoted" | "value_bridge-state-synchronised" | "value_bridge-state-not-synchronised" | "value_bridge-state-suspended" | "value_bridge-state-disconnected" | "value_bridge-state-unspecified" | "value_bridge-group-status-unknown" | "value_bridge-group-status-full" | "value_bridge-group-status-partial" | "value_bridge-group-status-degraded" | "value_bridge-group-status-disintegrated" | "context_bridge-pile-state-promoted" | "context_bridge-pile-state-synchronised" | "context_bridge-pile-state-not-synchronised" | "context_bridge-pile-state-suspended" | "context_bridge-pile-state-disconnected" | "context_group-statuses" | "context_group-statuses-empty" | "context_cpu" | "context_memory" | "title_storage-by-type" | "title_storage" | "context_network" | "context_cpu-description" | "context_memory-description" | "context_storage-by-type-description" | "context_storage-total-description" | "context_network-description" | "tab_databases" | "tab_nodes" | "tab_storage" | "tab_network" | "tab_versions" | "tab_tablets" | "tab_events" | "tab_configs" | "title_healthcheck-dashboard" | "action_download-healthcheck", params?: import("@gravity-ui/i18n").Params) => string;
1
+ declare const _default: (key: "title_allocated" | "title_available-one" | "title_available-other" | "context_storage-group-allocation-progress" | "title_cpu" | "title_storage-groups" | "title_memory" | "title_network" | "title_links" | "title_details" | "title_bridge" | "label_overview" | "field_state" | "field_nodes" | "value_nodes" | "value_bridge-state-primary" | "value_bridge-state-promoted" | "value_bridge-state-synchronised" | "value_bridge-state-not-synchronised" | "value_bridge-state-suspended" | "value_bridge-state-disconnected" | "value_bridge-state-unspecified" | "label_you-are-here" | "label_bridge-pile-health-status-prefix" | "value_bridge-group-status-unknown" | "value_bridge-group-status-full" | "value_bridge-group-status-partial" | "value_bridge-group-status-degraded" | "value_bridge-group-status-disintegrated" | "context_bridge-pile-state-promoted" | "context_bridge-pile-state-primary" | "context_bridge-pile-state-synchronised" | "context_bridge-pile-state-not-synchronised" | "context_bridge-pile-state-suspended" | "context_bridge-pile-state-disconnected" | "context_group-statuses" | "context_group-statuses-empty" | "context_cpu" | "context_memory" | "title_storage-by-type" | "title_storage" | "context_network" | "context_cpu-description" | "context_memory-description" | "context_storage-by-type-description" | "context_storage-total-description" | "context_network-description" | "tab_databases" | "tab_nodes" | "tab_storage" | "tab_network" | "tab_versions" | "tab_tablets" | "tab_events" | "tab_configs" | "title_healthcheck-dashboard" | "action_download-healthcheck", params?: import("@gravity-ui/i18n").Params) => string;
2
2
  export default _default;
@@ -16,7 +16,7 @@ export declare const COLUMNS_NAMES: {
16
16
  readonly TENANTS: "tenants";
17
17
  readonly DESCRIPTION: "description";
18
18
  };
19
- export declare const DEFAULT_COLUMNS: ("storage" | "hosts" | "versions" | "title" | "status" | "service" | "nodes" | "tenants" | "load")[];
19
+ export declare const DEFAULT_COLUMNS: ("status" | "storage" | "hosts" | "versions" | "title" | "service" | "nodes" | "tenants" | "load")[];
20
20
  export declare const COLUMNS_TITLES: {
21
21
  readonly title: string;
22
22
  readonly versions: string;
@@ -1,13 +1,15 @@
1
1
  import type { PreparedTenant } from '../../store/reducers/tenants/types';
2
- import type { ClusterLinkWithTitle } from '../../types/additionalProps';
2
+ import type { AdditionalTenantsProps, ClusterLinkWithTitle } from '../../types/additionalProps';
3
3
  interface DatabaseRightControlsProps {
4
4
  database: string;
5
5
  clusterName?: string;
6
6
  databaseData?: PreparedTenant;
7
7
  isDatabaseDataLoading: boolean;
8
8
  isV2NavigationEnabled: boolean;
9
+ isViewerUser?: boolean;
10
+ prepareTenantBackend?: AdditionalTenantsProps['prepareTenantBackend'];
9
11
  showDeveloperUI: boolean;
10
12
  databaseLinks: ClusterLinkWithTitle[];
11
13
  }
12
- export declare function DatabaseRightControls({ database, clusterName, databaseData, isDatabaseDataLoading, isV2NavigationEnabled, showDeveloperUI, databaseLinks, }: DatabaseRightControlsProps): import("react/jsx-runtime").JSX.Element;
14
+ export declare function DatabaseRightControls({ database, clusterName, databaseData, isDatabaseDataLoading, isV2NavigationEnabled, isViewerUser, prepareTenantBackend, showDeveloperUI, databaseLinks, }: DatabaseRightControlsProps): import("react/jsx-runtime").JSX.Element;
13
15
  export {};
@@ -8,10 +8,10 @@ import { DeveloperUIControl } from './GlobalRightControls';
8
8
  import { DBHeaderActionsMenu } from './HeaderActionsMenu';
9
9
  import { MonitoringControl } from './MonitoringControl';
10
10
  import { headerKeyset } from './i18n';
11
- export function DatabaseRightControls({ database, clusterName, databaseData, isDatabaseDataLoading, isV2NavigationEnabled, showDeveloperUI, databaseLinks, }) {
11
+ export function DatabaseRightControls({ database, clusterName, databaseData, isDatabaseDataLoading, isV2NavigationEnabled, isViewerUser, prepareTenantBackend, showDeveloperUI, databaseLinks, }) {
12
12
  const monitoringDatabaseLink = React.useMemo(() => databaseLinks.find((link) => link.context === CLUSTER_LINK_CONTEXT.MONITORING), [databaseLinks]);
13
13
  const actionDatabaseLinks = React.useMemo(() => databaseLinks.filter((link) => link.context !== CLUSTER_LINK_CONTEXT.MONITORING), [databaseLinks]);
14
14
  const showLegacyConnect = !isV2NavigationEnabled;
15
- return (_jsxs(React.Fragment, { children: [monitoringDatabaseLink ? _jsx(MonitoringControl, { link: monitoringDatabaseLink }) : null, showLegacyConnect ? (_jsx(ActionTooltip, { title: headerKeyset('description_connect-to-db'), children: _jsxs(Button, { view: "flat", onClick: () => getConnectToDBDialog({ database }), children: [_jsx(Icon, { data: PlugConnection }), headerKeyset('title_connect')] }) })) : null, showDeveloperUI ? _jsx(DeveloperUIControl, {}) : null, _jsx(DBHeaderActionsMenu, { database: database, clusterName: clusterName, databaseData: databaseData, isDatabaseDataLoading: isDatabaseDataLoading, isV2NavigationEnabled: isV2NavigationEnabled, databaseLinks: actionDatabaseLinks })] }));
15
+ return (_jsxs(React.Fragment, { children: [monitoringDatabaseLink ? _jsx(MonitoringControl, { link: monitoringDatabaseLink }) : null, showLegacyConnect ? (_jsx(ActionTooltip, { title: headerKeyset('description_connect-to-db'), children: _jsxs(Button, { view: "flat", onClick: () => getConnectToDBDialog({ database }), children: [_jsx(Icon, { data: PlugConnection }), headerKeyset('title_connect')] }) })) : null, showDeveloperUI ? _jsx(DeveloperUIControl, {}) : null, _jsx(DBHeaderActionsMenu, { database: database, clusterName: clusterName, databaseData: databaseData, isDatabaseDataLoading: isDatabaseDataLoading, isV2NavigationEnabled: isV2NavigationEnabled, isViewerUser: isViewerUser, prepareTenantBackend: prepareTenantBackend, databaseLinks: actionDatabaseLinks })] }));
16
16
  }
17
17
  //# sourceMappingURL=DatabaseRightControls.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DatabaseRightControls.js","sourceRoot":"","sources":["../../../src/containers/Header/DatabaseRightControls.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAC,cAAc,EAAC,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAC,aAAa,EAAE,MAAM,EAAE,IAAI,EAAC,MAAM,mBAAmB,CAAC;AAE9D,OAAO,EAAC,oBAAoB,EAAC,MAAM,gDAAgD,CAAC;AAGpF,OAAO,EAAC,oBAAoB,EAAC,MAAM,+CAA+C,CAAC;AAEnF,OAAO,EAAC,kBAAkB,EAAC,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAC,mBAAmB,EAAC,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAC,iBAAiB,EAAC,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAC,YAAY,EAAC,MAAM,QAAQ,CAAC;AAYpC,MAAM,UAAU,qBAAqB,CAAC,EAClC,QAAQ,EACR,WAAW,EACX,YAAY,EACZ,qBAAqB,EACrB,qBAAqB,EACrB,eAAe,EACf,aAAa,GACY;IACzB,MAAM,sBAAsB,GAAG,KAAK,CAAC,OAAO,CACxC,GAAG,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,KAAK,oBAAoB,CAAC,UAAU,CAAC,EACpF,CAAC,aAAa,CAAC,CAClB,CAAC;IAEF,MAAM,mBAAmB,GAAG,KAAK,CAAC,OAAO,CACrC,GAAG,EAAE,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,KAAK,oBAAoB,CAAC,UAAU,CAAC,EACtF,CAAC,aAAa,CAAC,CAClB,CAAC;IAEF,MAAM,iBAAiB,GAAG,CAAC,qBAAqB,CAAC;IACjD,OAAO,CACH,MAAC,KAAK,CAAC,QAAQ,eACV,sBAAsB,CAAC,CAAC,CAAC,KAAC,iBAAiB,IAAC,IAAI,EAAE,sBAAsB,GAAI,CAAC,CAAC,CAAC,IAAI,EAEnF,iBAAiB,CAAC,CAAC,CAAC,CACjB,KAAC,aAAa,IAAC,KAAK,EAAE,YAAY,CAAC,2BAA2B,CAAC,YAC3D,MAAC,MAAM,IAAC,IAAI,EAAC,MAAM,EAAC,OAAO,EAAE,GAAG,EAAE,CAAC,oBAAoB,CAAC,EAAC,QAAQ,EAAC,CAAC,aAC/D,KAAC,IAAI,IAAC,IAAI,EAAE,cAAc,GAAI,EAC7B,YAAY,CAAC,eAAe,CAAC,IACzB,GACG,CACnB,CAAC,CAAC,CAAC,IAAI,EACP,eAAe,CAAC,CAAC,CAAC,KAAC,kBAAkB,KAAG,CAAC,CAAC,CAAC,IAAI,EAChD,KAAC,mBAAmB,IAChB,QAAQ,EAAE,QAAQ,EAClB,WAAW,EAAE,WAAW,EACxB,YAAY,EAAE,YAAY,EAC1B,qBAAqB,EAAE,qBAAqB,EAC5C,qBAAqB,EAAE,qBAAqB,EAC5C,aAAa,EAAE,mBAAmB,GACpC,IACW,CACpB,CAAC;AACN,CAAC"}
1
+ {"version":3,"file":"DatabaseRightControls.js","sourceRoot":"","sources":["../../../src/containers/Header/DatabaseRightControls.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAC,cAAc,EAAC,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAC,aAAa,EAAE,MAAM,EAAE,IAAI,EAAC,MAAM,mBAAmB,CAAC;AAE9D,OAAO,EAAC,oBAAoB,EAAC,MAAM,gDAAgD,CAAC;AAGpF,OAAO,EAAC,oBAAoB,EAAC,MAAM,+CAA+C,CAAC;AAEnF,OAAO,EAAC,kBAAkB,EAAC,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAC,mBAAmB,EAAC,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAC,iBAAiB,EAAC,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAC,YAAY,EAAC,MAAM,QAAQ,CAAC;AAcpC,MAAM,UAAU,qBAAqB,CAAC,EAClC,QAAQ,EACR,WAAW,EACX,YAAY,EACZ,qBAAqB,EACrB,qBAAqB,EACrB,YAAY,EACZ,oBAAoB,EACpB,eAAe,EACf,aAAa,GACY;IACzB,MAAM,sBAAsB,GAAG,KAAK,CAAC,OAAO,CACxC,GAAG,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,KAAK,oBAAoB,CAAC,UAAU,CAAC,EACpF,CAAC,aAAa,CAAC,CAClB,CAAC;IAEF,MAAM,mBAAmB,GAAG,KAAK,CAAC,OAAO,CACrC,GAAG,EAAE,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,KAAK,oBAAoB,CAAC,UAAU,CAAC,EACtF,CAAC,aAAa,CAAC,CAClB,CAAC;IAEF,MAAM,iBAAiB,GAAG,CAAC,qBAAqB,CAAC;IACjD,OAAO,CACH,MAAC,KAAK,CAAC,QAAQ,eACV,sBAAsB,CAAC,CAAC,CAAC,KAAC,iBAAiB,IAAC,IAAI,EAAE,sBAAsB,GAAI,CAAC,CAAC,CAAC,IAAI,EAEnF,iBAAiB,CAAC,CAAC,CAAC,CACjB,KAAC,aAAa,IAAC,KAAK,EAAE,YAAY,CAAC,2BAA2B,CAAC,YAC3D,MAAC,MAAM,IAAC,IAAI,EAAC,MAAM,EAAC,OAAO,EAAE,GAAG,EAAE,CAAC,oBAAoB,CAAC,EAAC,QAAQ,EAAC,CAAC,aAC/D,KAAC,IAAI,IAAC,IAAI,EAAE,cAAc,GAAI,EAC7B,YAAY,CAAC,eAAe,CAAC,IACzB,GACG,CACnB,CAAC,CAAC,CAAC,IAAI,EACP,eAAe,CAAC,CAAC,CAAC,KAAC,kBAAkB,KAAG,CAAC,CAAC,CAAC,IAAI,EAChD,KAAC,mBAAmB,IAChB,QAAQ,EAAE,QAAQ,EAClB,WAAW,EAAE,WAAW,EACxB,YAAY,EAAE,YAAY,EAC1B,qBAAqB,EAAE,qBAAqB,EAC5C,qBAAqB,EAAE,qBAAqB,EAC5C,YAAY,EAAE,YAAY,EAC1B,oBAAoB,EAAE,oBAAoB,EAC1C,aAAa,EAAE,mBAAmB,GACpC,IACW,CACpB,CAAC;AACN,CAAC"}
@@ -9,7 +9,7 @@ import { useHeaderPageContext } from './hooks/useHeaderPageContext';
9
9
  import './Header.scss';
10
10
  export function Header() {
11
11
  const { metaCapabilitiesLoaded, page, pageBreadcrumbsOptions, singleClusterMode, isViewerUser, databasesPageAvailable, isV2NavigationEnabled, savedHomePageTab, savedDatabasesEnvironment, homePageTabFromPath, database, clusterName, isDatabasePage, isClusterPage, isHomePage, isDatabasesHomePage, isClustersHomePage, } = useHeaderPageContext();
12
- const { clusterTitle, isAddClusterAvailable, handleEditCluster, handleDeleteCluster, databaseData, isDatabaseDataLoading, clusterLinks, databaseLinks, } = useHeaderData({
12
+ const { clusterTitle, isAddClusterAvailable, handleEditCluster, handleDeleteCluster, databaseData, isDatabaseDataLoading, clusterLinks, databaseLinks, prepareTenantBackend, } = useHeaderData({
13
13
  metaCapabilitiesLoaded,
14
14
  database,
15
15
  clusterName,
@@ -34,6 +34,6 @@ export function Header() {
34
34
  return null;
35
35
  }
36
36
  const leftControls = database && isDatabasePage && isV2NavigationEnabled ? (_jsx(HeaderLeftControls, { database: database, databaseData: databaseData, isDatabaseDataLoading: isDatabaseDataLoading })) : null;
37
- return (_jsxs("header", { className: b(), children: [_jsx(HeaderBreadcrumbs, { breadcrumbItems: breadcrumbItems, endContent: leftControls }), _jsx(HeaderRightControls, { clusterName: clusterName, database: database, databaseData: databaseData, isDatabasePage: isDatabasePage, isClusterPage: isClusterPage, isHomePage: isHomePage, isClustersHomePage: isClustersHomePage, isDatabaseDataLoading: isDatabaseDataLoading, isAddClusterAvailable: isAddClusterAvailable, isV2NavigationEnabled: isV2NavigationEnabled, clusterLinks: clusterLinks, databaseLinks: databaseLinks, handleEditCluster: handleEditCluster, handleDeleteCluster: handleDeleteCluster })] }));
37
+ return (_jsxs("header", { className: b(), children: [_jsx(HeaderBreadcrumbs, { breadcrumbItems: breadcrumbItems, endContent: leftControls }), _jsx(HeaderRightControls, { clusterName: clusterName, database: database, databaseData: databaseData, isDatabasePage: isDatabasePage, isClusterPage: isClusterPage, isHomePage: isHomePage, isClustersHomePage: isClustersHomePage, isDatabaseDataLoading: isDatabaseDataLoading, isAddClusterAvailable: isAddClusterAvailable, isV2NavigationEnabled: isV2NavigationEnabled, isViewerUser: isViewerUser, prepareTenantBackend: prepareTenantBackend, clusterLinks: clusterLinks, databaseLinks: databaseLinks, handleEditCluster: handleEditCluster, handleDeleteCluster: handleDeleteCluster })] }));
38
38
  }
39
39
  //# sourceMappingURL=Header.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Header.js","sourceRoot":"","sources":["../../../src/containers/Header/Header.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAC,iBAAiB,EAAC,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAC,kBAAkB,EAAC,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAC,mBAAmB,EAAC,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAC,CAAC,EAAC,MAAM,aAAa,CAAC;AAC9B,OAAO,EAAC,oBAAoB,EAAC,MAAM,8BAA8B,CAAC;AAClE,OAAO,EAAC,aAAa,EAAC,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAC,oBAAoB,EAAC,MAAM,8BAA8B,CAAC;AAElE,OAAO,eAAe,CAAC;AAEvB,MAAM,UAAU,MAAM;IAClB,MAAM,EACF,sBAAsB,EACtB,IAAI,EACJ,sBAAsB,EACtB,iBAAiB,EACjB,YAAY,EACZ,sBAAsB,EACtB,qBAAqB,EACrB,gBAAgB,EAChB,yBAAyB,EACzB,mBAAmB,EACnB,QAAQ,EACR,WAAW,EACX,cAAc,EACd,aAAa,EACb,UAAU,EACV,mBAAmB,EACnB,kBAAkB,GACrB,GAAG,oBAAoB,EAAE,CAAC;IAE3B,MAAM,EACF,YAAY,EACZ,qBAAqB,EACrB,iBAAiB,EACjB,mBAAmB,EACnB,YAAY,EACZ,qBAAqB,EACrB,YAAY,EACZ,aAAa,GAChB,GAAG,aAAa,CAAC;QACd,sBAAsB;QACtB,QAAQ;QACR,WAAW;QACX,cAAc;QACd,kBAAkB;KACrB,CAAC,CAAC;IAEH,MAAM,eAAe,GAAG,oBAAoB,CAAC;QACzC,IAAI;QACJ,sBAAsB;QACtB,iBAAiB;QACjB,YAAY;QACZ,qBAAqB;QACrB,mBAAmB;QACnB,gBAAgB;QAChB,yBAAyB;QACzB,sBAAsB;QACtB,YAAY;QACZ,kBAAkB;QAClB,mBAAmB;KACtB,CAAC,CAAC;IAEH,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAC1B,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,MAAM,YAAY,GACd,QAAQ,IAAI,cAAc,IAAI,qBAAqB,CAAC,CAAC,CAAC,CAClD,KAAC,kBAAkB,IACf,QAAQ,EAAE,QAAQ,EAClB,YAAY,EAAE,YAAY,EAC1B,qBAAqB,EAAE,qBAAqB,GAC9C,CACL,CAAC,CAAC,CAAC,IAAI,CAAC;IAEb,OAAO,CACH,kBAAQ,SAAS,EAAE,CAAC,EAAE,aAClB,KAAC,iBAAiB,IAAC,eAAe,EAAE,eAAe,EAAE,UAAU,EAAE,YAAY,GAAI,EAEjF,KAAC,mBAAmB,IAChB,WAAW,EAAE,WAAW,EACxB,QAAQ,EAAE,QAAQ,EAClB,YAAY,EAAE,YAAY,EAC1B,cAAc,EAAE,cAAc,EAC9B,aAAa,EAAE,aAAa,EAC5B,UAAU,EAAE,UAAU,EACtB,kBAAkB,EAAE,kBAAkB,EACtC,qBAAqB,EAAE,qBAAqB,EAC5C,qBAAqB,EAAE,qBAAqB,EAC5C,qBAAqB,EAAE,qBAAqB,EAC5C,YAAY,EAAE,YAAY,EAC1B,aAAa,EAAE,aAAa,EAC5B,iBAAiB,EAAE,iBAAiB,EACpC,mBAAmB,EAAE,mBAAmB,GAC1C,IACG,CACZ,CAAC;AACN,CAAC"}
1
+ {"version":3,"file":"Header.js","sourceRoot":"","sources":["../../../src/containers/Header/Header.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAC,iBAAiB,EAAC,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAC,kBAAkB,EAAC,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAC,mBAAmB,EAAC,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAC,CAAC,EAAC,MAAM,aAAa,CAAC;AAC9B,OAAO,EAAC,oBAAoB,EAAC,MAAM,8BAA8B,CAAC;AAClE,OAAO,EAAC,aAAa,EAAC,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAC,oBAAoB,EAAC,MAAM,8BAA8B,CAAC;AAElE,OAAO,eAAe,CAAC;AAEvB,MAAM,UAAU,MAAM;IAClB,MAAM,EACF,sBAAsB,EACtB,IAAI,EACJ,sBAAsB,EACtB,iBAAiB,EACjB,YAAY,EACZ,sBAAsB,EACtB,qBAAqB,EACrB,gBAAgB,EAChB,yBAAyB,EACzB,mBAAmB,EACnB,QAAQ,EACR,WAAW,EACX,cAAc,EACd,aAAa,EACb,UAAU,EACV,mBAAmB,EACnB,kBAAkB,GACrB,GAAG,oBAAoB,EAAE,CAAC;IAE3B,MAAM,EACF,YAAY,EACZ,qBAAqB,EACrB,iBAAiB,EACjB,mBAAmB,EACnB,YAAY,EACZ,qBAAqB,EACrB,YAAY,EACZ,aAAa,EACb,oBAAoB,GACvB,GAAG,aAAa,CAAC;QACd,sBAAsB;QACtB,QAAQ;QACR,WAAW;QACX,cAAc;QACd,kBAAkB;KACrB,CAAC,CAAC;IAEH,MAAM,eAAe,GAAG,oBAAoB,CAAC;QACzC,IAAI;QACJ,sBAAsB;QACtB,iBAAiB;QACjB,YAAY;QACZ,qBAAqB;QACrB,mBAAmB;QACnB,gBAAgB;QAChB,yBAAyB;QACzB,sBAAsB;QACtB,YAAY;QACZ,kBAAkB;QAClB,mBAAmB;KACtB,CAAC,CAAC;IAEH,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAC1B,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,MAAM,YAAY,GACd,QAAQ,IAAI,cAAc,IAAI,qBAAqB,CAAC,CAAC,CAAC,CAClD,KAAC,kBAAkB,IACf,QAAQ,EAAE,QAAQ,EAClB,YAAY,EAAE,YAAY,EAC1B,qBAAqB,EAAE,qBAAqB,GAC9C,CACL,CAAC,CAAC,CAAC,IAAI,CAAC;IAEb,OAAO,CACH,kBAAQ,SAAS,EAAE,CAAC,EAAE,aAClB,KAAC,iBAAiB,IAAC,eAAe,EAAE,eAAe,EAAE,UAAU,EAAE,YAAY,GAAI,EAEjF,KAAC,mBAAmB,IAChB,WAAW,EAAE,WAAW,EACxB,QAAQ,EAAE,QAAQ,EAClB,YAAY,EAAE,YAAY,EAC1B,cAAc,EAAE,cAAc,EAC9B,aAAa,EAAE,aAAa,EAC5B,UAAU,EAAE,UAAU,EACtB,kBAAkB,EAAE,kBAAkB,EACtC,qBAAqB,EAAE,qBAAqB,EAC5C,qBAAqB,EAAE,qBAAqB,EAC5C,qBAAqB,EAAE,qBAAqB,EAC5C,YAAY,EAAE,YAAY,EAC1B,oBAAoB,EAAE,oBAAoB,EAC1C,YAAY,EAAE,YAAY,EAC1B,aAAa,EAAE,aAAa,EAC5B,iBAAiB,EAAE,iBAAiB,EACpC,mBAAmB,EAAE,mBAAmB,GAC1C,IACG,CACZ,CAAC;AACN,CAAC"}
@@ -1,11 +1,13 @@
1
1
  import type { PreparedTenant } from '../../store/reducers/tenants/types';
2
- import type { ClusterLinkWithTitle } from '../../types/additionalProps';
2
+ import type { AdditionalTenantsProps, ClusterLinkWithTitle } from '../../types/additionalProps';
3
3
  export interface HeaderActionsMenuProps {
4
4
  database?: string;
5
5
  clusterName?: string;
6
6
  databaseData?: PreparedTenant;
7
7
  isDatabaseDataLoading: boolean;
8
8
  isV2NavigationEnabled: boolean;
9
+ isViewerUser?: boolean;
10
+ prepareTenantBackend?: AdditionalTenantsProps['prepareTenantBackend'];
9
11
  databaseLinks: ClusterLinkWithTitle[];
10
12
  }
11
- export declare function DBHeaderActionsMenu({ database, clusterName, databaseData, isDatabaseDataLoading, isV2NavigationEnabled, databaseLinks, }: HeaderActionsMenuProps): import("react/jsx-runtime").JSX.Element | null;
13
+ export declare function DBHeaderActionsMenu({ database, clusterName, databaseData, isDatabaseDataLoading, isV2NavigationEnabled, isViewerUser, prepareTenantBackend, databaseLinks, }: HeaderActionsMenuProps): import("react/jsx-runtime").JSX.Element | null;
@@ -1,6 +1,6 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import React from 'react';
3
- import { Pencil, PlugConnection, TrashBin } from '@gravity-ui/icons';
3
+ import { DatabaseArrowRight, Pencil, PlugConnection, TrashBin } from '@gravity-ui/icons';
4
4
  import { useHistory } from 'react-router-dom';
5
5
  import { getConnectToDBDialog } from '../../components/ConnectToDB/ConnectToDBDialog';
6
6
  import { DropdownMenu } from '../../components/DropdownMenu';
@@ -9,10 +9,17 @@ import { useEmMetaAvailable } from '../../store/reducers/capabilities/hooks';
9
9
  import { uiFactory } from '../../uiFactory/uiFactory';
10
10
  import { clusterTabsIds } from '../Cluster/utils';
11
11
  import { b } from './constants';
12
+ import { useSharedDatabasePath } from './hooks/useSharedDatabasePath';
12
13
  import { headerKeyset } from './i18n';
13
- export function DBHeaderActionsMenu({ database, clusterName, databaseData, isDatabaseDataLoading, isV2NavigationEnabled, databaseLinks, }) {
14
+ export function DBHeaderActionsMenu({ database, clusterName, databaseData, isDatabaseDataLoading, isV2NavigationEnabled, isViewerUser, prepareTenantBackend, databaseLinks, }) {
14
15
  const history = useHistory();
15
16
  const emMetaAvailable = useEmMetaAvailable();
17
+ const sharedDatabasePath = useSharedDatabasePath({
18
+ clusterName,
19
+ databaseData,
20
+ isViewerUser,
21
+ prepareTenantBackend,
22
+ });
16
23
  const isEditDBAvailable = emMetaAvailable && uiFactory.onEditDB !== undefined;
17
24
  const isDeleteDBAvailable = emMetaAvailable && uiFactory.onDeleteDB !== undefined;
18
25
  const menuItems = React.useMemo(() => {
@@ -40,6 +47,15 @@ export function DBHeaderActionsMenu({ database, clusterName, databaseData, isDat
40
47
  },
41
48
  ]);
42
49
  }
50
+ if (sharedDatabasePath) {
51
+ menuItems.push([
52
+ {
53
+ title: headerKeyset('action_go-to-shared-db'),
54
+ iconStart: DatabaseArrowRight,
55
+ href: sharedDatabasePath,
56
+ },
57
+ ]);
58
+ }
43
59
  const { onEditDB, onDeleteDB } = uiFactory;
44
60
  const isEnoughData = clusterName && databaseData;
45
61
  const manageDBGroup = [];
@@ -80,6 +96,7 @@ export function DBHeaderActionsMenu({ database, clusterName, databaseData, isDat
80
96
  history,
81
97
  isEditDBAvailable,
82
98
  isDeleteDBAvailable,
99
+ sharedDatabasePath,
83
100
  ]);
84
101
  if (!menuItems.length) {
85
102
  return null;
@@ -1 +1 @@
1
- {"version":3,"file":"HeaderActionsMenu.js","sourceRoot":"","sources":["../../../src/containers/Header/HeaderActionsMenu.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAC,MAAM,EAAE,cAAc,EAAE,QAAQ,EAAC,MAAM,mBAAmB,CAAC;AACnE,OAAO,EAAC,UAAU,EAAC,MAAM,kBAAkB,CAAC;AAE5C,OAAO,EAAC,oBAAoB,EAAC,MAAM,gDAAgD,CAAC;AAEpF,OAAO,EAAC,YAAY,EAAC,MAAM,+BAA+B,CAAC;AAC3D,OAAO,EAAC,cAAc,EAAC,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAC,kBAAkB,EAAC,MAAM,yCAAyC,CAAC;AAG3E,OAAO,EAAC,SAAS,EAAC,MAAM,2BAA2B,CAAC;AACpD,OAAO,EAAC,cAAc,EAAC,MAAM,kBAAkB,CAAC;AAEhD,OAAO,EAAC,CAAC,EAAC,MAAM,aAAa,CAAC;AAC9B,OAAO,EAAC,YAAY,EAAC,MAAM,QAAQ,CAAC;AAWpC,MAAM,UAAU,mBAAmB,CAAC,EAChC,QAAQ,EACR,WAAW,EACX,YAAY,EACZ,qBAAqB,EACrB,qBAAqB,EACrB,aAAa,GACQ;IACrB,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;IAE7B,MAAM,eAAe,GAAG,kBAAkB,EAAE,CAAC;IAE7C,MAAM,iBAAiB,GAAG,eAAe,IAAI,SAAS,CAAC,QAAQ,KAAK,SAAS,CAAC;IAC9E,MAAM,mBAAmB,GAAG,eAAe,IAAI,SAAS,CAAC,UAAU,KAAK,SAAS,CAAC;IAElF,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE;QACjC,MAAM,SAAS,GAAwC,EAAE,CAAC;QAE1D,MAAM,UAAU,GAAsC,EAAE,CAAC;QAEzD,KAAK,MAAM,IAAI,IAAI,aAAa,EAAE,CAAC;YAC/B,UAAU,CAAC,IAAI,CAAC;gBACZ,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,SAAS,EAAE,IAAI,CAAC,IAAI;gBACpB,IAAI,EAAE,IAAI,CAAC,GAAG;gBACd,MAAM,EAAE,IAAI,CAAC,MAAM;aACtB,CAAC,CAAC;QACP,CAAC;QAED,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC;YACpB,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC/B,CAAC;QAED,+DAA+D;QAC/D,IAAI,qBAAqB,EAAE,CAAC;YACxB,SAAS,CAAC,IAAI,CAAC;gBACX;oBACI,KAAK,EAAE,YAAY,CAAC,sBAAsB,CAAC;oBAC3C,SAAS,EAAE,cAAc;oBACzB,MAAM,EAAE,GAAG,EAAE,CAAC,oBAAoB,CAAC,EAAC,QAAQ,EAAC,CAAC;iBACjD;aACJ,CAAC,CAAC;QACP,CAAC;QAED,MAAM,EAAC,QAAQ,EAAE,UAAU,EAAC,GAAG,SAAS,CAAC;QAEzC,MAAM,YAAY,GAAG,WAAW,IAAI,YAAY,CAAC;QAEjD,MAAM,aAAa,GAAsC,EAAE,CAAC;QAE5D,IAAI,iBAAiB,IAAI,QAAQ,IAAI,YAAY,EAAE,CAAC;YAChD,aAAa,CAAC,IAAI,CAAC;gBACf,KAAK,EAAE,YAAY,CAAC,gBAAgB,CAAC;gBACrC,SAAS,EAAE,MAAM;gBACjB,MAAM,EAAE,GAAG,EAAE;oBACT,QAAQ,CAAC,EAAC,WAAW,EAAE,YAAY,EAAC,CAAC,CAAC;gBAC1C,CAAC;aACJ,CAAC,CAAC;QACP,CAAC;QACD,IAAI,mBAAmB,IAAI,UAAU,IAAI,YAAY,EAAE,CAAC;YACpD,aAAa,CAAC,IAAI,CAAC;gBACf,KAAK,EAAE,YAAY,CAAC,kBAAkB,CAAC;gBACvC,SAAS,EAAE,QAAQ;gBACnB,MAAM,EAAE,GAAG,EAAE;oBACT,UAAU,CAAC,EAAC,WAAW,EAAE,YAAY,EAAC,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE;wBACvD,IAAI,SAAS,EAAE,CAAC;4BACZ,MAAM,IAAI,GAAG,cAAc,CAAC,EAAC,SAAS,EAAE,cAAc,CAAC,OAAO,EAAC,CAAC,CAAC;4BACjE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;wBACvB,CAAC;oBACL,CAAC,CAAC,CAAC;gBACP,CAAC;gBACD,KAAK,EAAE,QAAQ;aAClB,CAAC,CAAC;QACP,CAAC;QAED,IAAI,aAAa,CAAC,MAAM,EAAE,CAAC;YACvB,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAClC,CAAC;QAED,OAAO,SAAS,CAAC;IACrB,CAAC,EAAE;QACC,QAAQ;QACR,WAAW;QACX,YAAY;QACZ,aAAa;QACb,qBAAqB;QACrB,OAAO;QACP,iBAAiB;QACjB,mBAAmB;KACtB,CAAC,CAAC;IAEH,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;QACpB,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,OAAO,CACH,cAAK,SAAS,EAAE,CAAC,CAAC,cAAc,CAAC,YAC7B,KAAC,YAAY,IACT,KAAK,EAAE,SAAS,EAChB,UAAU,EAAE,EAAC,SAAS,EAAE,YAAY,EAAC,EACrC,oBAAoB,EAAE,EAAC,OAAO,EAAE,qBAAqB,EAAC,GACxD,GACA,CACT,CAAC;AACN,CAAC"}
1
+ {"version":3,"file":"HeaderActionsMenu.js","sourceRoot":"","sources":["../../../src/containers/Header/HeaderActionsMenu.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAC,kBAAkB,EAAE,MAAM,EAAE,cAAc,EAAE,QAAQ,EAAC,MAAM,mBAAmB,CAAC;AACvF,OAAO,EAAC,UAAU,EAAC,MAAM,kBAAkB,CAAC;AAE5C,OAAO,EAAC,oBAAoB,EAAC,MAAM,gDAAgD,CAAC;AAEpF,OAAO,EAAC,YAAY,EAAC,MAAM,+BAA+B,CAAC;AAC3D,OAAO,EAAC,cAAc,EAAC,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAC,kBAAkB,EAAC,MAAM,yCAAyC,CAAC;AAG3E,OAAO,EAAC,SAAS,EAAC,MAAM,2BAA2B,CAAC;AACpD,OAAO,EAAC,cAAc,EAAC,MAAM,kBAAkB,CAAC;AAEhD,OAAO,EAAC,CAAC,EAAC,MAAM,aAAa,CAAC;AAC9B,OAAO,EAAC,qBAAqB,EAAC,MAAM,+BAA+B,CAAC;AACpE,OAAO,EAAC,YAAY,EAAC,MAAM,QAAQ,CAAC;AAapC,MAAM,UAAU,mBAAmB,CAAC,EAChC,QAAQ,EACR,WAAW,EACX,YAAY,EACZ,qBAAqB,EACrB,qBAAqB,EACrB,YAAY,EACZ,oBAAoB,EACpB,aAAa,GACQ;IACrB,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;IAE7B,MAAM,eAAe,GAAG,kBAAkB,EAAE,CAAC;IAC7C,MAAM,kBAAkB,GAAG,qBAAqB,CAAC;QAC7C,WAAW;QACX,YAAY;QACZ,YAAY;QACZ,oBAAoB;KACvB,CAAC,CAAC;IAEH,MAAM,iBAAiB,GAAG,eAAe,IAAI,SAAS,CAAC,QAAQ,KAAK,SAAS,CAAC;IAC9E,MAAM,mBAAmB,GAAG,eAAe,IAAI,SAAS,CAAC,UAAU,KAAK,SAAS,CAAC;IAElF,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE;QACjC,MAAM,SAAS,GAAwC,EAAE,CAAC;QAE1D,MAAM,UAAU,GAAsC,EAAE,CAAC;QAEzD,KAAK,MAAM,IAAI,IAAI,aAAa,EAAE,CAAC;YAC/B,UAAU,CAAC,IAAI,CAAC;gBACZ,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,SAAS,EAAE,IAAI,CAAC,IAAI;gBACpB,IAAI,EAAE,IAAI,CAAC,GAAG;gBACd,MAAM,EAAE,IAAI,CAAC,MAAM;aACtB,CAAC,CAAC;QACP,CAAC;QAED,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC;YACpB,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC/B,CAAC;QAED,+DAA+D;QAC/D,IAAI,qBAAqB,EAAE,CAAC;YACxB,SAAS,CAAC,IAAI,CAAC;gBACX;oBACI,KAAK,EAAE,YAAY,CAAC,sBAAsB,CAAC;oBAC3C,SAAS,EAAE,cAAc;oBACzB,MAAM,EAAE,GAAG,EAAE,CAAC,oBAAoB,CAAC,EAAC,QAAQ,EAAC,CAAC;iBACjD;aACJ,CAAC,CAAC;QACP,CAAC;QAED,IAAI,kBAAkB,EAAE,CAAC;YACrB,SAAS,CAAC,IAAI,CAAC;gBACX;oBACI,KAAK,EAAE,YAAY,CAAC,wBAAwB,CAAC;oBAC7C,SAAS,EAAE,kBAAkB;oBAC7B,IAAI,EAAE,kBAAkB;iBAC3B;aACJ,CAAC,CAAC;QACP,CAAC;QAED,MAAM,EAAC,QAAQ,EAAE,UAAU,EAAC,GAAG,SAAS,CAAC;QAEzC,MAAM,YAAY,GAAG,WAAW,IAAI,YAAY,CAAC;QAEjD,MAAM,aAAa,GAAsC,EAAE,CAAC;QAE5D,IAAI,iBAAiB,IAAI,QAAQ,IAAI,YAAY,EAAE,CAAC;YAChD,aAAa,CAAC,IAAI,CAAC;gBACf,KAAK,EAAE,YAAY,CAAC,gBAAgB,CAAC;gBACrC,SAAS,EAAE,MAAM;gBACjB,MAAM,EAAE,GAAG,EAAE;oBACT,QAAQ,CAAC,EAAC,WAAW,EAAE,YAAY,EAAC,CAAC,CAAC;gBAC1C,CAAC;aACJ,CAAC,CAAC;QACP,CAAC;QACD,IAAI,mBAAmB,IAAI,UAAU,IAAI,YAAY,EAAE,CAAC;YACpD,aAAa,CAAC,IAAI,CAAC;gBACf,KAAK,EAAE,YAAY,CAAC,kBAAkB,CAAC;gBACvC,SAAS,EAAE,QAAQ;gBACnB,MAAM,EAAE,GAAG,EAAE;oBACT,UAAU,CAAC,EAAC,WAAW,EAAE,YAAY,EAAC,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE;wBACvD,IAAI,SAAS,EAAE,CAAC;4BACZ,MAAM,IAAI,GAAG,cAAc,CAAC,EAAC,SAAS,EAAE,cAAc,CAAC,OAAO,EAAC,CAAC,CAAC;4BACjE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;wBACvB,CAAC;oBACL,CAAC,CAAC,CAAC;gBACP,CAAC;gBACD,KAAK,EAAE,QAAQ;aAClB,CAAC,CAAC;QACP,CAAC;QAED,IAAI,aAAa,CAAC,MAAM,EAAE,CAAC;YACvB,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAClC,CAAC;QAED,OAAO,SAAS,CAAC;IACrB,CAAC,EAAE;QACC,QAAQ;QACR,WAAW;QACX,YAAY;QACZ,aAAa;QACb,qBAAqB;QACrB,OAAO;QACP,iBAAiB;QACjB,mBAAmB;QACnB,kBAAkB;KACrB,CAAC,CAAC;IAEH,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;QACpB,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,OAAO,CACH,cAAK,SAAS,EAAE,CAAC,CAAC,cAAc,CAAC,YAC7B,KAAC,YAAY,IACT,KAAK,EAAE,SAAS,EAChB,UAAU,EAAE,EAAC,SAAS,EAAE,YAAY,EAAC,EACrC,oBAAoB,EAAE,EAAC,OAAO,EAAE,qBAAqB,EAAC,GACxD,GACA,CACT,CAAC;AACN,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import type { PreparedTenant } from '../../store/reducers/tenants/types';
2
- import type { ClusterLinkWithTitle } from '../../types/additionalProps';
2
+ import type { AdditionalTenantsProps, ClusterLinkWithTitle } from '../../types/additionalProps';
3
3
  interface HeaderRightControlsProps {
4
4
  clusterName?: string;
5
5
  database?: string;
@@ -11,10 +11,12 @@ interface HeaderRightControlsProps {
11
11
  isDatabaseDataLoading: boolean;
12
12
  isAddClusterAvailable: boolean;
13
13
  isV2NavigationEnabled: boolean;
14
+ isViewerUser?: boolean;
15
+ prepareTenantBackend?: AdditionalTenantsProps['prepareTenantBackend'];
14
16
  clusterLinks: ClusterLinkWithTitle[];
15
17
  databaseLinks: ClusterLinkWithTitle[];
16
18
  handleEditCluster?: () => Promise<boolean>;
17
19
  handleDeleteCluster?: () => Promise<boolean>;
18
20
  }
19
- export declare function HeaderRightControls({ clusterName, database, databaseData, isDatabasePage, isClusterPage, isHomePage, isClustersHomePage, isDatabaseDataLoading, isAddClusterAvailable, isV2NavigationEnabled, clusterLinks, databaseLinks, handleEditCluster, handleDeleteCluster, }: HeaderRightControlsProps): import("react/jsx-runtime").JSX.Element;
21
+ export declare function HeaderRightControls({ clusterName, database, databaseData, isDatabasePage, isClusterPage, isHomePage, isClustersHomePage, isDatabaseDataLoading, isAddClusterAvailable, isV2NavigationEnabled, isViewerUser, prepareTenantBackend, clusterLinks, databaseLinks, handleEditCluster, handleDeleteCluster, }: HeaderRightControlsProps): import("react/jsx-runtime").JSX.Element;
20
22
  export {};
@@ -5,10 +5,10 @@ import { ClusterRightControls } from './ClusterRightControls';
5
5
  import { ClustersHomeControls } from './ClustersHomeControls';
6
6
  import { DatabaseRightControls } from './DatabaseRightControls';
7
7
  import { DeveloperUIControl } from './GlobalRightControls';
8
- export function HeaderRightControls({ clusterName, database, databaseData, isDatabasePage, isClusterPage, isHomePage, isClustersHomePage, isDatabaseDataLoading, isAddClusterAvailable, isV2NavigationEnabled, clusterLinks, databaseLinks, handleEditCluster, handleDeleteCluster, }) {
8
+ export function HeaderRightControls({ clusterName, database, databaseData, isDatabasePage, isClusterPage, isHomePage, isClustersHomePage, isDatabaseDataLoading, isAddClusterAvailable, isV2NavigationEnabled, isViewerUser, prepareTenantBackend, clusterLinks, databaseLinks, handleEditCluster, handleDeleteCluster, }) {
9
9
  const hasDeveloperUi = useHasDeveloperUi();
10
10
  const showAddCluster = isClustersHomePage && isAddClusterAvailable;
11
11
  const showDeveloperUI = !isHomePage && hasDeveloperUi;
12
- return (_jsxs(Flex, { direction: "row", gap: 2, children: [showAddCluster ? _jsx(ClustersHomeControls, {}) : null, isDatabasePage && database ? (_jsx(DatabaseRightControls, { database: database, clusterName: clusterName, databaseData: databaseData, isDatabaseDataLoading: isDatabaseDataLoading, isV2NavigationEnabled: isV2NavigationEnabled, showDeveloperUI: showDeveloperUI, databaseLinks: databaseLinks })) : null, isClusterPage ? (_jsx(ClusterRightControls, { clusterLinks: clusterLinks, showDeveloperUI: showDeveloperUI, handleEditCluster: handleEditCluster, handleDeleteCluster: handleDeleteCluster })) : null, !isDatabasePage && !isClusterPage && showDeveloperUI ? _jsx(DeveloperUIControl, {}) : null] }));
12
+ return (_jsxs(Flex, { direction: "row", gap: 2, children: [showAddCluster ? _jsx(ClustersHomeControls, {}) : null, isDatabasePage && database ? (_jsx(DatabaseRightControls, { database: database, clusterName: clusterName, databaseData: databaseData, isDatabaseDataLoading: isDatabaseDataLoading, isV2NavigationEnabled: isV2NavigationEnabled, isViewerUser: isViewerUser, prepareTenantBackend: prepareTenantBackend, showDeveloperUI: showDeveloperUI, databaseLinks: databaseLinks })) : null, isClusterPage ? (_jsx(ClusterRightControls, { clusterLinks: clusterLinks, showDeveloperUI: showDeveloperUI, handleEditCluster: handleEditCluster, handleDeleteCluster: handleDeleteCluster })) : null, !isDatabasePage && !isClusterPage && showDeveloperUI ? _jsx(DeveloperUIControl, {}) : null] }));
13
13
  }
14
14
  //# sourceMappingURL=HeaderRightControls.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"HeaderRightControls.js","sourceRoot":"","sources":["../../../src/containers/Header/HeaderRightControls.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAC,IAAI,EAAC,MAAM,mBAAmB,CAAC;AAIvC,OAAO,EAAC,iBAAiB,EAAC,MAAM,qCAAqC,CAAC;AAEtE,OAAO,EAAC,oBAAoB,EAAC,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAC,oBAAoB,EAAC,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAC,qBAAqB,EAAC,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAC,kBAAkB,EAAC,MAAM,uBAAuB,CAAC;AAmBzD,MAAM,UAAU,mBAAmB,CAAC,EAChC,WAAW,EACX,QAAQ,EACR,YAAY,EACZ,cAAc,EACd,aAAa,EACb,UAAU,EACV,kBAAkB,EAClB,qBAAqB,EACrB,qBAAqB,EACrB,qBAAqB,EACrB,YAAY,EACZ,aAAa,EACb,iBAAiB,EACjB,mBAAmB,GACI;IACvB,MAAM,cAAc,GAAG,iBAAiB,EAAE,CAAC;IAE3C,MAAM,cAAc,GAAG,kBAAkB,IAAI,qBAAqB,CAAC;IACnE,MAAM,eAAe,GAAG,CAAC,UAAU,IAAI,cAAc,CAAC;IAEtD,OAAO,CACH,MAAC,IAAI,IAAC,SAAS,EAAC,KAAK,EAAC,GAAG,EAAE,CAAC,aACvB,cAAc,CAAC,CAAC,CAAC,KAAC,oBAAoB,KAAG,CAAC,CAAC,CAAC,IAAI,EAEhD,cAAc,IAAI,QAAQ,CAAC,CAAC,CAAC,CAC1B,KAAC,qBAAqB,IAClB,QAAQ,EAAE,QAAQ,EAClB,WAAW,EAAE,WAAW,EACxB,YAAY,EAAE,YAAY,EAC1B,qBAAqB,EAAE,qBAAqB,EAC5C,qBAAqB,EAAE,qBAAqB,EAC5C,eAAe,EAAE,eAAe,EAChC,aAAa,EAAE,aAAa,GAC9B,CACL,CAAC,CAAC,CAAC,IAAI,EAEP,aAAa,CAAC,CAAC,CAAC,CACb,KAAC,oBAAoB,IACjB,YAAY,EAAE,YAAY,EAC1B,eAAe,EAAE,eAAe,EAChC,iBAAiB,EAAE,iBAAiB,EACpC,mBAAmB,EAAE,mBAAmB,GAC1C,CACL,CAAC,CAAC,CAAC,IAAI,EAEP,CAAC,cAAc,IAAI,CAAC,aAAa,IAAI,eAAe,CAAC,CAAC,CAAC,KAAC,kBAAkB,KAAG,CAAC,CAAC,CAAC,IAAI,IAClF,CACV,CAAC;AACN,CAAC"}
1
+ {"version":3,"file":"HeaderRightControls.js","sourceRoot":"","sources":["../../../src/containers/Header/HeaderRightControls.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAC,IAAI,EAAC,MAAM,mBAAmB,CAAC;AAIvC,OAAO,EAAC,iBAAiB,EAAC,MAAM,qCAAqC,CAAC;AAEtE,OAAO,EAAC,oBAAoB,EAAC,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAC,oBAAoB,EAAC,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAC,qBAAqB,EAAC,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAC,kBAAkB,EAAC,MAAM,uBAAuB,CAAC;AAqBzD,MAAM,UAAU,mBAAmB,CAAC,EAChC,WAAW,EACX,QAAQ,EACR,YAAY,EACZ,cAAc,EACd,aAAa,EACb,UAAU,EACV,kBAAkB,EAClB,qBAAqB,EACrB,qBAAqB,EACrB,qBAAqB,EACrB,YAAY,EACZ,oBAAoB,EACpB,YAAY,EACZ,aAAa,EACb,iBAAiB,EACjB,mBAAmB,GACI;IACvB,MAAM,cAAc,GAAG,iBAAiB,EAAE,CAAC;IAE3C,MAAM,cAAc,GAAG,kBAAkB,IAAI,qBAAqB,CAAC;IACnE,MAAM,eAAe,GAAG,CAAC,UAAU,IAAI,cAAc,CAAC;IAEtD,OAAO,CACH,MAAC,IAAI,IAAC,SAAS,EAAC,KAAK,EAAC,GAAG,EAAE,CAAC,aACvB,cAAc,CAAC,CAAC,CAAC,KAAC,oBAAoB,KAAG,CAAC,CAAC,CAAC,IAAI,EAEhD,cAAc,IAAI,QAAQ,CAAC,CAAC,CAAC,CAC1B,KAAC,qBAAqB,IAClB,QAAQ,EAAE,QAAQ,EAClB,WAAW,EAAE,WAAW,EACxB,YAAY,EAAE,YAAY,EAC1B,qBAAqB,EAAE,qBAAqB,EAC5C,qBAAqB,EAAE,qBAAqB,EAC5C,YAAY,EAAE,YAAY,EAC1B,oBAAoB,EAAE,oBAAoB,EAC1C,eAAe,EAAE,eAAe,EAChC,aAAa,EAAE,aAAa,GAC9B,CACL,CAAC,CAAC,CAAC,IAAI,EAEP,aAAa,CAAC,CAAC,CAAC,CACb,KAAC,oBAAoB,IACjB,YAAY,EAAE,YAAY,EAC1B,eAAe,EAAE,eAAe,EAChC,iBAAiB,EAAE,iBAAiB,EACpC,mBAAmB,EAAE,mBAAmB,GAC1C,CACL,CAAC,CAAC,CAAC,IAAI,EAEP,CAAC,cAAc,IAAI,CAAC,aAAa,IAAI,eAAe,CAAC,CAAC,CAAC,KAAC,kBAAkB,KAAG,CAAC,CAAC,CAAC,IAAI,IAClF,CACV,CAAC;AACN,CAAC"}
@@ -12,6 +12,7 @@ export declare function useClusterData({ metaCapabilitiesLoaded, isClustersHomeP
12
12
  logging: import("../../../types/api/meta").MetaClusterLogsUrls | undefined;
13
13
  settings: import("../../../types/api/meta").MetaClusterSettings | undefined;
14
14
  links: import("../../../types/api/meta").MetaClusterLinks | undefined;
15
+ isError: boolean;
15
16
  isResolved: boolean;
16
17
  owner?: string;
17
18
  location?: string;
@@ -14,5 +14,6 @@ export declare function useHeaderData({ metaCapabilitiesLoaded, database, cluste
14
14
  isDatabaseDataLoading: boolean;
15
15
  clusterLinks: import("../../../types/additionalProps").ClusterLinkWithTitle[];
16
16
  databaseLinks: import("../../../types/additionalProps").ClusterLinkWithTitle[];
17
+ prepareTenantBackend: ((nodeId?: string | number) => string | undefined) | undefined;
17
18
  };
18
19
  export {};
@@ -47,6 +47,7 @@ export function useHeaderData({ metaCapabilitiesLoaded, database, clusterName, i
47
47
  isDatabaseDataLoading,
48
48
  clusterLinks,
49
49
  databaseLinks,
50
+ prepareTenantBackend: additionalTenantProps.prepareTenantBackend,
50
51
  };
51
52
  }
52
53
  //# sourceMappingURL=useHeaderData.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useHeaderData.js","sourceRoot":"","sources":["../../../../src/containers/Header/hooks/useHeaderData.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,EAAC,SAAS,EAAC,MAAM,8BAA8B,CAAC;AACvD,OAAO,EAAC,eAAe,EAAC,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EAAC,oBAAoB,EAAC,MAAM,kDAAkD,CAAC;AACtF,OAAO,EAAC,gBAAgB,EAAC,MAAM,8CAA8C,CAAC;AAC9E,OAAO,EAAC,mBAAmB,EAAC,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAC,yBAAyB,EAAC,MAAM,uDAAuD,CAAC;AAEhG,OAAO,EAAC,cAAc,EAAC,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAC,eAAe,EAAC,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAC,qBAAqB,EAAC,MAAM,yBAAyB,CAAC;AAU9D,MAAM,UAAU,aAAa,CAAC,EAC1B,sBAAsB,EACtB,QAAQ,EACR,WAAW,EACX,cAAc,EACd,kBAAkB,GACA;IAClB,MAAM,EACF,YAAY,EACZ,UAAU,EACV,qBAAqB,EACrB,iBAAiB,EACjB,mBAAmB,GACtB,GAAG,cAAc,CAAC;QACf,sBAAsB;QACtB,kBAAkB;KACrB,CAAC,CAAC;IAEH,MAAM,EAAC,YAAY,EAAE,qBAAqB,EAAE,iBAAiB,EAAC,GAAG,eAAe,CAAC;QAC7E,sBAAsB;QACtB,QAAQ;QACR,WAAW;QACX,cAAc;QACd,UAAU;KACb,CAAC,CAAC;IAEH,MAAM,YAAY,GAAG,qBAAqB,EAAE,CAAC;IAE7C,MAAM,qBAAqB,GAAG,yBAAyB,CAAC;QACpD,WAAW,EAAE,SAAS,CAAC,WAAW;QAClC,gBAAgB,EAAE,SAAS,CAAC,gBAAgB;KAC/C,CAAC,CAAC;IAEH,MAAM,mBAAmB,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE;QAC3C,MAAM,KAAK,GAAmB,EAAE,CAAC;QAEjC,IAAI,iBAAiB,EAAE,CAAC;YACpB,KAAK,CAAC,IAAI,CAAC;gBACP,KAAK,EAAE,mBAAmB;gBAC1B,GAAG,EAAE,iBAAiB;gBACtB,OAAO,EAAE,oBAAoB,CAAC,UAAU;aAC3C,CAAC,CAAC;QACP,CAAC;QAED,KAAK,CAAC,IAAI,CACN,GAAG,eAAe,CAAC,qBAAqB,EAAE,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,IAAI,EAAE,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,IAAI,CAAC,CACpF,CAAC;QAEF,OAAO,KAAK,CAAC;IACjB,CAAC,EAAE,CAAC,iBAAiB,EAAE,qBAAqB,EAAE,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,IAAI,EAAE,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,IAAI,CAAC,CAAC,CAAC;IAEvF,MAAM,aAAa,GAAG,gBAAgB,CAAC,YAAY,EAAE,mBAAmB,CAAC,CAAC;IAE1E,OAAO;QACH,YAAY;QACZ,qBAAqB;QACrB,iBAAiB;QACjB,mBAAmB;QACnB,YAAY;QACZ,qBAAqB;QACrB,YAAY;QACZ,aAAa;KAChB,CAAC;AACN,CAAC"}
1
+ {"version":3,"file":"useHeaderData.js","sourceRoot":"","sources":["../../../../src/containers/Header/hooks/useHeaderData.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,EAAC,SAAS,EAAC,MAAM,8BAA8B,CAAC;AACvD,OAAO,EAAC,eAAe,EAAC,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EAAC,oBAAoB,EAAC,MAAM,kDAAkD,CAAC;AACtF,OAAO,EAAC,gBAAgB,EAAC,MAAM,8CAA8C,CAAC;AAC9E,OAAO,EAAC,mBAAmB,EAAC,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAC,yBAAyB,EAAC,MAAM,uDAAuD,CAAC;AAEhG,OAAO,EAAC,cAAc,EAAC,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAC,eAAe,EAAC,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAC,qBAAqB,EAAC,MAAM,yBAAyB,CAAC;AAU9D,MAAM,UAAU,aAAa,CAAC,EAC1B,sBAAsB,EACtB,QAAQ,EACR,WAAW,EACX,cAAc,EACd,kBAAkB,GACA;IAClB,MAAM,EACF,YAAY,EACZ,UAAU,EACV,qBAAqB,EACrB,iBAAiB,EACjB,mBAAmB,GACtB,GAAG,cAAc,CAAC;QACf,sBAAsB;QACtB,kBAAkB;KACrB,CAAC,CAAC;IAEH,MAAM,EAAC,YAAY,EAAE,qBAAqB,EAAE,iBAAiB,EAAC,GAAG,eAAe,CAAC;QAC7E,sBAAsB;QACtB,QAAQ;QACR,WAAW;QACX,cAAc;QACd,UAAU;KACb,CAAC,CAAC;IAEH,MAAM,YAAY,GAAG,qBAAqB,EAAE,CAAC;IAE7C,MAAM,qBAAqB,GAAG,yBAAyB,CAAC;QACpD,WAAW,EAAE,SAAS,CAAC,WAAW;QAClC,gBAAgB,EAAE,SAAS,CAAC,gBAAgB;KAC/C,CAAC,CAAC;IAEH,MAAM,mBAAmB,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE;QAC3C,MAAM,KAAK,GAAmB,EAAE,CAAC;QAEjC,IAAI,iBAAiB,EAAE,CAAC;YACpB,KAAK,CAAC,IAAI,CAAC;gBACP,KAAK,EAAE,mBAAmB;gBAC1B,GAAG,EAAE,iBAAiB;gBACtB,OAAO,EAAE,oBAAoB,CAAC,UAAU;aAC3C,CAAC,CAAC;QACP,CAAC;QAED,KAAK,CAAC,IAAI,CACN,GAAG,eAAe,CAAC,qBAAqB,EAAE,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,IAAI,EAAE,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,IAAI,CAAC,CACpF,CAAC;QAEF,OAAO,KAAK,CAAC;IACjB,CAAC,EAAE,CAAC,iBAAiB,EAAE,qBAAqB,EAAE,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,IAAI,EAAE,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,IAAI,CAAC,CAAC,CAAC;IAEvF,MAAM,aAAa,GAAG,gBAAgB,CAAC,YAAY,EAAE,mBAAmB,CAAC,CAAC;IAE1E,OAAO;QACH,YAAY;QACZ,qBAAqB;QACrB,iBAAiB;QACjB,mBAAmB;QACnB,YAAY;QACZ,qBAAqB;QACrB,YAAY;QACZ,aAAa;QACb,oBAAoB,EAAE,qBAAqB,CAAC,oBAAoB;KACnE,CAAC;AACN,CAAC"}
@@ -0,0 +1,10 @@
1
+ import type { PreparedTenant } from '../../../store/reducers/tenants/types';
2
+ import type { AdditionalTenantsProps } from '../../../types/additionalProps';
3
+ interface UseSharedDatabasePathParams {
4
+ clusterName?: string;
5
+ databaseData?: PreparedTenant;
6
+ isViewerUser?: boolean;
7
+ prepareTenantBackend?: AdditionalTenantsProps['prepareTenantBackend'];
8
+ }
9
+ export declare function useSharedDatabasePath({ clusterName, databaseData, isViewerUser, prepareTenantBackend, }: UseSharedDatabasePathParams): string | undefined;
10
+ export {};
@@ -0,0 +1,102 @@
1
+ import React from 'react';
2
+ import { skipToken } from '@reduxjs/toolkit/query';
3
+ import { getTenantBackend } from '../../../components/TenantNameWrapper/utils';
4
+ import { getTenantPath } from '../../../routes';
5
+ import { backend as activeBackend, environment } from '../../../store';
6
+ import { useClusterBaseInfo } from '../../../store/reducers/cluster/cluster';
7
+ import { tenantsApi } from '../../../store/reducers/tenants/tenants';
8
+ import { uiFactory } from '../../../uiFactory/uiFactory';
9
+ import { useDatabasesV2 } from '../../../utils/hooks/useDatabasesV2';
10
+ import { useIsUserAllowedToMakeChanges } from '../../../utils/hooks/useIsUserAllowedToMakeChanges';
11
+ function canResolveSharedDatabaseName({ databaseData, isClusterBaseInfoResolved, isViewerUser, useDatabaseId, }) {
12
+ return Boolean(isViewerUser &&
13
+ isClusterBaseInfoResolved &&
14
+ (databaseData === null || databaseData === void 0 ? void 0 : databaseData.Type) === 'Serverless' &&
15
+ databaseData.ResourceId &&
16
+ !useDatabaseId &&
17
+ !databaseData.sharedTenantName);
18
+ }
19
+ function getSharedDatabaseBackend(sharedDatabase, prepareTenantBackend) {
20
+ var _a;
21
+ if (!sharedDatabase) {
22
+ return activeBackend;
23
+ }
24
+ return ((_a = getTenantBackend({ NodeIds: sharedDatabase.nodeIds }, { prepareTenantBackend })) !== null && _a !== void 0 ? _a : activeBackend);
25
+ }
26
+ function shouldResolveSharedDatabaseNodeIds(balancer, settings, prepareTenantBackend) {
27
+ const useMetaProxy = Boolean(window.api.meta && uiFactory.useMetaProxy && (settings === null || settings === void 0 ? void 0 : settings.use_meta_proxy) !== false);
28
+ return Boolean(balancer && !useMetaProxy && prepareTenantBackend && !prepareTenantBackend(undefined));
29
+ }
30
+ function getResolvedSharedDatabasePath({ backend, clusterName, databaseData, isClusterBaseInfoResolved, isViewerUser, sharedDatabase, }) {
31
+ if (!isViewerUser ||
32
+ !isClusterBaseInfoResolved ||
33
+ (databaseData === null || databaseData === void 0 ? void 0 : databaseData.Type) !== 'Serverless' ||
34
+ !sharedDatabase) {
35
+ return undefined;
36
+ }
37
+ return getTenantPath({ clusterName, database: sharedDatabase, backend }, { withBasename: true, environment });
38
+ }
39
+ export function useSharedDatabasePath({ clusterName, databaseData, isViewerUser, prepareTenantBackend, }) {
40
+ const isMetaDatabasesAvailable = useDatabasesV2();
41
+ const { balancer, settings, isError: isClusterBaseInfoError, isResolved: isClusterBaseInfoResolved, } = useClusterBaseInfo();
42
+ const isMonitoringAllowed = useIsUserAllowedToMakeChanges();
43
+ const isClusterBaseInfoAvailable = isClusterBaseInfoResolved && !isClusterBaseInfoError;
44
+ const useDatabaseId = uiFactory.useDatabaseId && (settings === null || settings === void 0 ? void 0 : settings.use_meta_proxy) !== false;
45
+ const needSharedDatabaseNodeIds = shouldResolveSharedDatabaseNodeIds(balancer, settings, prepareTenantBackend);
46
+ const shouldResolveSharedDatabaseName = canResolveSharedDatabaseName({
47
+ databaseData,
48
+ isClusterBaseInfoResolved: isClusterBaseInfoAvailable,
49
+ isViewerUser,
50
+ useDatabaseId,
51
+ });
52
+ const shouldResolveSharedDatabaseFromViewer = shouldResolveSharedDatabaseName && !window.api.meta;
53
+ const { currentData: sharedDatabaseFromViewer } = tenantsApi.useGetSharedDatabaseQuery(shouldResolveSharedDatabaseFromViewer && (databaseData === null || databaseData === void 0 ? void 0 : databaseData.ResourceId)
54
+ ? {
55
+ clusterName,
56
+ database: databaseData.Name,
57
+ backend: activeBackend,
58
+ environmentName: environment,
59
+ isMonitoringAllowed: isMonitoringAllowed === true,
60
+ needNodeIds: needSharedDatabaseNodeIds,
61
+ resourceId: databaseData.ResourceId,
62
+ }
63
+ : skipToken);
64
+ const shouldResolveSharedDatabaseFromMetaList = shouldResolveSharedDatabaseName && Boolean(window.api.meta);
65
+ const { currentData: databases } = tenantsApi.useGetTenantsInfoQuery(shouldResolveSharedDatabaseFromMetaList
66
+ ? { clusterName, environmentName: environment, isMetaDatabasesAvailable }
67
+ : skipToken);
68
+ const sharedDatabaseTarget = React.useMemo(() => {
69
+ var _a;
70
+ if (databaseData === null || databaseData === void 0 ? void 0 : databaseData.sharedTenantName) {
71
+ return {
72
+ name: databaseData.sharedTenantName,
73
+ nodeIds: databaseData.sharedNodeIds,
74
+ };
75
+ }
76
+ if (sharedDatabaseFromViewer) {
77
+ return sharedDatabaseFromViewer;
78
+ }
79
+ const sharedDatabase = databases === null || databases === void 0 ? void 0 : databases.find(({ Id }) => Id === (databaseData === null || databaseData === void 0 ? void 0 : databaseData.ResourceId));
80
+ const sharedDatabaseName = (_a = sharedDatabase === null || sharedDatabase === void 0 ? void 0 : sharedDatabase.Name) === null || _a === void 0 ? void 0 : _a.trim();
81
+ return sharedDatabaseName
82
+ ? { name: sharedDatabaseName, nodeIds: sharedDatabase === null || sharedDatabase === void 0 ? void 0 : sharedDatabase.NodeIds }
83
+ : undefined;
84
+ }, [
85
+ databaseData === null || databaseData === void 0 ? void 0 : databaseData.ResourceId,
86
+ databaseData === null || databaseData === void 0 ? void 0 : databaseData.sharedNodeIds,
87
+ databaseData === null || databaseData === void 0 ? void 0 : databaseData.sharedTenantName,
88
+ databases,
89
+ sharedDatabaseFromViewer,
90
+ ]);
91
+ const sharedDatabase = useDatabaseId ? databaseData === null || databaseData === void 0 ? void 0 : databaseData.ResourceId : sharedDatabaseTarget === null || sharedDatabaseTarget === void 0 ? void 0 : sharedDatabaseTarget.name;
92
+ const backend = getSharedDatabaseBackend(sharedDatabaseTarget, prepareTenantBackend);
93
+ return getResolvedSharedDatabasePath({
94
+ backend,
95
+ clusterName,
96
+ databaseData,
97
+ isClusterBaseInfoResolved: isClusterBaseInfoAvailable,
98
+ isViewerUser,
99
+ sharedDatabase,
100
+ });
101
+ }
102
+ //# sourceMappingURL=useSharedDatabasePath.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useSharedDatabasePath.js","sourceRoot":"","sources":["../../../../src/containers/Header/hooks/useSharedDatabasePath.ts"],"names":[],"mappings":"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"}
@@ -15,6 +15,7 @@
15
15
  "action_edit-cluster": "Edit Cluster",
16
16
  "action_delete-cluster": "Delete Cluster",
17
17
  "action_connect-to-db": "Connect to database",
18
+ "action_go-to-shared-db": "Go to shared database",
18
19
  "action_manage": "Manage",
19
20
  "title_developer-ui": "Developer UI",
20
21
  "description_developer-ui": "Developer interface with a full set\nof administrative functions",
@@ -1 +1 @@
1
- export declare const headerKeyset: (key: "title_monitoring" | "breadcrumbs.clusters" | "breadcrumbs.databases" | "breadcrumbs.tenant" | "breadcrumbs.node" | "breadcrumbs.pDisk" | "breadcrumbs.vDisk" | "breadcrumbs.tablet" | "breadcrumbs.tablets" | "breadcrumbs.storageGroup" | "title_connect" | "title_add-cluster" | "action_edit-db" | "action_delete-db" | "action_edit-cluster" | "action_delete-cluster" | "action_connect-to-db" | "action_manage" | "title_developer-ui" | "description_developer-ui" | "description_connect-to-db" | "action_copy-path", params?: import("@gravity-ui/i18n").Params) => string;
1
+ export declare const headerKeyset: (key: "title_monitoring" | "breadcrumbs.clusters" | "breadcrumbs.databases" | "breadcrumbs.tenant" | "breadcrumbs.node" | "breadcrumbs.pDisk" | "breadcrumbs.vDisk" | "breadcrumbs.tablet" | "breadcrumbs.tablets" | "breadcrumbs.storageGroup" | "title_connect" | "title_add-cluster" | "action_edit-db" | "action_delete-db" | "action_edit-cluster" | "action_delete-cluster" | "action_connect-to-db" | "action_go-to-shared-db" | "action_manage" | "title_developer-ui" | "description_developer-ui" | "description_connect-to-db" | "action_copy-path", params?: import("@gravity-ui/i18n").Params) => string;
@@ -18,7 +18,7 @@ export declare const COLUMNS_TITLES: {
18
18
  readonly duration: string;
19
19
  readonly state: string;
20
20
  };
21
- export declare const BASE_COLUMNS: ("status" | "id" | "created_by" | "create_time" | "end_time" | "duration")[];
21
+ export declare const BASE_COLUMNS: ("id" | "status" | "created_by" | "create_time" | "end_time" | "duration")[];
22
22
  export declare const OPERATION_KINDS: {
23
23
  value: OperationKind;
24
24
  content: string;
@@ -1,2 +1,2 @@
1
- declare const _default: (key: "space" | "type" | "limit" | "used" | "state" | "disk-usage" | "pdisks" | "group-size-in-units" | "vdisks" | "pool-name" | "pile-name" | "encryption" | "erasure" | "degraded" | "missing-disks" | "usage" | "group-id" | "read" | "write" | "latency" | "allocation-units" | "vdisks-pdisks", params?: import("@gravity-ui/i18n").Params) => string;
1
+ declare const _default: (key: "type" | "space" | "limit" | "used" | "state" | "disk-usage" | "pdisks" | "group-size-in-units" | "vdisks" | "pool-name" | "pile-name" | "encryption" | "erasure" | "degraded" | "missing-disks" | "usage" | "group-id" | "read" | "write" | "latency" | "allocation-units" | "vdisks-pdisks", params?: import("@gravity-ui/i18n").Params) => string;
2
2
  export default _default;
@@ -2,13 +2,13 @@ import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import React from 'react';
3
3
  import { skipToken } from '@reduxjs/toolkit/query';
4
4
  import { isNil } from 'lodash';
5
- import { StringParam, useQueryParams } from 'use-query-params';
6
5
  import { useClusterWithProxy } from '../../store/reducers/cluster/cluster';
7
6
  import { selectTabletsWithFqdn, tabletsApi } from '../../store/reducers/tablets';
8
7
  import { ETabletState } from '../../types/api/tablet';
9
8
  import { valueIsDefined } from '../../utils';
10
9
  import { useAutoRefreshInterval, useTypedSelector } from '../../utils/hooks';
11
10
  import { TabletsTable } from './TabletsTable';
11
+ import { useTabletQueryParams } from './useTabletQueryParams';
12
12
  const TABLET_ID_SEARCH_DEBOUNCE = 1000;
13
13
  const TABLET_ID_PATTERN = /^\d+$/;
14
14
  const activeStatuses = [
@@ -32,8 +32,8 @@ export function Tablets({ nodeId, path, database, databaseFullPath, onlyActive,
32
32
  // tablet of the database via the backend. On other schema objects the
33
33
  // search remains client-side over the already loaded tablets list.
34
34
  const isDatabasePage = !isNil(path) && !isNil(databaseFullPath) && path === databaseFullPath;
35
- const [{ tabletsSearch }] = useQueryParams({ tabletsSearch: StringParam });
36
- const currentSearch = tabletsSearch !== null && tabletsSearch !== void 0 ? tabletsSearch : '';
35
+ const { tabletsSearch } = useTabletQueryParams();
36
+ const currentSearch = tabletsSearch;
37
37
  // Debounce the search value before sending it to the backend, since the
38
38
  // request can be heavy.
39
39
  const [debouncedSearch, setDebouncedSearch] = React.useState(currentSearch);
@@ -1 +1 @@
1
- {"version":3,"file":"Tablets.js","sourceRoot":"","sources":["../../../src/containers/Tablets/Tablets.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Tablets.js","sourceRoot":"","sources":["../../../src/containers/Tablets/Tablets.tsx"],"names":[],"mappings":"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"}
@@ -1,9 +1,8 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import React from 'react';
3
3
  import { ArrowRotateLeft } from '@gravity-ui/icons';
4
- import { Icon, Text } from '@gravity-ui/uikit';
4
+ import { Icon, Select, Text } from '@gravity-ui/uikit';
5
5
  import { isNil } from 'lodash';
6
- import { StringParam, useQueryParams } from 'use-query-params';
7
6
  import { ButtonWithConfirmDialog } from '../../components/ButtonWithConfirmDialog/ButtonWithConfirmDialog';
8
7
  import { EntitiesCount } from '../../components/EntitiesCount';
9
8
  import { EntityName } from '../../components/EntityName/EntityName';
@@ -20,6 +19,8 @@ import { ETabletState } from '../../types/api/tablet';
20
19
  import { DEFAULT_TABLE_SETTINGS, EMPTY_DATA_PLACEHOLDER } from '../../utils/constants';
21
20
  import { useIsUserAllowedToMakeChanges } from '../../utils/hooks/useIsUserAllowedToMakeChanges';
22
21
  import i18n from './i18n';
22
+ import { useTabletQueryParams } from './useTabletQueryParams';
23
+ import { filterTablets, getAvailableTabletTypes } from './utils';
23
24
  function isFollowerTablet(state) {
24
25
  return state.Leader === false;
25
26
  }
@@ -154,37 +155,26 @@ function TabletActions(tablet) {
154
155
  }, buttonDisabled: isDisabledRestart || !isUserAllowedToMakeChanges, withPopover: true, popoverContent: popoverContent, popoverPlacement: ['right', 'bottom'], popoverDisabled: false, children: _jsx(Icon, { data: ArrowRotateLeft }) }));
155
156
  }
156
157
  export function TabletsTable({ tablets, loading, error, scrollContainerRef, nodeId, backendSearchActive, }) {
157
- const [{ tabletsSearch }, setQueryParams] = useQueryParams({
158
- tabletsSearch: StringParam,
159
- });
158
+ const { tabletsSearch, tabletTypes, handleTabletsSearchChange, handleTabletTypesChange } = useTabletQueryParams();
160
159
  // Track sort state for scroll dependencies
161
160
  const [sortParams, setSortParams] = React.useState();
162
161
  const { filteredTablets, showEndOfRange } = React.useMemo(() => {
163
- var _a;
164
- let showEnd = false;
165
- if (backendSearchActive) {
166
- // Backend already filtered the list; just scan once for showEndOfRange.
167
- for (const tablet of tablets) {
168
- if (tablet.EndOfRangeKeyPrefix) {
169
- showEnd = true;
170
- break;
171
- }
172
- }
173
- return { filteredTablets: tablets, showEndOfRange: showEnd };
174
- }
175
- const preparedTabletsSearch = (_a = tabletsSearch === null || tabletsSearch === void 0 ? void 0 : tabletsSearch.trim()) !== null && _a !== void 0 ? _a : '';
176
162
  return {
177
- filteredTablets: tablets.filter((tablet) => {
178
- showEnd = showEnd || Boolean(tablet.EndOfRangeKeyPrefix);
179
- return String(tablet.TabletId).includes(preparedTabletsSearch);
163
+ filteredTablets: filterTablets(tablets, {
164
+ tabletIdSearch: backendSearchActive ? undefined : tabletsSearch,
165
+ tabletTypes,
180
166
  }),
181
- showEndOfRange: showEnd,
167
+ showEndOfRange: tablets.some((tablet) => Boolean(tablet.EndOfRangeKeyPrefix)),
182
168
  };
183
- }, [tablets, tabletsSearch, backendSearchActive]);
169
+ }, [tablets, tabletsSearch, tabletTypes, backendSearchActive]);
170
+ const tabletTypeOptions = React.useMemo(() => {
171
+ return getAvailableTabletTypes(tablets, tabletTypes).map((tabletType) => ({
172
+ value: tabletType,
173
+ content: tabletType,
174
+ }));
175
+ }, [tablets, tabletTypes]);
184
176
  const columns = React.useMemo(() => getColumns({ nodeId, showEndOfRange }), [nodeId, showEndOfRange]);
185
- const handleSearchQueryChange = (value) => {
186
- setQueryParams({ tabletsSearch: value || undefined }, 'replaceIn');
187
- };
188
- return (_jsxs(TableWithControlsLayout, { fullHeight: true, children: [_jsxs(TableWithControlsLayout.Controls, { children: [_jsx(Search, { placeholder: i18n('controls.search-placeholder'), onChange: handleSearchQueryChange, value: tabletsSearch !== null && tabletsSearch !== void 0 ? tabletsSearch : '', width: 238 }), _jsx(EntitiesCount, { label: i18n('controls.entities-count-label'), loading: loading, total: tablets.length, current: filteredTablets.length })] }), error ? _jsx(ResponseError, { error: error }) : null, _jsx(TableWithControlsLayout.Table, { scrollContainerRef: scrollContainerRef, scrollDependencies: [tabletsSearch, sortParams], loading: loading, children: _jsx(ResizeableDataTable, { columns: columns, data: filteredTablets, settings: DEFAULT_TABLE_SETTINGS, emptyDataMessage: i18n('noTabletsData'), onSortChange: setSortParams }) })] }));
177
+ const filtersActive = Boolean(tabletsSearch.trim()) || tabletTypes.length > 0;
178
+ return (_jsxs(TableWithControlsLayout, { fullHeight: true, children: [_jsxs(TableWithControlsLayout.Controls, { children: [_jsx(Search, { placeholder: i18n('controls.search-placeholder'), onChange: handleTabletsSearchChange, value: tabletsSearch, width: 238 }), _jsx(Select, { multiple: true, filterable: true, hasClear: true, qa: "tablets-type-filter", "aria-label": i18n('controls.type-filter-label'), label: i18n('controls.type-filter-label'), placeholder: i18n('controls.type-filter-placeholder'), value: tabletTypes, options: tabletTypeOptions, onUpdate: handleTabletTypesChange, width: 220 }), _jsx(EntitiesCount, { label: i18n('controls.entities-count-label'), loading: loading, total: tablets.length, current: filteredTablets.length })] }), error ? _jsx(ResponseError, { error: error }) : null, _jsx(TableWithControlsLayout.Table, { scrollContainerRef: scrollContainerRef, scrollDependencies: [tabletsSearch, tabletTypes, sortParams], loading: loading, children: _jsx(ResizeableDataTable, { columns: columns, data: filteredTablets, settings: DEFAULT_TABLE_SETTINGS, emptyDataMessage: filtersActive ? i18n('noTabletsMatchFilters') : i18n('noTabletsData'), onSortChange: setSortParams }) })] }));
189
179
  }
190
180
  //# sourceMappingURL=TabletsTable.js.map