@@ -43,7 +43,7 @@ angular.module('mnSettingsCluster', [
4343 mnClusterConfigurationService ,
4444] ) . controller ( 'mnSettingsClusterController' , mnSettingsClusterController ) ;
4545
46- function mnSettingsClusterController ( $scope , $q , $uibModal , mnPoolDefault , mnMemoryQuotaService , mnSettingsClusterService , mnHelper , mnPromiseHelper , mnClusterConfigurationService , mnXDCRService ) {
46+ function mnSettingsClusterController ( $scope , $q , $uibModal , mnPoolDefault , mnMemoryQuotaService , mnSettingsClusterService , mnHelper , mnPromiseHelper , mnClusterConfigurationService , mnXDCRService , $rootScope ) {
4747 var vm = this ;
4848 vm . saveVisualInternalSettings = saveVisualInternalSettings ;
4949 vm . reloadState = mnHelper . reloadState ;
@@ -69,7 +69,13 @@ function mnSettingsClusterController($scope, $q, $uibModal, mnPoolDefault, mnMem
6969 . catchErrorsFromSuccess ( "indexSettingsErrors" ) ;
7070 } , 500 ) , true ) ;
7171
72+ let submitted ;
73+
7274 function saveSettings ( ) {
75+ if ( ! isFormInitialized ( ) || submitted ) {
76+ return ;
77+ }
78+ submitted = true ;
7379 var queries = [ ] ;
7480 var promise1 = mnPromiseHelper ( vm , mnSettingsClusterService . postPoolsDefault ( vm . memoryQuotaConfig , false , vm . clusterName ) )
7581 . catchErrors ( "memoryQuotaErrors" )
@@ -170,7 +176,8 @@ function mnSettingsClusterController($scope, $q, $uibModal, mnPoolDefault, mnMem
170176 return cb ( ) ;
171177 } ) ) ;
172178
173- var promiseAll = $q . all ( queries ) ;
179+ var promiseAll = $q . all ( queries )
180+ . finally ( ( ) => ( submitted = false ) ) ;
174181 mnPromiseHelper ( vm , promiseAll )
175182 . showGlobalSpinner ( )
176183 . reloadState ( )
@@ -221,8 +228,23 @@ function mnSettingsClusterController($scope, $q, $uibModal, mnPoolDefault, mnMem
221228 vm . initialCurlWhitelist = _ . cloneDeep ( queryCurl ) ;
222229 vm . querySettings = querySettings ;
223230 }
231+ function isFormInitialized ( ) {
232+ let compat = mnPoolDefault . export . compat ;
233+ let cluster = $scope . rbac . cluster ;
234+ return ( vm . clusterName != void 0 ) && ( vm . initialMemoryQuota != void 0 ) &&
235+ ( ( compat . atLeast55 && cluster . settings . read ) ? ( vm . querySettings != void 0 ) : true ) &&
236+ ( cluster . xdcr . settings . read ? ( vm . replicationSettings != void 0 ) : true ) &&
237+ ( cluster . admin . memcached . read ? ( vm . readerThreads != void 0 ) : true ) &&
238+ ( ( compat . atLeast66 && cluster . settings . read ) ? ( vm . settingsRebalance != void 0 ) : true ) &&
239+ ( ( compat . atLeast65 && mnPoolDefault . export . isEnterprise && cluster . settings . read ) ?
240+ ( vm . retryRebalanceCfg != void 0 ) : true ) &&
241+ ( cluster . settings . indexes . read ? ( vm . indexSettings != void 0 ) : true ) &&
242+ mnSettingsClusterService . getInitChecker ( ) . every ( v => v ( ) ) ;
243+
244+ }
224245 function activate ( ) {
225246 mnSettingsClusterService . clearSubmitCallbacks ( ) ;
247+ mnSettingsClusterService . clearInitChecker ( ) ;
226248
227249 mnPromiseHelper ( vm , mnPoolDefault . get ( ) )
228250 . applyToScope ( function ( resp ) {
0 commit comments