IW4M-Admin/WebfrontCore/wwwroot/js/stats.js
RaidMax c5375b661b huge commit for advanced stats feature.
broke data out into its own library.
may be breaking changes with existing plugins
2021-03-22 11:09:25 -05:00

94 lines
2.6 KiB
JavaScript

function getStatsChart(id, width, height) {
const data = $('#' + id).data('history');
if (data === undefined) {
return;
}
let fixedData = [];
data.forEach(function (item, i) {
fixedData[i] = { x: i, y: Math.floor(item) };
});
let dataMin = Math.min(...data);
const dataMax = Math.max(...data);
if (dataMax - dataMin === 0) {
dataMin = 0;
}
const padding = (dataMax - dataMin) * 0.5;
const min = Math.max(0, dataMin - padding);
const max = dataMax + padding;
let interval = Math.floor((max - min) / 2);
if (interval < 1)
interval = 1;
return new CanvasJS.Chart(id, {
backgroundColor: 'transparent',
height: height,
width: width,
animationEnabled: false,
toolTip: {
contentFormatter: function (e) {
return `${_localization['WEBFRONT_ADV_STATS_RANKING_METRIC']} ${Math.round(e.entries[0].dataPoint.y, 1)}`;
}
},
title: {
fontSize: 0
},
axisX: {
gridThickness: 0,
lineThickness: 0,
tickThickness: 0,
margin: 0,
valueFormatString: ' '
},
axisY: {
labelFontSize: 12,
interval: interval,
gridThickness: 0,
lineThickness: 0.5,
valueFormatString: '#,##0',
minimum: min,
maximum: max
},
legend: {
dockInsidePlotArea: true
},
data: [{
type: 'spline',
color: '#c0c0c0',
markerSize: 0,
dataPoints: fixedData,
lineThickness: 2
}]
});
}
$(document).ready(function () {
$('.client-rating-graph').each(function (i, element) {
getStatsChart($(element).attr('id'), $(element).width(), $(element).height()).render();
});
$(window).resize(function () {
$('.client-rating-graph').each(function (index, element) {
getStatsChart($(element).attr('id'), $(element).width(), $(element).height()).render();
});
});
$('.top-players-link').click(function (event) {
$($(this).attr('href')).html('');
initLoader('/Stats/GetTopPlayersAsync?serverId=' + $(this).data('serverid'), $(this).attr('href'), 10, 0);
loadMoreItems();
});
});
$(document).on("loaderFinished", function (event, response) {
const ids = $.map($(response).find('.client-rating-graph'), function (elem) { return $(elem).attr('id'); });
ids.forEach(function (item, index) {
getStatsChart(item, $(item).width(), $(item).height()).render();
});
});