mirror of
https://github.com/plan-player-analytics/Plan.git
synced 2025-02-22 23:31:43 +01:00
Network page parsing, Fixed error pages in WebAPI mode
This commit is contained in:
parent
6137eca560
commit
8ccd9854ba
@ -4,6 +4,7 @@
|
|||||||
*/
|
*/
|
||||||
package main.java.com.djrapitops.plan.database.tables;
|
package main.java.com.djrapitops.plan.database.tables;
|
||||||
|
|
||||||
|
import com.djrapitops.plugin.api.utility.log.Log;
|
||||||
import com.djrapitops.plugin.utilities.Verify;
|
import com.djrapitops.plugin.utilities.Verify;
|
||||||
import main.java.com.djrapitops.plan.Plan;
|
import main.java.com.djrapitops.plan.Plan;
|
||||||
import main.java.com.djrapitops.plan.api.exceptions.DBCreateTableException;
|
import main.java.com.djrapitops.plan.api.exceptions.DBCreateTableException;
|
||||||
@ -314,4 +315,31 @@ public class UserInfoTable extends UserIDTable {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public int getServerUserCount(UUID serverUUID) {
|
||||||
|
try {
|
||||||
|
String sql = "SELECT " +
|
||||||
|
" COUNT(" + columnRegistered + ") as c" +
|
||||||
|
" FROM " + tableName +
|
||||||
|
" WHERE " + columnServerID + "=" + serverTable.statementSelectServerID;
|
||||||
|
|
||||||
|
return query(new QueryStatement<Integer>(sql, 20000) {
|
||||||
|
@Override
|
||||||
|
public void prepare(PreparedStatement statement) throws SQLException {
|
||||||
|
statement.setString(1, serverUUID.toString());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Integer processResults(ResultSet set) throws SQLException {
|
||||||
|
if (set.next()) {
|
||||||
|
return set.getInt("c");
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} catch (SQLException e) {
|
||||||
|
Log.toLog(this.getClass().getName(), e);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
@ -56,7 +56,7 @@ public class NetworkPageParser extends PageParser {
|
|||||||
addValue("playersNewWeek", AnalysisUtils.getNewPlayers(registerDates, TimeAmount.WEEK.ms(), now));
|
addValue("playersNewWeek", AnalysisUtils.getNewPlayers(registerDates, TimeAmount.WEEK.ms(), now));
|
||||||
|
|
||||||
Map<UUID, String> networkPageContents = ((BungeeInformationManager) plugin.getInfoManager()).getNetworkPageContent();
|
Map<UUID, String> networkPageContents = ((BungeeInformationManager) plugin.getInfoManager()).getNetworkPageContent();
|
||||||
addValue("contentServers", HtmlStructure.createNetworkPageContent(networkPageContents));
|
addValue("tabContentServers", HtmlStructure.createNetworkPageContent(networkPageContents));
|
||||||
|
|
||||||
return HtmlUtils.replacePlaceholders(FileUtil.getStringFromResource("web/network.html"), placeHolders);
|
return HtmlUtils.replacePlaceholders(FileUtil.getStringFromResource("web/network.html"), placeHolders);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
|
@ -48,6 +48,10 @@ public class APIResponseHandler {
|
|||||||
return PageCache.loadPage(target + "css", () -> new CSSResponse(target));
|
return PageCache.loadPage(target + "css", () -> new CSSResponse(target));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (target.endsWith(".js")) {
|
||||||
|
return PageCache.loadPage(target + "js", () -> new JavaScriptResponse(target));
|
||||||
|
}
|
||||||
|
|
||||||
if (args.length < 2 || !"api".equals(args[1])) {
|
if (args.length < 2 || !"api".equals(args[1])) {
|
||||||
String address = MiscUtils.getIPlan().getInfoManager().getWebServerAddress() + target;
|
String address = MiscUtils.getIPlan().getInfoManager().getWebServerAddress() + target;
|
||||||
String link = Html.LINK.parse(address, address);
|
String link = Html.LINK.parse(address, address);
|
||||||
|
@ -106,12 +106,11 @@ public class DebugPageResponse extends ErrorResponse {
|
|||||||
Collection<ServerInfo> bukkitServers = serverInfoManager.getBukkitServers();
|
Collection<ServerInfo> bukkitServers = serverInfoManager.getBukkitServers();
|
||||||
|
|
||||||
if (!bukkitServers.isEmpty()) {
|
if (!bukkitServers.isEmpty()) {
|
||||||
content.append("<p>If your issue is about Bungee-Bukkit connection relations, please include the following debug information of available servers as well: ");
|
content.append("<p>If your issue is about Bungee-Bukkit connection relations, please include the following debug information of available servers as well:</p>");
|
||||||
for (ServerInfo info : bukkitServers) {
|
for (ServerInfo info : bukkitServers) {
|
||||||
String link = Html.LINK.parse(info.getWebAddress() + "/debug", info.getWebAddress() + "/debug");
|
String link = Html.LINK.parse(info.getWebAddress() + "/debug", info.getWebAddress() + "/debug");
|
||||||
content.append(link).append("<br>");
|
content.append("<p>").append(link).append("</p>");
|
||||||
}
|
}
|
||||||
content.append("</p>");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
content.append("<pre>### Bungee Configuration<br>");
|
content.append("<pre>### Bungee Configuration<br>");
|
||||||
|
@ -4,20 +4,25 @@
|
|||||||
*/
|
*/
|
||||||
package main.java.com.djrapitops.plan.utilities.html;
|
package main.java.com.djrapitops.plan.utilities.html;
|
||||||
|
|
||||||
|
import com.djrapitops.plugin.api.utility.log.Log;
|
||||||
import com.djrapitops.plugin.utilities.Verify;
|
import com.djrapitops.plugin.utilities.Verify;
|
||||||
import main.java.com.djrapitops.plan.Plan;
|
import main.java.com.djrapitops.plan.Plan;
|
||||||
|
import main.java.com.djrapitops.plan.ServerVariableHolder;
|
||||||
import main.java.com.djrapitops.plan.Settings;
|
import main.java.com.djrapitops.plan.Settings;
|
||||||
import main.java.com.djrapitops.plan.data.Session;
|
import main.java.com.djrapitops.plan.data.Session;
|
||||||
import main.java.com.djrapitops.plan.data.additional.AnalysisType;
|
import main.java.com.djrapitops.plan.data.additional.AnalysisType;
|
||||||
import main.java.com.djrapitops.plan.data.additional.PluginData;
|
import main.java.com.djrapitops.plan.data.additional.PluginData;
|
||||||
|
import main.java.com.djrapitops.plan.database.Database;
|
||||||
import main.java.com.djrapitops.plan.systems.info.BukkitInformationManager;
|
import main.java.com.djrapitops.plan.systems.info.BukkitInformationManager;
|
||||||
import main.java.com.djrapitops.plan.utilities.FormatUtils;
|
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.AnalysisUtils;
|
||||||
|
import main.java.com.djrapitops.plan.utilities.html.graphs.PlayerActivityGraphCreator;
|
||||||
import main.java.com.djrapitops.plan.utilities.html.structure.SessionTabStructureCreator;
|
import main.java.com.djrapitops.plan.utilities.html.structure.SessionTabStructureCreator;
|
||||||
import main.java.com.djrapitops.plan.utilities.html.tables.SessionsTableCreator;
|
import main.java.com.djrapitops.plan.utilities.html.tables.SessionsTableCreator;
|
||||||
import org.apache.commons.lang3.text.StrSubstitutor;
|
import org.apache.commons.lang3.text.StrSubstitutor;
|
||||||
|
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
|
import java.sql.SQLException;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -312,16 +317,12 @@ public class HtmlStructure {
|
|||||||
List<String> values = new ArrayList<>(networkPageContents.values());
|
List<String> values = new ArrayList<>(networkPageContents.values());
|
||||||
Collections.sort(values);
|
Collections.sort(values);
|
||||||
int size = values.size();
|
int size = values.size();
|
||||||
int extra = size % 3;
|
|
||||||
for (int j = 0; j < extra; j++) {
|
|
||||||
values.add("<div class=\"column\"></div>");
|
|
||||||
}
|
|
||||||
for (String server : values) {
|
for (String server : values) {
|
||||||
if (i % 3 == 0) {
|
if (i % 2 == 0) {
|
||||||
b.append("<div class=\"row\">");
|
b.append("<div class=\"row clearfix\">");
|
||||||
}
|
}
|
||||||
b.append(server);
|
b.append(server);
|
||||||
if ((i + 1) % 3 == 0 || i + 1 == size) {
|
if ((i + 1) % 2 == 0 || i + 1 == size) {
|
||||||
b.append("</div>");
|
b.append("</div>");
|
||||||
}
|
}
|
||||||
i++;
|
i++;
|
||||||
@ -330,23 +331,72 @@ public class HtmlStructure {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static String createServerContainer(Plan plugin) {
|
public static String createServerContainer(Plan plugin) {
|
||||||
int maxPlayers = plugin.getVariable().getMaxPlayers();
|
ServerVariableHolder variable = plugin.getVariable();
|
||||||
|
int maxPlayers = variable.getMaxPlayers();
|
||||||
int online = plugin.getServer().getOnlinePlayers().size();
|
int online = plugin.getServer().getOnlinePlayers().size();
|
||||||
Optional<Long> analysisRefreshDate = ((BukkitInformationManager) plugin.getInfoManager()).getAnalysisRefreshDate();
|
Optional<Long> analysisRefreshDate = ((BukkitInformationManager) plugin.getInfoManager()).getAnalysisRefreshDate();
|
||||||
String refresh = analysisRefreshDate.map(FormatUtils::formatTimeStamp).orElse("-");
|
String refresh = analysisRefreshDate.map(FormatUtils::formatTimeStamp).orElse("-");
|
||||||
|
|
||||||
String serverName = plugin.getServerInfoManager().getServerName();
|
String serverName = plugin.getServerInfoManager().getServerName();
|
||||||
|
String serverType = variable.getVersion();
|
||||||
String address = "../server/" + serverName;
|
String address = "../server/" + serverName;
|
||||||
|
|
||||||
|
|
||||||
return "<div class=\"column\">" + "<div class=\"box-header\"><h2><i class=\"fa fa-server\" aria-hidden=\"true\"></i> " +
|
Database db = plugin.getDB();
|
||||||
serverName +
|
UUID serverUUID = plugin.getServerUuid();
|
||||||
"</h2></div>" +
|
String id = serverUUID.toString().replace("-", "");
|
||||||
"<div class=\"box\"><p>" + online + "/" + maxPlayers +
|
|
||||||
" Players Online</p></div>" +
|
int playerCount = db.getUserInfoTable().getServerUserCount(serverUUID);
|
||||||
"<div class=\"box-footer\"><p>Last Refresh: " + refresh + "</p>" +
|
String playerData = "[]";
|
||||||
"<a href=\"" + address + "\" class=\"button right\">Analysis</a>" +
|
try {
|
||||||
"</div></div>";
|
playerData = PlayerActivityGraphCreator.buildSeriesDataString(db.getTpsTable().getTPSData(serverUUID));
|
||||||
|
} catch (SQLException e) {
|
||||||
|
Log.toLog(HtmlStructure.class.getClass().getName(), e);
|
||||||
|
}
|
||||||
|
|
||||||
|
return "<div class=\"col-xs-12 col-sm-12 col-md-6 col-lg-6\">" +
|
||||||
|
"<div class=\"card\">" +
|
||||||
|
"<div class=\"header\">" +
|
||||||
|
"<div class=\"row clearfix\">" +
|
||||||
|
"<div class=\"col-xs-12 col-sm-12\">" +
|
||||||
|
"<h2><i class=\"col-light-green fa fa-server\"></i> " + serverName + "</h2>" +
|
||||||
|
"</div></div></div>" +
|
||||||
|
"<div class=\"panel panel-default\">" +
|
||||||
|
"<div class=\"panel-heading\">" +
|
||||||
|
"<div class=\"row\">" +
|
||||||
|
"<div id=\"playerChart" + id + "\" style=\"height: 200px;\"></div>" +
|
||||||
|
"</div></div>" +
|
||||||
|
"<div class=\"panel-body\">" +
|
||||||
|
"<div class=\"row\">" +
|
||||||
|
"<div class=\"col-md-8\">" +
|
||||||
|
"<p><i class=\"fa fa-users\"></i> Registered Players " +
|
||||||
|
"<span class=\"pull-right\">" + playerCount + "</span></p>" +
|
||||||
|
"<p><i class=\"col-blue fa fa-user\"></i> Players Online " +
|
||||||
|
"<span class=\"pull-right\">" + online + " / " + maxPlayers + "</span></p>" +
|
||||||
|
"<p><i class=\"col-deep-orange fa fa-compass\"></i> Type " +
|
||||||
|
"<span class=\"pull-right\">" + serverType + "</span></p></div>" +
|
||||||
|
"<div class=\"col-md-4\">" +
|
||||||
|
"<p><i class=\"fa fa-clock-o\"></i> Last Refresh" +
|
||||||
|
"<span class=\"pull-right\"><b>" + refresh + "</b></span></p>" +
|
||||||
|
"<br>" +
|
||||||
|
"<button href=\"" + address + "\" type=\"button\" class=\"pull-right btn bg-light-green waves-effect\">" +
|
||||||
|
"<i class=\"material-icons\">trending_up</i>" +
|
||||||
|
"<span>ANALYSIS</span>" +
|
||||||
|
"</button></div></div></div></div></div></div>" +
|
||||||
|
"<script>" +
|
||||||
|
"var playersOnlineSeries" + id + " = {" +
|
||||||
|
"name: 'Players Online'," +
|
||||||
|
"data: " + playerData + "," +
|
||||||
|
"type: 'areaspline'," +
|
||||||
|
"color: '${playersGraphColor}'," +
|
||||||
|
"tooltip: {" +
|
||||||
|
"valueDecimals: 0" +
|
||||||
|
"}" +
|
||||||
|
"};" +
|
||||||
|
"</script>" +
|
||||||
|
"<script>$(function () {" +
|
||||||
|
"playersChartNoNav(playerChart" + id + ", playersOnlineSeries" + id +
|
||||||
|
"}</script>";
|
||||||
}
|
}
|
||||||
|
|
||||||
public static String parseOfflineServerContainer(String oldContent) {
|
public static String parseOfflineServerContainer(String oldContent) {
|
||||||
|
37
Plan/src/main/resources/web/js/charts/playerGraphNoNav.js
Normal file
37
Plan/src/main/resources/web/js/charts/playerGraphNoNav.js
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
function playersChartNoNav(id, playersOnlineSeries) {
|
||||||
|
Highcharts.stockChart(id, {
|
||||||
|
rangeSelector: {
|
||||||
|
selected: 3,
|
||||||
|
buttons: [{
|
||||||
|
type: 'hour',
|
||||||
|
count: 12,
|
||||||
|
text: '12h'
|
||||||
|
}, {
|
||||||
|
type: 'hour',
|
||||||
|
count: 24,
|
||||||
|
text: '24h'
|
||||||
|
}, {
|
||||||
|
type: 'day',
|
||||||
|
count: 7,
|
||||||
|
text: '7d'
|
||||||
|
}, {
|
||||||
|
type: 'month',
|
||||||
|
count: 1,
|
||||||
|
text: '30d'
|
||||||
|
}, {
|
||||||
|
type: 'all',
|
||||||
|
text: 'All'
|
||||||
|
}]
|
||||||
|
},
|
||||||
|
navigator: {
|
||||||
|
enabled: false
|
||||||
|
},
|
||||||
|
title: {text: ''},
|
||||||
|
plotOptions: {
|
||||||
|
areaspline: {
|
||||||
|
fillOpacity: 0.4
|
||||||
|
}
|
||||||
|
},
|
||||||
|
series: [playersOnlineSeries]
|
||||||
|
});
|
||||||
|
}
|
@ -233,14 +233,8 @@
|
|||||||
<span class="pull-right"><b>${playersTotal}</b></span>
|
<span class="pull-right"><b>${playersTotal}</b></span>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<i class="col-blue fa fa-user"></i> Unique Players / Day
|
<i class="col-blue fa fa-user"></i> Players Online
|
||||||
<small>(AVG.)</small>
|
<span class="pull-right"><b>${playersOnline}</b></span>
|
||||||
<span class="pull-right"><b>${playersAverage}</b></span>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<i class="col-light-green fa fa-user-plus"></i> New Players / Day
|
|
||||||
<small>(AVG.)</small>
|
|
||||||
<span class="pull-right"><b>${playersNewAverage}</b></span>
|
|
||||||
</li>
|
</li>
|
||||||
<li></li>
|
<li></li>
|
||||||
<li><i class="col-green fa fa-line-chart"></i> Last Peak: ${lastPeakTime}<span
|
<li><i class="col-green fa fa-line-chart"></i> Last Peak: ${lastPeakTime}<span
|
||||||
|
@ -34,6 +34,7 @@
|
|||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body class="theme-red">
|
<body class="theme-red">
|
||||||
|
<script src="js/charts/playerGraphNoNav.js"></script>
|
||||||
<!-- Page Loader -->
|
<!-- Page Loader -->
|
||||||
<div class="page-loader-wrapper">
|
<div class="page-loader-wrapper">
|
||||||
<div class="loader">
|
<div class="loader">
|
||||||
@ -233,14 +234,8 @@
|
|||||||
<span class="pull-right"><b>${playersTotal}</b></span>
|
<span class="pull-right"><b>${playersTotal}</b></span>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<i class="col-blue fa fa-user"></i> Unique Players / Day
|
<i class="col-blue fa fa-user"></i> Players Online
|
||||||
<small>(AVG.)</small>
|
<span class="pull-right"><b>${playersOnline}</b></span>
|
||||||
<span class="pull-right"><b>${playersAverage}</b></span>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<i class="col-light-green fa fa-user-plus"></i> New Players / Day
|
|
||||||
<small>(AVG.)</small>
|
|
||||||
<span class="pull-right"><b>${playersNewAverage}</b></span>
|
|
||||||
</li>
|
</li>
|
||||||
<li></li>
|
<li></li>
|
||||||
<li><i class="col-green fa fa-line-chart"></i> Last Peak: ${lastPeakTime}<span
|
<li><i class="col-green fa fa-line-chart"></i> Last Peak: ${lastPeakTime}<span
|
||||||
@ -316,7 +311,7 @@
|
|||||||
<script src="js/admin.js"></script>
|
<script src="js/admin.js"></script>
|
||||||
|
|
||||||
<!-- Plan Charts -->
|
<!-- Plan Charts -->
|
||||||
<script src="./js/playerGraph.js"></script>
|
<script src="./js/charts/playerGraph.js"></script>
|
||||||
|
|
||||||
<!-- Chart Data -->
|
<!-- Chart Data -->
|
||||||
<script>
|
<script>
|
||||||
|
@ -466,6 +466,7 @@ public class DatabaseTest {
|
|||||||
assertEquals(uuid, userInfo.getUuid());
|
assertEquals(uuid, userInfo.getUuid());
|
||||||
assertEquals(123456789L, (long) usersTable.getRegisterDates().get(0));
|
assertEquals(123456789L, (long) usersTable.getRegisterDates().get(0));
|
||||||
assertEquals(123456789L, userInfo.getRegistered());
|
assertEquals(123456789L, userInfo.getRegistered());
|
||||||
|
assertEquals(1, userInfoTable.getServerUserCount(Plan.getServerUUID()));
|
||||||
assertEquals("Waiting for Update..", userInfo.getName());
|
assertEquals("Waiting for Update..", userInfo.getName());
|
||||||
assertFalse(userInfo.isBanned());
|
assertFalse(userInfo.isBanned());
|
||||||
assertFalse(userInfo.isOpped());
|
assertFalse(userInfo.isOpped());
|
||||||
|
Loading…
Reference in New Issue
Block a user