mirror of
https://github.com/plan-player-analytics/Plan.git
synced 2024-12-21 05:50:18 +08:00
Fixed WorldPie for sessions
This commit is contained in:
parent
66d5551e20
commit
8fbb3679dd
@ -90,7 +90,9 @@ public class InspectPageParser extends PageParser {
|
|||||||
.sorted(new SessionStartComparator())
|
.sorted(new SessionStartComparator())
|
||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
|
|
||||||
addValue("contentSessions", HtmlStructure.createSessionsTabContent(sessions, allSessions));
|
String[] sessionsTabContent = HtmlStructure.createSessionsTabContent(sessions, allSessions);
|
||||||
|
addValue("contentSessions", sessionsTabContent[0]);
|
||||||
|
addValue("sessionTabGraphViewFunctions", sessionsTabContent[1]);
|
||||||
addValue("contentServerOverview", HtmlStructure.createServerOverviewColumn(sessions));
|
addValue("contentServerOverview", HtmlStructure.createServerOverviewColumn(sessions));
|
||||||
|
|
||||||
long now = MiscUtils.getTime();
|
long now = MiscUtils.getTime();
|
||||||
|
@ -84,7 +84,7 @@ public class HtmlStructure {
|
|||||||
return builder.toString();
|
return builder.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static String createSessionsTabContent(Map<String, List<Session>> sessions, List<Session> allSessions) throws FileNotFoundException {
|
public static String[] createSessionsTabContent(Map<String, List<Session>> sessions, List<Session> allSessions) throws FileNotFoundException {
|
||||||
Map<Integer, String> serverNameIDRelationMap = new HashMap<>();
|
Map<Integer, String> serverNameIDRelationMap = new HashMap<>();
|
||||||
|
|
||||||
for (Map.Entry<String, List<Session>> entry : sessions.entrySet()) {
|
for (Map.Entry<String, List<Session>> entry : sessions.entrySet()) {
|
||||||
@ -95,7 +95,8 @@ public class HtmlStructure {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
StringBuilder builder = new StringBuilder();
|
StringBuilder html = new StringBuilder();
|
||||||
|
StringBuilder viewScript = new StringBuilder();
|
||||||
int i = 0;
|
int i = 0;
|
||||||
for (Session session : allSessions) {
|
for (Session session : allSessions) {
|
||||||
if (i >= 50) {
|
if (i >= 50) {
|
||||||
@ -109,7 +110,7 @@ public class HtmlStructure {
|
|||||||
String dotSeparated = separateWithDots(sessionStart, sessionLength);
|
String dotSeparated = separateWithDots(sessionStart, sessionLength);
|
||||||
|
|
||||||
// Session-column starts & header.
|
// Session-column starts & header.
|
||||||
builder.append("<div class=\"session column\">")
|
html.append("<div class=\"session column\">")
|
||||||
.append("<div class=\"session-header\">")
|
.append("<div class=\"session-header\">")
|
||||||
.append("<div class=\"session-col\" style=\"width: 200%;\">")
|
.append("<div class=\"session-col\" style=\"width: 200%;\">")
|
||||||
.append("<h3>").append(dotSeparated).append("</h3>")
|
.append("<h3>").append(dotSeparated).append("</h3>")
|
||||||
@ -120,57 +121,58 @@ public class HtmlStructure {
|
|||||||
String serverName = serverNameIDRelationMap.get(session.getSessionID());
|
String serverName = serverNameIDRelationMap.get(session.getSessionID());
|
||||||
|
|
||||||
// Left side of Session box
|
// Left side of Session box
|
||||||
builder.append("<div class=\"session-content\">")
|
html.append("<div class=\"session-content\">")
|
||||||
.append("<div class=\"row\">") //
|
.append("<div class=\"row\">") //
|
||||||
.append("<div class=\"session-col\" style=\"padding: 0px;\">");
|
.append("<div class=\"session-col\" style=\"padding: 0px;\">");
|
||||||
|
|
||||||
// Left side header
|
// Left side header
|
||||||
builder.append("<div class=\"box-header\" style=\"margin: 0px;\">")
|
html.append("<div class=\"box-header\" style=\"margin: 0px;\">")
|
||||||
.append("<h2><i class=\"fa fa-calendar\" aria-hidden=\"true\"></i> ")
|
.append("<h2><i class=\"fa fa-calendar\" aria-hidden=\"true\"></i> ")
|
||||||
.append(sessionStart)
|
.append(sessionStart)
|
||||||
.append("</h2>")
|
.append("</h2>")
|
||||||
.append("</div>");
|
.append("</div>");
|
||||||
|
|
||||||
// Left side content
|
// Left side content
|
||||||
builder.append("<div class=\"box\" style=\"margin: 0px;\">")
|
html.append("<div class=\"box\" style=\"margin: 0px;\">")
|
||||||
.append("<p>Session Length: ").append(sessionLength).append("<br>")
|
.append("<p>Session Length: ").append(sessionLength).append("<br>")
|
||||||
.append("Session Ended: ").append(sessionEnd).append("<br>")
|
.append("Session Ended: ").append(sessionEnd).append("<br>")
|
||||||
.append("Server: ").append(serverName).append("<br><br>")
|
.append("Server: ").append(serverName).append("<br><br>")
|
||||||
.append("Mob Kills: ").append(session.getMobKills()).append("<br>")
|
.append("Mob Kills: ").append(session.getMobKills()).append("<br>")
|
||||||
.append("Deaths: ").append(session.getDeaths()).append("</p>");
|
.append("Deaths: ").append(session.getDeaths()).append("</p>");
|
||||||
|
|
||||||
builder.append(KillsTableCreator.createTable(session.getPlayerKills()))
|
html.append(KillsTableCreator.createTable(session.getPlayerKills()))
|
||||||
.append("</div>"); // Left Side content ends
|
.append("</div>"); // Left Side content ends
|
||||||
|
|
||||||
// Left side ends & Right side starts
|
// Left side ends & Right side starts
|
||||||
builder.append("</div>")
|
html.append("</div>")
|
||||||
.append("<div class=\"session-col\">");
|
.append("<div class=\"session-col\">");
|
||||||
|
|
||||||
String id = "worldPie" + session.getSessionStart();
|
String id = "worldPie" + session.getSessionStart();
|
||||||
|
|
||||||
builder.append("<div id=\"").append(id).append("\" style=\"width: 100%; height: 400px;\"></div>");
|
html.append("<div id=\"").append(id).append("\" style=\"width: 100%; height: 400px;\"></div>");
|
||||||
|
|
||||||
String[] worldData = WorldPieCreator.createSeriesData(session.getWorldTimes());
|
String[] worldData = WorldPieCreator.createSeriesData(session.getWorldTimes());
|
||||||
|
|
||||||
builder.append("<script>")
|
html.append("<script>")
|
||||||
.append("var ").append(id).append("series = {name:'World Playtime',colorByPoint:true,data:").append(worldData[0]).append("};")
|
.append("var ").append(id).append("series = {name:'World Playtime',colorByPoint:true,data:").append(worldData[0]).append("};")
|
||||||
.append("var ").append(id).append("gmseries = ").append(worldData[1]).append(";")
|
.append("var ").append(id).append("gmseries = ").append(worldData[1]).append(";")
|
||||||
.append("$( document ).ready(function() {worldPie(")
|
.append("</script>");
|
||||||
|
|
||||||
|
viewScript.append("worldPie(")
|
||||||
.append(id).append(", ")
|
.append(id).append(", ")
|
||||||
.append(id).append("series, ")
|
.append(id).append("series, ")
|
||||||
.append(id).append("gmseries")
|
.append(id).append("gmseries")
|
||||||
.append(");})")
|
.append(");");
|
||||||
.append("</script>");
|
|
||||||
|
|
||||||
// Session-col, Row, Session-Content, Session-column ends.
|
// Session-col, Row, Session-Content, Session-column ends.
|
||||||
builder.append("</div>")
|
html.append("</div>")
|
||||||
.append("</div>")
|
.append("</div>")
|
||||||
.append("</div>")
|
.append("</div>")
|
||||||
.append("</div>");
|
.append("</div>");
|
||||||
|
|
||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
return builder.toString();
|
return new String[]{html.toString(), viewScript.toString()};
|
||||||
}
|
}
|
||||||
|
|
||||||
public static String createInspectPageTabContent(String serverName, List<PluginData> plugins, Map<String, String> replaceMap) {
|
public static String createInspectPageTabContent(String serverName, List<PluginData> plugins, Map<String, String> replaceMap) {
|
||||||
|
@ -52,9 +52,10 @@ public class WorldPieCreator {
|
|||||||
|
|
||||||
Map<String, GMTimes> gmTimesMap = worldTimes.getWorldTimes();
|
Map<String, GMTimes> gmTimesMap = worldTimes.getWorldTimes();
|
||||||
if (gmTimesMap.isEmpty()) {
|
if (gmTimesMap.isEmpty()) {
|
||||||
return "{[]}";
|
return "[{[]}]";
|
||||||
}
|
}
|
||||||
int size = gmTimesMap.size();
|
int size = gmTimesMap.size();
|
||||||
|
drilldownBuilder.append("[");
|
||||||
for (Map.Entry<String, GMTimes> world : gmTimesMap.entrySet()) {
|
for (Map.Entry<String, GMTimes> world : gmTimesMap.entrySet()) {
|
||||||
drilldownBuilder.append("{name:'").append(world.getKey())
|
drilldownBuilder.append("{name:'").append(world.getKey())
|
||||||
.append("', id:'").append(world.getKey())
|
.append("', id:'").append(world.getKey())
|
||||||
@ -68,6 +69,7 @@ public class WorldPieCreator {
|
|||||||
}
|
}
|
||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
|
drilldownBuilder.append("]");
|
||||||
return drilldownBuilder.toString();
|
return drilldownBuilder.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -78,6 +80,7 @@ public class WorldPieCreator {
|
|||||||
for (Map.Entry<String, Long> entry : gmTimes.entrySet()) {
|
for (Map.Entry<String, Long> entry : gmTimes.entrySet()) {
|
||||||
Long time = entry.getValue();
|
Long time = entry.getValue();
|
||||||
if (time == 0) {
|
if (time == 0) {
|
||||||
|
j++;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
drilldownBuilder.append("['")
|
drilldownBuilder.append("['")
|
||||||
|
@ -32,6 +32,7 @@ ${sessionLengthLongestDay} timeamount
|
|||||||
${sessionLengthLongestWeek} timeamount
|
${sessionLengthLongestWeek} timeamount
|
||||||
|
|
||||||
${contentSessions} See example page
|
${contentSessions} See example page
|
||||||
|
${sessionTabGraphViewFunctions} function calls that call the graphs to be viewed.
|
||||||
${contentServerOverview} See example page
|
${contentServerOverview} See example page
|
||||||
|
|
||||||
${tabContentPlugins} See example page
|
${tabContentPlugins} See example page
|
||||||
|
@ -225,6 +225,7 @@
|
|||||||
|
|
||||||
worldPie('worldPie', worldSeries, gmSeries);
|
worldPie('worldPie', worldSeries, gmSeries);
|
||||||
punchCard('punchcard', punchcardSeries);
|
punchCard('punchcard', punchcardSeries);
|
||||||
|
${sessionTabGraphViewFunctions}
|
||||||
|
|
||||||
openFunc(slideIndex)();
|
openFunc(slideIndex)();
|
||||||
|
|
||||||
|
@ -27,7 +27,7 @@ function worldPie(id, worldSeries, gmSeries) {
|
|||||||
},
|
},
|
||||||
series: [worldSeries],
|
series: [worldSeries],
|
||||||
drilldown: {
|
drilldown: {
|
||||||
series: [gmSeries]
|
series: gmSeries
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -52,10 +52,10 @@ public class HtmlStructureTest {
|
|||||||
@Test
|
@Test
|
||||||
public void createSessionsTabContent() throws Exception {
|
public void createSessionsTabContent() throws Exception {
|
||||||
List<Session> allSessions = sessions.values().stream().flatMap(Collection::stream).collect(Collectors.toList());
|
List<Session> allSessions = sessions.values().stream().flatMap(Collection::stream).collect(Collectors.toList());
|
||||||
String sessionsTab = HtmlStructure.createSessionsTabContent(sessions, allSessions);
|
String[] sessionsTab = HtmlStructure.createSessionsTabContent(sessions, allSessions);
|
||||||
|
|
||||||
int opened = StringUtils.countMatches(sessionsTab, "<div");
|
int opened = StringUtils.countMatches(sessionsTab[0], "<div");
|
||||||
int closed = StringUtils.countMatches(sessionsTab, "</div");
|
int closed = StringUtils.countMatches(sessionsTab[0], "</div");
|
||||||
|
|
||||||
assertEquals(opened, closed);
|
assertEquals(opened, closed);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user