From 8220fdc698fc73b7edeaaf6916eaa2862f222d7d Mon Sep 17 00:00:00 2001 From: ScarletRedMan Date: Mon, 20 Nov 2023 09:42:03 +0700 Subject: [PATCH] Added buckets page --- .../web/component/BucketList.java | 2 +- .../loadbalancer/web/page/BucketsPage.java | 53 +++++++++++++++++++ 2 files changed, 54 insertions(+), 1 deletion(-) create mode 100644 LoadBalancerWeb/src/main/java/ru/dragonestia/loadbalancer/web/page/BucketsPage.java diff --git a/LoadBalancerWeb/src/main/java/ru/dragonestia/loadbalancer/web/component/BucketList.java b/LoadBalancerWeb/src/main/java/ru/dragonestia/loadbalancer/web/component/BucketList.java index 8a6d332..ea78d20 100644 --- a/LoadBalancerWeb/src/main/java/ru/dragonestia/loadbalancer/web/component/BucketList.java +++ b/LoadBalancerWeb/src/main/java/ru/dragonestia/loadbalancer/web/component/BucketList.java @@ -92,7 +92,7 @@ public class BucketList extends VerticalLayout { private void clickDetailsButton(Bucket bucket) { getUI().ifPresent(ui -> { ui.navigate("/nodes/" + bucket.getNodeIdentifier() + - "/" + bucket.getIdentifier()); + "/buckets/" + bucket.getIdentifier()); }); } diff --git a/LoadBalancerWeb/src/main/java/ru/dragonestia/loadbalancer/web/page/BucketsPage.java b/LoadBalancerWeb/src/main/java/ru/dragonestia/loadbalancer/web/page/BucketsPage.java new file mode 100644 index 0000000..9d55159 --- /dev/null +++ b/LoadBalancerWeb/src/main/java/ru/dragonestia/loadbalancer/web/page/BucketsPage.java @@ -0,0 +1,53 @@ +package ru.dragonestia.loadbalancer.web.page; + +import com.vaadin.flow.component.Html; +import com.vaadin.flow.component.html.H2; +import com.vaadin.flow.component.html.Hr; +import com.vaadin.flow.component.orderedlayout.VerticalLayout; +import com.vaadin.flow.router.BeforeEnterEvent; +import com.vaadin.flow.router.BeforeEnterObserver; +import com.vaadin.flow.router.Route; +import ru.dragonestia.loadbalancer.web.component.NavPath; +import ru.dragonestia.loadbalancer.web.model.Bucket; +import ru.dragonestia.loadbalancer.web.model.Node; +import ru.dragonestia.loadbalancer.web.model.type.LoadBalancingMethod; +import ru.dragonestia.loadbalancer.web.model.type.SlotLimit; + +@Route("/nodes/:nodeId/buckets/:bucketId") +public class BucketsPage extends VerticalLayout implements BeforeEnterObserver { + + private Bucket bucket; + + @Override + public void beforeEnter(BeforeEnterEvent event) { + var nodeIdOpt = event.getRouteParameters().get("nodeId"); + var bucketIdOpt = event.getRouteParameters().get("bucketId"); + + if (nodeIdOpt.isEmpty() || bucketIdOpt.isEmpty()) { + getUI().ifPresent(ui -> ui.navigate("/nodes")); + return; + } + // TODO: getting bucket + bucket = Bucket.create(bucketIdOpt.get(), new Node(nodeIdOpt.get(), LoadBalancingMethod.ROUND_ROBIN), SlotLimit.unlimited(), ""); + + init(); + } + + private void init() { + add(new NavPath(new NavPath.Point("Nodes", "/nodes"), + new NavPath.Point(bucket.getNodeIdentifier(), "/nodes/" + bucket.getNodeIdentifier()), + new NavPath.Point(bucket.getIdentifier(), "/nodes/" + bucket.getNodeIdentifier() + "/buckets/" + bucket.getIdentifier()))); + add(new H2("Bucket details")); + printBucketDetails(); + add(new Hr()); + add(new H2("Add users")); + add(new Hr()); + add(new H2("Users")); + } + + private void printBucketDetails() { + add(new Html("Node identifier: " + bucket.getNodeIdentifier() + "")); + add(new Html("Bucket identifier: " + bucket.getIdentifier() + "")); + add(new Html("Slots: " + (bucket.getSlots().isUnlimited()? "Unlimited" : bucket.getSlots().getSlots()) + "")); + } +}