@@ -38,8 +38,8 @@ <h1>Realm stats</h1>
38
38
</ tr >
39
39
</ thead >
40
40
< tbody >
41
- {{range $stat := $stats}}
42
- < tr >
41
+ {{range $i, $ stat := $stats}}
42
+ < tr onclick =" highlightRow({{$i}}) " >
43
43
< td > {{$stat.Date.Format "2006-01-02"}}</ td >
44
44
< td > {{$stat.CodesIssued}}</ td >
45
45
< td > {{$stat.CodesClaimed}}</ td >
@@ -99,32 +99,47 @@ <h1>Realm stats</h1>
99
99
{ { end } }
100
100
}
101
101
102
+ // fixDate converts the first element in an array to a Date.
103
+ // This is just to properly munge types for Google Charts, and the
104
+ // per-user-per-realm chart.
102
105
function fixDate ( arr ) {
103
106
arr [ 0 ] = new Date ( arr [ 0 ] )
104
107
return arr
105
108
}
106
109
107
- function drawUsersChart ( ) {
110
+ // holds the per-user-per-realm chart & data created by Google Charts.
111
+ var userChart , userChartData ;
112
+
113
+ // highlightRow highlights a given row in the per-user-per-realm chart.
114
+ function highlightRow ( index ) {
115
+ var s = [ ] ;
116
+ for ( var i = 0 ; i < userChartData . getNumberOfColumns ( ) ; i ++ ) {
117
+ s = s . concat ( { row :index , column :i } )
118
+ }
119
+ userChart . setSelection ( s ) ;
120
+ }
121
+
122
+ function drawUsersChart ( ) {
108
123
{ { if $userStats } }
109
- var data = new google . visualization . DataTable ( ) ;
110
-
111
- data . addColumn ( 'date' , 'Day' ) ;
112
- { { range $name := $names } }
113
- data . addColumn ( 'number' , '{{$name}}' ) ;
114
- { { end } }
115
- data . addRows ( [
116
- { { range $stat := $userStats } }
117
- fixDate ( { { $stat} } ) ,
118
- { { end} }
119
- ] ) ;
124
+ userChartData = new google . visualization . DataTable ( ) ;
125
+
126
+ userChartData . addColumn ( 'date' , 'Day' ) ;
127
+ { { range $name := $names } }
128
+ userChartData . addColumn ( 'number' , '{{$name}}' ) ;
129
+ { { end } }
130
+ userChartData . addRows ( [
131
+ { { range $stat := $userStats } }
132
+ fixDate ( { { $stat} } ) ,
133
+ { { end} }
134
+ ] ) ;
120
135
121
- var options = {
122
- legend : { position : 'bottom' } ,
123
- tooltip : { trigger : 'focus' } ,
124
- } ;
136
+ var options = {
137
+ legend : { position : 'bottom' } ,
138
+ tooltip : { trigger : 'focus' } ,
139
+ } ;
125
140
126
- var chart = new google . charts . Line ( document . getElementById ( 'per_user_chart' ) ) ;
127
- chart . draw ( data , google . charts . Line . convertOptions ( options ) ) ;
141
+ userChart = new google . charts . Line ( document . getElementById ( 'per_user_chart' ) ) ;
142
+ userChart . draw ( userChartData , google . charts . Line . convertOptions ( options ) ) ;
128
143
{ { end } }
129
144
}
130
145
</ script >
0 commit comments