@@ -330,6 +330,11 @@ app.controller('Main', function($scope, data) {
330
330
var links = [ ] ;
331
331
332
332
data . success ( function ( data ) {
333
+ if ( ! data ) {
334
+ $scope . message = 'Enable DI profiling by appending ?di_debug into the url.' ;
335
+ return ;
336
+ }
337
+
333
338
var injectors = data . injectors ;
334
339
var injectorsMap = { } ;
335
340
var rootInjectors = [ ] ;
@@ -354,26 +359,26 @@ app.controller('Main', function($scope, data) {
354
359
}
355
360
356
361
// Process all providers defined in this injector.
357
- Object . keys ( injector . providers ) . forEach ( function ( name ) {
358
- var provider = injector . providers [ name ] ;
362
+ Object . keys ( injector . providers ) . forEach ( function ( id ) {
363
+ var provider = injector . providers [ id ] ;
359
364
360
- providersMap [ name ] = providersMap [ name ] || [ ] ;
361
- providersMap [ name ] . push ( provider ) ;
365
+ providersMap [ id ] = providersMap [ id ] || [ ] ;
366
+ providersMap [ id ] . push ( provider ) ;
362
367
363
368
// Compute override links.
364
- if ( parent && parent . providers [ name ] ) {
365
- links . push ( { source : parent . providers [ name ] , target : provider , type : 'override' } ) ;
369
+ if ( parent && parent . providers [ id ] ) {
370
+ links . push ( { source : parent . providers [ id ] , target : provider , type : 'override' } ) ;
366
371
}
367
372
368
373
// Compute dependency links.
369
374
provider . dependencies . forEach ( function ( dep ) {
370
- if ( injector . providers [ dep ] ) {
371
- links . push ( { source : provider , target : injector . providers [ dep ] , type : 'dependency' } ) ;
375
+ if ( injector . providers [ dep . token ] ) {
376
+ links . push ( { source : provider , target : injector . providers [ dep . token ] , type : 'dependency' , isPromise : dep . isPromise , isLazy : dep . isLazy } ) ;
372
377
} else {
373
378
var pivot = parent ;
374
379
while ( pivot ) {
375
- if ( pivot . providers [ dep ] ) {
376
- links . push ( { source : provider , target : pivot . providers [ dep ] , type : 'dependency' } ) ;
380
+ if ( pivot . providers [ dep . token ] ) {
381
+ links . push ( { source : provider , target : pivot . providers [ dep . token ] , type : 'dependency' , isPromise : dep . isPromise , isLazy : dep . isLazy } ) ;
377
382
break ;
378
383
} else {
379
384
pivot = pivot . parent_id && injectorsMap [ pivot . parent_id ] || null ;
@@ -388,48 +393,54 @@ app.controller('Main', function($scope, data) {
388
393
} ) ;
389
394
} ) ;
390
395
391
- $scope . providers = Object . keys ( providersMap ) . map ( function ( name ) {
396
+ $scope . providers = Object . keys ( providersMap ) . map ( function ( id ) {
392
397
return {
393
- name : name ,
398
+ id : id ,
399
+ name : providersMap [ id ] [ 0 ] . name ,
394
400
highlighted : false
395
401
} ;
396
402
} ) ;
397
403
398
- $scope . $broadcast ( 'graph_data_changed' , rootInjectors [ 0 ] , links ) ;
404
+ var fakeRoot = rootInjectors . length > 1 ? {
405
+ type : 'fake-root' ,
406
+ children : rootInjectors
407
+ } : rootInjectors ;
408
+
409
+ $scope . $broadcast ( 'graph_data_changed' , fakeRoot , links ) ;
399
410
} ) ;
400
411
401
- var highlightProviders = function ( name , highlighted ) {
412
+ var highlightProviders = function ( id , highlighted ) {
402
413
// Highlight the provider name in the list.
403
414
$scope . providers . forEach ( function ( provider ) {
404
- if ( provider . name === name ) {
415
+ if ( provider . id === id ) {
405
416
provider . highlighted = highlighted ;
406
417
}
407
418
} ) ;
408
419
409
420
// Highlight all the circles in the graph.
410
- providersMap [ name ] . forEach ( function ( p ) {
421
+ providersMap [ id ] . forEach ( function ( p ) {
411
422
p . highlighted = highlighted ;
412
423
} ) ;
413
424
414
425
// Highlight all the "override" links in the graph.
415
426
links . forEach ( function ( link ) {
416
- if ( link . type === 'override' && link . source . name === name ) {
427
+ if ( link . type === 'override' && link . source . id === id ) {
417
428
link . highlighted = highlighted ;
418
429
}
419
430
} ) ;
420
431
421
432
$scope . $broadcast ( 'graph_data_changed' ) ;
422
433
} ;
423
434
424
- var highlightAllProvidersByName = function ( name , highlighted ) {
425
- providersMap [ name ] . forEach ( function ( p ) {
435
+ var highlightAllProvidersById = function ( id , highlighted ) {
436
+ providersMap [ id ] . forEach ( function ( p ) {
426
437
p . highlighted = highlighted ;
427
438
} ) ;
428
439
} ;
429
440
430
- var highlightOverrideLinksForProviderByName = function ( name , highlighted ) {
441
+ var highlightOverrideLinksForProviderById = function ( id , highlighted ) {
431
442
links . forEach ( function ( link ) {
432
- if ( link . type === 'override' && link . source . name === name ) {
443
+ if ( link . type === 'override' && link . source . id === id ) {
433
444
link . highlighted = highlighted ;
434
445
}
435
446
} ) ;
@@ -454,8 +465,8 @@ app.controller('Main', function($scope, data) {
454
465
$scope . highlight = function ( provider , highlighted ) {
455
466
provider . highlighted = highlighted ;
456
467
457
- highlightAllProvidersByName ( provider . name , highlighted ) ;
458
- highlightOverrideLinksForProviderByName ( provider . name , highlighted ) ;
468
+ highlightAllProvidersById ( provider . id , highlighted ) ;
469
+ highlightOverrideLinksForProviderById ( provider . id , highlighted ) ;
459
470
460
471
$scope . $broadcast ( 'graph_data_changed' ) ;
461
472
} ;
@@ -491,6 +502,29 @@ app.controller('Main', function($scope, data) {
491
502
492
503
$scope . $on ( 'graph_click' , function ( _ , d ) {
493
504
console . log ( d )
505
+ if ( d . type === 'provider' ) {
506
+ evalInInspectedWindow ( function ( window , args ) {
507
+ var tokenId = args [ 0 ] ;
508
+ var injectorId = args [ 1 ] ;
509
+ var injector ;
510
+ var token ;
511
+
512
+ window . __di_dump__ . tokens . forEach ( function ( id , instance ) {
513
+ if ( id === tokenId ) token = instance ;
514
+ if ( id === injectorId ) injector = instance ;
515
+ } )
516
+ window . console . log ( injector . get ( token ) ) ;
517
+ } , [ d . id , d . parent . id ] , function ( ) { } ) ;
518
+ } else if ( d . type === 'injector' ) {
519
+ evalInInspectedWindow ( function ( window , args ) {
520
+ var injectorId = args [ 0 ] ;
521
+ var injector ;
522
+ window . __di_dump__ . tokens . forEach ( function ( id , instance ) {
523
+ if ( id === injectorId ) injector = instance ;
524
+ } )
525
+ window . console . log ( injector ) ;
526
+ } , [ d . id ] , function ( ) { } ) ;
527
+ }
494
528
} ) ;
495
529
} ) ;
496
530
0 commit comments