5
0
mirror of https://github.com/AJMicke/KickerELO.git synced 2026-03-11 13:31:02 +01:00

Add dummy chart

This commit is contained in:
Anton Micke
2025-02-07 09:44:56 +01:00
parent 3f890f06d8
commit fb4b357970
8 changed files with 112 additions and 2 deletions

15
pom.xml
View File

@@ -22,6 +22,16 @@
<vaadin.version>24.6.4</vaadin.version>
</properties>
<repositories>
<repository>
<id>Vaadin Directory</id>
<url>https://maven.vaadin.com/vaadin-addons</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
@@ -31,6 +41,11 @@
<groupId>com.vaadin</groupId>
<artifactId>vaadin-spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>com.github.appreciated</groupId>
<artifactId>apexcharts</artifactId>
<version>24.0.1</version>
</dependency>
<dependency>
<groupId>org.mariadb.jdbc</groupId>

View File

@@ -13,6 +13,8 @@ import com.vaadin.flow.router.RouterLink;
import com.vaadin.flow.theme.lumo.LumoUtility;
import org.kickerelo.kickerelo.views.Enter1vs1View;
import org.kickerelo.kickerelo.views.Enter2vs2View;
import org.kickerelo.kickerelo.views.Graph1vs1View;
import org.kickerelo.kickerelo.views.PlayerListView;
@Layout
public class KickerAppLayout extends AppLayout {
@@ -27,8 +29,10 @@ public class KickerAppLayout extends AppLayout {
RouterLink enter1vs1 = new RouterLink("1 vs 1", Enter1vs1View.class);
RouterLink enter2vs2 = new RouterLink("2 vs 2", Enter2vs2View.class);
RouterLink playerList = new RouterLink("Spielerliste", PlayerListView.class);
RouterLink graph1vs1 = new RouterLink("Graph 1 vs 1", Graph1vs1View.class);
Tabs tabs = new Tabs(new Tab(enter1vs1), new Tab(enter2vs2));
Tabs tabs = new Tabs(new Tab(enter1vs1), new Tab(enter2vs2), new Tab(playerList), new Tab(graph1vs1));
tabs.setOrientation(Tabs.Orientation.VERTICAL);
addToDrawer(tabs);
}

View File

@@ -4,6 +4,7 @@ import org.kickerelo.kickerelo.data.Spieler;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
import java.util.List;
import java.util.Optional;
@Repository

View File

@@ -11,6 +11,7 @@ import org.kickerelo.kickerelo.model.ResultInfo2vs2;
import org.kickerelo.kickerelo.repository.Ergebnis1vs1Repository;
import org.kickerelo.kickerelo.repository.Ergebnis2vs2Repository;
import org.kickerelo.kickerelo.repository.SpielerRepository;
import org.kickerelo.kickerelo.util.SpielerEloComparator;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -28,7 +29,11 @@ public class KickerEloService {
private EloCalculationService eloCalculationService;
public List<String> getSpielerNamen() {
return spielerRepository.findAll().stream().map(Spieler::getName).toList();
return spielerRepository.findAll().stream().map(Spieler::getName).sorted().toList();
}
public List<Spieler> getSpielerEntities() {
return spielerRepository.findAll().stream().sorted(new SpielerEloComparator()).toList();
}
public void enterResult1vs1(String gewinnerName, String verliererName,

View File

@@ -0,0 +1,12 @@
package org.kickerelo.kickerelo.util;
import org.kickerelo.kickerelo.data.Spieler;
import java.util.Comparator;
public class SpielerEloComparator implements Comparator<Spieler> {
@Override
public int compare(Spieler o1, Spieler o2) {
return Float.compare(o1.getElo(), o2.getElo());
}
}

View File

@@ -0,0 +1,23 @@
package org.kickerelo.kickerelo.views;
import com.github.appreciated.apexcharts.ApexChartsBuilder;
import com.github.appreciated.apexcharts.config.builder.ChartBuilder;
import com.github.appreciated.apexcharts.config.builder.XAxisBuilder;
import com.github.appreciated.apexcharts.config.builder.YAxisBuilder;
import com.github.appreciated.apexcharts.config.chart.Type;
import com.github.appreciated.apexcharts.config.chart.builder.ZoomBuilder;
import com.github.appreciated.apexcharts.config.chart.zoom.ZoomType;
import com.github.appreciated.apexcharts.helper.Series;
import java.math.BigDecimal;
public class Chart1vs1 extends ApexChartsBuilder {
public Chart1vs1() {
withChart(ChartBuilder.get().withType(Type.SCATTER)
.withZoom(ZoomBuilder.get().withEnabled(true).withType(ZoomType.XY).build()).build())
.withSeries(new Series<>("ELO",
new BigDecimal[]{new BigDecimal(1), new BigDecimal(3)},
new BigDecimal[]{new BigDecimal(2), new BigDecimal(4)}))
.withXaxis(XAxisBuilder.get().build()).withYaxis(YAxisBuilder.get().build());
}
}

View File

@@ -0,0 +1,14 @@
package org.kickerelo.kickerelo.views;
import com.github.appreciated.apexcharts.ApexChartsBuilder;
import com.vaadin.flow.component.orderedlayout.VerticalLayout;
import com.vaadin.flow.router.Route;
@Route("graph1vs1")
public class Graph1vs1View extends VerticalLayout {
ApexChartsBuilder chart1vs1 = new Chart1vs1();
public Graph1vs1View() {
add(chart1vs1.build());
}
}

View File

@@ -0,0 +1,36 @@
package org.kickerelo.kickerelo.views;
import com.vaadin.flow.component.grid.Grid;
import com.vaadin.flow.component.grid.GridSortOrder;
import com.vaadin.flow.component.html.H2;
import com.vaadin.flow.component.orderedlayout.VerticalLayout;
import com.vaadin.flow.data.provider.SortDirection;
import com.vaadin.flow.router.Route;
import org.kickerelo.kickerelo.data.Spieler;
import org.kickerelo.kickerelo.service.KickerEloService;
import java.util.List;
@Route("playerlist")
public class PlayerListView extends VerticalLayout {
public PlayerListView(KickerEloService eloService) {
H2 subheading = new H2("Spielerliste");
List<Spieler> players = eloService.getSpielerEntities();
Grid<Spieler> playerGrid = new Grid<>(Spieler.class);
playerGrid.setItems(players);
playerGrid.removeColumnByKey("id");
playerGrid.removeColumnByKey("elo_alt");
Grid.Column<Spieler> nameColumn = playerGrid.getColumnByKey("name");
Grid.Column<Spieler> eloColumn = playerGrid.getColumnByKey("elo");
nameColumn.setHeader("Name");
eloColumn.setHeader("Elo");
playerGrid.setColumnOrder(nameColumn, eloColumn);
GridSortOrder<Spieler> sortOrder = new GridSortOrder<>(eloColumn, SortDirection.DESCENDING);
playerGrid.sort(List.of(sortOrder));
add(subheading, playerGrid);
}
}