mirror of
https://github.com/plan-player-analytics/Plan.git
synced 2025-02-24 08:12:25 +01:00
Fixes PluginData Playerlist
This commit is contained in:
parent
e60a9a77d7
commit
580daf9796
@ -48,4 +48,8 @@ public final class AnalysisContainer extends InspectContainer {
|
|||||||
public boolean isEmpty() {
|
public boolean isEmpty() {
|
||||||
return playerTableValues.isEmpty() && super.isEmpty();
|
return playerTableValues.isEmpty() && super.isEmpty();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean hasPlayerTableValues() {
|
||||||
|
return !playerTableValues.isEmpty();
|
||||||
|
}
|
||||||
}
|
}
|
@ -76,4 +76,8 @@ public class InspectContainer {
|
|||||||
public boolean isEmpty() {
|
public boolean isEmpty() {
|
||||||
return values.isEmpty() && html.isEmpty() && tables.isEmpty();
|
return values.isEmpty() && html.isEmpty() && tables.isEmpty();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public final boolean hasValues() {
|
||||||
|
return !values.isEmpty();
|
||||||
|
}
|
||||||
}
|
}
|
@ -69,7 +69,7 @@ public abstract class PluginData {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public final String getWithIcon(String text, String icon) {
|
public final String getWithIcon(String text, String icon) {
|
||||||
return getWithIcon(text, icon, "black");
|
return getWithIcon(text, icon, "");
|
||||||
}
|
}
|
||||||
|
|
||||||
public final String getWithIcon(String text, String icon, String color) {
|
public final String getWithIcon(String text, String icon, String color) {
|
||||||
|
@ -4,6 +4,7 @@
|
|||||||
*/
|
*/
|
||||||
package main.java.com.djrapitops.plan.data.additional;
|
package main.java.com.djrapitops.plan.data.additional;
|
||||||
|
|
||||||
|
import main.java.com.djrapitops.plan.utilities.FormatUtils;
|
||||||
import main.java.com.djrapitops.plan.utilities.html.Html;
|
import main.java.com.djrapitops.plan.utilities.html.Html;
|
||||||
|
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
@ -32,6 +33,11 @@ public final class TableContainer {
|
|||||||
values = new ArrayList<>();
|
values = new ArrayList<>();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public TableContainer(boolean players, String... header) {
|
||||||
|
this.header = FormatUtils.mergeArrays(new String[]{Html.FONT_AWESOME_ICON.parse("user") + " Player"}, header);
|
||||||
|
values = new ArrayList<>();
|
||||||
|
}
|
||||||
|
|
||||||
public void addRow(Serializable... values) {
|
public void addRow(Serializable... values) {
|
||||||
this.values.add(values);
|
this.values.add(values);
|
||||||
}
|
}
|
||||||
@ -45,11 +51,10 @@ public final class TableContainer {
|
|||||||
|
|
||||||
private String parseBody() {
|
private String parseBody() {
|
||||||
StringBuilder body = new StringBuilder();
|
StringBuilder body = new StringBuilder();
|
||||||
|
|
||||||
if (values.isEmpty()) {
|
if (values.isEmpty()) {
|
||||||
addRow("No Data");
|
addRow("No Data");
|
||||||
}
|
}
|
||||||
|
|
||||||
body.append("<tbody>");
|
|
||||||
for (Serializable[] row : values) {
|
for (Serializable[] row : values) {
|
||||||
int maxIndex = row.length - 1;
|
int maxIndex = row.length - 1;
|
||||||
body.append("<tr>");
|
body.append("<tr>");
|
||||||
@ -64,7 +69,6 @@ public final class TableContainer {
|
|||||||
}
|
}
|
||||||
body.append("</tr>");
|
body.append("</tr>");
|
||||||
}
|
}
|
||||||
body.append("</tbody>");
|
|
||||||
|
|
||||||
return Html.TABLE_BODY.parse(body.toString());
|
return Html.TABLE_BODY.parse(body.toString());
|
||||||
}
|
}
|
||||||
|
@ -6,7 +6,9 @@ package main.java.com.djrapitops.plan.utilities.html.structure;
|
|||||||
|
|
||||||
import main.java.com.djrapitops.plan.data.additional.AnalysisContainer;
|
import main.java.com.djrapitops.plan.data.additional.AnalysisContainer;
|
||||||
import main.java.com.djrapitops.plan.data.additional.PluginData;
|
import main.java.com.djrapitops.plan.data.additional.PluginData;
|
||||||
|
import main.java.com.djrapitops.plan.utilities.analysis.Analysis;
|
||||||
import main.java.com.djrapitops.plan.utilities.comparators.PluginDataNameComparator;
|
import main.java.com.djrapitops.plan.utilities.comparators.PluginDataNameComparator;
|
||||||
|
import main.java.com.djrapitops.plan.utilities.html.tables.PlayersTableCreator;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@ -33,7 +35,7 @@ public class AnalysisPluginsTabContentCreator {
|
|||||||
|
|
||||||
generalTab.append("<div class=\"tab\"><div class=\"row clearfix\">");
|
generalTab.append("<div class=\"tab\"><div class=\"row clearfix\">");
|
||||||
|
|
||||||
boolean hadOtherThanTabs = false;
|
boolean hasGeneralBoxes = false;
|
||||||
|
|
||||||
for (PluginData pluginData : order) {
|
for (PluginData pluginData : order) {
|
||||||
AnalysisContainer container = containers.get(pluginData);
|
AnalysisContainer container = containers.get(pluginData);
|
||||||
@ -45,29 +47,41 @@ public class AnalysisPluginsTabContentCreator {
|
|||||||
case WHOLE:
|
case WHOLE:
|
||||||
if (!container.hasOnlyValues()) {
|
if (!container.hasOnlyValues()) {
|
||||||
appendWhole(pluginData, container, generalTab);
|
appendWhole(pluginData, container, generalTab);
|
||||||
hadOtherThanTabs = true;
|
hasGeneralBoxes = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case TWO_THIRDS:
|
case TWO_THIRDS:
|
||||||
if (!container.hasOnlyValues()) {
|
if (!container.hasOnlyValues()) {
|
||||||
appendTwoThirds(pluginData, container, generalTab);
|
appendTwoThirds(pluginData, container, generalTab);
|
||||||
hadOtherThanTabs = true;
|
hasGeneralBoxes = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case THIRD:
|
case THIRD:
|
||||||
default:
|
default:
|
||||||
appendThird(pluginData, container, generalTab);
|
appendThird(pluginData, container, generalTab);
|
||||||
hadOtherThanTabs = true;
|
hasGeneralBoxes = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
generalTab.append("</div></div>");
|
generalTab.append("</div></div>");
|
||||||
|
|
||||||
|
String playerListTab = "<div class=\"tab\">" +
|
||||||
|
"<div class=\"row clearfix\">" +
|
||||||
|
"<div class=\"col-lg-12 col-md-12 col-sm-12 col-xs-12\">" +
|
||||||
|
"<div class=\"card\">" +
|
||||||
|
"<div class=\"header\"><h2><i class=\"fa fa-users\"></i> Plugin Data</h2></div>" +
|
||||||
|
"<div class=\"body\">" +
|
||||||
|
"<div class=\"table-responsive\">" +
|
||||||
|
PlayersTableCreator.createPluginsTable(containers, Analysis.getServerProfile().getPlayers()) +
|
||||||
|
"</div></div></div>" +
|
||||||
|
"</div></div></div>";
|
||||||
|
|
||||||
return new String[]{
|
return new String[]{
|
||||||
hadOtherThanTabs ? "<li><a class=\"nav-button\" href=\"javascript:void(0)\">General</a></li>" + nav.toString() : nav.toString(),
|
(hasGeneralBoxes ? "<li><a class=\"nav-button\" href=\"javascript:void(0)\">General</a></li>" : "")
|
||||||
hadOtherThanTabs ? generalTab.toString() + otherTabs.toString() : otherTabs.toString()
|
+ "<li><a class=\"nav-button\" href=\"javascript:void(0)\">Player Data</a></li>" + nav.toString(),
|
||||||
|
(hasGeneralBoxes ? generalTab.toString() : "") + playerListTab + otherTabs.toString()
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -4,13 +4,16 @@ import com.djrapitops.plugin.api.utility.log.Log;
|
|||||||
import main.java.com.djrapitops.plan.Plan;
|
import main.java.com.djrapitops.plan.Plan;
|
||||||
import main.java.com.djrapitops.plan.Settings;
|
import main.java.com.djrapitops.plan.Settings;
|
||||||
import main.java.com.djrapitops.plan.data.PlayerProfile;
|
import main.java.com.djrapitops.plan.data.PlayerProfile;
|
||||||
|
import main.java.com.djrapitops.plan.data.additional.AnalysisContainer;
|
||||||
|
import main.java.com.djrapitops.plan.data.additional.PluginData;
|
||||||
|
import main.java.com.djrapitops.plan.data.additional.TableContainer;
|
||||||
import main.java.com.djrapitops.plan.utilities.FormatUtils;
|
import main.java.com.djrapitops.plan.utilities.FormatUtils;
|
||||||
import main.java.com.djrapitops.plan.utilities.MiscUtils;
|
import main.java.com.djrapitops.plan.utilities.MiscUtils;
|
||||||
import main.java.com.djrapitops.plan.utilities.comparators.PlayerProfileLastPlayedComparator;
|
|
||||||
import main.java.com.djrapitops.plan.utilities.html.Html;
|
import main.java.com.djrapitops.plan.utilities.html.Html;
|
||||||
|
import org.apache.commons.lang3.ArrayUtils;
|
||||||
|
|
||||||
import java.util.List;
|
import java.io.Serializable;
|
||||||
import java.util.UUID;
|
import java.util.*;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Rsl1122
|
* @author Rsl1122
|
||||||
@ -29,8 +32,6 @@ public class PlayersTableCreator {
|
|||||||
return Html.TABLELINE_PLAYERS.parse("<b>No Players</b>", "", "", "", "", "", "", "", "", "");
|
return Html.TABLELINE_PLAYERS.parse("<b>No Players</b>", "", "", "", "", "", "", "", "", "");
|
||||||
}
|
}
|
||||||
|
|
||||||
players.sort(new PlayerProfileLastPlayedComparator());
|
|
||||||
|
|
||||||
StringBuilder html = new StringBuilder();
|
StringBuilder html = new StringBuilder();
|
||||||
|
|
||||||
long now = MiscUtils.getTime();
|
long now = MiscUtils.getTime();
|
||||||
@ -73,4 +74,63 @@ public class PlayersTableCreator {
|
|||||||
|
|
||||||
return html.toString();
|
return html.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static String createPluginsTable(Map<PluginData, AnalysisContainer> containers, List<PlayerProfile> players) {
|
||||||
|
TreeMap<String, Map<UUID, ? extends Serializable>> data = new TreeMap<>();
|
||||||
|
for (AnalysisContainer container : containers.values()) {
|
||||||
|
if (!container.hasPlayerTableValues()) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
data.putAll(container.getPlayerTableValues());
|
||||||
|
}
|
||||||
|
|
||||||
|
List<String> header = new ArrayList<>(data.keySet());
|
||||||
|
Collections.sort(header);
|
||||||
|
|
||||||
|
int size = header.size();
|
||||||
|
TableContainer tableContainer = new TableContainer(true, header.toArray(new String[size]));
|
||||||
|
|
||||||
|
try {
|
||||||
|
if (players.isEmpty()) {
|
||||||
|
tableContainer.addRow("<b>No Players</b>");
|
||||||
|
throw new IllegalArgumentException("No players");
|
||||||
|
}
|
||||||
|
|
||||||
|
Map<UUID, String[]> sortedData = new HashMap<>();
|
||||||
|
|
||||||
|
for (PlayerProfile profile : players) {
|
||||||
|
UUID uuid = profile.getUuid();
|
||||||
|
String[] playerdata = new String[size];
|
||||||
|
for (int i = 0; i < size; i++) {
|
||||||
|
String label = header.get(i);
|
||||||
|
Map<UUID, ? extends Serializable> playerSpecificData = data.getOrDefault(label, new HashMap<>());
|
||||||
|
Serializable value = playerSpecificData.get(uuid);
|
||||||
|
if (value != null) {
|
||||||
|
playerdata[i] = value.toString();
|
||||||
|
} else {
|
||||||
|
playerdata[i] = "-";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
sortedData.put(uuid, playerdata);
|
||||||
|
}
|
||||||
|
|
||||||
|
int i = 0;
|
||||||
|
for (PlayerProfile profile : players) {
|
||||||
|
if (i >= 2000) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
UUID uuid = profile.getUuid();
|
||||||
|
String link = Html.LINK_EXTERNAL.parse(Plan.getPlanAPI().getPlayerInspectPageLink(profile.getName()), profile.getName());
|
||||||
|
|
||||||
|
String[] playerData = FormatUtils.mergeArrays(new String[]{link}, sortedData.getOrDefault(uuid, new String[]{}));
|
||||||
|
tableContainer.addRow(ArrayUtils.addAll(playerData));
|
||||||
|
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
} catch (IllegalArgumentException ignored) {
|
||||||
|
}
|
||||||
|
return tableContainer.parseHtml().replace(Html.TABLE.parse(), "<table class=\"table table-bordered table-striped table-hover player-table dataTable\">");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -63,7 +63,7 @@ public class ViaVersionData extends PluginData {
|
|||||||
String versionS = getWithIcon("Version", "signal");
|
String versionS = getWithIcon("Version", "signal");
|
||||||
String membersS = getWithIcon("Users", "users");
|
String membersS = getWithIcon("Users", "users");
|
||||||
TableContainer versionTable = new TableContainer(versionS, membersS);
|
TableContainer versionTable = new TableContainer(versionS, membersS);
|
||||||
versionTable.setColor("green");
|
versionTable.setColor("light-green");
|
||||||
Map<String, Integer> usersPerVersion = getUsersPerVersion(versions);
|
Map<String, Integer> usersPerVersion = getUsersPerVersion(versions);
|
||||||
for (Map.Entry<String, Integer> entry : usersPerVersion.entrySet()) {
|
for (Map.Entry<String, Integer> entry : usersPerVersion.entrySet()) {
|
||||||
versionTable.addRow(entry.getKey(), entry.getValue());
|
versionTable.addRow(entry.getKey(), entry.getValue());
|
||||||
|
Loading…
Reference in New Issue
Block a user