diff --git a/Plan/pom.xml b/Plan/pom.xml
index 20cc29137..b07b93fe0 100644
--- a/Plan/pom.xml
+++ b/Plan/pom.xml
@@ -56,12 +56,6 @@
provided
-
- com.googlecode.charts4j
- charts4j
- 1.3
- compile
-
clean package install
diff --git a/Plan/src/main/java/com/djrapitops/plan/Phrase.java b/Plan/src/main/java/com/djrapitops/plan/Phrase.java
index 803f651ae..4fffd96e6 100644
--- a/Plan/src/main/java/com/djrapitops/plan/Phrase.java
+++ b/Plan/src/main/java/com/djrapitops/plan/Phrase.java
@@ -44,16 +44,6 @@ public enum Phrase {
COLOR_MAIN(ChatColor.getByChar(getPlugin(Plan.class).getConfig().getString("Customization.Colors.Commands.Main").charAt(1))),
COLOR_SEC(ChatColor.getByChar(getPlugin(Plan.class).getConfig().getString("Customization.Colors.Commands.Secondary").charAt(1))),
COLOR_TER(ChatColor.getByChar(getPlugin(Plan.class).getConfig().getString("Customization.Colors.Commands.Highlight").charAt(1))),
- HCOLOR_ACT_ONL(getPlugin(Plan.class).getConfig().getString("Customization.Colors.HTML.ActivityGraph.OnlinePlayers")),
- HCOLOR_ACT_NEW(getPlugin(Plan.class).getConfig().getString("Customization.Colors.HTML.ActivityGraph.NewPlayers")),
- HCOLOR_GMP_0(getPlugin(Plan.class).getConfig().getString("Customization.Colors.HTML.GamemodePie.Survival")),
- HCOLOR_GMP_1(getPlugin(Plan.class).getConfig().getString("Customization.Colors.HTML.GamemodePie.Creative")),
- HCOLOR_GMP_2(getPlugin(Plan.class).getConfig().getString("Customization.Colors.HTML.GamemodePie.Adventure")),
- HCOLOR_GMP_3(getPlugin(Plan.class).getConfig().getString("Customization.Colors.HTML.GamemodePie.Spectator")),
- HCOLOR_ACTP_ACT(getPlugin(Plan.class).getConfig().getString("Customization.Colors.HTML.ActivityPie.Active")),
- HCOLOR_ACTP_BAN(getPlugin(Plan.class).getConfig().getString("Customization.Colors.HTML.ActivityPie.Banned")),
- HCOLOR_ACTP_INA(getPlugin(Plan.class).getConfig().getString("Customization.Colors.HTML.ActivityPie.Inactive")),
- HCOLOR_ACTP_JON(getPlugin(Plan.class).getConfig().getString("Customization.Colors.HTML.ActivityPie.JoinedOnce")),
//
ARROWS_RIGHT("»"),
BALL("•"),
diff --git a/Plan/src/main/java/com/djrapitops/plan/Settings.java b/Plan/src/main/java/com/djrapitops/plan/Settings.java
index 53d11e0a8..4be5b70e0 100644
--- a/Plan/src/main/java/com/djrapitops/plan/Settings.java
+++ b/Plan/src/main/java/com/djrapitops/plan/Settings.java
@@ -30,7 +30,18 @@ public enum Settings {
DEM_MALE("Customization.DemographicsTriggers.Male"),
DEM_IGNORE("Customization.DemographicsTriggers.IgnoreWhen"),
LOCALE("Settings.Locale"),
- SECURITY_CODE("Settings.WebServer.Security.AddressSecurityCode");
+ SECURITY_CODE("Settings.WebServer.Security.AddressSecurityCode"),
+ //
+ HCOLOR_ACT_ONL("Customization.Colors.HTML.ActivityGraph.OnlinePlayers"),
+ HCOLOR_ACT_ONL_FILL("Customization.Colors.HTML.ActivityGraph.OnlinePlayersFill"),
+ HCOLOR_ACTP_ACT("Customization.Colors.HTML.ActivityPie.Active"),
+ HCOLOR_ACTP_BAN("Customization.Colors.HTML.ActivityPie.Banned"),
+ HCOLOR_ACTP_INA("Customization.Colors.HTML.ActivityPie.Inactive"),
+ HCOLOR_ACTP_JON("Customization.Colors.HTML.ActivityPie.JoinedOnce"),
+ HCOLOR_GMP_0("Customization.Colors.HTML.GamemodePie.Survival"),
+ HCOLOR_GMP_1("Customization.Colors.HTML.GamemodePie.Creative"),
+ HCOLOR_GMP_2("Customization.Colors.HTML.GamemodePie.Adventure"),
+ HCOLOR_GMP_3("Customization.Colors.HTML.GamemodePie.Spectator");
private final String configPath;
diff --git a/Plan/src/main/java/com/djrapitops/plan/data/AnalysisData.java b/Plan/src/main/java/com/djrapitops/plan/data/AnalysisData.java
index c2b079d1a..519b1bd07 100644
--- a/Plan/src/main/java/com/djrapitops/plan/data/AnalysisData.java
+++ b/Plan/src/main/java/com/djrapitops/plan/data/AnalysisData.java
@@ -13,15 +13,11 @@ public class AnalysisData {
private long averagePlayTime;
private long totalPlayTime;
private double averageAge;
- private String gmTimesChartImgHtml;
- private String playersChartImgHtmlMonth;
- private String playersChartImgHtmlWeek;
- private String playersChartImgHtmlDay;
- private String activityChartImgHtml;
private String top50CommandsListHtml;
private String top20ActivePlayers;
private String recentPlayers;
private String sortablePlayersTable;
+ private String[] playersDataArray;
private int newPlayersMonth;
private int newPlayersWeek;
@@ -53,14 +49,10 @@ public class AnalysisData {
*/
public AnalysisData() {
sortablePlayersTable = Html.ERROR_NOT_SET+"";
- gmTimesChartImgHtml = Html.ERROR_NOT_SET+"";
- playersChartImgHtmlMonth = Html.ERROR_NOT_SET+"";
- playersChartImgHtmlWeek = Html.ERROR_NOT_SET+"";
- playersChartImgHtmlDay = Html.ERROR_NOT_SET+"";
- activityChartImgHtml = Html.ERROR_NOT_SET+"";
top50CommandsListHtml = Html.ERROR_NOT_SET+"";
top20ActivePlayers = Html.ERROR_NOT_SET+"";
recentPlayers = Html.ERROR_NOT_SET+"";
+ playersDataArray = new String[]{"[0]","[\"No data\"]","[0]","[\"No data\"]","[0]","[\"No data\"]"};
}
// Getters and setters v---------------------------------v
@@ -85,49 +77,7 @@ public class AnalysisData {
public void setJoinleaver(int joinleaver) {
this.joinleaver = joinleaver;
}
-
- /**
- * @return HTML String of the Month Activity graph
- */
- public String getPlayersChartImgHtmlMonth() {
- return playersChartImgHtmlMonth;
- }
-
- /**
- * @param playersChartImgHtmlMonth HTML String of the Month Activity graph
- */
- public void setPlayersChartImgHtmlMonth(String playersChartImgHtmlMonth) {
- this.playersChartImgHtmlMonth = playersChartImgHtmlMonth;
- }
-
- /**
- * @return HTML String of the Week Activity graph
- */
- public String getPlayersChartImgHtmlWeek() {
- return playersChartImgHtmlWeek;
- }
-
- /**
- * @param playersChartImgHtmlWeek HTML String of the Week Activity graph
- */
- public void setPlayersChartImgHtmlWeek(String playersChartImgHtmlWeek) {
- this.playersChartImgHtmlWeek = playersChartImgHtmlWeek;
- }
-
- /**
- * @return HTML String of the Day Activity graph
- */
- public String getPlayersChartImgHtmlDay() {
- return playersChartImgHtmlDay;
- }
-
- /**
- * @param playersChartImgHtmlDay HTML String of the Day Activity graph
- */
- public void setPlayersChartImgHtmlDay(String playersChartImgHtmlDay) {
- this.playersChartImgHtmlDay = playersChartImgHtmlDay;
- }
-
+
/**
* @return HTML String of the Top50CommandsList
*/
@@ -311,20 +261,6 @@ public class AnalysisData {
return averageAge;
}
- /**
- * @return HTML String of the GMTimes Piechart
- */
- public String getGmTimesChartImgHtml() {
- return gmTimesChartImgHtml;
- }
-
- /**
- * @return HTML String of the Activity Piechart
- */
- public String getActivityChartImgHtml() {
- return activityChartImgHtml;
- }
-
/**
* @return How many times players have joined.
*/
@@ -360,20 +296,6 @@ public class AnalysisData {
this.averageAge = averageAge;
}
- /**
- * @param gmTimesChartImgHtml HTML String of the GMTimes Piechart
- */
- public void setGmTimesChartImgHtml(String gmTimesChartImgHtml) {
- this.gmTimesChartImgHtml = gmTimesChartImgHtml;
- }
-
- /**
- * @param activityChartImgHtml HTML String of the Activity Piechart
- */
- public void setActivityChartImgHtml(String activityChartImgHtml) {
- this.activityChartImgHtml = activityChartImgHtml;
- }
-
/**
* @param totalLoginTimes How many times playes have logged in
*/
@@ -451,4 +373,12 @@ public class AnalysisData {
public void setTotaldeaths(long totaldeaths) {
this.totaldeaths = totaldeaths;
}
+
+ public String[] getPlayersDataArray() {
+ return playersDataArray;
+ }
+
+ public void setPlayersDataArray(String[] playersDataArray) {
+ this.playersDataArray = playersDataArray;
+ }
}
diff --git a/Plan/src/main/java/com/djrapitops/plan/ui/graphs/ActivityPieChartCreator.java b/Plan/src/main/java/com/djrapitops/plan/ui/graphs/ActivityPieChartCreator.java
deleted file mode 100644
index 40cc0286e..000000000
--- a/Plan/src/main/java/com/djrapitops/plan/ui/graphs/ActivityPieChartCreator.java
+++ /dev/null
@@ -1,55 +0,0 @@
-package main.java.com.djrapitops.plan.ui.graphs;
-
-import com.googlecode.charts4j.Color;
-import com.googlecode.charts4j.GCharts;
-import com.googlecode.charts4j.PieChart;
-import com.googlecode.charts4j.Slice;
-import main.java.com.djrapitops.plan.Phrase;
-import main.java.com.djrapitops.plan.ui.Html;
-
-/**
- *
- * @author Rsl1122
- */
-public class ActivityPieChartCreator {
-
- /**
- * Creates a image link to Activity Chart.
- *
- * @param totalBanned Number of Banned Players
- * @param active Number of Active Players
- * @param inactive Number of Inactive Players
- * @param joinleaver Number of players who have joined only once
- * @return Url to Image link.
- */
- public static String createChart(int totalBanned, int active, int inactive, int joinleaver) {
-
- int total = totalBanned + active + inactive + joinleaver;
-
- int banPerc = (int) ((totalBanned * 1.0 / total) * 100);
- int inacPerc = (int) ((inactive * 1.0 / total) * 100);
- int actPerc = (int) ((active * 1.0 / total) * 100);
- int joinlPerc = (int) ((joinleaver * 1.0 / total) * 100);
- while (banPerc + inacPerc + actPerc + joinlPerc < 100) {
- actPerc++;
- }
- while (banPerc + inacPerc + actPerc + joinlPerc > 100) {
- actPerc--;
- }
- String labelBanned = Html.GRAPH_BANNED.parse();
- String labelUnknown = Html.GRAPH_UNKNOWN.parse();
- String labelInactive = Html.GRAPH_INACTIVE.parse();
- String labelActive = Html.GRAPH_ACTIVE.parse();
-
- Slice bannedSlice = Slice.newSlice((int) (banPerc), Color.newColor(Phrase.HCOLOR_ACTP_BAN + ""), labelBanned, labelBanned);
- Slice joinLeaverSlice = Slice.newSlice((int) (joinlPerc), Color.newColor(Phrase.HCOLOR_ACTP_JON + ""), labelUnknown, labelUnknown);
- Slice inactiveSlice = Slice.newSlice((int) (inacPerc), Color.newColor(Phrase.HCOLOR_ACTP_INA + ""), labelInactive, labelInactive);
- Slice activeSlice = Slice.newSlice((int) (actPerc), Color.newColor(Phrase.HCOLOR_ACTP_ACT + ""), labelActive, labelActive);
-
- PieChart refChart = GCharts.newPieChart(activeSlice, bannedSlice, inactiveSlice, joinLeaverSlice);
- refChart.setSize(400, 150);
- refChart.setThreeD(true);
- String refURL = refChart.toURLString();
- return refURL;
- }
-}
diff --git a/Plan/src/main/java/com/djrapitops/plan/ui/graphs/GMTimesPieChartCreator.java b/Plan/src/main/java/com/djrapitops/plan/ui/graphs/GMTimesPieChartCreator.java
deleted file mode 100644
index 2d35cc6b0..000000000
--- a/Plan/src/main/java/com/djrapitops/plan/ui/graphs/GMTimesPieChartCreator.java
+++ /dev/null
@@ -1,86 +0,0 @@
-package main.java.com.djrapitops.plan.ui.graphs;
-
-import com.googlecode.charts4j.Color;
-import com.googlecode.charts4j.GCharts;
-import com.googlecode.charts4j.PieChart;
-import com.googlecode.charts4j.Slice;
-import java.util.HashMap;
-import main.java.com.djrapitops.plan.Phrase;
-import org.bukkit.GameMode;
-
-/**
- *
- * @author Rsl1122
- */
-public class GMTimesPieChartCreator {
-
- /**
- * Creates a link to New image of the Gamemode usage chart without total.
- *
- * Calculated total is not required.
- *
- * @param gmTimes Map with all 4 Gamemodes and responding times spent in
- * them
- * @return Url of charts4j image link.
- */
- public static String createChart(HashMap gmTimes) {
- Long gm3;
- try {
- gm3 = gmTimes.get(GameMode.SPECTATOR);
- if (gm3 == null) {
- gm3 = (long) 0;
- }
- } catch (NoSuchFieldError e) {
- gm3 = (long) 0;
- }
- long total = gmTimes.get(GameMode.SURVIVAL) + gmTimes.get(GameMode.CREATIVE)
- + gmTimes.get(GameMode.ADVENTURE) + gm3;
-
- return createChart(gmTimes, total);
- }
-
- /**
- * Creates a link to New image of the Gamemode usage chart.
- *
- * @param gmTimes Map with all 4 Gamemodes and responding times spent in
- * them
- * @param total Time spent in all 4 gamemodes.
- * @return Url of charts4j image link.
- */
- public static String createChart(HashMap gmTimes, long total) {
- long gmZero = gmTimes.get(GameMode.SURVIVAL);
- long gmOne = gmTimes.get(GameMode.CREATIVE);
- long gmTwo = gmTimes.get(GameMode.ADVENTURE);
- Long gmThree;
- try {
- gmThree = gmTimes.get(GameMode.SPECTATOR);
- if (gmThree == null) {
- gmThree = (long) 0;
- }
- } catch (NoSuchFieldError e) {
- gmThree = (long) 0;
- }
- int zero = (int) ((gmZero * 1.0 / total) * 100);
- int one = (int) ((gmOne * 1.0 / total) * 100);
- int two = (int) ((gmTwo * 1.0 / total) * 100);
- int three = (int) ((gmThree * 1.0 / total) * 100);
- while (zero + one + two + three < 100) {
- one++;
- }
- while (zero + one + two + three > 100) {
- one--;
- }
-
- Slice s1 = Slice.newSlice(zero, Color.newColor(Phrase.HCOLOR_GMP_0 + ""), "Survival", "Survival");
- Slice s2 = Slice.newSlice(one, Color.newColor(Phrase.HCOLOR_GMP_1 + ""), "Creative", "Creative");
- Slice s3 = Slice.newSlice(two, Color.newColor(Phrase.HCOLOR_GMP_2 + ""), "Adventure", "Adventure");
- Slice s4 = Slice.newSlice(three, Color.newColor(Phrase.HCOLOR_GMP_3 + ""), "Spectator", "Spectator");
-
- PieChart refChart = GCharts.newPieChart(s1, s2, s3, s4);
- refChart.setSize(400, 150);
- refChart.setThreeD(true);
- String refURL = refChart.toURLString();
- return refURL;
- }
-
-}
diff --git a/Plan/src/main/java/com/djrapitops/plan/ui/graphs/PlayerActivityGraphCreator.java b/Plan/src/main/java/com/djrapitops/plan/ui/graphs/PlayerActivityGraphCreator.java
index 2ee74af48..31fc0dc12 100644
--- a/Plan/src/main/java/com/djrapitops/plan/ui/graphs/PlayerActivityGraphCreator.java
+++ b/Plan/src/main/java/com/djrapitops/plan/ui/graphs/PlayerActivityGraphCreator.java
@@ -1,21 +1,11 @@
package main.java.com.djrapitops.plan.ui.graphs;
-import com.googlecode.charts4j.AxisLabels;
-import com.googlecode.charts4j.AxisLabelsFactory;
-import com.googlecode.charts4j.Color;
-import com.googlecode.charts4j.Data;
-import com.googlecode.charts4j.GCharts;
-import com.googlecode.charts4j.LineChart;
-import com.googlecode.charts4j.Plots;
-import com.googlecode.charts4j.XYLine;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.concurrent.CopyOnWriteArrayList;
-import main.java.com.djrapitops.plan.Phrase;
import main.java.com.djrapitops.plan.Plan;
import main.java.com.djrapitops.plan.data.SessionData;
-import main.java.com.djrapitops.plan.ui.Html;
import main.java.com.djrapitops.plan.utilities.FormatUtils;
import static org.bukkit.plugin.java.JavaPlugin.getPlugin;
@@ -25,15 +15,9 @@ import static org.bukkit.plugin.java.JavaPlugin.getPlugin;
*/
public class PlayerActivityGraphCreator {
- /**
- * Creates a new url for a PlayerActivity graph.
- *
- * @param sessionData SessionData of Players in scale.
- * @param scale Long in ms, time the graph will be limited to.
- * @return Url of charts4j image link.
- */
- public static String createChart(List sessionData, long scale) {
-
+ public static String[] generateDataArray(List sessionData, long scale) {
+ Plan plugin = getPlugin(Plan.class);
+ int maxPlayers = plugin.getHandler().getMaxPlayers();
long now = new Date().toInstant().getEpochSecond() * (long) 1000;
long nowMinusScale = now - scale;
CopyOnWriteArrayList sessionStarts = new CopyOnWriteArrayList<>();
@@ -45,14 +29,8 @@ public class PlayerActivityGraphCreator {
sessionEnds.add(session.getSessionEnd());
sessionStarts.add(session.getSessionStart());
});
- List xListDate = new ArrayList<>();
- List pYList = new ArrayList<>();
-
- List xDateAxisLabels = new ArrayList<>();
- List xDateAxisLabelsLocations = new ArrayList<>();
- Plan plugin = getPlugin(Plan.class);
-
- int maxPlayers = plugin.getHandler().getMaxPlayers();
+ List playersOnline = new ArrayList<>();
+ List labels = new ArrayList<>();
int lastPValue = 0;
int lastSavedPValue = -1;
@@ -75,45 +53,17 @@ public class PlayerActivityGraphCreator {
.reduce(amount, Integer::sum);
lastPValue -= amount;
}
- Double scaledDateValue = ((i - nowMinusScale) * 1.0 / scale) * 100;
- Double scaledPlayerValue = (lastPValue * 1.0 / maxPlayers) * 100;
- if (lastSavedPValue != lastPValue || i - lastSaveI > (scale / (long) 100)) {
+ if (lastSavedPValue != lastPValue || i - lastSaveI > (scale / (long) 75)) {
lastSaveI = i;
- xListDate.add(scaledDateValue);
- pYList.add((lastSavedPValue * 1.0 / maxPlayers) * 100);
+ labels.add("\""+FormatUtils.formatTimeStamp(i+"")+"\"");
lastSavedPValue = lastPValue;
- xListDate.add(scaledDateValue);
- pYList.add(scaledPlayerValue);
+ playersOnline.add(lastPValue);
}
}
-
- // Date labels
- for (long j = 0; j <= 8; j++) {
- long scaleAddition = j * (scale / 8);
- xDateAxisLabels.add(FormatUtils.formatTimeStamp("" + (nowMinusScale + scaleAddition)));
- xDateAxisLabelsLocations.add((scaleAddition * 1.0 / scale) * 100);
- }
- // Player labels
- List yAxisLabels = new ArrayList<>();
- for (int k = 0; k <= maxPlayers; k++) {
- if (k % 5 == 0) {
- yAxisLabels.add("" + k);
- }
- }
-
- AxisLabels xAxisLabels = AxisLabelsFactory.newAxisLabels(xDateAxisLabels, xDateAxisLabelsLocations);
- Data xData = Data.newData(xListDate);
- Data pYData = Data.newData(pYList);
-
- XYLine playerLine = Plots.newXYLine(xData, pYData, Color.newColor(Phrase.HCOLOR_ACT_ONL + ""), Html.GRAPH_ONLINE.parse());
- LineChart chart = GCharts.newLineChart(playerLine);
- chart.addXAxisLabels(xAxisLabels);
- chart.addTopAxisLabels(AxisLabelsFactory.newAxisLabels(Html.GRAPH_PLAYERS.parse(), 1));
- chart.addYAxisLabels(AxisLabelsFactory.newAxisLabels(yAxisLabels));
- chart.addRightAxisLabels(AxisLabelsFactory.newAxisLabels(Html.GRAPH_DATE.parse(), 4));
- chart.setSize(1000, 250);
- return chart.toURLString();
+ playersOnline.add(0);
+ playersOnline.add(maxPlayers);
+ return new String[]{playersOnline.toString(), labels.toString()};
}
}
diff --git a/Plan/src/main/java/com/djrapitops/plan/utilities/Analysis.java b/Plan/src/main/java/com/djrapitops/plan/utilities/Analysis.java
index 2131cfc29..f487b9026 100644
--- a/Plan/src/main/java/com/djrapitops/plan/utilities/Analysis.java
+++ b/Plan/src/main/java/com/djrapitops/plan/utilities/Analysis.java
@@ -16,10 +16,12 @@ import main.java.com.djrapitops.plan.data.UserData;
import main.java.com.djrapitops.plan.data.cache.AnalysisCacheHandler;
import main.java.com.djrapitops.plan.data.cache.InspectCacheHandler;
import main.java.com.djrapitops.plan.ui.Html;
+import main.java.com.djrapitops.plan.ui.graphs.PlayerActivityGraphCreator;
import org.bukkit.GameMode;
import org.bukkit.scheduler.BukkitRunnable;
import org.bukkit.scheduler.BukkitTask;
import static org.bukkit.Bukkit.getOfflinePlayer;
+import static org.bukkit.Bukkit.getOfflinePlayer;
/**
*
@@ -175,8 +177,6 @@ public class Analysis {
}
private void createActivityVisalization(int totalBanned, int active, int inactive, int joinleaver, AnalysisData data) {
- String activityPieChartHtml = AnalysisUtils.createActivityPieChart(totalBanned, active, inactive, joinleaver);
- data.setActivityChartImgHtml(activityPieChartHtml);
data.setActive(active);
data.setInactive(inactive);
data.setBanned(totalBanned);
@@ -208,8 +208,6 @@ public class Analysis {
totalGmTimes.put(GameMode.SPECTATOR, gmThree);
} catch (NoSuchFieldError e) {
}
- String serverGMChartHtml = AnalysisUtils.createGMPieChart(totalGmTimes, gmTotal);
- data.setGmTimesChartImgHtml(serverGMChartHtml);
data.setGm0Perc((gmZero * 1.0 / gmTotal));
data.setGm1Perc((gmOne * 1.0 / gmTotal));
data.setGm2Perc((gmTwo * 1.0 / gmTotal));
@@ -218,18 +216,20 @@ public class Analysis {
private void createPlayerActivityGraphs(AnalysisData data, List sData, List registered) {
long now = new Date().toInstant().getEpochSecond() * (long) 1000;
- long scaleMonth = (long) 2592000 * (long) 1000;
- String[] urlAndNumber = AnalysisUtils.analyzeSessionData(sData, registered, scaleMonth, now);
- data.setPlayersChartImgHtmlMonth(urlAndNumber[0]);
- data.setNewPlayersMonth(Integer.parseInt(urlAndNumber[1]));
- long scaleWeek = 604800 * 1000;
- urlAndNumber = AnalysisUtils.analyzeSessionData(sData, registered, scaleWeek, now);
- data.setPlayersChartImgHtmlWeek(urlAndNumber[0]);
- data.setNewPlayersWeek(Integer.parseInt(urlAndNumber[1]));
+
long scaleDay = 86400 * 1000;
- urlAndNumber = AnalysisUtils.analyzeSessionData(sData, registered, scaleDay, now);
- data.setPlayersChartImgHtmlDay(urlAndNumber[0]);
- data.setNewPlayersDay(Integer.parseInt(urlAndNumber[1]));
+ long scaleWeek = 604800 * 1000;
+ long scaleMonth = (long) 2592000 * (long) 1000;
+
+ data.setNewPlayersDay(AnalysisUtils.getNewPlayers(registered, scaleDay, now));
+ data.setNewPlayersWeek(AnalysisUtils.getNewPlayers(registered, scaleWeek, now));
+ data.setNewPlayersMonth(AnalysisUtils.getNewPlayers(registered, scaleMonth, now));
+
+ String[] dayArray = PlayerActivityGraphCreator.generateDataArray(sData, scaleDay);
+ String[] weekArray = PlayerActivityGraphCreator.generateDataArray(sData, scaleWeek);
+ String[] monthArray = PlayerActivityGraphCreator.generateDataArray(sData, scaleMonth);
+
+ data.setPlayersDataArray(new String[]{dayArray[0], dayArray[1], weekArray[0], weekArray[1], monthArray[0], monthArray[1]});
}
}).runTaskAsynchronously(plugin);
}
diff --git a/Plan/src/main/java/com/djrapitops/plan/utilities/AnalysisUtils.java b/Plan/src/main/java/com/djrapitops/plan/utilities/AnalysisUtils.java
index c0c1753bd..9b4bb1334 100644
--- a/Plan/src/main/java/com/djrapitops/plan/utilities/AnalysisUtils.java
+++ b/Plan/src/main/java/com/djrapitops/plan/utilities/AnalysisUtils.java
@@ -10,8 +10,6 @@ import main.java.com.djrapitops.plan.Settings;
import main.java.com.djrapitops.plan.data.SessionData;
import main.java.com.djrapitops.plan.data.UserData;
import main.java.com.djrapitops.plan.ui.Html;
-import main.java.com.djrapitops.plan.ui.graphs.ActivityPieChartCreator;
-import main.java.com.djrapitops.plan.ui.graphs.GMTimesPieChartCreator;
import main.java.com.djrapitops.plan.ui.graphs.PlayerActivityGraphCreator;
import main.java.com.djrapitops.plan.ui.tables.SortableCommandUseTableCreator;
import main.java.com.djrapitops.plan.ui.tables.SortablePlayersTableCreator;
@@ -24,36 +22,6 @@ import org.bukkit.GameMode;
*/
public class AnalysisUtils {
- /**
- * Creates a GMTimesPieChart image HTML.
- *
- * @param gmTimes HashMap of gamemodes and time in ms how long has been
- * played in them.
- * @return Html img tag with url.
- */
- public static String createGMPieChart(HashMap gmTimes) {
- String url = GMTimesPieChartCreator.createChart(gmTimes);
- return Html.IMG.parse(url);
- }
-
- /**
- * Creates a GMTimesPieChart image HTML.
- *
- * @param gmTimes HashMap of gamemodes and time in ms how long has been
- * played in them.
- * @param total Total time played in all gamemodes
- * @return Html img tag with url.
- */
- public static String createGMPieChart(HashMap gmTimes, long total) {
- String url = GMTimesPieChartCreator.createChart(gmTimes, total);
- return Html.IMG.parse(url);
- }
-
- static String createPlayerActivityGraph(List sessionData, long scale) {
- String url = PlayerActivityGraphCreator.createChart(sessionData, scale);
- return Html.IMG.parse(url);
- }
-
public static boolean isActive(long lastPlayed, long playTime, int loginTimes) {
int timeToActive = Settings.ANALYSIS_MINUTES_FOR_ACTIVE.getNumber();
if (timeToActive < 0) {
@@ -70,11 +38,6 @@ public class AnalysisUtils {
return false;
}
- static String createActivityPieChart(int totalBanned, int active, int inactive, int joinleaver) {
- String url = ActivityPieChartCreator.createChart(totalBanned, active, inactive, joinleaver);
- return Html.IMG.parse(url);
- }
-
static String createTableOutOfHashMap(HashMap commandUse) {
return SortableCommandUseTableCreator.createSortedCommandUseTable(commandUse);
}
@@ -103,22 +66,12 @@ public class AnalysisUtils {
return html;
}
- static String[] analyzeSessionData(List sessionData, List registered, long scale, long now) {
- String[] returnA = new String[2];
- List inScale = new ArrayList<>();
- sessionData.stream()
- .filter((s) -> (s.getSessionStart() > now - scale))
- .forEach((s) -> {
- inScale.add(s);
- });
- returnA[0] = createPlayerActivityGraph(inScale, scale);
-
+ static int getNewPlayers(List registered, long scale, long now) {
int newPlayers = 0;
// Filters out register dates before scale
newPlayers = registered.stream()
.filter((reg) -> (reg > now - scale))
.map((_item) -> 1).reduce(newPlayers, Integer::sum);
- returnA[1] = "" + newPlayers;
- return returnA;
+ return newPlayers;
}
}
diff --git a/Plan/src/main/java/com/djrapitops/plan/utilities/PlaceholderUtils.java b/Plan/src/main/java/com/djrapitops/plan/utilities/PlaceholderUtils.java
index 4b22caf06..d42974f70 100644
--- a/Plan/src/main/java/com/djrapitops/plan/utilities/PlaceholderUtils.java
+++ b/Plan/src/main/java/com/djrapitops/plan/utilities/PlaceholderUtils.java
@@ -1,6 +1,7 @@
package main.java.com.djrapitops.plan.utilities;
import java.io.FileNotFoundException;
+import java.util.Arrays;
import java.util.Date;
import java.util.HashMap;
import java.util.UUID;
@@ -28,8 +29,6 @@ public class PlaceholderUtils {
*/
public static HashMap getAnalysisReplaceRules(AnalysisData data) {
HashMap replaceMap = new HashMap<>();
- replaceMap.put("%activitypiechart%", data.getActivityChartImgHtml());
- replaceMap.put("%gmpiechart%", data.getGmTimesChartImgHtml());
replaceMap.put("%gm0%", (int) (data.getGm0Perc() * 100) + "%");
replaceMap.put("%gm1%", (int) (data.getGm1Perc() * 100) + "%");
replaceMap.put("%gm2%", (int) (data.getGm2Perc() * 100) + "%");
@@ -39,9 +38,6 @@ public class PlaceholderUtils {
replaceMap.put("%inactive%", "" + data.getInactive());
replaceMap.put("%joinleaver%", "" + data.getJoinleaver());
replaceMap.put("%activitytotal%", "" + data.getTotal());
- replaceMap.put("%playerchartmonth%", data.getPlayersChartImgHtmlMonth());
- replaceMap.put("%playerchartweek%", data.getPlayersChartImgHtmlWeek());
- replaceMap.put("%playerchartday%", data.getPlayersChartImgHtmlDay());
replaceMap.put("%npday%", data.getNewPlayersDay() + "");
replaceMap.put("%npweek%", data.getNewPlayersWeek() + "");
replaceMap.put("%npmonth%", data.getNewPlayersMonth() + "");
@@ -61,6 +57,35 @@ public class PlaceholderUtils {
replaceMap.put("%version%", plugin.getDescription().getVersion());
replaceMap.put("%planlite%", "");
replaceMap.put("%sortabletable%", data.getSortablePlayersTable());
+ replaceMap.put("%dataday%", data.getPlayersDataArray()[0]);
+ replaceMap.put("%labelsday%", data.getPlayersDataArray()[1]);
+ replaceMap.put("%dataweek%", data.getPlayersDataArray()[2]);
+ replaceMap.put("%labelsweek%", data.getPlayersDataArray()[3]);
+ replaceMap.put("%datamonth%", data.getPlayersDataArray()[4]);
+ replaceMap.put("%labelsmonth%", data.getPlayersDataArray()[5]);
+ replaceMap.put("%playersgraphcolor%", Settings.HCOLOR_ACT_ONL + "");
+ replaceMap.put("%playersgraphfill%", Settings.HCOLOR_ACT_ONL_FILL + "");
+ String[] activityLabels = new String[]{
+ "\"" + Html.GRAPH_ACTIVE.parse() + "\"",
+ "\"" + Html.GRAPH_INACTIVE.parse() + "\"",
+ "\"" + Html.GRAPH_UNKNOWN.parse() + "\"",
+ "\"" + Html.GRAPH_BANNED.parse() + "\""
+ };
+ replaceMap.put("%labelsactivity%", Arrays.toString(activityLabels));
+ String[] activityData = new String[]{data.getActive() + "", data.getInactive() + "", data.getJoinleaver()+ "", data.getBanned() + ""};
+ replaceMap.put("%activitydata%", Arrays.toString(activityData));
+ replaceMap.put("%activitycolors%", "\"#" + Settings.HCOLOR_ACTP_ACT
+ + "\",\"#" + Settings.HCOLOR_ACTP_INA + "\",\"#" + Settings.HCOLOR_ACTP_JON + "\",\"#" + Settings.HCOLOR_ACTP_BAN + "\"");
+ String[] gmData = new String[]{
+ (data.getGm0Perc() * 100) + "",
+ (data.getGm1Perc() * 100) + "",
+ (data.getGm2Perc() * 100) + "",
+ (data.getGm3Perc() * 100) + ""
+ };
+ replaceMap.put("%gmdata%", Arrays.toString(gmData));
+ replaceMap.put("%gmlabels%", "[\"Survival\", \"Creative\", \"Adventure\", \"Spectator\"]");
+ replaceMap.put("%gmcolors%", "\"#" + Settings.HCOLOR_GMP_0 + "\",\"#" + Settings.HCOLOR_GMP_1
+ + "\",\"#" + Settings.HCOLOR_GMP_2 + "\",\"#" + Settings.HCOLOR_GMP_3 + "\"");
replaceMap.putAll(plugin.getHookHandler().getAdditionalAnalysisReplaceRules());
return replaceMap;
}
@@ -86,10 +111,6 @@ public class PlaceholderUtils {
replaceMap.put("%age%", (age != -1) ? "" + age : Phrase.DEM_UNKNOWN + "");
replaceMap.put("%gender%", "" + data.getDemData().getGender().name().toLowerCase());
HashMap gmTimes = data.getGmTimes();
- replaceMap.put("%gmpiechart%", AnalysisUtils.createGMPieChart(gmTimes));
- long gmZero = gmTimes.get(GameMode.SURVIVAL);
- long gmOne = gmTimes.get(GameMode.CREATIVE);
- long gmTwo = gmTimes.get(GameMode.ADVENTURE);
long gmThree;
try {
Long gm3 = gmTimes.get(GameMode.SPECTATOR);
@@ -100,11 +121,21 @@ public class PlaceholderUtils {
} catch (NoSuchFieldError e) {
gmThree = 0;
}
- long total = gmZero + gmOne + gmTwo + gmThree;
- replaceMap.put("%gm0%", FormatUtils.formatTimeAmount("" + gmZero));
- replaceMap.put("%gm1%", FormatUtils.formatTimeAmount("" + gmOne));
- replaceMap.put("%gm2%", FormatUtils.formatTimeAmount("" + gmTwo));
- replaceMap.put("%gm3%", FormatUtils.formatTimeAmount("" + gmThree));
+ long[] gmData = new long[]{
+ gmTimes.get(GameMode.SURVIVAL),
+ gmTimes.get(GameMode.CREATIVE),
+ gmTimes.get(GameMode.ADVENTURE),
+ gmThree
+ };
+ long total = gmData[0] + gmData[1] + gmData[2] + gmData[3];
+ replaceMap.put("%gm0%", FormatUtils.formatTimeAmount("" + gmData[0]));
+ replaceMap.put("%gm1%", FormatUtils.formatTimeAmount("" + gmData[1]));
+ replaceMap.put("%gm2%", FormatUtils.formatTimeAmount("" + gmData[2]));
+ replaceMap.put("%gm3%", FormatUtils.formatTimeAmount("" + gmData[3]));
+ replaceMap.put("%gmdata%", Arrays.toString(gmData));
+ replaceMap.put("%gmlabels%", "[\"Survival\", \"Creative\", \"Adventure\", \"Spectator\"]");
+ replaceMap.put("%gmcolors%", "\"#" + Settings.HCOLOR_GMP_0 + "\",\"#" + Settings.HCOLOR_GMP_1
+ + "\",\"#" + Settings.HCOLOR_GMP_2 + "\",\"#" + Settings.HCOLOR_GMP_3 + "\"");
replaceMap.put("%gmtotal%", FormatUtils.formatTimeAmount("" + total));
replaceMap.put("%ips%", (showIPandUUID ? data.getIps().toString() : Html.HIDDEN.parse()));
replaceMap.put("%nicknames%", FormatUtils.swapColorsToSpan(data.getNicknames().toString()));
diff --git a/Plan/src/main/resources/analysis.html b/Plan/src/main/resources/analysis.html
index 97e687478..590c871a0 100644
--- a/Plan/src/main/resources/analysis.html
+++ b/Plan/src/main/resources/analysis.html
@@ -5,9 +5,7 @@
Plan | Server Analysis
-
-
-
+