@@ -430,46 +430,6 @@ def get_item_info(self, item, key, default=None):
430
430
return default
431
431
return self .fields_description [item ].get (key , default )
432
432
433
- def update_views_hidden (self ):
434
- """Update the hidden views
435
-
436
- If the self.hide_zero is set then update the hidden field of the view
437
- It will check if all fields values are already be different from 0
438
- In this case, the hidden field is set to True
439
-
440
- Note: This function should be called by plugin (in the update_views method)
441
-
442
- Example (for network plugin):
443
- __Init__
444
- self.hide_zero_fields = ['rx', 'tx']
445
- Update views
446
- ...
447
- self.update_views_hidden()
448
- """
449
- if not self .hide_zero :
450
- return False
451
- if isinstance (self .get_raw (), list ) and self .get_raw () is not None and self .get_key () is not None :
452
- # Stats are stored in a list of dict (ex: NETWORK, FS...)
453
- for i in self .get_raw ():
454
- if any (i [f ] for f in self .hide_zero_fields ):
455
- for f in self .hide_zero_fields :
456
- self .views [i [self .get_key ()]][f ]['_zero' ] = self .views [i [self .get_key ()]][f ]['hidden' ]
457
- for f in self .hide_zero_fields :
458
- self .views [i [self .get_key ()]][f ]['hidden' ] = self .views [i [self .get_key ()]][f ]['_zero' ] and i [f ] == 0
459
- elif isinstance (self .get_raw (), dict ) and self .get_raw () is not None :
460
- #
461
- # Warning: This code has never been tested because
462
- # no plugin with dict instance use the hidden function...
463
- #
464
- # Stats are stored in a dict (ex: CPU, LOAD...)
465
- for key in listkeys (self .get_raw ()):
466
- if any (self .get_raw ()[f ] for f in self .hide_zero_fields ):
467
- for f in self .hide_zero_fields :
468
- self .views [f ]['_zero' ] = self .views [f ]['hidden' ]
469
- for f in self .hide_zero_fields :
470
- self .views [f ]['hidden' ] = self .views ['_zero' ] and self .views [f ] == 0
471
- return True
472
-
473
433
def update_views (self ):
474
434
"""Update the stats views.
475
435
@@ -480,43 +440,56 @@ def update_views(self):
480
440
'optional': False, >>> Is the stat optional
481
441
'additional': False, >>> Is the stat provide additional information
482
442
'splittable': False, >>> Is the stat can be cut (like process lon name)
483
- 'hidden': False, >>> Is the stats should be hidden in the UI
484
- '_zero': True} >>> For internal purpose only
443
+ 'hidden': False} >>> Is the stats should be hidden in the UI
485
444
"""
486
445
ret = {}
487
446
488
447
if isinstance (self .get_raw (), list ) and self .get_raw () is not None and self .get_key () is not None :
489
448
# Stats are stored in a list of dict (ex: DISKIO, NETWORK, FS...)
490
449
for i in self .get_raw ():
491
- ret [i [self .get_key ()]] = {}
492
- for key in listkeys (i ):
450
+ key = i [self .get_key ()]
451
+ ret [key ] = {}
452
+ for field in listkeys (i ):
493
453
value = {
494
454
'decoration' : 'DEFAULT' ,
495
455
'optional' : False ,
496
456
'additional' : False ,
497
457
'splittable' : False ,
498
- 'hidden' : False ,
499
- '_zero' : (
500
- self .views [i [self .get_key ()]][key ]['_zero' ]
501
- if i [self .get_key ()] in self .views
502
- and key in self .views [i [self .get_key ()]]
503
- and 'zero' in self .views [i [self .get_key ()]][key ]
504
- else True
505
- ),
506
458
}
507
- ret [i [self .get_key ()]][key ] = value
459
+ # Manage the hidden feature
460
+ # Allow to automatically hide fields when values is never different than 0
461
+ # Refactoring done for #2929
462
+ if not self .hide_zero :
463
+ value ['hidden' ] = False
464
+ elif key in self .views and field in self .views [key ] and 'hidden' in self .views [key ][field ]:
465
+ value ['hidden' ] = self .views [key ][field ]['hidden' ]
466
+ if field in self .hide_zero_fields and i [field ] != 0 :
467
+ value ['hidden' ] = False
468
+ else :
469
+ value ['hidden' ] = field in self .hide_zero_fields
470
+ ret [key ][field ] = value
508
471
elif isinstance (self .get_raw (), dict ) and self .get_raw () is not None :
509
472
# Stats are stored in a dict (ex: CPU, LOAD...)
510
- for key in listkeys (self .get_raw ()):
473
+ for field in listkeys (self .get_raw ()):
511
474
value = {
512
475
'decoration' : 'DEFAULT' ,
513
476
'optional' : False ,
514
477
'additional' : False ,
515
478
'splittable' : False ,
516
479
'hidden' : False ,
517
- '_zero' : self .views [key ]['_zero' ] if key in self .views and '_zero' in self .views [key ] else True ,
518
480
}
519
- ret [key ] = value
481
+ # Manage the hidden feature
482
+ # Allow to automatically hide fields when values is never different than 0
483
+ # Refactoring done for #2929
484
+ if not self .hide_zero :
485
+ value ['hidden' ] = False
486
+ elif field in self .views and 'hidden' in self .views [field ]:
487
+ value ['hidden' ] = self .views [field ]['hidden' ]
488
+ if field in self .hide_zero_fields and self .get_raw ()[field ] != 0 :
489
+ value ['hidden' ] = False
490
+ else :
491
+ value ['hidden' ] = field in self .hide_zero_fields
492
+ ret [field ] = value
520
493
521
494
self .views = ret
522
495
@@ -544,7 +517,7 @@ def get_views(self, item=None, key=None, option=None):
544
517
else :
545
518
item_views = self .views [item ]
546
519
547
- if key is None :
520
+ if key is None or key not in item_views :
548
521
return item_views
549
522
if option is None :
550
523
return item_views [key ]
0 commit comments