correct save button enabled when changes exists. Changed lower/uppercase
spelling Signed-off-by: Melanie Retter <melanie.retter@bosch-si.com>
This commit is contained in:
@@ -193,7 +193,7 @@ public class SoftwareModuleAddUpdateWindow extends CustomComponent implements Se
|
||||
oldVendorValue = null;
|
||||
|
||||
if (window != null) {
|
||||
window.resetRequiredFieldsValues();
|
||||
window.resetMandatoryAndEditedFields();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -223,7 +223,7 @@ public class SoftwareModuleAddUpdateWindow extends CustomComponent implements Se
|
||||
/* add main layout to the window */
|
||||
window = SPUIComponentProvider.getWindow(i18n.get("upload.caption.add.new.swmodule"), null,
|
||||
SPUIDefinitions.CREATE_UPDATE_WINDOW, this, event -> saveOrUpdate(), event -> closeThisWindow(), null,
|
||||
getMandatoryFields(formLayout));
|
||||
getMandatoryFields(formLayout), null);
|
||||
window.getButtonsLayout().removeStyleName("actionButtonsMargin");
|
||||
nameTextField.focus();
|
||||
}
|
||||
|
||||
@@ -132,7 +132,8 @@ public class CreateUpdateSoftwareTypeLayout extends CreateUpdateTypeLayout
|
||||
public void createWindow() {
|
||||
reset();
|
||||
window = SPUIComponentProvider.getWindow(i18n.get("caption.add.type"), null,
|
||||
SPUIDefinitions.CREATE_UPDATE_WINDOW, this, this::save, this::discard, null, getMandatoryFields());
|
||||
SPUIDefinitions.CREATE_UPDATE_WINDOW, this, this::save, this::discard, null, getMandatoryFields(),
|
||||
getEditedFields());
|
||||
}
|
||||
|
||||
private Map<String, Boolean> getMandatoryFields() {
|
||||
|
||||
@@ -74,6 +74,8 @@ public class CommonDialogWindow extends Window implements Serializable {
|
||||
|
||||
private Map<String, Boolean> requiredFields;
|
||||
|
||||
private final Map<String, Boolean> editedFields;
|
||||
|
||||
@Autowired
|
||||
private I18N i18n;
|
||||
|
||||
@@ -93,7 +95,7 @@ public class CommonDialogWindow extends Window implements Serializable {
|
||||
*/
|
||||
public CommonDialogWindow(final String caption, final Component content, final String helpLink,
|
||||
final ClickListener saveButtonClickListener, final ClickListener cancelButtonClickListener,
|
||||
final Map<String, Boolean> requiredFields) {
|
||||
final Map<String, Boolean> requiredFields, final Map<String, Boolean> editedFields) {
|
||||
checkNotNull(saveButtonClickListener);
|
||||
checkNotNull(cancelButtonClickListener);
|
||||
this.caption = caption;
|
||||
@@ -102,6 +104,7 @@ public class CommonDialogWindow extends Window implements Serializable {
|
||||
this.saveButtonClickListener = saveButtonClickListener;
|
||||
this.cancelButtonClickListener = cancelButtonClickListener;
|
||||
this.requiredFields = requiredFields;
|
||||
this.editedFields = editedFields;
|
||||
|
||||
init();
|
||||
}
|
||||
@@ -110,32 +113,32 @@ public class CommonDialogWindow extends Window implements Serializable {
|
||||
|
||||
if (StringUtils.isNotBlank(event.getText())) {
|
||||
if (StringUtils.isNotBlank(textfield.getCaption())) {
|
||||
getRequiredFields().put(textfield.getCaption(), Boolean.TRUE);
|
||||
requiredFields.put(textfield.getCaption(), Boolean.TRUE);
|
||||
}
|
||||
getRequiredFields().put(textfield.getId(), Boolean.TRUE);
|
||||
} else {
|
||||
if (StringUtils.isNotBlank(textfield.getCaption())) {
|
||||
getRequiredFields().put(textfield.getCaption(), Boolean.FALSE);
|
||||
requiredFields.put(textfield.getCaption(), Boolean.FALSE);
|
||||
}
|
||||
getRequiredFields().put(textfield.getId(), Boolean.FALSE);
|
||||
requiredFields.put(textfield.getId(), Boolean.FALSE);
|
||||
}
|
||||
checkMandatoryFields();
|
||||
checkMandatoryFieldsFilled();
|
||||
}
|
||||
|
||||
public void checkMandatoryComboBox(final ValueChangeEvent event, final AbstractSelect select) {
|
||||
|
||||
if (event.getProperty().getValue() != null) {
|
||||
if (StringUtils.isNotBlank(select.getCaption())) {
|
||||
getRequiredFields().put(select.getCaption(), Boolean.TRUE);
|
||||
requiredFields.put(select.getCaption(), Boolean.TRUE);
|
||||
}
|
||||
getRequiredFields().put(select.getId(), Boolean.TRUE);
|
||||
requiredFields.put(select.getId(), Boolean.TRUE);
|
||||
} else {
|
||||
if (StringUtils.isNotBlank(select.getCaption())) {
|
||||
getRequiredFields().put(select.getCaption(), Boolean.FALSE);
|
||||
requiredFields.put(select.getCaption(), Boolean.FALSE);
|
||||
}
|
||||
getRequiredFields().put(select.getId(), Boolean.FALSE);
|
||||
requiredFields.put(select.getId(), Boolean.FALSE);
|
||||
}
|
||||
checkMandatoryFields();
|
||||
checkMandatoryFieldsFilled();
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -143,7 +146,7 @@ public class CommonDialogWindow extends Window implements Serializable {
|
||||
* mandatory fields are filled the save button is enabled. Otherwise the
|
||||
* save button is disabled.
|
||||
*/
|
||||
private void checkMandatoryFields() {
|
||||
private void checkMandatoryFieldsFilled() {
|
||||
|
||||
for (final Map.Entry<String, Boolean> entry : requiredFields.entrySet()) {
|
||||
if (entry.getValue() == null || entry.getValue().equals(Boolean.FALSE)) {
|
||||
@@ -154,35 +157,56 @@ public class CommonDialogWindow extends Window implements Serializable {
|
||||
saveButton.setEnabled(true);
|
||||
}
|
||||
|
||||
public void updateRequiredFields(final String fieldId, final Boolean filled) {
|
||||
private void checkExistsChanges() {
|
||||
|
||||
getRequiredFields().put(fieldId, filled);
|
||||
checkMandatoryFields();
|
||||
if (editedFields == null) {
|
||||
return;
|
||||
}
|
||||
for (final Map.Entry<String, Boolean> entry : editedFields.entrySet()) {
|
||||
if (entry.getValue() != null && entry.getValue().equals(Boolean.TRUE)) {
|
||||
saveButton.setEnabled(true);
|
||||
return;
|
||||
}
|
||||
}
|
||||
saveButton.setEnabled(false);
|
||||
}
|
||||
|
||||
public void checkChanges(final String newText, final String oldText) {
|
||||
public void updateRequiredFields(final String fieldId, final Boolean filled) {
|
||||
|
||||
requiredFields.put(fieldId, filled);
|
||||
checkMandatoryFieldsFilled();
|
||||
}
|
||||
|
||||
public void checkChanges(final String fieldName, final String newText, final String oldText) {
|
||||
|
||||
if ((StringUtils.isNotBlank(newText) && !newText.equals(oldText))
|
||||
|| (StringUtils.isNotBlank(oldText) && !oldText.equals(newText))) {
|
||||
saveButton.setEnabled(true);
|
||||
editedFields.put(fieldName, Boolean.TRUE);
|
||||
} else {
|
||||
saveButton.setEnabled(false);
|
||||
editedFields.put(fieldName, Boolean.FALSE);
|
||||
}
|
||||
checkExistsChanges();
|
||||
}
|
||||
|
||||
public void checkColorChange(final Color newColor, final Color oldColor) {
|
||||
public void checkColorChange(final String fieldName, final Color newColor, final Color oldColor) {
|
||||
|
||||
if (newColor.equals(oldColor)) {
|
||||
setSaveButtonEnabled(false);
|
||||
editedFields.put(fieldName, Boolean.FALSE);
|
||||
} else {
|
||||
setSaveButtonEnabled(true);
|
||||
editedFields.put(fieldName, Boolean.TRUE);
|
||||
}
|
||||
checkExistsChanges();
|
||||
}
|
||||
|
||||
public void resetRequiredFieldsValues() {
|
||||
// Reset mandatory fields are filled marker
|
||||
if (getRequiredFields() != null) {
|
||||
for (final Map.Entry<String, Boolean> entry : getRequiredFields().entrySet()) {
|
||||
public void resetMandatoryAndEditedFields() {
|
||||
resetFields(requiredFields);
|
||||
resetFields(editedFields);
|
||||
}
|
||||
|
||||
private void resetFields(final Map<String, Boolean> fields) {
|
||||
// Reset mandatory fields are filled marker / fields are edited marker
|
||||
if (fields != null) {
|
||||
for (final Map.Entry<String, Boolean> entry : fields.entrySet()) {
|
||||
entry.setValue(null);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -154,9 +154,9 @@ public final class SPUIComponentProvider {
|
||||
public static CommonDialogWindow getWindow(final String caption, final String id, final String type,
|
||||
final Component content, final ClickListener saveButtonClickListener,
|
||||
final ClickListener cancelButtonClickListener, final String helpLink,
|
||||
final Map<String, Boolean> requiredFields) {
|
||||
final Map<String, Boolean> requiredFields, final Map<String, Boolean> editedFields) {
|
||||
return SPUIWindowDecorator.getDeocratedWindow(caption, id, type, content, saveButtonClickListener,
|
||||
cancelButtonClickListener, helpLink, requiredFields);
|
||||
cancelButtonClickListener, helpLink, requiredFields, editedFields);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -47,10 +47,10 @@ public final class SPUIWindowDecorator {
|
||||
public static CommonDialogWindow getDeocratedWindow(final String caption, final String id, final String type,
|
||||
final Component content, final ClickListener saveButtonClickListener,
|
||||
final ClickListener cancelButtonClickListener, final String helpLink,
|
||||
final Map<String, Boolean> requiredFields) {
|
||||
final Map<String, Boolean> requiredFields, final Map<String, Boolean> editedFields) {
|
||||
|
||||
final CommonDialogWindow window = new CommonDialogWindow(caption, content, helpLink, saveButtonClickListener,
|
||||
cancelButtonClickListener, requiredFields);
|
||||
cancelButtonClickListener, requiredFields, editedFields);
|
||||
if (null != id) {
|
||||
window.setId(id);
|
||||
}
|
||||
|
||||
@@ -677,7 +677,8 @@ public class CreateUpdateDistSetTypeLayout extends CreateUpdateTypeLayout
|
||||
public void createWindow() {
|
||||
reset();
|
||||
window = SPUIComponentProvider.getWindow(i18n.get("caption.add.type"), null,
|
||||
SPUIDefinitions.CREATE_UPDATE_WINDOW, this, this::save, this::discard, null, getMandatoryFields());
|
||||
SPUIDefinitions.CREATE_UPDATE_WINDOW, this, this::save, this::discard, null, getMandatoryFields(),
|
||||
getEditedFields());
|
||||
}
|
||||
|
||||
private Map<String, Boolean> getMandatoryFields() {
|
||||
|
||||
@@ -115,8 +115,9 @@ public abstract class AbstractCreateUpdateTagLayout extends CustomComponent
|
||||
|
||||
protected void createWindow() {
|
||||
reset();
|
||||
setWindow(SPUIComponentProvider.getWindow(i18n.get("caption.add.tag"), null,
|
||||
SPUIDefinitions.CREATE_UPDATE_WINDOW, this, this::save, this::discard, null, getMandatoryFields()));
|
||||
setWindow(
|
||||
SPUIComponentProvider.getWindow(i18n.get("caption.add.tag"), null, SPUIDefinitions.CREATE_UPDATE_WINDOW,
|
||||
this, this::save, this::discard, null, getMandatoryFields(), getEditedFields()));
|
||||
}
|
||||
|
||||
private Map<String, Boolean> getMandatoryFields() {
|
||||
@@ -131,6 +132,13 @@ public abstract class AbstractCreateUpdateTagLayout extends CustomComponent
|
||||
return requiredFields;
|
||||
}
|
||||
|
||||
protected Map<String, Boolean> getEditedFields() {
|
||||
final Map<String, Boolean> changeMap = new HashMap<>();
|
||||
changeMap.put(tagDesc.getCaption(), Boolean.FALSE);
|
||||
changeMap.put(colorPickerLayout.getId(), Boolean.FALSE);
|
||||
return changeMap;
|
||||
}
|
||||
|
||||
/**
|
||||
* Save new tag / update new tag.
|
||||
*
|
||||
@@ -213,7 +221,7 @@ public abstract class AbstractCreateUpdateTagLayout extends CustomComponent
|
||||
|
||||
protected void listenerTagDescTextAreaChanged(final TextChangeEvent event) {
|
||||
|
||||
window.checkChanges(event.getText(), tagDescOriginal);
|
||||
window.checkChanges(tagDesc.getCaption(), event.getText(), tagDescOriginal);
|
||||
}
|
||||
|
||||
protected void buildLayout() {
|
||||
@@ -375,7 +383,7 @@ public abstract class AbstractCreateUpdateTagLayout extends CustomComponent
|
||||
tagPreviewBtnClicked = false;
|
||||
|
||||
if (window != null) {
|
||||
window.resetRequiredFieldsValues();
|
||||
window.resetMandatoryAndEditedFields();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -466,7 +474,7 @@ public abstract class AbstractCreateUpdateTagLayout extends CustomComponent
|
||||
colorPickerLayout.getColorSelect().setColor(colorPickerLayout.getSelPreview().getColor());
|
||||
}
|
||||
|
||||
window.checkColorChange(colorPickerLayout.getSelectedColor(), selectedColorOriginal);
|
||||
window.checkColorChange(colorPickerLayout.getId(), colorPickerLayout.getSelectedColor(), selectedColorOriginal);
|
||||
}
|
||||
|
||||
protected void closeWindow() {
|
||||
|
||||
@@ -186,7 +186,7 @@ public class CreateUpdateTypeLayout extends AbstractCreateUpdateTagLayout {
|
||||
createDynamicStyleForComponents(tagName, typeKey, tagDesc, colorPickedPreview);
|
||||
getColorPickerLayout().getColorSelect().setColor(getColorPickerLayout().getSelPreview().getColor());
|
||||
}
|
||||
window.checkColorChange(colorPickerLayout.getSelectedColor(), selectedColorOriginal);
|
||||
window.checkColorChange(colorPickerLayout.getId(), colorPickerLayout.getSelectedColor(), selectedColorOriginal);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -206,6 +206,7 @@ public class CreateUpdateTypeLayout extends AbstractCreateUpdateTagLayout {
|
||||
protected void createOptionGroup(final boolean hasCreatePermission, final boolean hasUpdatePermission) {
|
||||
|
||||
optiongroup = new OptionGroup("Select Action");
|
||||
optiongroup.setId(SPUIComponentIdProvider.OPTION_GROUP);
|
||||
optiongroup.addStyleName(ValoTheme.OPTIONGROUP_SMALL);
|
||||
optiongroup.addStyleName("custom-option-group");
|
||||
optiongroup.setNullSelectionAllowed(false);
|
||||
|
||||
@@ -179,11 +179,15 @@ public class DistributionAddUpdateWindowLayout extends CustomComponent {
|
||||
}
|
||||
|
||||
private void listenerDistNameTextFieldChanged(final TextChangeEvent event) {
|
||||
window.checkMandatoryTextField(event, distNameTextField);
|
||||
if (!editDistribution) {
|
||||
window.checkMandatoryTextField(event, distNameTextField);
|
||||
}
|
||||
}
|
||||
|
||||
private void listenerDistVersionTextFieldChanged(final TextChangeEvent event) {
|
||||
window.checkMandatoryTextField(event, distVersionTextField);
|
||||
if (!editDistribution) {
|
||||
window.checkMandatoryTextField(event, distVersionTextField);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -410,7 +414,7 @@ public class DistributionAddUpdateWindowLayout extends CustomComponent {
|
||||
changedComponents.clear();
|
||||
|
||||
if (window != null) {
|
||||
window.resetRequiredFieldsValues();
|
||||
window.resetMandatoryAndEditedFields();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -519,9 +523,8 @@ public class DistributionAddUpdateWindowLayout extends CustomComponent {
|
||||
resetComponents();
|
||||
window = SPUIComponentProvider.getWindow(i18n.get("caption.add.new.dist"), null,
|
||||
SPUIDefinitions.CREATE_UPDATE_WINDOW, this, event -> saveDistribution(), event -> discardDistribution(),
|
||||
null, getMandatoryFields());
|
||||
null, getMandatoryFields(), null);
|
||||
window.getButtonsLayout().removeStyleName("actionButtonsMargin");
|
||||
|
||||
return window;
|
||||
}
|
||||
|
||||
|
||||
@@ -17,6 +17,7 @@ import javax.annotation.PostConstruct;
|
||||
import org.eclipse.hawkbit.repository.model.Action.ActionType;
|
||||
import org.eclipse.hawkbit.ui.utils.I18N;
|
||||
import org.eclipse.hawkbit.ui.utils.SPDateTimeUtil;
|
||||
import org.eclipse.hawkbit.ui.utils.SPUIComponentIdProvider;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.vaadin.hene.flexibleoptiongroup.FlexibleOptionGroup;
|
||||
import org.vaadin.hene.flexibleoptiongroup.FlexibleOptionGroupItemComponent;
|
||||
@@ -78,6 +79,7 @@ public class ActionTypeOptionGroupLayout extends HorizontalLayout {
|
||||
|
||||
private void createOptionGroup() {
|
||||
actionTypeOptionGroup = new FlexibleOptionGroup();
|
||||
actionTypeOptionGroup.setId(SPUIComponentIdProvider.ROLLOUT_ACTION_BUTTON_ID);
|
||||
actionTypeOptionGroup.addItem(ActionTypeOption.SOFT);
|
||||
actionTypeOptionGroup.addItem(ActionTypeOption.FORCED);
|
||||
actionTypeOptionGroup.addItem(ActionTypeOption.AUTO_FORCED);
|
||||
|
||||
@@ -244,7 +244,7 @@ public class TargetAddUpdateWindowLayout extends CustomComponent {
|
||||
public Window getWindow() {
|
||||
eventBus.publish(this, DragEvent.HIDE_DROP_HINT);
|
||||
window = SPUIComponentProvider.getWindow(i18n.get("caption.add.new.target"), null,
|
||||
SPUIDefinitions.CREATE_UPDATE_WINDOW, this, event -> saveTargetListner(), event -> discardTargetListner(), null, getMandatoryFields());
|
||||
SPUIDefinitions.CREATE_UPDATE_WINDOW, this, event -> saveTargetListner(), event -> discardTargetListner(), null, getMandatoryFields(), null);
|
||||
return window;
|
||||
}
|
||||
|
||||
@@ -259,7 +259,7 @@ public class TargetAddUpdateWindowLayout extends CustomComponent {
|
||||
}
|
||||
return requiredFields;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* clear all fields of Target Edit Window.
|
||||
*/
|
||||
@@ -274,7 +274,7 @@ public class TargetAddUpdateWindowLayout extends CustomComponent {
|
||||
editTarget = Boolean.FALSE;
|
||||
|
||||
if (window != null) {
|
||||
window.resetRequiredFieldsValues();
|
||||
window.resetMandatoryAndEditedFields();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -150,26 +150,47 @@ public class AddUpdateRolloutWindowLayout extends GridLayout {
|
||||
|
||||
private TextArea targetFilterQuery;
|
||||
|
||||
private Boolean updateMode = Boolean.FALSE;
|
||||
|
||||
private String distributionSetOriginal;
|
||||
|
||||
private Object actionGroupOriginal;
|
||||
|
||||
private String rolloutNameOriginal;
|
||||
|
||||
private String errorThresholdOriginal;;
|
||||
|
||||
private String triggerThresholdOriginal;
|
||||
|
||||
private String descriptionOriginal;
|
||||
|
||||
/**
|
||||
* Create components and layout.
|
||||
*/
|
||||
public void init() {
|
||||
|
||||
setSizeUndefined();
|
||||
createRequiredComponents();
|
||||
buildLayout();
|
||||
}
|
||||
|
||||
public CommonDialogWindow getWindow() {
|
||||
|
||||
window = SPUIComponentProvider.getWindow(i18n.get("caption.configure.rollout"), null,
|
||||
SPUIDefinitions.CREATE_UPDATE_WINDOW, this, event -> onRolloutSave(), event -> onDiscard(),
|
||||
uiProperties.getLinks().getDocumentation().getRolloutView(), getMandatoryFields());
|
||||
uiProperties.getLinks().getDocumentation().getRolloutView(), getMandatoryFields(), getEditedFields());
|
||||
return window;
|
||||
}
|
||||
|
||||
private Map<String, Boolean> getMandatoryFields() {
|
||||
public CommonDialogWindow createUpdateWindow() {
|
||||
updateMode = Boolean.TRUE;
|
||||
return getWindow();
|
||||
}
|
||||
|
||||
public CommonDialogWindow createAddWindow() {
|
||||
updateMode = Boolean.FALSE;
|
||||
return getWindow();
|
||||
}
|
||||
|
||||
private Map<String, Boolean> getMandatoryFields() {
|
||||
final Map<String, Boolean> requiredFields = new HashMap<>();
|
||||
requiredFields.put(rolloutName.getId(), null);
|
||||
requiredFields.put(distributionSet.getId(), null);
|
||||
@@ -195,16 +216,14 @@ public class AddUpdateRolloutWindowLayout extends GridLayout {
|
||||
setDefaultSaveStartGroupOption();
|
||||
totalTargetsLabel.setVisible(false);
|
||||
groupSizeLabel.setVisible(false);
|
||||
removeComponent(targetFilterQuery);
|
||||
if (getComponent(1, 3) == null) {
|
||||
addComponent(targetFilterQueryCombo, 1, 3);
|
||||
}
|
||||
removeComponent(1, 2);
|
||||
addComponent(targetFilterQueryCombo, 1, 2);
|
||||
actionTypeOptionGroupLayout.selectDefaultOption();
|
||||
totalTargetsCount = 0L;
|
||||
rolloutForEdit = null;
|
||||
|
||||
if (window != null) {
|
||||
window.resetRequiredFieldsValues();
|
||||
window.resetMandatoryAndEditedFields();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -284,7 +303,7 @@ public class AddUpdateRolloutWindowLayout extends GridLayout {
|
||||
|
||||
noOfGroups = createNoOfGroupsField();
|
||||
groupSizeLabel = createGroupSizeLabel();
|
||||
triggerThreshold = createTriggerThresold();
|
||||
triggerThreshold = createTriggerThreshold();
|
||||
errorThreshold = createErrorThreshold();
|
||||
description = createDescription();
|
||||
errorThresholdOptionGroup = createErrorThresholdOptionGroup();
|
||||
@@ -293,6 +312,20 @@ public class AddUpdateRolloutWindowLayout extends GridLayout {
|
||||
totalTargetsLabel = createTotalTargetsLabel();
|
||||
targetFilterQuery = createTargetFilterQuery();
|
||||
actionTypeOptionGroupLayout.addStyleName(SPUIStyleDefinitions.ROLLOUT_ACTION_TYPE_LAYOUT);
|
||||
actionTypeOptionGroupLayout.getActionTypeOptionGroup()
|
||||
.addValueChangeListener(this::listenerActionGroupValueChanged);
|
||||
}
|
||||
|
||||
private void listenerActionGroupValueChanged(final ValueChangeEvent event) {
|
||||
if (window != null) {
|
||||
if (!updateMode) {
|
||||
window.checkMandatoryComboBox(event, actionTypeOptionGroupLayout.getActionTypeOptionGroup());
|
||||
}
|
||||
if (event.getProperty().getValue() != null) {
|
||||
window.checkChanges(actionTypeOptionGroupLayout.getActionTypeOptionGroup().getId(),
|
||||
event.getProperty().getValue().toString(), actionGroupOriginal.toString());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private Label createGroupSizeLabel() {
|
||||
@@ -578,9 +611,20 @@ public class AddUpdateRolloutWindowLayout extends GridLayout {
|
||||
descriptionField.setId(SPUIComponentIdProvider.ROLLOUT_DESCRIPTION_ID);
|
||||
descriptionField.setNullRepresentation(HawkbitCommonUtil.SP_STRING_EMPTY);
|
||||
descriptionField.setSizeUndefined();
|
||||
descriptionField.addTextChangeListener(this::listenerDescriptionTextFieldChanged);
|
||||
return descriptionField;
|
||||
}
|
||||
|
||||
private void listenerDescriptionTextFieldChanged(final TextChangeEvent event) {
|
||||
if (window != null) {
|
||||
if (!updateMode) {
|
||||
window.checkMandatoryTextField(event, description);
|
||||
return;
|
||||
}
|
||||
window.checkChanges(description.getId(), event.getText(), descriptionOriginal);
|
||||
}
|
||||
}
|
||||
|
||||
private TextField createErrorThreshold() {
|
||||
final TextField errorField = getTextfield("prompt.error.threshold");
|
||||
errorField.addValidator(new ThresholdFieldValidator());
|
||||
@@ -592,11 +636,16 @@ public class AddUpdateRolloutWindowLayout extends GridLayout {
|
||||
}
|
||||
|
||||
private void listenerErrorThresholdTextFieldChanged(final TextChangeEvent event) {
|
||||
|
||||
window.checkMandatoryTextField(event, errorThreshold);
|
||||
if (window != null) {
|
||||
if (!updateMode) {
|
||||
window.checkMandatoryTextField(event, errorThreshold);
|
||||
return;
|
||||
}
|
||||
window.checkChanges(errorThreshold.getId(), event.getText(), errorThresholdOriginal);
|
||||
}
|
||||
}
|
||||
|
||||
private TextField createTriggerThresold() {
|
||||
private TextField createTriggerThreshold() {
|
||||
final TextField thresholdField = getTextfield("prompt.tigger.threshold");
|
||||
thresholdField.setId(SPUIComponentIdProvider.ROLLOUT_TRIGGER_THRESOLD_ID);
|
||||
thresholdField.addValidator(new ThresholdFieldValidator());
|
||||
@@ -607,7 +656,13 @@ public class AddUpdateRolloutWindowLayout extends GridLayout {
|
||||
}
|
||||
|
||||
private void listenerTriggerThresholdTextFieldChanged(final TextChangeEvent event) {
|
||||
window.checkMandatoryTextField(event, triggerThreshold);
|
||||
if (window != null) {
|
||||
if (!updateMode) {
|
||||
window.checkMandatoryTextField(event, triggerThreshold);
|
||||
return;
|
||||
}
|
||||
window.checkChanges(triggerThreshold.getId(), event.getText(), triggerThresholdOriginal);
|
||||
}
|
||||
}
|
||||
|
||||
private TextField createNoOfGroupsField() {
|
||||
@@ -622,7 +677,13 @@ public class AddUpdateRolloutWindowLayout extends GridLayout {
|
||||
}
|
||||
|
||||
private void listenerNoOfGroupsTextFieldChanged(final TextChangeEvent event) {
|
||||
window.checkMandatoryTextField(event, noOfGroups);
|
||||
if (window != null) {
|
||||
if (!updateMode) {
|
||||
window.checkMandatoryTextField(event, noOfGroups);
|
||||
return;
|
||||
}
|
||||
window.checkChanges(noOfGroups.getId(), event.getText(), noOfGroups.getValue());
|
||||
}
|
||||
}
|
||||
|
||||
private void onGroupNumberChange() {
|
||||
@@ -647,7 +708,16 @@ public class AddUpdateRolloutWindowLayout extends GridLayout {
|
||||
}
|
||||
|
||||
private void listenerDistributionSetChanged(final ValueChangeEvent event) {
|
||||
window.checkMandatoryComboBox(event, distributionSet);
|
||||
if (window != null) {
|
||||
if (!updateMode) {
|
||||
window.checkMandatoryComboBox(event, distributionSet);
|
||||
return;
|
||||
}
|
||||
if (event.getProperty().getValue() != null) {
|
||||
window.checkChanges(distributionSet.getId(), event.getProperty().getValue().toString(),
|
||||
distributionSetOriginal);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void populateDistributionSet() {
|
||||
@@ -673,7 +743,13 @@ public class AddUpdateRolloutWindowLayout extends GridLayout {
|
||||
}
|
||||
|
||||
private void listenerRolloutNameTextFieldChanged(final TextChangeEvent event) {
|
||||
window.checkMandatoryTextField(event, rolloutName);
|
||||
if (window != null) {
|
||||
if (!updateMode) {
|
||||
window.checkMandatoryTextField(event, rolloutName);
|
||||
return;
|
||||
}
|
||||
window.checkChanges(rolloutName.getId(), event.getText(), rolloutNameOriginal);
|
||||
}
|
||||
}
|
||||
|
||||
private String getRolloutName() {
|
||||
@@ -691,7 +767,8 @@ public class AddUpdateRolloutWindowLayout extends GridLayout {
|
||||
public void validate(final Object value) {
|
||||
try {
|
||||
if (HawkbitCommonUtil.trimAndNullIfEmpty(noOfGroups.getValue()) == null
|
||||
|| HawkbitCommonUtil.trimAndNullIfEmpty((String) targetFilterQueryCombo.getValue()) == null) {
|
||||
|| (HawkbitCommonUtil.trimAndNullIfEmpty((String) targetFilterQueryCombo.getValue()) == null
|
||||
&& targetFilterQuery.getValue() == null)) {
|
||||
uiNotification
|
||||
.displayValidationError(i18n.get("message.rollout.noofgroups.or.targetfilter.missing"));
|
||||
} else {
|
||||
@@ -781,12 +858,42 @@ public class AddUpdateRolloutWindowLayout extends GridLayout {
|
||||
|
||||
noOfGroups.setEnabled(false);
|
||||
targetFilterQuery.setValue(rolloutForEdit.getTargetFilterQuery());
|
||||
removeComponent(targetFilterQueryCombo);
|
||||
addComponent(targetFilterQuery, 1, 3);
|
||||
removeComponent(1, 2);
|
||||
addComponent(targetFilterQuery, 1, 2);
|
||||
|
||||
totalTargetsCount = targetManagement.countTargetByTargetFilterQuery(rolloutForEdit.getTargetFilterQuery());
|
||||
totalTargetsLabel.setValue(getTotalTargetMessage());
|
||||
totalTargetsLabel.setVisible(true);
|
||||
|
||||
setOriginalValues();
|
||||
}
|
||||
|
||||
private void setOriginalValues() {
|
||||
distributionSetOriginal = distributionSet.getValue().toString();
|
||||
actionGroupOriginal = actionTypeOptionGroupLayout.getActionTypeOptionGroup().getValue();
|
||||
rolloutNameOriginal = rolloutName.getValue();
|
||||
triggerThresholdOriginal = triggerThreshold.getValue();
|
||||
errorThresholdOriginal = errorThreshold.getValue();
|
||||
descriptionOriginal = description.getValue();
|
||||
}
|
||||
|
||||
private Map<String, Boolean> getEditedFields() {
|
||||
final Map<String, Boolean> changeMap = new HashMap<>();
|
||||
if (rolloutForEdit == null) {
|
||||
return changeMap;
|
||||
}
|
||||
if (rolloutForEdit.getStatus() != RolloutStatus.READY) {
|
||||
changeMap.put(rolloutName.getId(), Boolean.FALSE);
|
||||
changeMap.put(description.getId(), Boolean.FALSE);
|
||||
} else {
|
||||
changeMap.put(rolloutName.getId(), Boolean.FALSE);
|
||||
changeMap.put(distributionSet.getId(), Boolean.FALSE);
|
||||
changeMap.put(triggerThreshold.getId(), Boolean.FALSE);
|
||||
changeMap.put(errorThreshold.getId(), Boolean.FALSE);
|
||||
changeMap.put(description.getId(), Boolean.FALSE);
|
||||
changeMap.put(actionTypeOptionGroupLayout.getActionTypeOptionGroup().getId(), Boolean.FALSE);
|
||||
}
|
||||
return changeMap;
|
||||
}
|
||||
|
||||
private void disableRequiredFieldsOnEdit() {
|
||||
@@ -852,7 +959,6 @@ public class AddUpdateRolloutWindowLayout extends GridLayout {
|
||||
public String getValue() {
|
||||
return value;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
enum ERRORTHRESOLDOPTIONS {
|
||||
@@ -870,6 +976,6 @@ public class AddUpdateRolloutWindowLayout extends GridLayout {
|
||||
public String getValue() {
|
||||
return value;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -28,6 +28,7 @@ import org.eclipse.hawkbit.repository.model.Rollout;
|
||||
import org.eclipse.hawkbit.repository.model.Rollout.RolloutStatus;
|
||||
import org.eclipse.hawkbit.repository.model.SoftwareModule;
|
||||
import org.eclipse.hawkbit.repository.model.TotalTargetCountStatus;
|
||||
import org.eclipse.hawkbit.ui.common.CommonDialogWindow;
|
||||
import org.eclipse.hawkbit.ui.common.grid.AbstractGrid;
|
||||
import org.eclipse.hawkbit.ui.customrenderers.client.renderers.RolloutRendererData;
|
||||
import org.eclipse.hawkbit.ui.customrenderers.renderers.HtmlButtonRenderer;
|
||||
@@ -62,7 +63,6 @@ import com.vaadin.server.FontAwesome;
|
||||
import com.vaadin.spring.annotation.SpringComponent;
|
||||
import com.vaadin.spring.annotation.ViewScope;
|
||||
import com.vaadin.ui.UI;
|
||||
import com.vaadin.ui.Window;
|
||||
import com.vaadin.ui.renderers.ClickableRenderer.RendererClickEvent;
|
||||
import com.vaadin.ui.renderers.HtmlRenderer;
|
||||
|
||||
@@ -438,7 +438,7 @@ public class RolloutListGrid extends AbstractGrid {
|
||||
|
||||
private void onUpdate(final ContextMenuData contextMenuData) {
|
||||
addUpdateRolloutWindow.populateData(contextMenuData.getRolloutId());
|
||||
final Window addTargetWindow = addUpdateRolloutWindow.getWindow();
|
||||
final CommonDialogWindow addTargetWindow = addUpdateRolloutWindow.createUpdateWindow();
|
||||
addTargetWindow.setCaption(i18n.get("caption.update.rollout"));
|
||||
UI.getCurrent().addWindow(addTargetWindow);
|
||||
addTargetWindow.setVisible(Boolean.TRUE);
|
||||
|
||||
@@ -92,7 +92,7 @@ public class RolloutListHeader extends AbstractGridHeader {
|
||||
@Override
|
||||
protected void addNewItem(final ClickEvent event) {
|
||||
addUpdateRolloutWindow.resetComponents();
|
||||
final Window addTargetWindow = addUpdateRolloutWindow.getWindow();
|
||||
final Window addTargetWindow = addUpdateRolloutWindow.createAddWindow();
|
||||
UI.getCurrent().addWindow(addTargetWindow);
|
||||
addTargetWindow.setVisible(Boolean.TRUE);
|
||||
|
||||
|
||||
@@ -468,10 +468,10 @@ rollout.group.label.target.truncated = {0} targets has been truncated in the lis
|
||||
prompt.number.of.groups = Number of groups
|
||||
prompt.tigger.threshold = Trigger threshold
|
||||
prompt.error.threshold = Error threshold
|
||||
prompt.distribution.set = Distribution set
|
||||
prompt.distribution.set = Distribution Set
|
||||
caption.configure.rollout = Configure Rollout
|
||||
caption.update.rollout = Update Rollout
|
||||
prompt.target.filter = Custom target filter
|
||||
prompt.target.filter = Custom Target Filter
|
||||
message.rollout.nonzero.group.number = Number of groups must be greater than zero
|
||||
message.rollout.max.group.number = Number of groups must not be greater than 500
|
||||
message.rollout.duplicate.check = Rollout [ {0} ] must be unique, entered value already exists.
|
||||
|
||||
@@ -436,7 +436,7 @@ header.rolloutgroup.target.message = Messages
|
||||
|
||||
rollout.group.label.target.truncated = {0} targets has been truncated in the list due the target size limit of {1}
|
||||
|
||||
distribution.details.header = Distribution set
|
||||
distribution.details.header = Distribution Set
|
||||
target.details.header = Target
|
||||
header.caption.mandatory = Mandatory
|
||||
header.caption.typename = SoftwareModuleType
|
||||
@@ -461,7 +461,7 @@ prompt.error.threshold = Error threshold
|
||||
prompt.distribution.set = Distribution Set
|
||||
caption.configure.rollout = Configure Rollout
|
||||
caption.update.rollout = Update Rollout
|
||||
prompt.target.filter = Custom target filter
|
||||
prompt.target.filter = Custom Target Filter
|
||||
message.rollout.nonzero.group.number = Number of groups must be greater than zero
|
||||
message.rollout.max.group.number = Number of groups must not be greater than 500
|
||||
message.rollout.duplicate.check = Rollout [ {0} ] must be unique, entered value already exists.
|
||||
|
||||
@@ -448,10 +448,10 @@ menu.title = Software Provisioning
|
||||
prompt.number.of.groups = Number of groups
|
||||
prompt.tigger.threshold = Trigger threshold
|
||||
prompt.error.threshold = Error threshold
|
||||
prompt.distribution.set = Distribution set
|
||||
prompt.distribution.set = Distribution Set
|
||||
caption.configure.rollout = Configure Rollout
|
||||
caption.update.rollout = Update Rollout
|
||||
prompt.target.filter = Custom target filter
|
||||
prompt.target.filter = Custom Target Filter
|
||||
message.rollout.nonzero.group.number = Number of groups must be greater than zero
|
||||
message.rollout.max.group.number = Number of groups must not be greater than 500
|
||||
message.rollout.duplicate.check = Rollout [ {0} ] must be unique, entered value already exists.
|
||||
|
||||
Reference in New Issue
Block a user