ydb-embedded-ui 11.1.1 → 11.3.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 (184) hide show
  1. package/dist/components/DoughnutMetrics/DoughnutMetrics.d.ts +5 -3
  2. package/dist/components/DoughnutMetrics/DoughnutMetrics.js +18 -8
  3. package/dist/components/DoughnutMetrics/DoughnutMetrics.js.map +1 -1
  4. package/dist/components/DoughnutMetrics/DoughnutMetrics.scss +38 -27
  5. package/dist/components/MetricChart/MetricChart.d.ts +4 -9
  6. package/dist/components/MetricChart/MetricChart.js +10 -6
  7. package/dist/components/MetricChart/MetricChart.js.map +1 -1
  8. package/dist/components/MetricChart/MetricChart.scss +5 -7
  9. package/dist/components/MetricChart/reducer.d.ts +2 -2
  10. package/dist/components/QueriesActivityBar/QueriesActivityBar.js +5 -2
  11. package/dist/components/QueriesActivityBar/QueriesActivityBar.js.map +1 -1
  12. package/dist/components/QueriesActivityBar/QueriesActivityBar.scss +18 -21
  13. package/dist/components/QueriesActivityBar/QueriesActivityCharts.js +1 -13
  14. package/dist/components/QueriesActivityBar/QueriesActivityCharts.js.map +1 -1
  15. package/dist/components/SpeedMultiMeter/SpeedMultiMeter.scss +3 -0
  16. package/dist/components/VDiskInfo/VDiskInfo.js +43 -2
  17. package/dist/components/VDiskInfo/VDiskInfo.js.map +1 -1
  18. package/dist/components/VDiskInfo/i18n/en.json +3 -0
  19. package/dist/components/VDiskInfo/i18n/index.d.ts +1 -1
  20. package/dist/components/VDiskPopup/VDiskPopup.js +21 -2
  21. package/dist/components/VDiskPopup/VDiskPopup.js.map +1 -1
  22. package/dist/containers/App/App.d.ts +3 -10
  23. package/dist/containers/App/App.js +11 -8
  24. package/dist/containers/App/App.js.map +1 -1
  25. package/dist/containers/App/App.scss +1 -1
  26. package/dist/containers/App/AppTitleContext.d.ts +11 -0
  27. package/dist/containers/App/AppTitleContext.js +14 -0
  28. package/dist/containers/App/AppTitleContext.js.map +1 -0
  29. package/dist/containers/App/Providers.d.ts +2 -1
  30. package/dist/containers/App/Providers.js +3 -2
  31. package/dist/containers/App/Providers.js.map +1 -1
  32. package/dist/containers/AppWithClusters/AppWithClusters.d.ts +2 -1
  33. package/dist/containers/AppWithClusters/AppWithClusters.js +2 -2
  34. package/dist/containers/AppWithClusters/AppWithClusters.js.map +1 -1
  35. package/dist/containers/Cluster/Cluster.js +3 -1
  36. package/dist/containers/Cluster/Cluster.js.map +1 -1
  37. package/dist/containers/Cluster/ClusterOverview/components/ClusterMetricsCores.js +1 -11
  38. package/dist/containers/Cluster/ClusterOverview/components/ClusterMetricsCores.js.map +1 -1
  39. package/dist/containers/Cluster/ClusterOverview/components/ClusterMetricsMemory.js +1 -5
  40. package/dist/containers/Cluster/ClusterOverview/components/ClusterMetricsMemory.js.map +1 -1
  41. package/dist/containers/Cluster/ClusterOverview/components/ClusterMetricsStorage.js +1 -5
  42. package/dist/containers/Cluster/ClusterOverview/components/ClusterMetricsStorage.js.map +1 -1
  43. package/dist/containers/Node/Node.js +3 -1
  44. package/dist/containers/Node/Node.js.map +1 -1
  45. package/dist/containers/Operations/useOperationsInfiniteQuery.d.ts +1 -1
  46. package/dist/containers/PDiskPage/PDiskPage.js +3 -1
  47. package/dist/containers/PDiskPage/PDiskPage.js.map +1 -1
  48. package/dist/containers/StorageGroupPage/StorageGroupPage.js +3 -1
  49. package/dist/containers/StorageGroupPage/StorageGroupPage.js.map +1 -1
  50. package/dist/containers/Tablet/Tablet.js +5 -6
  51. package/dist/containers/Tablet/Tablet.js.map +1 -1
  52. package/dist/containers/Tenant/Diagnostics/TenantOverview/DefaultOverviewContent/defaultDashboardConfig.js +1 -1
  53. package/dist/containers/Tenant/Diagnostics/TenantOverview/DefaultOverviewContent/defaultDashboardConfig.js.map +1 -1
  54. package/dist/containers/Tenant/Diagnostics/TenantOverview/Healthcheck/HealthcheckPreview.scss +1 -0
  55. package/dist/containers/Tenant/Diagnostics/TenantOverview/MetricsCards/MetricsCards.d.ts +0 -8
  56. package/dist/containers/Tenant/Diagnostics/TenantOverview/MetricsCards/MetricsCards.js +26 -93
  57. package/dist/containers/Tenant/Diagnostics/TenantOverview/MetricsCards/MetricsCards.js.map +1 -1
  58. package/dist/containers/Tenant/Diagnostics/TenantOverview/MetricsCards/MetricsCards.scss +219 -5
  59. package/dist/containers/Tenant/Diagnostics/TenantOverview/TabCard/TabCard.d.ts +16 -0
  60. package/dist/containers/Tenant/Diagnostics/TenantOverview/TabCard/TabCard.js +16 -0
  61. package/dist/containers/Tenant/Diagnostics/TenantOverview/TabCard/TabCard.js.map +1 -0
  62. package/dist/containers/Tenant/Diagnostics/TenantOverview/TabCard/TabCard.scss +29 -0
  63. package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantDashboard/TenantDashboard.js +3 -11
  64. package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantDashboard/TenantDashboard.js.map +1 -1
  65. package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantDashboard/TenantDashboard.scss +0 -8
  66. package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantOverview.js +2 -6
  67. package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantOverview.js.map +1 -1
  68. package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantOverview.scss +13 -2
  69. package/dist/containers/Tenant/Diagnostics/TenantOverview/i18n/en.json +11 -3
  70. package/dist/containers/Tenant/Diagnostics/TenantOverview/i18n/index.d.ts +1 -1
  71. package/dist/containers/Tenant/Query/Preview/components/TablePreview.js +5 -1
  72. package/dist/containers/Tenant/Query/Preview/components/TablePreview.js.map +1 -1
  73. package/dist/containers/Tenant/Query/Preview/components/TablePreview.test.d.ts +1 -0
  74. package/dist/containers/Tenant/Query/Preview/components/TablePreview.test.js +28 -0
  75. package/dist/containers/Tenant/Query/Preview/components/TablePreview.test.js.map +1 -0
  76. package/dist/containers/Tenant/Tenant.js +3 -1
  77. package/dist/containers/Tenant/Tenant.js.map +1 -1
  78. package/dist/containers/VDiskPage/VDiskPage.js +58 -10
  79. package/dist/containers/VDiskPage/VDiskPage.js.map +1 -1
  80. package/dist/containers/VDiskPage/VDiskPage.scss +3 -4
  81. package/dist/containers/VDiskPage/VDiskTablets/VDiskTablets.d.ts +8 -0
  82. package/dist/containers/VDiskPage/VDiskTablets/VDiskTablets.js +64 -0
  83. package/dist/containers/VDiskPage/VDiskTablets/VDiskTablets.js.map +1 -0
  84. package/dist/containers/VDiskPage/VDiskTablets/VDiskTablets.scss +0 -0
  85. package/dist/containers/VDiskPage/VDiskTablets/columns.d.ts +3 -0
  86. package/dist/containers/VDiskPage/VDiskTablets/columns.js +60 -0
  87. package/dist/containers/VDiskPage/VDiskTablets/columns.js.map +1 -0
  88. package/dist/containers/VDiskPage/VDiskTablets/constants.d.ts +12 -0
  89. package/dist/containers/VDiskPage/VDiskTablets/constants.js +14 -0
  90. package/dist/containers/VDiskPage/VDiskTablets/constants.js.map +1 -0
  91. package/dist/containers/VDiskPage/VDiskTablets/index.d.ts +1 -0
  92. package/dist/containers/VDiskPage/VDiskTablets/index.js +2 -0
  93. package/dist/containers/VDiskPage/VDiskTablets/index.js.map +1 -0
  94. package/dist/containers/VDiskPage/i18n/en.json +5 -0
  95. package/dist/containers/VDiskPage/i18n/index.d.ts +1 -1
  96. package/dist/services/api/viewer.d.ts +6 -0
  97. package/dist/services/api/viewer.js +7 -0
  98. package/dist/services/api/viewer.js.map +1 -1
  99. package/dist/store/configureStore.d.ts +7 -5
  100. package/dist/store/configureStore.js +4 -5
  101. package/dist/store/configureStore.js.map +1 -1
  102. package/dist/store/defaultStore.d.ts +2 -2
  103. package/dist/store/reducers/api.d.ts +1 -1
  104. package/dist/store/reducers/api.js +1 -0
  105. package/dist/store/reducers/api.js.map +1 -1
  106. package/dist/store/reducers/authentication/authentication.d.ts +4 -4
  107. package/dist/store/reducers/cancelQuery.d.ts +2 -2
  108. package/dist/store/reducers/capabilities/capabilities.d.ts +31 -31
  109. package/dist/store/reducers/cluster/cluster.d.ts +5 -5
  110. package/dist/store/reducers/clusters/clusters.d.ts +2 -2
  111. package/dist/store/reducers/codeAssist/codeAssist.d.ts +6 -6
  112. package/dist/store/reducers/executeTopQueries/executeTopQueries.d.ts +3 -3
  113. package/dist/store/reducers/healthcheckInfo/healthcheckInfo.d.ts +44 -44
  114. package/dist/store/reducers/heatmap.d.ts +2 -2
  115. package/dist/store/reducers/hotKeys/hotKeys.d.ts +2 -2
  116. package/dist/store/reducers/index.d.ts +3 -3
  117. package/dist/store/reducers/network/network.d.ts +2 -2
  118. package/dist/store/reducers/node/node.d.ts +3 -3
  119. package/dist/store/reducers/node/selectors.d.ts +1 -1
  120. package/dist/store/reducers/nodes/nodes.d.ts +2 -2
  121. package/dist/store/reducers/nodesList.d.ts +3 -3
  122. package/dist/store/reducers/operations.d.ts +4 -4
  123. package/dist/store/reducers/overview/overview.d.ts +2 -2
  124. package/dist/store/reducers/partitions/partitions.d.ts +2 -2
  125. package/dist/store/reducers/pdisk/pdisk.d.ts +2 -2
  126. package/dist/store/reducers/planToSvg.d.ts +2 -2
  127. package/dist/store/reducers/preview.d.ts +2 -2
  128. package/dist/store/reducers/query/query.d.ts +3 -3
  129. package/dist/store/reducers/replication.d.ts +2 -2
  130. package/dist/store/reducers/schema/schema.d.ts +16 -16
  131. package/dist/store/reducers/schemaAcl/schemaAcl.d.ts +39 -39
  132. package/dist/store/reducers/shardsWorkload/shardsWorkload.d.ts +2 -2
  133. package/dist/store/reducers/storage/storage.d.ts +3 -3
  134. package/dist/store/reducers/tableData.d.ts +1 -1
  135. package/dist/store/reducers/tableSchemaData.d.ts +2 -2
  136. package/dist/store/reducers/tablet.d.ts +7 -7
  137. package/dist/store/reducers/tablets.d.ts +3 -3
  138. package/dist/store/reducers/tenant/tenant.d.ts +4 -3
  139. package/dist/store/reducers/tenant/tenant.js +7 -2
  140. package/dist/store/reducers/tenant/tenant.js.map +1 -1
  141. package/dist/store/reducers/tenant/types.d.ts +1 -1
  142. package/dist/store/reducers/tenantOverview/executeTopTables/executeTopTables.d.ts +2 -2
  143. package/dist/store/reducers/tenantOverview/topShards/tenantOverviewTopShards.d.ts +2 -2
  144. package/dist/store/reducers/tenants/selectors.d.ts +21 -21
  145. package/dist/store/reducers/tenants/tenants.d.ts +2 -2
  146. package/dist/store/reducers/topic.d.ts +45 -45
  147. package/dist/store/reducers/vdisk/vdisk.d.ts +3 -2
  148. package/dist/store/reducers/vdisk/vdisk.js +18 -0
  149. package/dist/store/reducers/vdisk/vdisk.js.map +1 -1
  150. package/dist/store/reducers/viewSchema/viewSchema.d.ts +2 -2
  151. package/dist/store/state-url-mapping.d.ts +1 -0
  152. package/dist/store/state-url-mapping.js +2 -0
  153. package/dist/store/state-url-mapping.js.map +1 -1
  154. package/dist/types/api/vdiskBlobIndex.d.ts +64 -0
  155. package/dist/types/api/vdiskBlobIndex.js +7 -0
  156. package/dist/types/api/vdiskBlobIndex.js.map +1 -0
  157. package/dist/utils/disks/prepareDisks.js +20 -1
  158. package/dist/utils/disks/prepareDisks.js.map +1 -1
  159. package/dist/utils/metrics/formatMetricLegend.d.ts +6 -0
  160. package/dist/utils/metrics/formatMetricLegend.js +17 -0
  161. package/dist/utils/metrics/formatMetricLegend.js.map +1 -0
  162. package/dist/utils/metrics/i18n/en.json +4 -0
  163. package/dist/utils/metrics/i18n/index.d.ts +2 -0
  164. package/dist/utils/metrics/i18n/index.js +5 -0
  165. package/dist/utils/metrics/i18n/index.js.map +1 -0
  166. package/dist/utils/metrics.d.ts +42 -0
  167. package/dist/utils/metrics.js +58 -0
  168. package/dist/utils/metrics.js.map +1 -0
  169. package/package.json +2 -1
  170. package/dist/components/DiagnosticCard/DiagnosticCard.d.ts +0 -9
  171. package/dist/components/DiagnosticCard/DiagnosticCard.js +0 -8
  172. package/dist/components/DiagnosticCard/DiagnosticCard.js.map +0 -1
  173. package/dist/components/DiagnosticCard/DiagnosticCard.scss +0 -35
  174. package/dist/components/TimeFrameSelector/TimeFrameSelector.d.ts +0 -9
  175. package/dist/components/TimeFrameSelector/TimeFrameSelector.js +0 -12
  176. package/dist/components/TimeFrameSelector/TimeFrameSelector.js.map +0 -1
  177. package/dist/components/TimeFrameSelector/TimeFrameSelector.scss +0 -4
  178. package/dist/containers/Tenant/Diagnostics/TenantOverview/DefaultOverviewContent/DefaultOverviewContent.d.ts +0 -5
  179. package/dist/containers/Tenant/Diagnostics/TenantOverview/DefaultOverviewContent/DefaultOverviewContent.js +0 -7
  180. package/dist/containers/Tenant/Diagnostics/TenantOverview/DefaultOverviewContent/DefaultOverviewContent.js.map +0 -1
  181. package/dist/containers/Tenant/Diagnostics/TenantOverview/MetricsCards/MetricCard/MetricCard.d.ts +0 -16
  182. package/dist/containers/Tenant/Diagnostics/TenantOverview/MetricsCards/MetricCard/MetricCard.js +0 -37
  183. package/dist/containers/Tenant/Diagnostics/TenantOverview/MetricsCards/MetricCard/MetricCard.js.map +0 -1
  184. package/dist/containers/Tenant/Diagnostics/TenantOverview/MetricsCards/MetricCard/MetricCard.scss +0 -48
