@ytsaurus/ui 1.96.0 → 1.97.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 (46) hide show
  1. package/README.md +1 -0
  2. package/dist/public/build/assets-manifest.json +25 -25
  3. package/dist/public/build/css/{3716.f1b13197.chunk.css → 3716.932479b0.chunk.css} +2 -2
  4. package/dist/public/build/css/3716.932479b0.chunk.css.map +1 -0
  5. package/dist/public/build/js/4776.b922a445.chunk.js.map +1 -1
  6. package/dist/public/build/js/{5082.b1a7f7b1.chunk.js → 5082.b475d219.chunk.js} +2 -2
  7. package/dist/public/build/js/5082.b475d219.chunk.js.map +1 -0
  8. package/dist/public/build/js/cluster-page-wrapper.b7cb91f7.chunk.js +2 -0
  9. package/dist/public/build/js/cluster-page-wrapper.b7cb91f7.chunk.js.map +1 -0
  10. package/dist/public/build/js/dashboard.8850118b.chunk.js +3 -0
  11. package/dist/public/build/js/dashboard.8850118b.chunk.js.map +1 -0
  12. package/dist/public/build/js/main.a609b753.js +3 -0
  13. package/dist/public/build/js/main.a609b753.js.map +1 -0
  14. package/dist/public/build/js/{navigation.e85f53e0.chunk.js → navigation.7e85a761.chunk.js} +2 -2
  15. package/dist/public/build/js/navigation.7e85a761.chunk.js.map +1 -0
  16. package/dist/public/build/js/{runtime.ed973fa5.js → runtime.78bd9bc8.js} +2 -2
  17. package/dist/public/build/js/{runtime.ed973fa5.js.map → runtime.78bd9bc8.js.map} +1 -1
  18. package/dist/public/build/js/scheduling.680c5ca7.chunk.js +2 -0
  19. package/dist/public/build/js/scheduling.680c5ca7.chunk.js.map +1 -0
  20. package/dist/public/build/js/tablet-errors-by-bundle.95473558.chunk.js +2 -0
  21. package/dist/public/build/js/tablet-errors-by-bundle.95473558.chunk.js.map +1 -0
  22. package/dist/public/build/js/{yt-df-dialog.e8489fd1.chunk.js → yt-df-dialog.5aa0b817.chunk.js} +3 -3
  23. package/dist/public/build/js/yt-df-dialog.5aa0b817.chunk.js.map +1 -0
  24. package/dist/public/build/manifest.json +20 -20
  25. package/dist/server/components/requestsSetup.d.ts +1 -1
  26. package/dist/server/components/requestsSetup.js +5 -2
  27. package/dist/server/controllers/yt-tablet-errors-api.js +7 -3
  28. package/dist/shared/tablet-errors-manager.d.ts +1 -0
  29. package/package.json +2 -2
  30. package/dist/public/build/css/3716.f1b13197.chunk.css.map +0 -1
  31. package/dist/public/build/js/5082.b1a7f7b1.chunk.js.map +0 -1
  32. package/dist/public/build/js/cluster-page-wrapper.605a5ad5.chunk.js +0 -2
  33. package/dist/public/build/js/cluster-page-wrapper.605a5ad5.chunk.js.map +0 -1
  34. package/dist/public/build/js/dashboard.2150185c.chunk.js +0 -3
  35. package/dist/public/build/js/dashboard.2150185c.chunk.js.map +0 -1
  36. package/dist/public/build/js/main.56182cbb.js +0 -3
  37. package/dist/public/build/js/main.56182cbb.js.map +0 -1
  38. package/dist/public/build/js/navigation.e85f53e0.chunk.js.map +0 -1
  39. package/dist/public/build/js/scheduling.83bb157a.chunk.js +0 -2
  40. package/dist/public/build/js/scheduling.83bb157a.chunk.js.map +0 -1
  41. package/dist/public/build/js/tablet-errors-by-bundle.2dba0b10.chunk.js +0 -2
  42. package/dist/public/build/js/tablet-errors-by-bundle.2dba0b10.chunk.js.map +0 -1
  43. package/dist/public/build/js/yt-df-dialog.e8489fd1.chunk.js.map +0 -1
  44. /package/dist/public/build/js/{dashboard.2150185c.chunk.js.LICENSE.txt → dashboard.8850118b.chunk.js.LICENSE.txt} +0 -0
  45. /package/dist/public/build/js/{main.56182cbb.js.LICENSE.txt → main.a609b753.js.LICENSE.txt} +0 -0
  46. /package/dist/public/build/js/{yt-df-dialog.e8489fd1.chunk.js.LICENSE.txt → yt-df-dialog.5aa0b817.chunk.js.LICENSE.txt} +0 -0
