Added checkboxes for Persist field
This commit is contained in:
parent
d00eaa0a7d
commit
6dba58126a
@ -4,6 +4,7 @@ import com.vaadin.flow.component.Component;
|
||||
import com.vaadin.flow.component.Unit;
|
||||
import com.vaadin.flow.component.button.Button;
|
||||
import com.vaadin.flow.component.button.ButtonVariant;
|
||||
import com.vaadin.flow.component.checkbox.Checkbox;
|
||||
import com.vaadin.flow.component.details.Details;
|
||||
import com.vaadin.flow.component.html.H2;
|
||||
import com.vaadin.flow.component.html.Span;
|
||||
@ -17,21 +18,23 @@ import org.springframework.lang.Nullable;
|
||||
import ru.dragonestia.picker.api.repository.response.type.RNode;
|
||||
import ru.dragonestia.picker.api.repository.response.type.type.PickingMode;
|
||||
|
||||
import java.util.function.Function;
|
||||
import java.util.function.BiFunction;
|
||||
|
||||
public class RegisterNode extends Details {
|
||||
|
||||
private final Function<RNode, Response> onSubmit;
|
||||
private final BiFunction<RNode, Boolean, Response> onSubmit;
|
||||
private final TextField identifierField;
|
||||
private final RadioButtonGroup<PickingMode> modeRadio;
|
||||
private final Checkbox persistField;
|
||||
|
||||
public RegisterNode(Function<RNode, Response> onSubmit) {
|
||||
public RegisterNode(BiFunction<RNode, Boolean, Response> onSubmit) {
|
||||
super(new H2("Register node"));
|
||||
this.onSubmit = onSubmit;
|
||||
|
||||
var layout = new VerticalLayout();
|
||||
layout.add(identifierField = createNodeIdentifierField());
|
||||
layout.add(modeRadio = createModeRadio());
|
||||
layout.add(persistField = createPersistField());
|
||||
layout.add(createSubmitButton());
|
||||
|
||||
add(layout);
|
||||
@ -49,6 +52,10 @@ public class RegisterNode extends Details {
|
||||
return field;
|
||||
}
|
||||
|
||||
private Checkbox createPersistField() {
|
||||
return new Checkbox("Persist", false);
|
||||
}
|
||||
|
||||
private Button createSubmitButton() {
|
||||
var button = new Button("Register");
|
||||
button.addThemeVariants(ButtonVariant.LUMO_PRIMARY);
|
||||
@ -70,6 +77,7 @@ public class RegisterNode extends Details {
|
||||
|
||||
public void clear() {
|
||||
identifierField.clear();
|
||||
persistField.setValue(false);
|
||||
}
|
||||
|
||||
private @Nullable String validateForm(String identifier) {
|
||||
@ -94,7 +102,7 @@ public class RegisterNode extends Details {
|
||||
}
|
||||
|
||||
var node = new RNode(nodeIdentifier, modeRadio.getValue());
|
||||
var response = onSubmit.apply(node);
|
||||
var response = onSubmit.apply(node, persistField.getValue());
|
||||
clear();
|
||||
if (response.error()) {
|
||||
Notifications.error(response.reason());
|
||||
|
||||
@ -14,17 +14,19 @@ import org.springframework.lang.Nullable;
|
||||
import ru.dragonestia.picker.api.repository.response.type.RNode;
|
||||
import ru.dragonestia.picker.api.repository.response.type.RRoom;
|
||||
|
||||
import java.util.function.BiFunction;
|
||||
import java.util.function.Function;
|
||||
|
||||
public class RegisterRoom extends Details {
|
||||
|
||||
private final RNode node;
|
||||
private final Function<RRoom, Response> onSubmit;
|
||||
private final BiFunction<RRoom, Boolean, Response> onSubmit;
|
||||
private final TextField identifierField;
|
||||
private final TextArea payloadField;
|
||||
private final Checkbox lockedField;
|
||||
private final Checkbox persistField;
|
||||
|
||||
public RegisterRoom(RNode node, Function<RRoom, Response> onSubmit) {
|
||||
public RegisterRoom(RNode node, BiFunction<RRoom, Boolean, Response> onSubmit) {
|
||||
super(new H2("Register room"));
|
||||
this.node = node;
|
||||
this.onSubmit = onSubmit;
|
||||
@ -34,6 +36,7 @@ public class RegisterRoom extends Details {
|
||||
layout.add(identifierField = createRoomIdentifierField());
|
||||
layout.add(payloadField = createPayloadField());
|
||||
layout.add(lockedField = createLockedField());
|
||||
layout.add(persistField = createPersistField());
|
||||
layout.add(createSubmitButton());
|
||||
|
||||
add(layout);
|
||||
@ -73,6 +76,10 @@ public class RegisterRoom extends Details {
|
||||
return field;
|
||||
}
|
||||
|
||||
private Checkbox createPersistField() {
|
||||
return new Checkbox("Persist", false);
|
||||
}
|
||||
|
||||
private Button createSubmitButton() {
|
||||
var button = new Button("Register");
|
||||
button.addThemeVariants(ButtonVariant.LUMO_PRIMARY);
|
||||
@ -84,6 +91,7 @@ public class RegisterRoom extends Details {
|
||||
identifierField.clear();
|
||||
payloadField.clear();
|
||||
lockedField.setValue(false);
|
||||
persistField.setValue(false);
|
||||
}
|
||||
|
||||
private @Nullable String validateForm(String identifier) {
|
||||
@ -109,7 +117,7 @@ public class RegisterRoom extends Details {
|
||||
|
||||
var room = new RRoom(nodeIdentifier, node, RRoom.INFINITE_SLOTS, payloadField.getValue());
|
||||
room.setLocked(lockedField.getValue());
|
||||
var response = onSubmit.apply(room);
|
||||
var response = onSubmit.apply(room, persistField.getValue());
|
||||
clear();
|
||||
if (response.error()) {
|
||||
Notifications.error(response.reason());
|
||||
|
||||
@ -43,9 +43,9 @@ public class NodeDetailsPage extends VerticalLayout implements BeforeEnterObserv
|
||||
add(NavPath.toNode(node.getId()));
|
||||
printNodeDetails(node);
|
||||
add(new Hr());
|
||||
add(registerRoom = new RegisterRoom(node, (room) -> {
|
||||
add(registerRoom = new RegisterRoom(node, (room, persist) -> {
|
||||
try {
|
||||
roomRepository.register(room);
|
||||
roomRepository.register(room, persist);
|
||||
return new RegisterRoom.Response(false, null);
|
||||
} catch (Error error) {
|
||||
return new RegisterRoom.Response(true, error.getMessage());
|
||||
|
||||
@ -38,9 +38,9 @@ public class NodesPage extends VerticalLayout {
|
||||
}
|
||||
|
||||
protected RegisterNode createRegisterNodeElement() {
|
||||
return new RegisterNode(node -> {
|
||||
return new RegisterNode((node, persist) -> {
|
||||
try {
|
||||
nodeRepository.register(node);
|
||||
nodeRepository.register(node, persist);
|
||||
return new RegisterNode.Response(false, "");
|
||||
} catch (ApiException ex) {
|
||||
return new RegisterNode.Response(true, ex.getMessage());
|
||||
|
||||
@ -25,10 +25,11 @@ public class NodeRepositoryImpl implements NodeRepository {
|
||||
private final RestUtil rest;
|
||||
|
||||
@Override
|
||||
public void register(RNode node) throws InvalidNodeIdentifierException, NodeAlreadyExistException {
|
||||
public void register(RNode node, boolean persist) throws InvalidNodeIdentifierException, NodeAlreadyExistException {
|
||||
rest.query("nodes", HttpMethod.POST, params -> {
|
||||
params.put("nodeId", node.getId());
|
||||
params.put("method", node.getMode().name());
|
||||
params.put("persist", Boolean.toString(persist));
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@ -27,12 +27,13 @@ public class RoomRepositoryImpl implements RoomRepository {
|
||||
private final RestUtil rest;
|
||||
|
||||
@Override
|
||||
public void register(RRoom room) throws NodeNotFoundException, InvalidRoomIdentifierException, RoomAlreadyExistException {
|
||||
public void register(RRoom room, boolean persist) throws NodeNotFoundException, InvalidRoomIdentifierException, RoomAlreadyExistException {
|
||||
rest.query("/nodes/" + room.getNodeId() + "/rooms", HttpMethod.POST, params -> {
|
||||
params.put("roomId", room.getId());
|
||||
params.put("slots", Integer.toString(room.getSlots()));
|
||||
params.put("payload", room.getPayload());
|
||||
params.put("locked", Boolean.toString(room.isLocked()));
|
||||
params.put("persist", Boolean.toString(persist));
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user