Browse Source

bold names work without bug

master
GAM 4 years ago
parent
commit
47103c647c
3 changed files with 48 additions and 14 deletions
  1. +34
    -0
      src/main/java/com/example/application/utils/StringUtils.java
  2. +7
    -4
      src/main/java/com/example/application/utils/VaadinUtils.java
  3. +7
    -10
      src/main/java/com/example/application/views/results/ResultsView.java

+ 34
- 0
src/main/java/com/example/application/utils/StringUtils.java View File

@ -1,9 +1,18 @@
package com.example.application.utils;
import org.apache.commons.lang3.RandomStringUtils;
import java.util.HashSet;
import java.util.Set;
public class StringUtils {
private StringUtils() {
}
////////////////
// Formatting //
////////////////
public static String getResultString(Double first, Double second) {
String firstString = first.toString().replace(".0", "");
String secondString = second.toString().replace(".0", "");
@ -22,4 +31,29 @@ public class StringUtils {
public static String getHtmlStringForPlayer(String playerName, String playerNickname) {
return String.format("<b>%s</b> (%s)", playerName, playerNickname);
}
public static String getTemplateItemString(String propertyName) {
return String.format("[[item.%s]]", propertyName);
}
////////////////
// Randomness //
////////////////
private static final int RANDOM_STRING_LENGTH = 10;
private static final Set<String> usedRandomStrings = new HashSet<>();
public static String getNewRandomString() {
String randomString = getRandomString();
while (usedRandomStrings.contains(randomString)) {
randomString = getRandomString();
}
usedRandomStrings.add(randomString);
return randomString;
}
private static String getRandomString() {
return RandomStringUtils.randomAlphabetic(RANDOM_STRING_LENGTH);
}
}

+ 7
- 4
src/main/java/com/example/application/utils/VaadinUtils.java View File

@ -9,9 +9,12 @@ public class VaadinUtils {
}
public static <SOURCE> TemplateRenderer<SOURCE> getPlayerRenderer(ValueProvider<SOURCE, Player> playerProvider) {
return TemplateRenderer.<SOURCE>of(StringUtils.getHtmlStringForPlayer("[[item.name]]", "[[item.nickname]]"))
.withProperty("name", (ValueProvider<SOURCE, String>) source -> playerProvider.apply(source).getName())
.withProperty("nickname", (ValueProvider<SOURCE, String>) source -> playerProvider.apply(source).getNickname());
String name = StringUtils.getNewRandomString();
String nickname = StringUtils.getNewRandomString();
String itemName = StringUtils.getTemplateItemString(name);
String itemNickname = StringUtils.getTemplateItemString(nickname);
return TemplateRenderer.<SOURCE>of(StringUtils.getHtmlStringForPlayer(itemName, itemNickname))
.withProperty(name, (ValueProvider<SOURCE, String>) source -> playerProvider.apply(source).getName())
.withProperty(nickname, (ValueProvider<SOURCE, String>) source -> playerProvider.apply(source).getNickname());
}
}

+ 7
- 10
src/main/java/com/example/application/views/results/ResultsView.java View File

@ -1,7 +1,6 @@
package com.example.application.views.results;
import com.example.application.data.bean.CalculatedMatch;
import com.example.application.data.entity.Player;
import com.example.application.data.service.MatchService;
import com.example.application.data.service.MatchdayService;
import com.example.application.data.service.SeasonService;
@ -9,7 +8,8 @@ import com.example.application.utils.StringUtils;
import com.example.application.utils.VaadinUtils;
import com.example.application.views.abstractnavigation.SeasonAndMatchdayNavigationView;
import com.example.application.views.main.MainView;
import com.vaadin.flow.component.*;
import com.vaadin.flow.component.ClickEvent;
import com.vaadin.flow.component.ComponentEventListener;
import com.vaadin.flow.component.button.Button;
import com.vaadin.flow.component.dependency.CssImport;
import com.vaadin.flow.component.grid.ColumnTextAlign;
@ -21,9 +21,9 @@ import com.vaadin.flow.component.icon.VaadinIcon;
import com.vaadin.flow.component.orderedlayout.FlexComponent;
import com.vaadin.flow.component.orderedlayout.HorizontalLayout;
import com.vaadin.flow.component.orderedlayout.VerticalLayout;
import com.vaadin.flow.data.renderer.TemplateRenderer;
import com.vaadin.flow.function.ValueProvider;
import com.vaadin.flow.router.*;
import com.vaadin.flow.router.PageTitle;
import com.vaadin.flow.router.Route;
import org.springframework.beans.factory.annotation.Autowired;
@CssImport("./views/results/results-view.css")
@ -102,7 +102,7 @@ public class ResultsView extends SeasonAndMatchdayNavigationView {
}
private void configureMatchdayLayout() {
getMatchdayHeader().addClassName("big_header"); // add dates
getMatchdayHeader().addClassName("big_header"); // TODO: add dates
getMatchdayLayout().setPadding(false);
getMatchdayLayout().add(getMatchdayHeader(), getGrid());
@ -114,8 +114,7 @@ public class ResultsView extends SeasonAndMatchdayNavigationView {
Label headerPlayer2 = new Label("Player 2");
headerPlayer2.addClassName("column_header");
// getGrid().addColumn(VaadinUtils.getPlayerRenderer(CalculatedMatch::getPlayer1))
getGrid().addColumn((ValueProvider<CalculatedMatch, Player>) CalculatedMatch::getPlayer1)
getGrid().addColumn(VaadinUtils.getPlayerRenderer(CalculatedMatch::getPlayer1))
.setHeader(headerPlayer1)
.setTextAlign(ColumnTextAlign.END)
.setWidth("13em");
@ -125,8 +124,7 @@ public class ResultsView extends SeasonAndMatchdayNavigationView {
.setTextAlign(ColumnTextAlign.CENTER)
.setWidth("6em");
// getGrid().addColumn(VaadinUtils.getPlayerRenderer(CalculatedMatch::getPlayer2))
getGrid().addColumn((ValueProvider<CalculatedMatch, Player>) CalculatedMatch::getPlayer2)
getGrid().addColumn(VaadinUtils.getPlayerRenderer(CalculatedMatch::getPlayer2))
.setHeader(headerPlayer2)
.setTextAlign(ColumnTextAlign.START)
.setWidth("13em");
@ -134,7 +132,6 @@ public class ResultsView extends SeasonAndMatchdayNavigationView {
getGrid().setWidth("32em");
getGrid().setHeightByRows(true);
// getGrid().addClassName("my_grid");
getGrid().addThemeVariants(GridVariant.LUMO_NO_BORDER,
GridVariant.LUMO_NO_ROW_BORDERS, GridVariant.LUMO_ROW_STRIPES);
}


Loading…
Cancel
Save