@@ -1,13 +1,13 @@
1
1
  {
2
2
  "main.css": "css/main.91000858.css",
3
- "main.js": "js/main.56182cbb.js",
4
- "runtime.js": "js/runtime.ed973fa5.js",
3
+ "main.js": "js/main.a609b753.js",
4
+ "runtime.js": "js/runtime.78bd9bc8.js",
5
5
  "odin.css": "css/odin.e56678a7.chunk.css",
6
6
  "odin.js": "js/odin.7493cf4c.chunk.js",
7
7
  "cluster-menu.css": "css/cluster-menu.d8cafef3.chunk.css",
8
8
  "cluster-menu.js": "js/cluster-menu.910d1ff1.chunk.js",
9
9
  "cluster-page-wrapper.css": "css/cluster-page-wrapper.c5126834.chunk.css",
10
- "cluster-page-wrapper.js": "js/cluster-page-wrapper.605a5ad5.chunk.js",
10
+ "cluster-page-wrapper.js": "js/cluster-page-wrapper.b7cb91f7.chunk.js",
11
11
  "manage-tokens.css": "css/manage-tokens.9a74d930.chunk.css",
12
12
  "manage-tokens.js": "js/manage-tokens.c6a68584.chunk.js",
13
13
  "app-navigation.css": "css/app-navigation.6955071c.chunk.css",
@@ -167,7 +167,7 @@
167
167
  "js/6015.82d07c89.chunk.js": "js/6015.82d07c89.chunk.js",
168
168
  "js/9385.68e39c6d.chunk.js": "js/9385.68e39c6d.chunk.js",
169
169
  "yt-df-dialog.css": "css/yt-df-dialog.955bc478.chunk.css",
170
- "yt-df-dialog.js": "js/yt-df-dialog.e8489fd1.chunk.js",
170
+ "yt-df-dialog.js": "js/yt-df-dialog.5aa0b817.chunk.js",
171
171
  "ban-page.js": "js/ban-page.b938dd45.chunk.js",
172
172
  "components.css": "css/components.6e3c2fb2.chunk.css",
173
173
  "components.js": "js/components.86491c0d.chunk.js",
@@ -175,11 +175,11 @@
175
175
  "accounts.css": "css/accounts.3a78955c.chunk.css",
176
176
  "accounts.js": "js/accounts.318d7f99.chunk.js",
177
177
  "dashboard.css": "css/dashboard.91c5ee68.chunk.css",
178
- "dashboard.js": "js/dashboard.2150185c.chunk.js",
178
+ "dashboard.js": "js/dashboard.8850118b.chunk.js",
179
179
  "system.css": "css/system.97b934f5.chunk.css",
180
180
  "system.js": "js/system.e23192af.chunk.js",
181
181
  "navigation.css": "css/navigation.4b7a1ff3.chunk.css",
182
- "navigation.js": "js/navigation.e85f53e0.chunk.js",
182
+ "navigation.js": "js/navigation.7e85a761.chunk.js",
183
183
  "path-viewer.css": "css/path-viewer.ce6360d4.chunk.css",
184
184
  "path-viewer.js": "js/path-viewer.e9263591.chunk.js",
185
185
  "tablet.css": "css/tablet.5406c3a9.chunk.css",
@@ -191,7 +191,7 @@
191
191
  "users.css": "css/users.c7f945d8.chunk.css",
192
192
  "users.js": "js/users.81896b5b.chunk.js",
193
193
  "scheduling.css": "css/scheduling.ac0f2220.chunk.css",
194
- "scheduling.js": "js/scheduling.83bb157a.chunk.js",
194
+ "scheduling.js": "js/scheduling.680c5ca7.chunk.js",
195
195
  "query-tracker.css": "css/query-tracker.7596e0e8.chunk.css",
196
196
  "query-tracker.js": "js/query-tracker.15188d5b.chunk.js",
197
197
  "job.css": "css/job.298e0717.chunk.css",
@@ -209,7 +209,7 @@
209
209
  "navigation-flow.css": "css/navigation-flow.cdcf90a6.chunk.css",
210
210
  "navigation-flow.js": "js/navigation-flow.ae1c5ad1.chunk.js",
211
211
  "tablet-errors-by-bundle.css": "css/tablet-errors-by-bundle.888e2522.chunk.css",
212
- "tablet-errors-by-bundle.js": "js/tablet-errors-by-bundle.2dba0b10.chunk.js",
212
+ "tablet-errors-by-bundle.js": "js/tablet-errors-by-bundle.95473558.chunk.js",
213
213
  "vcs.css": "css/vcs.4a8b1ceb.chunk.css",
214
214
  "vcs.js": "js/vcs.fd7edac6.chunk.js",
215
215
  "query-navigation.css": "css/query-navigation.d7897fad.chunk.css",
@@ -340,7 +340,7 @@
340
340
  "css/9641.510c929d.chunk.css": "css/9641.510c929d.chunk.css",
341
341
  "css/3872.d3da2d07.chunk.css": "css/3872.d3da2d07.chunk.css",
342
342
  "css/1454.e1b6441b.chunk.css": "css/1454.e1b6441b.chunk.css",
343
- "css/3716.f1b13197.chunk.css": "css/3716.f1b13197.chunk.css",
343
+ "css/3716.932479b0.chunk.css": "css/3716.932479b0.chunk.css",
344
344
  "css/3320.534b4c3f.chunk.css": "css/3320.534b4c3f.chunk.css",
345
345
  "css/4433.ada5f024.chunk.css": "css/4433.ada5f024.chunk.css",
346
346
  "css/6052.be19cc6a.chunk.css": "css/6052.be19cc6a.chunk.css",
@@ -371,7 +371,7 @@
371
371
  "js/1394.07ce9511.chunk.js": "js/1394.07ce9511.chunk.js",
372
372
  "js/6680.0b39514f.chunk.js": "js/6680.0b39514f.chunk.js",
373
373
  "js/3735.3dbca85b.chunk.js": "js/3735.3dbca85b.chunk.js",
374
- "js/5082.b1a7f7b1.chunk.js": "js/5082.b1a7f7b1.chunk.js",
374
+ "js/5082.b475d219.chunk.js": "js/5082.b475d219.chunk.js",
375
375
  "js/2238.35a9591e.chunk.js": "js/2238.35a9591e.chunk.js",
376
376
  "js/2947.1311cded.chunk.js": "js/2947.1311cded.chunk.js",
377
377
  "js/3676.9d3343d4.chunk.js": "js/3676.9d3343d4.chunk.js",
@@ -411,14 +411,14 @@
411
411
  "assets/images/ui.jpg": "assets/images/ui.bab31938.jpg",
412
412
  "assets/images/cluster-2x.svg": "assets/images/cluster-2x.e53788d6.svg",
413
413
  "main.91000858.css.map": "css/main.91000858.css.map",
414
- "main.56182cbb.js.map": "js/main.56182cbb.js.map",
415
- "runtime.ed973fa5.js.map": "js/runtime.ed973fa5.js.map",
414
+ "main.a609b753.js.map": "js/main.a609b753.js.map",
415
+ "runtime.78bd9bc8.js.map": "js/runtime.78bd9bc8.js.map",
416
416
  "odin.e56678a7.chunk.css.map": "css/odin.e56678a7.chunk.css.map",
417
417
  "odin.7493cf4c.chunk.js.map": "js/odin.7493cf4c.chunk.js.map",
418
418
  "cluster-menu.d8cafef3.chunk.css.map": "css/cluster-menu.d8cafef3.chunk.css.map",
419
419
  "cluster-menu.910d1ff1.chunk.js.map": "js/cluster-menu.910d1ff1.chunk.js.map",
420
420
  "cluster-page-wrapper.c5126834.chunk.css.map": "css/cluster-page-wrapper.c5126834.chunk.css.map",
421
- "cluster-page-wrapper.605a5ad5.chunk.js.map": "js/cluster-page-wrapper.605a5ad5.chunk.js.map",
421
+ "cluster-page-wrapper.b7cb91f7.chunk.js.map": "js/cluster-page-wrapper.b7cb91f7.chunk.js.map",
422
422
  "manage-tokens.9a74d930.chunk.css.map": "css/manage-tokens.9a74d930.chunk.css.map",
423
423
  "manage-tokens.c6a68584.chunk.js.map": "js/manage-tokens.c6a68584.chunk.js.map",
424
424
  "app-navigation.6955071c.chunk.css.map": "css/app-navigation.6955071c.chunk.css.map",
@@ -578,7 +578,7 @@
578
578
  "6015.82d07c89.chunk.js.map": "js/6015.82d07c89.chunk.js.map",
579
579
  "9385.68e39c6d.chunk.js.map": "js/9385.68e39c6d.chunk.js.map",
580
580
  "yt-df-dialog.955bc478.chunk.css.map": "css/yt-df-dialog.955bc478.chunk.css.map",
581
- "yt-df-dialog.e8489fd1.chunk.js.map": "js/yt-df-dialog.e8489fd1.chunk.js.map",
581
+ "yt-df-dialog.5aa0b817.chunk.js.map": "js/yt-df-dialog.5aa0b817.chunk.js.map",
582
582
  "ban-page.b938dd45.chunk.js.map": "js/ban-page.b938dd45.chunk.js.map",
583
583
  "components.6e3c2fb2.chunk.css.map": "css/components.6e3c2fb2.chunk.css.map",
584
584
  "components.86491c0d.chunk.js.map": "js/components.86491c0d.chunk.js.map",
@@ -586,11 +586,11 @@
586
586
  "accounts.3a78955c.chunk.css.map": "css/accounts.3a78955c.chunk.css.map",
587
587
  "accounts.318d7f99.chunk.js.map": "js/accounts.318d7f99.chunk.js.map",
588
588
  "dashboard.91c5ee68.chunk.css.map": "css/dashboard.91c5ee68.chunk.css.map",
589
- "dashboard.2150185c.chunk.js.map": "js/dashboard.2150185c.chunk.js.map",
589
+ "dashboard.8850118b.chunk.js.map": "js/dashboard.8850118b.chunk.js.map",
590
590
  "system.97b934f5.chunk.css.map": "css/system.97b934f5.chunk.css.map",
591
591
  "system.e23192af.chunk.js.map": "js/system.e23192af.chunk.js.map",
592
592
  "navigation.4b7a1ff3.chunk.css.map": "css/navigation.4b7a1ff3.chunk.css.map",
593
- "navigation.e85f53e0.chunk.js.map": "js/navigation.e85f53e0.chunk.js.map",
593
+ "navigation.7e85a761.chunk.js.map": "js/navigation.7e85a761.chunk.js.map",
594
594
  "path-viewer.ce6360d4.chunk.css.map": "css/path-viewer.ce6360d4.chunk.css.map",
595
595
  "path-viewer.e9263591.chunk.js.map": "js/path-viewer.e9263591.chunk.js.map",
596
596
  "tablet.5406c3a9.chunk.css.map": "css/tablet.5406c3a9.chunk.css.map",
@@ -602,7 +602,7 @@
602
602
  "users.c7f945d8.chunk.css.map": "css/users.c7f945d8.chunk.css.map",
603
603
  "users.81896b5b.chunk.js.map": "js/users.81896b5b.chunk.js.map",
604
604
  "scheduling.ac0f2220.chunk.css.map": "css/scheduling.ac0f2220.chunk.css.map",
605
- "scheduling.83bb157a.chunk.js.map": "js/scheduling.83bb157a.chunk.js.map",
605
+ "scheduling.680c5ca7.chunk.js.map": "js/scheduling.680c5ca7.chunk.js.map",
606
606
  "query-tracker.7596e0e8.chunk.css.map": "css/query-tracker.7596e0e8.chunk.css.map",
607
607
  "query-tracker.15188d5b.chunk.js.map": "js/query-tracker.15188d5b.chunk.js.map",
608
608
  "job.298e0717.chunk.css.map": "css/job.298e0717.chunk.css.map",
@@ -620,7 +620,7 @@
620
620
  "navigation-flow.cdcf90a6.chunk.css.map": "css/navigation-flow.cdcf90a6.chunk.css.map",
621
621
  "navigation-flow.ae1c5ad1.chunk.js.map": "js/navigation-flow.ae1c5ad1.chunk.js.map",
622
622
  "tablet-errors-by-bundle.888e2522.chunk.css.map": "css/tablet-errors-by-bundle.888e2522.chunk.css.map",
623
- "tablet-errors-by-bundle.2dba0b10.chunk.js.map": "js/tablet-errors-by-bundle.2dba0b10.chunk.js.map",
623
+ "tablet-errors-by-bundle.95473558.chunk.js.map": "js/tablet-errors-by-bundle.95473558.chunk.js.map",
624
624
  "vcs.4a8b1ceb.chunk.css.map": "css/vcs.4a8b1ceb.chunk.css.map",
625
625
  "vcs.fd7edac6.chunk.js.map": "js/vcs.fd7edac6.chunk.js.map",
626
626
  "query-navigation.d7897fad.chunk.css.map": "css/query-navigation.d7897fad.chunk.css.map",
@@ -751,7 +751,7 @@
751
751
  "9641.510c929d.chunk.css.map": "css/9641.510c929d.chunk.css.map",
752
752
  "3872.d3da2d07.chunk.css.map": "css/3872.d3da2d07.chunk.css.map",
753
753
  "1454.e1b6441b.chunk.css.map": "css/1454.e1b6441b.chunk.css.map",
754
- "3716.f1b13197.chunk.css.map": "css/3716.f1b13197.chunk.css.map",
754
+ "3716.932479b0.chunk.css.map": "css/3716.932479b0.chunk.css.map",
755
755
  "3320.534b4c3f.chunk.css.map": "css/3320.534b4c3f.chunk.css.map",
756
756
  "4433.ada5f024.chunk.css.map": "css/4433.ada5f024.chunk.css.map",
757
757
  "6052.be19cc6a.chunk.css.map": "css/6052.be19cc6a.chunk.css.map",
@@ -782,7 +782,7 @@
782
782
  "1394.07ce9511.chunk.js.map": "js/1394.07ce9511.chunk.js.map",
783
783
  "6680.0b39514f.chunk.js.map": "js/6680.0b39514f.chunk.js.map",
784
784
  "3735.3dbca85b.chunk.js.map": "js/3735.3dbca85b.chunk.js.map",
785
- "5082.b1a7f7b1.chunk.js.map": "js/5082.b1a7f7b1.chunk.js.map",
785
+ "5082.b475d219.chunk.js.map": "js/5082.b475d219.chunk.js.map",
786
786
  "2238.35a9591e.chunk.js.map": "js/2238.35a9591e.chunk.js.map",
787
787
  "2947.1311cded.chunk.js.map": "js/2947.1311cded.chunk.js.map",
788
788
  "3676.9d3343d4.chunk.js.map": "js/3676.9d3343d4.chunk.js.map",
@@ -27,7 +27,7 @@ export declare function getRobotYTApiSetup(cluster: string): YTApiUserSetup;
27
27
  * @returns undefined when cluster is not found
28
28
  */
29
29
  export declare function getUserYTApiSetup(cluster: string, req: Request): YTApiUserSetup;
30
- export declare function getUserTabletErrorApiSetup(cluster: string, req: Request): {
30
+ export declare function getUserTabletErrorApiSetup(cluster: string, req: Request, testingHeaders?: boolean): {
31
31
  authHeaders: Record<string, string>;
32
32
  };
33
33
  export type YTApiUserSetup = ReturnType<typeof getYTApiClusterSetup> & {
@@ -83,10 +83,13 @@ function getUserYTApiSetup(cluster, req) {
83
83
  return Object.assign(Object.assign({}, rest), { setup,
84
84
  authHeaders });
85
85
  }
86
- function getUserTabletErrorApiSetup(cluster, req) {
86
+ function getUserTabletErrorApiSetup(cluster, req, testingHeaders) {
87
87
  const { authentication } = getYTApiClusterSetup(cluster).setup;
88
+ const tabletsHeaders = testingHeaders
89
+ ? req.yt.tabletErrorTestingApiAuthHeaders
90
+ : req.yt.tabletErrorApiAuthHeaders;
88
91
  const authHeaders = authentication && authentication !== 'none'
89
- ? req.yt.tabletErrorApiAuthHeaders || req.yt.ytApiAuthHeaders || {}
92
+ ? tabletsHeaders || req.yt.ytApiAuthHeaders || {}
90
93
  : {};
91
94
  return { authHeaders };
92
95
  }
@@ -10,6 +10,7 @@ const qs_1 = __importDefault(require("qs"));
10
10
  const utils_1 = require("../utils");
11
11
  const requestsSetup_1 = require("../components/requestsSetup");
12
12
  const tablet_errors_manager_1 = require("../../shared/tablet-errors-manager");
13
+ const cluster_params_1 = require("../components/cluster-params");
13
14
  async function ytTabletErrorsApi(req, res) {
14
15
  try {
15
16
  await ytTabletErrorsApiImpl(req, res);
@@ -27,18 +28,21 @@ function isTabletErrorsManagerPostAction(v) {
27
28
  }
28
29
  async function ytTabletErrorsApiImpl(req, res) {
29
30
  const { ctx, query } = req;
31
+ const { action, ytAuthCluster } = req.params;
30
32
  const { tabletErrorsBaseUrl } = ctx.config;
33
+ const isDeveloper = req.query.isDeveloper === 'true';
34
+ const config = await (0, cluster_params_1.getPreloadedClusterUiConfig)(ytAuthCluster, req.ctx, isDeveloper);
35
+ const clusterSpecificBaseUrl = config === null || config === void 0 ? void 0 : config.tablet_errors_base_url;
31
36
  if (!tabletErrorsBaseUrl) {
32
37
  throw new utils_1.ErrorWithCode(404, 'The installation of UI is not configured to work with TabletErrorsManager, check your config.tabletErrorsBaseUrl');
33
38
  }
34
- const { action, ytAuthCluster } = req.params;
35
39
  if (!isTabletErrorsManagerPostAction(action)) {
36
40
  throw new utils_1.ErrorWithCode(404, 'Unexpected action: ' + action);
37
41
  }
38
42
  const search = (0, isEmpty_1.default)(query) ? '' : `?${qs_1.default.stringify(query)}`;
39
43
  let cfg;
40
44
  try {
41
- cfg = (0, requestsSetup_1.getUserTabletErrorApiSetup)(ytAuthCluster, req);
45
+ cfg = (0, requestsSetup_1.getUserTabletErrorApiSetup)(ytAuthCluster, req, Boolean(clusterSpecificBaseUrl));
42
46
  }
43
47
  catch (e) {
44
48
  return (0, utils_1.sendAndLogError)(req.ctx, res, 400, e);
@@ -46,7 +50,7 @@ async function ytTabletErrorsApiImpl(req, res) {
46
50
  const { authHeaders } = cfg;
47
51
  return axios_1.default
48
52
  .request({
49
- url: `${tabletErrorsBaseUrl}/${action}${search}`,
53
+ url: `${clusterSpecificBaseUrl !== null && clusterSpecificBaseUrl !== void 0 ? clusterSpecificBaseUrl : tabletErrorsBaseUrl}/${action}${search}`,
50
54
  method: req.method,
51
55
  headers: Object.assign(Object.assign(Object.assign({}, ctx.getMetadata()), authHeaders), { 'accept-encoding': 'gzip' }),
52
56
  data: req.body,
@@ -38,6 +38,7 @@ export type MethodErrors = {
38
38
  fixed_end_timestamp: number;
39
39
  total_row_count: number;
40
40
  all_methods: Array<string>;
41
+ error_count_limit_exceeded?: boolean;
41
42
  };
42
43
  export type TabletError = {
43
44
  tablet_id: string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ytsaurus/ui",
3
- "version": "1.96.0",
3
+ "version": "1.97.0",
4
4
  "repository": {
5
5
  "type": "github",
6
6
  "url": "https://github.com/ytsaurus/ytsaurus-ui/tree/main/packages/ui"
@@ -194,7 +194,7 @@
194
194
  "engines": {
195
195
  "node": ">=20"
196
196
  },
197
- "gitHead": "8ae969c32e969ff2c7aab6b2d32e0f432cc6227b",
197
+ "gitHead": "9fec9f614e7b47af9a29955ae25fb3ed6a1822ae",
198
198
  "overrides": {
199
199
  "axios": "$axios",
200
200
  "react-split-pane": {
@@ -1 +0,0 @@
1
- {"version":3,"file":"css/3716.f1b13197.chunk.css","mappings":"AAAA,qBAII,mBAEA,6CACA,kBANA,sBASA,eAPA,aAEA,iBAHA,kBAOA,+DADA,+DAEA,CAEA,4BACI,YAGJ,6BACI,yCAGJ,8BACI,oCACA,oBAEA,qCAOI,6CANA,WAKA,YAFA,OAFA,kBACA,MAEA,UAEA,CAIR,2BACI,kDAGJ,4BACI,qBAGJ,4BAGI,mBAFA,aAIA,gBAHA,uBAEA,kBAEA,mBAGJ,8DAEI,cAGA,gBACA,kBAHA,uBACA,kBAEA,CAGJ,kCACI,+BAGJ,gFAII,mBAFA,aAIA,YAHA,uBAIA,iBAFA,UAEA,CAGJ,4BAEI,mBAGA,+CACA,kBALA,aAEA,YAKA,iBAJA,cAGA,sCACA,CAEA,oCACI,2CACA,wCAIR,4BAEI,mBADA,aAIA,YAFA,uBACA,cACA,CChGR,oBACI,qBAEA,8BAEI,iDADA,aAEA,iBAIA,+CACI,gBCXZ,kBACE,4BAA6B,CAC7B,YAAa,CAEb,gBAAiB,CADjB,UAEF,CAEA,wBACE,YAAa,CACb,eACF,CAEA,yCACE,kDACF,CAEA,+BAGE,kBAAmB,CAFnB,YAAa,CACb,6BAA8B,CAE9B,iBAAqB,CAErB,eAAgB,CADhB,kCAEF,CAEA,8BACE,4CACF,CAEA,wBAEE,kBAAmB,CADnB,YAAa,CAGb,WAAY,CADZ,UAEF,CAEA,8DACE,aACF,CAEA,+BACE,YACF,CAEA,6BAGE,iBAAuB,CAFvB,eAAgB,CAChB,sBAEF,CAEA,8BAEE,kBAAmB,CADnB,YAAa,CAGb,eAAgB,CADhB,UAEF,CAEA,0EACE,aACF,CAEA,mCACE,aAAc,CACd,eAAgB,CAChB,sBAAuB,CACvB,kBACF,CAEA,qCACE,YACF","sources":["webpack://@ytsaurus/ui/./src/ui/components/common/SelectControl/SelectControl.scss","webpack://@ytsaurus/ui/./src/ui/components/common/ColumnSelector/ColumnSelector.scss","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/components/build/esm/components/ItemSelector/ItemSelector.css"],"sourcesContent":[".yc-selector-control {\n box-sizing: border-box;\n position: relative;\n display: flex;\n align-items: center;\n padding-left: 8px;\n border: 1px solid var(--g-color-line-generic);\n border-radius: 3px;\n user-select: none;\n transition: border-color 0.1s linear, background-color 0.1s linear;\n cursor: pointer;\n\n &_size_s {\n height: 28px;\n }\n\n &_focused {\n border-color: var(--g-color-line-generic);\n }\n\n &_disabled {\n color: var(--g-color-text-secondary);\n pointer-events: none;\n\n &::before {\n content: '';\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background-color: var(--g-color-line-generic);\n }\n }\n\n &:hover {\n background-color: var(--g-color-base-simple-hover);\n }\n\n &:active {\n transform: scale(0.98);\n }\n\n &__label {\n display: flex;\n justify-content: center;\n align-items: center;\n padding-right: 6px;\n font-weight: 700;\n white-space: nowrap;\n }\n\n &__value,\n &__placeholder {\n flex: 1 1 auto;\n text-overflow: ellipsis;\n white-space: nowrap;\n overflow: hidden;\n padding-right: 8px;\n }\n\n &__placeholder {\n color: var(--g-color-text-hint);\n }\n\n &__placeholder-icon,\n &__selected-item-icon {\n display: flex;\n justify-content: center;\n align-items: center;\n width: 16px;\n height: 16px;\n margin-right: 5px;\n }\n\n &__badge {\n display: flex;\n align-items: center;\n height: 20px;\n padding: 0 6px;\n background-color: var(--g-color-base-selection);\n border-radius: 4px;\n transition: background-color 0.1s linear;\n margin-right: 3px;\n\n &_focused {\n background-color: var(--g-color-base-brand);\n color: var(--g-color-text-light-primary);\n }\n }\n\n &__arrow {\n display: flex;\n align-items: center;\n justify-content: center;\n min-width: 30px;\n height: 100%;\n }\n}\n",".yc-column-selector {\n display: inline-block;\n\n &__controls {\n padding: 16px;\n border-top: 1px solid var(--g-color-line-generic);\n text-align: right;\n }\n\n &__control {\n &:not(:first-child) {\n margin-left: 8px;\n }\n }\n}\n",".gc-item-selector {\n --g-list-item-padding: 0 16px;\n display: flex;\n width: 100%;\n min-height: 200px;\n}\n\n.gc-item-selector__list {\n flex: 0 0 50%;\n padding-block-start: 8px;\n}\n\n.gc-item-selector__list:not(:last-child) {\n border-inline-end: 1px solid var(--g-color-line-generic);\n}\n\n.gc-item-selector__list-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-block-end: 8px;\n padding: var(--g-list-item-padding);\n min-height: 24px;\n}\n\n.gc-item-selector__list-title {\n font-weight: var(--g-text-accent-font-weight);\n}\n\n.gc-item-selector__item {\n display: flex;\n align-items: center;\n width: 100%;\n height: 100%;\n}\n\n.gc-item-selector__item_active .gc-item-selector__item-select {\n display: block;\n}\n\n.gc-item-selector__item-select {\n display: none;\n}\n\n.gc-item-selector__item-text {\n overflow: hidden;\n text-overflow: ellipsis;\n margin-inline-end: auto;\n}\n\n.gc-item-selector__value-item {\n display: flex;\n align-items: center;\n width: 100%;\n overflow: hidden;\n}\n\n.gc-item-selector__value-item_active .gc-item-selector__value-item-remove {\n display: block;\n}\n\n.gc-item-selector__value-item-text {\n flex: 1 1 auto;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.gc-item-selector__value-item-remove {\n display: none;\n}"],"names":[],"sourceRoot":""}
@@ -1 +0,0 @@
1
- {"version":3,"file":"js/5082.b1a7f7b1.chunk.js","mappings":"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","sources":["webpack://@ytsaurus/ui/./src/ui/store/selectors/tables.ts","webpack://@ytsaurus/ui/./src/ui/store/selectors/accounts/accounts-ts.ts","webpack://@ytsaurus/ui/./src/ui/store/actions/favourites.js","webpack://@ytsaurus/ui/./src/ui/store/selectors/tablet_cell_bundles/tablet-cell-bundle-editor.ts","webpack://@ytsaurus/ui/./src/ui/store/selectors/thor/index.js","webpack://@ytsaurus/ui/./src/ui/utils/accounts/accounts-selector.ts","webpack://@ytsaurus/ui/./src/ui/store/selectors/navigation/index.js","webpack://@ytsaurus/ui/./src/ui/utils/app-url/navigation.ts","webpack://@ytsaurus/ui/./src/ui/utils/app-url/utils.ts","webpack://@ytsaurus/ui/./src/ui/utils/app-url/index.ts","webpack://@ytsaurus/ui/./src/ui/utils/components/tablet-cells/index.js","webpack://@ytsaurus/ui/./src/ui/store/selectors/tablet_cell_bundles/index.ts","webpack://@ytsaurus/ui/./src/ui/utils/tablet_cell_bundles/index.ts","webpack://@ytsaurus/ui/./src/ui/components/templates/utils.js","webpack://@ytsaurus/ui/./src/ui/store/selectors/accounts/accounts.js"],"sourcesContent":["import {RootState} from '../../store/reducers';\nimport {initialState} from '../../store/reducers/tables';\n\nexport const getTables = (state: RootState) => state.tables || initialState;\n","import capitalize_ from 'lodash/capitalize';\nimport forEach_ from 'lodash/forEach';\nimport get_ from 'lodash/get';\nimport keys_ from 'lodash/keys';\nimport map_ from 'lodash/map';\n\nimport {createSelector} from 'reselect';\n\nimport {RootState} from '../../../store/reducers';\nimport {\n ACCOUNT_RESOURCE_TYPES_DESCRIPTION,\n AccountResourceName,\n AccountResourceNameType,\n ROOT_ACCOUNT_NAME,\n} from '../../../constants/accounts/accounts';\nimport hammer from '../../../common/hammer';\nimport {FIX_MY_TYPE} from '../../../types';\nimport {getMediumListNoCache} from '../thor';\nimport ypath from '../../../common/thor/ypath';\n\nimport {accountMemoryMediumToFieldName} from '../../../utils/accounts/accounts-selector';\nimport {calculateLoadingStatus, isFinalLoadingStatus} from '../../../utils/utils';\n\nfunction isTopLevelAccount(account: AccountSelector) {\n const parent = ypath.getValue(account, '/@parent_name');\n return !parent || parent === ROOT_ACCOUNT_NAME;\n}\n\nconst getAccountsLoading = (state: RootState) => state.accounts.accounts.fetching;\nconst getAccountsLoaded = (state: RootState) => state.accounts.accounts.wasLoaded;\nconst getAccountsError = (state: RootState) => state.accounts.accounts.error;\n\nexport const getAccountsIsFinalLoadingStatus = createSelector(\n [getAccountsLoading, getAccountsLoaded, getAccountsError],\n (loading, loaded, error) => {\n const status = calculateLoadingStatus(loading, loaded, error);\n return isFinalLoadingStatus(status);\n },\n);\n\nexport const getActiveAccount = (state: RootState) => state.accounts.accounts.activeAccount;\nexport const getActiveMediumFilter = (state: RootState) =>\n state.accounts.accounts.activeMediumFilter;\nexport const getAccountsContentMode = (state: RootState) =>\n state.accounts.accounts.activeContentModeFilter;\nexport const getAccountsMasterMemoryContentMode = (state: RootState) =>\n state.accounts.accounts.masterMemoryContentMode;\nexport const getEditableAccount = (state: RootState) =>\n state.accounts.accounts.editableAccount as AccountSelector;\n\nexport const getAccountsDisabledCacheForNextFetch = (state: RootState) =>\n state.accounts.accounts.disableCacheForNextFetch;\nexport const getAccountsEditCounter = (state: RootState) => state.accounts.accounts.editCounter;\n\nexport interface AccountSelector {\n name: string;\n alertsCount: number;\n perMedium: {[key: string]: number};\n\n $value: string;\n $attributes: unknown;\n parent?: string;\n\n master_memory_detailed: {\n nodes?: number;\n chunks?: number;\n attributes?: number;\n tablets?: number;\n schemas?: number;\n };\n\n getDiskSpaceProgressInfo(mediumType: string, recursive?: boolean): ProgressInfo;\n\n getNodeCountProgressInfo(recursive?: boolean): ProgressInfo;\n getChunkCountProgressInfo(recursive?: boolean): ProgressInfo;\n getTabletStaticMemoryInfo(recursive?: boolean): ProgressInfo;\n}\n\ninterface ProgressInfo {\n total?: number;\n limit?: number;\n}\n\ninterface AccountsAggregation {\n totalNodeCount: number;\n nodeCountLimit: number;\n\n totalChunkCount: number;\n chunkCountLimit: number;\n\n perMedium: {\n [mediumType: string]: {\n totalDiskSpace: number;\n diskSpaceLimit: number;\n };\n };\n\n totalTabletCount: number;\n tabletCountLimit: number;\n\n totalTabletStaticMemory: number;\n tabletStaticMemoryLimit: number;\n\n totalMasterMemory: number;\n masterMemoryLimit: number;\n}\n\nexport interface AccountsTreeItem {\n attributes: AccountSelector;\n isAggregation: boolean;\n}\n\nexport interface AccountStaticConfigurationItem {\n name: string;\n level?: number;\n\n format: 'Bytes' | 'Number';\n total?: number;\n used?: number;\n free?: number;\n}\n\nconst getAccounts = (state: RootState) =>\n state.accounts.accounts.accounts as Array<AccountSelector>;\n\nexport const getAccountNames = createSelector(getAccounts, (items: Array<FIX_MY_TYPE>) =>\n map_(items, (i) => i.$value).sort(),\n);\n\nexport const getAccountsMapByName = createSelector(getAccounts, (accounts) => {\n const nameToAccountMap: Record<string, AccountSelector> = {};\n forEach_(accounts, (item) => {\n nameToAccountMap[item.name] = item;\n });\n return nameToAccountMap;\n});\n\nexport const getAccountsTree = createSelector([getAccountsMapByName], prepareAccountsTree);\n\ntype Tree<T> = {\n attributes: T;\n children: Array<T>;\n name: string;\n parent?: string;\n};\n\nexport type AccountsTree = Tree<AccountSelector>;\n\nfunction prepareAccountsTree(\n nameToAccountMap: Record<string, AccountSelector>,\n): Record<string, AccountsTree> {\n const tree = hammer.treeList.prepareTree(nameToAccountMap, (item: AccountSelector) => {\n if (nameToAccountMap[item.parent!] === undefined) {\n // specific case when parent account is removed\n // child should be attahed to the upper level\n return '<Root>';\n }\n\n return item.parent || '<Root>';\n });\n\n return tree;\n}\n\nfunction makeStaticConfigurationItem(\n name: string,\n format: 'Bytes' | 'Number',\n {total, limit}: {total?: number; limit?: number},\n level?: number,\n): [AccountStaticConfigurationItem] | [] {\n if (!total && !limit) {\n return [];\n }\n\n return [\n {\n name,\n level,\n format,\n used: total,\n total: limit,\n free: (limit || 0) - (total || 0),\n },\n ];\n}\n\nexport const getActiveAccountStaticConfiguration = createSelector(\n [getActiveAccount, getAccountsTree, getMediumListNoCache],\n (activeAccount, tree = {}, mediums = []) => {\n const item = tree[activeAccount];\n if (!item) {\n return [];\n }\n\n const mediumsInfo: Array<AccountStaticConfigurationItem> = [];\n for (const i of mediums) {\n mediumsInfo.push(\n ...makeStaticConfigurationItem(\n capitalize_(i),\n 'Bytes',\n item.attributes.getDiskSpaceProgressInfo(i, true),\n 1,\n ),\n );\n }\n\n if (mediumsInfo.length) {\n mediumsInfo.splice(0, 0, {\n name: 'Media',\n format: 'Number',\n });\n }\n\n const res: Array<AccountStaticConfigurationItem> = [\n ...mediumsInfo,\n ...makeStaticConfigurationItem(\n 'Nodes',\n 'Number',\n item.attributes.getNodeCountProgressInfo(true),\n ),\n ...makeStaticConfigurationItem(\n 'Chunks',\n 'Number',\n item.attributes.getChunkCountProgressInfo(true),\n ),\n ];\n\n return res;\n },\n);\n\nfunction getAggregatedByType(\n aggr: AccountsAggregation,\n type: AccountResourceNameType,\n mediumType = '',\n) {\n switch (type) {\n case AccountResourceName.DISK_SPACE_PER_MEDIUM:\n return {\n progress: undefined,\n total: aggr.perMedium[mediumType]?.totalDiskSpace,\n limit: aggr.perMedium[mediumType]?.diskSpaceLimit,\n };\n case AccountResourceName.NODE_COUNT:\n return {\n progress: undefined,\n total: aggr.totalNodeCount,\n limit: aggr.nodeCountLimit,\n };\n case AccountResourceName.CHUNK_COUNT:\n return {\n progress: undefined,\n total: aggr.totalChunkCount,\n limit: aggr.chunkCountLimit,\n };\n case AccountResourceName.TABLET_STATIC_MEMORY:\n return {\n progress: undefined,\n total: aggr.totalTabletStaticMemory,\n limit: aggr.tabletStaticMemoryLimit,\n };\n case AccountResourceName.TABLET_COUNT:\n return {\n progress: undefined,\n total: aggr.totalTabletCount,\n limit: aggr.tabletCountLimit,\n };\n case AccountResourceName.MASTER_MEMORY: {\n const {total, limit} =\n get_(aggr, accountMemoryMediumToFieldName('master_memory/' + mediumType)) || {};\n return {progress: undefined, total, limit};\n }\n }\n}\n\nfunction getResourceInfo(\n entry: AccountsTreeItem,\n type: AccountResourceNameType,\n activeAccount?: string,\n mediumType?: string,\n) {\n if (entry.isAggregation) {\n return getAggregatedByType(entry.attributes as any, type, mediumType);\n }\n const {getInfo} = ACCOUNT_RESOURCE_TYPES_DESCRIPTION[type];\n const name = getAccountName(entry);\n const recursive = name !== activeAccount;\n return getInfo(entry.attributes, recursive, mediumType);\n}\n\nexport const getAccountMasterMemoryMedia = createSelector([getAccounts], (items = []) => {\n const [item] = items;\n if (!item) {\n return [];\n }\n\n const perCell = ypath.getValue(item, '/@resource_usage/master_memory/per_cell');\n const mediums = map_(keys_(perCell), (key) => {\n return `per_cell/${key}`;\n });\n\n return ['total', 'chunk_host', ...mediums];\n});\n\nconst getAccountsMasterMemoryColumns = createSelector(\n [getActiveAccount, getAccountsMasterMemoryContentMode],\n (activeAccount, medium) => {\n return {\n master_memory_percentage: {\n get: (entry: AccountsTreeItem) => {\n const data =\n getResourceInfo(\n entry,\n AccountResourceName.MASTER_MEMORY,\n activeAccount,\n medium,\n ) || {};\n return data.progress;\n },\n },\n master_memory_usage: {\n get: (entry: AccountsTreeItem) => {\n const data =\n getResourceInfo(\n entry,\n AccountResourceName.MASTER_MEMORY,\n activeAccount,\n medium,\n ) || {};\n return data.total;\n },\n },\n master_memory_limit: {\n get: (entry: AccountsTreeItem) => {\n const data =\n getResourceInfo(\n entry,\n AccountResourceName.MASTER_MEMORY,\n activeAccount,\n medium,\n ) || {};\n return data.limit;\n },\n },\n master_memory_free: {\n get: (entry: AccountsTreeItem) => {\n const {total, limit} =\n getResourceInfo(entry, AccountResourceName.MASTER_MEMORY, '', medium) || {};\n return total !== undefined && limit - total;\n },\n },\n\n master_memory_detailed_nodes: {\n get(item: AccountsTreeItem) {\n const {\n attributes: {master_memory_detailed: data},\n } = item;\n return data?.nodes;\n },\n },\n\n master_memory_detailed_chunks: {\n get(item: AccountsTreeItem) {\n const {\n attributes: {master_memory_detailed: data},\n } = item;\n return data?.chunks;\n },\n },\n\n master_memory_detailed_attributes: {\n get(item: AccountsTreeItem) {\n const {\n attributes: {master_memory_detailed: data},\n } = item;\n return data?.attributes;\n },\n },\n\n master_memory_detailed_tablets: {\n get(item: AccountsTreeItem) {\n const {\n attributes: {master_memory_detailed: data},\n } = item;\n return data?.tablets;\n },\n },\n\n master_memory_detailed_schemas: {\n get(item: AccountsTreeItem) {\n const {\n attributes: {master_memory_detailed: data},\n } = item;\n return data?.schemas;\n },\n },\n };\n },\n);\n\nexport const getAccountsColumnFields = createSelector(\n [getActiveAccount, getActiveMediumFilter, getAccountsMasterMemoryColumns],\n (activeAccount, mediumType, accountsColumns) => {\n const res = {\n name: {\n get: (entry: AccountsTreeItem) => {\n return entry.attributes.name;\n },\n },\n alerts: {\n get: (entry: AccountsTreeItem) => {\n return entry.attributes.alertsCount;\n },\n },\n disk_space_default: {\n get: (entry: AccountsTreeItem) => {\n const data = getResourceInfo(\n entry,\n 'disk_space_per_medium',\n activeAccount,\n mediumType,\n );\n\n return data && data.total;\n },\n },\n disk_space_percentage: {\n get: (entry: AccountsTreeItem) => {\n const data = getResourceInfo(\n entry,\n 'disk_space_per_medium',\n activeAccount,\n mediumType,\n );\n\n return data && data.progress;\n },\n },\n disk_space_usage: {\n get: (entry: AccountsTreeItem) => {\n const data = getResourceInfo(\n entry,\n 'disk_space_per_medium',\n activeAccount,\n mediumType,\n );\n\n return data && data.total;\n },\n },\n disk_space_limit: {\n get: (entry: AccountsTreeItem) => {\n const data = getResourceInfo(\n entry,\n 'disk_space_per_medium',\n activeAccount,\n mediumType,\n );\n\n return data && data.limit;\n },\n },\n disk_space_free: {\n get: (entry: AccountsTreeItem) => {\n const {limit, total} =\n getResourceInfo(entry, 'disk_space_per_medium', '', mediumType) || {};\n\n return total !== undefined && limit - total;\n },\n },\n node_count_default: {\n get: (entry: AccountsTreeItem) => {\n const data = getResourceInfo(entry, 'node_count', activeAccount) || {};\n return data.progress;\n },\n },\n node_count_percentage: {\n get: (entry: AccountsTreeItem) => {\n const data = getResourceInfo(entry, 'node_count', activeAccount) || {};\n return data.progress;\n },\n },\n node_count_usage: {\n get: (entry: AccountsTreeItem) => {\n const data = getResourceInfo(entry, 'node_count', activeAccount) || {};\n return data.total;\n },\n },\n node_count_limit: {\n get: (entry: AccountsTreeItem) => {\n const data = getResourceInfo(entry, 'node_count', activeAccount) || {};\n return data.limit;\n },\n },\n node_count_free: {\n get: (entry: AccountsTreeItem) => {\n const {total, limit} = getResourceInfo(entry, 'node_count', '') || {};\n return total !== undefined && limit - total;\n },\n },\n chunk_count_default: {\n get: (entry: AccountsTreeItem) => {\n const data = getResourceInfo(entry, 'chunk_count', activeAccount) || {};\n return data.progress;\n },\n },\n chunk_count_percentage: {\n get: (entry: AccountsTreeItem) => {\n const data = getResourceInfo(entry, 'chunk_count', activeAccount) || {};\n return data.progress;\n },\n },\n chunk_count_usage: {\n get: (entry: AccountsTreeItem) => {\n const data = getResourceInfo(entry, 'chunk_count', activeAccount) || {};\n return data.total;\n },\n },\n chunk_count_limit: {\n get: (entry: AccountsTreeItem) => {\n const data = getResourceInfo(entry, 'chunk_count', activeAccount) || {};\n return data.limit;\n },\n },\n chunk_count_free: {\n get: (entry: AccountsTreeItem) => {\n const {total, limit} = getResourceInfo(entry, 'chunk_count', '') || {};\n return total !== undefined && limit - total;\n },\n },\n tablet_count_percentage: {\n get: (entry: AccountsTreeItem) => {\n const data = getResourceInfo(entry, 'tablet_count', activeAccount) || {};\n return data.progress;\n },\n },\n tablet_count_usage: {\n get: (entry: AccountsTreeItem) => {\n const data = getResourceInfo(entry, 'tablet_count', activeAccount) || {};\n return data.total;\n },\n },\n tablet_count_limit: {\n get: (entry: AccountsTreeItem) => {\n const data = getResourceInfo(entry, 'tablet_count', activeAccount) || {};\n return data.limit;\n },\n },\n tablet_count_free: {\n get: (entry: AccountsTreeItem) => {\n const {total, limit} = getResourceInfo(entry, 'tablet_count', '') || {};\n return total !== undefined && limit - total;\n },\n },\n tablet_static_memory_percentage: {\n get: (entry: AccountsTreeItem) => {\n const data =\n getResourceInfo(entry, 'tablet_static_memory', activeAccount) || {};\n return data.progress;\n },\n },\n tablet_static_memory_usage: {\n get: (entry: AccountsTreeItem) => {\n const data =\n getResourceInfo(entry, 'tablet_static_memory', activeAccount) || {};\n return data.total;\n },\n },\n tablet_static_memory_limit: {\n get: (entry: AccountsTreeItem) => {\n const data =\n getResourceInfo(entry, 'tablet_static_memory', activeAccount) || {};\n return data.limit;\n },\n },\n tablet_static_memory_free: {\n get: (entry: AccountsTreeItem) => {\n const {total, limit} = getResourceInfo(entry, 'tablet_static_memory', '') || {};\n return total !== undefined && limit - total;\n },\n },\n ...accountsColumns,\n };\n return res;\n },\n);\n\nexport function getAccountName(treeItem?: {attributes: AccountSelector}) {\n const {attributes: account} = treeItem || {};\n return account && account.name;\n}\n\nexport const getEditableAccountQuotaSources = createSelector(\n [getAccountsTree, getEditableAccount],\n (tree, account) => {\n if (!account?.name || !tree) {\n return [];\n }\n const res = collectSubtreeItems(account.name, tree);\n\n return res.sort();\n },\n);\n\nfunction collectSubtreeItems(\n account: string,\n tree: Record<string, AccountsTree>,\n collected = new Set<string>(),\n): Array<string> {\n if (collected.has(account)) {\n return [];\n }\n\n collected.add(account);\n\n const res = [] as Array<string>;\n const {parent, children, attributes} = tree[account] || {};\n const isTopLevel = isTopLevelAccount(attributes);\n if (parent && tree[parent] && !isTopLevel && !collected.has(parent)) {\n res.push(parent);\n const parentItems = collectSubtreeItems(parent, tree, collected);\n res.push(...parentItems);\n }\n forEach_(children, (item) => {\n if (collected.has(item.name)) {\n return;\n }\n res.push(item.name);\n const childItems = collectSubtreeItems(item.name, tree, collected);\n res.push(...childItems);\n });\n return res;\n}\n\nexport const isEditableAccountOfTopLevel = createSelector(\n [getAccountsMapByName, getEditableAccount],\n (mapByName, account) => {\n return isTopLevelAccount(mapByName[account?.name]);\n },\n);\n","import {getMetrics} from '../../common/utils/metrics';\n\nimport find_ from 'lodash/find';\n\nimport {\n getAccountsNS,\n getBundlesNS,\n getChytNS,\n getClusterNS,\n makeGetSetting,\n} from '../../store/selectors/settings';\nimport {SettingName} from '../../../shared/constants/settings';\nimport {reloadSetting, setSetting} from '../../store/actions/settings';\nimport {getActiveAccount} from '../../store/selectors/accounts/accounts';\nimport {getTabletsActiveBundle} from '../selectors/tablet_cell_bundles';\n\nconst LAST_VISITED_BUFFER_SIZE = 15;\n\nexport function accountsTrackVisit(account) {\n return (dispatch, getState) => {\n const activeAccount = getActiveAccount(getState());\n if (account === activeAccount) {\n return;\n }\n\n const parentNS = getAccountsNS(getState());\n return dispatch(trackLastVisited(account, parentNS));\n };\n}\n\nexport function navigationTrackVisit(path) {\n return (dispatch, getState) => {\n const parentNS = getClusterNS(getState());\n return dispatch(trackLastVisited(path, parentNS));\n };\n}\n\nexport function bundlesTrackVisit(bundle) {\n return (dispatch, getState) => {\n const state = getState();\n const activeBundle = getTabletsActiveBundle(state);\n if (!bundle || bundle === activeBundle) {\n return;\n }\n const parentNS = getBundlesNS(state);\n return dispatch(trackLastVisited(bundle, parentNS));\n };\n}\n\nfunction trackLastVisited(value, parentNS, settingName = SettingName.LOCAL.LAST_VISITED) {\n return (dispatch, getState) => {\n return dispatch(reloadSetting(settingName, parentNS)).then(() => {\n const state = getState();\n const current = makeGetSetting(state)(settingName, parentNS) || [];\n const currentPathItem = {path: value, count: 1};\n\n return dispatch(\n setSetting(\n settingName,\n parentNS,\n current\n .reduce(\n (updated, item) => {\n if (item.path === value) {\n currentPathItem.count += item.count;\n } else {\n updated.push(item);\n }\n\n return updated;\n },\n [currentPathItem],\n )\n .slice(0, LAST_VISITED_BUFFER_SIZE),\n ),\n );\n });\n };\n}\n\nexport function accountsToggleFavourite(account) {\n getMetrics().countEvent('accounts_toggle-favourites');\n\n return (dispatch, getState) => {\n const parentNS = getAccountsNS(getState());\n return dispatch(toggleFavourite(account, parentNS));\n };\n}\n\nexport function chytToggleFavourite(clique) {\n getMetrics().countEvent('chyt_toggle-favourites');\n\n return (dispatch, getState) => {\n const chytNS = getChytNS(getState());\n return dispatch(toggleFavourite(clique, chytNS));\n };\n}\n\nexport function navigationToggleFavourite(path) {\n getMetrics().countEvent('navigation_toggle-favourites');\n\n return (dispatch, getState) => {\n const parentNS = getClusterNS(getState());\n return dispatch(toggleFavourite(path, parentNS));\n };\n}\n\nexport function bundlesToggleFavourite(bundle) {\n getMetrics().countEvent('accounts_toggle-favourites');\n\n return (dispatch, getState) => {\n const parentNS = getBundlesNS(getState());\n return dispatch(toggleFavourite(bundle, parentNS));\n };\n}\n\nexport function toggleFavourite(value, parentNS, settingName = SettingName.LOCAL.FAVOURITES) {\n return (dispatch, getState) => {\n return dispatch(reloadSetting(settingName, parentNS)).then(() => {\n const state = getState();\n const current = [...(makeGetSetting(state)(settingName, parentNS) || [])];\n const currentPathItem = {path: value};\n\n const entry = find_(current, currentPathItem);\n\n if (entry) {\n current.splice(current.indexOf(entry), 1);\n } else {\n current.push(currentPathItem);\n }\n\n return dispatch(setSetting(settingName, parentNS, current));\n });\n };\n}\n","import type {RootState} from '../../../store/reducers';\n\nexport const getTabletCellBundleEditorState = (state: RootState) => state.tabletCellBundleEditor;\nexport const getTabletCellBundleControllerInstanceDetailsMap = (state: RootState) =>\n state.tabletCellBundleEditor.instanceDetailsMap;\n","import filter_ from 'lodash/filter';\nimport {createSelector} from 'reselect';\n\nimport hammer from '../../../common/hammer';\nimport {MediumType} from '../../../constants/index';\n\nexport const getMediumList = createSelector(\n (state) => state.global.mediumList,\n (data) => hammer.utils.sortInPredefinedOrder([MediumType.DEFAULT], [...data]),\n);\n\nexport const getMediumListNoCache = createSelector([getMediumList], (mediums) =>\n filter_(mediums, (item) => item !== 'cache'),\n);\n\nexport const getCurrentCluster = (state) => state.global.cluster;\n","import camelCase_ from 'lodash/camelCase';\nimport capitalize_ from 'lodash/capitalize';\nimport forEach_ from 'lodash/forEach';\nimport replace_ from 'lodash/replace';\nimport some_ from 'lodash/some';\n\nimport ypath from '../../common/thor/ypath';\n\nimport {AccountResourceInfo} from '../../constants/accounts/accounts';\nimport {computeProgress, getProgressTheme} from '../../utils/progress';\nimport formatLib from '../../common/hammer/format';\nimport {FIX_MY_TYPE} from '../../types';\n\nexport function accountMemoryMediumToFieldName(path: string) {\n return replace_(path, /\\//g, '_');\n}\n\nexport interface AccountParsedData {\n $attributes: any;\n $value: string;\n\n name: string;\n parent: string;\n abc: {id: number; slug: string};\n\n stats: string; // stats url;\n\n responsibleUsers: Array<string>; // TODO: remove me later\n responsibleUsersSet: Set<string>; // TODO: remove me later\n\n hasRecursiveResources: boolean;\n recursiveResources: Record<string, AccountResources>;\n\n master_memory_detailed: {\n nodes: number;\n chunks: number;\n attributes: number;\n tablets: number;\n schemas: number;\n };\n\n ownAlertsCount: number;\n alertsCount: number;\n\n masterMemoryResources: Record<string, AccountResourceInfo>;\n perMedium: Record<string, unknown>;\n}\n\ninterface AccountResources {}\n\nexport function parseAccountData(data: any) {\n const dst: AccountParsedData = {\n recursiveResources: {},\n masterMemoryResources: {},\n } as any;\n\n dst.$value = data.$value;\n dst.name = dst.$value;\n dst.$attributes = data.$attributes;\n\n dst.abc = dst.$attributes.abc || {};\n dst.responsibleUsers = Array.isArray(dst.$attributes.responsibles)\n ? dst.$attributes.responsibles\n : [];\n dst.responsibleUsersSet = new Set(dst.responsibleUsers);\n dst.parent = dst.$attributes.parent_name;\n\n dst.hasRecursiveResources = Boolean(ypath.getValue(dst, '/@recursive_resource_usage'));\n dst.recursiveResources = {};\n\n updateResource(dst, dst.$attributes, 'chunk_count', 'Number');\n updateResource(dst, dst.$attributes, 'node_count', 'Number');\n\n updateResource(dst, dst.$attributes, 'tablet_count', 'Number');\n updateResource(dst, dst.$attributes, 'tablet_static_memory', 'Bytes');\n\n updateResourcePerMedium(dst, dst.$attributes, 'disk_space', 'Bytes');\n\n updateMasterMemory(dst, dst.$attributes);\n\n dst.alertsCount = getAccountAlertsCount(dst);\n\n return dst;\n}\n\nfunction updateMasterMemory(dst: AccountParsedData, attributes: any) {\n prepareResource(dst, attributes, 'master_memory/total', 'Bytes');\n prepareResource(dst, attributes, 'master_memory/chunk_host', 'Bytes');\n\n const perCell = ypath.getValue(attributes, '/resource_usage/master_memory/per_cell');\n forEach_(perCell, (_value, key) => {\n prepareResource(dst, attributes, `master_memory/per_cell/${key}`, 'Bytes');\n });\n\n dst.master_memory_detailed = ypath.getValue(\n attributes,\n '/resource_usage/detailed_master_memory',\n );\n}\n\nfunction prepareResource(\n dst: AccountParsedData,\n resourceAttributes: any,\n path: string,\n format: 'Bytes' | 'Number',\n) {\n const name = accountMemoryMediumToFieldName(path);\n const committed = ypath.getValue(resourceAttributes, '/committed_resource_usage/' + path);\n const limit = ypath.getValue(resourceAttributes, '/resource_limits/' + path);\n (dst as FIX_MY_TYPE)[name] = prepareResourceInfo(\n {\n total: ypath.getValue(resourceAttributes, '/resource_usage/' + path),\n committed,\n limit,\n },\n format,\n );\n\n if (dst.hasRecursiveResources) {\n const recursiveUsage = ypath.getValue(\n resourceAttributes,\n '/recursive_resource_usage/' + path,\n );\n const recursiveCommitted = ypath.getValue(\n resourceAttributes,\n '/recursive_committed_resource_usage/' + path,\n );\n dst.recursiveResources[name] = prepareResourceInfo(\n {\n total: recursiveUsage,\n committed: recursiveCommitted,\n limit: ypath.getValue(resourceAttributes, '/resource_limits/' + path),\n },\n format,\n );\n }\n}\n\nfunction updateResource(\n dst: AccountParsedData,\n attributes: any,\n name: string,\n format: 'Bytes' | 'Number',\n nameYPath = name,\n) {\n const committed = ypath.getValue(attributes, '/committed_resource_usage/' + nameYPath);\n const limit = ypath.getValue(attributes, '/resource_limits/' + nameYPath);\n Object.assign(\n dst,\n updateResourceFields(\n {\n total: ypath.getValue(attributes, '/resource_usage/' + nameYPath),\n committed,\n limit,\n },\n name,\n format,\n ),\n );\n\n if (dst.hasRecursiveResources) {\n const recursiveUsage = ypath.getValue(attributes, '/recursive_resource_usage/' + nameYPath);\n const recursiveCommitted = ypath.getValue(\n attributes,\n '/recursive_committed_resource_usage/' + nameYPath,\n );\n Object.assign(\n dst.recursiveResources,\n updateResourceFields(\n {\n total: recursiveUsage,\n committed: recursiveCommitted,\n limit: ypath.getValue(attributes, '/resource_limits/' + nameYPath),\n },\n name,\n format,\n ),\n );\n }\n}\n\nfunction updateResourcePerMedium(\n dst: AccountParsedData,\n attributes: any,\n name: string,\n format: 'Bytes' | 'Number',\n) {\n const path = 'disk_space_per_medium';\n const recursiveTotalPerMedium = ypath.getValue(attributes, '/recursive_resource_usage/' + path);\n const recursiveCommittedPerMedium = ypath.getValue(\n attributes,\n '/recursive_committed_resource_usage/' + path,\n );\n const totalPerMedium = ypath.getValue(attributes, '/resource_usage/' + path);\n const committedPerMedium = ypath.getValue(attributes, '/committed_resource_usage/' + path);\n const limitPerMedium = ypath.getValue(attributes, '/resource_limits/' + path);\n\n dst.perMedium = {};\n forEach_(totalPerMedium, (mediumData, mediumName) => {\n dst.perMedium[mediumName] = updateResourceFields(\n {\n total: mediumData,\n committed: committedPerMedium[mediumName],\n limit: limitPerMedium[mediumName],\n },\n name,\n format,\n );\n });\n\n let lastMedium;\n try {\n if (dst.hasRecursiveResources) {\n dst.recursiveResources.perMedium = {};\n forEach_(recursiveTotalPerMedium, (mediumData, mediumName) => {\n lastMedium = mediumName;\n (dst.recursiveResources as FIX_MY_TYPE).perMedium[mediumName] =\n updateResourceFields(\n {\n total: mediumData,\n committed: recursiveCommittedPerMedium[mediumName],\n limit: limitPerMedium[mediumName],\n },\n name,\n format,\n );\n });\n }\n } catch (e) {\n console.log({attributes, limitPerMedium, path, lastMedium});\n throw e;\n }\n}\n\nfunction prepareResourceInfo(\n data: {total?: number; committed?: number; limit?: number},\n format: 'Bytes' | 'Number',\n): AccountResourceInfo {\n const total = data.total || 0;\n const committed = data.committed || 0;\n const limit = data.limit || 0;\n\n const uncommitted = total - committed;\n\n const progressText =\n formatLib[format](committed) +\n (uncommitted >= 0 ? ' + ' : ' - ') +\n formatLib[format](Math.abs(uncommitted)) +\n ' / ' +\n formatLib[format](limit);\n\n const progress = computeProgress(total, limit) ?? 0;\n const theme = getProgressTheme((committed / limit) * 100);\n\n return {\n committed,\n uncommitted,\n total,\n limit,\n theme,\n progress,\n progressText,\n };\n}\n\nfunction capitalizeFirstLetter(text: string) {\n return capitalize_(text[0]) + text.slice(1);\n}\n\n/**\n * @deprecated use prepareResourceInfo instead of it\n * @param data\n * @param format\n */\nfunction updateResourceFields(\n data: {total?: number; committed?: number; limit?: number},\n name: string,\n format: 'Bytes' | 'Number',\n) {\n const target: any = {};\n const total = data.total || 0;\n const committed = data.committed || 0;\n const limit = data.limit || 0;\n\n const uncommitted = total - committed;\n\n const camelCaseName = camelCase_(name);\n const capitalizedCamelCaseName = capitalizeFirstLetter(camelCaseName);\n\n target['committed' + capitalizedCamelCaseName] = committed;\n target['total' + capitalizedCamelCaseName] = total;\n target['uncommitted' + capitalizedCamelCaseName] = uncommitted;\n\n target[camelCaseName + 'Limit'] = limit;\n target[camelCaseName + 'ProgressText'] =\n formatLib[format](committed) +\n (uncommitted >= 0 ? ' + ' : ' - ') +\n formatLib[format](Math.abs(uncommitted)) +\n ' / ' +\n formatLib[format](limit);\n\n const progress = (target[camelCaseName + 'Progress'] = computeProgress(total, limit));\n\n target[camelCaseName + 'ProgressTheme'] = getProgressTheme(\n name === 'node_count' ? (committed / limit) * 100 : progress,\n );\n\n return target;\n}\n\nfunction getAccountAlertsCount(dst: AccountParsedData) {\n let res = 0;\n const {recursive_violated_resource_limits: recursiveViolatedLimits} = dst.$attributes;\n visitResourceFields(recursiveViolatedLimits, (value: number) => {\n res += value;\n });\n return res;\n}\n\n/**\n * Returns true if stopped\n * @param container\n * @param stopFn\n * @returns {*}\n */\nexport function visitResourceFields(container: any, stopFn: (value: number, path: string) => void) {\n if (!container) {\n return;\n }\n const {\n // disk_space will be removed later and it should not be visited\n disk_space: _diskSpace,\n disk_space_per_medium: perMedium,\n master_memory: _masterMemory,\n ...rest\n } = container;\n visitNumberOrGoDeep(rest, '', stopFn);\n visitNumberOrGoDeep(perMedium, 'medium', stopFn);\n}\n\nfunction visitNumberOrGoDeep(\n value: any,\n path: string,\n stopFn: (value: number, path: string) => void,\n) {\n if (!isNaN(value)) {\n stopFn(value, path);\n } else {\n some_(value, (item, key) => {\n visitNumberOrGoDeep(item, path ? `${path}/${key}` : key, stopFn);\n });\n }\n}\n","import {createSelector} from 'reselect';\nimport ypath from '@ytsaurus/interface-helpers/lib/ypath';\n\nimport {NAVIGATION_MAP_NODE_TABLE_ID} from '../../../constants/navigation/index';\nimport {getNavigationDefaultPath} from '../../../store/selectors/settings';\nimport {isFinalLoadingStatus} from '../../../utils/utils';\n\nexport const getTransaction = (state) => state.navigation.navigation.transaction;\nexport const getAttributes = (state) => state.navigation.navigation.attributes;\nexport const getAttributesWithTypes = (state) => state.navigation.navigation.attributesWithTypes;\nexport const getLoadState = (state) => state.navigation.navigation.loadState;\nexport const getError = (state) => state.navigation.navigation.error;\nexport const getRawPath = (state) => state.navigation.navigation.path;\nexport const getIdmSupport = (state) => state.navigation.navigation.isIdmSupported;\nexport const getSortState = (state) => state.tables[NAVIGATION_MAP_NODE_TABLE_ID];\n\nexport const getType = createSelector(getAttributes, (attributes) => attributes?.type);\n\nexport const getPath = createSelector(\n [getRawPath, getNavigationDefaultPath],\n (rawPath, defaultPath) => rawPath || defaultPath,\n);\n\nexport const getAttributesPath = createSelector(\n [getAttributes, getPath],\n (attributes, navigationPath) => attributes?.path || navigationPath,\n);\n\nexport const isNavigationFinalLoadState = createSelector([getLoadState], (state) => {\n return isFinalLoadingStatus(state);\n});\n\nexport const getParsedPath = createSelector(getPath, (path) => {\n try {\n return ypath.YPath.create(path, 'absolute');\n } catch (ex) {\n console.error(ex);\n }\n});\nexport const getActualPath = createSelector([getPath, getType], (path, type) => {\n return type === 'map_node' ? path + '/' : path;\n});\n\nexport const checkIsTrash = createSelector(\n [getPath],\n (path) => path.startsWith('//tmp/trash') || path.startsWith('//trash'),\n);\n","import {Page} from '../../../shared/constants/settings';\nimport {YT} from '../../config/yt-config';\nimport type {Tab as NavigationTab} from '../../constants/navigation';\nimport {ValueOf} from '../../types';\n\nimport {TabletErrorsByPathState} from '../../store/reducers/navigation/tabs/tablet-errors/tablet-errors-by-path';\nimport {getNavigationParams} from '../../store/reducers/navigation/url-mapping';\nimport {makeURLSearchParams} from './utils';\n\nexport function makeNavigationLink(params: {\n path: string;\n cluster?: string;\n navmode?: ValueOf<typeof NavigationTab>;\n teMode?: 'request_errors';\n teTime?: TabletErrorsByPathState['timeRangeFilter'];\n teMethods?: Array<string>;\n}) {\n const {cluster, ...rest} = params;\n const res = `/${cluster || YT.cluster}/${Page.NAVIGATION}`;\n const search = makeURLSearchParams(rest, getNavigationParams()).toString();\n return search ? `${res}?${search}` : res;\n}\n","import {LocationParameters} from '../../store/location';\n\nexport function makeURLSearchParams<T extends object>(params: T, info: LocationParameters) {\n const res = new URLSearchParams();\n Object.keys(params).reduce((acc, k) => {\n const value = params[k as keyof T];\n if (k in info) {\n if (info[k].options?.serialize) {\n const tmp = info[k].options?.serialize?.(value);\n if (tmp !== undefined) {\n res.append(k, tmp + '');\n }\n } else {\n res.append(k, value + '');\n }\n }\n return acc;\n }, res);\n return res;\n}\n","import {Page} from '../../../shared/constants/settings';\nimport {Tab as ComponentsTab} from '../../constants/components/main';\nimport {YT} from '../../config/yt-config';\n\nexport * from './navigation';\n\nexport function makeComponentsNodesUrl({host, cluster}: {host?: string; cluster?: string} = {}) {\n return host\n ? `/${cluster || YT.cluster}/${Page.COMPONENTS}/${ComponentsTab.NODES}/${host}`\n : `/${cluster || YT.cluster}/${Page.COMPONENTS}/${ComponentsTab.NODES}`;\n}\n\nexport function makeProxyUrl(cluster: string, address: string) {\n return `/${cluster}/${Page.COMPONENTS}/${ComponentsTab.RPC_PROXIES}?host=${address}`;\n}\n\nexport function makeSchedulingUrl({\n pool,\n poolTree,\n cluster,\n}: {\n pool: string;\n poolTree: string;\n cluster?: string;\n}) {\n return `/${cluster || YT.cluster}/${Page.SCHEDULING}?pool=${pool}&poolTree=${poolTree}`;\n}\n\nexport function makeAccountsUrl(account: string, cluster?: string) {\n return `/${cluster || YT.cluster}/${Page.ACCOUNTS}?account=${account}`;\n}\n","import ypath from '@ytsaurus/interface-helpers/lib/ypath';\nimport hammer from '../../../common/hammer';\n\nimport find_ from 'lodash/find';\nimport map_ from 'lodash/map';\nimport reduce_ from 'lodash/reduce';\n\nimport {Page} from '../../../constants';\nimport {TabletsTab} from '../../../constants/tablets';\nimport {nanToUndefined} from '../../utils';\n\nexport function prepareTabletCells(tabletCells) {\n return map_(tabletCells, (tabletCell) => {\n const uncompressed = ypath.getValue(\n tabletCell,\n '/@total_statistics/uncompressed_data_size',\n );\n const compressed = ypath.getValue(tabletCell, '/@total_statistics/compressed_data_size');\n const tablets = ypath.getValue(tabletCell, '/@total_statistics/tablet_count');\n const memory = ypath.getValue(tabletCell, '/@total_statistics/memory_size');\n const health = ypath.getValue(tabletCell, '/@status/health');\n\n const bundle = ypath.getValue(tabletCell, '/@tablet_cell_bundle');\n const peers = ypath.getValue(tabletCell, '/@peers');\n const id = ypath.getValue(tabletCell, '/@id');\n\n const peerCount = peers ? peers.length : 0;\n\n let peer;\n let peerAddress;\n let state;\n\n if (peerCount) {\n peer = find_(peers, (peer) => peer.state === 'leading') || peers[0];\n peerAddress = peer.address;\n state = peer.state;\n }\n\n return {\n id,\n health,\n state,\n bundle,\n tablets,\n memory,\n uncompressed,\n compressed,\n peers,\n peer,\n peerAddress,\n };\n });\n}\n\nexport function aggregateTotal(data) {\n const initialTotal = {\n bundle: 'total',\n tablets: 0,\n nodes: [],\n memory: 0,\n uncompressed: 0,\n compressed: 0,\n tabletCells: 0,\n isTotal: true,\n };\n\n const total = hammer.aggregation.prepare(data, [\n {name: 'tablets', type: 'sum'},\n {name: 'nodes', type: 'concat-array'},\n {name: 'memory', type: 'sum'},\n {name: 'uncompressed', type: 'sum'},\n {name: 'compressed', type: 'sum'},\n {name: 'tabletCells', type: 'sum'},\n ]);\n\n return data.length ? total[0] : initialTotal;\n}\n\nfunction collectBundlesAttrs(dst, attrs) {\n const resource_limits = ypath.getValue(attrs, '/resource_limits');\n const resource_usage = ypath.getValue(attrs, '/resource_usage');\n\n const tc_usage = ypath.getValue(resource_usage, '/tablet_count');\n const tc_limit = ypath.getValue(resource_limits, '/tablet_count');\n\n const tsm_usage = ypath.getValue(resource_usage, '/tablet_static_memory');\n const tsm_limit = ypath.getValue(resource_limits, '/tablet_static_memory');\n\n return {\n ...dst,\n bundle_controller_target_config: ypath.getValue(attrs, '/bundle_controller_target_config'),\n enable_bundle_controller: ypath.getValue(attrs, '/enable_bundle_controller') || false,\n enable_bundle_balancer: ypath.getValue(attrs, '/enable_bundle_balancer'),\n changelog_account: ypath.getValue(attrs, '/options/changelog_account'),\n snapshot_account: ypath.getValue(attrs, '/options/snapshot_account'),\n node_tag_filter: ypath.getValue(attrs, '/node_tag_filter'),\n health: ypath.getValue(attrs, '/health'),\n zone: ypath.getValue(attrs, '/zone'),\n resource_limits,\n resource_usage,\n\n tablet_count: tc_usage,\n tablet_count_limit: tc_limit,\n tablet_count_free: tc_limit - tc_usage,\n tablet_count_percentage: nanToUndefined((100 * tc_usage) / tc_limit),\n\n tablet_static_memory: tsm_usage,\n tablet_static_memory_limit: tsm_limit,\n tablet_static_memory_free: tsm_limit - tsm_usage,\n tablet_static_memory_percentage: nanToUndefined((100 * tsm_usage) / tsm_limit),\n };\n}\n\nexport function prepareBundles(tabletCells, bundles) {\n let aggregation = hammer.aggregation.prepare(\n tabletCells,\n [\n {name: 'tablets', type: 'sum'},\n {name: 'memory', type: 'sum'},\n {name: 'uncompressed', type: 'sum'},\n {name: 'compressed', type: 'sum'},\n {name: 'tabletCells', type: 'count'},\n ],\n 'bundle',\n );\n\n aggregation.splice(0, 1);\n\n aggregation = reduce_(\n aggregation,\n (res, bundle) => {\n const $attributes = bundles[bundle.bundle].$attributes;\n const bundleNodes = ypath.getValue($attributes, '/nodes');\n res[bundle.bundle] = {\n $attributes,\n ...collectBundlesAttrs({}, $attributes),\n ...bundle,\n nodes: bundleNodes,\n };\n return res;\n },\n {},\n );\n\n const bundleList = reduce_(\n bundles,\n (res, value, key) => {\n if (aggregation[key]) {\n res.push(aggregation[key]);\n } else {\n res.push({\n $attributes: value.$attributes,\n ...collectBundlesAttrs({}, value.$attributes),\n bundle: key,\n nodes: value.$attributes.nodes,\n tabletCells: 0,\n });\n }\n return res;\n },\n [],\n );\n\n const nodeTags = reduce_(\n bundleList,\n (res, bundle) => {\n const tag = bundle?.node_tag_filter;\n if (tag) {\n res[tag] = res[tag] ? res[tag] + 1 : 1;\n }\n return res;\n },\n {},\n );\n\n return bundleList.map((bundle) => ({\n ...bundle,\n unique_node_tag: bundle?.node_tag_filter ? nodeTags[bundle.node_tag_filter] === 1 : true,\n }));\n}\n\nexport function tabletCellNavigationLink(cluster, cellId) {\n return `/${cluster}/navigation?path=//sys/tablet_cells/${cellId}`;\n}\n\nexport function tabletActiveBundleLink(cluster, bundle, enable_bundle_controller) {\n const tabletTab = enable_bundle_controller ? TabletsTab.INSTANCES : TabletsTab.TABLET_CELLS;\n return `/${cluster}/${Page.TABLET_CELL_BUNDLES}/${tabletTab}?activeBundle=${bundle}`;\n}\n\nexport function tabletActiveChaosBundleLink(cluster, bundle) {\n return `/${cluster}/${Page.CHAOS_CELL_BUNDLES}/${TabletsTab.CHAOS_CELLS}?activeBundle=${bundle}`;\n}\n\nexport function tabletCellBundleRootLink(cluster) {\n return `/${cluster}/${Page.TABLET_CELL_BUNDLES}`;\n}\n\nexport function tabletChaosBundleRootLink(cluster) {\n return `/${cluster}/${Page.CHAOS_CELL_BUNDLES}`;\n}\n\nexport function tabletCellBundlesLink(cluster) {\n return `/${cluster}/${Page.TABLET_CELL_BUNDLES}`;\n}\n\nexport function tabletAttributesPath(id) {\n return `//sys/tablet_cells/${id}`;\n}\n\nexport function chaosCellNavigationLink(cluster, cellId) {\n return `/${cluster}/navigation?path=//sys/chaos_cells/${cellId}`;\n}\n\nexport function chaosActiveBundleLink(cluster, bundle) {\n return `/${cluster}/${Page.CHAOS_CELL_BUNDLES}/${TabletsTab.CHAOS_CELLS}?activeBundle=${bundle}`;\n}\n\nexport function chaosCellBundlesLink(cluster) {\n return `/${cluster}/${Page.CHAOS_CELL_BUNDLES}`;\n}\n\nexport function chaosAttributesPath(id) {\n return `//sys/chaos_cells/${id}`;\n}\n","import filter_ from 'lodash/filter';\nimport find_ from 'lodash/find';\nimport map_ from 'lodash/map';\nimport uniq_ from 'lodash/uniq';\n\nimport {RootState} from '../../../store/reducers';\nimport {\n aggregateTotal,\n tabletActiveBundleLink,\n tabletCellBundleRootLink,\n} from '../../../utils/components/tablet-cells';\nimport {\n AllocatedInstancesMap,\n InProgressInstancesMap,\n TabletBundle,\n TabletCell,\n} from '../../../store/reducers/tablet_cell_bundles';\nimport {createSelector} from 'reselect';\nimport {concatByAnd} from '../../../common/hammer/predicate';\nimport {prepareHost} from '../../../utils';\nimport {getCluster} from '../global';\nimport {sortArrayBySortState} from '../../../utils/sort-helpers';\nimport {sortTableBundles} from '../../../utils/tablet_cell_bundles';\nimport {makeComponentsNodesUrl, makeProxyUrl} from '../../../utils/app-url';\nimport {\n getTabletCellBundleControllerInstanceDetailsMap,\n getTabletCellBundleEditorState,\n} from './tablet-cell-bundle-editor';\nimport {BundleControllerInstanceDetails} from '../../../store/reducers/tablet_cell_bundles/tablet-cell-bundle-editor';\nimport UIFactory from '../../../UIFactory';\n\nexport const getTabletsIsLoaded = (state: RootState) => state.tablet_cell_bundles.loaded;\nexport const getTabletsIsLoading = (state: RootState) => state.tablet_cell_bundles.loading;\nexport const getTabletsError = (state: RootState) => state.tablet_cell_bundles.error;\n\nexport const getTabletsBundlesSortState = (state: RootState) =>\n state.tablet_cell_bundles.bundlesSort;\n\nexport const getTabletsBundlesNameFilter = (state: RootState) =>\n state.tablet_cell_bundles.bundlesNameFilter;\nexport const getTabletsBundlesAccountFilter = (state: RootState) =>\n state.tablet_cell_bundles.bundlesAccountFilter;\nexport const getTabletsBundlesTagNodeFilter = (state: RootState) =>\n state.tablet_cell_bundles.bundlesTagNodeFilter;\n\nexport const getTabletsBundles = (state: RootState) => state.tablet_cell_bundles.bundles;\n\nexport const getTabletsActiveBundle = (state: RootState) => state.tablet_cell_bundles.activeBundle;\n\nexport const getBundleDefaultConfig = (state: RootState) =>\n state.tablet_cell_bundles.bundleDefaultConfig;\n\nexport const getTabletBundlesTableMode = (state: RootState) =>\n state.tablet_cell_bundles.bundlesTableMode;\n\nexport const getTabletBundlesWriteableByName = (state: RootState) =>\n state.tablet_cell_bundles.writableByName;\n\nexport const getTabletsActiveBundleData = createSelector(\n [getTabletsBundles, getTabletsActiveBundle],\n (bundles, activeBundle) => {\n return find_(bundles, (item) => item.bundle === activeBundle);\n },\n);\n\nexport const getTabletsDefaultMemoryConfiguration = createSelector(\n [getBundleDefaultConfig, getTabletCellBundleEditorState],\n (config, editorState) => {\n if (!config) return 0;\n const nodeSizes = config.zone_default.tablet_node_sizes;\n\n const key =\n editorState.bundleData?.bundle_controller_target_config?.tablet_node_resource_guarantee\n .type;\n\n if (!key || !(key in nodeSizes)) return 0;\n return nodeSizes[key as string].default_config.memory_limits?.reserved || 0;\n },\n);\n\nfunction prepareBundleInstances(\n allocated: AllocatedInstancesMap,\n inProgresss: InProgressInstancesMap,\n instanceDetailsMap: Record<string, BundleControllerInstanceDetails>,\n makeUrl: (address: string) => string,\n) {\n return [\n ...map_(allocated, (data, address) => {\n const details = instanceDetailsMap?.[address] || {};\n\n const {pod_id, yp_cluster} = data || {};\n const deployUrl = UIFactory.getNodeDeployUrl(yp_cluster, pod_id);\n\n const {nanny_service, tablet_static_memory} = details;\n const nannyUrl = UIFactory.getNodeNannyUrl({nanny_service, pod_id, yp_cluster});\n\n return {\n address,\n data,\n url: makeUrl(address),\n allocationState: data.removing ? ('removing' as const) : undefined,\n tablet_static_memory,\n deployUrl,\n nannyUrl,\n };\n }),\n ...map_(inProgresss, (item) => {\n return {\n data: item.instance_info,\n allocationState: item.hulk_request_state,\n hulkRequestPath: item.hulk_request_link,\n };\n }),\n ];\n}\n\nexport const getActiveBundleControllerData = createSelector(\n [getTabletsActiveBundle, getTabletCellBundleEditorState],\n (activeBundle, {bundleData, bundleControllerData}) => {\n if (activeBundle !== bundleData?.bundle) {\n return undefined;\n }\n\n return bundleControllerData;\n },\n);\n\nexport const getActiveBundleInstances = createSelector(\n [getActiveBundleControllerData, getCluster, getTabletCellBundleControllerInstanceDetailsMap],\n (bundleControllerData, cluster, instanceDetailsMap) => {\n if (!bundleControllerData) {\n return [];\n }\n\n const {allocated_tablet_nodes, allocating_tablet_nodes} = bundleControllerData;\n return prepareBundleInstances(\n allocated_tablet_nodes,\n allocating_tablet_nodes,\n instanceDetailsMap,\n (address) => makeComponentsNodesUrl({host: address, cluster}),\n );\n },\n);\n\nexport const getActiveBundleProxies = createSelector(\n [getActiveBundleControllerData, getCluster, getTabletCellBundleControllerInstanceDetailsMap],\n (bundleControllerData, cluster, instanceDetailsMap) => {\n if (!bundleControllerData) {\n return [];\n }\n\n const {allocated_rpc_proxies, allocating_rpc_proxies} = bundleControllerData;\n return prepareBundleInstances(\n allocated_rpc_proxies,\n allocating_rpc_proxies,\n instanceDetailsMap,\n (address) => makeProxyUrl(cluster, address),\n );\n },\n);\n\nexport const getBundleEditorData = createSelector(\n [getTabletCellBundleEditorState, getBundleDefaultConfig],\n (editorState, defaultConfig) => {\n const {bundleData, data} = editorState;\n const {zone} = bundleData || {};\n return {\n data,\n bundleData,\n defaultConfig: defaultConfig?.[zone || ''],\n };\n },\n);\n\nexport const getTabletsBundlesTotal = createSelector(\n [getTabletsBundles],\n (bundles): TabletBundle => aggregateTotal(bundles),\n);\n\nconst COLUMNS_SORTABLE_AS_IS = new Set<keyof TabletBundle>([\n 'bundle',\n 'health',\n 'tabletCells',\n 'tablets',\n 'uncompressed',\n 'compressed',\n 'enable_bundle_balancer',\n 'enable_bundle_controller',\n 'node_tag_filter',\n 'memory',\n 'tablet_count',\n 'tablet_count_limit',\n 'tablet_count_free',\n 'tablet_count_percentage',\n 'tablet_static_memory',\n 'tablet_static_memory_limit',\n 'tablet_static_memory_free',\n 'tablet_static_memory_percentage',\n]);\n\nexport const getTabletsBundlesFiltered = createSelector(\n [\n getTabletsBundles,\n getTabletsBundlesNameFilter,\n getTabletsBundlesAccountFilter,\n getTabletsBundlesTagNodeFilter,\n ],\n (bundles, nameFilter, accountFilter, tagNodeFilter) => {\n const predicates: Array<(item: TabletBundle) => boolean> = [];\n if (nameFilter) {\n const lowerNameFilter = nameFilter.toLowerCase();\n predicates.push((item) => {\n return -1 !== item.bundle.toLowerCase().indexOf(lowerNameFilter);\n });\n }\n\n if (accountFilter) {\n const lowerAccountFilter = accountFilter.toLowerCase();\n predicates.push((item) => {\n const {changelog_account, snapshot_account} = item;\n return (\n (Boolean(changelog_account) &&\n -1 !== changelog_account.toLowerCase().indexOf(lowerAccountFilter)) ||\n (Boolean(snapshot_account) &&\n -1 !== snapshot_account.toLowerCase().indexOf(lowerAccountFilter))\n );\n });\n }\n\n if (tagNodeFilter) {\n const lowerTagNodeFilter = tagNodeFilter.toLowerCase();\n predicates.push((item) => {\n const {node_tag_filter} = item;\n return (\n Boolean(node_tag_filter) &&\n -1 !== node_tag_filter.toLowerCase().indexOf(lowerTagNodeFilter)\n );\n });\n }\n\n return !predicates.length ? bundles : filter_(bundles, concatByAnd(...predicates));\n },\n);\n\nexport const getTabletsBundlesSorted = createSelector(\n [getTabletsBundlesFiltered, getTabletsBundlesSortState],\n (bundles, sortState) => {\n const {column, order} = sortState || {};\n if (!column || !order) {\n return bundles;\n }\n\n return sortTableBundles({bundles, column, order, columnsSortable: COLUMNS_SORTABLE_AS_IS});\n },\n);\n\nexport const getTabletsCells = (state: RootState) => state.tablet_cell_bundles.cells;\nexport const getTabletsCellsSortState = (state: RootState) => state.tablet_cell_bundles.cellsSort;\n\nexport const getTabletsCellsIdFilter = (state: RootState) =>\n state.tablet_cell_bundles.cellsIdFilter;\nexport const getTabletsCellsBundleFilter = (state: RootState) =>\n state.tablet_cell_bundles.cellsBundleFilter;\nexport const getTabletsCellsHostFilter = (state: RootState) =>\n state.tablet_cell_bundles.cellsHostFilter;\n\nexport const getTabletCellsOfActiveAccount = createSelector(\n [getTabletsCells, getTabletsActiveBundle],\n (cells, activeBundle) => {\n if (!activeBundle) {\n return cells;\n }\n\n return filter_(cells, (item) => {\n return Boolean(item.bundle) && activeBundle === item.bundle;\n });\n },\n);\n\nexport const getTabletsCellsFiltered = createSelector(\n [\n getTabletCellsOfActiveAccount,\n getTabletsCellsIdFilter,\n getTabletsCellsBundleFilter,\n getTabletsCellsHostFilter,\n getTabletsActiveBundle,\n ],\n (cells, idFilter, bundleFilter, hostFilter) => {\n const predicates: Array<(item: TabletCell) => boolean> = [];\n if (idFilter) {\n predicates.push((item) => {\n return -1 !== item.id.indexOf(idFilter);\n });\n }\n\n if (bundleFilter) {\n predicates.push((item) => {\n return Boolean(item.bundle) && -1 !== item.bundle.indexOf(bundleFilter);\n });\n }\n\n if (hostFilter) {\n predicates.push((item) => {\n return Boolean(item.peerAddress) && -1 !== item.peerAddress.indexOf(hostFilter);\n });\n }\n return !predicates.length ? cells : filter_(cells, concatByAnd(...predicates));\n },\n);\n\nexport function filterTabletCellsByBundle(bundle: string, cells: Array<TabletCell>) {\n if (!bundle) {\n return [];\n }\n\n return filter_(cells, (item) => item.bundle === bundle);\n}\n\nexport const getTabletsCellsSorted = createSelector(\n [getTabletsCellsFiltered, getTabletsCellsSortState],\n (cells, sortState) => {\n return sortArrayBySortState(cells, sortState);\n },\n);\n\nexport const getTabletsCellsBundles = createSelector([getTabletsCells], (cells) => {\n return uniq_(map_(cells, 'bundle')).sort();\n});\n\nexport const getTabletsCellsHosts = createSelector([getTabletCellsOfActiveAccount], (cells) => {\n return uniq_(map_(cells, 'peerAddress')).sort();\n});\n\nexport const getTabletsCellsHostsOfActiveBundle = createSelector(\n [getTabletsActiveBundle, getTabletsCellsFiltered],\n (activeBundle: string, cells: Array<TabletCell>) => {\n if (!activeBundle) {\n return '';\n }\n return prepareHostsFromCells(cells);\n },\n);\n\nexport function prepareHostsFromCells(cells: Array<TabletCell>) {\n return uniq_(map_(cells, ({peerAddress}) => prepareHost(peerAddress)).filter(Boolean))\n .sort()\n .join('|');\n}\n\nexport interface TabletsCellBundlesBreadcrumbsItem {\n text: string;\n href: string;\n title?: string;\n}\n\nexport const getTabletsBreadcrumbItems = createSelector(\n [getCluster, getTabletsActiveBundleData],\n (cluster, activeBundleData): Array<TabletsCellBundlesBreadcrumbsItem> => {\n const res: Array<TabletsCellBundlesBreadcrumbsItem> = [\n {\n text: '',\n href: tabletCellBundleRootLink(cluster),\n title: '<bundles>',\n },\n ];\n\n const {bundle, enable_bundle_controller} = activeBundleData || {};\n\n if (bundle) {\n res.push({\n text: bundle,\n href: tabletActiveBundleLink(cluster, bundle, enable_bundle_controller),\n });\n }\n\n return res;\n },\n);\n","import UIFactory from '../../UIFactory';\nimport {Page} from '../../constants';\nimport {TabletsTab} from '../../constants/tablets';\nimport {OrderType, multiSortWithUndefined, orderTypeToOrderK} from '../sort-helpers';\n\nexport function tabletCellBundleDashboardUrl(cluster: string, bundle: string) {\n return UIFactory.makeUrlForTabletCellBundleDashboard(cluster, bundle);\n}\n\nexport function genTabletCellBundlesCellUrl(cellId: string, cluster?: string) {\n const prefix = cluster ? `/${cluster}/` : '';\n return `${prefix}${Page.TABLET_CELL_BUNDLES}/${TabletsTab.TABLET_CELLS}?id=${cellId}`;\n}\n\nfunction compareBundlesByAccount<T extends Record<string, any>>(left: T, right: T) {\n if (\n left.changelog_account === right.changelog_account &&\n left.snapshot_account === right.snapshot_account\n ) {\n return 0;\n }\n\n return left.changelog_account < right.changelog_account\n ? -1\n : left.snapshot_account < right.snapshot_account\n ? -1\n : 1;\n}\n\nexport const sortTableBundles = <T extends Record<string, any>>({\n bundles,\n column,\n columnsSortable,\n order,\n}: {\n bundles: T[];\n column: keyof T;\n columnsSortable: Set<string>;\n order: OrderType;\n}) => {\n let sorted: T[] = [];\n\n const {orderK, undefinedOrderK} = orderTypeToOrderK(order);\n\n if (column === 'changelog_account') {\n sorted = [...bundles].sort(compareBundlesByAccount);\n } else if (column === 'nodes') {\n sorted = [...bundles].sort(({nodes: l = []}, {nodes: r = []}) => l.length - r.length);\n } else if (columnsSortable.has(column as string)) {\n return multiSortWithUndefined(bundles, [{key: column, orderK, undefinedOrderK}]);\n }\n\n return (order as string).includes('asc') ? sorted : sorted.reverse();\n};\n","import React from 'react';\nimport unipika from '../../common/thor/unipika';\nimport block from 'bem-cn-lite';\n\nimport Link from '../../components/Link/Link';\n\nimport hammer from '../../common/hammer';\nimport {showErrorPopup} from '../../utils/utils';\n\nimport './utils.scss';\n\nfunction wrapRenderMethods(templates) {\n return Object.keys(templates).reduce((newTemplates, key) => {\n newTemplates[key] = templates[key];\n\n return newTemplates;\n }, {});\n}\n\n/**\n * Template must be a scoped function, because they are bound to elements-table component instance\n * @param {ViewModel} item\n * @param {String} columnName\n */\nfunction defaultTemplate(item, columnName) {\n return String(hammer.format['ValueOrDefault'](item[columnName]));\n}\n\nfunction prepareTextProps(text, asHTML) {\n const props = {};\n\n if (asHTML) {\n // Need to render html strings\n props.dangerouslySetInnerHTML = {__html: text};\n } else {\n props.children = unipika.decode(String(text));\n }\n\n return props;\n}\n\nexport function renderText(text, settings = {}) {\n let className = block('elements-text');\n\n if (settings.mix) {\n className = className(\n false,\n block(settings.mix.block)(settings.mix.elem, {\n ...settings.mix.mods,\n }),\n );\n } else {\n className = className();\n }\n\n const textProps = prepareTextProps(text, settings.asHTML);\n\n const title = settings.title || text;\n\n return <span {...textProps} title={title} className={className} />;\n}\n\nexport function printColumnAsBytes(item, columnName) {\n const column = this.getColumn(columnName);\n return hammer.format['Bytes'](column.get(item));\n}\n\nexport function printColumnAsNumber(item, columnName) {\n const column = this.getColumn(columnName);\n return hammer.format['Number'](column.get(item));\n}\n\nexport function printColumnAsTimeDurationWithMs(item, columnName) {\n const column = this.getColumn(columnName);\n return hammer.format['TimeDuration'](column.get(item), {\n format: 'milliseconds',\n });\n}\n\nexport function printColumnAsReadableField(item, columnName) {\n const column = this.getColumn(columnName);\n return (\n <span className=\"elements-ellipsis\">\n {hammer.format['ReadableField'](column.get(item))}\n </span>\n );\n}\n\nexport function printColumnAsTime(item, columnName) {\n const value = this?.getColumn ? this.getColumn(columnName).get(item) : item[columnName];\n return <ColumnAsTime value={value} />;\n}\n\nexport function ColumnAsTime({value}) {\n return (\n <span className=\"elements-ellipsis\">\n {hammer.format['DateTime'](value, {format: 'full'})}\n </span>\n );\n}\n\nexport function printColumnAsError(error) {\n const showError = () => {\n showErrorPopup(error, {hideOopsMsg: true});\n };\n return typeof error === 'object' ? (\n <Link theme=\"ghost\" onClick={showError}>\n View\n </Link>\n ) : (\n hammer.format.NO_VALUE\n );\n}\n\n// Using prepared table data\nexport function asBytes(item, columnName) {\n return hammer.format['Bytes'](item[columnName]);\n}\n\nexport function asNumber(item, columnName) {\n return hammer.format['Number'](item[columnName]);\n}\n\nexport default {\n __default__: defaultTemplate,\n _templates: {},\n add: function (templateId, templates) {\n this._templates[templateId] = wrapRenderMethods(templates);\n },\n get: function (templateId) {\n return this._templates[templateId] || {};\n },\n};\n","import filter_ from 'lodash/filter';\nimport forEach_ from 'lodash/forEach';\nimport get_ from 'lodash/get';\nimport isEmpty_ from 'lodash/isEmpty';\nimport map_ from 'lodash/map';\nimport set_ from 'lodash/set';\n\nimport {createSelector} from 'reselect';\nimport {ACCOUNTS_TABLE_ID, ROOT_ACCOUNT_NAME} from '../../../constants/accounts/accounts';\nimport {getTables} from '../../../store/selectors/tables';\nimport hammer from '../../../common/hammer';\nimport ypath from '../../../common/thor/ypath';\nimport {\n getAccountMasterMemoryMedia,\n getAccountNames,\n getAccountsColumnFields,\n getAccountsMapByName,\n getAccountsTree,\n} from './accounts-ts';\nimport {concatByAnd} from '../../../common/hammer/predicate';\nimport {accountMemoryMediumToFieldName} from '../../../utils/accounts/accounts-selector';\nimport {visitTreeItems} from '../../../utils/utils';\n\nexport const getActiveAccount = (state) => state.accounts.accounts.activeAccount;\nexport const getActiveMediumFilter = (state) => state.accounts.accounts.activeMediumFilter;\nexport const getUsableAccounts = (state) => state.accounts.accounts.usableAccounts;\nexport const getAccountsNameFilter = (state) => state.accounts.accounts.activeNameFilter;\nexport const getAccountsAbcServiceIdSlugFilter = (state) =>\n state.accounts.accounts.abcServiceFilter;\nexport const getAccountsSortInfo = (state) => getTables(state)[ACCOUNTS_TABLE_ID];\n\nexport const getEditableAccount = (state) => state.accounts.accounts.editableAccount;\n\nconst getEditableAccountSubtreeNames = createSelector(\n [getAccountsTree, getEditableAccount],\n prepareSubtreeNames,\n);\n\nexport const getEditableAccountParentSuggests = createSelector(\n [getAccountNames, getEditableAccountSubtreeNames],\n (allNames, excludeNames) => {\n const excludeNamesSet = new Set(excludeNames);\n return filter_(allNames, (name) => !excludeNamesSet.has(name));\n },\n);\n\nconst getFlattenTree = createSelector(\n [getAccountsTree, getActiveAccount, getAccountsNameFilter, getAccountsAbcServiceIdSlugFilter],\n prepareAccountsFlattenTreeImpl,\n);\n\nexport const getActiveAccountSubtree = createSelector(\n getActiveAccount,\n getFlattenTree,\n getActiveAccountSubtreeImpl,\n);\n\nexport const getActiveAccountAggregationRow = createSelector(\n [getActiveAccountSubtree, getAccountMasterMemoryMedia],\n ({activeTreeItem}, masterMemoryMedia) => calcAggregationRow(activeTreeItem, masterMemoryMedia),\n);\n\nexport const getActiveAccountSubtreeNames = createSelector(\n getActiveAccountSubtree,\n getActiveAccountSubtreeNamesImpl,\n);\n\nexport const prepareAccountsFlattenTree = createSelector(\n [getAccountsSortInfo, getFlattenTree, getAccountsColumnFields],\n sortFlattenTree,\n);\n\nexport function getAccountName(treeItem) {\n const {attributes: account} = treeItem || {};\n return account && account.name;\n}\n\nfunction prepareSubtreeNames(tree, account) {\n if (isEmpty_(tree) || isEmpty_(account)) {\n return [];\n }\n\n const res = [];\n hammer.treeList.treeForEach(tree[account.name], (node) => {\n res.push(getAccountName(node));\n });\n return res;\n}\n\nfunction prepareAccountsFlattenTreeImpl(treeList, activeAccount, nameFilter = '', {slug} = {}) {\n let root = treeList['<Root>'];\n if (root === undefined) {\n return [];\n }\n\n if (activeAccount && treeList[activeAccount]) {\n root = {...root, children: [treeList[activeAccount]]};\n }\n\n let filteredRoot = root;\n\n const isRoot = (treeNode) => {\n const {attributes: account} = treeNode;\n return treeNode === root || account.name === activeAccount;\n };\n\n const predicates = [];\n if (nameFilter) {\n predicates.push((treeNode) => {\n const {attributes: account} = treeNode;\n const {name} = account;\n\n return isRoot(treeNode) || -1 !== name.indexOf(nameFilter);\n });\n }\n\n if (slug) {\n predicates.push((treeNode) => {\n return isRoot(treeNode) || slug === ypath.getValue(treeNode.attributes, '/@abc/slug');\n });\n }\n\n if (predicates.length) {\n filteredRoot = hammer.treeList.filterTree(root, concatByAnd(...predicates));\n }\n\n return filteredRoot;\n}\n\nfunction sortFlattenTree(sortInfo, flattenTree = [], columnFields) {\n if (sortInfo) {\n hammer.treeList.sortTree(flattenTree, sortInfo, columnFields);\n }\n\n const sortedTree = hammer.treeList.flattenTree(flattenTree);\n return sortedTree;\n}\n\nfunction findByName(treeNode, name) {\n if (name === getAccountName(treeNode)) {\n return treeNode;\n }\n\n for (const childNode of treeNode.children || []) {\n const res = findByName(childNode, name);\n if (res) {\n return res;\n }\n }\n\n return undefined;\n}\n\nfunction getActiveAccountSubtreeImpl(activeAccount, treeRoot) {\n if (!activeAccount) {\n return {treeRoot};\n }\n\n const activeTreeItem = findByName(treeRoot, activeAccount);\n return {treeRoot, activeTreeItem};\n}\n\nconst AGGREGATION_FIELDS = [\n 'totalNodeCount',\n 'nodeCountLimit',\n 'totalChunkCount',\n 'chunkCountLimit',\n 'totalTabletCount',\n 'tabletCountLimit',\n 'totalTabletStaticMemory',\n 'tabletStaticMemoryLimit',\n 'totalMasterMemory',\n 'masterMemoryLimit',\n 'master_memory_detailed.nodes',\n 'master_memory_detailed.chunks',\n 'master_memory_detailed.attributes',\n 'master_memory_detailed.tablets',\n 'master_memory_detailed.schemas',\n];\n\nconst AGGREGATION_PER_MEDIUM_FIELDS = ['totalDiskSpace', 'diskSpaceLimit'];\nconst AGGREGATION_MASTER_MEMORY_FIELDS = ['total', 'limit'];\n\nfunction addIfDefined(dst, src, key) {\n const srcValue = get_(src, key);\n const dstValue = get_(dst, key);\n if (srcValue === null || srcValue === undefined) {\n return dstValue;\n }\n\n return (dstValue || 0) + srcValue;\n}\n\nfunction calcAggregationRow(treeItem, masterMemoryMedia) {\n const {children} = treeItem || {};\n if (!children || !children.length) {\n return null;\n }\n\n const aggAccount = {\n name: 'Aggregation',\n perMedium: {},\n };\n\n forEach_(children, (treeItem) => {\n const {attributes: account} = treeItem;\n forEach_(AGGREGATION_FIELDS, (key) => {\n set_(aggAccount, key, addIfDefined(aggAccount, account, key));\n });\n\n forEach_(account.perMedium, (data, mediumType) => {\n forEach_(AGGREGATION_PER_MEDIUM_FIELDS, (key) => {\n let aggMediumData = aggAccount.perMedium[mediumType];\n if (!aggMediumData) {\n aggMediumData = aggAccount.perMedium[mediumType] = {};\n }\n aggMediumData[key] = addIfDefined(aggMediumData, data, key);\n });\n });\n\n forEach_(masterMemoryMedia, (medium) => {\n forEach_(AGGREGATION_MASTER_MEMORY_FIELDS, (field) => {\n const srcField = accountMemoryMediumToFieldName('master_memory/' + medium);\n const key = `${srcField}.${field}`;\n set_(aggAccount, key, addIfDefined(aggAccount, account, key));\n });\n });\n });\n\n const aggTreeItem = {\n isAggregation: true,\n children: [],\n attributes: aggAccount,\n parent: treeItem.name,\n name: treeItem.name + '/Aggregation',\n };\n\n return aggTreeItem;\n}\n\nfunction getActiveAccountSubtreeNamesImpl({activeTreeItem}) {\n const res = [];\n visitTreeItems(activeTreeItem, (item) => {\n res.push(getAccountName(item));\n });\n return res;\n}\n\nexport const getActiveAccountBreadcrumbs = createSelector(\n getActiveAccount,\n getAccountsMapByName,\n (activeAccount, nameToAccountMap) => {\n const parentNode = (name) => {\n const account = nameToAccountMap[name] || {attributes: {}};\n return account && account.parent;\n };\n\n const loaded = nameToAccountMap[activeAccount] !== undefined;\n const namesArr = [];\n if (loaded) {\n let name = activeAccount;\n while (name && name !== ROOT_ACCOUNT_NAME) {\n namesArr.push(name);\n name = parentNode(name);\n }\n }\n const items = [\n {text: '<Accounts>', url: '', title: ''},\n ...map_(namesArr.reverse(), (name) => {\n return {\n value: name,\n text: name,\n url: `?account=${name}`,\n title: name,\n };\n }),\n ];\n return items;\n },\n);\n"],"names":["getTables","state","tables","initialState","isTopLevelAccount","account","parent","ypath","getValue","ROOT_ACCOUNT_NAME","getAccountsIsFinalLoadingStatus","createSelector","accounts","fetching","wasLoaded","error","loading","loaded","status","calculateLoadingStatus","isFinalLoadingStatus","getActiveAccount","activeAccount","getAccountsContentMode","activeContentModeFilter","getAccountsMasterMemoryContentMode","masterMemoryContentMode","getEditableAccount","editableAccount","getAccountsDisabledCacheForNextFetch","disableCacheForNextFetch","getAccountsEditCounter","editCounter","getAccounts","getAccountNames","items","map_","i","$value","sort","getAccountsMapByName","nameToAccountMap","forEach_","item","name","getAccountsTree","hammer","treeList","prepareTree","undefined","makeStaticConfigurationItem","format","_ref","level","total","limit","used","free","getActiveAccountStaticConfiguration","getMediumListNoCache","mediums","arguments","length","_step","mediumsInfo","_iterator","_createForOfIteratorHelper","s","n","done","value","push","apply","_toConsumableArray","capitalize_","attributes","getDiskSpaceProgressInfo","err","e","f","splice","concat","getNodeCountProgressInfo","getChunkCountProgressInfo","getResourceInfo","entry","type","mediumType","isAggregation","aggr","_aggr$perMedium$mediu","_aggr$perMedium$mediu2","AccountResourceName","DISK_SPACE_PER_MEDIUM","progress","perMedium","totalDiskSpace","diskSpaceLimit","NODE_COUNT","totalNodeCount","nodeCountLimit","CHUNK_COUNT","totalChunkCount","chunkCountLimit","TABLET_STATIC_MEMORY","totalTabletStaticMemory","tabletStaticMemoryLimit","TABLET_COUNT","totalTabletCount","tabletCountLimit","MASTER_MEMORY","_ref2","get_","accountMemoryMediumToFieldName","getAggregatedByType","getInfo","ACCOUNT_RESOURCE_TYPES_DESCRIPTION","recursive","getAccountMasterMemoryMedia","_slicedToArray","perCell","keys_","key","getAccountsMasterMemoryColumns","medium","master_memory_percentage","get","master_memory_usage","master_memory_limit","master_memory_free","_ref3","master_memory_detailed_nodes","data","master_memory_detailed","nodes","master_memory_detailed_chunks","chunks","master_memory_detailed_attributes","master_memory_detailed_tablets","tablets","master_memory_detailed_schemas","schemas","getAccountsColumnFields","activeMediumFilter","accountsColumns","_objectSpread","alerts","alertsCount","disk_space_default","disk_space_percentage","disk_space_usage","disk_space_limit","disk_space_free","_ref4","node_count_default","node_count_percentage","node_count_usage","node_count_limit","node_count_free","_ref5","chunk_count_default","chunk_count_percentage","chunk_count_usage","chunk_count_limit","chunk_count_free","_ref6","tablet_count_percentage","tablet_count_usage","tablet_count_limit","tablet_count_free","_ref7","tablet_static_memory_percentage","tablet_static_memory_usage","tablet_static_memory_limit","tablet_static_memory_free","_ref8","getEditableAccountQuotaSources","tree","collectSubtreeItems","collected","Set","has","add","res","_ref0","children","isTopLevel","parentItems","childItems","isEditableAccountOfTopLevel","mapByName","LAST_VISITED_BUFFER_SIZE","accountsTrackVisit","dispatch","getState","parentNS","getAccountsNS","trackLastVisited","navigationTrackVisit","path","getClusterNS","bundlesTrackVisit","bundle","activeBundle","getTabletsActiveBundle","getBundlesNS","settingName","SettingName","LOCAL","LAST_VISITED","reloadSetting","then","current","makeGetSetting","currentPathItem","count","setSetting","reduce","updated","slice","accountsToggleFavourite","getMetrics","countEvent","toggleFavourite","chytToggleFavourite","clique","chytNS","getChytNS","navigationToggleFavourite","bundlesToggleFavourite","FAVOURITES","find_","indexOf","getTabletCellBundleEditorState","tabletCellBundleEditor","getTabletCellBundleControllerInstanceDetailsMap","instanceDetailsMap","getMediumList","global","mediumList","utils","sortInPredefinedOrder","MediumType","DEFAULT","filter_","getCurrentCluster","cluster","replace_","parseAccountData","dst","recursiveResources","masterMemoryResources","$attributes","abc","responsibleUsers","Array","isArray","responsibles","responsibleUsersSet","parent_name","hasRecursiveResources","Boolean","updateResource","lastMedium","recursiveTotalPerMedium","recursiveCommittedPerMedium","totalPerMedium","committedPerMedium","limitPerMedium","mediumData","mediumName","updateResourceFields","committed","console","log","updateResourcePerMedium","prepareResource","_value","updateMasterMemory","visitResourceFields","recursive_violated_resource_limits","getAccountAlertsCount","resourceAttributes","prepareResourceInfo","recursiveUsage","recursiveCommitted","nameYPath","Object","assign","_computeProgress","uncommitted","progressText","formatLib","Math","abs","computeProgress","theme","getProgressTheme","text","target","camelCaseName","camelCase_","capitalizedCamelCaseName","container","stopFn","disk_space","disk_space_per_medium","master_memory","visitNumberOrGoDeep","_objectWithoutProperties","_excluded","isNaN","some_","getTransaction","navigation","transaction","getAttributes","getAttributesWithTypes","attributesWithTypes","getLoadState","loadState","getError","getRawPath","getIdmSupport","isIdmSupported","getType","getPath","getNavigationDefaultPath","rawPath","defaultPath","getAttributesPath","navigationPath","isNavigationFinalLoadState","getParsedPath","create","ex","getActualPath","checkIsTrash","startsWith","makeNavigationLink","params","rest","YT","Page","NAVIGATION","search","info","URLSearchParams","keys","acc","k","_info$k$options","options","serialize","_info$k$options2","_info$k$options2$seri","tmp","call","append","makeURLSearchParams","getNavigationParams","toString","makeComponentsNodesUrl","host","COMPONENTS","ComponentsTab","NODES","makeProxyUrl","address","RPC_PROXIES","makeSchedulingUrl","pool","poolTree","SCHEDULING","makeAccountsUrl","ACCOUNTS","prepareTabletCells","tabletCells","tabletCell","peer","peerAddress","uncompressed","compressed","memory","health","peers","id","aggregateTotal","aggregation","prepare","isTotal","collectBundlesAttrs","attrs","resource_limits","resource_usage","tc_usage","tc_limit","tsm_usage","tsm_limit","bundle_controller_target_config","enable_bundle_controller","enable_bundle_balancer","changelog_account","snapshot_account","node_tag_filter","zone","tablet_count","nanToUndefined","tablet_static_memory","prepareBundles","bundles","reduce_","bundleNodes","bundleList","nodeTags","tag","map","unique_node_tag","tabletCellNavigationLink","cellId","tabletActiveBundleLink","tabletTab","TabletsTab","INSTANCES","TABLET_CELLS","TABLET_CELL_BUNDLES","tabletActiveChaosBundleLink","CHAOS_CELL_BUNDLES","CHAOS_CELLS","tabletCellBundleRootLink","tabletChaosBundleRootLink","tabletAttributesPath","chaosCellNavigationLink","chaosActiveBundleLink","chaosAttributesPath","getTabletsIsLoaded","tablet_cell_bundles","getTabletsIsLoading","getTabletsError","getTabletsBundlesSortState","bundlesSort","getTabletsBundlesNameFilter","bundlesNameFilter","getTabletsBundlesAccountFilter","bundlesAccountFilter","getTabletsBundlesTagNodeFilter","bundlesTagNodeFilter","getTabletsBundles","getBundleDefaultConfig","bundleDefaultConfig","getTabletBundlesTableMode","bundlesTableMode","getTabletBundlesWriteableByName","writableByName","getTabletsActiveBundleData","getTabletsDefaultMemoryConfiguration","config","editorState","_editorState$bundleDa","_nodeSizes$default_co","nodeSizes","zone_default","tablet_node_sizes","bundleData","tablet_node_resource_guarantee","default_config","memory_limits","reserved","prepareBundleInstances","allocated","inProgresss","makeUrl","details","pod_id","yp_cluster","deployUrl","UIFactory","getNodeDeployUrl","nanny_service","nannyUrl","getNodeNannyUrl","url","allocationState","removing","instance_info","hulk_request_state","hulkRequestPath","hulk_request_link","getActiveBundleControllerData","bundleControllerData","getActiveBundleInstances","getCluster","allocated_tablet_nodes","allocating_tablet_nodes","getActiveBundleProxies","allocated_rpc_proxies","allocating_rpc_proxies","getBundleEditorData","defaultConfig","getTabletsBundlesTotal","COLUMNS_SORTABLE_AS_IS","getTabletsBundlesFiltered","nameFilter","accountFilter","tagNodeFilter","predicates","lowerNameFilter","toLowerCase","lowerAccountFilter","lowerTagNodeFilter","concatByAnd","getTabletsBundlesSorted","sortState","column","order","sortTableBundles","columnsSortable","getTabletsCells","cells","getTabletsCellsSortState","cellsSort","getTabletsCellsIdFilter","cellsIdFilter","getTabletsCellsBundleFilter","cellsBundleFilter","getTabletsCellsHostFilter","cellsHostFilter","getTabletCellsOfActiveAccount","getTabletsCellsFiltered","idFilter","bundleFilter","hostFilter","filterTabletCellsByBundle","getTabletsCellsSorted","sortArrayBySortState","getTabletsCellsBundles","uniq_","getTabletsCellsHosts","getTabletsCellsHostsOfActiveBundle","prepareHostsFromCells","prepareHost","filter","join","getTabletsBreadcrumbItems","activeBundleData","href","title","tabletCellBundleDashboardUrl","makeUrlForTabletCellBundleDashboard","genTabletCellBundlesCellUrl","prefix","compareBundlesByAccount","left","right","sorted","_orderTypeToOrderK","orderTypeToOrderK","orderK","undefinedOrderK","_ref2$nodes","l","_ref3$nodes","r","multiSortWithUndefined","includes","reverse","renderText","settings","className","block","mix","elem","mods","textProps","asHTML","props","dangerouslySetInnerHTML","__html","unipika","decode","String","prepareTextProps","_jsx","printColumnAsTimeDurationWithMs","columnName","this","getColumn","printColumnAsReadableField","printColumnAsTime","ColumnAsTime","printColumnAsError","_typeof","Link","onClick","showErrorPopup","hideOopsMsg","NO_VALUE","asNumber","__default__","_templates","templateId","templates","newTemplates","wrapRenderMethods","getUsableAccounts","usableAccounts","getAccountsAbcServiceIdSlugFilter","abcServiceFilter","getEditableAccountSubtreeNames","isEmpty_","treeForEach","node","getAccountName","getEditableAccountParentSuggests","allNames","excludeNames","excludeNamesSet","getFlattenTree","activeNameFilter","slug","root","filteredRoot","isRoot","treeNode","filterTree","getActiveAccountSubtree","treeRoot","activeTreeItem","findByName","getActiveAccountAggregationRow","masterMemoryMedia","treeItem","aggAccount","AGGREGATION_FIELDS","set_","addIfDefined","AGGREGATION_PER_MEDIUM_FIELDS","aggMediumData","AGGREGATION_MASTER_MEMORY_FIELDS","field","srcField","calcAggregationRow","getActiveAccountSubtreeNames","visitTreeItems","prepareAccountsFlattenTree","ACCOUNTS_TABLE_ID","sortInfo","flattenTree","columnFields","sortTree","src","srcValue","dstValue","getActiveAccountBreadcrumbs","parentNode","namesArr"],"sourceRoot":""}