Skip to content

Commit 7af9d40

Browse files
MB-47499: enable form submission when form is ready
when all initial values are set and form is not in the process of being submitted Change-Id: Ie5d1f632af056db64d4498b0590156f59306d9f6 Reviewed-on: http://review.couchbase.org/c/ns_server/+/159011 Well-Formed: Build Bot <[email protected]> Reviewed-by: Matthew <[email protected]> Tested-by: Pavel Blagodov <[email protected]>
1 parent 46edad8 commit 7af9d40

File tree

4 files changed

+50
-3
lines changed

4 files changed

+50
-3
lines changed

priv/public/ui/app/mn_admin/mn_settings_auto_failover_controller.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,10 +32,15 @@ function mnSettingsAutoFailoverController($scope, $q, mnPromiseHelper, mnSetting
3232
var vm = this;
3333

3434
mnSettingsClusterService.registerSubmitCallback(submit);
35+
mnSettingsClusterService.registerInitChecker(() => (!!vm.autoFailoverSettings &&
36+
!!vm.reprovisionSettings));
3537

3638
activate();
3739

3840
function getAutoFailoverSettings() {
41+
if (!vm.autoFailoverSettings) {
42+
return;
43+
}
3944
var settings = {
4045
enabled: vm.autoFailoverSettings.enabled,
4146
timeout: vm.autoFailoverSettings.timeout

priv/public/ui/app/mn_admin/mn_settings_cluster_controller.js

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -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) {

priv/public/ui/app/mn_admin/mn_settings_cluster_service.js

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,15 @@ function mnSettingsClusterServiceFactory($http, $q, IEC, mnPools, mnPoolDefault)
2323
postPoolsDefault: postPoolsDefault,
2424
getIndexSettings: getIndexSettings,
2525
postIndexSettings: postIndexSettings,
26+
27+
registerInitChecker: registerInitChecker,
28+
clearInitChecker: clearInitChecker,
29+
getInitChecker: getInitChecker,
30+
2631
registerSubmitCallback: registerSubmitCallback,
2732
clearSubmitCallbacks: clearSubmitCallbacks,
2833
getSubmitCallbacks: getSubmitCallbacks,
34+
2935
getSettingsRetryRebalance: getSettingsRetryRebalance,
3036
postSettingsRetryRebalance: postSettingsRetryRebalance,
3137
getSettingsRebalance: getSettingsRebalance,
@@ -37,6 +43,7 @@ function mnSettingsClusterServiceFactory($http, $q, IEC, mnPools, mnPoolDefault)
3743
};
3844

3945
var childSubmitCallbacks = [];
46+
var childInitChecker = [];
4047

4148
return mnSettingsClusterService;
4249

@@ -83,11 +90,23 @@ function mnSettingsClusterServiceFactory($http, $q, IEC, mnPools, mnPoolDefault)
8390
});
8491
}
8592

93+
function getInitChecker() {
94+
return childInitChecker;
95+
}
96+
97+
function clearInitChecker(cb) {
98+
childInitChecker = [];
99+
}
100+
101+
function registerInitChecker(cb) {
102+
childInitChecker.push(cb);
103+
}
104+
86105
function getSubmitCallbacks() {
87106
return childSubmitCallbacks;
88107
}
89108

90-
function clearSubmitCallbacks (cb) {
109+
function clearSubmitCallbacks(cb) {
91110
childSubmitCallbacks = [];
92111
}
93112

priv/public/ui/app/mn_admin/mn_settings_notifications_controller.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ function mnSettingsNotificationsController(mnPromiseHelper, mnSettingsNotificati
2828
var vm = this;
2929

3030
mnSettingsClusterService.registerSubmitCallback(submit);
31+
mnSettingsClusterService.registerInitChecker(() => (vm.updates != void 0));
3132
vm.implementationVersion = pools.implementationVersion;
3233

3334
activate();

0 commit comments

Comments
 (0)