forked from DGNum/gestioCOF
Simplify statistic.js
On supprime des fonctions inutiles, on lint, et on simplifie 2-3 options inutilisées.
This commit is contained in:
parent
48ad5cd1c7
commit
c66fb7eb6f
1 changed files with 41 additions and 67 deletions
|
@ -1,28 +1,15 @@
|
|||
(function($){
|
||||
(function ($) {
|
||||
window.StatsGroup = function (url, target) {
|
||||
// a class to properly display statictics
|
||||
|
||||
// url : points to an ObjectResumeStat that lists the options through JSON
|
||||
// target : element of the DOM where to put the stats
|
||||
|
||||
var self = this;
|
||||
var element = $(target);
|
||||
var content = $("<div class='full'>");
|
||||
var buttons;
|
||||
|
||||
function dictToArray (dict, start) {
|
||||
// converts the dicts returned by JSONResponse to Arrays
|
||||
// necessary because for..in does not guarantee the order
|
||||
if (start === undefined) start = 0;
|
||||
var array = new Array();
|
||||
for (var k in dict) {
|
||||
array[k] = dict[k];
|
||||
}
|
||||
array.splice(0, start);
|
||||
return array;
|
||||
}
|
||||
|
||||
function handleTimeChart (data) {
|
||||
function handleTimeChart(data) {
|
||||
// reads the balance data and put it into chartjs formatting
|
||||
chart_data = new Array();
|
||||
for (var i = 0; i < data.length; i++) {
|
||||
|
@ -36,7 +23,7 @@
|
|||
return chart_data;
|
||||
}
|
||||
|
||||
function showStats () {
|
||||
function showStats() {
|
||||
// CALLBACK : called when a button is selected
|
||||
|
||||
// shows the focus on the correct button
|
||||
|
@ -44,24 +31,20 @@
|
|||
$(this).addClass("focus");
|
||||
|
||||
// loads data and shows it
|
||||
$.getJSON(this.stats_target_url, {format: 'json'}, displayStats);
|
||||
$.getJSON(this.stats_target_url, displayStats);
|
||||
}
|
||||
|
||||
function displayStats (data) {
|
||||
function displayStats(data) {
|
||||
// reads the json data and updates the chart display
|
||||
|
||||
var chart_datasets = [];
|
||||
var charts = dictToArray(data.charts);
|
||||
|
||||
// are the points indexed by timestamps?
|
||||
var is_time_chart = data.is_time_chart || false;
|
||||
|
||||
// reads the charts data
|
||||
for (var i = 0; i < charts.length; i++) {
|
||||
var chart = charts[i];
|
||||
|
||||
for (let chart of data.charts) {
|
||||
// format the data
|
||||
var chart_data = is_time_chart ? handleTimeChart(chart.values) : dictToArray(chart.values, 0);
|
||||
var chart_data = is_time_chart ? handleTimeChart(chart.values) : chart.values;
|
||||
|
||||
chart_datasets.push(
|
||||
{
|
||||
|
@ -76,29 +59,24 @@
|
|||
|
||||
// options for chartjs
|
||||
var chart_options =
|
||||
{
|
||||
responsive: true,
|
||||
maintainAspectRatio: false,
|
||||
tooltips: {
|
||||
mode: 'index',
|
||||
intersect: false,
|
||||
},
|
||||
hover: {
|
||||
mode: 'nearest',
|
||||
intersect: false,
|
||||
}
|
||||
};
|
||||
{
|
||||
responsive: true,
|
||||
maintainAspectRatio: false,
|
||||
tooltips: {
|
||||
mode: 'index',
|
||||
intersect: false,
|
||||
},
|
||||
hover: {
|
||||
mode: 'nearest',
|
||||
intersect: false,
|
||||
}
|
||||
};
|
||||
|
||||
// additionnal options for time-indexed charts
|
||||
if (is_time_chart) {
|
||||
chart_options['scales'] = {
|
||||
xAxes: [{
|
||||
type: "time",
|
||||
display: true,
|
||||
scaleLabel: {
|
||||
display: false,
|
||||
labelString: 'Date'
|
||||
},
|
||||
time: {
|
||||
tooltipFormat: 'll HH:mm',
|
||||
displayFormats: {
|
||||
|
@ -115,26 +93,19 @@
|
|||
}
|
||||
|
||||
}],
|
||||
yAxes: [{
|
||||
display: true,
|
||||
scaleLabel: {
|
||||
display: false,
|
||||
labelString: 'value'
|
||||
}
|
||||
}]
|
||||
};
|
||||
}
|
||||
|
||||
// global object for the options
|
||||
var chart_model =
|
||||
{
|
||||
type: 'line',
|
||||
options: chart_options,
|
||||
data: {
|
||||
labels: data.labels || [],
|
||||
datasets: chart_datasets,
|
||||
}
|
||||
};
|
||||
{
|
||||
type: 'line',
|
||||
options: chart_options,
|
||||
data: {
|
||||
labels: data.labels || [],
|
||||
datasets: chart_datasets,
|
||||
}
|
||||
};
|
||||
|
||||
// saves the previous charts to be destroyed
|
||||
var prev_chart = content.children();
|
||||
|
@ -151,23 +122,26 @@
|
|||
}
|
||||
|
||||
// initialize the interface
|
||||
function initialize (data) {
|
||||
function initialize(data) {
|
||||
// creates the bar with the buttons
|
||||
buttons = $("<ul>",
|
||||
{class: "nav stat-nav",
|
||||
"aria-label": "select-period"});
|
||||
{
|
||||
class: "nav stat-nav",
|
||||
"aria-label": "select-period"
|
||||
});
|
||||
|
||||
var to_click;
|
||||
var context = data.stats;
|
||||
|
||||
for (var i = 0; i < context.length; i++) {
|
||||
for (let stat of data.stats) {
|
||||
// creates the button
|
||||
var btn_wrapper = $("<li>", {role:"presentation"});
|
||||
var btn_wrapper = $("<li>", { role: "presentation" });
|
||||
var btn = $("<a>",
|
||||
{class: "btn btn-nav",
|
||||
type: "button"})
|
||||
.text(context[i].label)
|
||||
.prop("stats_target_url", context[i].url)
|
||||
{
|
||||
class: "btn btn-nav",
|
||||
type: "button"
|
||||
})
|
||||
.text(stat.label)
|
||||
.prop("stats_target_url", stat.url)
|
||||
.on("click", showStats);
|
||||
|
||||
// saves the default option to select
|
||||
|
@ -189,7 +163,7 @@
|
|||
|
||||
// constructor
|
||||
(function () {
|
||||
$.getJSON(url, {format: 'json'}, initialize);
|
||||
$.getJSON(url, initialize);
|
||||
})();
|
||||
};
|
||||
})(jQuery);
|
||||
|
|
Loading…
Reference in a new issue