diff --git a/Plan/src/main/java/com/djrapitops/plan/utilities/html/graphs/ServerPreferencePieCreator.java b/Plan/src/main/java/com/djrapitops/plan/utilities/html/graphs/ServerPreferencePieCreator.java new file mode 100644 index 000000000..316f13bcd --- /dev/null +++ b/Plan/src/main/java/com/djrapitops/plan/utilities/html/graphs/ServerPreferencePieCreator.java @@ -0,0 +1,30 @@ +package main.java.com.djrapitops.plan.utilities.html.graphs; + +import java.util.Map; + +public class ServerPreferencePieCreator { + + private ServerPreferencePieCreator() { + throw new IllegalStateException("Utility Class"); + } + + public static String createSeriesData(Map serverPlaytimes) { + StringBuilder seriesBuilder = new StringBuilder("["); + int i = 0; + int size = serverPlaytimes.size(); + for (Map.Entry server : serverPlaytimes.entrySet()) { + String serverName = server.getKey(); + seriesBuilder.append("{name:'").append(serverName) + .append("',y:").append(server.getValue()).append("'"); + + seriesBuilder.append("}"); + if (i < size - 1) { + seriesBuilder.append(","); + } + i++; + } + seriesBuilder.append("]"); + + return seriesBuilder.toString(); + } +} diff --git a/Plan/src/main/resources/js/serverPie.js b/Plan/src/main/resources/js/serverPie.js new file mode 100644 index 000000000..f438a0c5c --- /dev/null +++ b/Plan/src/main/resources/js/serverPie.js @@ -0,0 +1,53 @@ +function serverPie(id, serverSeries) { + Highcharts.chart(id, { + chart: { + plotBackgroundColor: null, + plotBorderWidth: null, + plotShadow: false, + type: 'pie' + }, + title: {text: ''}, + plotOptions: { + pie: { + allowPointSelect: true, + cursor: 'pointer', + dataLabels: { + enabled: false + }, + showInLegend: true + } + }, + tooltip: { + formatter: function() { + return ''+this.point.name+': ' + formatTimeAmount(this.y) + ' ('+this.percentage.toFixed(2)+'%)'; + } + }, + series: [serverSeries] + }); +} + +function formatTimeAmount(ms) { + var out = ""; + + var seconds = Math.floor(ms / 1000); + + var dd = Math.floor(seconds / 86400); + seconds -= (dd * 86400); + var dh = Math.floor(seconds / 3600); + seconds -= (dh * 3600); + var dm = Math.floor(seconds / 60); + seconds -= (dm * 60); + seconds = Math.floor(seconds); + if (dd !== 0) { + out += dd.toString() + "d "; + } + if (dh !== 0) { + out += dh.toString() + "h "; + } + if (dm !== 0) { + out += dm.toString() + "m "; + } + out += seconds.toString() + "s "; + + return out; +} \ No newline at end of file