mirror of
https://github.com/plan-player-analytics/Plan.git
synced 2025-01-27 10:31:42 +01:00
Merge pull request #203 from Fuzzlemann/master
PR for 3.6.0 (Fuzzlemann) (3)
This commit is contained in:
commit
b371f0fb1e
@ -42,10 +42,10 @@ public class PlanCommand extends TreeCommand<Plan> {
|
||||
String tCol = colorScheme.getTertiaryColor();
|
||||
|
||||
String[] help = new String[]{
|
||||
mCol +"/plan - Main Command",
|
||||
tCol+" Used to access all SubCommands & help",
|
||||
sCol+" /plan - List subcommands",
|
||||
sCol+" /plan <subcommand> ? - in depth help"
|
||||
mCol + "/plan - Main Command",
|
||||
tCol + " Used to access all SubCommands & help",
|
||||
sCol + " /plan - List subcommands",
|
||||
sCol + " /plan <subcommand> ? - in depth help"
|
||||
};
|
||||
}
|
||||
|
||||
|
@ -50,10 +50,10 @@ public class AnalyzeCommand extends SubCommand {
|
||||
String tCol = colorScheme.getTertiaryColor();
|
||||
|
||||
String[] help = new String[]{
|
||||
mCol +"Analysis Command",
|
||||
tCol+" Used to Refresh analysis cache & Access the result page",
|
||||
sCol+" /plan status can be used to check status of analysis while it is running.",
|
||||
sCol+" Aliases: analyze, analyse, analysis, a"
|
||||
mCol + "Analysis Command",
|
||||
tCol + " Used to Refresh analysis cache & Access the result page",
|
||||
sCol + " /plan status can be used to check status of analysis while it is running.",
|
||||
sCol + " Aliases: analyze, analyse, analysis, a"
|
||||
};
|
||||
}
|
||||
|
||||
|
@ -56,10 +56,10 @@ public class InspectCommand extends SubCommand {
|
||||
String tCol = colorScheme.getTertiaryColor();
|
||||
|
||||
String[] help = new String[]{
|
||||
mCol +"Inspect command",
|
||||
tCol+" Used to get a link to User's inspect page.",
|
||||
sCol+" Own inspect page can be accessed with /plan inspect",
|
||||
sCol+" Alias: /plan <name>"
|
||||
mCol + "Inspect command",
|
||||
tCol + " Used to get a link to User's inspect page.",
|
||||
sCol + " Own inspect page can be accessed with /plan inspect",
|
||||
sCol + " Alias: /plan <name>"
|
||||
};
|
||||
}
|
||||
|
||||
@ -153,4 +153,4 @@ public class InspectCommand extends SubCommand {
|
||||
|
||||
sender.sendMessage(Phrase.CMD_FOOTER + "");
|
||||
}
|
||||
}
|
||||
}
|
@ -47,10 +47,10 @@ public class ListCommand extends SubCommand {
|
||||
String tCol = colorScheme.getTertiaryColor();
|
||||
|
||||
String[] help = new String[]{
|
||||
mCol +"List command",
|
||||
tCol+" Used to get a link to players page.",
|
||||
sCol+" Players page contains links to all cached inspect pages.",
|
||||
sCol+" Alias: /plan pl"
|
||||
mCol + "List command",
|
||||
tCol + " Used to get a link to players page.",
|
||||
sCol + " Players page contains links to all cached inspect pages.",
|
||||
sCol + " Alias: /plan pl"
|
||||
};
|
||||
}
|
||||
|
||||
@ -68,7 +68,7 @@ public class ListCommand extends SubCommand {
|
||||
|
||||
// Link
|
||||
String url = HtmlUtils.getServerAnalysisUrlWithProtocol().replace("server", "players");
|
||||
String message = Phrase.CMD_LINK + "";
|
||||
String message = Phrase.CMD_LINK.toString();
|
||||
boolean console = !CommandUtils.isPlayer(sender);
|
||||
if (console) {
|
||||
sender.sendMessage(message + url);
|
||||
@ -76,6 +76,6 @@ public class ListCommand extends SubCommand {
|
||||
sender.sendMessage(message);
|
||||
sender.sendLink(" ", Phrase.CMD_CLICK_ME.toString(), url);
|
||||
}
|
||||
sender.sendMessage(Phrase.CMD_FOOTER + "");
|
||||
sender.sendMessage(Phrase.CMD_FOOTER.toString());
|
||||
}
|
||||
}
|
||||
|
@ -39,11 +39,11 @@ public class ManageCommand extends TreeCommand<Plan> {
|
||||
String tCol = colorScheme.getTertiaryColor();
|
||||
|
||||
String[] help = new String[]{
|
||||
mCol +"Manage command",
|
||||
tCol+" Used to Manage Database of the plugin.",
|
||||
sCol+" Alias: /plan m",
|
||||
sCol+" /plan m - List subcommands",
|
||||
sCol+" /plan m <subcommand> ? - in depth help"
|
||||
mCol + "Manage command",
|
||||
tCol + " Used to Manage Database of the plugin.",
|
||||
sCol + " Alias: /plan m",
|
||||
sCol + " /plan m - List subcommands",
|
||||
sCol + " /plan m <subcommand> ? - in depth help"
|
||||
};
|
||||
}
|
||||
|
||||
|
@ -51,10 +51,10 @@ public class QuickAnalyzeCommand extends SubCommand {
|
||||
String tCol = colorScheme.getTertiaryColor();
|
||||
|
||||
String[] help = new String[]{
|
||||
mCol +"Quick Analysis command",
|
||||
tCol+" Used to get in game info about analysis.",
|
||||
sCol+" Has less info than full Analysis web page.",
|
||||
sCol+" Aliases: qanalyze, ganalyse, qanalysis, qa"
|
||||
mCol + "Quick Analysis command",
|
||||
tCol + " Used to get in game info about analysis.",
|
||||
sCol + " Has less info than full Analysis web page.",
|
||||
sCol + " Aliases: qanalyze, ganalyse, qanalysis, qa"
|
||||
};
|
||||
}
|
||||
|
||||
|
@ -56,10 +56,10 @@ public class QuickInspectCommand extends SubCommand {
|
||||
String tCol = colorScheme.getTertiaryColor();
|
||||
|
||||
String[] help = new String[]{
|
||||
mCol +"Quick Inspect command",
|
||||
tCol+" Used to get some inspect info in game.",
|
||||
sCol+" Has less info than full Inspect web page.",
|
||||
sCol+" Alias: /plan qi"
|
||||
mCol + "Quick Inspect command",
|
||||
tCol + " Used to get some inspect info in game.",
|
||||
sCol + " Has less info than full Inspect web page.",
|
||||
sCol + " Alias: /plan qi"
|
||||
};
|
||||
}
|
||||
|
||||
|
@ -49,10 +49,10 @@ public class RegisterCommand extends SubCommand {
|
||||
String tCol = colorScheme.getTertiaryColor();
|
||||
|
||||
String[] help = new String[]{
|
||||
mCol +"Web Register command",
|
||||
tCol+" Used to register a new user for the webserver.",
|
||||
sCol+" Registering a user for another player requires "+Permissions.MANAGE_WEB.getPerm()+" permission.",
|
||||
sCol+" Passwords are hashed with PBKDF2 (64,000 iterations of SHA1) using a cryptographically-random salt."
|
||||
mCol + "Web Register command",
|
||||
tCol + " Used to register a new user for the webserver.",
|
||||
sCol + " Registering a user for another player requires " + Permissions.MANAGE_WEB.getPerm() + " permission.",
|
||||
sCol + " Passwords are hashed with PBKDF2 (64,000 iterations of SHA1) using a cryptographically-random salt."
|
||||
};
|
||||
}
|
||||
|
||||
|
@ -47,9 +47,9 @@ public class SearchCommand extends SubCommand {
|
||||
String tCol = colorScheme.getTertiaryColor();
|
||||
|
||||
String[] help = new String[]{
|
||||
mCol +"Search command",
|
||||
tCol+" Used to get a list of Player names that match the given argument.",
|
||||
sCol+" Example: /plan search 123 - Finds all users with 123 in their name."
|
||||
mCol + "Search command",
|
||||
tCol + " Used to get a list of Player names that match the given argument.",
|
||||
sCol + " Example: /plan search 123 - Finds all users with 123 in their name."
|
||||
};
|
||||
}
|
||||
|
||||
|
@ -35,13 +35,13 @@ public class WebUserCommand extends TreeCommand<Plan> {
|
||||
String tCol = colorScheme.getTertiaryColor();
|
||||
|
||||
String[] help = new String[]{
|
||||
mCol +"Web User Manage command",
|
||||
tCol+" Used to manage web users of the plugin",
|
||||
sCol+" Users have a permission level:",
|
||||
tCol+" 0 - Access to all pages",
|
||||
tCol+" 1 - Access to /players & all inspect pages",
|
||||
tCol+" 2 - Access to own inspect page",
|
||||
sCol+" Alias: /plan web"
|
||||
mCol + "Web User Manage command",
|
||||
tCol + " Used to manage web users of the plugin",
|
||||
sCol + " Users have a permission level:",
|
||||
tCol + " 0 - Access to all pages",
|
||||
tCol + " 1 - Access to /players & all inspect pages",
|
||||
tCol + " 2 - Access to own inspect page",
|
||||
sCol + " Alias: /plan web"
|
||||
};
|
||||
}
|
||||
|
||||
|
@ -47,10 +47,10 @@ public class ManageClearCommand extends SubCommand {
|
||||
String tCol = colorScheme.getTertiaryColor();
|
||||
|
||||
String[] help = new String[]{
|
||||
mCol +"Manage Clear command",
|
||||
tCol+" Used to delete ALL data in the active database.",
|
||||
sCol+" Plugin should be reloaded after successful clear.",
|
||||
sCol+" Alias: /plan pl"
|
||||
mCol + "Manage Clear command",
|
||||
tCol + " Used to delete ALL data in the active database.",
|
||||
sCol + " Plugin should be reloaded after successful clear.",
|
||||
sCol + " Alias: /plan pl"
|
||||
};
|
||||
}
|
||||
|
||||
|
@ -47,9 +47,9 @@ public class ManageHotswapCommand extends SubCommand {
|
||||
String tCol = colorScheme.getTertiaryColor();
|
||||
|
||||
String[] help = new String[]{
|
||||
mCol +"Manage Hotswap command",
|
||||
tCol+" Used to change database in use on the fly.",
|
||||
sCol+" Does not change database if connection fails"
|
||||
mCol + "Manage Hotswap command",
|
||||
tCol + " Used to change database in use on the fly.",
|
||||
sCol + " Does not change database if connection fails"
|
||||
};
|
||||
}
|
||||
|
||||
|
@ -54,10 +54,10 @@ public class ManageImportCommand extends SubCommand {
|
||||
String tCol = colorScheme.getTertiaryColor();
|
||||
|
||||
String[] help = new String[]{
|
||||
mCol +"Manage Import command",
|
||||
tCol+" Used to import data from other sources",
|
||||
sCol+" Analysis will be disabled during import.",
|
||||
sCol+" If a lot of users are not in the database, saving may take a long time."
|
||||
mCol + "Manage Import command",
|
||||
tCol + " Used to import data from other sources",
|
||||
sCol + " Analysis will be disabled during import.",
|
||||
sCol + " If a lot of users are not in the database, saving may take a long time."
|
||||
};
|
||||
}
|
||||
|
||||
|
@ -50,8 +50,8 @@ public class ManageRemoveCommand extends SubCommand {
|
||||
String tCol = colorScheme.getTertiaryColor();
|
||||
|
||||
String[] help = new String[]{
|
||||
mCol +"Manage Remove command",
|
||||
tCol+" Used to Remove user's data from the active database."
|
||||
mCol + "Manage Remove command",
|
||||
tCol + " Used to Remove user's data from the active database."
|
||||
};
|
||||
}
|
||||
|
||||
|
@ -75,5 +75,4 @@ public class GeolocationPart extends RawData<GeolocationPart> {
|
||||
public void addGeoloc(String country) {
|
||||
geoLocations.computeIfPresent(country, (computedCountry, amount) -> amount + 1);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -3,6 +3,7 @@ package main.java.com.djrapitops.plan.data.analysis;
|
||||
import com.djrapitops.plugin.api.TimeAmount;
|
||||
import main.java.com.djrapitops.plan.data.TPS;
|
||||
import main.java.com.djrapitops.plan.ui.html.graphs.CPUGraphCreator;
|
||||
import main.java.com.djrapitops.plan.ui.html.graphs.RamGraphCreator;
|
||||
import main.java.com.djrapitops.plan.ui.html.graphs.TPSGraphCreator;
|
||||
import main.java.com.djrapitops.plan.utilities.FormatUtils;
|
||||
import main.java.com.djrapitops.plan.utilities.MiscUtils;
|
||||
@ -42,8 +43,8 @@ public class TPSPart extends RawData<TPSPart> {
|
||||
String tpsScatterWeek = TPSGraphCreator.buildScatterDataStringTPS(week, TimeAmount.WEEK.ms());
|
||||
String cpuScatterDay = CPUGraphCreator.buildScatterDataString(day, TimeAmount.DAY.ms());
|
||||
String cpuScatterWeek = CPUGraphCreator.buildScatterDataString(week, TimeAmount.WEEK.ms());
|
||||
String ramScatterDay = CPUGraphCreator.buildScatterDataString(day, TimeAmount.DAY.ms());
|
||||
String ramScatterWeek = CPUGraphCreator.buildScatterDataString(week, TimeAmount.WEEK.ms());
|
||||
String ramScatterDay = RamGraphCreator.buildScatterDataString(day, TimeAmount.DAY.ms());
|
||||
String ramScatterWeek = RamGraphCreator.buildScatterDataString(week, TimeAmount.WEEK.ms());
|
||||
|
||||
addValue("tpsscatterday", tpsScatterDay);
|
||||
addValue("tpsscatterweek", tpsScatterWeek);
|
||||
@ -55,7 +56,7 @@ public class TPSPart extends RawData<TPSPart> {
|
||||
addValue("ramscatterweek", ramScatterWeek);
|
||||
|
||||
Runtime runtime = Runtime.getRuntime();
|
||||
addValue("maxram", (runtime.maxMemory() / (1024L * 1024L)));
|
||||
addValue("maxram", runtime.maxMemory() / 1000000);
|
||||
|
||||
double averageTPSWeek = MathUtils.averageDouble(week.stream().map(TPS::getTps));
|
||||
double averageTPSDay = MathUtils.averageDouble(day.stream().map(TPS::getTps));
|
||||
|
@ -76,7 +76,7 @@ public class TPSCountTimer extends AbsRunnable {
|
||||
Runtime runtime = Runtime.getRuntime();
|
||||
|
||||
long totalMemory = runtime.totalMemory();
|
||||
long usedMemory = (totalMemory - runtime.freeMemory()) / (1024L * 1024L);
|
||||
long usedMemory = (totalMemory - runtime.freeMemory()) / 1000000;
|
||||
|
||||
int playersOnline = plugin.getServer().getOnlinePlayers().size();
|
||||
int loadedChunks = getLoadedChunks();
|
||||
@ -114,7 +114,7 @@ public class TPSCountTimer extends AbsRunnable {
|
||||
diff -= twentySeconds;
|
||||
}
|
||||
|
||||
double tpsN = twentySeconds / diff;
|
||||
double tpsN = MathUtils.round(twentySeconds / diff);
|
||||
|
||||
return new TPS(now, tpsN, playersOnline, cpuUsage, usedMemory, entityCount, chunksLoaded);
|
||||
}
|
||||
|
@ -179,6 +179,11 @@ public class MathUtils {
|
||||
* @return The rounded number
|
||||
*/
|
||||
public static double round(double number) {
|
||||
return Double.valueOf(decimalFormat.format(number));
|
||||
String formattedNumber = decimalFormat.format(number);
|
||||
if (formattedNumber.length() > 4) {
|
||||
formattedNumber = formattedNumber.substring(0, 3); //Fix for unknown reasons for not-rounding
|
||||
}
|
||||
|
||||
return Double.valueOf(formattedNumber);
|
||||
}
|
||||
}
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -7,313 +7,313 @@
|
||||
<link rel="icon" href="https://puu.sh/tK0KL/6aa2ba141b.ico" type="image/x-icon"/>
|
||||
<script src="https://use.fontawesome.com/df48eb908b.js"></script>
|
||||
<style>
|
||||
header {
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 88px;
|
||||
padding: 0px;
|
||||
background-color: #348e0f;
|
||||
z-index: 1;
|
||||
}
|
||||
.header-content {
|
||||
padding: 5px 20px;
|
||||
}
|
||||
body {
|
||||
font-family: Verdana, sans-serif;
|
||||
background-color: #ddd;
|
||||
color: #fff;
|
||||
}
|
||||
.sidenav {
|
||||
height: 100%;
|
||||
width: 15%;
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
background-color: #5cb239;
|
||||
overflow-x: hidden;
|
||||
transition: 0.5s;
|
||||
padding-top: 88px;
|
||||
text-align: left;
|
||||
}
|
||||
.sidenav p {
|
||||
width: 100%;
|
||||
padding: 8px 8px 8px 16px;
|
||||
text-decoration: none;
|
||||
background-color: #89c471;
|
||||
color: #fff;
|
||||
margin: 10px 0px;
|
||||
}
|
||||
header {
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 88px;
|
||||
padding: 0px;
|
||||
background-color: #348e0f;
|
||||
z-index: 1;
|
||||
}
|
||||
.header-content {
|
||||
padding: 5px 20px;
|
||||
}
|
||||
body {
|
||||
font-family: Verdana, sans-serif;
|
||||
background-color: #ddd;
|
||||
color: #fff;
|
||||
}
|
||||
.sidenav {
|
||||
height: 100%;
|
||||
width: 15%;
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
background-color: #5cb239;
|
||||
overflow-x: hidden;
|
||||
transition: 0.5s;
|
||||
padding-top: 88px;
|
||||
text-align: left;
|
||||
}
|
||||
.sidenav p {
|
||||
width: 100%;
|
||||
padding: 8px 8px 8px 16px;
|
||||
text-decoration: none;
|
||||
background-color: #89c471;
|
||||
color: #fff;
|
||||
margin: 10px 0px;
|
||||
}
|
||||
|
||||
.sidenav a {
|
||||
margin: 10px 0px;
|
||||
width: 100%;
|
||||
padding: 8px 8px 8px 16px;
|
||||
text-decoration: none;
|
||||
background-color: #89c471;
|
||||
font-size: 22px;
|
||||
color: #fff;
|
||||
display: block;
|
||||
transition: 0.3s;
|
||||
z-index: 1;
|
||||
}
|
||||
.sidenav a {
|
||||
margin: 10px 0px;
|
||||
width: 100%;
|
||||
padding: 8px 8px 8px 16px;
|
||||
text-decoration: none;
|
||||
background-color: #89c471;
|
||||
font-size: 22px;
|
||||
color: #fff;
|
||||
display: block;
|
||||
transition: 0.3s;
|
||||
z-index: 1;
|
||||
}
|
||||
|
||||
.sidenav a.active {
|
||||
background-color: #5da341
|
||||
}
|
||||
.sidenav a.active {
|
||||
background-color: #5da341
|
||||
}
|
||||
|
||||
.sidenav a:hover, .offcanvas a:focus{
|
||||
background-color: #5da341;
|
||||
}
|
||||
.sidenav a:hover, .offcanvas a:focus{
|
||||
background-color: #5da341;
|
||||
}
|
||||
|
||||
.main-limiter {
|
||||
margin-left: 15%;
|
||||
width: 85%;
|
||||
height: 100%;
|
||||
overflow: hidden;
|
||||
}
|
||||
.main-limiter {
|
||||
margin-left: 15%;
|
||||
width: 85%;
|
||||
height: 100%;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.main-wrapper {
|
||||
padding-top: 88px;
|
||||
transform: translate3d(0, 0, 0);
|
||||
opacity: 0;
|
||||
transition: 1.5s;
|
||||
}
|
||||
.main-wrapper {
|
||||
padding-top: 88px;
|
||||
transform: translate3d(0, 0, 0);
|
||||
opacity: 0;
|
||||
transition: 1.5s;
|
||||
}
|
||||
|
||||
.box {
|
||||
background-color: #fff;
|
||||
padding: 5px;
|
||||
text-decoration: none;
|
||||
color: #000;
|
||||
text-align: left;
|
||||
margin: 5px;
|
||||
padding: 5px;
|
||||
}
|
||||
.box {
|
||||
background-color: #fff;
|
||||
padding: 5px;
|
||||
text-decoration: none;
|
||||
color: #000;
|
||||
text-align: left;
|
||||
margin: 5px;
|
||||
padding: 5px;
|
||||
}
|
||||
|
||||
.box p {
|
||||
color: #000;
|
||||
}
|
||||
.box p {
|
||||
color: #000;
|
||||
}
|
||||
|
||||
.tab {
|
||||
width: 20%;
|
||||
height: 100%;
|
||||
float: left;
|
||||
display: flex;
|
||||
text-align: left;
|
||||
align-content: flex-start;
|
||||
}
|
||||
.row {
|
||||
width: 50%;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
.content {
|
||||
text-align: center;
|
||||
padding: 5px;
|
||||
margin: 0px;
|
||||
}
|
||||
.columns {
|
||||
display: flex;
|
||||
}
|
||||
.column {
|
||||
flex: 1;
|
||||
}
|
||||
.box-area {
|
||||
width: 100%;
|
||||
}
|
||||
.infobox {
|
||||
margin-left: 3px;
|
||||
color: white;
|
||||
background-color: #348e0f;
|
||||
padding: 8px 14px;
|
||||
border-radius: 10px;
|
||||
float: right;
|
||||
}
|
||||
.info-text {
|
||||
float: right;
|
||||
width: 50%;
|
||||
text-align: right;
|
||||
}
|
||||
.info-number {
|
||||
font-size: x-large;
|
||||
float: right;
|
||||
}
|
||||
.info-label {
|
||||
float: right;
|
||||
font-size: medium;
|
||||
}
|
||||
.info-icon {
|
||||
font-size: xx-large;
|
||||
float: left;
|
||||
}
|
||||
.headerbox {
|
||||
color: #348e0f;
|
||||
display: inline-block;
|
||||
border-style: solid;
|
||||
border-color: #348e0f;
|
||||
padding: 8px 14px;
|
||||
border-radius: 10px;
|
||||
width: 95%;
|
||||
}
|
||||
.header-icon {
|
||||
font-size: xx-large;
|
||||
float: left;
|
||||
}
|
||||
.header-text {
|
||||
font-size: x-large;
|
||||
}
|
||||
.header-label {
|
||||
padding: 0px;
|
||||
margin: 0px;
|
||||
border: 0px;
|
||||
}
|
||||
.button {
|
||||
padding: 8px 14px;
|
||||
background-color: #348e0f;
|
||||
border: none;
|
||||
color: white;
|
||||
outline: 0;
|
||||
text-decoration:none!important;
|
||||
}
|
||||
.button:hover {
|
||||
background-color: #267F00;
|
||||
}
|
||||
.table {
|
||||
border-collapse: collapse;
|
||||
table-layout: fixed;
|
||||
border-style: solid;
|
||||
border-width: 1px;
|
||||
padding: 8px 14px;
|
||||
width: 100%;
|
||||
}
|
||||
.buttons {
|
||||
line-height: 270%;
|
||||
}
|
||||
.link {
|
||||
color: #348e0f;
|
||||
text-decoration:none!important;
|
||||
}
|
||||
.link:hover {
|
||||
color: #267F00;
|
||||
}
|
||||
table.sortable thead {
|
||||
background-color: #348e0f;
|
||||
color:#fff;
|
||||
font-weight: bold;
|
||||
cursor: default;
|
||||
width: 100%;
|
||||
overflow: hidden;
|
||||
}
|
||||
table.sortable tbody {
|
||||
color: #000;
|
||||
}
|
||||
table.sortable th:not(.sorttable_sorted):not(.sorttable_sorted_reverse):not(.sorttable_nosort):after {
|
||||
content: " \25B4\25BE"
|
||||
}
|
||||
.plugin-container {
|
||||
color: #000;
|
||||
height: 100%;
|
||||
max-height: 400px;
|
||||
overflow: auto;
|
||||
}
|
||||
.plugin-data {
|
||||
color: #000;
|
||||
}
|
||||
.black {
|
||||
color: #000000;
|
||||
}
|
||||
.darkblue {
|
||||
color: #0000AA;
|
||||
}
|
||||
.darkgreen {
|
||||
color: #00AA00;
|
||||
}
|
||||
.darkaqua {
|
||||
color: #00AAAA;
|
||||
}
|
||||
.darkred {
|
||||
color: #AA0000;
|
||||
}
|
||||
.darkpurple {
|
||||
color: #AA00AA;
|
||||
}
|
||||
.gold {
|
||||
color: #FFAA00;
|
||||
}
|
||||
.gray {
|
||||
color: #AAAAAA;
|
||||
}
|
||||
.darkgray {
|
||||
color: #555555;
|
||||
}
|
||||
.blue {
|
||||
color: #5555FF;
|
||||
}
|
||||
.green {
|
||||
color: #55FF55;
|
||||
}
|
||||
.aqua {
|
||||
color: #55FFFF;
|
||||
}
|
||||
.red {
|
||||
color: #FF5555;
|
||||
}
|
||||
.pink {
|
||||
color: #FF55FF;
|
||||
}
|
||||
.yellow {
|
||||
color: #FFFF55;
|
||||
}
|
||||
.white {
|
||||
color: #FFFFFF;
|
||||
}
|
||||
#navbutton {
|
||||
display: none;
|
||||
font-size: 40px;
|
||||
cursor:pointer;
|
||||
}
|
||||
@media only screen and (max-width: 850px) {
|
||||
#navbutton {
|
||||
display: inline;
|
||||
}
|
||||
.sidenav p {
|
||||
display: none;
|
||||
}
|
||||
header {
|
||||
margin: 0px;
|
||||
padding 0px;
|
||||
}
|
||||
header h1 {
|
||||
margin: 0px;
|
||||
}
|
||||
header img {
|
||||
margin: 0px;
|
||||
padding: 0px;
|
||||
margin-right: 0px;
|
||||
}
|
||||
header p {
|
||||
margin: 0px;
|
||||
margin-top: 5px;
|
||||
}
|
||||
.tab {
|
||||
flex-direction: column;
|
||||
}
|
||||
.columns {
|
||||
flex-direction: column;
|
||||
}
|
||||
.row {
|
||||
width: 100%;
|
||||
}
|
||||
.sidenav {
|
||||
width: 0%;
|
||||
transition: 0s;
|
||||
}
|
||||
.main-limiter {
|
||||
margin-left: 0%;
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
.tab {
|
||||
width: 20%;
|
||||
height: 100%;
|
||||
float: left;
|
||||
display: flex;
|
||||
text-align: left;
|
||||
align-content: flex-start;
|
||||
}
|
||||
.row {
|
||||
width: 50%;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
.content {
|
||||
text-align: center;
|
||||
padding: 5px;
|
||||
margin: 0px;
|
||||
}
|
||||
.columns {
|
||||
display: flex;
|
||||
}
|
||||
.column {
|
||||
flex: 1;
|
||||
}
|
||||
.box-area {
|
||||
width: 100%;
|
||||
}
|
||||
.infobox {
|
||||
margin-left: 3px;
|
||||
color: white;
|
||||
background-color: #348e0f;
|
||||
padding: 8px 14px;
|
||||
border-radius: 10px;
|
||||
float: right;
|
||||
}
|
||||
.info-text {
|
||||
float: right;
|
||||
width: 50%;
|
||||
text-align: right;
|
||||
}
|
||||
.info-number {
|
||||
font-size: x-large;
|
||||
float: right;
|
||||
}
|
||||
.info-label {
|
||||
float: right;
|
||||
font-size: medium;
|
||||
}
|
||||
.info-icon {
|
||||
font-size: xx-large;
|
||||
float: left;
|
||||
}
|
||||
.headerbox {
|
||||
color: #348e0f;
|
||||
display: inline-block;
|
||||
border-style: solid;
|
||||
border-color: #348e0f;
|
||||
padding: 8px 14px;
|
||||
border-radius: 10px;
|
||||
width: 95%;
|
||||
}
|
||||
.header-icon {
|
||||
font-size: xx-large;
|
||||
float: left;
|
||||
}
|
||||
.header-text {
|
||||
font-size: x-large;
|
||||
}
|
||||
.header-label {
|
||||
padding: 0px;
|
||||
margin: 0px;
|
||||
border: 0px;
|
||||
}
|
||||
.button {
|
||||
padding: 8px 14px;
|
||||
background-color: #348e0f;
|
||||
border: none;
|
||||
color: white;
|
||||
outline: 0;
|
||||
text-decoration:none!important;
|
||||
}
|
||||
.button:hover {
|
||||
background-color: #267F00;
|
||||
}
|
||||
.table {
|
||||
border-collapse: collapse;
|
||||
table-layout: fixed;
|
||||
border-style: solid;
|
||||
border-width: 1px;
|
||||
padding: 8px 14px;
|
||||
width: 100%;
|
||||
}
|
||||
.buttons {
|
||||
line-height: 270%;
|
||||
}
|
||||
.link {
|
||||
color: #348e0f;
|
||||
text-decoration:none!important;
|
||||
}
|
||||
.link:hover {
|
||||
color: #267F00;
|
||||
}
|
||||
table.sortable thead {
|
||||
background-color: #348e0f;
|
||||
color:#fff;
|
||||
font-weight: bold;
|
||||
cursor: default;
|
||||
width: 100%;
|
||||
overflow: hidden;
|
||||
}
|
||||
table.sortable tbody {
|
||||
color: #000;
|
||||
}
|
||||
table.sortable th:not(.sorttable_sorted):not(.sorttable_sorted_reverse):not(.sorttable_nosort):after {
|
||||
content: " \25B4\25BE"
|
||||
}
|
||||
.plugin-container {
|
||||
color: #000;
|
||||
height: 100%;
|
||||
max-height: 400px;
|
||||
overflow: auto;
|
||||
}
|
||||
.plugin-data {
|
||||
color: #000;
|
||||
}
|
||||
.black {
|
||||
color: #000000;
|
||||
}
|
||||
.darkblue {
|
||||
color: #0000AA;
|
||||
}
|
||||
.darkgreen {
|
||||
color: #00AA00;
|
||||
}
|
||||
.darkaqua {
|
||||
color: #00AAAA;
|
||||
}
|
||||
.darkred {
|
||||
color: #AA0000;
|
||||
}
|
||||
.darkpurple {
|
||||
color: #AA00AA;
|
||||
}
|
||||
.gold {
|
||||
color: #FFAA00;
|
||||
}
|
||||
.gray {
|
||||
color: #AAAAAA;
|
||||
}
|
||||
.darkgray {
|
||||
color: #555555;
|
||||
}
|
||||
.blue {
|
||||
color: #5555FF;
|
||||
}
|
||||
.green {
|
||||
color: #55FF55;
|
||||
}
|
||||
.aqua {
|
||||
color: #55FFFF;
|
||||
}
|
||||
.red {
|
||||
color: #FF5555;
|
||||
}
|
||||
.pink {
|
||||
color: #FF55FF;
|
||||
}
|
||||
.yellow {
|
||||
color: #FFFF55;
|
||||
}
|
||||
.white {
|
||||
color: #FFFFFF;
|
||||
}
|
||||
#navbutton {
|
||||
display: none;
|
||||
font-size: 40px;
|
||||
cursor:pointer;
|
||||
}
|
||||
@media only screen and (max-width: 850px) {
|
||||
#navbutton {
|
||||
display: inline;
|
||||
}
|
||||
.sidenav p {
|
||||
display: none;
|
||||
}
|
||||
header {
|
||||
margin: 0px;
|
||||
padding 0px;
|
||||
}
|
||||
header h1 {
|
||||
margin: 0px;
|
||||
}
|
||||
header img {
|
||||
margin: 0px;
|
||||
padding: 0px;
|
||||
margin-right: 0px;
|
||||
}
|
||||
header p {
|
||||
margin: 0px;
|
||||
margin-top: 5px;
|
||||
}
|
||||
.tab {
|
||||
flex-direction: column;
|
||||
}
|
||||
.columns {
|
||||
flex-direction: column;
|
||||
}
|
||||
.row {
|
||||
width: 100%;
|
||||
}
|
||||
.sidenav {
|
||||
width: 0%;
|
||||
transition: 0s;
|
||||
}
|
||||
.main-limiter {
|
||||
margin-left: 0%;
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
</style>
|
||||
</head>
|
||||
@ -714,46 +714,46 @@
|
||||
var ctxweek = document.getElementById("playerChartWeek");
|
||||
var dataweek = {
|
||||
datasets: [{
|
||||
label: "Online",
|
||||
fill: true,
|
||||
lineTension: 0.1,
|
||||
backgroundColor: "#%playersgraphfill%",
|
||||
borderColor: "#%playersgraphcolor%",
|
||||
borderCapStyle: 'butt',
|
||||
borderDash: [],
|
||||
borderDashOffset: 0.0,
|
||||
borderJoinStyle: 'miter',
|
||||
pointBorderColor: "#%playersgraphcolor%",
|
||||
pointBackgroundColor: "#fff",
|
||||
pointBorderWidth: 1,
|
||||
pointHoverRadius: 5,
|
||||
pointHoverBackgroundColor: "#%playersgraphcolor%",
|
||||
pointHoverBorderColor: "#8fabc6",
|
||||
pointHoverBorderWidth: 2,
|
||||
pointRadius: 1,
|
||||
pointHitRadius: 10,
|
||||
spanGaps: false,
|
||||
data: %dataweek% ,
|
||||
label: "Online",
|
||||
fill: true,
|
||||
lineTension: 0.1,
|
||||
backgroundColor: "#%playersgraphfill%",
|
||||
borderColor: "#%playersgraphcolor%",
|
||||
borderCapStyle: 'butt',
|
||||
borderDash: [],
|
||||
borderDashOffset: 0.0,
|
||||
borderJoinStyle: 'miter',
|
||||
pointBorderColor: "#%playersgraphcolor%",
|
||||
pointBackgroundColor: "#fff",
|
||||
pointBorderWidth: 1,
|
||||
pointHoverRadius: 5,
|
||||
pointHoverBackgroundColor: "#%playersgraphcolor%",
|
||||
pointHoverBorderColor: "#8fabc6",
|
||||
pointHoverBorderWidth: 2,
|
||||
pointRadius: 1,
|
||||
pointHitRadius: 10,
|
||||
spanGaps: false,
|
||||
data: %dataweek% ,
|
||||
}]};
|
||||
var playersChartWeek = new Chart(ctxweek, {
|
||||
type: 'scatter',
|
||||
data: dataweek,
|
||||
options: {
|
||||
tooltips: {
|
||||
callbacks: {
|
||||
label: function(tooltipItems, data) {
|
||||
var newDate = new Date();
|
||||
newDate.setTime(tooltipItems.xLabel);
|
||||
dateString = newDate.toUTCString();
|
||||
return dateString +': '+ tooltipItems.yLabel+ ' Players';
|
||||
}
|
||||
}
|
||||
},
|
||||
scales: {
|
||||
yAxes: [{
|
||||
display: true,
|
||||
ticks: {
|
||||
callback: function(value, index, values) {
|
||||
type: 'scatter',
|
||||
data: dataweek,
|
||||
options: {
|
||||
tooltips: {
|
||||
callbacks: {
|
||||
label: function(tooltipItems, data) {
|
||||
var newDate = new Date();
|
||||
newDate.setTime(tooltipItems.xLabel);
|
||||
dateString = newDate.toUTCString();
|
||||
return dateString +': '+ tooltipItems.yLabel+ ' Players';
|
||||
}
|
||||
}
|
||||
},
|
||||
scales: {
|
||||
yAxes: [{
|
||||
display: true,
|
||||
ticks: {
|
||||
callback: function(value, index, values) {
|
||||
switch (value) {
|
||||
case 0:
|
||||
return '0';
|
||||
@ -763,17 +763,17 @@
|
||||
return '';
|
||||
};
|
||||
},
|
||||
suggestedMax: %graphmaxplayers%,
|
||||
suggestedMin: 0
|
||||
}
|
||||
}],
|
||||
xAxes: [{
|
||||
type: 'linear',
|
||||
display: false
|
||||
}]
|
||||
}
|
||||
}
|
||||
});
|
||||
suggestedMax: %graphmaxplayers%,
|
||||
suggestedMin: 0
|
||||
}
|
||||
}],
|
||||
xAxes: [{
|
||||
type: 'linear',
|
||||
display: false
|
||||
}]
|
||||
}
|
||||
}
|
||||
});
|
||||
var ctxpunch = document.getElementById("punchcard");
|
||||
var datapunch = {
|
||||
datasets: [
|
||||
|
@ -154,5 +154,4 @@ public class MathUtilsTest {
|
||||
double result = MathUtils.sumDouble(l.stream());
|
||||
assertTrue(result + "/" + exp, exp == result);
|
||||
}
|
||||
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user