Untitled
unknown
plain_text
a year ago
13 kB
4
Indexable
Index: src/main/java/pl/xtb/ipax/backoffice/view/saxo/SaxoOptionRootListView.java
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
diff --git a/src/main/java/pl/xtb/ipax/backoffice/view/saxo/SaxoOptionRootListView.java b/src/main/java/pl/xtb/ipax/backoffice/view/saxo/SaxoOptionRootListView.java
--- a/src/main/java/pl/xtb/ipax/backoffice/view/saxo/SaxoOptionRootListView.java (revision 50aefe6ab687ad3abbbe7b845068fd1cfaabc76f)
+++ b/src/main/java/pl/xtb/ipax/backoffice/view/saxo/SaxoOptionRootListView.java (date 1729170049637)
@@ -1,9 +1,6 @@
package pl.xtb.ipax.backoffice.view.saxo;
-import com.vaadin.flow.component.AbstractField;
-import com.vaadin.flow.component.ClickEvent;
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.details.Details;
@@ -34,7 +31,6 @@
import java.util.List;
import java.util.Map;
import java.util.Optional;
-import java.util.Set;
@Route(value = Routes.SAXO_ROOT_LIST, layout = MainLayout.class)
@Slf4j
@@ -43,38 +39,26 @@
private static final int INITIAL_PAGE_NUMBER = 1;
private static final int INITIAL_PAGE_SIZE = 10;
- private static final List<Integer> AVAILABLE_PAGE_SIZE_LIST = List.of(10, 25, 50, 100);
- private static final String SELECTION_COUNTER_TEXT_FORMAT = "Selected %s from %s";
private static final String UPDATE_OPTION_ROOT_DATETIME_TEXT_FORMAT = "Last update: %s";
private final OptionRootListProvider optionRootListProvider;
- private int totalPagesCounter;
private int itemsPerPage = INITIAL_PAGE_SIZE;
private int currentPageNumber = INITIAL_PAGE_NUMBER;
- private long rootTotalElementCounter;
private Sort sortBy = Sort.unsorted();
- private Set<OptionRootData> selectedOptions = Set.of();
private final Grid<OptionRootData> grid = new Grid<>(OptionRootData.class, Boolean.FALSE);
- private final Button batchOfferAddingButton = new Button("Add offers");
- private final Span selectionCounter = new Span();
-
- private final Span pageDescriptor = new Span();
- private final Button nextPageButton = new Button("Next page");
- private final Button previousPageButton = new Button("Previous page");
private final OptionRootListSearchCriteria searchCriteria = new OptionRootListSearchCriteria();
+ private final SaxoFooter footer;
+
public SaxoOptionRootListView(OptionRootListProvider optionRootListProvider) {
this.optionRootListProvider = optionRootListProvider;
setHeightFull();
initGrid();
- nextPageButton.addClickListener(this::handleNextPageEvent);
- previousPageButton.addClickListener(this::handlePreviousPageEvent);
-
- Component footer = createFooterComponents();
+ this.footer = new SaxoFooter(this::refreshDataInTableAndComponentsState);
Component searchCriteria = createSearchCriteriaComponents();
add(searchCriteria, grid, footer);
@@ -85,9 +69,9 @@
grid.addThemeVariants(GridVariant.LUMO_WRAP_CELL_CONTENT);
grid.setSelectionMode(Grid.SelectionMode.MULTI);
grid.addSelectionListener(selectionEvent -> {
- this.selectedOptions = selectionEvent.getAllSelectedItems();
- refreshBatchAddingButton();
- refreshSelectionCounterComponent();
+ footer.setSelectedOptions(selectionEvent.getAllSelectedItems());
+ footer.refreshBatchAddingButton();
+ footer.refreshSelectionCounterComponent();
});
grid.addColumn(OptionRootData::description).setHeader("Description");
grid.addColumn(OptionRootData::exchangeCountryCode).setHeader("Exchange country code");
@@ -150,36 +134,6 @@
return buttonsContainer;
}
- private Component createFooterComponents() {
- Select<Integer> pageSizeSelector = new Select<>();
- pageSizeSelector.addValueChangeListener(this::handlePageSizeModificationEvent);
- pageSizeSelector.setItems(AVAILABLE_PAGE_SIZE_LIST);
- pageSizeSelector.setValue(itemsPerPage);
-
- HorizontalLayout pagingContainer = new HorizontalLayout();
- pagingContainer.setJustifyContentMode(JustifyContentMode.END);
- pagingContainer.setAlignItems(Alignment.CENTER);
- pagingContainer.setWidthFull();
- pagingContainer.add(new Span("Page size"), pageSizeSelector, nextPageButton, pageDescriptor, previousPageButton);
-
- batchOfferAddingButton.setEnabled(false);
- batchOfferAddingButton.addClickListener(batchAddOffer -> {
- new Dialog("TODO Add batch offer").open();
- });
-
- HorizontalLayout batchAction = new HorizontalLayout();
- batchAction.setFlexGrow(0);
- batchAction.setWidth(40, Unit.PERCENTAGE);
- batchAction.setAlignItems(Alignment.CENTER);
- batchAction.setJustifyContentMode(JustifyContentMode.START);
- batchAction.add(batchOfferAddingButton, selectionCounter);
-
- HorizontalLayout footer = new HorizontalLayout();
- footer.setWidthFull();
- footer.add(batchAction, pagingContainer);
- return footer;
- }
-
private Component createSearchCriteriaComponents() {
HorizontalLayout firstRowSearchCriteriaContainer = new HorizontalLayout();
firstRowSearchCriteriaContainer.setWidthFull();
@@ -281,73 +235,15 @@
return layout;
}
- private void handlePageSizeModificationEvent(AbstractField.ComponentValueChangeEvent<Select<Integer>, Integer> event) {
- grid.setPageSize(event.getValue());
- setItemsPerPage(event.getValue());
- resetCurrentPage();
- refreshDataInTableAndComponentsState();
- }
-
- private void handleNextPageEvent(ClickEvent<Button> nextPageEvent) {
- if (currentPageNumber >= totalPagesCounter) {
- return;
- }
- setCurrentPageNumber(currentPageNumber + 1);
- refreshDataInTableAndComponentsState();
- }
-
- private void handlePreviousPageEvent(ClickEvent<Button> previousPageEvent) {
- if (currentPageNumber <= 1) {
- return;
- }
- setCurrentPageNumber(currentPageNumber - 1);
- refreshDataInTableAndComponentsState();
- }
-
private void refreshDataInTableAndComponentsState() {
Page<OptionRootData> page = optionRootListProvider.getPage(PageRequest.of((currentPageNumber - 1), itemsPerPage, sortBy), searchCriteria);
grid.setItems(page.getContent());
- this.rootTotalElementCounter = page.getTotalElements();
- this.totalPagesCounter = page.getTotalPages();
- refreshPagingButtonsState();
- refreshPagingDescriptor();
- refreshSelectionCounterComponent();
- }
-
- private void refreshPagingButtonsState() {
- nextPageButton.setEnabled(currentPageNumber < totalPagesCounter);
- previousPageButton.setEnabled(currentPageNumber > 1);
- }
-
- private void refreshPagingDescriptor() {
- pageDescriptor.setText("%s of %s".formatted(currentPageNumber, totalPagesCounter));
- }
-
- private void refreshBatchAddingButton() {
- batchOfferAddingButton.setEnabled(this.getSelectedOptions().size() >= 2);
- }
-
-
- private void refreshSelectionCounterComponent() {
- selectionCounter.setText(SELECTION_COUNTER_TEXT_FORMAT.formatted(getSelectedOptions().size(), rootTotalElementCounter));
- }
-
- private void resetCurrentPage() {
- setCurrentPageNumber(INITIAL_PAGE_NUMBER);
- }
-
- private void setCurrentPageNumber(int currentPageNumber) {
- this.currentPageNumber = currentPageNumber;
- }
-
- private void setItemsPerPage(int itemsPerPage) {
- this.itemsPerPage = itemsPerPage;
+ footer.setRootTotalElementCounter(page.getTotalElements());
+ footer.setRootTotalElementCounter(page.getTotalPages());
+ footer.refreshPagingButtonsState();
+ footer.refreshPagingDescriptor();
+ footer.refreshSelectionCounterComponent();
}
-
- private Set<OptionRootData> getSelectedOptions() {
- return selectedOptions == null ? Set.of() : selectedOptions;
- }
-
@RequiredArgsConstructor
private enum SearchCriteriaKey {
Index: src/main/java/pl/xtb/ipax/backoffice/view/saxo/SaxoFooter.java
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
diff --git a/src/main/java/pl/xtb/ipax/backoffice/view/saxo/SaxoFooter.java b/src/main/java/pl/xtb/ipax/backoffice/view/saxo/SaxoFooter.java
new file mode 100644
--- /dev/null (date 1729170049648)
+++ b/src/main/java/pl/xtb/ipax/backoffice/view/saxo/SaxoFooter.java (date 1729170049648)
@@ -0,0 +1,143 @@
+package pl.xtb.ipax.backoffice.view.saxo;
+
+import com.vaadin.flow.component.AbstractField;
+import com.vaadin.flow.component.ClickEvent;
+import com.vaadin.flow.component.Unit;
+import com.vaadin.flow.component.button.Button;
+import com.vaadin.flow.component.dialog.Dialog;
+import com.vaadin.flow.component.grid.Grid;
+import com.vaadin.flow.component.html.Span;
+import com.vaadin.flow.component.orderedlayout.HorizontalLayout;
+import com.vaadin.flow.component.select.Select;
+import pl.xtb.ipax.backoffice.domain.saxo.root.OptionRootData;
+
+import java.util.List;
+import java.util.Set;
+import java.util.function.Consumer;
+
+public class SaxoFooter extends HorizontalLayout {
+
+ private static final int INITIAL_PAGE_NUMBER = 1;
+ private static final int INITIAL_PAGE_SIZE = 10;
+ private static final List<Integer> AVAILABLE_PAGE_SIZE_LIST = List.of(10, 25, 50, 100);
+ private static final String SELECTION_COUNTER_TEXT_FORMAT = "Selected %s from %s";
+ private static final String UPDATE_OPTION_ROOT_DATETIME_TEXT_FORMAT = "Last update: %s";
+
+ private int totalPagesCounter;
+ private int itemsPerPage = INITIAL_PAGE_SIZE;
+ private int currentPageNumber = INITIAL_PAGE_NUMBER;
+ private long rootTotalElementCounter;
+
+ private Set<OptionRootData> selectedOptions = Set.of();
+
+ private final Button nextPageButton = new Button("Next page");
+ private final Button previousPageButton = new Button("Previous page");
+ private final Button batchOfferAddingButton = new Button("Add offers");
+ private final Span selectionCounter = new Span();
+ private final Span pageDescriptor = new Span();
+
+ private final Grid<OptionRootData> grid = new Grid<>(OptionRootData.class, Boolean.FALSE);
+
+ private final Runnable refreshData;
+
+ public SaxoFooter(Runnable refreshData) {
+ this.refreshData = refreshData;
+
+ nextPageButton.addClickListener(this::handleNextPageEvent);
+ previousPageButton.addClickListener(this::handlePreviousPageEvent);
+
+ Select<Integer> pageSizeSelector = new Select<>();
+ pageSizeSelector.addValueChangeListener(this::handlePageSizeModificationEvent);
+ pageSizeSelector.setItems(AVAILABLE_PAGE_SIZE_LIST);
+ pageSizeSelector.setValue(itemsPerPage);
+
+ HorizontalLayout pagingContainer = new HorizontalLayout();
+ pagingContainer.setJustifyContentMode(JustifyContentMode.END);
+ pagingContainer.setAlignItems(Alignment.CENTER);
+ pagingContainer.setWidthFull();
+ pagingContainer.add(new Span("Page size"), pageSizeSelector, nextPageButton, pageDescriptor, previousPageButton);
+
+ batchOfferAddingButton.setEnabled(false);
+ batchOfferAddingButton.addClickListener(batchAddOffer -> {
+ new Dialog("TODO Add batch offer").open();
+ });
+
+ HorizontalLayout batchAction = new HorizontalLayout();
+ batchAction.setFlexGrow(0);
+ batchAction.setWidth(40, Unit.PERCENTAGE);
+ batchAction.setAlignItems(Alignment.CENTER);
+ batchAction.setJustifyContentMode(JustifyContentMode.START);
+ batchAction.add(batchOfferAddingButton, selectionCounter);
+
+ setWidthFull();
+ add(batchAction, pagingContainer);
+ }
+
+ private void handleNextPageEvent(ClickEvent<Button> nextPageEvent) {
+ if (currentPageNumber >= totalPagesCounter) {
+ return;
+ }
+ setCurrentPageNumber(currentPageNumber + 1);
+ refreshData.run();
+ }
+
+ private void handlePreviousPageEvent(ClickEvent<Button> previousPageEvent) {
+ if (currentPageNumber <= 1) {
+ return;
+ }
+ setCurrentPageNumber(currentPageNumber - 1);
+ refreshData.run();
+ }
+
+ private void handlePageSizeModificationEvent(AbstractField.ComponentValueChangeEvent<Select<Integer>, Integer> event) {
+ grid.setPageSize(event.getValue());
+ setItemsPerPage(event.getValue());
+ resetCurrentPage();
+ refreshData.run();
+ }
+
+ void refreshPagingButtonsState() {
+ nextPageButton.setEnabled(currentPageNumber < totalPagesCounter);
+ previousPageButton.setEnabled(currentPageNumber > 1);
+ }
+
+ void refreshPagingDescriptor() {
+ pageDescriptor.setText("%s of %s".formatted(currentPageNumber, totalPagesCounter));
+ }
+
+ void refreshBatchAddingButton() {
+ batchOfferAddingButton.setEnabled(this.getSelectedOptions().size() >= 2);
+ }
+
+ void refreshSelectionCounterComponent() {
+ selectionCounter.setText(SELECTION_COUNTER_TEXT_FORMAT.formatted(getSelectedOptions().size(), rootTotalElementCounter));
+ }
+
+ private void resetCurrentPage() {
+ setCurrentPageNumber(INITIAL_PAGE_NUMBER);
+ }
+
+ private void setCurrentPageNumber(int currentPageNumber) {
+ this.currentPageNumber = currentPageNumber;
+ }
+
+ private void setItemsPerPage(int itemsPerPage) {
+ this.itemsPerPage = itemsPerPage;
+ }
+
+ private Set<OptionRootData> getSelectedOptions() {
+ return selectedOptions == null ? Set.of() : selectedOptions;
+ }
+
+ void setSelectedOptions(Set<OptionRootData> selectedOptions) {
+ this.selectedOptions = selectedOptions;
+ }
+
+ void setTotalPagesCounter(int totalPagesCounter) {
+ this.totalPagesCounter = totalPagesCounter;
+ }
+
+ void setRootTotalElementCounter(long rootTotalElementCounter) {
+ this.rootTotalElementCounter = rootTotalElementCounter;
+ }
+}
Editor is loading...
Leave a Comment