mirror of
https://github.com/plan-player-analytics/Plan.git
synced 2025-02-23 15:51:20 +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() {
|
||||
return playerTableValues.isEmpty() && super.isEmpty();
|
||||
}
|
||||
|
||||
public boolean hasPlayerTableValues() {
|
||||
return !playerTableValues.isEmpty();
|
||||
}
|
||||
}
|
@ -76,4 +76,8 @@ public class InspectContainer {
|
||||
public boolean 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) {
|
||||
return getWithIcon(text, icon, "black");
|
||||
return getWithIcon(text, icon, "");
|
||||
}
|
||||
|
||||
public final String getWithIcon(String text, String icon, String color) {
|
||||
|
@ -4,6 +4,7 @@
|
||||
*/
|
||||
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 java.io.Serializable;
|
||||
@ -32,6 +33,11 @@ public final class TableContainer {
|
||||
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) {
|
||||
this.values.add(values);
|
||||
}
|
||||
@ -45,11 +51,10 @@ public final class TableContainer {
|
||||
|
||||
private String parseBody() {
|
||||
StringBuilder body = new StringBuilder();
|
||||
|
||||
if (values.isEmpty()) {
|
||||
addRow("No Data");
|
||||
}
|
||||
|
||||
body.append("<tbody>");
|
||||
for (Serializable[] row : values) {
|
||||
int maxIndex = row.length - 1;
|
||||
body.append("<tr>");
|
||||
@ -64,7 +69,6 @@ public final class TableContainer {
|
||||
}
|
||||
body.append("</tr>");
|
||||
}
|
||||
body.append("</tbody>");
|
||||
|
||||
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.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.html.tables.PlayersTableCreator;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
@ -33,7 +35,7 @@ public class AnalysisPluginsTabContentCreator {
|
||||
|
||||
generalTab.append("<div class=\"tab\"><div class=\"row clearfix\">");
|
||||
|
||||
boolean hadOtherThanTabs = false;
|
||||
boolean hasGeneralBoxes = false;
|
||||
|
||||
for (PluginData pluginData : order) {
|
||||
AnalysisContainer container = containers.get(pluginData);
|
||||
@ -45,29 +47,41 @@ public class AnalysisPluginsTabContentCreator {
|
||||
case WHOLE:
|
||||
if (!container.hasOnlyValues()) {
|
||||
appendWhole(pluginData, container, generalTab);
|
||||
hadOtherThanTabs = true;
|
||||
hasGeneralBoxes = true;
|
||||
break;
|
||||
}
|
||||
|
||||
case TWO_THIRDS:
|
||||
if (!container.hasOnlyValues()) {
|
||||
appendTwoThirds(pluginData, container, generalTab);
|
||||
hadOtherThanTabs = true;
|
||||
hasGeneralBoxes = true;
|
||||
break;
|
||||
}
|
||||
case THIRD:
|
||||
default:
|
||||
appendThird(pluginData, container, generalTab);
|
||||
hadOtherThanTabs = true;
|
||||
hasGeneralBoxes = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
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[]{
|
||||
hadOtherThanTabs ? "<li><a class=\"nav-button\" href=\"javascript:void(0)\">General</a></li>" + nav.toString() : nav.toString(),
|
||||
hadOtherThanTabs ? generalTab.toString() + otherTabs.toString() : otherTabs.toString()
|
||||
(hasGeneralBoxes ? "<li><a class=\"nav-button\" href=\"javascript:void(0)\">General</a></li>" : "")
|
||||
+ "<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.Settings;
|
||||
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.MiscUtils;
|
||||
import main.java.com.djrapitops.plan.utilities.comparators.PlayerProfileLastPlayedComparator;
|
||||
import main.java.com.djrapitops.plan.utilities.html.Html;
|
||||
import org.apache.commons.lang3.ArrayUtils;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
import java.io.Serializable;
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
* @author Rsl1122
|
||||
@ -29,8 +32,6 @@ public class PlayersTableCreator {
|
||||
return Html.TABLELINE_PLAYERS.parse("<b>No Players</b>", "", "", "", "", "", "", "", "", "");
|
||||
}
|
||||
|
||||
players.sort(new PlayerProfileLastPlayedComparator());
|
||||
|
||||
StringBuilder html = new StringBuilder();
|
||||
|
||||
long now = MiscUtils.getTime();
|
||||
@ -73,4 +74,63 @@ public class PlayersTableCreator {
|
||||
|
||||
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 membersS = getWithIcon("Users", "users");
|
||||
TableContainer versionTable = new TableContainer(versionS, membersS);
|
||||
versionTable.setColor("green");
|
||||
versionTable.setColor("light-green");
|
||||
Map<String, Integer> usersPerVersion = getUsersPerVersion(versions);
|
||||
for (Map.Entry<String, Integer> entry : usersPerVersion.entrySet()) {
|
||||
versionTable.addRow(entry.getKey(), entry.getValue());
|
||||
|
Loading…
Reference in New Issue
Block a user