@@ -33,6 +33,8 @@ define(['jquery',
33
33
. attr ( 'width' , width )
34
34
. attr ( 'height' , height ) ;
35
35
36
+ var timepoint = 1 ;
37
+
36
38
// These are the quantiles Aditya set up to use.
37
39
var domain = [ 29 , 145 , 322 , 472 , 977 , 2259 , 8861 ] ;
38
40
// These are the colors we're going to set to fill values, a la:
@@ -60,6 +62,9 @@ define(['jquery',
60
62
'< 8861' ,
61
63
62
64
] ;
65
+ var div = d3 . select ( "body" ) . append ( "div" )
66
+ . attr ( "class" , "tooltip" )
67
+ . style ( "opacity" , 0 ) ;
63
68
64
69
// This is the function that actually performs the visualization. It
65
70
// expects to get the loaded TopoJSON of the states as well as the
@@ -185,8 +190,7 @@ define(['jquery',
185
190
. attr ( 'cx' , 550 )
186
191
. attr ( 'cy' , 200 )
187
192
. attr ( 'r' , 50 ) ;
188
- // .style('fill', 'rgb(8,81,156)');
189
-
193
+
190
194
d3 . select ( 'svg' ) . append ( 'text' )
191
195
. attr ( 'x' , 510 )
192
196
. attr ( 'y' , 200 )
@@ -238,6 +242,7 @@ define(['jquery',
238
242
return d . id . replace ( / / g, '_' ) ;
239
243
} )
240
244
. attr ( 'd' , path ) ;
245
+
241
246
242
247
}
243
248
@@ -270,9 +275,20 @@ define(['jquery',
270
275
}
271
276
272
277
function onSlide ( event , ui ) {
278
+ timepoint = ui . value ;
273
279
colorMap ( ui . value ) ;
274
280
}
275
281
282
+ function getValueForState ( state ) {
283
+ var weekHeading = timeNames [ timepoint - 1 ] ;
284
+ var stateWithoutSpaces = state . replace ( / / g, '_' ) ;
285
+ for ( var row = 0 ; row < csvData . length ; row ++ ) {
286
+ if ( $ . inArray ( stateWithoutSpaces , states [ row ] ) !== - 1 ) {
287
+ return csvData [ row ] [ weekHeading ] ;
288
+ }
289
+ }
290
+ }
291
+
276
292
function colorMap ( timeIndex ) {
277
293
var weekHeading = timeNames [ timeIndex - 1 ] ;
278
294
$ ( '#time-label' ) . text ( weekHeading ) ;
@@ -286,12 +302,54 @@ define(['jquery',
286
302
for ( var state = 0 ; state < states [ row ] . length ; state ++ ) {
287
303
var stateName = states [ row ] [ state ] ;
288
304
if ( stateName !== 'Not_defined' ) {
305
+
306
+ console . log ( "value is:" + value ) ;
307
+
289
308
d3 . select ( 'svg' ) . select ( '.' + stateName )
290
- . style ( 'fill' , color ) ;
309
+ . style ( 'fill' , color )
310
+ . on ( "mouseover" , function ( d ) {
311
+ d3 . select ( this ) . transition ( ) . duration ( 300 ) . style ( "opacity" , 1 ) ;
312
+ div . transition ( ) . duration ( 300 )
313
+ . style ( "opacity" , 1 )
314
+ div . text ( function ( ) {
315
+ var val = getValueForState ( d . id ) ;
316
+ console . log ( 'val for ' + d . id + ' is: ' + val ) ;
317
+ return d . id + ':\n' + val ;
318
+ } )
319
+ . style ( "left" , ( d3 . event . pageX ) + "px" )
320
+ . style ( "top" , ( d3 . event . pageY - 30 ) + "px" ) ;
321
+ } )
322
+ . on ( "mouseout" , function ( ) {
323
+ d3 . select ( this )
324
+ . transition ( ) . duration ( 300 )
325
+ . style ( "opacity" , 1 ) ;
326
+ div . transition ( ) . duration ( 300 )
327
+ . style ( "opacity" , 0 ) ;
328
+ } ) ;
291
329
}
292
330
else {
293
331
d3 . select ( 'svg' ) . select ( 'circle' )
294
- . style ( 'fill' , color ) ;
332
+ . style ( 'fill' , color )
333
+ . on ( "mouseover" , function ( d ) {
334
+ d3 . select ( this ) . transition ( ) . duration ( 300 ) . style ( "opacity" , 1 ) ;
335
+ div . transition ( ) . duration ( 300 )
336
+ . style ( "opacity" , 1 )
337
+ div . text ( function ( ) {
338
+ var val = getValueForState ( 'Not defined' ) ;
339
+ return 'Undefined Region:\n' + val ;
340
+ } )
341
+ . style ( "left" , ( d3 . event . pageX ) + "px" )
342
+ . style ( "top" , ( d3 . event . pageY - 30 ) + "px" ) ;
343
+ } )
344
+ . on ( "mouseout" , function ( ) {
345
+ d3 . select ( this )
346
+ . transition ( ) . duration ( 300 )
347
+ . style ( "opacity" , 1 ) ;
348
+ div . transition ( ) . duration ( 300 )
349
+ . style ( "opacity" , 0 ) ;
350
+ } ) ;
351
+
352
+
295
353
}
296
354
}
297
355
}
0 commit comments