@@ -1,12 +1,226 @@
1
- .metrics-cards {
2
- display: flex;
3
- gap: 16px;
1
+ // Mixins for pseudo-element patterns
4
2
 
5
- margin-bottom: 32px;
3
+ /**
4
+ * Base mixin for creating positioned pseudo-elements with consistent sizing
5
+ * Used as foundation for all tab filler pseudo-elements
6
+ * @param {string} $side - Which side to position the element (left|right)
7
+ * @param {length} $height - Height of the pseudo-element
8
+ */
6
9
 
7
- &__tab {
10
+ @mixin pseudo-base($side: left, $height: var(--tab-filler-size)) {
11
+ position: absolute;
12
+ top: 100%;
13
+ #{$side}: 0;
14
+ width: var(--tab-filler-size);
15
+ height: $height;
16
+
17
+ content: '';
18
+
19
+ background-color: var(--g-color-base-background);
20
+ }
21
+
22
+ /**
23
+ * Creates a vertical filler for active tab states
24
+ * Used to extend the active tab's background below the container
25
+ * @param {string} $side - Which side to position the filler (left|right)
26
+ */
27
+
28
+ @mixin pseudo-active-filler($side: left) {
29
+ @include pseudo-base($side, var(--g-spacing-3));
30
+ border-#{$side}: var(--tab-border-width) solid var(--g-color-line-generic);
31
+ }
32
+
33
+ /**
34
+ * Creates a rounded corner filler for inactive tab states
35
+ * Provides visual separation between tabs with border and radius
36
+ * @param {string} $side - Which side to position the filler (left|right)
37
+ */
38
+
39
+ @mixin pseudo-inactive-filler($side: left) {
40
+ border-top: var(--tab-border-width) solid var(--g-color-line-generic);
41
+ @include pseudo-base($side, var(--tab-filler-size));
42
+ border-#{$side}: var(--tab-border-width) solid var(--g-color-line-generic);
43
+ border-top-#{$side}-radius: var(--g-border-radius-s);
44
+ }
45
+
46
+ /**
47
+ * Creates a simple background fill without borders
48
+ * Used as a background layer behind other pseudo-elements
49
+ * @param {string} $side - Which side to position the fill (left|right)
50
+ */
51
+
52
+ @mixin pseudo-background-fill($side: left) {
53
+ @include pseudo-base($side, var(--tab-filler-size));
54
+ }
55
+
56
+ // Utility mixins for common patterns
57
+
58
+ /**
59
+ * Consistent tab border styling for both active and inactive states
60
+ * Creates the characteristic tab shape with top and side borders only
61
+ * @param {color} $color - Border color to use
62
+ */
63
+
64
+ @mixin tab-border-base($color) {
65
+ border: var(--tab-border-width) solid $color;
66
+ border-bottom: none;
67
+ border-radius: var(--g-border-radius-s) var(--g-border-radius-s) 0 0;
68
+ }
69
+
70
+ /**
71
+ * Complete edge filler system for first/last tabs
72
+ * Handles all pseudo-element states (active/inactive, ::before/::after)
73
+ * Creates the complex tab connection visuals for edge containers
74
+ * @param {string} $side - Which edge this applies to (left|right)
75
+ */
76
+
77
+ @mixin tab-edge-filler($side) {
78
+ &.tenant-metrics-cards__link-container_active::after {
79
+ @include pseudo-active-filler($side);
80
+ }
81
+
82
+ &:not(.tenant-metrics-cards__link-container_active)::after {
83
+ @include pseudo-inactive-filler($side);
84
+ }
85
+
86
+ &:not(.tenant-metrics-cards__link-container_active)::before {
87
+ @include pseudo-background-fill($side);
88
+ }
89
+ }
90
+
91
+ .tenant-metrics-cards {
92
+ // CSS Variables for consistent design system
93
+ --tab-border-width: 1px;
94
+ --tab-filler-size: 10px;
95
+ --tab-overlap: -1px;
96
+ --tab-lift-offset: -6px;
97
+ --tab-border-compensation: 1px;
98
+ --tab-adjusted-spacing: calc(var(--g-spacing-3) - var(--tab-border-width));
99
+ --z-tab-base: 100;
100
+ --z-tab-active: 110;
101
+ --g-border-radius-xxl: 12px;
102
+
103
+ // Fallback for browsers without :has() support
104
+ @supports not selector(:has(*)) {
105
+ &__link-container:not(:last-child) {
106
+ padding-right: var(--tab-adjusted-spacing);
107
+
108
+ border-right: var(--tab-border-width) solid var(--g-color-line-generic);
109
+ border-bottom-right-radius: var(--g-border-radius-xxl);
110
+ }
111
+ }
112
+
113
+ &__link {
8
114
  text-decoration: none;
9
115
 
10
116
  color: inherit;
117
+
118
+ &:hover {
119
+ text-decoration: none;
120
+ }
121
+ }
122
+
123
+ &__link-container {
124
+ position: relative;
125
+ z-index: var(--z-tab-base);
126
+
127
+ flex: 1;
128
+
129
+ margin-left: var(--tab-overlap);
130
+ padding: 0 var(--g-spacing-3) var(--g-spacing-3) var(--g-spacing-3);
131
+
132
+ border-bottom: var(--tab-border-width) solid var(--g-color-line-generic);
133
+ background: var(--g-color-base-background);
134
+
135
+ .tenant-tab-card__card-container {
136
+ border: 1px solid transparent;
137
+ border-top: none;
138
+
139
+ & > div {
140
+ transform: translateY(1px);
141
+ }
142
+ }
143
+
144
+ &:nth-child(1) {
145
+ z-index: calc(var(--z-tab-base) + 3);
146
+ }
147
+
148
+ &:nth-child(2) {
149
+ z-index: calc(var(--z-tab-base) + 2);
150
+ }
151
+
152
+ &:nth-child(3) {
153
+ z-index: calc(var(--z-tab-base) + 1);
154
+ }
155
+
156
+ &:nth-child(4) {
157
+ z-index: calc(var(--z-tab-base) + 0);
158
+ }
159
+
160
+ // Reset edge padding for first/last elements
161
+ &:first-child {
162
+ margin-left: 0;
163
+ }
164
+
165
+ &:first-child {
166
+ padding-left: 0;
167
+ @include tab-edge-filler(left);
168
+ }
169
+
170
+ &:last-child {
171
+ margin-right: 0;
172
+ padding-right: 0;
173
+ @include tab-edge-filler(right);
174
+ }
175
+ }
176
+
177
+ &__link {
178
+ display: block;
179
+ }
180
+
181
+ // Active state styling
182
+ &__link-container_active {
183
+ z-index: var(--z-tab-active) !important;
184
+
185
+ padding: 0;
186
+
187
+ border-bottom: 0;
188
+ background: var(--g-color-base-background);
189
+
190
+ transform: translateY(var(--tab-lift-offset));
191
+
192
+ .tenant-tab-card__card-container {
193
+ border: none;
194
+ border-radius: var(--g-border-radius-xs);
195
+
196
+ & > div {
197
+ transform: translateY(0);
198
+ }
199
+ }
200
+
201
+ .tenant-metrics-cards__link {
202
+ padding-bottom: var(--tab-border-compensation);
203
+ @include tab-border-base(var(--g-color-line-generic));
204
+ }
205
+ }
206
+
207
+ // Adjacent tab styling (modern browsers with :has() support)
208
+ &__link-container:has(+ &__link-container_active) {
209
+ padding-right: var(--tab-adjusted-spacing);
210
+
211
+ border-right: var(--tab-border-width) solid var(--g-color-line-generic);
212
+ border-bottom-right-radius: var(--g-border-radius-xxl);
213
+ }
214
+
215
+ &__link-container_active + &__link-container {
216
+ padding-left: var(--tab-adjusted-spacing);
217
+
218
+ border-left: var(--tab-border-width) solid var(--g-color-line-generic);
219
+ border-bottom-left-radius: var(--g-border-radius-xxl);
220
+ }
221
+
222
+ // Reset padding for specific cases
223
+ &__link-container:not(:has(+ &__link-container_active)) {
224
+ padding-right: 0;
11
225
  }
12
226
  }
@@ -0,0 +1,16 @@
1
+ import './TabCard.scss';
2
+ interface TabCardProps {
3
+ label: string;
4
+ sublabel?: string;
5
+ value: number;
6
+ limit: number;
7
+ active?: boolean;
8
+ helpText?: string;
9
+ clickable?: boolean;
10
+ legendFormatter: (params: {
11
+ value: number;
12
+ capacity: number;
13
+ }) => string;
14
+ }
15
+ export declare function TabCard({ label, sublabel, value, limit, active, helpText, clickable, legendFormatter, }: TabCardProps): import("react/jsx-runtime").JSX.Element;
16
+ export {};
@@ -0,0 +1,16 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Card, Flex } from '@gravity-ui/uikit';
3
+ import { DoughnutMetrics } from '../../../../../components/DoughnutMetrics/DoughnutMetrics';
4
+ import { getDiagramValues } from '../../../../../containers/Cluster/ClusterOverview/utils';
5
+ import { cn } from '../../../../../utils/cn';
6
+ import './TabCard.scss';
7
+ const b = cn('tenant-tab-card');
8
+ export function TabCard({ label, sublabel, value, limit, active, helpText, clickable = true, legendFormatter, }) {
9
+ const { status, percents, legend, fill } = getDiagramValues({
10
+ value,
11
+ capacity: limit,
12
+ legendFormatter,
13
+ });
14
+ return (_jsx("div", { className: b({ active }), children: _jsx(Card, { className: b('card-container', { active, clickable }), type: "container", view: active ? 'outlined' : 'raised', children: _jsxs(Flex, { gap: 3, alignItems: "center", children: [_jsx(DoughnutMetrics, { size: "small", status: status, fillWidth: fill, className: b('doughnut'), children: _jsx(DoughnutMetrics.Value, { variant: "subheader-1", children: percents }) }), _jsxs("div", { className: b('legend-wrapper'), children: [_jsx(DoughnutMetrics.Legend, { variant: "subheader-2", children: legend }), _jsx(DoughnutMetrics.Legend, { variant: "body-1", color: "secondary", note: helpText, noteIconSize: "s", children: sublabel || label })] })] }) }) }));
15
+ }
16
+ //# sourceMappingURL=TabCard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TabCard.js","sourceRoot":"","sources":["../../../../../../src/containers/Tenant/Diagnostics/TenantOverview/TabCard/TabCard.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAC,IAAI,EAAE,IAAI,EAAC,MAAM,mBAAmB,CAAC;AAE7C,OAAO,EAAC,eAAe,EAAC,MAAM,2DAA2D,CAAC;AAC1F,OAAO,EAAC,gBAAgB,EAAC,MAAM,yDAAyD,CAAC;AACzF,OAAO,EAAC,EAAE,EAAC,MAAM,yBAAyB,CAAC;AAE3C,OAAO,gBAAgB,CAAC;AAExB,MAAM,CAAC,GAAG,EAAE,CAAC,iBAAiB,CAAC,CAAC;AAahC,MAAM,UAAU,OAAO,CAAC,EACpB,KAAK,EACL,QAAQ,EACR,KAAK,EACL,KAAK,EACL,MAAM,EACN,QAAQ,EACR,SAAS,GAAG,IAAI,EAChB,eAAe,GACJ;IACX,MAAM,EAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAC,GAAG,gBAAgB,CAAC;QACtD,KAAK;QACL,QAAQ,EAAE,KAAK;QACf,eAAe;KAClB,CAAC,CAAC;IAEH,OAAO,CACH,cAAK,SAAS,EAAE,CAAC,CAAC,EAAC,MAAM,EAAC,CAAC,YACvB,KAAC,IAAI,IACD,SAAS,EAAE,CAAC,CAAC,gBAAgB,EAAE,EAAC,MAAM,EAAE,SAAS,EAAC,CAAC,EACnD,IAAI,EAAC,WAAW,EAChB,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,YAEpC,MAAC,IAAI,IAAC,GAAG,EAAE,CAAC,EAAE,UAAU,EAAC,QAAQ,aAC7B,KAAC,eAAe,IACZ,IAAI,EAAC,OAAO,EACZ,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,IAAI,EACf,SAAS,EAAE,CAAC,CAAC,UAAU,CAAC,YAExB,KAAC,eAAe,CAAC,KAAK,IAAC,OAAO,EAAC,aAAa,YACvC,QAAQ,GACW,GACV,EAClB,eAAK,SAAS,EAAE,CAAC,CAAC,gBAAgB,CAAC,aAC/B,KAAC,eAAe,CAAC,MAAM,IAAC,OAAO,EAAC,aAAa,YACxC,MAAM,GACc,EACzB,KAAC,eAAe,CAAC,MAAM,IACnB,OAAO,EAAC,QAAQ,EAChB,KAAK,EAAC,WAAW,EACjB,IAAI,EAAE,QAAQ,EACd,YAAY,EAAC,GAAG,YAEf,QAAQ,IAAI,KAAK,GACG,IACvB,IACH,GACJ,GACL,CACT,CAAC;AACN,CAAC"}
@@ -0,0 +1,29 @@
1
+ .tenant-tab-card {
2
+ border-radius: var(--g-border-radius-s);
3
+
4
+ &__card-container {
5
+ padding: var(--g-spacing-4);
6
+
7
+ border: 0;
8
+ border-radius: var(--g-border-radius-s);
9
+ }
10
+
11
+ &__card-container_clickable {
12
+ cursor: pointer;
13
+
14
+ // Smooth hover transition
15
+ transition: background-color 0.15s ease;
16
+
17
+ &:hover {
18
+ background-color: var(--g-color-base-float-hover);
19
+ }
20
+ }
21
+
22
+ &__card-container_active {
23
+ cursor: default !important;
24
+
25
+ &:hover {
26
+ background-color: transparent;
27
+ }
28
+ }
29
+ }
@@ -1,9 +1,6 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import React from 'react';
3
- import { Flex } from '@gravity-ui/uikit';
4
- import { StringParam, useQueryParam } from 'use-query-params';
5
3
  import { MetricChart } from '../../../../../components/MetricChart';
6
- import { TimeFrameSelector } from '../../../../../components/TimeFrameSelector/TimeFrameSelector';
7
4
  import { cn } from '../../../../../utils/cn';
8
5
  import { useAutoRefreshInterval } from '../../../../../utils/hooks';
9
6
  import './TenantDashboard.scss';
@@ -12,7 +9,6 @@ const CHART_WIDTH_FULL = 872;
12
9
  const b = cn('ydb-tenant-dashboard');
13
10
  export const TenantDashboard = ({ database, charts }) => {
14
11
  const [isDashboardHidden, setIsDashboardHidden] = React.useState(true);
15
- const [timeFrame = '1h', setTimeframe] = useQueryParam('timeframe', StringParam);
16
12
  const [autoRefreshInterval] = useAutoRefreshInterval();
17
13
  // Refetch data only if dashboard successfully loaded
18
14
  const shouldRefresh = isDashboardHidden ? 0 : autoRefreshInterval;
@@ -33,13 +29,9 @@ export const TenantDashboard = ({ database, charts }) => {
33
29
  // If there is only one chart, display it with full width
34
30
  const chartWidth = charts.length === 1 ? CHART_WIDTH_FULL : CHART_WIDTH;
35
31
  const chartHeight = CHART_WIDTH / 1.5;
36
- const renderChartToolbar = React.useCallback((chartConfig) => (_jsx(Flex, { className: b('toolbar'), justifyContent: "space-between", alignItems: "center", children: _jsx("div", { children: chartConfig.title }) })), []);
37
32
  const renderContent = () => {
38
- return charts.map((chartConfig) => {
39
- const chartId = chartConfig.metrics.map(({ target }) => target).join('&');
40
- return (_jsx(MetricChart, { database: database, metrics: chartConfig.metrics, timeFrame: timeFrame, chartOptions: chartConfig.options, autorefresh: shouldRefresh, width: chartWidth, height: chartHeight, onChartDataStatusChange: handleChartDataStatusChange, isChartVisible: !isDashboardHidden, renderChartToolbar: () => renderChartToolbar(chartConfig) }, chartId));
41
- });
33
+ return charts.map((chartConfig, index) => (_jsx(MetricChart, { database: database, metrics: chartConfig.metrics, chartOptions: chartConfig.options, autorefresh: shouldRefresh, width: chartWidth, height: chartHeight, onChartDataStatusChange: handleChartDataStatusChange, isChartVisible: !isDashboardHidden, title: chartConfig.title }, index)));
42
34
  };
43
- return (_jsxs("div", { className: b(null), style: { display: isDashboardHidden ? 'none' : undefined }, children: [_jsx("div", { className: b('controls'), children: _jsx(TimeFrameSelector, { value: timeFrame, onChange: setTimeframe }) }), _jsx("div", { className: b('charts'), children: renderContent() })] }));
35
+ return (_jsx("div", { className: b(null), style: { display: isDashboardHidden ? 'none' : undefined }, children: _jsx("div", { className: b('charts'), children: renderContent() }) }));
44
36
  };
45
37
  //# sourceMappingURL=TenantDashboard.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"TenantDashboard.js","sourceRoot":"","sources":["../../../../../../src/containers/Tenant/Diagnostics/TenantOverview/TenantDashboard/TenantDashboard.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAC,IAAI,EAAC,MAAM,mBAAmB,CAAC;AACvC,OAAO,EAAC,WAAW,EAAE,aAAa,EAAC,MAAM,kBAAkB,CAAC;AAE5D,OAAO,EAAC,WAAW,EAAC,MAAM,uCAAuC,CAAC;AAMlE,OAAO,EAAC,iBAAiB,EAAC,MAAM,+DAA+D,CAAC;AAChG,OAAO,EAAC,EAAE,EAAC,MAAM,yBAAyB,CAAC;AAC3C,OAAO,EAAC,sBAAsB,EAAC,MAAM,4BAA4B,CAAC;AAGlE,OAAO,wBAAwB,CAAC;AAEhC,MAAM,WAAW,GAAG,GAAG,CAAC;AACxB,MAAM,gBAAgB,GAAG,GAAG,CAAC;AAE7B,MAAM,CAAC,GAAG,EAAE,CAAC,sBAAsB,CAAC,CAAC;AAarC,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,EAAC,QAAQ,EAAE,MAAM,EAAuB,EAAE,EAAE;IACxE,MAAM,CAAC,iBAAiB,EAAE,oBAAoB,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAU,IAAI,CAAC,CAAC;IAEhF,MAAM,CAAC,SAAS,GAAG,IAAI,EAAE,YAAY,CAAC,GAAG,aAAa,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;IAEjF,MAAM,CAAC,mBAAmB,CAAC,GAAG,sBAAsB,EAAE,CAAC;IAEvD,qDAAqD;IACrD,MAAM,aAAa,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC;IAElE;;;;;;;;OAQG;IACH,MAAM,2BAA2B,GAAG,CAAC,WAA4B,EAAE,EAAE;QACjE,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;YAC5B,oBAAoB,CAAC,KAAK,CAAC,CAAC;QAChC,CAAC;IACL,CAAC,CAAC;IAEF,yDAAyD;IACzD,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,WAAW,CAAC;IACxE,MAAM,WAAW,GAAG,WAAW,GAAG,GAAG,CAAC;IAEtC,MAAM,kBAAkB,GAAG,KAAK,CAAC,WAAW,CACxC,CAAC,WAAwB,EAAE,EAAE,CAAC,CAC1B,KAAC,IAAI,IAAC,SAAS,EAAE,CAAC,CAAC,SAAS,CAAC,EAAE,cAAc,EAAC,eAAe,EAAC,UAAU,EAAC,QAAQ,YAC7E,wBAAM,WAAW,CAAC,KAAK,GAAO,GAC3B,CACV,EACD,EAAE,CACL,CAAC;IAEF,MAAM,aAAa,GAAG,GAAG,EAAE;QACvB,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE;YAC9B,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,EAAC,MAAM,EAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACxE,OAAO,CACH,KAAC,WAAW,IAER,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,WAAW,CAAC,OAAO,EAC5B,SAAS,EAAE,SAAsB,EACjC,YAAY,EAAE,WAAW,CAAC,OAAO,EACjC,WAAW,EAAE,aAAa,EAC1B,KAAK,EAAE,UAAU,EACjB,MAAM,EAAE,WAAW,EACnB,uBAAuB,EAAE,2BAA2B,EACpD,cAAc,EAAE,CAAC,iBAAiB,EAClC,kBAAkB,EAAE,GAAG,EAAE,CAAC,kBAAkB,CAAC,WAAW,CAAC,IAVpD,OAAO,CAWd,CACL,CAAC;QACN,CAAC,CAAC,CAAC;IACP,CAAC,CAAC;IAEF,OAAO,CACH,eAAK,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAC,OAAO,EAAE,iBAAiB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,EAAC,aAC7E,cAAK,SAAS,EAAE,CAAC,CAAC,UAAU,CAAC,YACzB,KAAC,iBAAiB,IAAC,KAAK,EAAE,SAAsB,EAAE,QAAQ,EAAE,YAAY,GAAI,GAC1E,EACN,cAAK,SAAS,EAAE,CAAC,CAAC,QAAQ,CAAC,YAAG,aAAa,EAAE,GAAO,IAClD,CACT,CAAC;AACN,CAAC,CAAC"}
1
+ {"version":3,"file":"TenantDashboard.js","sourceRoot":"","sources":["../../../../../../src/containers/Tenant/Diagnostics/TenantOverview/TenantDashboard/TenantDashboard.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAC,WAAW,EAAC,MAAM,uCAAuC,CAAC;AAMlE,OAAO,EAAC,EAAE,EAAC,MAAM,yBAAyB,CAAC;AAC3C,OAAO,EAAC,sBAAsB,EAAC,MAAM,4BAA4B,CAAC;AAElE,OAAO,wBAAwB,CAAC;AAEhC,MAAM,WAAW,GAAG,GAAG,CAAC;AACxB,MAAM,gBAAgB,GAAG,GAAG,CAAC;AAE7B,MAAM,CAAC,GAAG,EAAE,CAAC,sBAAsB,CAAC,CAAC;AAarC,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,EAAC,QAAQ,EAAE,MAAM,EAAuB,EAAE,EAAE;IACxE,MAAM,CAAC,iBAAiB,EAAE,oBAAoB,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAU,IAAI,CAAC,CAAC;IAChF,MAAM,CAAC,mBAAmB,CAAC,GAAG,sBAAsB,EAAE,CAAC;IAEvD,qDAAqD;IACrD,MAAM,aAAa,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC;IAElE;;;;;;;;OAQG;IACH,MAAM,2BAA2B,GAAG,CAAC,WAA4B,EAAE,EAAE;QACjE,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;YAC5B,oBAAoB,CAAC,KAAK,CAAC,CAAC;QAChC,CAAC;IACL,CAAC,CAAC;IAEF,yDAAyD;IACzD,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,WAAW,CAAC;IACxE,MAAM,WAAW,GAAG,WAAW,GAAG,GAAG,CAAC;IAEtC,MAAM,aAAa,GAAG,GAAG,EAAE;QACvB,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,KAAK,EAAE,EAAE,CAAC,CACtC,KAAC,WAAW,IAER,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,WAAW,CAAC,OAAO,EAC5B,YAAY,EAAE,WAAW,CAAC,OAAO,EACjC,WAAW,EAAE,aAAa,EAC1B,KAAK,EAAE,UAAU,EACjB,MAAM,EAAE,WAAW,EACnB,uBAAuB,EAAE,2BAA2B,EACpD,cAAc,EAAE,CAAC,iBAAiB,EAClC,KAAK,EAAE,WAAW,CAAC,KAAK,IATnB,KAAK,CAUZ,CACL,CAAC,CAAC;IACP,CAAC,CAAC;IAEF,OAAO,CACH,cAAK,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAC,OAAO,EAAE,iBAAiB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,EAAC,YAC7E,cAAK,SAAS,EAAE,CAAC,CAAC,QAAQ,CAAC,YAAG,aAAa,EAAE,GAAO,GAClD,CACT,CAAC;AACN,CAAC,CAAC"}
@@ -2,17 +2,9 @@
2
2
  width: var(--diagnostics-section-table-width);
3
3
  margin-bottom: var(--diagnostics-section-margin);
4
4
 
5
- &__controls {
6
- margin-bottom: 10px;
7
- }
8
-
9
5
  &__charts {
10
6
  display: flex;
11
7
  flex-flow: row wrap;
12
8
  gap: 16px;
13
9
  }
14
-
15
- &__toolbar {
16
- margin-bottom: 10px;
17
- }
18
10
  }
@@ -12,7 +12,6 @@ import { TENANT_DEFAULT_TITLE } from '../../../../utils/constants';
12
12
  import { useAutoRefreshInterval, useTypedSelector } from '../../../../utils/hooks';
13
13
  import { useClusterNameFromQuery } from '../../../../utils/hooks/useDatabaseFromQuery';
14
14
  import { mapDatabaseTypeToDBName } from '../../utils/schema';
15
- import { DefaultOverviewContent } from './DefaultOverviewContent/DefaultOverviewContent';
16
15
  import { HealthcheckPreview } from './Healthcheck/HealthcheckPreview';
17
16
  import { MetricsCards } from './MetricsCards/MetricsCards';
18
17
  import { TenantCpu } from './TenantCpu/TenantCpu';
@@ -52,7 +51,7 @@ export function TenantOverview({ tenantName, additionalTenantProps, additionalNo
52
51
  },
53
52
  };
54
53
  // === === ===
55
- const { blobStorage, tabletStorage, blobStorageLimit, tabletStorageLimit, poolsStats, memoryStats, networkStats, blobStorageStats, tabletStorageStats, } = calculateTenantMetrics(tenantData);
54
+ const { blobStorage, tabletStorage, blobStorageLimit, tabletStorageLimit, poolsStats, memoryStats, blobStorageStats, tabletStorageStats, networkStats, } = calculateTenantMetrics(tenantData);
56
55
  const storageMetrics = {
57
56
  blobStorageUsed: blobStorage,
58
57
  blobStorageLimit,
@@ -73,12 +72,9 @@ export function TenantOverview({ tenantName, additionalTenantProps, additionalNo
73
72
  case TENANT_METRICS_TABS_IDS.memory: {
74
73
  return (_jsx(TenantMemory, { tenantName: tenantName, memoryUsed: tenantData.MemoryUsed, memoryLimit: tenantData.MemoryLimit, memoryStats: tenantData.MemoryStats }));
75
74
  }
76
- default: {
77
- return _jsx(DefaultOverviewContent, { database: tenantName });
78
- }
79
75
  }
80
76
  };
81
77
  const links = getDatabaseLinks(additionalTenantProps, Name, Type);
82
- return (_jsx(LoaderWrapper, { loading: tenantLoading, children: _jsxs("div", { className: b(), children: [_jsxs("div", { className: b('info'), children: [_jsx("div", { className: b('top-label'), children: tenantType }), _jsxs(Flex, { alignItems: "center", gap: "1", className: b('top'), children: [renderName(), _jsx(Flex, { gap: "2", children: links.map(({ title, url, icon }) => (_jsx(Button, { href: url, target: "_blank", size: "xs", title: title, children: _jsx(Icon, { data: icon }) }, title))) })] }), _jsxs(Flex, { direction: "column", gap: 3, children: [_jsx(HealthcheckPreview, { tenantName: tenantName }), _jsx(QueriesActivityBar, { tenantName: tenantName }), _jsx(MetricsCards, { poolsCpuStats: poolsStats, memoryStats: memoryStats, blobStorageStats: blobStorageStats, tabletStorageStats: tabletStorageStats, networkStats: networkStats })] })] }), renderTabContent()] }) }));
78
+ return (_jsx(LoaderWrapper, { loading: tenantLoading, children: _jsxs("div", { className: b(), children: [_jsxs("div", { className: b('info'), children: [_jsx("div", { className: b('top-label'), children: tenantType }), _jsxs(Flex, { alignItems: "center", gap: "1", className: b('top'), children: [renderName(), _jsx(Flex, { gap: "2", children: links.map(({ title, url, icon }) => (_jsx(Button, { href: url, target: "_blank", size: "xs", title: title, children: _jsx(Icon, { data: icon }) }, title))) })] }), _jsxs(Flex, { direction: "column", gap: 4, children: [_jsx(HealthcheckPreview, { tenantName: tenantName }), _jsx(QueriesActivityBar, { tenantName: tenantName }), _jsx(MetricsCards, { poolsCpuStats: poolsStats, memoryStats: memoryStats, blobStorageStats: blobStorageStats, tabletStorageStats: tabletStorageStats, networkStats: networkStats })] })] }), _jsx("div", { className: b('tab-content'), children: renderTabContent() })] }) }));
83
79
  }
84
80
  //# sourceMappingURL=TenantOverview.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"TenantOverview.js","sourceRoot":"","sources":["../../../../../src/containers/Tenant/Diagnostics/TenantOverview/TenantOverview.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"TenantOverview.js","sourceRoot":"","sources":["../../../../../src/containers/Tenant/Diagnostics/TenantOverview/TenantOverview.tsx"],"names":[],"mappings":"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"}
@@ -1,8 +1,6 @@
1
1
  @use '../../../../styles/mixins.scss';
2
2
 
3
3
  .tenant-overview {
4
- overflow: auto;
5
-
6
4
  height: 100%;
7
5
  padding-bottom: 20px;
8
6
 
@@ -60,4 +58,17 @@
60
58
  width: 300px;
61
59
  margin-bottom: 36px;
62
60
  }
61
+
62
+ &__tab-content {
63
+ overflow: auto;
64
+
65
+ margin-top: -1px;
66
+ padding: var(--g-spacing-4);
67
+
68
+ border: 1px solid var(--g-color-line-generic);
69
+ border-top: 0;
70
+ border-radius: var(--g-border-radius-s);
71
+ border-top-left-radius: 0;
72
+ border-top-right-radius: 0;
73
+ }
63
74
  }
@@ -16,13 +16,21 @@
16
16
  "by-memory": "by memory",
17
17
  "by-usage": "by usage",
18
18
  "by-size": "by size",
19
- "cards.cpu-label": "CPU",
19
+ "cards.cpu-label": "CPU load",
20
20
  "cards.storage-label": "Storage",
21
- "cards.memory-label": "Memory",
21
+ "cards.memory-label": "Memory used",
22
22
  "cards.network-label": "Network",
23
23
  "cards.network-note": "Network usage is the average outgoing bandwidth usage across all nodes in the database",
24
+ "context_cpu-load": "CPU load",
25
+ "context_storage-groups": "Storage: {{count}} groups",
26
+ "context_memory-used": "Memory used",
27
+ "context_network-evaluation": "Network evaluation",
28
+ "context_cpu-description": "CPU load is calculated as the cumulative usage across all actor system pools in the database",
29
+ "context_memory-description": "Memory usage is the total memory consumed by all processes in the database",
30
+ "context_storage-description": "Storage usage shows how much data is stored in the database including user data and indexes",
31
+ "context_network-description": "Network usage is the average outgoing bandwidth usage across all nodes in the database",
24
32
  "charts.queries-per-second": "Queries per second",
25
- "charts.transaction-latency": "Transactions latencies {{percentile}}",
33
+ "charts.queries-latency": "Queries latencies {{percentile}}",
26
34
  "charts.cpu-usage": "CPU usage by pool",
27
35
  "charts.storage-usage": "Tablet storage usage",
28
36
  "charts.memory-usage": "Memory usage",
@@ -1,2 +1,2 @@
1
- declare const _default: (key: "queries" | "nodes" | "tables" | "no-data" | "top" | "groups" | "shards" | "no-pools-data" | "top-nodes.empty-data" | "top-groups.empty-data" | "by-pools-usage" | "by-cpu-time" | "by-cpu-usage" | "by-load" | "by-memory" | "by-usage" | "by-size" | "cards.cpu-label" | "cards.storage-label" | "cards.memory-label" | "cards.network-label" | "cards.network-note" | "charts.queries-per-second" | "charts.transaction-latency" | "charts.cpu-usage" | "charts.storage-usage" | "charts.memory-usage" | "storage.tablet-storage-title" | "storage.tablet-storage-description" | "storage.db-storage-title" | "storage.db-storage-description" | "executed-last-hour" | "column-header.process", params?: import("@gravity-ui/i18n").Params) => string;
1
+ declare const _default: (key: "queries" | "nodes" | "tables" | "no-data" | "top" | "groups" | "context_cpu-description" | "context_memory-description" | "context_storage-description" | "context_network-description" | "shards" | "no-pools-data" | "top-nodes.empty-data" | "top-groups.empty-data" | "by-pools-usage" | "by-cpu-time" | "by-cpu-usage" | "by-load" | "by-memory" | "by-usage" | "by-size" | "cards.cpu-label" | "cards.storage-label" | "cards.memory-label" | "cards.network-label" | "cards.network-note" | "context_cpu-load" | "context_storage-groups" | "context_memory-used" | "context_network-evaluation" | "charts.queries-per-second" | "charts.queries-latency" | "charts.cpu-usage" | "charts.storage-usage" | "charts.memory-usage" | "storage.tablet-storage-title" | "storage.tablet-storage-description" | "storage.db-storage-title" | "storage.db-storage-description" | "executed-last-hour" | "column-header.process", params?: import("@gravity-ui/i18n").Params) => string;
2
2
  export default _default;
@@ -1,12 +1,16 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { QueryResultTable } from '../../../../../components/QueryResultTable';
3
3
  import { previewApi } from '../../../../../store/reducers/preview';
4
+ import { prepareQueryWithPragmas } from '../../../../../store/reducers/query/utils';
5
+ import { useQueryExecutionSettings } from '../../../../../utils/hooks/useQueryExecutionSettings';
4
6
  import { isExternalTableType } from '../../../utils/schema';
5
7
  import { Preview } from './PreviewView';
6
8
  const TABLE_PREVIEW_LIMIT = 100;
7
9
  export function TablePreview({ database, path, type }) {
8
10
  var _a, _b, _c;
9
- const query = `select * from \`${path}\` limit 101`;
11
+ const [querySettings] = useQueryExecutionSettings();
12
+ const baseQuery = `select * from \`${path}\` limit 101`;
13
+ const query = prepareQueryWithPragmas(baseQuery, querySettings.pragmas);
10
14
  const { currentData, isFetching, error } = previewApi.useSendQueryQuery({
11
15
  database,
12
16
  query,
@@ -1 +1 @@
1
- {"version":3,"file":"TablePreview.js","sourceRoot":"","sources":["../../../../../../src/containers/Tenant/Query/Preview/components/TablePreview.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAC,gBAAgB,EAAC,MAAM,4CAA4C,CAAC;AAC5E,OAAO,EAAC,UAAU,EAAC,MAAM,uCAAuC,CAAC;AACjE,OAAO,EAAC,mBAAmB,EAAC,MAAM,uBAAuB,CAAC;AAG1D,OAAO,EAAC,OAAO,EAAC,MAAM,eAAe,CAAC;AAEtC,MAAM,mBAAmB,GAAG,GAAG,CAAC;AAEhC,MAAM,UAAU,YAAY,CAAC,EAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAwB;;IACtE,MAAM,KAAK,GAAG,mBAAmB,IAAI,cAAc,CAAC;IACpD,MAAM,EAAC,WAAW,EAAE,UAAU,EAAE,KAAK,EAAC,GAAG,UAAU,CAAC,iBAAiB,CACjE;QACI,QAAQ;QACR,KAAK;QACL,MAAM,EAAE,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,cAAc;QACpE,SAAS,EAAE,mBAAmB;KACjC,EACD;QACI,yBAAyB,EAAE,IAAI;KAClC,CACJ,CAAC;IACF,MAAM,OAAO,GAAG,UAAU,IAAI,WAAW,KAAK,SAAS,CAAC;IACxD,MAAM,IAAI,GAAG,MAAA,MAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,UAAU,0CAAG,CAAC,CAAC,mCAAI,EAAE,CAAC;IAEhD,MAAM,YAAY,GAAG,GAAG,EAAE;QACtB,OAAO,KAAC,gBAAgB,IAAC,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,GAAI,CAAC;IAC1E,CAAC,CAAC;IAEF,OAAO,CACH,KAAC,OAAO,IACJ,IAAI,EAAE,IAAI,EACV,YAAY,EAAE,YAAY,EAC1B,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,KAAK,EACZ,SAAS,EAAE,IAAI,CAAC,SAAS,EACzB,QAAQ,EAAE,MAAA,IAAI,CAAC,MAAM,0CAAE,MAAM,GAC/B,CACL,CAAC;AACN,CAAC"}
1
+ {"version":3,"file":"TablePreview.js","sourceRoot":"","sources":["../../../../../../src/containers/Tenant/Query/Preview/components/TablePreview.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAC,gBAAgB,EAAC,MAAM,4CAA4C,CAAC;AAC5E,OAAO,EAAC,UAAU,EAAC,MAAM,uCAAuC,CAAC;AACjE,OAAO,EAAC,uBAAuB,EAAC,MAAM,2CAA2C,CAAC;AAClF,OAAO,EAAC,yBAAyB,EAAC,MAAM,sDAAsD,CAAC;AAC/F,OAAO,EAAC,mBAAmB,EAAC,MAAM,uBAAuB,CAAC;AAG1D,OAAO,EAAC,OAAO,EAAC,MAAM,eAAe,CAAC;AAEtC,MAAM,mBAAmB,GAAG,GAAG,CAAC;AAEhC,MAAM,UAAU,YAAY,CAAC,EAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAwB;;IACtE,MAAM,CAAC,aAAa,CAAC,GAAG,yBAAyB,EAAE,CAAC;IAEpD,MAAM,SAAS,GAAG,mBAAmB,IAAI,cAAc,CAAC;IACxD,MAAM,KAAK,GAAG,uBAAuB,CAAC,SAAS,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;IAExE,MAAM,EAAC,WAAW,EAAE,UAAU,EAAE,KAAK,EAAC,GAAG,UAAU,CAAC,iBAAiB,CACjE;QACI,QAAQ;QACR,KAAK;QACL,MAAM,EAAE,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,cAAc;QACpE,SAAS,EAAE,mBAAmB;KACjC,EACD;QACI,yBAAyB,EAAE,IAAI;KAClC,CACJ,CAAC;IACF,MAAM,OAAO,GAAG,UAAU,IAAI,WAAW,KAAK,SAAS,CAAC;IACxD,MAAM,IAAI,GAAG,MAAA,MAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,UAAU,0CAAG,CAAC,CAAC,mCAAI,EAAE,CAAC;IAEhD,MAAM,YAAY,GAAG,GAAG,EAAE;QACtB,OAAO,KAAC,gBAAgB,IAAC,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,GAAI,CAAC;IAC1E,CAAC,CAAC;IAEF,OAAO,CACH,KAAC,OAAO,IACJ,IAAI,EAAE,IAAI,EACV,YAAY,EAAE,YAAY,EAC1B,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,KAAK,EACZ,SAAS,EAAE,IAAI,CAAC,SAAS,EACzB,QAAQ,EAAE,MAAA,IAAI,CAAC,MAAM,0CAAE,MAAM,GAC/B,CACL,CAAC;AACN,CAAC"}
@@ -0,0 +1,28 @@
1
+ import { prepareQueryWithPragmas } from '../../../../../store/reducers/query/utils';
2
+ describe('TablePreview - Pragma Integration', () => {
3
+ test('should correctly prepare query with pragmas for table preview', () => {
4
+ const baseQuery = 'select * from `test-table` limit 101';
5
+ const pragmas = 'PRAGMA OrderedColumns;';
6
+ const result = prepareQueryWithPragmas(baseQuery, pragmas);
7
+ expect(result).toBe('PRAGMA OrderedColumns;\n\nselect * from `test-table` limit 101');
8
+ });
9
+ test('should handle empty pragmas correctly in table preview', () => {
10
+ const baseQuery = 'select * from `test-table` limit 101';
11
+ const pragmas = '';
12
+ const result = prepareQueryWithPragmas(baseQuery, pragmas);
13
+ expect(result).toBe('select * from `test-table` limit 101');
14
+ });
15
+ test('should handle multiple pragmas correctly in table preview', () => {
16
+ const baseQuery = 'select * from `test-table` limit 101';
17
+ const pragmas = 'PRAGMA OrderedColumns;\nPRAGMA AnsiOptionalAS;';
18
+ const result = prepareQueryWithPragmas(baseQuery, pragmas);
19
+ expect(result).toBe('PRAGMA OrderedColumns;\nPRAGMA AnsiOptionalAS;\n\nselect * from `test-table` limit 101');
20
+ });
21
+ test('should handle pragmas without semicolon correctly in table preview', () => {
22
+ const baseQuery = 'select * from `test-table` limit 101';
23
+ const pragmas = 'PRAGMA OrderedColumns';
24
+ const result = prepareQueryWithPragmas(baseQuery, pragmas);
25
+ expect(result).toBe('PRAGMA OrderedColumns;\n\nselect * from `test-table` limit 101');
26
+ });
27
+ });
28
+ //# sourceMappingURL=TablePreview.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TablePreview.test.js","sourceRoot":"","sources":["../../../../../../src/containers/Tenant/Query/Preview/components/TablePreview.test.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAC,uBAAuB,EAAC,MAAM,2CAA2C,CAAC;AAElF,QAAQ,CAAC,mCAAmC,EAAE,GAAG,EAAE;IAC/C,IAAI,CAAC,+DAA+D,EAAE,GAAG,EAAE;QACvE,MAAM,SAAS,GAAG,sCAAsC,CAAC;QACzD,MAAM,OAAO,GAAG,wBAAwB,CAAC;QAEzC,MAAM,MAAM,GAAG,uBAAuB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAE3D,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,gEAAgE,CAAC,CAAC;IAC1F,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,wDAAwD,EAAE,GAAG,EAAE;QAChE,MAAM,SAAS,GAAG,sCAAsC,CAAC;QACzD,MAAM,OAAO,GAAG,EAAE,CAAC;QAEnB,MAAM,MAAM,GAAG,uBAAuB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAE3D,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC;IAChE,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,2DAA2D,EAAE,GAAG,EAAE;QACnE,MAAM,SAAS,GAAG,sCAAsC,CAAC;QACzD,MAAM,OAAO,GAAG,gDAAgD,CAAC;QAEjE,MAAM,MAAM,GAAG,uBAAuB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAE3D,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CACf,wFAAwF,CAC3F,CAAC;IACN,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,oEAAoE,EAAE,GAAG,EAAE;QAC5E,MAAM,SAAS,GAAG,sCAAsC,CAAC;QACzD,MAAM,OAAO,GAAG,uBAAuB,CAAC;QAExC,MAAM,MAAM,GAAG,uBAAuB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAE3D,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,gEAAgE,CAAC,CAAC;IAC1F,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
@@ -11,6 +11,7 @@ import { cn } from '../../utils/cn';
11
11
  import { DEFAULT_IS_TENANT_SUMMARY_COLLAPSED, DEFAULT_SIZE_TENANT_KEY } from '../../utils/constants';
12
12
  import { useTypedDispatch, useTypedSelector } from '../../utils/hooks';
13
13
  import { isAccessError } from '../../utils/response';
14
+ import { useAppTitle } from '../App/AppTitleContext';
14
15
  import ObjectGeneral from './ObjectGeneral/ObjectGeneral';
15
16
  import { ObjectSummary } from './ObjectSummary/ObjectSummary';
16
17
  import { TenantContextProvider } from './TenantContext';
@@ -72,6 +73,7 @@ export function Tenant(props) {
72
73
  setInitialLoading(false);
73
74
  }
74
75
  const title = path || i18n('page.title');
75
- return (_jsxs("div", { className: b(), children: [_jsx(Helmet, { defaultTitle: `${title} YDB Monitoring`, titleTemplate: `%s — ${title} — YDB Monitoring` }), _jsx(LoaderWrapper, { loading: initialLoading, children: _jsx(PageError, { error: showBlockingError ? error : undefined, children: _jsx(TenantContextProvider, { database: database, path: path, type: currentPathType, subType: currentPathSubType, children: _jsx(TenantDrawerWrapper, { children: _jsxs(SplitPane, { defaultSizePaneKey: DEFAULT_SIZE_TENANT_KEY, defaultSizes: [25, 75], triggerCollapse: summaryVisibilityState.triggerCollapse, triggerExpand: summaryVisibilityState.triggerExpand, minSize: [36, 200], onSplitStartDragAdditional: onSplitStartDragAdditional, children: [_jsx(ObjectSummary, { onCollapseSummary: onCollapseSummaryHandler, onExpandSummary: onExpandSummaryHandler, isCollapsed: summaryVisibilityState.collapsed }), _jsx("div", { className: b('main'), children: _jsx(ObjectGeneral, { additionalTenantProps: props.additionalTenantProps, additionalNodesProps: props.additionalNodesProps }) })] }) }) }) }) })] }));
76
+ const { appTitle } = useAppTitle();
77
+ return (_jsxs("div", { className: b(), children: [_jsx(Helmet, { defaultTitle: `${title} — ${appTitle}`, titleTemplate: `%s — ${title} — ${appTitle}` }), _jsx(LoaderWrapper, { loading: initialLoading, children: _jsx(PageError, { error: showBlockingError ? error : undefined, children: _jsx(TenantContextProvider, { database: database, path: path, type: currentPathType, subType: currentPathSubType, children: _jsx(TenantDrawerWrapper, { children: _jsxs(SplitPane, { defaultSizePaneKey: DEFAULT_SIZE_TENANT_KEY, defaultSizes: [25, 75], triggerCollapse: summaryVisibilityState.triggerCollapse, triggerExpand: summaryVisibilityState.triggerExpand, minSize: [36, 200], onSplitStartDragAdditional: onSplitStartDragAdditional, children: [_jsx(ObjectSummary, { onCollapseSummary: onCollapseSummaryHandler, onExpandSummary: onExpandSummaryHandler, isCollapsed: summaryVisibilityState.collapsed }), _jsx("div", { className: b('main'), children: _jsx(ObjectGeneral, { additionalTenantProps: props.additionalTenantProps, additionalNodesProps: props.additionalNodesProps }) })] }) }) }) }) })] }));
76
78
  }
77
79
  //# sourceMappingURL=Tenant.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Tenant.js","sourceRoot":"","sources":["../../../src/containers/Tenant/Tenant.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Tenant.js","sourceRoot":"","sources":["../../../src/containers/Tenant/Tenant.tsx"],"names":[],"mappings":"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"}