Merge pull request #203 from Fuzzlemann/master

PR for 3.6.0 (Fuzzlemann) (3)
This commit is contained in:
Rsl1122 2017-07-28 13:14:10 +03:00 committed by GitHub
commit b371f0fb1e
21 changed files with 1614 additions and 1610 deletions

View File

@ -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"
};
}

View File

@ -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"
};
}

View File

@ -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 + "");
}
}
}

View File

@ -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());
}
}

View File

@ -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"
};
}

View File

@ -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"
};
}

View File

@ -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"
};
}

View File

@ -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."
};
}

View File

@ -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."
};
}

View File

@ -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"
};
}

View File

@ -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"
};
}

View File

@ -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"
};
}

View File

@ -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."
};
}

View File

@ -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."
};
}

View File

@ -75,5 +75,4 @@ public class GeolocationPart extends RawData<GeolocationPart> {
public void addGeoloc(String country) {
geoLocations.computeIfPresent(country, (computedCountry, amount) -> amount + 1);
}
}

View File

@ -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));

View File

@ -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);
}

View File

@ -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

View File

@ -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: [

View File

@ -154,5 +154,4 @@ public class MathUtilsTest {
double result = MathUtils.sumDouble(l.stream());
assertTrue(result + "/" + exp, exp == result);
}
}