Fix node label validation

Closes-Bug: #1486952

Change-Id: I36b4a0adbc88aaac39db3529b458d924cf11d943
This commit is contained in:
Julia Aranovich 2015-11-25 17:32:37 +03:00
parent 5fb121c890
commit 5b909a773a

View File

@ -1345,7 +1345,7 @@ function($, _, i18n, Backbone, React, utils, models, dispatcher, controls, dialo
labelData = labels[index]; labelData = labels[index];
labelData.key = newKey; labelData.key = newKey;
if (!labelData.indeterminate) labelData.checked = true; if (!labelData.indeterminate) labelData.checked = true;
labelData.error = this.validateLabelKey(labelData, index); this.validateLabels(labels);
this.setState({labels: labels}); this.setState({labels: labels});
}, },
changeLabelState: function(index, key, checked) { changeLabelState: function(index, key, checked) {
@ -1353,7 +1353,7 @@ function($, _, i18n, Backbone, React, utils, models, dispatcher, controls, dialo
labelData = labels[index]; labelData = labels[index];
labelData.checked = checked; labelData.checked = checked;
labelData.indeterminate = false; labelData.indeterminate = false;
labelData.error = this.validateLabelKey(labelData, index); this.validateLabels(labels);
this.setState({labels: labels}); this.setState({labels: labels});
}, },
changeLabelValue: function(index, key, value) { changeLabelValue: function(index, key, value) {
@ -1361,23 +1361,26 @@ function($, _, i18n, Backbone, React, utils, models, dispatcher, controls, dialo
labelData = labels[index]; labelData = labels[index];
labelData.values = [value || null]; labelData.values = [value || null];
if (!labelData.indeterminate) labelData.checked = true; if (!labelData.indeterminate) labelData.checked = true;
labelData.error = this.validateLabelKey(labelData, index); this.validateLabels(labels);
this.setState({labels: labels}); this.setState({labels: labels});
}, },
validateLabelKey: function(labelData, labelIndex) { validateLabels: function(labels) {
if (labelData.checked || labelData.indeterminate) { _.each(labels, (currentLabel, currentIndex) => {
currentLabel.error = null;
if (currentLabel.checked || currentLabel.indeterminate) {
var ns = 'cluster_page.nodes_tab.node_management_panel.labels.'; var ns = 'cluster_page.nodes_tab.node_management_panel.labels.';
if (!_.trim(labelData.key)) { if (!_.trim(currentLabel.key)) {
return i18n(ns + 'empty_label_key'); currentLabel.error = i18n(ns + 'empty_label_key');
} } else {
if (_.any(this.state.labels, function(data, index) { var doesLabelExist = _.any(labels, (label, index) => {
if (index == labelIndex) return false; return index != currentIndex &&
return _.trim(data.key) == _.trim(labelData.key) && (data.checked || data.indeterminate); _.trim(label.key) == _.trim(currentLabel.key) &&
})) { (label.checked || label.indeterminate);
return i18n(ns + 'existing_label'); });
if (doesLabelExist) currentLabel.error = i18n(ns + 'existing_label');
} }
} }
return null; });
}, },
isSavingPossible: function() { isSavingPossible: function() {
return !this.state.actionInProgress && this.hasChanges() && _.all(_.pluck(this.state.labels, 'error'), _.isNull); return !this.state.actionInProgress && this.hasChanges() && _.all(_.pluck(this.state.labels, 'error'), _.isNull);