@@ -200,7 +200,14 @@ function vizBenchmark() {
200200 . enter ( )
201201 . append ( "rect" )
202202 . attr ( "id" , function ( d ) { return "setPnt" + d . i ; } )
203- . attr ( "fill" , function ( d ) { return colors [ d . i ] ; } )
203+ . attr ( "fill" , function ( d ) { return colors [ d . i ] ; } )
204+ . attr ( "class" , function ( d ) {
205+ var classes = "set" + d . i
206+ for ( var i = 0 ; i < d . items . length ; i ++ ) {
207+ classes = classes + " item" + d . items [ i ] ;
208+ }
209+ return classes ;
210+ } )
204211 . style ( "opacity" , 1 )
205212 . call ( force . drag )
206213 . on ( "dblclick" , function ( d ) { d . fixed = false ; } )
@@ -216,21 +223,45 @@ function vizBenchmark() {
216223 . style ( "opacity" , .85 )
217224 . style ( "left" , ( left ) + "px" )
218225 . style ( "top" , ( d3 . event . pageY - 25 ) + "px" ) ;
219- div . html ( "Set " + d . i ) ;
226+ div . html ( "Set " + d . i + ". Cost: " + d . cost ) ;
227+
220228 svg . selectAll ( ".set" + d . i )
221- // .transition()
222- // .duration(20)
223229 . classed ( "highlighted" , true ) ;
224-
225- } )
230+ var connectors = svg . append ( "g" )
231+ . attr ( "id" , "set" + d . i + "g" )
232+ . style ( "pointer-events" , "none" ) ;
233+ for ( var i = 0 ; i < d . items . length ; i ++ ) {
234+ var item = items [ d . items [ i ] ] ;
235+ var link = svg . select ( "line#set" + d . i + "item" + item . i ) ;
236+ var linkX = ( parseFloat ( link . attr ( "x1" ) ) + parseFloat ( link . attr ( "x2" ) ) ) / 2 ;
237+ var linkY = ( parseFloat ( link . attr ( "y1" ) ) + parseFloat ( link . attr ( "y2" ) ) ) / 2 ;
238+ connectors . append ( "line" )
239+ . attr ( "stroke" , "#4488ff" )
240+ . attr ( "stroke-width" , 4 )
241+ . attr ( "x1" , d . x )
242+ . attr ( "y1" , d . y )
243+ . attr ( "x2" , linkX )
244+ . attr ( "y2" , linkY ) ;
245+ connectors . append ( "line" )
246+ . attr ( "stroke" , "#4488ff" )
247+ . attr ( "stroke-width" , 4 )
248+ . attr ( "x1" , item . x )
249+ . attr ( "y1" , item . y )
250+ . attr ( "x2" , linkX )
251+ . attr ( "y2" , linkY ) ;
252+ }
253+ } )
226254 . on ( "mouseout" , function ( d ) {
227255 div . transition ( )
228256 . duration ( 500 )
229257 . style ( "opacity" , 0 ) ;
230258 svg . selectAll ( ".set" + d . i )
231- // .transition()
232- // .duration(20)
233259 . classed ( "highlighted" , false ) ;
260+ svg . selectAll ( "g#set" + d . i + "g" )
261+ . transition ( )
262+ . duration ( 100 )
263+ . style ( "opacity" , 0 )
264+ . remove ( ) ;
234265 } ) ;
235266
236267 //items
@@ -264,11 +295,44 @@ function vizBenchmark() {
264295 . style ( "left" , ( left ) + "px" )
265296 . style ( "top" , ( d3 . event . pageY - 25 ) + "px" ) ;
266297 div . html ( "Item " + d . i ) ;
298+
299+ svg . selectAll ( ".item" + d . i )
300+ . classed ( "highlighted" , true ) ;
301+ var connectors = svg . append ( "g" )
302+ . attr ( "id" , "item" + d . i + "g" )
303+ . style ( "pointer-events" , "none" ) ;
304+ for ( var i = 0 ; i < d . coveredBy . length ; i ++ ) {
305+ var theSet = sets [ d . coveredBy [ i ] ] ;
306+ var link = svg . select ( "line#set" + theSet . i + "item" + d . i ) ;
307+ var linkX = ( parseFloat ( link . attr ( "x1" ) ) + parseFloat ( link . attr ( "x2" ) ) ) / 2 ;
308+ var linkY = ( parseFloat ( link . attr ( "y1" ) ) + parseFloat ( link . attr ( "y2" ) ) ) / 2 ;
309+ connectors . append ( "line" )
310+ . attr ( "stroke" , "#4488ff" )
311+ . attr ( "stroke-width" , 4 )
312+ . attr ( "x1" , d . x )
313+ . attr ( "y1" , d . y )
314+ . attr ( "x2" , linkX )
315+ . attr ( "y2" , linkY ) ;
316+ connectors . append ( "line" )
317+ . attr ( "stroke" , "#4488ff" )
318+ . attr ( "stroke-width" , 4 )
319+ . attr ( "x1" , theSet . x )
320+ . attr ( "y1" , theSet . y )
321+ . attr ( "x2" , linkX )
322+ . attr ( "y2" , linkY ) ;
323+ }
267324 } )
268325 . on ( "mouseout" , function ( d ) {
269326 div . transition ( )
270327 . duration ( 500 )
271328 . style ( "opacity" , 0 ) ;
329+ svg . selectAll ( ".item" + d . i )
330+ . classed ( "highlighted" , false ) ;
331+ svg . selectAll ( "g#item" + d . i + "g" )
332+ . transition ( )
333+ . duration ( 100 )
334+ . style ( "opacity" , 0 )
335+ . remove ( ) ;
272336 } ) ;
273337
274338 //links
0 commit comments