summaryrefslogtreecommitdiff
path: root/sysutils/zpool-iostat-viz/files/patch-zpool-iostat-viz
blob: 6b025cdf7bf9140e3ce565f4f2fd661804ba27d3 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
--- zpool-iostat-viz.orig	2021-11-13 22:58:47 UTC
+++ zpool-iostat-viz
@@ -19,7 +19,10 @@ import sys
 EMPTY_COLORS = (238, 8)
 EMPTY_CHAR = "|"
 PALETTES = list(range(start, end+(second-start), second-start) for second, start, end in ((63, 27, 207), (87, 51, 231), (116, 123, 88), (220, 226, 196), (224, 231, 196), (80, 51, 196), (77, 40, 225), (225, 231, 201), (243, 240, 255), (227, 226, 231), (27, 21, 51)))
-DISPLAY_CHARS = ".abcdefghijklmnopqrstuvwxyz^"
+DISPLAY_CHARS_LETTERS = ".abcdefghijklmnopqrstuvwxyz^"
+DISPLAY_CHARS_DIGITS = ".0123456789#"
+DISPLAY_CHARS_SYMBOLS = " .:;*#"
+DISPLAY_CHARS = DISPLAY_CHARS_LETTERS
 DIFFL_CLOCK_CHARS = "╷╴╵╶"
 
 DIFFL_STAT_MEMORY = 5
@@ -219,10 +222,22 @@ def render_stats(window, transform, should_show_differ
         elif in_key == curses.KEY_DOWN:
             if diffl_stat_interval_index > 0:
                 diffl_stat_interval_index -= 1
+        elif in_key == ord('d'):
+            should_show_differential = not should_show_differential
+        elif in_key == ord('m'):
+            load_time = None
+            current = 0
+            stats = None
+            stats_history = []
+            if transform == stats_as_device_centric:
+                transform = stats_as_measurement_centric
+            else:
+                transform = stats_as_device_centric
         elif in_key == ord('q') or in_key == ord('x') or in_key == 27:
             return
-        current += len(stats)
-        current %= len(stats)
+        if stats:
+            current += len(stats)
+            current %= len(stats)
 
 
 def main(window, should_show_differential, pool, filename, views):
@@ -256,6 +271,8 @@ if __name__ == "__main__":
         arg_parser.add_argument("--pal-count", "--pc", action="store", metavar="P", default="0", help="palette for bucket populations")
         arg_parser.add_argument("parts", metavar="pool/vdev", nargs="*", help="Pools or vdevs to display")
         arg_parser.add_argument("--help-colors", action="store_true", help="see color palettes available")
+        arg_parser.add_argument("--digits", action="store_true", help="use digits instead of letters")
+        arg_parser.add_argument("--symbols", action="store_true", help="use digits instead of letters")
 
         parsed_args = vars(arg_parser.parse_args())
 
@@ -275,6 +292,11 @@ if __name__ == "__main__":
                 if hex(pi)[2:] == parsed_args["pal_time"]: print("  (time)", end="")
                 print()
             sys.exit(0)
+
+        if parsed_args["digits"]:
+            DISPLAY_CHARS = DISPLAY_CHARS_DIGITS
+        if parsed_args["symbols"]:
+            DISPLAY_CHARS = DISPLAY_CHARS_SYMBOLS
 
         curses.wrapper(lambda window: main(window, parsed_args["diff"], parsed_args["parts"], parsed_args["file"], parsed_args["by"] or "m"))
     except subprocess.CalledProcessError as exc: