From 138c4714d5a166b325685f3773b242eb886d83a1 Mon Sep 17 00:00:00 2001 From: Woosle Park Date: Wed, 27 Mar 2019 04:47:48 -0400 Subject: [PATCH] changes 2 --- .../simon987/server/user/UserStatsHelper.java | 28 +++++++++++++++++++ .../simon987/server/web/LeaderBoardPage.java | 8 ++---- .../main/resources/templates/leaderboard.vm | 8 +++--- 3 files changed, 35 insertions(+), 9 deletions(-) diff --git a/Server/src/main/java/net/simon987/server/user/UserStatsHelper.java b/Server/src/main/java/net/simon987/server/user/UserStatsHelper.java index 9af294d..9b80135 100644 --- a/Server/src/main/java/net/simon987/server/user/UserStatsHelper.java +++ b/Server/src/main/java/net/simon987/server/user/UserStatsHelper.java @@ -44,6 +44,34 @@ public class UserStatsHelper { return rows; } + /** + * Get top n players along with all their stat values, in descending order + * + * @param n Maximum number of players + * @return Top n players, in User,value format, in descending order + */ + public ArrayList>> getTopNAll(int n) { + + ArrayList>> rows = new ArrayList<>(); + + ArrayList> vaults = new ArrayList<>(this.getTopNSetLength("completedVaults", n)); + ArrayList> deaths = new ArrayList<>(this.getTopN("deathCount", n)); + ArrayList> time = new ArrayList<>(this.getTopN("executionTime", n)); + ArrayList> distance = new ArrayList<>(this.getTopN("walkDistance", n)); + + for (int i = 0; i < n ; i++) { + User user = vaults.get(i).getKey(); + Map allStats = new HashMap(); + allStats.put("completedVaults", vaults.get(i).getValue().size()); + allStats.put("deathCount", deaths.get(i).getValue()); + allStats.put("executionTime", time.get(i).getValue()); + allStats.put("walkDistance", distance.get(i).getValue()); + rows.add(new AbstractMap.SimpleEntry<>(user, allStats)); + } + + return rows; + } + /** * Get top n players along with the stat set, in descending order * diff --git a/Server/src/main/java/net/simon987/server/web/LeaderBoardPage.java b/Server/src/main/java/net/simon987/server/web/LeaderBoardPage.java index 742012e..3f242b6 100644 --- a/Server/src/main/java/net/simon987/server/web/LeaderBoardPage.java +++ b/Server/src/main/java/net/simon987/server/web/LeaderBoardPage.java @@ -9,16 +9,14 @@ import spark.TemplateViewRoute; import java.util.HashMap; import java.util.Map; + public class LeaderBoardPage implements TemplateViewRoute { @Override public ModelAndView handle(Request request, Response response) { - Map model = new HashMap<>(5); + Map model = new HashMap<>(2); model.put("session", request.session()); - model.put("stats", GameServer.INSTANCE.getUserStatsHelper().getTopNSetLength("completedVaults", 25)); - model.put("stats", GameServer.INSTANCE.getUserStatsHelper().getTopNSetLength("deathCount", 25)); - model.put("stats", GameServer.INSTANCE.getUserStatsHelper().getTopNSetLength("totalExecutionTime", 25)); - model.put("stats", GameServer.INSTANCE.getUserStatsHelper().getTopNSetLength("walkDistance", 25)); + model.put("stats", GameServer.INSTANCE.getUserStatsHelper().getTopNAll(25));; return new ModelAndView(model, "leaderboard.vm"); } } \ No newline at end of file diff --git a/Server/src/main/resources/templates/leaderboard.vm b/Server/src/main/resources/templates/leaderboard.vm index f998e0a..998475e 100644 --- a/Server/src/main/resources/templates/leaderboard.vm +++ b/Server/src/main/resources/templates/leaderboard.vm @@ -25,10 +25,10 @@ #foreach($row in $stats) $row.getKey().getUsername() - $row.getValue().size() - $row.getValue() - $row.getValue() - $row.getValue() + $row.getValue().get("completedVaults") + $row.getValue().get("deathCount") + $row.getValue().get("executionTime") + $row.getValue().get("walkDistance") #end