@@ -3,8 +3,33 @@ require("jquery-migrate");
3
3
// var moment = require("moment");
4
4
require ( "jqueryui" ) ;
5
5
//require("jqueryui/jquery-ui.css");
6
+ require ( "daterangepicker" ) ;
7
+ var moment = require ( "moment" ) ;
8
+
9
+ require ( 'daterangepicker/daterangepicker.css' ) ;
6
10
require ( '../../css/style.css' ) ;
7
11
var Chart = require ( "chart.js" ) ;
12
+
13
+
14
+ Chart . plugins . register ( {
15
+ afterDraw : function ( chart ) {
16
+ if ( chart . data . datasets . length === 0 || chart . data . datasets [ 0 ] . data . length === 0 ) {
17
+ // No data is present
18
+ var ctx = chart . chart . ctx ;
19
+ var width = chart . chart . width ;
20
+ var height = chart . chart . height
21
+ chart . clear ( ) ;
22
+
23
+ ctx . save ( ) ;
24
+ ctx . textAlign = 'center' ;
25
+ ctx . textBaseline = 'middle' ;
26
+ ctx . font = "16px normal 'Helvetica Nueue'" ;
27
+ ctx . fillText ( 'No data to display' , width / 2 , height / 2 ) ;
28
+ ctx . restore ( ) ;
29
+ }
30
+ }
31
+ } ) ;
32
+
8
33
( function ( ) {
9
34
$ . ajaxSetup ( {
10
35
headers : { 'RequestToken' : OC . requestToken }
@@ -20,6 +45,40 @@ var Chart = require("chart.js");
20
45
var group3 = '' ;
21
46
var filterProjectId = '' ;
22
47
var filterClientId = '' ;
48
+ var myDoughnutChart = null ;
49
+
50
+
51
+ function cb ( start , end ) {
52
+ $ ( '#report-range span' ) . html ( start . format ( 'DD/MM/YY' ) + ' - ' + end . format ( 'DD/MM/YY' ) ) ;
53
+ }
54
+ $ ( "#report-range" ) . daterangepicker ( {
55
+ timePicker : false ,
56
+ startDate : start ,
57
+ endDate : end ,
58
+ showCustomRangeLabel : false ,
59
+ ranges : {
60
+ 'Today' : [ moment ( ) . startOf ( 'day' ) , moment ( ) . endOf ( 'day' ) ] ,
61
+ 'Last 7 Days' : [ moment ( ) . startOf ( 'day' ) . subtract ( 6 , 'days' ) , moment ( ) . endOf ( 'day' ) ] ,
62
+ 'Last 30 Days' : [ moment ( ) . startOf ( 'day' ) . subtract ( 29 , 'days' ) , moment ( ) . endOf ( 'day' ) ] ,
63
+ 'Last 90 Days' : [ moment ( ) . startOf ( 'day' ) . subtract ( 89 , 'days' ) , moment ( ) . endOf ( 'day' ) ] ,
64
+ 'Last 365 Days' : [ moment ( ) . startOf ( 'day' ) . subtract ( 364 , 'days' ) , moment ( ) . endOf ( 'day' ) ] ,
65
+ 'This Month' : [ moment ( ) . startOf ( 'month' ) , moment ( ) . endOf ( 'day' ) ] ,
66
+ 'This Year' : [ moment ( ) . startOf ( 'year' ) , moment ( ) . endOf ( 'day' ) ] ,
67
+ 'Starting last year' : [ moment ( ) . startOf ( 'year' ) . subtract ( 1 , 'year' ) , moment ( ) . endOf ( 'day' ) ] ,
68
+ 'Last 3 years' : [ moment ( ) . startOf ( 'day' ) . subtract ( 3 , 'year' ) , moment ( ) . endOf ( 'day' ) ] ,
69
+ 'Last 5 years' : [ moment ( ) . startOf ( 'day' ) . subtract ( 5 , 'year' ) , moment ( ) . endOf ( 'day' ) ] ,
70
+ } ,
71
+ locale : {
72
+ format : 'DD/MM/YY'
73
+ }
74
+ } , cb ) ;
75
+ $ ( "#report-range" ) . on ( 'apply.daterangepicker' , function ( ev , picker ) {
76
+ //days = Math.round((picker.endDate.unix()-picker.startDate.unix()) / 86400);
77
+ start = picker . startDate ;
78
+ getData ( ) ;
79
+ } ) ;
80
+ cb ( start , end ) ;
81
+
23
82
24
83
var chartData = { } ;
25
84
getData ( ) ;
@@ -147,9 +206,13 @@ var Chart = require("chart.js");
147
206
}
148
207
}
149
208
} ;
209
+ if ( myDoughnutChart != null ) {
210
+ myDoughnutChart . destroy ( ) ;
211
+ }
150
212
151
213
var ctx = document . getElementById ( "myChart" ) . getContext ( "2d" ) ;
152
- var myDoughnutChart = new Chart ( ctx , {
214
+
215
+ myDoughnutChart = new Chart ( ctx , {
153
216
type : 'doughnut' ,
154
217
data : chartData ,
155
218
options : {
@@ -166,11 +229,12 @@ var Chart = require("chart.js");
166
229
return ( h + " hours " + m + " minutes" )
167
230
} ,
168
231
afterLabel : function ( tooltipItem , data ) {
169
-
170
232
var dataset = data [ 'datasets' ] [ tooltipItem . datasetIndex ] ;
233
+ if ( ! ( 0 in dataset [ "_meta" ] ) )
234
+ return '' ;
171
235
var percent = Math . round ( ( dataset [ 'data' ] [ tooltipItem [ 'index' ] ] / dataset [ "_meta" ] [ 0 ] [ 'total' ] ) * 100 )
172
236
return '(' + percent + '%)' ;
173
- }
237
+ } ,
174
238
} ,
175
239
176
240
}
0 commit comments