Skip to content

Commit 5188a22

Browse files
SteffengreinerSteffengreiner
authored andcommitted
Overhaul to new UI draft from SP while taking into account all edge cases introduced
1 parent 29aeb7d commit 5188a22

3 files changed

Lines changed: 229 additions & 137 deletions

File tree

user-interface/src/main/java/life/qbic/datamanager/views/general/contact/BoundContactField.java

Lines changed: 17 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
package life.qbic.datamanager.views.general.contact;
22

3-
import com.vaadin.flow.component.textfield.TextField;
43
import com.vaadin.flow.data.binder.Binder;
54
import com.vaadin.flow.data.binder.ValidationException;
65
import com.vaadin.flow.data.validator.EmailValidator;
6+
import com.vaadin.flow.data.validator.StringLengthValidator;
77
import com.vaadin.flow.function.SerializablePredicate;
88
import java.util.Objects;
99
import life.qbic.datamanager.views.general.HasBoundField;
@@ -35,12 +35,6 @@ private BoundContactField(ContactField contactField,
3535

3636
private static void updateStatus(ContactField contactField, boolean isInvalid) {
3737
contactField.getElement().setProperty("invalid", isInvalid);
38-
updateStatus(contactField.getEmailTextField(), isInvalid);
39-
updateStatus(contactField.getFullNameTextField(), isInvalid);
40-
}
41-
42-
private static void updateStatus(TextField textField, boolean isInvalid) {
43-
textField.setInvalid(isInvalid);
4438
}
4539

4640
/**
@@ -102,14 +96,15 @@ private static Binder<ContactContainer> createBinder(SerializablePredicate<Conta
10296
ContactField contactField) {
10397
Binder<ContactContainer> binder = new Binder<>(ContactContainer.class);
10498
binder.setBean(new ContactContainer());
105-
binder.forField(contactField).withValidator(predicate, "There is still information missing")
99+
binder.forField(contactField).withValidator(predicate, "Please specify a valid contact")
106100
.bind(ContactContainer::getContact, ContactContainer::setContact);
107-
binder.forField(contactField.getEmailTextField()).withValidator(
108-
new EmailValidator("Please provide a valid email address, e.g. my.name@example.com", true))
101+
binder.forField(contactField.email()).withValidator(
102+
new EmailValidator("Please provide a valid email address, e.g. my.name@example.com", false))
109103
.bind(ContactContainer::getEmail, ContactContainer::setEmail);
110-
binder.forField(contactField.getFullNameTextField())
104+
binder.forField(contactField.fullName()).withValidator(
105+
new StringLengthValidator("Please provide the full name of the contact", 2, null))
111106
.bind(ContactContainer::getFullName, ContactContainer::setFullName);
112-
binder.forField(contactField.getOidcSelection())
107+
binder.forField(contactField.oidcSelection())
113108
.bind(ContactContainer::getOidcSelection, ContactContainer::setOidcSelection);
114109
return binder;
115110
}
@@ -187,20 +182,22 @@ public void setFullName(String fullName) {
187182
}
188183

189184
public OrcidEntry getOidcSelection() {
185+
//We only want to show contact information within the orcid selection combobox if it's originated from the orcidRepository
186+
if (contact.oidc().isEmpty() || contact.oidcIssuer().isEmpty()) {
187+
return null;
188+
}
190189
return new OrcidEntry(contact.fullName(), contact.email(), contact.oidc(),
191190
contact.oidcIssuer());
192191
}
193192

194193
public void setOidcSelection(OrcidEntry oidcSelection) {
195-
if (contact != null) {
196-
if (oidcSelection != null) {
197-
contact.setOidc(oidcSelection.oidc());
198-
contact.setOidcIssuer(oidcSelection.oidcIssuer());
199-
} else {
200-
contact.setOidcIssuer("");
201-
contact.setOidc("");
202-
}
194+
if (oidcSelection == null) {
195+
return;
203196
}
197+
contact.setFullName(oidcSelection.fullName());
198+
contact.setEmail(oidcSelection.emailAddress());
199+
contact.setOidc(oidcSelection.oidc());
200+
contact.setOidcIssuer(oidcSelection.oidcIssuer());
204201
}
205202
}
206203
}

0 commit comments

Comments
 (0)