From 1cd93bee58ae0139c0acdafde769ba35dcd984f2 Mon Sep 17 00:00:00 2001 From: Naumov Alexey Date: Thu, 1 Apr 2021 18:00:49 +0300 Subject: [PATCH] fix(core-app): CB-898 children limit for all nodes in app --- webapp/packages/core-app/src/CoreSettingsService.ts | 3 ++- .../src/NavigationTree/NavigationTreeService.ts | 9 ++------- .../src/shared/NodesManager/NavTreeResource.ts | 13 ++++++++++--- 3 files changed, 14 insertions(+), 11 deletions(-) diff --git a/webapp/packages/core-app/src/CoreSettingsService.ts b/webapp/packages/core-app/src/CoreSettingsService.ts index a6abacd327..6e3c90a1f0 100644 --- a/webapp/packages/core-app/src/CoreSettingsService.ts +++ b/webapp/packages/core-app/src/CoreSettingsService.ts @@ -14,7 +14,8 @@ const defaultSettings = { 'app.logViewer.maxLogRecords': 1000, 'app.logViewer.logBatchSize': 2000, 'app.logViewer.maxFailedRequests': 3, - 'app.navigationTree.childrenLimit': 500, + // temporary limit for all nodes children in app + 'app.childrenLimit': 500, }; export type CoreSettings = typeof defaultSettings; diff --git a/webapp/packages/core-app/src/NavigationTree/NavigationTreeService.ts b/webapp/packages/core-app/src/NavigationTree/NavigationTreeService.ts index f4eaffc6bb..97722ab392 100644 --- a/webapp/packages/core-app/src/NavigationTree/NavigationTreeService.ts +++ b/webapp/packages/core-app/src/NavigationTree/NavigationTreeService.ts @@ -6,7 +6,7 @@ * you may not use this file except in compliance with the License. */ -import { action, computed, makeObservable } from 'mobx'; +import { action, makeObservable } from 'mobx'; import { ConnectionAuthService } from '@cloudbeaver/core-connections'; import { injectable } from '@cloudbeaver/core-di'; @@ -39,10 +39,6 @@ export class NavigationTreeService { readonly navigationTreeMetadata: MetadataMap; readonly nodeSelectionTask: IExecutor; - get childrenLimit(): number { - return this.coreSettingsService.settings.getValue('app.navigationTree.childrenLimit'); - } - constructor( private navNodeManagerService: NavNodeManagerService, private notificationService: NotificationService, @@ -53,7 +49,6 @@ export class NavigationTreeService { private navNodeInfoResource: NavNodeInfoResource ) { makeObservable(this, { - childrenLimit: computed, unselectAll: action, }); @@ -80,7 +75,7 @@ export class NavigationTreeService { const children = this.navTreeResource.get(id); if (children) { - return children.slice(0, this.childrenLimit); + return children.slice(0, this.navTreeResource.childrenLimit); } return children; diff --git a/webapp/packages/core-app/src/shared/NodesManager/NavTreeResource.ts b/webapp/packages/core-app/src/shared/NodesManager/NavTreeResource.ts index 5681024ec9..ad1115a6bb 100644 --- a/webapp/packages/core-app/src/shared/NodesManager/NavTreeResource.ts +++ b/webapp/packages/core-app/src/shared/NodesManager/NavTreeResource.ts @@ -6,7 +6,7 @@ * you may not use this file except in compliance with the License. */ -import { action, makeObservable } from 'mobx'; +import { action, computed, makeObservable } from 'mobx'; import { injectable } from '@cloudbeaver/core-di'; import { @@ -22,6 +22,7 @@ import { } from '@cloudbeaver/core-sdk'; import { MetadataMap } from '@cloudbeaver/core-utils'; +import { CoreSettingsService } from '../../CoreSettingsService'; import { NavNodeInfoResource } from './NavNodeInfoResource'; // TODO: so much dirty @@ -39,13 +40,19 @@ interface INodeMetadata extends ICachedMapResourceMetadata { export class NavTreeResource extends CachedMapResource { protected metadata: MetadataMap; + get childrenLimit(): number { + return this.coreSettingsService.settings.getValue('app.childrenLimit'); + } + constructor( private graphQLService: GraphQLService, - private navNodeInfoResource: NavNodeInfoResource + private navNodeInfoResource: NavNodeInfoResource, + private coreSettingsService: CoreSettingsService, ) { super(); makeObservable(this, { + childrenLimit: computed, setDetails: action, }); @@ -242,6 +249,6 @@ export class NavTreeResource extends CachedMapResource { withDetails: metadata.withDetails, }); - return { navNodeChildren, navNodeInfo, parentPath }; + return { navNodeChildren: navNodeChildren.slice(0, this.childrenLimit), navNodeInfo, parentPath }; } }