mirror of
https://github.com/nicolargo/glances.git
synced 2024-09-20 00:58:03 +03:00
Refactor sorting code
This commit is contained in:
parent
a809268545
commit
77b3a888c0
@ -87,8 +87,7 @@ class GlancesLogs(object):
|
||||
else:
|
||||
# Default sort is...
|
||||
process_auto_by = 'cpu_percent'
|
||||
|
||||
glances_processes.setsortkey(process_auto_by)
|
||||
glances_processes.setautosortkey(process_auto_by)
|
||||
|
||||
return process_auto_by
|
||||
|
||||
@ -96,8 +95,8 @@ class GlancesLogs(object):
|
||||
"""Reset the process_auto_by variable."""
|
||||
# Default sort is...
|
||||
process_auto_by = 'cpu_percent'
|
||||
|
||||
glances_processes.setsortkey(process_auto_by)
|
||||
glances_processes.setautosortkey(process_auto_by)
|
||||
glances_processes.setmanualsortkey(None)
|
||||
|
||||
return process_auto_by
|
||||
|
||||
|
@ -44,7 +44,7 @@ class GlancesProcesses(object):
|
||||
self.io_old = {}
|
||||
|
||||
# Init stats
|
||||
self.processsort = 'cpu_percent'
|
||||
self.resetsort()
|
||||
self.processlist = []
|
||||
self.processcount = {'total': 0, 'running': 0, 'sleeping': 0, 'thread': 0}
|
||||
|
||||
@ -219,7 +219,7 @@ class GlancesProcesses(object):
|
||||
if self.get_max_processes() is not None:
|
||||
# Sort the internal dict and cut the top N (Return a list of tuple)
|
||||
# tuple=key (proc), dict (returned by __get_process_stats)
|
||||
processiter = sorted(processdict.items(), key=lambda x: x[1]['cpu_percent'], reverse=True)
|
||||
processiter = sorted(processdict.items(), key=lambda x: x[1][self.getsortkey()], reverse=True)
|
||||
for i in processiter[0:self.get_max_processes()]:
|
||||
# Already existing mandatory stats
|
||||
procstat = i[1]
|
||||
@ -257,13 +257,34 @@ class GlancesProcesses(object):
|
||||
return self.processlist
|
||||
|
||||
def getsortkey(self):
|
||||
"""Get the current sort key for automatic sort."""
|
||||
return self.processsort
|
||||
"""Get the current sort key"""
|
||||
if self.getmanualsortkey() is not None:
|
||||
return self.getmanualsortkey()
|
||||
else:
|
||||
return self.getautosortkey()
|
||||
|
||||
def setsortkey(self, sortedby):
|
||||
def getmanualsortkey(self):
|
||||
"""Get the current sort key for manual sort."""
|
||||
return self.processmanualsort
|
||||
|
||||
def getautosortkey(self):
|
||||
"""Get the current sort key for automatic sort."""
|
||||
return self.processautosort
|
||||
|
||||
def setmanualsortkey(self, sortedby):
|
||||
"""Set the current sort key for manual sort."""
|
||||
self.processmanualsort = sortedby
|
||||
return self.processmanualsort
|
||||
|
||||
def setautosortkey(self, sortedby):
|
||||
"""Set the current sort key for automatic sort."""
|
||||
self.processsort = sortedby
|
||||
return self.processsort
|
||||
self.processautosort = sortedby
|
||||
return self.processautosort
|
||||
|
||||
def resetsort(self):
|
||||
"""Set the default sort: Auto"""
|
||||
self.setmanualsortkey(None)
|
||||
self.setautosortkey('cpu_percent')
|
||||
|
||||
def getsortlist(self, sortedby=None):
|
||||
"""Get the sorted processlist."""
|
||||
|
@ -203,6 +203,7 @@ class GlancesCurses(object):
|
||||
elif self.pressedkey == ord('a'):
|
||||
# 'a' > Sort processes automatically
|
||||
self.args.process_sorted_by = 'auto'
|
||||
glances_processes.resetsort()
|
||||
elif self.pressedkey == ord('b'):
|
||||
# 'b' > Switch between bit/s and Byte/s for network IO
|
||||
# self.net_byteps_tag = not self.net_byteps_tag
|
||||
@ -210,6 +211,7 @@ class GlancesCurses(object):
|
||||
elif self.pressedkey == ord('c'):
|
||||
# 'c' > Sort processes by CPU usage
|
||||
self.args.process_sorted_by = 'cpu_percent'
|
||||
glances_processes.setmanualsortkey(self.args.process_sorted_by)
|
||||
elif self.pressedkey == ord('d'):
|
||||
# 'd' > Show/hide disk I/O stats
|
||||
self.args.disable_diskio = not self.args.disable_diskio
|
||||
@ -225,18 +227,21 @@ class GlancesCurses(object):
|
||||
elif self.pressedkey == ord('i'):
|
||||
# 'i' > Sort processes by IO rate (not available on OS X)
|
||||
self.args.process_sorted_by = 'io_counters'
|
||||
glances_processes.setmanualsortkey(self.args.process_sorted_by)
|
||||
elif self.pressedkey == ord('l'):
|
||||
# 'l' > Show/hide log messages
|
||||
self.args.disable_log = not self.args.disable_log
|
||||
elif self.pressedkey == ord('m'):
|
||||
# 'm' > Sort processes by MEM usage
|
||||
self.args.process_sorted_by = 'memory_percent'
|
||||
glances_processes.setmanualsortkey(self.args.process_sorted_by)
|
||||
elif self.pressedkey == ord('n'):
|
||||
# 'n' > Show/hide network stats
|
||||
self.args.disable_network = not self.args.disable_network
|
||||
elif self.pressedkey == ord('p'):
|
||||
# 'p' > Sort processes by name
|
||||
self.args.process_sorted_by = 'name'
|
||||
glances_processes.setmanualsortkey(self.args.process_sorted_by)
|
||||
elif self.pressedkey == ord('r'):
|
||||
# 'r' > Reset history
|
||||
self.reset_history_tag = not self.reset_history_tag
|
||||
|
@ -107,17 +107,13 @@ class Plugin(GlancesPlugin):
|
||||
ret.append(self.curse_add_line(msg))
|
||||
|
||||
# Display sort information
|
||||
try:
|
||||
args.process_sorted_by
|
||||
except AttributeError:
|
||||
args.process_sorted_by = glances_processes.getsortkey()
|
||||
if args.process_sorted_by == 'auto':
|
||||
if glances_processes.getmanualsortkey() is None:
|
||||
msg = _("sorted automatically")
|
||||
ret.append(self.curse_add_line(msg))
|
||||
msg = _(" by {0}").format(glances_processes.getsortkey())
|
||||
msg = _(" by {0}").format(glances_processes.getautosortkey())
|
||||
ret.append(self.curse_add_line(msg))
|
||||
else:
|
||||
msg = _("sorted by {0}").format(args.process_sorted_by)
|
||||
msg = _("sorted by {0}").format(glances_processes.getmanualsortkey())
|
||||
ret.append(self.curse_add_line(msg))
|
||||
|
||||
# Return the message with decoration
|
||||
|
@ -74,14 +74,10 @@ class Plugin(GlancesPlugin):
|
||||
return ret
|
||||
|
||||
# Compute the sort key
|
||||
try:
|
||||
args.process_sorted_by
|
||||
except AttributeError:
|
||||
args.process_sorted_by = glances_processes.getsortkey()
|
||||
if args.process_sorted_by == 'auto':
|
||||
process_sort_key = glances_processes.getsortkey()
|
||||
if glances_processes.getmanualsortkey() is None:
|
||||
process_sort_key = glances_processes.getautosortkey()
|
||||
else:
|
||||
process_sort_key = args.process_sorted_by
|
||||
process_sort_key = glances_processes.getmanualsortkey()
|
||||
sort_style = 'SORT'
|
||||
|
||||
# Header
|
||||
|
Loading…
Reference in New Issue
Block a user