@@ -24,12 +24,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
2424<template >
2525 <g
2626 class =" c8-task"
27- :class =" {
28- [task.state]: true,
29- held: task.isHeld,
30- queued: task.isQueued && !task.isHeld,
31- runahead: task.isRunahead && !(task.isHeld || task.isQueued),
32- }"
27+ :class =" [task.state, modifier]"
3328 >
3429 <!-- status
3530
@@ -99,53 +94,29 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
9994
10095 The "x" in the centre of the outline used to represent failure.
10196 -->
102- <g
103- class =" cross"
104- transform =" rotate(45, 50, 50)"
105- >
106- <rect
107- x =" 43"
108- y =" 15"
109- width =" 14"
110- height =" 70"
111- rx =" 7.5"
112- ry =" 7.5"
113- />
114- <rect
115- x =" 15"
116- y =" 43"
117- width =" 70"
118- height =" 14"
119- rx =" 7.5"
120- ry =" 7.5"
121- />
122- </g >
97+ <path class =" cross"
98+ d ="
99+ m30,30
100+ l40 40
101+ m0,-40
102+ l-40 40
103+ "
104+ />
105+
123106 <!-- expired
124107
108+ A clock face, at about 5pm.
125109 -->
126- <g
127- class =" expired"
128- >
129- <rect
130- x =" 50"
131- y =" 46"
132- width =" 42"
133- height =" 8"
134- rx =" 5"
135- ry =" 5"
136- transform =" rotate(-90, 50, 50)"
137- />
138- <rect
139- x =" 50"
140- y =" 46"
141- width =" 30"
142- height =" 8"
143- rx =" 5"
144- ry =" 5"
145- transform =" rotate(45, 50, 50)"
146- />
147- </g >
110+ <path
111+ class =" clockhands_big"
112+ d ="
113+ m50,12
114+ l0 38
115+ l18 18
116+ "
117+ />
148118 </g >
119+
149120 <!-- modifier
150121
151122 Represents any task state modifiers e.g. isHeld, isRunahead, isQueued.
@@ -175,26 +146,19 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
175146 />
176147 <!-- held
177148
178- Paused icon representing isHeld.
149+ Paused icon representing isHeld. Shown inside the outline
150+ circle.
179151 -->
180152 <g
181153 class =" held"
182154 >
183- <rect
184- x =" 30"
185- y =" 25"
186- width =" 16"
187- height =" 50"
188- rx =" 10"
189- ry =" 10"
190- />
191- <rect
192- x =" 54"
193- y =" 25"
194- width =" 16"
195- height =" 50"
196- rx =" 10"
197- ry =" 10"
155+ <path
156+ d ="
157+ m37,33
158+ l0 34
159+ m25,0
160+ l0, -34
161+ "
198162 />
199163 </g >
200164 <!-- queued
@@ -204,29 +168,15 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
204168 <g
205169 class =" queued"
206170 >
207- <rect
208- x =" 20"
209- y =" 20"
210- width =" 60"
211- height =" 16"
212- rx =" 10"
213- ry =" 10"
214- />
215- <rect
216- x =" 20"
217- y =" 41"
218- width =" 60"
219- height =" 16"
220- rx =" 10"
221- ry =" 10"
222- />
223- <rect
224- x =" 20"
225- y =" 62"
226- width =" 60"
227- height =" 16"
228- rx =" 10"
229- ry =" 10"
171+ <path
172+ d ="
173+ m28,28
174+ l43 0
175+ m-43,21
176+ l43, 0
177+ m-43,21
178+ l43 0
179+ "
230180 />
231181 </g >
232182 <!-- runahead
@@ -242,6 +192,56 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
242192 r =" 20"
243193 />
244194 </g >
195+
196+ <!-- xtriggered
197+
198+ Radio signal (similar to RSS logo) representing waiting on xtrigger(s).
199+ -->
200+ <g class =" xtriggered" >
201+ <path
202+ d ="
203+ m10,70
204+ a60, 60, 0, 0, 1, 60, -60
205+ m-40, 60
206+ a40, 40 0, 0, 1, 40, -40
207+ m-6, 27
208+ a9,9, 0, 1, 0, .1, 0
209+ m0, 4
210+ a6,6, 0, 1, 0, .1, 0
211+ "
212+ />
213+ </g >
214+
215+ <!-- Retry
216+
217+ Circular arrow representing a retry.
218+ -->
219+ <g class =" retry" >
220+ <!-- An arc describing the arrow -->
221+ <path d =" m25, 50 a30 30 1 1 1 25 30 " />
222+ <!-- The arrowhead -->
223+ <polygon points =" 0,40 26,75 52,40, 25,46" />
224+ </g >
225+
226+ <!-- Wallclock
227+
228+ A clock face representing an unsatisfied wallclock trigger.
229+
230+ The path is just the hands of the clock. The icon is created in
231+ combination with the outline circle.
232+ -->
233+ <g class =" wallclock" >
234+ <path
235+ d ="
236+ m50, 18
237+ l0, 36
238+ l14, 14
239+ l3,3
240+ l3,-3
241+ l-18, -18
242+ "
243+ />
244+ </g >
245245 </g >
246246 </g >
247247</template >
@@ -275,6 +275,17 @@ const props = defineProps({
275275 */
276276const animResetTime = inject (' animResetTime' , () => ref (0 ), true )
277277
278+ // Get modifier (if any) for the task state.
279+ const modifier = computed (() => {
280+ if (props .task .isHeld ) return ' held'
281+ if (props .task .isQueued ) return ' queued'
282+ if (props .task .isRunahead ) return ' runahead'
283+ if (props .task .isRetry ) return ' retry'
284+ if (props .task .isWallclock ) return ' wallclock'
285+ if (props .task .isXtriggered ) return ' xtriggered'
286+ return ' '
287+ })
288+
278289const runningStyle = computed (() => {
279290 if (
280291 props .task .state === TaskState .RUNNING .name &&
@@ -355,11 +366,11 @@ const modifierTransform = _getModifierTransform()
355366 fill: none;
356367 stroke: none;
357368 }
358- .cross rect {
369+ .cross path {
359370 fill: none;
360371 stroke: none;
361372 }
362- .expired rect {
373+ .clockhands_big {
363374 fill: none;
364375 stroke: none;
365376 }
@@ -381,6 +392,18 @@ const modifierTransform = _getModifierTransform()
381392 fill: none;
382393 stroke: none;
383394 }
395+ .wallclock {
396+ fill: none;
397+ stroke: none;
398+ }
399+ .xtriggered {
400+ fill: none;
401+ stroke: none;
402+ }
403+ .retry {
404+ fill: none;
405+ stroke: none;
406+ }
384407 }
385408
386409 & .preparing .status .dot {
@@ -406,17 +429,21 @@ const modifierTransform = _getModifierTransform()
406429 .outline {
407430 fill: $foreground;
408431 }
409- .cross rect {
410- fill: $background;
432+ .cross {
433+ stroke: $background;
434+ stroke- width: 14px ;
435+ stroke- linecap: round;
411436 }
412437 }
413438
414439 & .submit - failed .status {
415440 .outline {
416441 fill: $background;
417442 }
418- .cross rect {
419- fill: $foreground;
443+ .cross {
444+ stroke: $foreground;
445+ stroke- width: 14px ;
446+ stroke- linecap: round;
420447 }
421448 }
422449
@@ -427,23 +454,29 @@ const modifierTransform = _getModifierTransform()
427454 .dot {
428455 fill: $background;
429456 }
430- .expired rect {
431- fill: $background;
457+ .clockhands_big {
458+ stroke: $background;
459+ stroke- width: 8px ;
460+ stroke- linecap: round;
432461 }
433462 }
434463
435464 & .held .modifier {
436465 .outline {
437466 stroke: $foreground;
438467 }
439- .held rect {
440- fill: $foreground;
468+ .held path {
469+ stroke: $foreground;
470+ stroke- linecap: round;
471+ stroke- width: 16px ;
441472 }
442473 }
443474
444475 & .queued .modifier {
445- .queued rect {
446- fill: $foreground;
476+ .queued path {
477+ stroke: $foreground;
478+ stroke- linecap: round;
479+ stroke- width: 16px ;
447480 }
448481 }
449482
@@ -456,6 +489,42 @@ const modifierTransform = _getModifierTransform()
456489 }
457490 }
458491
492+ & .xtriggered .modifier {
493+ .xtriggered {
494+ stroke: $foreground;
495+ stroke- width: 12px ;
496+ stroke- linecap: round;
497+ fill: none;
498+ }
499+ }
500+
501+ & .wallclock .modifier {
502+ .outline {
503+ fill: $background;
504+ stroke: $foreground;
505+ stroke- width: 7px ;
506+ }
507+ .wallclock {
508+ stroke: $foreground;
509+ stroke- width: 8px ;
510+ fill: none;
511+ stroke- linecap: round;
512+ stroke- linejoin: round;
513+ }
514+ }
515+
516+ & .retry .modifier {
517+ .retry path {
518+ stroke: $foreground;
519+ stroke- width: 12px ;
520+ stroke- linecap: round;
521+ }
522+ .retry polygon {
523+ stroke: none;
524+ fill: $foreground;
525+ }
526+ }
527+
459528 & .running .progress {
460529 animation- name: c8- task- progress- animation;
461530 animation- timing- function: steps (50 );
0 commit comments