@@ -3,8 +3,33 @@ require("jquery-migrate");
33// var moment = require("moment");
44require ( "jqueryui" ) ;
55//require("jqueryui/jquery-ui.css");
6+ require ( "daterangepicker" ) ;
7+ var moment = require ( "moment" ) ;
8+
9+ require ( 'daterangepicker/daterangepicker.css' ) ;
610require ( '../../css/style.css' ) ;
711var 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+
833( function ( ) {
934 $ . ajaxSetup ( {
1035 headers : { 'RequestToken' : OC . requestToken }
@@ -20,6 +45,40 @@ var Chart = require("chart.js");
2045 var group3 = '' ;
2146 var filterProjectId = '' ;
2247 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+
2382
2483 var chartData = { } ;
2584 getData ( ) ;
@@ -147,9 +206,13 @@ var Chart = require("chart.js");
147206 }
148207 }
149208 } ;
209+ if ( myDoughnutChart != null ) {
210+ myDoughnutChart . destroy ( ) ;
211+ }
150212
151213 var ctx = document . getElementById ( "myChart" ) . getContext ( "2d" ) ;
152- var myDoughnutChart = new Chart ( ctx , {
214+
215+ myDoughnutChart = new Chart ( ctx , {
153216 type : 'doughnut' ,
154217 data : chartData ,
155218 options : {
@@ -166,11 +229,12 @@ var Chart = require("chart.js");
166229 return ( h + " hours " + m + " minutes" )
167230 } ,
168231 afterLabel : function ( tooltipItem , data ) {
169-
170232 var dataset = data [ 'datasets' ] [ tooltipItem . datasetIndex ] ;
233+ if ( ! ( 0 in dataset [ "_meta" ] ) )
234+ return '' ;
171235 var percent = Math . round ( ( dataset [ 'data' ] [ tooltipItem [ 'index' ] ] / dataset [ "_meta" ] [ 0 ] [ 'total' ] ) * 100 )
172236 return '(' + percent + '%)' ;
173- }
237+ } ,
174238 } ,
175239
176240 }
0 commit comments