From 6dba58126aeeae8464f21f58832a0f4ec68c15fc Mon Sep 17 00:00:00 2001 From: ScarletRedMan Date: Wed, 28 Feb 2024 11:07:03 +0700 Subject: [PATCH] Added checkboxes for Persist field --- .../picker/cp/component/RegisterNode.java | 16 ++++++++++++---- .../picker/cp/component/RegisterRoom.java | 14 +++++++++++--- .../picker/cp/page/NodeDetailsPage.java | 4 ++-- .../ru/dragonestia/picker/cp/page/NodesPage.java | 4 ++-- .../cp/repository/impl/NodeRepositoryImpl.java | 3 ++- .../cp/repository/impl/RoomRepositoryImpl.java | 3 ++- 6 files changed, 31 insertions(+), 13 deletions(-) diff --git a/control-panel/src/main/java/ru/dragonestia/picker/cp/component/RegisterNode.java b/control-panel/src/main/java/ru/dragonestia/picker/cp/component/RegisterNode.java index bbcdf78..a8e8b17 100644 --- a/control-panel/src/main/java/ru/dragonestia/picker/cp/component/RegisterNode.java +++ b/control-panel/src/main/java/ru/dragonestia/picker/cp/component/RegisterNode.java @@ -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 onSubmit; + private final BiFunction onSubmit; private final TextField identifierField; private final RadioButtonGroup modeRadio; + private final Checkbox persistField; - public RegisterNode(Function onSubmit) { + public RegisterNode(BiFunction 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()); diff --git a/control-panel/src/main/java/ru/dragonestia/picker/cp/component/RegisterRoom.java b/control-panel/src/main/java/ru/dragonestia/picker/cp/component/RegisterRoom.java index ef6149a..f09695d 100644 --- a/control-panel/src/main/java/ru/dragonestia/picker/cp/component/RegisterRoom.java +++ b/control-panel/src/main/java/ru/dragonestia/picker/cp/component/RegisterRoom.java @@ -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 onSubmit; + private final BiFunction onSubmit; private final TextField identifierField; private final TextArea payloadField; private final Checkbox lockedField; + private final Checkbox persistField; - public RegisterRoom(RNode node, Function onSubmit) { + public RegisterRoom(RNode node, BiFunction 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()); diff --git a/control-panel/src/main/java/ru/dragonestia/picker/cp/page/NodeDetailsPage.java b/control-panel/src/main/java/ru/dragonestia/picker/cp/page/NodeDetailsPage.java index 7aada3b..75505cb 100644 --- a/control-panel/src/main/java/ru/dragonestia/picker/cp/page/NodeDetailsPage.java +++ b/control-panel/src/main/java/ru/dragonestia/picker/cp/page/NodeDetailsPage.java @@ -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()); diff --git a/control-panel/src/main/java/ru/dragonestia/picker/cp/page/NodesPage.java b/control-panel/src/main/java/ru/dragonestia/picker/cp/page/NodesPage.java index 3a03af5..e4a5e91 100644 --- a/control-panel/src/main/java/ru/dragonestia/picker/cp/page/NodesPage.java +++ b/control-panel/src/main/java/ru/dragonestia/picker/cp/page/NodesPage.java @@ -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()); diff --git a/control-panel/src/main/java/ru/dragonestia/picker/cp/repository/impl/NodeRepositoryImpl.java b/control-panel/src/main/java/ru/dragonestia/picker/cp/repository/impl/NodeRepositoryImpl.java index 29390e6..dab1594 100644 --- a/control-panel/src/main/java/ru/dragonestia/picker/cp/repository/impl/NodeRepositoryImpl.java +++ b/control-panel/src/main/java/ru/dragonestia/picker/cp/repository/impl/NodeRepositoryImpl.java @@ -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)); }); } diff --git a/control-panel/src/main/java/ru/dragonestia/picker/cp/repository/impl/RoomRepositoryImpl.java b/control-panel/src/main/java/ru/dragonestia/picker/cp/repository/impl/RoomRepositoryImpl.java index 51287d8..21a823a 100644 --- a/control-panel/src/main/java/ru/dragonestia/picker/cp/repository/impl/RoomRepositoryImpl.java +++ b/control-panel/src/main/java/ru/dragonestia/picker/cp/repository/impl/RoomRepositoryImpl.java @@ -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)); }); }