mirror of
https://github.com/AJMicke/KickerELO.git
synced 2026-03-11 13:31:02 +01:00
Add average goal diffs to 2vs2 stats
This commit is contained in:
@@ -3,6 +3,8 @@ package org.kickerelo.kickerelo.repository;
|
|||||||
import org.kickerelo.kickerelo.data.Ergebnis2vs2;
|
import org.kickerelo.kickerelo.data.Ergebnis2vs2;
|
||||||
import org.kickerelo.kickerelo.data.Spieler;
|
import org.kickerelo.kickerelo.data.Spieler;
|
||||||
import org.springframework.data.jpa.repository.JpaRepository;
|
import org.springframework.data.jpa.repository.JpaRepository;
|
||||||
|
import org.springframework.data.jpa.repository.Query;
|
||||||
|
import org.springframework.data.repository.query.Param;
|
||||||
import org.springframework.stereotype.Repository;
|
import org.springframework.stereotype.Repository;
|
||||||
|
|
||||||
@Repository
|
@Repository
|
||||||
@@ -16,4 +18,10 @@ public interface Ergebnis2vs2Repository extends JpaRepository<Ergebnis2vs2, Long
|
|||||||
Spieler verliererVon, Spieler verliererHinten);
|
Spieler verliererVon, Spieler verliererHinten);
|
||||||
|
|
||||||
int countByGewinnerVornOrVerliererVorn(Spieler gewinnerVon, Spieler verliererHinten);
|
int countByGewinnerVornOrVerliererVorn(Spieler gewinnerVon, Spieler verliererHinten);
|
||||||
|
|
||||||
|
@Query("select avg(case when e.verliererVorn = :s then (e.toreVerlierer - 10) when e.gewinnerVorn = :s then (10 - e.toreVerlierer) end) from Ergebnis2vs2 e where e.gewinnerVorn = :s or e.verliererVorn = :s")
|
||||||
|
Float avgGoalDiffFront(@Param("s") Spieler s);
|
||||||
|
|
||||||
|
@Query("select avg(case when e.verliererHinten = :s then (e.toreVerlierer - 10) when e.gewinnerHinten = :s then (10 - e.toreVerlierer) end) from Ergebnis2vs2 e where e.gewinnerHinten = :s or e.verliererHinten = :s")
|
||||||
|
Float avgGoalDiffBack(@Param("s") Spieler s);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -28,6 +28,8 @@ public class Stat2vs2View extends VerticalLayout {
|
|||||||
NativeLabel winRateFrontText = new NativeLabel();
|
NativeLabel winRateFrontText = new NativeLabel();
|
||||||
ProgressBar winRateBack = new ProgressBar();
|
ProgressBar winRateBack = new ProgressBar();
|
||||||
NativeLabel winRateBackText = new NativeLabel();
|
NativeLabel winRateBackText = new NativeLabel();
|
||||||
|
Paragraph goalDiffBack = new Paragraph();
|
||||||
|
Paragraph goalDiffFront = new Paragraph();
|
||||||
|
|
||||||
public Stat2vs2View(Stat2vs2Service service, KickerEloService kickerService, Ergebnis2vs2Repository repo) {
|
public Stat2vs2View(Stat2vs2Service service, KickerEloService kickerService, Ergebnis2vs2Repository repo) {
|
||||||
this.stat2vs2Service = service;
|
this.stat2vs2Service = service;
|
||||||
@@ -37,7 +39,7 @@ public class Stat2vs2View extends VerticalLayout {
|
|||||||
selector = new ComboBox<>("Spieler");
|
selector = new ComboBox<>("Spieler");
|
||||||
selector.setItems(kickerService.getSpielerEntities());
|
selector.setItems(kickerService.getSpielerEntities());
|
||||||
selector.addValueChangeListener(event -> updateData(selector.getValue()));
|
selector.addValueChangeListener(event -> updateData(selector.getValue()));
|
||||||
add(subheading, selector, generalInfo, frontRateText, frontRate, winRateFrontText, winRateFront, winRateBackText, winRateBack);
|
add(subheading, selector, generalInfo, frontRateText, frontRate, winRateFrontText, winRateFront, winRateBackText, winRateBack, goalDiffBack, goalDiffFront);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void updateData(Spieler s) {
|
private void updateData(Spieler s) {
|
||||||
@@ -45,6 +47,7 @@ public class Stat2vs2View extends VerticalLayout {
|
|||||||
updateFrontRate(s);
|
updateFrontRate(s);
|
||||||
updateFrontWinrate(s);
|
updateFrontWinrate(s);
|
||||||
updateBackWinrate(s);
|
updateBackWinrate(s);
|
||||||
|
updateGoalDiffs(s);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void updateGeneralInfo(Spieler s) {
|
private void updateGeneralInfo(Spieler s) {
|
||||||
@@ -78,4 +81,14 @@ public class Stat2vs2View extends VerticalLayout {
|
|||||||
winRateBack.addThemeVariants((winRate > 0.5f ? ProgressBarVariant.LUMO_SUCCESS : ProgressBarVariant.LUMO_ERROR));
|
winRateBack.addThemeVariants((winRate > 0.5f ? ProgressBarVariant.LUMO_SUCCESS : ProgressBarVariant.LUMO_ERROR));
|
||||||
winRateBackText.setText(winRate.isNaN() ? text + "-" : text + String.format("%.2f", winRate * 100) + "%");
|
winRateBackText.setText(winRate.isNaN() ? text + "-" : text + String.format("%.2f", winRate * 100) + "%");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void updateGoalDiffs(Spieler s) {
|
||||||
|
String text = "Mittlere Tordifferenz hinten: ";
|
||||||
|
Float backDiff = repo.avgGoalDiffBack(s);
|
||||||
|
goalDiffBack.setText(backDiff.isNaN() ? text + "-" : text + String.format("%.2f", backDiff));
|
||||||
|
text = "Mittlere Tordifferenz vorne: ";
|
||||||
|
Float frontDiff = repo.avgGoalDiffFront(s);
|
||||||
|
goalDiffFront.setText(frontDiff.isNaN() ? text + "-" : text + String.format("%.2f", frontDiff));
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user