diff --git a/Plan/src/main/java/com/djrapitops/plan/systems/info/parsing/InspectPageParser.java b/Plan/src/main/java/com/djrapitops/plan/systems/info/parsing/InspectPageParser.java index c2a94c9c6..a3c7c1c4c 100644 --- a/Plan/src/main/java/com/djrapitops/plan/systems/info/parsing/InspectPageParser.java +++ b/Plan/src/main/java/com/djrapitops/plan/systems/info/parsing/InspectPageParser.java @@ -27,6 +27,7 @@ import main.java.com.djrapitops.plan.utilities.html.HtmlUtils; import main.java.com.djrapitops.plan.utilities.html.graphs.PunchCardGraphCreator; import main.java.com.djrapitops.plan.utilities.html.graphs.ServerPreferencePieCreator; import main.java.com.djrapitops.plan.utilities.html.graphs.WorldPieCreator; +import main.java.com.djrapitops.plan.utilities.html.structure.ServerAccordionCreator; import main.java.com.djrapitops.plan.utilities.html.tables.ActionsTableCreator; import main.java.com.djrapitops.plan.utilities.html.tables.IpTableCreator; import main.java.com.djrapitops.plan.utilities.html.tables.NicknameTableCreator; @@ -111,10 +112,11 @@ public class InspectPageParser extends PageParser { .sorted(new SessionStartComparator()) .collect(Collectors.toList()); - String[] sessionsTabContent = HtmlStructure.createSessionsTabContentInspectPage(sessionsByServerName, allSessions, uuid); - addValue("accordionSessions", sessionsTabContent[0]); - addValue("sessionTabGraphViewFunctions", sessionsTabContent[1]); - addValue("contentServerOverview", HtmlStructure.createServerOverviewColumn(sessionsByServerName)); + String[] sessionsAccordion = HtmlStructure.createSessionsTabContentInspectPage(sessionsByServerName, allSessions, uuid); + String[] serverAccordion = ServerAccordionCreator.createAccordion(profile, serverNames); + addValue("accordionSessions", sessionsAccordion[0]); + addValue("accordionServers", serverAccordion[0]); + addValue("sessionTabGraphViewFunctions", sessionsAccordion[1] + serverAccordion[1]); long dayAgo = now - TimeAmount.DAY.ms(); long weekAgo = now - TimeAmount.WEEK.ms(); diff --git a/Plan/src/main/java/com/djrapitops/plan/utilities/html/structure/ServerAccordionCreator.java b/Plan/src/main/java/com/djrapitops/plan/utilities/html/structure/ServerAccordionCreator.java new file mode 100644 index 000000000..66f15942b --- /dev/null +++ b/Plan/src/main/java/com/djrapitops/plan/utilities/html/structure/ServerAccordionCreator.java @@ -0,0 +1,111 @@ +/* + * Licence is provided in the jar as license.yml also here: + * https://github.com/Rsl1122/Plan-PlayerAnalytics/blob/master/Plan/src/main/resources/license.yml + */ +package main.java.com.djrapitops.plan.utilities.html.structure; + +import main.java.com.djrapitops.plan.data.PlayerProfile; +import main.java.com.djrapitops.plan.data.Session; +import main.java.com.djrapitops.plan.data.time.WorldTimes; +import main.java.com.djrapitops.plan.utilities.FormatUtils; +import main.java.com.djrapitops.plan.utilities.analysis.AnalysisUtils; +import main.java.com.djrapitops.plan.utilities.analysis.MathUtils; +import main.java.com.djrapitops.plan.utilities.html.graphs.WorldPieCreator; + +import java.util.List; +import java.util.Map; +import java.util.UUID; + +/** + * //TODO Class Javadoc Comment + * + * @author Rsl1122 + */ +public class ServerAccordionCreator { + + public static String[] createAccordion(PlayerProfile profile, Map serverNames) { + StringBuilder html = new StringBuilder("
"); + StringBuilder viewScript = new StringBuilder(); + + for (Map.Entry entry : profile.getWorldTimesPerServer().entrySet()) { + UUID serverUUID = entry.getKey(); + String serverName = serverNames.getOrDefault(serverUUID, "Unknown"); + WorldTimes worldTimes = entry.getValue(); + + List sessions = profile.getSessions(serverUUID); + long playtime = PlayerProfile.getPlaytime(sessions.stream()); + int sessionCount = sessions.size(); + long avgSession = MathUtils.averageLong(playtime, sessionCount); + long sessionMedian = PlayerProfile.getSessionMedian(sessions.stream()); + long longestSession = PlayerProfile.getLongestSession(sessions.stream()); + + long mobKills = PlayerProfile.getMobKillCount(sessions.stream()); + long playerKills = PlayerProfile.getPlayerKills(sessions.stream()).count(); + long deaths = PlayerProfile.getDeathCount(sessions.stream()); + + String play = FormatUtils.formatTimeAmount(playtime); + String avg = sessionCount != 0 ? FormatUtils.formatTimeAmount(avgSession) : "-"; + String median = sessionCount != 0 ? FormatUtils.formatTimeAmount(sessionMedian) : "-"; + String longest = sessionCount != 0 ? FormatUtils.formatTimeAmount(longestSession) : "-"; + + String serverNameID = serverName.replace(" ", "_"); + String htmlID = "server_" + serverNameID; + + String worldId = "worldPieServer" + serverNameID; + AnalysisUtils.addMissingWorlds(worldTimes); + + String[] worldData = WorldPieCreator.createSeriesData(worldTimes); + + // Accordion panel header + html.append("
") + .append("
") + .append("

") + .append("") + .append(serverName).append("").append(play).append("") // Title (header) + .append("

") // Closes collapsed, panel title + .append("
"); // Closes panel heading + + // Content + html.append("
") + .append("
") + .append("
") // Left col-6 + // Sessions + .append("

Sessions ").append(sessionCount).append("

") + // Playtime + .append("

Server Playtime").append(play).append("

") + .append("

Longest Session").append(longest).append("

") + .append("

Session Median").append(median).append("

") + .append("
") + // Player Kills + .append("

Player Kills").append(playerKills).append("

") + // Mob Kills + .append("

Mob Kills").append(mobKills).append("

") + // Deaths + .append("

Deaths").append(deaths).append("

") + .append("
") // Closes Left col-6 + .append("
") // Right col-6 + .append("
") + // World Pie data script + .append("") + .append("
") // Right col-6 + .append("
") // Closes row clearfix + .append("
") // Closes panel-body + .append("
") // Closes panel-collapse + .append("
"); // Closes panel + + viewScript.append("worldPie(") + .append(worldId).append(", ") + .append(worldId).append("series, ") + .append(worldId).append("gmseries") + .append(");"); + } + return new String[]{html.append("
").toString(), viewScript.toString()}; + } + +} \ No newline at end of file diff --git a/Plan/src/main/resources/web/player.html b/Plan/src/main/resources/web/player.html index a313bc245..07edb1ab1 100644 --- a/Plan/src/main/resources/web/player.html +++ b/Plan/src/main/resources/web/player.html @@ -534,7 +534,7 @@ - ${accorionServer} + ${accordionServers} diff --git a/Plan/src/main/resources/web/server.html b/Plan/src/main/resources/web/server.html index bce922b73..7c5fb307e 100644 --- a/Plan/src/main/resources/web/server.html +++ b/Plan/src/main/resources/web/server.html @@ -573,7 +573,7 @@
-
+