@@ -19,7 +19,7 @@ class JobWidget(urwid.WidgetWrap):
19
19
"CANCELLED" : {None : "" },
20
20
"COMPLETED" : {None : "" },
21
21
"CONFIGURING" : {None : "" },
22
- "COMPLETING" : {None : "" },
22
+ "COMPLETING" : {None : "job_state_completeing " },
23
23
"DEADLINE" : {None : "" },
24
24
"FAILED" : {None : "" },
25
25
"NODE FAIL" : {None : "" },
@@ -46,6 +46,7 @@ def __init__(self, job):
46
46
self .columns = OrderedDict ()
47
47
self .columns ["selected" ] = urwid .Text ("" , wrap = "ellipsis" )
48
48
self .columns ["job_id" ] = urwid .Text ("" , wrap = "ellipsis" )
49
+ self .columns ["array" ] = urwid .Text ("" , wrap = "ellipsis" )
49
50
self .columns ["user" ] = urwid .Text ("" , wrap = "ellipsis" )
50
51
self .columns ["name" ] = urwid .Text ("" , wrap = "ellipsis" )
51
52
self .columns ["state" ] = urwid .AttrMap (urwid .Text ("" , wrap = "ellipsis" ), None )
@@ -73,6 +74,7 @@ def __init__(self, job):
73
74
74
75
def update_values (self , job ):
75
76
self .columns ["job_id" ].set_text (job .job_id )
77
+ self .columns ["array" ].set_text (job .array_str ())
76
78
self .columns ["user" ].set_text (job .user )
77
79
self .columns ["name" ].set_text (job .name )
78
80
self .columns ["state" ]._original_widget .set_text (job .state .title ())
@@ -91,7 +93,12 @@ def set_selected_attr(self, in_focus):
91
93
attr = "highlight_out_of_focus"
92
94
93
95
self ._w .set_focus_map (
94
- {None : attr , "job_state_running" : attr , "job_state_pending" : attr }
96
+ {
97
+ None : attr ,
98
+ "job_state_running" : attr ,
99
+ "job_state_pending" : attr ,
100
+ "job_state_completeing" : attr ,
101
+ }
95
102
)
96
103
97
104
def keypress (self , size , key ):
@@ -118,6 +125,7 @@ class JobQueueWidget(urwid.WidgetWrap):
118
125
column_widths = [
119
126
(2 ,),
120
127
(10 ,),
128
+ (10 ,),
121
129
("weight" , 1 ),
122
130
("weight" , 2 ),
123
131
(14 ,),
@@ -133,6 +141,7 @@ def __init__(self):
133
141
column_labels = [
134
142
"" ,
135
143
"Job ID" ,
144
+ "Job Array" ,
136
145
"User" ,
137
146
"Name" ,
138
147
"State" ,
@@ -298,9 +307,15 @@ def __init__(self):
298
307
299
308
super ().__init__ (w )
300
309
301
- def set_nice (self , value ):
310
+ def set_nice_value (self , value ):
302
311
self .nice_spinbutton .set_value (value )
303
312
313
+ def enable_nice (self ):
314
+ self .nice_spinbutton .enable ()
315
+
316
+ def disable_nice (self ):
317
+ self .nice_spinbutton .disable ()
318
+
304
319
def enable_throttle (self ):
305
320
self .throttle_spinbutton .enable ()
306
321
@@ -384,13 +399,16 @@ def on_jobs_focus_changed(self):
384
399
if job is None :
385
400
return
386
401
387
- self .apanel .set_nice (job .nice )
402
+ self .apanel .set_nice_value (job .nice )
388
403
389
- if job .array_throttle is not None :
390
- self .apanel .enable_throttle ()
391
- self .apanel .set_throttle_value (job .array_throttle )
392
- else :
404
+ if job .is_running ():
405
+ self .apanel .disable_nice ()
393
406
self .apanel .disable_throttle ()
407
+ else :
408
+ self .apanel .enable_nice ()
409
+ if job .is_array_job_f ():
410
+ self .apanel .enable_throttle ()
411
+ self .apanel .set_throttle_value (job .array_throttle )
394
412
395
413
def filter_jobs (self , jobs ):
396
414
@@ -706,6 +724,7 @@ def __init__(self, args):
706
724
self .palette = [
707
725
("job_state_running" , "light cyan" , "" ),
708
726
("job_state_pending" , "yellow" , "" ),
727
+ ("job_state_completeing" , "light magenta" , "" ),
709
728
("active_tab_label" , "yellow" , "" ),
710
729
("focus_and_active_tab_label" , "yellow,underline" , "" ),
711
730
("focus_and_inactive_tab_label" , "underline" , "" ),
@@ -748,13 +767,13 @@ def exit(*args, **kwargs):
748
767
749
768
elif message == b"connection established" :
750
769
self .fd = None # TODO: delattr?
751
- self .register_refresh ()
752
- self .w .cluster_connected_callback ()
770
+ self .register_refresh ()
771
+ self .w .cluster_connected_callback ()
753
772
754
773
# Return False so that the watch is removed from main loop and its read-end
755
774
# of the pipe is closed. The write-end of the pipe will be closed on the
756
775
# backend.
757
- return False
776
+ return False
758
777
759
778
def run (self ):
760
779
# self.loop.screen.set_terminal_properties(bright_is_bold=False)
0 commit comments