1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
|
'use strict';
/* eslint-disable no-implicit-globals */
/*!
* Used to embed translation stats graph on other pages.
* @license GPL-2.0-or-later
*/
var EmbeddedHandler = function ( $graphContainer ) {
var graphOptions = JSON.parse(
$graphContainer.find( '[name="translationStatsGraphOptions"]' ).val()
);
function getHeight() {
return parseInt( graphOptions.height, 10 );
}
function getWidth() {
return parseInt( graphOptions.width, 10 );
}
function getAllOptions() {
return {
measure: graphOptions.count,
days: graphOptions.days,
start: graphOptions.start,
granularity: graphOptions.scale,
group: graphOptions.group,
language: graphOptions.language,
height: getHeight(),
width: getWidth()
};
}
return {
getAllOptions: getAllOptions
};
};
$( function () {
var $graphContainers = $( '.mw-translate-translationstats-container' ),
currentGraph = 0,
graphInstances = [];
function loadGraph() {
var currentGraphBuilder = graphInstances[ currentGraph ].graphBuilder,
currentOptions = graphInstances[ currentGraph ].options.getAllOptions();
currentGraphBuilder
.display( currentOptions )
.always( function () {
++currentGraph;
if ( currentGraph < graphInstances.length ) {
loadGraph();
}
} );
}
// Create graph and options instances, then display loader
function initGraph( $graphContainer ) {
var graphBuilder,
graphOptions;
graphOptions = new EmbeddedHandler( $graphContainer );
graphBuilder = new mw.translate.TranslationStatsGraphBuilder(
$graphContainer, graphOptions.getAllOptions()
);
graphBuilder.showLoading();
return {
graphBuilder: graphBuilder,
options: graphOptions
};
}
for ( ;currentGraph < $graphContainers.length; ++currentGraph ) {
graphInstances.push(
initGraph( $graphContainers.eq( currentGraph ) )
);
}
currentGraph = 0;
setTimeout( function () {
// Give time to display the loaders.
loadGraph();
} );
} );
|