@@ -346,15 +346,53 @@ function (angular, app, $, _, kbn, moment, timeSeries) {
346
346
$scope . render ( ) ;
347
347
} ;
348
348
349
- $scope . toggleSeries = function ( info ) {
350
- if ( $scope . hiddenSeries [ info . alias ] ) {
351
- delete $scope . hiddenSeries [ info . alias ] ;
349
+ $scope . toggleSeries = function ( serie , event ) {
350
+ if ( $scope . hiddenSeries [ serie . alias ] ) {
351
+ delete $scope . hiddenSeries [ serie . alias ] ;
352
352
}
353
353
else {
354
- $scope . hiddenSeries [ info . alias ] = true ;
354
+ $scope . hiddenSeries [ serie . alias ] = true ;
355
355
}
356
356
357
- $scope . $emit ( 'toggleLegend' , info . alias ) ;
357
+ if ( event . ctrlKey ) {
358
+ $scope . toggleSeriesExclusiveMode ( serie ) ;
359
+ }
360
+
361
+ $scope . $emit ( 'toggleLegend' , $scope . legend ) ;
362
+ } ;
363
+
364
+ $scope . toggleSeriesExclusiveMode = function ( serie ) {
365
+ var hidden = $scope . hiddenSeries ;
366
+
367
+ if ( hidden [ serie . alias ] ) {
368
+ delete hidden [ serie . alias ] ;
369
+ }
370
+
371
+ // check if every other series is hidden
372
+ var alreadyExclusive = _ . every ( $scope . legend , function ( value ) {
373
+ if ( value . alias === serie . alias ) {
374
+ return true ;
375
+ }
376
+
377
+ return hidden [ value . alias ] ;
378
+ } ) ;
379
+
380
+ if ( alreadyExclusive ) {
381
+ // remove all hidden series
382
+ _ . each ( $scope . legend , function ( value ) {
383
+ delete $scope . hiddenSeries [ value . alias ] ;
384
+ } ) ;
385
+ }
386
+ else {
387
+ // hide all but this serie
388
+ _ . each ( $scope . legend , function ( value ) {
389
+ if ( value . alias === serie . alias ) {
390
+ return ;
391
+ }
392
+
393
+ $scope . hiddenSeries [ value . alias ] = true ;
394
+ } ) ;
395
+ }
358
396
} ;
359
397
360
398
$scope . toggleYAxis = function ( info ) {
0 commit comments