diff --git a/modules/web/src/app/core/components/sidenav/component.ts b/modules/web/src/app/core/components/sidenav/component.ts index 680713ac4f..b389614819 100644 --- a/modules/web/src/app/core/components/sidenav/component.ts +++ b/modules/web/src/app/core/components/sidenav/component.ts @@ -24,7 +24,7 @@ import {Member} from '@shared/entity/member'; import {Project} from '@shared/entity/project'; import {AdminSettings, CustomLink, UserSettings} from '@shared/entity/settings'; import {GroupConfig} from '@shared/model/Config'; -import {sidenavCollapsibleWidth} from '@shared/constants/common'; +import {DEFAULT_DEBOUNCE_TIME_MS, sidenavCollapsibleWidth} from '@shared/constants/common'; import {MemberUtils, Permission} from '@shared/utils/member'; import {BehaviorSubject, merge, Subject} from 'rxjs'; import {debounceTime, switchMap, take, takeUntil} from 'rxjs/operators'; @@ -50,7 +50,7 @@ export class SidenavComponent implements OnInit, OnDestroy { adminSettings: AdminSettings; isUserSshKeyEnabled = false; - private readonly _debounceTime = 500; + private readonly _debounceTime = DEFAULT_DEBOUNCE_TIME_MS; private _selectedProject = {} as Project; private _currentGroupConfig: GroupConfig; private _screenWidth = new BehaviorSubject(window.innerWidth); diff --git a/modules/web/src/app/core/services/node-data/provider/alibaba.ts b/modules/web/src/app/core/services/node-data/provider/alibaba.ts index 9dd97b6af4..d2469b3391 100644 --- a/modules/web/src/app/core/services/node-data/provider/alibaba.ts +++ b/modules/web/src/app/core/services/node-data/provider/alibaba.ts @@ -24,9 +24,10 @@ import {Observable, of, onErrorResumeNext} from 'rxjs'; import {catchError, debounceTime, filter, switchMap, take, tap} from 'rxjs/operators'; import {NodeDataService} from '../service'; import {AlibabaService} from '@core/services/provider/alibaba'; +import {DEFAULT_DEBOUNCE_TIME_MS} from '@shared/constants/common'; export class NodeDataAlibabaProvider { - private readonly _debounce = 500; + private readonly _debounceTime = DEFAULT_DEBOUNCE_TIME_MS; constructor( private readonly _nodeDataService: NodeDataService, @@ -51,7 +52,7 @@ export class NodeDataAlibabaProvider { case NodeDataMode.Wizard: return this._clusterSpecService.clusterChanges .pipe(filter(c => this._clusterSpecService.provider === NodeProvider.ALIBABA && !!c?.spec?.cloud?.dc)) - .pipe(debounceTime(this._debounce)) + .pipe(debounceTime(this._debounceTime)) .pipe(tap(c => (cluster = c))) .pipe(switchMap(_ => this._datacenterService.getDatacenter(cluster.spec.cloud.dc).pipe(take(1)))) .pipe(tap(dc => (region = dc.spec.alibaba.region))) @@ -79,7 +80,7 @@ export class NodeDataAlibabaProvider { case NodeDataMode.Dialog: { let selectedProject: string; return this._projectService.selectedProject - .pipe(debounceTime(this._debounce)) + .pipe(debounceTime(this._debounceTime)) .pipe(tap(project => (selectedProject = project.id))) .pipe( switchMap(_ => @@ -118,7 +119,7 @@ export class NodeDataAlibabaProvider { case NodeDataMode.Wizard: return this._clusterSpecService.clusterChanges .pipe(filter(c => this._clusterSpecService.provider === NodeProvider.ALIBABA && !!c?.spec?.cloud?.dc)) - .pipe(debounceTime(this._debounce)) + .pipe(debounceTime(this._debounceTime)) .pipe(tap(c => (cluster = c))) .pipe(switchMap(_ => this._datacenterService.getDatacenter(cluster.spec.cloud.dc).pipe(take(1)))) .pipe(tap(dc => (region = dc.spec.alibaba.region))) @@ -145,7 +146,7 @@ export class NodeDataAlibabaProvider { case NodeDataMode.Dialog: { let selectedProject: string; return this._projectService.selectedProject - .pipe(debounceTime(this._debounce)) + .pipe(debounceTime(this._debounceTime)) .pipe(tap(project => (selectedProject = project.id))) .pipe(switchMap(_ => this._datacenterService.getDatacenter(this._clusterSpecService.cluster.spec.cloud.dc))) .pipe(tap(_ => (onLoadingCb ? onLoadingCb() : null))) @@ -180,7 +181,7 @@ export class NodeDataAlibabaProvider { case NodeDataMode.Wizard: return this._clusterSpecService.clusterChanges .pipe(filter(c => this._clusterSpecService.provider === NodeProvider.ALIBABA && !!c?.spec?.cloud?.dc)) - .pipe(debounceTime(this._debounce)) + .pipe(debounceTime(this._debounceTime)) .pipe(tap(c => (cluster = c))) .pipe(switchMap(_ => this._datacenterService.getDatacenter(cluster.spec.cloud.dc).pipe(take(1)))) .pipe(tap(dc => (region = dc.spec.alibaba.region))) @@ -207,7 +208,7 @@ export class NodeDataAlibabaProvider { case NodeDataMode.Dialog: { let selectedProject: string; return this._projectService.selectedProject - .pipe(debounceTime(this._debounce)) + .pipe(debounceTime(this._debounceTime)) .pipe(tap(project => (selectedProject = project.id))) .pipe(switchMap(_ => this._datacenterService.getDatacenter(this._clusterSpecService.cluster.spec.cloud.dc))) .pipe(tap(_ => (onLoadingCb ? onLoadingCb() : null))) diff --git a/modules/web/src/app/core/services/node-data/provider/anexia.ts b/modules/web/src/app/core/services/node-data/provider/anexia.ts index d83db4f9bf..e361f8cd49 100644 --- a/modules/web/src/app/core/services/node-data/provider/anexia.ts +++ b/modules/web/src/app/core/services/node-data/provider/anexia.ts @@ -24,9 +24,10 @@ import {Observable, of, onErrorResumeNext} from 'rxjs'; import {catchError, debounceTime, filter, switchMap, take, tap} from 'rxjs/operators'; import {NodeDataService} from '../service'; import {AnexiaService} from '@core/services/provider/anexia'; +import {DEFAULT_DEBOUNCE_TIME_MS} from '@shared/constants/common'; export class NodeDataAnexiaProvider { - private readonly _debounce = 500; + private readonly _debounceTime = DEFAULT_DEBOUNCE_TIME_MS; constructor( private readonly _nodeDataService: NodeDataService, @@ -42,7 +43,7 @@ export class NodeDataAnexiaProvider { case NodeDataMode.Wizard: return this._clusterSpecService.clusterChanges .pipe(filter(_ => this._clusterSpecService.provider === NodeProvider.ANEXIA)) - .pipe(debounceTime(this._debounce)) + .pipe(debounceTime(this._debounceTime)) .pipe( switchMap(cluster => this._presetService @@ -64,7 +65,7 @@ export class NodeDataAnexiaProvider { case NodeDataMode.Dialog: { let selectedProject: string; return this._projectService.selectedProject - .pipe(debounceTime(this._debounce)) + .pipe(debounceTime(this._debounceTime)) .pipe(tap(project => (selectedProject = project.id))) .pipe(tap(_ => (onLoadingCb ? onLoadingCb() : null))) .pipe(switchMap(_ => this._anexiaService.getVLans(selectedProject, this._clusterSpecService.cluster.id))) @@ -90,7 +91,7 @@ export class NodeDataAnexiaProvider { case NodeDataMode.Wizard: return this._clusterSpecService.clusterChanges .pipe(filter(_ => this._clusterSpecService.provider === NodeProvider.ANEXIA)) - .pipe(debounceTime(this._debounce)) + .pipe(debounceTime(this._debounceTime)) .pipe(tap(c => (cluster = c))) .pipe(switchMap(_ => this._datacenterService.getDatacenter(cluster.spec.cloud.dc).pipe(take(1)))) .pipe(tap(dc => (location = dc?.spec.anexia.locationID))) @@ -117,7 +118,7 @@ export class NodeDataAnexiaProvider { case NodeDataMode.Dialog: { let selectedProject: string; return this._projectService.selectedProject - .pipe(debounceTime(this._debounce)) + .pipe(debounceTime(this._debounceTime)) .pipe(tap(project => (selectedProject = project.id))) .pipe(switchMap(_ => this._datacenterService.getDatacenter(this._clusterSpecService.cluster.spec.cloud.dc))) .pipe(tap(_ => (onLoadingCb ? onLoadingCb() : null))) @@ -152,7 +153,7 @@ export class NodeDataAnexiaProvider { case NodeDataMode.Wizard: return this._clusterSpecService.clusterChanges .pipe(filter(_ => this._clusterSpecService.provider === NodeProvider.ANEXIA)) - .pipe(debounceTime(this._debounce)) + .pipe(debounceTime(this._debounceTime)) .pipe(tap(c => (cluster = c))) .pipe(switchMap(_ => this._datacenterService.getDatacenter(cluster.spec.cloud.dc).pipe(take(1)))) .pipe(tap(dc => (location = dc?.spec.anexia.locationID))) @@ -179,7 +180,7 @@ export class NodeDataAnexiaProvider { case NodeDataMode.Dialog: { let selectedProject: string; return this._projectService.selectedProject - .pipe(debounceTime(this._debounce)) + .pipe(debounceTime(this._debounceTime)) .pipe(tap(project => (selectedProject = project.id))) .pipe(switchMap(_ => this._datacenterService.getDatacenter(this._clusterSpecService.cluster.spec.cloud.dc))) .pipe(tap(_ => (onLoadingCb ? onLoadingCb() : null))) diff --git a/modules/web/src/app/core/services/node-data/provider/aws.ts b/modules/web/src/app/core/services/node-data/provider/aws.ts index dd5fc408ba..e9205ec366 100644 --- a/modules/web/src/app/core/services/node-data/provider/aws.ts +++ b/modules/web/src/app/core/services/node-data/provider/aws.ts @@ -24,9 +24,10 @@ import {Observable, of, onErrorResumeNext} from 'rxjs'; import {catchError, debounceTime, filter, map, switchMap, take, tap} from 'rxjs/operators'; import {NodeDataService} from '../service'; import {AWSService} from '@core/services/provider/aws'; +import {DEFAULT_DEBOUNCE_TIME_MS} from '@shared/constants/common'; export class NodeDataAWSProvider { - private readonly _debounce = 500; + private readonly _debounceTime = DEFAULT_DEBOUNCE_TIME_MS; constructor( private readonly _nodeDataService: NodeDataService, @@ -67,7 +68,7 @@ export class NodeDataAWSProvider { case NodeDataMode.Dialog: { let selectedProject: string; return this._projectService.selectedProject - .pipe(debounceTime(this._debounce)) + .pipe(debounceTime(this._debounceTime)) .pipe(tap(project => (selectedProject = project.id))) .pipe(tap(_ => (onLoadingCb ? onLoadingCb() : null))) .pipe(switchMap(_ => this._awsService.getSizes(selectedProject, this._clusterDataService.cluster.id))) @@ -90,7 +91,7 @@ export class NodeDataAWSProvider { case NodeDataMode.Wizard: return this._clusterDataService.clusterChanges .pipe(filter(_ => this._clusterDataService.provider === NodeProvider.AWS)) - .pipe(debounceTime(this._debounce)) + .pipe(debounceTime(this._debounceTime)) .pipe( switchMap(cluster => this._presetService @@ -125,7 +126,7 @@ export class NodeDataAWSProvider { case NodeDataMode.Dialog: { let selectedProject: string; return this._projectService.selectedProject - .pipe(debounceTime(this._debounce)) + .pipe(debounceTime(this._debounceTime)) .pipe(tap(project => (selectedProject = project.id))) .pipe(tap(_ => (onLoadingCb ? onLoadingCb() : null))) .pipe(switchMap(_ => this._awsService.getSubnets(selectedProject, this._clusterDataService.cluster.id))) diff --git a/modules/web/src/app/core/services/node-data/provider/azure.ts b/modules/web/src/app/core/services/node-data/provider/azure.ts index 186186594e..fec3907635 100644 --- a/modules/web/src/app/core/services/node-data/provider/azure.ts +++ b/modules/web/src/app/core/services/node-data/provider/azure.ts @@ -24,9 +24,10 @@ import {AzureSizes, AzureZones} from '@shared/entity/provider/azure'; import {NodeProvider} from '@shared/model/NodeProviderConstants'; import {BehaviorSubject, Observable, of, onErrorResumeNext} from 'rxjs'; import {catchError, debounceTime, filter, switchMap, take, tap} from 'rxjs/operators'; +import {DEFAULT_DEBOUNCE_TIME_MS} from '@shared/constants/common'; export class NodeDataAzureProvider { - private readonly _debounce = 500; + private readonly _debounceTime = DEFAULT_DEBOUNCE_TIME_MS; acceleratedNetworking = new BehaviorSubject(false); constructor( @@ -51,7 +52,7 @@ export class NodeDataAzureProvider { case NodeDataMode.Wizard: return this._clusterSpecService.clusterChanges .pipe(filter(c => this._clusterSpecService.provider === NodeProvider.AZURE && !!c?.spec?.cloud?.dc)) - .pipe(debounceTime(this._debounce)) + .pipe(debounceTime(this._debounceTime)) .pipe(tap(c => (cluster = c))) .pipe(switchMap(_ => this._datacenterService.getDatacenter(cluster.spec.cloud.dc).pipe(take(1)))) .pipe(tap(dc => (location = dc.spec.azure.location))) @@ -113,7 +114,7 @@ export class NodeDataAzureProvider { !this._clusterSpecService.cluster.spec.cloud.azure.assignAvailabilitySet ) ) - .pipe(debounceTime(this._debounce)) + .pipe(debounceTime(this._debounceTime)) .pipe(tap(dc => (location = dc.spec.azure.location))) .pipe( switchMap(_ => diff --git a/modules/web/src/app/core/services/node-data/provider/baremetal.ts b/modules/web/src/app/core/services/node-data/provider/baremetal.ts index 34e9d590cc..316d837758 100644 --- a/modules/web/src/app/core/services/node-data/provider/baremetal.ts +++ b/modules/web/src/app/core/services/node-data/provider/baremetal.ts @@ -21,9 +21,10 @@ import {TinkerbellOSImageList} from '@shared/entity/provider/baremetal'; import {NodeProvider} from '@shared/model/NodeProviderConstants'; import {Observable, of, onErrorResumeNext} from 'rxjs'; import {catchError, debounceTime, filter, switchMap, take, tap} from 'rxjs/operators'; +import {DEFAULT_DEBOUNCE_TIME_MS} from '@shared/constants/common'; export class NodeDataBaremetalProvider { - private readonly _debounce = 500; + private readonly _debounceTime = DEFAULT_DEBOUNCE_TIME_MS; constructor( private readonly _nodeDataService: NodeDataService, @@ -36,7 +37,7 @@ export class NodeDataBaremetalProvider { switch (this._nodeDataService.mode) { case NodeDataMode.Wizard: return this._clusterSpecService.datacenterChanges - .pipe(debounceTime(this._debounce)) + .pipe(debounceTime(this._debounceTime)) .pipe(filter(_ => this._clusterSpecService.provider === NodeProvider.BAREMETAL)) .pipe(tap(_ => (onLoadingCb ? onLoadingCb() : null))) .pipe(switchMap(datacenter => this._baremetalService.getOSImages(datacenter))) @@ -51,7 +52,7 @@ export class NodeDataBaremetalProvider { ); case NodeDataMode.Dialog: { return this._projectService.selectedProject - .pipe(debounceTime(this._debounce)) + .pipe(debounceTime(this._debounceTime)) .pipe(tap(_ => (onLoadingCb ? onLoadingCb() : null))) .pipe(switchMap(_ => this._baremetalService.getOSImages(this._clusterSpecService.datacenter))) .pipe( diff --git a/modules/web/src/app/core/services/node-data/provider/digitalocean.ts b/modules/web/src/app/core/services/node-data/provider/digitalocean.ts index 87ac92db61..06d40c289e 100644 --- a/modules/web/src/app/core/services/node-data/provider/digitalocean.ts +++ b/modules/web/src/app/core/services/node-data/provider/digitalocean.ts @@ -22,9 +22,10 @@ import {Observable, of, onErrorResumeNext} from 'rxjs'; import {catchError, debounceTime, filter, switchMap, take, tap} from 'rxjs/operators'; import {NodeDataService} from '../service'; import {DigitalOceanService} from '@core/services/provider/digitalocean'; +import {DEFAULT_DEBOUNCE_TIME_MS} from '@shared/constants/common'; export class NodeDataDigitalOceanProvider { - private readonly _debounce = 500; + private readonly _debounceTime = DEFAULT_DEBOUNCE_TIME_MS; constructor( private readonly _nodeDataService: NodeDataService, @@ -45,7 +46,7 @@ export class NodeDataDigitalOceanProvider { case NodeDataMode.Wizard: return this._clusterSpecService.clusterChanges .pipe(filter(_ => this._clusterSpecService.provider === NodeProvider.DIGITALOCEAN)) - .pipe(debounceTime(this._debounce)) + .pipe(debounceTime(this._debounceTime)) .pipe( switchMap(cluster => this._presetService @@ -68,7 +69,7 @@ export class NodeDataDigitalOceanProvider { case NodeDataMode.Dialog: { let selectedProject: string; return this._projectService.selectedProject - .pipe(debounceTime(this._debounce)) + .pipe(debounceTime(this._debounceTime)) .pipe(tap(project => (selectedProject = project.id))) .pipe(tap(_ => (onLoadingCb ? onLoadingCb() : null))) .pipe( diff --git a/modules/web/src/app/core/services/node-data/provider/gcp.ts b/modules/web/src/app/core/services/node-data/provider/gcp.ts index 40eb128d55..74538549a8 100644 --- a/modules/web/src/app/core/services/node-data/provider/gcp.ts +++ b/modules/web/src/app/core/services/node-data/provider/gcp.ts @@ -24,9 +24,10 @@ import _ from 'lodash'; import {Observable, of, onErrorResumeNext} from 'rxjs'; import {catchError, debounceTime, filter, switchMap, take, tap} from 'rxjs/operators'; import {NodeDataService} from '../service'; +import {DEFAULT_DEBOUNCE_TIME_MS} from '@shared/constants/common'; export class NodeDataGCPProvider { - private readonly _debounce = 500; + private readonly _debounceTime = DEFAULT_DEBOUNCE_TIME_MS; constructor( private readonly _nodeDataService: NodeDataService, @@ -55,7 +56,7 @@ export class NodeDataGCPProvider { case NodeDataMode.Wizard: return this._clusterSpecService.clusterChanges .pipe(filter(_ => this._clusterSpecService.provider === NodeProvider.GCP)) - .pipe(debounceTime(this._debounce)) + .pipe(debounceTime(this._debounceTime)) .pipe(tap(c => (cluster = c))) .pipe( switchMap(_ => @@ -78,7 +79,7 @@ export class NodeDataGCPProvider { case NodeDataMode.Dialog: { let selectedProject: string; return this._projectService.selectedProject - .pipe(debounceTime(this._debounce)) + .pipe(debounceTime(this._debounceTime)) .pipe(tap(project => (selectedProject = project.id))) .pipe(tap(_ => (onLoadingCb ? onLoadingCb() : null))) .pipe(switchMap(_ => this._gcpService.getZones(selectedProject, this._clusterSpecService.cluster.id))) @@ -115,11 +116,11 @@ export class NodeDataGCPProvider { return onErrorResumeNext(of([])); }) ) - .pipe(debounceTime(this._debounce)); + .pipe(debounceTime(this._debounceTime)); case NodeDataMode.Dialog: { let selectedProject: string; return this._projectService.selectedProject - .pipe(debounceTime(this._debounce)) + .pipe(debounceTime(this._debounceTime)) .pipe(tap(project => (selectedProject = project.id))) .pipe(tap(_ => (onLoadingCb ? onLoadingCb() : null))) .pipe( @@ -163,11 +164,11 @@ export class NodeDataGCPProvider { return onErrorResumeNext(of([])); }) ) - .pipe(debounceTime(this._debounce)); + .pipe(debounceTime(this._debounceTime)); case NodeDataMode.Dialog: { let selectedProject: string; return this._projectService.selectedProject - .pipe(debounceTime(this._debounce)) + .pipe(debounceTime(this._debounceTime)) .pipe(tap(project => (selectedProject = project.id))) .pipe(tap(_ => (onLoadingCb ? onLoadingCb() : null))) .pipe( diff --git a/modules/web/src/app/core/services/node-data/provider/hetzner.ts b/modules/web/src/app/core/services/node-data/provider/hetzner.ts index b384e2a6c5..997d4f3e3c 100644 --- a/modules/web/src/app/core/services/node-data/provider/hetzner.ts +++ b/modules/web/src/app/core/services/node-data/provider/hetzner.ts @@ -22,9 +22,10 @@ import {Observable, of, onErrorResumeNext} from 'rxjs'; import {catchError, debounceTime, filter, switchMap, take, tap} from 'rxjs/operators'; import {NodeDataService} from '../service'; import {HetznerService} from '@core/services/provider/hetzner'; +import {DEFAULT_DEBOUNCE_TIME_MS} from '@shared/constants/common'; export class NodeDataHetznerProvider { - private readonly _debounce = 500; + private readonly _debounceTime = DEFAULT_DEBOUNCE_TIME_MS; constructor( private readonly _nodeDataService: NodeDataService, @@ -39,7 +40,7 @@ export class NodeDataHetznerProvider { case NodeDataMode.Wizard: return this._clusterSpecService.clusterChanges .pipe(filter(_ => this._clusterSpecService.provider === NodeProvider.HETZNER)) - .pipe(debounceTime(this._debounce)) + .pipe(debounceTime(this._debounceTime)) .pipe( switchMap(cluster => this._presetService @@ -62,7 +63,7 @@ export class NodeDataHetznerProvider { case NodeDataMode.Dialog: { let selectedProject: string; return this._projectService.selectedProject - .pipe(debounceTime(this._debounce)) + .pipe(debounceTime(this._debounceTime)) .pipe(tap(project => (selectedProject = project.id))) .pipe(tap(_ => (onLoadingCb ? onLoadingCb() : null))) .pipe(switchMap(_ => this._hetznerService.getTypes(selectedProject, this._clusterSpecService.cluster.id))) diff --git a/modules/web/src/app/core/services/node-data/provider/kubevirt.ts b/modules/web/src/app/core/services/node-data/provider/kubevirt.ts index 22413fa05d..4587fead19 100644 --- a/modules/web/src/app/core/services/node-data/provider/kubevirt.ts +++ b/modules/web/src/app/core/services/node-data/provider/kubevirt.ts @@ -28,9 +28,10 @@ import {NodeProvider} from '@shared/model/NodeProviderConstants'; import {BehaviorSubject, Observable, of, onErrorResumeNext} from 'rxjs'; import {catchError, debounceTime, filter, switchMap, take, tap} from 'rxjs/operators'; import {NodeDataService} from '../service'; +import {DEFAULT_DEBOUNCE_TIME_MS} from '@shared/constants/common'; export class NodeDataKubeVirtProvider { - private readonly _debounce = 500; + private readonly _debounceTime = DEFAULT_DEBOUNCE_TIME_MS; private readonly _osImageVersion: BehaviorSubject = new BehaviorSubject(''); readonly osImageVersion$ = this._osImageVersion.asObservable(); @@ -51,7 +52,7 @@ export class NodeDataKubeVirtProvider { case NodeDataMode.Wizard: return this._clusterSpecService.clusterChanges .pipe(filter(_ => this._clusterSpecService.provider === NodeProvider.KUBEVIRT)) - .pipe(debounceTime(this._debounce)) + .pipe(debounceTime(this._debounceTime)) .pipe( switchMap(cluster => this._presetService @@ -74,7 +75,7 @@ export class NodeDataKubeVirtProvider { case NodeDataMode.Dialog: { let selectedProject: string; return this._projectService.selectedProject - .pipe(debounceTime(this._debounce)) + .pipe(debounceTime(this._debounceTime)) .pipe(tap(project => (selectedProject = project.id))) .pipe(tap(_ => (onLoadingCb ? onLoadingCb() : null))) .pipe( @@ -99,7 +100,7 @@ export class NodeDataKubeVirtProvider { case NodeDataMode.Wizard: return this._clusterSpecService.clusterChanges .pipe(filter(_ => this._clusterSpecService.provider === NodeProvider.KUBEVIRT)) - .pipe(debounceTime(this._debounce)) + .pipe(debounceTime(this._debounceTime)) .pipe( switchMap(cluster => this._presetService @@ -122,7 +123,7 @@ export class NodeDataKubeVirtProvider { case NodeDataMode.Dialog: { let selectedProject: string; return this._projectService.selectedProject - .pipe(debounceTime(this._debounce)) + .pipe(debounceTime(this._debounceTime)) .pipe(tap(project => (selectedProject = project.id))) .pipe(tap(_ => (onLoadingCb ? onLoadingCb() : null))) .pipe( @@ -147,7 +148,7 @@ export class NodeDataKubeVirtProvider { case NodeDataMode.Wizard: return this._clusterSpecService.clusterChanges .pipe(filter(_ => this._clusterSpecService.provider === NodeProvider.KUBEVIRT)) - .pipe(debounceTime(this._debounce)) + .pipe(debounceTime(this._debounceTime)) .pipe( switchMap(cluster => this._presetService @@ -170,7 +171,7 @@ export class NodeDataKubeVirtProvider { case NodeDataMode.Dialog: { let selectedProject: string; return this._projectService.selectedProject - .pipe(debounceTime(this._debounce)) + .pipe(debounceTime(this._debounceTime)) .pipe(tap(project => (selectedProject = project.id))) .pipe(tap(_ => (onLoadingCb ? onLoadingCb() : null))) .pipe( @@ -219,7 +220,7 @@ export class NodeDataKubeVirtProvider { } return this._clusterSpecService.clusterChanges .pipe(filter(_ => this._clusterSpecService.provider === NodeProvider.KUBEVIRT)) - .pipe(debounceTime(this._debounce)) + .pipe(debounceTime(this._debounceTime)) .pipe( switchMap(cluster => this._presetService @@ -246,7 +247,7 @@ export class NodeDataKubeVirtProvider { case NodeDataMode.Dialog: { let selectedProject: string; return this._projectService.selectedProject - .pipe(debounceTime(this._debounce)) + .pipe(debounceTime(this._debounceTime)) .pipe(tap(project => (selectedProject = project.id))) .pipe(tap(_ => (onLoadingCb ? onLoadingCb() : null))) .pipe( @@ -273,7 +274,7 @@ export class NodeDataKubeVirtProvider { case NodeDataMode.Wizard: return this._clusterSpecService.clusterChanges .pipe(filter(_ => this._clusterSpecService.provider === NodeProvider.KUBEVIRT)) - .pipe(debounceTime(this._debounce)) + .pipe(debounceTime(this._debounceTime)) .pipe( switchMap(cluster => this._presetService @@ -294,7 +295,7 @@ export class NodeDataKubeVirtProvider { ); case NodeDataMode.Dialog: { return this._projectService.selectedProject - .pipe(debounceTime(this._debounce)) + .pipe(debounceTime(this._debounceTime)) .pipe(tap(_ => (onLoadingCb ? onLoadingCb() : null))) .pipe(switchMap(_ => this._kubeVirtService.getOSImages(this._clusterSpecService.datacenter))) .pipe( diff --git a/modules/web/src/app/core/services/node-data/provider/nutanix.ts b/modules/web/src/app/core/services/node-data/provider/nutanix.ts index d58613457b..eff2c19fd7 100644 --- a/modules/web/src/app/core/services/node-data/provider/nutanix.ts +++ b/modules/web/src/app/core/services/node-data/provider/nutanix.ts @@ -22,9 +22,10 @@ import {NodeProvider} from '@shared/model/NodeProviderConstants'; import {merge, Observable, of, onErrorResumeNext} from 'rxjs'; import {catchError, debounceTime, filter, map, startWith, switchMap, take, tap} from 'rxjs/operators'; import {NodeDataService} from '../service'; +import {DEFAULT_DEBOUNCE_TIME_MS} from '@shared/constants/common'; export class NodeDataNutanixProvider { - private readonly _debounce = 500; + private readonly _debounceTime = DEFAULT_DEBOUNCE_TIME_MS; constructor( private readonly _nodeDataService: NodeDataService, @@ -39,7 +40,7 @@ export class NodeDataNutanixProvider { case NodeDataMode.Wizard: return merge(this._clusterSpecService.clusterChanges, this._clusterSpecService.providerSpecChanges) .pipe(filter(_ => this._clusterSpecService.provider === NodeProvider.NUTANIX)) - .pipe(debounceTime(this._debounce)) + .pipe(debounceTime(this._debounceTime)) .pipe(map(() => this._clusterSpecService.cluster)) .pipe( switchMap(cluster => @@ -66,7 +67,7 @@ export class NodeDataNutanixProvider { case NodeDataMode.Dialog: { let selectedProject: string; return this._projectService.selectedProject - .pipe(debounceTime(this._debounce)) + .pipe(debounceTime(this._debounceTime)) .pipe(tap(project => (selectedProject = project.id))) .pipe(tap(_ => (onLoadingCb ? onLoadingCb() : null))) .pipe(switchMap(_ => this._nutanixService.getSubnets(selectedProject, this._clusterSpecService.cluster.id))) @@ -89,7 +90,7 @@ export class NodeDataNutanixProvider { case NodeDataMode.Wizard: return merge(this._clusterSpecService.clusterChanges, this._clusterSpecService.providerSpecChanges) .pipe(filter(_ => this._clusterSpecService.provider === NodeProvider.NUTANIX)) - .pipe(debounceTime(this._debounce)) + .pipe(debounceTime(this._debounceTime)) .pipe(switchMap(() => this._projectService.selectedProject.pipe(take(1)))) .pipe( switchMap(project => { @@ -114,7 +115,7 @@ export class NodeDataNutanixProvider { case NodeDataMode.Dialog: { let selectedProject: string; return this._projectService.selectedProject - .pipe(debounceTime(this._debounce)) + .pipe(debounceTime(this._debounceTime)) .pipe(tap(project => (selectedProject = project.id))) .pipe(tap(_ => (onLoadingCb ? onLoadingCb() : null))) .pipe( @@ -144,7 +145,7 @@ export class NodeDataNutanixProvider { return merge(this._clusterSpecService.clusterChanges, this._clusterSpecService.providerSpecChanges) .pipe(startWith(true)) .pipe(filter(_ => this._clusterSpecService.provider === NodeProvider.NUTANIX)) - .pipe(debounceTime(this._debounce)) + .pipe(debounceTime(this._debounceTime)) .pipe(switchMap(() => this._projectService.selectedProject.pipe(take(1)))) .pipe( switchMap(project => { @@ -169,7 +170,7 @@ export class NodeDataNutanixProvider { case NodeDataMode.Dialog: { let selectedProject: string; return this._projectService.selectedProject - .pipe(debounceTime(this._debounce)) + .pipe(debounceTime(this._debounceTime)) .pipe(tap(project => (selectedProject = project.id))) .pipe(tap(_ => (onLoadingCb ? onLoadingCb() : null))) .pipe( diff --git a/modules/web/src/app/core/services/node-data/provider/openstack.ts b/modules/web/src/app/core/services/node-data/provider/openstack.ts index e90b93ed4f..0cbd1b0ab4 100644 --- a/modules/web/src/app/core/services/node-data/provider/openstack.ts +++ b/modules/web/src/app/core/services/node-data/provider/openstack.ts @@ -22,9 +22,10 @@ import {Observable, of, onErrorResumeNext} from 'rxjs'; import {catchError, debounceTime, filter, switchMap, take, tap} from 'rxjs/operators'; import {NodeDataService} from '../service'; import {OpenStackService} from '@core/services/provider/openstack'; +import {DEFAULT_DEBOUNCE_TIME_MS} from '@shared/constants/common'; export class NodeDataOpenstackProvider { - private readonly _debounceTime = 500; + private readonly _debounceTime = DEFAULT_DEBOUNCE_TIME_MS; constructor( private readonly _nodeDataService: NodeDataService, diff --git a/modules/web/src/app/core/services/node-data/provider/vmware-cloud-director.ts b/modules/web/src/app/core/services/node-data/provider/vmware-cloud-director.ts index 24d8c4ca67..7332d4db87 100644 --- a/modules/web/src/app/core/services/node-data/provider/vmware-cloud-director.ts +++ b/modules/web/src/app/core/services/node-data/provider/vmware-cloud-director.ts @@ -29,9 +29,10 @@ import {NodeProvider} from '@shared/model/NodeProviderConstants'; import {Observable, of, onErrorResumeNext} from 'rxjs'; import {catchError, debounceTime, filter, map, switchMap, take, tap} from 'rxjs/operators'; import {NodeDataService} from '../service'; +import {DEFAULT_DEBOUNCE_TIME_MS} from '@shared/constants/common'; export class NodeDataVMwareCloudDirectorProvider { - private readonly _debounce = 500; + private readonly _debounceTime = DEFAULT_DEBOUNCE_TIME_MS; constructor( private readonly _nodeDataService: NodeDataService, @@ -49,7 +50,7 @@ export class NodeDataVMwareCloudDirectorProvider { case NodeDataMode.Wizard: return this._clusterSpecService.clusterChanges .pipe(filter(_ => this._clusterSpecService.provider === NodeProvider.VMWARECLOUDDIRECTOR)) - .pipe(debounceTime(this._debounce)) + .pipe(debounceTime(this._debounceTime)) .pipe(map(() => this._clusterSpecService.cluster)) .pipe( switchMap(cluster => @@ -68,7 +69,7 @@ export class NodeDataVMwareCloudDirectorProvider { ); case NodeDataMode.Dialog: return this._projectService.selectedProject - .pipe(debounceTime(this._debounce)) + .pipe(debounceTime(this._debounceTime)) .pipe(tap(_ => (onLoadingCb ? onLoadingCb() : null))) .pipe( switchMap(project => @@ -93,7 +94,7 @@ export class NodeDataVMwareCloudDirectorProvider { case NodeDataMode.Wizard: return this._clusterSpecService.clusterChanges .pipe(filter(_ => this._clusterSpecService.provider === NodeProvider.VMWARECLOUDDIRECTOR)) - .pipe(debounceTime(this._debounce)) + .pipe(debounceTime(this._debounceTime)) .pipe(map(() => this._clusterSpecService.cluster)) .pipe( switchMap(cluster => @@ -112,7 +113,7 @@ export class NodeDataVMwareCloudDirectorProvider { ); case NodeDataMode.Dialog: return this._projectService.selectedProject - .pipe(debounceTime(this._debounce)) + .pipe(debounceTime(this._debounceTime)) .pipe(tap(_ => (onLoadingCb ? onLoadingCb() : null))) .pipe( switchMap(project => @@ -152,7 +153,7 @@ export class NodeDataVMwareCloudDirectorProvider { ); case NodeDataMode.Dialog: return this._projectService.selectedProject - .pipe(debounceTime(this._debounce)) + .pipe(debounceTime(this._debounceTime)) .pipe(tap(_ => (onLoadingCb ? onLoadingCb() : null))) .pipe( switchMap(project => @@ -184,7 +185,7 @@ export class NodeDataVMwareCloudDirectorProvider { case NodeDataMode.Wizard: return this._clusterSpecService.clusterChanges .pipe(filter(_ => this._clusterSpecService.provider === NodeProvider.VMWARECLOUDDIRECTOR)) - .pipe(debounceTime(this._debounce)) + .pipe(debounceTime(this._debounceTime)) .pipe(map(() => this._clusterSpecService.cluster)) .pipe( switchMap(cluster => @@ -203,7 +204,7 @@ export class NodeDataVMwareCloudDirectorProvider { ); case NodeDataMode.Dialog: return this._projectService.selectedProject - .pipe(debounceTime(this._debounce)) + .pipe(debounceTime(this._debounceTime)) .pipe(tap(_ => (onLoadingCb ? onLoadingCb() : null))) .pipe( switchMap(project => diff --git a/modules/web/src/app/core/services/node-data/provider/vsphere.ts b/modules/web/src/app/core/services/node-data/provider/vsphere.ts index e0c63741d6..8b9c7f4e39 100644 --- a/modules/web/src/app/core/services/node-data/provider/vsphere.ts +++ b/modules/web/src/app/core/services/node-data/provider/vsphere.ts @@ -23,9 +23,10 @@ import {NodeProvider} from '@shared/model/NodeProviderConstants'; import {Observable, of, onErrorResumeNext, startWith} from 'rxjs'; import {catchError, debounceTime, filter, map, switchMap, take, tap} from 'rxjs/operators'; import {NodeDataService} from '../service'; +import {DEFAULT_DEBOUNCE_TIME_MS} from '@shared/constants/common'; export class NodeDataVSphereProvider { - private readonly _debounce = 500; + private readonly _debounceTime = DEFAULT_DEBOUNCE_TIME_MS; constructor( private readonly _nodeDataService: NodeDataService, @@ -46,7 +47,7 @@ export class NodeDataVSphereProvider { case NodeDataMode.Wizard: return this._clusterSpecService.clusterChanges .pipe(filter(_ => this._clusterSpecService.provider === NodeProvider.VSPHERE)) - .pipe(debounceTime(this._debounce)) + .pipe(debounceTime(this._debounceTime)) .pipe(map(() => this._clusterSpecService.cluster)) .pipe( switchMap(cluster => @@ -74,7 +75,7 @@ export class NodeDataVSphereProvider { ); case NodeDataMode.Dialog: return this._projectService.selectedProject - .pipe(debounceTime(this._debounce)) + .pipe(debounceTime(this._debounceTime)) .pipe(tap(_ => (onLoadingCb ? onLoadingCb() : null))) .pipe( switchMap(project => this._vsphereService.getTagCategories(project.id, this._clusterSpecService.cluster.id)) @@ -102,7 +103,7 @@ export class NodeDataVSphereProvider { return this._clusterSpecService.clusterChanges .pipe(startWith(true)) .pipe(filter(_ => this._clusterSpecService.provider === NodeProvider.VSPHERE)) - .pipe(debounceTime(this._debounce)) + .pipe(debounceTime(this._debounceTime)) .pipe(map(() => this._clusterSpecService.cluster)) .pipe( switchMap(cluster => @@ -130,7 +131,7 @@ export class NodeDataVSphereProvider { ); case NodeDataMode.Dialog: return this._projectService.selectedProject - .pipe(debounceTime(this._debounce)) + .pipe(debounceTime(this._debounceTime)) .pipe(tap(_ => (onLoadingCb ? onLoadingCb() : null))) .pipe( switchMap(project => @@ -155,7 +156,7 @@ export class NodeDataVSphereProvider { case NodeDataMode.Wizard: return this._clusterSpecService.clusterChanges .pipe(filter(_ => this._clusterSpecService.provider === NodeProvider.VSPHERE)) - .pipe(debounceTime(this._debounce)) + .pipe(debounceTime(this._debounceTime)) .pipe(map(() => this._clusterSpecService.cluster)) .pipe( switchMap(cluster => @@ -183,7 +184,7 @@ export class NodeDataVSphereProvider { ); case NodeDataMode.Dialog: return this._projectService.selectedProject - .pipe(debounceTime(this._debounce)) + .pipe(debounceTime(this._debounceTime)) .pipe(tap(_ => (onLoadingCb ? onLoadingCb() : null))) .pipe(switchMap(project => this._vsphereService.getVMGroups(project.id, this._clusterSpecService.cluster.id))) .pipe( diff --git a/modules/web/src/app/dynamic/enterprise/quotas/default-project-quota/component.ts b/modules/web/src/app/dynamic/enterprise/quotas/default-project-quota/component.ts index b53bbb8d1a..5da5e95428 100644 --- a/modules/web/src/app/dynamic/enterprise/quotas/default-project-quota/component.ts +++ b/modules/web/src/app/dynamic/enterprise/quotas/default-project-quota/component.ts @@ -22,6 +22,7 @@ import {objectDiff} from '@shared/utils/common'; import _ from 'lodash'; import {Subject} from 'rxjs'; import {debounceTime, filter, switchMap, takeUntil} from 'rxjs/operators'; +import {DEFAULT_DEBOUNCE_TIME_MS} from '@shared/constants/common'; enum Controls { CPU = 'cpu', @@ -42,7 +43,7 @@ export class DefaultProjectQuotaComponent implements OnInit, OnDestroy { apiSettings: AdminSettings; // Original settings from the API. Cannot be edited by the user. form: FormGroup; - private readonly _debounceTime = 500; + private readonly _debounceTime = DEFAULT_DEBOUNCE_TIME_MS; private _settingsChange = new Subject(); private _unsubscribe = new Subject(); diff --git a/modules/web/src/app/dynamic/enterprise/quotas/quota-widget/component.ts b/modules/web/src/app/dynamic/enterprise/quotas/quota-widget/component.ts index 584ec2fd44..b46e569ff3 100644 --- a/modules/web/src/app/dynamic/enterprise/quotas/quota-widget/component.ts +++ b/modules/web/src/app/dynamic/enterprise/quotas/quota-widget/component.ts @@ -38,7 +38,7 @@ import {getPercentage} from '@shared/utils/common'; import {Member} from '@shared/entity/member'; import {UserService} from '@core/services/user'; import {QuotaService} from '../service'; -import {quotaWidgetCollapsibleWidth} from '@shared/constants/common'; +import {DEFAULT_DEBOUNCE_TIME_MS, quotaWidgetCollapsibleWidth} from '@shared/constants/common'; import {getProgressBarAccent} from '../utils/common'; @Component({ @@ -49,7 +49,7 @@ import {getProgressBarAccent} from '../utils/common'; }) export class QuotaWidgetComponent implements OnInit, OnChanges, OnDestroy { private readonly _unsubscribe = new Subject(); - private readonly _debounce = 500; + private readonly _debounceTime = DEFAULT_DEBOUNCE_TIME_MS; private readonly _showDetails$ = new BehaviorSubject(false); private readonly _getPercentage = getPercentage; private _user: Member; @@ -75,7 +75,7 @@ export class QuotaWidgetComponent implements OnInit, OnChanges, OnDestroy { quotaDetails: QuotaDetails; showWarning: boolean; isWidgetApplicableForExternalOrImportedCluster: boolean; - showDetails$ = this._showDetails$.asObservable().pipe(debounceTime(this._debounce)); + showDetails$ = this._showDetails$.asObservable().pipe(debounceTime(this._debounceTime)); calculationInProgress$: Observable; isCollapsed: boolean; getProgressBarAccent = getProgressBarAccent; diff --git a/modules/web/src/app/dynamic/enterprise/quotas/services/quota-calculation.ts b/modules/web/src/app/dynamic/enterprise/quotas/services/quota-calculation.ts index 69df90eb4e..580e2c0667 100644 --- a/modules/web/src/app/dynamic/enterprise/quotas/services/quota-calculation.ts +++ b/modules/web/src/app/dynamic/enterprise/quotas/services/quota-calculation.ts @@ -5,12 +5,13 @@ import {merge, Observable, Subject} from 'rxjs'; import {debounceTime, filter, shareReplay, startWith, switchMap, tap} from 'rxjs/operators'; import {ResourceQuotaCalculationPayload, ResourceQuotaCalculation} from '@shared/entity/quota'; import {environment} from '@environments/environment'; +import {DEFAULT_DEBOUNCE_TIME_MS} from '@shared/constants/common'; @Injectable({ providedIn: 'root', }) export class QuotaCalculationService { - private readonly _debounceTime = 500; + private readonly _debounceTime = DEFAULT_DEBOUNCE_TIME_MS; private readonly _newRestRoot: string = environment.newRestRoot; private _quotaExceeded$ = new Subject(); private _refresh$ = new Subject(); diff --git a/modules/web/src/app/external-cluster-wizard/steps/external-cluster/provider/aks/component.ts b/modules/web/src/app/external-cluster-wizard/steps/external-cluster/provider/aks/component.ts index 3b36958e7f..0a324e01a8 100644 --- a/modules/web/src/app/external-cluster-wizard/steps/external-cluster/provider/aks/component.ts +++ b/modules/web/src/app/external-cluster-wizard/steps/external-cluster/provider/aks/component.ts @@ -65,7 +65,7 @@ import {EKSSecurityGroup} from '@shared/entity/provider/eks'; import {ComboboxControls, FilteredComboboxComponent} from '@shared/components/combobox/component'; import {QuotaWidgetComponent} from '@dynamic/enterprise/quotas/quota-widget/component'; import {ProjectService} from '@core/services/project'; -import {GENERATE_NAME_TOOLTIP} from '@app/shared/constants/common'; +import {DEFAULT_DEBOUNCE_TIME_MS, GENERATE_NAME_TOOLTIP} from '@shared/constants/common'; enum Controls { Name = 'name', @@ -161,7 +161,7 @@ export class AKSClusterSettingsComponent @ViewChild('vmSizeCombobox') private readonly _vmSizeCombobox: FilteredComboboxComponent; - private readonly _debounceTime = 500; + private readonly _debounceTime = DEFAULT_DEBOUNCE_TIME_MS; constructor( private readonly _builder: FormBuilder, diff --git a/modules/web/src/app/external-cluster-wizard/steps/external-cluster/provider/eks/component.ts b/modules/web/src/app/external-cluster-wizard/steps/external-cluster/provider/eks/component.ts index e371776e38..ab3100c069 100644 --- a/modules/web/src/app/external-cluster-wizard/steps/external-cluster/provider/eks/component.ts +++ b/modules/web/src/app/external-cluster-wizard/steps/external-cluster/provider/eks/component.ts @@ -65,7 +65,7 @@ import {ComboboxControls, FilteredComboboxComponent} from '@shared/components/co import {EKSArchitecture} from '@app/shared/entity/provider/eks'; import {QuotaWidgetComponent} from '@dynamic/enterprise/quotas/quota-widget/component'; import {ProjectService} from '@core/services/project'; -import {GENERATE_NAME_TOOLTIP} from '@app/shared/constants/common'; +import {DEFAULT_DEBOUNCE_TIME_MS, GENERATE_NAME_TOOLTIP} from '@shared/constants/common'; enum Controls { Vpc = 'vpc', @@ -166,7 +166,7 @@ export class EKSClusterSettingsComponent @Input() projectID: string; @Input() cluster: ExternalCluster; @Input() quotaWidget: TemplateRef; - private readonly _debounceTime = 500; + private readonly _debounceTime = DEFAULT_DEBOUNCE_TIME_MS; @ViewChild('vpcCombobox') private readonly _vpcCombobox: FilteredComboboxComponent; diff --git a/modules/web/src/app/external-cluster-wizard/steps/external-cluster/provider/gke/component.ts b/modules/web/src/app/external-cluster-wizard/steps/external-cluster/provider/gke/component.ts index 49b5a256bc..12ca5fb903 100644 --- a/modules/web/src/app/external-cluster-wizard/steps/external-cluster/provider/gke/component.ts +++ b/modules/web/src/app/external-cluster-wizard/steps/external-cluster/provider/gke/component.ts @@ -57,7 +57,7 @@ import {MasterVersion} from '@app/shared/entity/cluster'; import {ComboboxControls, FilteredComboboxComponent} from '@app/shared/components/combobox/component'; import {QuotaWidgetComponent} from '@dynamic/enterprise/quotas/quota-widget/component'; import {ProjectService} from '@core/services/project'; -import {GENERATE_NAME_TOOLTIP} from '@app/shared/constants/common'; +import {DEFAULT_DEBOUNCE_TIME_MS, GENERATE_NAME_TOOLTIP} from '@shared/constants/common'; enum Controls { Name = 'name', @@ -176,7 +176,7 @@ export class GKEClusterSettingsComponent @ViewChild('machineTypesCombobox') private readonly _machineTypesCombobox: FilteredComboboxComponent; - private readonly _debounceTime = 500; + private readonly _debounceTime = DEFAULT_DEBOUNCE_TIME_MS; constructor( private readonly _builder: FormBuilder, diff --git a/modules/web/src/app/machine-networks/component.ts b/modules/web/src/app/machine-networks/component.ts index 89433dcfec..308e826aad 100644 --- a/modules/web/src/app/machine-networks/component.ts +++ b/modules/web/src/app/machine-networks/component.ts @@ -17,6 +17,7 @@ import {AbstractControl, FormArray, FormBuilder, FormGroup, Validators} from '@a import {Cluster, MachineNetwork} from '@shared/entity/cluster'; import {Subject} from 'rxjs'; import {debounceTime, takeUntil} from 'rxjs/operators'; +import {DEFAULT_DEBOUNCE_TIME_MS} from '@shared/constants/common'; export enum Controls { MachineNetworks = 'machineNetworks', @@ -35,7 +36,7 @@ export class MachineNetworksComponent implements OnInit, OnDestroy { form: FormGroup; - private readonly _debounceTime = 500; + private readonly _debounceTime = DEFAULT_DEBOUNCE_TIME_MS; private _formArray: FormArray; private _unsubscribe = new Subject(); diff --git a/modules/web/src/app/node-data/component.ts b/modules/web/src/app/node-data/component.ts index 9bc180b5e4..c4cd936d2a 100644 --- a/modules/web/src/app/node-data/component.ts +++ b/modules/web/src/app/node-data/component.ts @@ -64,7 +64,7 @@ import _ from 'lodash'; import {ParamsService, PathParam} from '@app/core/services/params'; import {EditApplicationDialogComponent} from '@app/shared/components/application-list/edit-application-dialog/component'; import {MatDialog} from '@angular/material/dialog'; -import {GENERATE_NAME_TOOLTIP} from '@app/shared/constants/common'; +import {DEFAULT_DEBOUNCE_TIME_MS, GENERATE_NAME_TOOLTIP} from '@shared/constants/common'; enum Controls { Name = 'name', @@ -112,7 +112,7 @@ enum ClusterAutoscalingWarning { standalone: false, }) export class NodeDataComponent extends BaseFormValidator implements OnInit, OnDestroy { - private readonly _debounce = 500; + private readonly _debounceTime = DEFAULT_DEBOUNCE_TIME_MS; private _datacenterSpec: Datacenter; readonly NodeProvider = NodeProvider; readonly Controls = Controls; @@ -306,7 +306,7 @@ export class NodeDataComponent extends BaseFormValidator implements OnInit, OnDe }); this._clusterSpecService.clusterChanges - .pipe(debounceTime(this._debounce)) + .pipe(debounceTime(this._debounceTime)) .pipe(takeUntil(this._unsubscribe)) .subscribe(() => { this.isCusterTemplateEditMode = this._clusterSpecService.clusterTemplateEditMode; diff --git a/modules/web/src/app/project/edit-project/component.ts b/modules/web/src/app/project/edit-project/component.ts index 369c0773b7..f7cc268582 100644 --- a/modules/web/src/app/project/edit-project/component.ts +++ b/modules/web/src/app/project/edit-project/component.ts @@ -53,7 +53,7 @@ export class EditProjectComponent implements OnInit { isEnterpriseEdition = DynamicModule.isEnterpriseEdition; labels: object; form: FormGroup; - projectQouta: QuotaDetails; + projectQuota: QuotaDetails; asyncLabelValidators = [AsyncValidators.RestrictedLabelKeyName(ResourceType.Project)]; user: Member; isMember: boolean; @@ -111,13 +111,13 @@ export class EditProjectComponent implements OnInit { onNext(project: Project): void { this._matDialogRef.close(project); - if (this.isEnterpriseEdition && this.user.isAdmin && this.projectQouta) { + if (this.isEnterpriseEdition && this.user.isAdmin && this.projectQuota) { const quotaVariables = { cpu: this.form?.controls?.cpuQuota?.value, memory: this.form?.controls?.memoryQuota?.value, storage: this.form?.controls?.storageQuota?.value, }; - this._quotaService.updateQuota(this.projectQouta?.name, quotaVariables).subscribe(); + this._quotaService.updateQuota(this.projectQuota?.name, quotaVariables).subscribe(); } this._notificationService.success(`Updated the ${this.project.name} project`); } @@ -145,10 +145,10 @@ export class EditProjectComponent implements OnInit { if (this.isMember && this.isEnterpriseEdition) { this._quotaService.getProjectQuota(this.project.id).subscribe(quota => { if (quota) { - this.projectQouta = quota; - this.form.get(Controls.CPUQuota).setValue(this.projectQouta.quota.cpu); - this.form.get(Controls.MemoryQuota).setValue(this.projectQouta.quota.memory); - this.form.get(Controls.StorageQuota).setValue(this.projectQouta.quota.storage); + this.projectQuota = quota; + this.form.get(Controls.CPUQuota).setValue(this.projectQuota.quota.cpu); + this.form.get(Controls.MemoryQuota).setValue(this.projectQuota.quota.memory); + this.form.get(Controls.StorageQuota).setValue(this.projectQuota.quota.storage); } }); } diff --git a/modules/web/src/app/project/edit-project/template.html b/modules/web/src/app/project/edit-project/template.html index f0dafe0177..694b8cddb6 100644 --- a/modules/web/src/app/project/edit-project/template.html +++ b/modules/web/src/app/project/edit-project/template.html @@ -89,7 +89,7 @@ [asyncKeyValidators]=asyncLabelValidators [formControlName]="Controls.Labels" /> - @if (isEnterpriseEdition && projectQouta && user.isAdmin) { + @if (isEnterpriseEdition && projectQuota && user.isAdmin) {
Quota diff --git a/modules/web/src/app/settings/admin/component.ts b/modules/web/src/app/settings/admin/component.ts index bc144358dd..6720b893e9 100644 --- a/modules/web/src/app/settings/admin/component.ts +++ b/modules/web/src/app/settings/admin/component.ts @@ -22,6 +22,7 @@ import {objectDiff} from '@shared/utils/common'; import _ from 'lodash'; import {Subject} from 'rxjs'; import {debounceTime, switchMap, take, takeUntil} from 'rxjs/operators'; +import {DEFAULT_DEBOUNCE_TIME_MS} from '@shared/constants/common'; @Component({ selector: 'km-admin-settings', @@ -34,7 +35,7 @@ export class AdminSettingsComponent implements OnInit, OnDestroy { settings: AdminSettings; // Local settings copy. User can edit it. apiSettings: AdminSettings; // Original settings from the API. Cannot be edited by the user. - private readonly _debounceTime = 500; + private readonly _debounceTime = DEFAULT_DEBOUNCE_TIME_MS; private _settingsChange = new Subject(); private _unsubscribe = new Subject(); diff --git a/modules/web/src/app/settings/admin/customization/component.ts b/modules/web/src/app/settings/admin/customization/component.ts index 7457d2273d..7329eb5dd6 100644 --- a/modules/web/src/app/settings/admin/customization/component.ts +++ b/modules/web/src/app/settings/admin/customization/component.ts @@ -23,6 +23,7 @@ import {objectDiff} from '@shared/utils/common'; import _ from 'lodash'; import {Subject} from 'rxjs'; import {debounceTime, switchMap, take, takeUntil} from 'rxjs/operators'; +import {DEFAULT_DEBOUNCE_TIME_MS} from '@shared/constants/common'; @Component({ selector: 'km-Customization', @@ -35,7 +36,7 @@ export class CustomizationComponent implements OnInit, OnDestroy { settings: AdminSettings; // Local settings copy. User can edit it. apiSettings: AdminSettings; // Original settings from the API. Cannot be edited by the user. - private readonly _debounceTime = 500; + private readonly _debounceTime = DEFAULT_DEBOUNCE_TIME_MS; private _settingsChange = new Subject(); private _unsubscribe = new Subject(); diff --git a/modules/web/src/app/settings/admin/defaults/component.ts b/modules/web/src/app/settings/admin/defaults/component.ts index e4566ec194..eee367b49d 100644 --- a/modules/web/src/app/settings/admin/defaults/component.ts +++ b/modules/web/src/app/settings/admin/defaults/component.ts @@ -36,6 +36,7 @@ import {KUBERNETES_DASHBOARD_DEPRECATED_MESSAGE, OPA_DEPRECATED_MESSAGE} from '@ import _ from 'lodash'; import {Subject} from 'rxjs'; import {debounceTime, switchMap, take, takeUntil} from 'rxjs/operators'; +import {DEFAULT_DEBOUNCE_TIME_MS} from '@shared/constants/common'; enum EventRateConfigActions { Enabled = 'enabled', @@ -70,7 +71,7 @@ export class DefaultsComponent implements OnInit, OnDestroy { readonly veleroChecksumAlgorithms = Object.values(VeleroChecksumAlgorithm); readonly KUBERNETES_DASHBOARD_DEPRECATED_MESSAGE = KUBERNETES_DASHBOARD_DEPRECATED_MESSAGE; readonly OPA_DEPRECATED_MESSAGE = OPA_DEPRECATED_MESSAGE; - private readonly _debounceTime = 500; + private readonly _debounceTime = DEFAULT_DEBOUNCE_TIME_MS; private _settingsChange = new Subject(); private _unsubscribe = new Subject(); diff --git a/modules/web/src/app/settings/admin/limits/component.ts b/modules/web/src/app/settings/admin/limits/component.ts index 64ad68dbbd..043c41e2d0 100644 --- a/modules/web/src/app/settings/admin/limits/component.ts +++ b/modules/web/src/app/settings/admin/limits/component.ts @@ -20,6 +20,7 @@ import {objectDiff} from '@shared/utils/common'; import _ from 'lodash'; import {Subject} from 'rxjs'; import {debounceTime, switchMap, takeUntil} from 'rxjs/operators'; +import {DEFAULT_DEBOUNCE_TIME_MS} from '@shared/constants/common'; @Component({ selector: 'km-limits', @@ -31,7 +32,7 @@ export class LimitsComponent implements OnInit, OnDestroy { settings: AdminSettings; // Local settings copy. User can edit it. apiSettings: AdminSettings; // Original settings from the API. Cannot be edited by the user. - private readonly _debounceTime = 500; + private readonly _debounceTime = DEFAULT_DEBOUNCE_TIME_MS; private _settingsChange = new Subject(); private _unsubscribe = new Subject(); diff --git a/modules/web/src/app/settings/admin/nav/component.ts b/modules/web/src/app/settings/admin/nav/component.ts index 16f70be5e5..b12b878705 100644 --- a/modules/web/src/app/settings/admin/nav/component.ts +++ b/modules/web/src/app/settings/admin/nav/component.ts @@ -19,7 +19,7 @@ import {UserService} from '@core/services/user'; import {environment} from '@environments/environment'; import {Member} from '@shared/entity/member'; import {CustomLink, UserSettings} from '@shared/entity/settings'; -import {sidenavCollapsibleWidth} from '@shared/constants/common'; +import {DEFAULT_DEBOUNCE_TIME_MS, sidenavCollapsibleWidth} from '@shared/constants/common'; import {BehaviorSubject, Subject} from 'rxjs'; import {debounceTime, takeUntil} from 'rxjs/operators'; import {HistoryService} from '@core/services/history'; @@ -42,7 +42,7 @@ export class AdminSidenavComponent implements OnInit, OnDestroy { currentUser: Member; isSidenavCollapsed: boolean; - private readonly _debounceTime = 500; + private readonly _debounceTime = DEFAULT_DEBOUNCE_TIME_MS; private _unsubscribe = new Subject(); private _screenWidth = new BehaviorSubject(window.innerWidth); diff --git a/modules/web/src/app/shared/components/external-cluster-credentials/provider/eks/component.ts b/modules/web/src/app/shared/components/external-cluster-credentials/provider/eks/component.ts index 935e6d3d58..7f3b7b889a 100644 --- a/modules/web/src/app/shared/components/external-cluster-credentials/provider/eks/component.ts +++ b/modules/web/src/app/shared/components/external-cluster-credentials/provider/eks/component.ts @@ -18,6 +18,7 @@ import {ExternalClusterService} from '@core/services/external-cluster'; import {merge, Observable, of, Subject} from 'rxjs'; import {catchError, take, takeUntil, debounceTime, tap} from 'rxjs/operators'; import {ProjectService} from '@core/services/project'; +import {DEFAULT_DEBOUNCE_TIME_MS} from '@shared/constants/common'; export enum Controls { AccessKeyID = 'accessKeyID', @@ -45,7 +46,7 @@ export class EKSCredentialsComponent implements OnInit, OnDestroy { form: FormGroup; regions: string[] = []; regionLabel = RegionState.Ready; - private readonly _debounceTime = 500; + private readonly _debounceTime = DEFAULT_DEBOUNCE_TIME_MS; private readonly _unsubscribe = new Subject(); constructor( diff --git a/modules/web/src/app/shared/components/label-form/component.ts b/modules/web/src/app/shared/components/label-form/component.ts index e850757082..54adcfe5e9 100644 --- a/modules/web/src/app/shared/components/label-form/component.ts +++ b/modules/web/src/app/shared/components/label-form/component.ts @@ -163,8 +163,8 @@ export class LabelFormComponent implements OnChanges, OnInit, OnDestroy, Control this.initialLabels = this.labels; this.form?.valueChanges.subscribe(value => { - this.removedLabels = this.removedLabels.filter(removedlabel => { - return !value.labels.some(label => removedlabel?.key === label?.key); + this.removedLabels = this.removedLabels.filter(removedLabel => { + return !value.labels.some(label => removedLabel?.key === label?.key); }); }); } diff --git a/modules/web/src/app/shared/components/machine-flavor-filter/component.ts b/modules/web/src/app/shared/components/machine-flavor-filter/component.ts index 51b1e260d2..7ab55946dd 100644 --- a/modules/web/src/app/shared/components/machine-flavor-filter/component.ts +++ b/modules/web/src/app/shared/components/machine-flavor-filter/component.ts @@ -18,6 +18,7 @@ import {MachineFlavorFilter} from '@shared/entity/datacenter'; import {BaseFormValidator} from '@shared/validators/base-form.validator'; import {merge} from 'rxjs'; import {debounceTime, takeUntil} from 'rxjs/operators'; +import {DEFAULT_DEBOUNCE_TIME_MS} from '@shared/constants/common'; enum Controls { MinCPU = 'minCPU', @@ -51,7 +52,7 @@ export class MachineFlavorFilterComponent extends BaseFormValidator implements O readonly onChange = new EventEmitter(); readonly Controls = Controls; - private readonly _debounceTime = 500; + private readonly _debounceTime = DEFAULT_DEBOUNCE_TIME_MS; private readonly minValue = 0; private readonly defaultValue = 0; diff --git a/modules/web/src/app/shared/components/openstack-credentials/component.ts b/modules/web/src/app/shared/components/openstack-credentials/component.ts index c8b67a6d97..b28dc0b7eb 100644 --- a/modules/web/src/app/shared/components/openstack-credentials/component.ts +++ b/modules/web/src/app/shared/components/openstack-credentials/component.ts @@ -34,6 +34,7 @@ import {OpenstackCloudSpec} from '@shared/entity/cluster'; import {NodeProvider} from '@shared/model/NodeProviderConstants'; import {BaseFormValidator} from '@shared/validators/base-form.validator'; import {debounceTime, filter, takeUntil, tap} from 'rxjs/operators'; +import {DEFAULT_DEBOUNCE_TIME_MS} from '@shared/constants/common'; enum Controls { Credentials = 'credentials', @@ -73,7 +74,7 @@ export enum Mode { standalone: false, }) export class OpenstackCredentialsComponent extends BaseFormValidator implements OnInit, OnDestroy { - private readonly _debounceTime = 500; + private readonly _debounceTime = DEFAULT_DEBOUNCE_TIME_MS; readonly Controls = Controls; readonly CredentialsType = CredentialsType; isPresetSelected = false; diff --git a/modules/web/src/app/shared/components/openstack-credentials/default/component.ts b/modules/web/src/app/shared/components/openstack-credentials/default/component.ts index 4d007345e7..821c97ed6b 100644 --- a/modules/web/src/app/shared/components/openstack-credentials/default/component.ts +++ b/modules/web/src/app/shared/components/openstack-credentials/default/component.ts @@ -46,6 +46,7 @@ import { takeUntil, tap, } from 'rxjs/operators'; +import {DEFAULT_DEBOUNCE_TIME_MS} from '@shared/constants/common'; enum Controls { Username = 'username', @@ -79,7 +80,7 @@ enum ProjectState { standalone: false, }) export class OpenstackDefaultCredentialsComponent extends BaseFormValidator implements OnInit, OnDestroy { - private readonly _debounceTime = 500; + private readonly _debounceTime = DEFAULT_DEBOUNCE_TIME_MS; readonly Controls = Controls; readonly Modes = Mode; isPresetSelected = false; diff --git a/modules/web/src/app/shared/components/pagination-page-size/component.ts b/modules/web/src/app/shared/components/pagination-page-size/component.ts index 52f0ebf54a..e926230aed 100644 --- a/modules/web/src/app/shared/components/pagination-page-size/component.ts +++ b/modules/web/src/app/shared/components/pagination-page-size/component.ts @@ -20,6 +20,7 @@ import {objectDiff} from '@shared/utils/common'; import _ from 'lodash'; import {Subject} from 'rxjs'; import {debounceTime, switchMap, takeUntil} from 'rxjs/operators'; +import {DEFAULT_DEBOUNCE_TIME_MS} from '@shared/constants/common'; // eslint-disable-next-line @typescript-eslint/no-magic-numbers export const ITEMS_PER_PAGE_OPTIONS = [5, 10, 15, 20, 25]; @@ -36,7 +37,7 @@ export class PaginationPageSizeComponent implements OnInit, OnDestroy { settings: UserSettings; // Local settings copy. User can edit it. apiSettings: UserSettings; // Original settings from the API. Cannot be edited by the user. - private readonly _debounceTime = 500; + private readonly _debounceTime = DEFAULT_DEBOUNCE_TIME_MS; private _settingsChange = new Subject(); private _unsubscribe = new Subject(); diff --git a/modules/web/src/app/shared/constants/common.ts b/modules/web/src/app/shared/constants/common.ts index 3ca936d8a3..a7ada68104 100644 --- a/modules/web/src/app/shared/constants/common.ts +++ b/modules/web/src/app/shared/constants/common.ts @@ -12,6 +12,8 @@ // See the License for the specific language governing permissions and // limitations under the License. +export const DEFAULT_DEBOUNCE_TIME_MS = 500; + export const sidenavCollapsibleWidth = 1500; export const quotaWidgetCollapsibleWidth = 1200; diff --git a/modules/web/src/app/wizard/step/cluster/component.ts b/modules/web/src/app/wizard/step/cluster/component.ts index c636c6d290..561d30f28a 100644 --- a/modules/web/src/app/wizard/step/cluster/component.ts +++ b/modules/web/src/app/wizard/step/cluster/component.ts @@ -94,6 +94,7 @@ import { CiliumApplicationValuesDialogData, } from './cilium-application-values-dialog/component'; import {UserClusterConfigService} from '@app/core/services/user-cluster-config'; +import {DEFAULT_DEBOUNCE_TIME_MS} from '@shared/constants/common'; export enum BSLListState { Ready = 'Backup Storage Location', @@ -223,7 +224,7 @@ export class ClusterStepComponent extends StepBase implements OnInit, ControlVal private readonly _cniInitialValuesMinimumSupportedVersion = '1.13.0'; private readonly _nftablesDefaultMinimumK8sVersion = '1.35.0'; private readonly _cniCiliumApplicationName = 'cilium'; - private readonly _debounceTime = 500; + private readonly _debounceTime = DEFAULT_DEBOUNCE_TIME_MS; get isKubernetesDashboardEnabled(): boolean { return this._settings.enableDashboard; diff --git a/modules/web/src/app/wizard/step/provider-settings/provider/basic/aws/component.ts b/modules/web/src/app/wizard/step/provider-settings/provider/basic/aws/component.ts index 10f1a87003..ccc1172138 100644 --- a/modules/web/src/app/wizard/step/provider-settings/provider/basic/aws/component.ts +++ b/modules/web/src/app/wizard/step/provider-settings/provider/basic/aws/component.ts @@ -32,6 +32,7 @@ import {BaseFormValidator} from '@shared/validators/base-form.validator'; import _ from 'lodash'; import {EMPTY, merge, Observable, onErrorResumeNext} from 'rxjs'; import {catchError, debounceTime, distinctUntilChanged, filter, map, switchMap, takeUntil, tap} from 'rxjs/operators'; +import {DEFAULT_DEBOUNCE_TIME_MS} from '@shared/constants/common'; export enum Controls { AccessKeyID = 'accessKeyID', @@ -67,7 +68,7 @@ enum VPCState { standalone: false, }) export class AWSProviderBasicComponent extends BaseFormValidator implements OnInit, OnDestroy { - private readonly _debounceTime = 500; + private readonly _debounceTime = DEFAULT_DEBOUNCE_TIME_MS; readonly Controls = Controls; isPresetSelected = false; vpcIDs: AWSVPC[] = []; diff --git a/modules/web/src/app/wizard/step/provider-settings/provider/basic/kubevirt/component.ts b/modules/web/src/app/wizard/step/provider-settings/provider/basic/kubevirt/component.ts index 08988a488a..ef17ff881b 100644 --- a/modules/web/src/app/wizard/step/provider-settings/provider/basic/kubevirt/component.ts +++ b/modules/web/src/app/wizard/step/provider-settings/provider/basic/kubevirt/component.ts @@ -24,6 +24,7 @@ import {BaseFormValidator} from '@shared/validators/base-form.validator'; import _ from 'lodash'; import {EMPTY, merge, Observable, onErrorResumeNext} from 'rxjs'; import {catchError, debounceTime, distinctUntilChanged, filter, switchMap, takeUntil, tap} from 'rxjs/operators'; +import {DEFAULT_DEBOUNCE_TIME_MS} from '@shared/constants/common'; export enum Controls { Kubeconfig = 'kubeconfig', @@ -54,7 +55,7 @@ enum VPCState { standalone: false, }) export class KubeVirtProviderBasicComponent extends BaseFormValidator implements OnInit, OnDestroy { - private readonly _debounceTime = 500; + private readonly _debounceTime = DEFAULT_DEBOUNCE_TIME_MS; readonly Controls = Controls; isPresetSelected = false; vpcList: KubeVirtVPC[] = []; diff --git a/modules/web/src/app/wizard/step/provider-settings/provider/basic/nutanix/component.ts b/modules/web/src/app/wizard/step/provider-settings/provider/basic/nutanix/component.ts index a70aa18715..145431ab98 100644 --- a/modules/web/src/app/wizard/step/provider-settings/provider/basic/nutanix/component.ts +++ b/modules/web/src/app/wizard/step/provider-settings/provider/basic/nutanix/component.ts @@ -24,6 +24,7 @@ import {catchError, debounceTime, distinctUntilChanged, filter, map, switchMap, import {NutanixCluster, NutanixProject} from '@shared/entity/provider/nutanix'; import _ from 'lodash'; import {FilteredComboboxComponent} from '@shared/components/combobox/component'; +import {DEFAULT_DEBOUNCE_TIME_MS} from '@shared/constants/common'; export enum Controls { Username = 'username', @@ -62,7 +63,7 @@ enum ClusterState { export class NutanixProviderBasicComponent extends BaseFormValidator implements OnInit, OnDestroy { @ViewChild('clusterCombobox') private readonly _clusterCombobox: FilteredComboboxComponent; - private readonly _debounceTime = 500; + private readonly _debounceTime = DEFAULT_DEBOUNCE_TIME_MS; readonly Controls = Controls; clusters: NutanixCluster[] = []; clusterLabel = ClusterState.Empty; diff --git a/modules/web/src/app/wizard/step/provider-settings/provider/basic/vmware-cloud-director/component.ts b/modules/web/src/app/wizard/step/provider-settings/provider/basic/vmware-cloud-director/component.ts index 805af2a9ae..07aa1c19f0 100644 --- a/modules/web/src/app/wizard/step/provider-settings/provider/basic/vmware-cloud-director/component.ts +++ b/modules/web/src/app/wizard/step/provider-settings/provider/basic/vmware-cloud-director/component.ts @@ -23,6 +23,7 @@ import {NodeProvider} from '@shared/model/NodeProviderConstants'; import {BaseFormValidator} from '@shared/validators/base-form.validator'; import {merge} from 'rxjs'; import {debounceTime, filter, takeUntil} from 'rxjs/operators'; +import {DEFAULT_DEBOUNCE_TIME_MS} from '@shared/constants/common'; export enum Controls { Username = 'username', @@ -50,7 +51,7 @@ export enum Controls { standalone: false, }) export class VMwareCloudDirectorProviderBasicComponent extends BaseFormValidator implements OnInit, OnDestroy { - private readonly _debounceTime = 500; + private readonly _debounceTime = DEFAULT_DEBOUNCE_TIME_MS; readonly Controls = Controls; isPresetSelected = false; readonly CredentialsType = CredentialsType; diff --git a/modules/web/src/app/wizard/step/provider-settings/provider/extended/aws/component.ts b/modules/web/src/app/wizard/step/provider-settings/provider/extended/aws/component.ts index 6324cd2e3e..9b483e6b42 100644 --- a/modules/web/src/app/wizard/step/provider-settings/provider/extended/aws/component.ts +++ b/modules/web/src/app/wizard/step/provider-settings/provider/extended/aws/component.ts @@ -23,6 +23,7 @@ import {EMPTY, merge, Observable, onErrorResumeNext} from 'rxjs'; import {catchError, debounceTime, filter, map, switchMap, takeUntil, tap} from 'rxjs/operators'; import _ from 'lodash'; import {AutocompleteControls, AutocompleteInitialState} from '@shared/components/autocomplete/component'; +import {DEFAULT_DEBOUNCE_TIME_MS} from '@shared/constants/common'; enum Controls { SecurityGroup = 'securityGroup', @@ -49,7 +50,7 @@ enum Controls { standalone: false, }) export class AWSProviderExtendedComponent extends BaseFormValidator implements OnInit, OnDestroy { - private readonly _debounceTime = 500; + private readonly _debounceTime = DEFAULT_DEBOUNCE_TIME_MS; readonly Controls = Controls; isLoadingSecurityGroups = false; securityGroups: string[] = []; diff --git a/modules/web/src/app/wizard/step/provider-settings/provider/extended/azure/component.ts b/modules/web/src/app/wizard/step/provider-settings/provider/extended/azure/component.ts index 77190b5924..78868f804c 100644 --- a/modules/web/src/app/wizard/step/provider-settings/provider/extended/azure/component.ts +++ b/modules/web/src/app/wizard/step/provider-settings/provider/extended/azure/component.ts @@ -116,7 +116,8 @@ export class AzureProviderExtendedComponent extends BaseFormValidator implements merge(this._clusterSpecService.providerChanges, this._clusterSpecService.datacenterChanges) .pipe(takeUntil(this._unsubscribe)) .subscribe(_ => { - // TODO: This causes reset of all default values set in the init stage. It should be fixed. + // TODO: Preserve default values (e.g. AssignAvailabilitySet) across provider/datacenter changes + // instead of resetting the entire form — currently init-stage defaults are lost on reset. this.form.reset(); this.form.get(Controls.AssignAvailabilitySet).setValue(true); }); diff --git a/modules/web/src/app/wizard/step/provider-settings/provider/extended/gcp/component.ts b/modules/web/src/app/wizard/step/provider-settings/provider/extended/gcp/component.ts index 2c62df3822..7347cbd48a 100644 --- a/modules/web/src/app/wizard/step/provider-settings/provider/extended/gcp/component.ts +++ b/modules/web/src/app/wizard/step/provider-settings/provider/extended/gcp/component.ts @@ -33,6 +33,7 @@ import {BaseFormValidator} from '@shared/validators/base-form.validator'; import _ from 'lodash'; import {EMPTY, Observable, onErrorResumeNext} from 'rxjs'; import {catchError, debounceTime, filter, map, switchMap, takeUntil, tap} from 'rxjs/operators'; +import {DEFAULT_DEBOUNCE_TIME_MS} from '@shared/constants/common'; enum Controls { Network = 'network', @@ -70,7 +71,7 @@ enum SubNetworkState { standalone: false, }) export class GCPProviderExtendedComponent extends BaseFormValidator implements OnInit, OnDestroy { - private readonly _debounceTime = 500; + private readonly _debounceTime = DEFAULT_DEBOUNCE_TIME_MS; private _onNetworkChange = new EventEmitter(); @ViewChild('networkCombobox') private readonly _networkCombobox: FilteredComboboxComponent; diff --git a/modules/web/src/app/wizard/step/provider-settings/provider/extended/nutanix/component.ts b/modules/web/src/app/wizard/step/provider-settings/provider/extended/nutanix/component.ts index 183daff787..125363391b 100644 --- a/modules/web/src/app/wizard/step/provider-settings/provider/extended/nutanix/component.ts +++ b/modules/web/src/app/wizard/step/provider-settings/provider/extended/nutanix/component.ts @@ -33,6 +33,7 @@ import {FilteredComboboxComponent} from '@shared/components/combobox/component'; import {NutanixProject} from '@shared/entity/provider/nutanix'; import _ from 'lodash'; import {CloudSpec, Cluster, ClusterSpec, NutanixCloudSpec, NutanixCSIConfig} from '@shared/entity/cluster'; +import {DEFAULT_DEBOUNCE_TIME_MS} from '@shared/constants/common'; enum Controls { ProjectName = 'projectName', @@ -71,7 +72,7 @@ export class NutanixProviderExtendedComponent extends BaseFormValidator implemen readonly _alwaysEnabledControls = [Controls.Fstype, Controls.StorageContainer]; @ViewChild('projectCombobox') private readonly _projectCombobox: FilteredComboboxComponent; - private readonly _debounceTime = 500; + private readonly _debounceTime = DEFAULT_DEBOUNCE_TIME_MS; readonly Controls = Controls; readonly fstypes = ['xfs', 'ext4']; private _username = ''; diff --git a/modules/web/src/app/wizard/step/provider-settings/provider/extended/openstack/default/component.ts b/modules/web/src/app/wizard/step/provider-settings/provider/extended/openstack/default/component.ts index db8e319951..7c413b197d 100644 --- a/modules/web/src/app/wizard/step/provider-settings/provider/extended/openstack/default/component.ts +++ b/modules/web/src/app/wizard/step/provider-settings/provider/extended/openstack/default/component.ts @@ -47,6 +47,7 @@ import { NetworkState, SecurityGroupState, } from '../shared/types/state'; +import {DEFAULT_DEBOUNCE_TIME_MS} from '@shared/constants/common'; enum Controls { SecurityGroup = 'securityGroup', @@ -88,7 +89,7 @@ export class OpenstackProviderExtendedCredentialsComponent private readonly _ipv6SubnetIDCombobox: FilteredComboboxComponent; @ViewChild('ipv6SubnetPoolCombobox') private readonly _ipv6SubnetPoolCombobox: FilteredComboboxComponent; - private readonly _debounceTime = 500; + private readonly _debounceTime = DEFAULT_DEBOUNCE_TIME_MS; private readonly _networkChangeSubject = new Subject(); readonly Controls = Controls; isPresetSelected = false; diff --git a/modules/web/src/app/wizard/step/provider-settings/provider/extended/openstack/loadbalancer-class-dialog/component.ts b/modules/web/src/app/wizard/step/provider-settings/provider/extended/openstack/loadbalancer-class-dialog/component.ts index 6f4d5dba1a..48817287f5 100644 --- a/modules/web/src/app/wizard/step/provider-settings/provider/extended/openstack/loadbalancer-class-dialog/component.ts +++ b/modules/web/src/app/wizard/step/provider-settings/provider/extended/openstack/loadbalancer-class-dialog/component.ts @@ -28,6 +28,7 @@ import {EMPTY, merge, Observable, onErrorResumeNext, Subject} from 'rxjs'; import {catchError, debounceTime, map, takeUntil, tap} from 'rxjs/operators'; import _ from 'lodash'; import {expandCollapse} from '@app/shared/animations/expand'; +import {DEFAULT_DEBOUNCE_TIME_MS} from '@shared/constants/common'; export interface LoadBalancerClassDialogData { loadBalancerClasses?: OpenstackLoadBalancerClass[]; @@ -78,7 +79,7 @@ export class OpenstackLoadBalancerClassDialogComponent implements OnInit, OnDest expandedStates: boolean[] = []; private readonly _unsubscribe = new Subject(); - private readonly _debounceTime = 500; + private readonly _debounceTime = DEFAULT_DEBOUNCE_TIME_MS; // Credential tracking private _domain = ''; diff --git a/modules/web/src/app/wizard/step/provider-settings/provider/extended/vmware-cloud-director/component.ts b/modules/web/src/app/wizard/step/provider-settings/provider/extended/vmware-cloud-director/component.ts index 45b3a65afc..ee171fb7ac 100644 --- a/modules/web/src/app/wizard/step/provider-settings/provider/extended/vmware-cloud-director/component.ts +++ b/modules/web/src/app/wizard/step/provider-settings/provider/extended/vmware-cloud-director/component.ts @@ -44,6 +44,7 @@ import { takeUntil, tap, } from 'rxjs/operators'; +import {DEFAULT_DEBOUNCE_TIME_MS} from '@shared/constants/common'; enum Controls { OvdcNetworks = 'ovdcNetworks', @@ -88,7 +89,7 @@ enum StorageProfileState { }) export class VMwareCloudDirectorProviderExtendedComponent extends BaseFormValidator implements OnInit, OnDestroy { private readonly _alwaysEnabledControls = [Controls.StorageProfile, Controls.Filesystem]; - private readonly _debounceTime = 500; + private readonly _debounceTime = DEFAULT_DEBOUNCE_TIME_MS; private readonly _defaultFilesystem = Filesystem.EXT4; readonly Controls = Controls; readonly fstypes = [Filesystem.XFS, Filesystem.EXT4]; diff --git a/modules/web/src/app/wizard/step/provider-settings/provider/extended/vsphere/component.ts b/modules/web/src/app/wizard/step/provider-settings/provider/extended/vsphere/component.ts index ac31fbb4bd..c328bf4b6d 100644 --- a/modules/web/src/app/wizard/step/provider-settings/provider/extended/vsphere/component.ts +++ b/modules/web/src/app/wizard/step/provider-settings/provider/extended/vsphere/component.ts @@ -48,6 +48,7 @@ import { tap, } from 'rxjs/operators'; import {NodeDataService} from '@app/core/services/node-data/service'; +import {DEFAULT_DEBOUNCE_TIME_MS} from '@shared/constants/common'; enum Controls { Networks = 'networks', @@ -97,7 +98,7 @@ enum TagCategoryState { standalone: false, }) export class VSphereProviderExtendedComponent extends BaseFormValidator implements OnInit, AfterViewInit, OnDestroy { - private readonly _debounceTime = 500; + private readonly _debounceTime = DEFAULT_DEBOUNCE_TIME_MS; private _networkMap: {[type: string]: VSphereNetwork[]} = {}; private _credentialsChanged = new EventEmitter(); private _username = '';