Files
codeocean/app/assets/javascripts/statistics_activity_history.js

88 lines
2.4 KiB
JavaScript

$(document).on('turbolinks:load', function() {
function manageActivityHistory(prefix) {
var containerId = prefix + '-activity-history';
if ($('.graph#' + containerId).isPresent()) {
var chartData;
var dataset;
var graph;
var groups;
var buildChartGroups = function () {
return _.map(chartData, function (element) {
return {
content: element.name,
id: element.key,
visible: true,
options: {
interpolation: false,
yAxisOrientation: element.axis ? element.axis : 'left'
}
};
});
};
var initializeChart = function () {
dataset = new vis.DataSet();
groups = new vis.DataSet(buildChartGroups());
graph = new vis.Graph2d(document.getElementById(containerId), dataset, groups, {
dataAxis: {
left: {
range: {min: 0}
},
right: {
range: {min: 0}
},
showMinorLabels: true,
alignZeros: true
},
drawPoints: {
style: 'circle'
},
legend: true,
start: $('#from-date')[0].value || 0,
end: $('#to-date')[0].value || 0
});
};
var refreshData = function (callback) {
var params = new URLSearchParams(window.location.search.slice(1));
var jqxhr = $.ajax('/statistics/graphs/' + prefix + '-activity-history.json', {
dataType: 'json',
data: {from: params.get('from'), to: params.get('to'), interval: params.get('interval')},
method: 'GET'
});
jqxhr.done(function (response) {
(callback || _.noop)(response);
updateChartData(response);
});
};
var updateChartData = function (response) {
_.each(response, function (group) {
_.each(group.data, function (data) {
dataset.add({
group: group.key,
x: data.key,
y: data.value
});
});
});
};
refreshData(function (data) {
chartData = data;
$('#' + containerId).parent().find('.spinner').hide();
initializeChart();
});
}
}
if ($.isController('statistics')) {
manageActivityHistory('rfc');
manageActivityHistory('user');
}
});