-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Confirm experimental group deletion with the user when editing experi…
…mental variables (#334) * clean up code * add double-check confirmation dialog * address inspection warning * extract confirm dialog into new method * Fix typo Co-authored-by: Steffengreiner <[email protected]> * Fix switched JavaDocs Co-authored-by: steffengreiner <[email protected]> --------- Co-authored-by: Steffengreiner <[email protected]>
- Loading branch information
1 parent
db2c46e
commit 4c6710d
Showing
5 changed files
with
230 additions
and
166 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
19 changes: 19 additions & 0 deletions
19
...views/projects/project/experiments/experiment/components/ExperimentalVariableContent.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,19 @@ | ||
package life.qbic.datamanager.views.projects.project.experiments.experiment.components; | ||
|
||
import java.util.List; | ||
|
||
/** | ||
* @param name the name of the variable | ||
* @param unit the unit of the variable levels | ||
* @param levels the variable levels that are assigned to the variable | ||
*/ | ||
public record ExperimentalVariableContent(String name, String unit, List<String> levels) { | ||
|
||
static ExperimentalVariableContent from(final ExperimentalVariableRowLayout layout) { | ||
final String variableName = layout.getVariableName(); | ||
final String unit = layout.getUnit(); | ||
final List<String> levels = layout.getLevels(); | ||
return new ExperimentalVariableContent(variableName, unit, levels); | ||
} | ||
|
||
} |
91 changes: 91 additions & 0 deletions
91
...ews/projects/project/experiments/experiment/components/ExperimentalVariableRowLayout.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,91 @@ | ||
package life.qbic.datamanager.views.projects.project.experiments.experiment.components; | ||
|
||
import com.vaadin.flow.component.formlayout.FormLayout; | ||
import com.vaadin.flow.component.html.Span; | ||
import com.vaadin.flow.component.icon.Icon; | ||
import com.vaadin.flow.component.icon.VaadinIcon; | ||
import com.vaadin.flow.component.textfield.TextArea; | ||
import com.vaadin.flow.component.textfield.TextField; | ||
import com.vaadin.flow.shared.Registration; | ||
import java.io.Serial; | ||
import java.util.List; | ||
import java.util.Objects; | ||
import java.util.function.Consumer; | ||
import java.util.stream.Collectors; | ||
import life.qbic.projectmanagement.domain.project.experiment.ExperimentalVariable; | ||
|
||
/** | ||
* A layout containing rows for experimental variable input | ||
*/ | ||
final class ExperimentalVariableRowLayout extends Span { | ||
|
||
@Serial | ||
private static final long serialVersionUID = -1126299161780107501L; | ||
private final TextField nameField = new TextField("Experimental Variable"); | ||
private final TextField unitField = new TextField("Unit"); | ||
private final TextArea levelArea = new TextArea("Levels"); | ||
private final Icon deleteIcon = new Icon(VaadinIcon.CLOSE_SMALL); | ||
private Registration clickListener; | ||
|
||
ExperimentalVariableRowLayout() { | ||
init(); | ||
} | ||
|
||
static ExperimentalVariableRowLayout from( | ||
final ExperimentalVariable experimentalVariable) { | ||
final ExperimentalVariableRowLayout rowLayout = new ExperimentalVariableRowLayout(); | ||
rowLayout.nameField.setValue(experimentalVariable.name().value()); | ||
rowLayout.unitField.setValue( | ||
experimentalVariable.levels().get(0).experimentalValue().unit().orElse("")); | ||
rowLayout.levelArea.setValue( | ||
experimentalVariable.levels().stream().map(it -> it.experimentalValue().value()) | ||
.collect(Collectors.joining("\n"))); | ||
return rowLayout; | ||
} | ||
|
||
private void init() { | ||
addClassName("row"); | ||
FormLayout experimentalVariableFieldsLayout = new FormLayout(); | ||
experimentalVariableFieldsLayout.add(nameField, unitField, levelArea); | ||
experimentalVariableFieldsLayout.setResponsiveSteps(new FormLayout.ResponsiveStep("0", 3)); | ||
nameField.setRequired(true); | ||
levelArea.setRequired(true); | ||
add(experimentalVariableFieldsLayout, deleteIcon); | ||
} | ||
|
||
public String getVariableName() { | ||
return nameField.getValue(); | ||
} | ||
|
||
public String getUnit() { | ||
return unitField.getValue(); | ||
} | ||
|
||
public List<String> getLevels() { | ||
return levelArea.getValue().lines().filter(it -> !it.isBlank()).toList(); | ||
} | ||
|
||
public void setCloseListener( | ||
Consumer<CloseEvent> closeListener) { | ||
if (Objects.nonNull(clickListener)) { | ||
clickListener.remove(); | ||
} | ||
clickListener = deleteIcon.addClickListener(it -> closeListener.accept( | ||
new CloseEvent(this))); | ||
} | ||
|
||
public boolean isValid() { | ||
boolean isNameFieldValid = !nameField.isInvalid() && !nameField.isEmpty(); | ||
boolean isLevelFieldValid = !levelArea.isInvalid() && !levelArea.isEmpty(); | ||
return isNameFieldValid && isLevelFieldValid; | ||
} | ||
|
||
public boolean isEmpty() { | ||
return nameField.isEmpty() && unitField.isEmpty() && levelArea.isEmpty(); | ||
} | ||
|
||
public record CloseEvent(ExperimentalVariableRowLayout origin) { | ||
|
||
} | ||
|
||
} |
Oops, something went wrong.