@@ -24,12 +24,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
24
24
<template >
25
25
<g
26
26
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]"
33
28
>
34
29
<!-- status
35
30
@@ -122,6 +117,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
122
117
</g >
123
118
<!-- expired
124
119
120
+ A clock face, at about 5pm.
125
121
-->
126
122
<g
127
123
class =" expired"
@@ -175,26 +171,19 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
175
171
/>
176
172
<!-- held
177
173
178
- Paused icon representing isHeld.
174
+ Paused icon representing isHeld. Shown inside the outline
175
+ circle.
179
176
-->
180
177
<g
181
178
class =" held"
182
179
>
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"
180
+ <path
181
+ d ="
182
+ m37,33
183
+ l0 34
184
+ m25,0
185
+ l0, -34
186
+ "
198
187
/>
199
188
</g >
200
189
<!-- queued
@@ -204,29 +193,15 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
204
193
<g
205
194
class =" queued"
206
195
>
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"
196
+ <path
197
+ d ="
198
+ m28,28
199
+ l43 0
200
+ m-43,21
201
+ l43, 0
202
+ m-43,21
203
+ l43 0
204
+ "
230
205
/>
231
206
</g >
232
207
<!-- runahead
@@ -242,6 +217,56 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
242
217
r =" 20"
243
218
/>
244
219
</g >
220
+
221
+ <!-- xtriggered
222
+
223
+ Radio signal (similar to RSS logo) representing waiting on xtrigger(s).
224
+ -->
225
+ <g class =" xtriggered" >
226
+ <path
227
+ d ="
228
+ m10,70
229
+ a60, 60, 0, 0, 1, 60, -60
230
+ m-40, 60
231
+ a40, 40 0, 0, 1, 40, -40
232
+ m-6, 27
233
+ a9,9, 0, 1, 0, .1, 0
234
+ m0, 4
235
+ a6,6, 0, 1, 0, .1, 0
236
+ "
237
+ />
238
+ </g >
239
+
240
+ <!-- Retry
241
+
242
+ Circular arrow representing a retry.
243
+ -->
244
+ <g class =" retry" >
245
+ <!-- An arc describing the arrow -->
246
+ <path d =" m25, 50 a30 30 1 1 1 25 30 " />
247
+ <!-- The arrowhead -->
248
+ <polygon points =" 0,40 26,75 52,40, 25,46" />
249
+ </g >
250
+
251
+ <!-- Wallclock
252
+
253
+ A clock face representing an unsatisfied wallclock trigger.
254
+
255
+ The path is just the hands of the clock. The icon is created in
256
+ combination with the outline circle.
257
+ -->
258
+ <g class =" wallclock" >
259
+ <path
260
+ d ="
261
+ m50, 18
262
+ l0, 36
263
+ l14, 14
264
+ l3,3
265
+ l3,-3
266
+ l-18, -18
267
+ "
268
+ />
269
+ </g >
245
270
</g >
246
271
</g >
247
272
</template >
@@ -275,6 +300,17 @@ const props = defineProps({
275
300
*/
276
301
const animResetTime = inject (' animResetTime' , () => ref (0 ), true )
277
302
303
+ // Get modifier (if any) for the task state.
304
+ const modifier = computed (() => {
305
+ if (props .task .isHeld ) return ' held'
306
+ if (props .task .isQueued ) return ' queued'
307
+ if (props .task .isRunahead ) return ' runahead'
308
+ if (props .task .isRetry ) return ' retry'
309
+ if (props .task .isWallclock ) return ' wallclock'
310
+ if (props .task .isXtriggered ) return ' xtriggered'
311
+ return ' '
312
+ })
313
+
278
314
const runningStyle = computed (() => {
279
315
if (
280
316
props .task .state === TaskState .RUNNING .name &&
@@ -381,6 +417,18 @@ const modifierTransform = _getModifierTransform()
381
417
fill: none;
382
418
stroke: none;
383
419
}
420
+ .wallclock {
421
+ fill: none;
422
+ stroke: none;
423
+ }
424
+ .xtriggered {
425
+ fill: none;
426
+ stroke: none;
427
+ }
428
+ .retry {
429
+ fill: none;
430
+ stroke: none;
431
+ }
384
432
}
385
433
386
434
& .preparing .status .dot {
@@ -436,14 +484,18 @@ const modifierTransform = _getModifierTransform()
436
484
.outline {
437
485
stroke: $foreground;
438
486
}
439
- .held rect {
440
- fill: $foreground;
487
+ .held path {
488
+ stroke: $foreground;
489
+ stroke- linecap: round;
490
+ stroke- width: 16px ;
441
491
}
442
492
}
443
493
444
494
& .queued .modifier {
445
- .queued rect {
446
- fill: $foreground;
495
+ .queued path {
496
+ stroke: $foreground;
497
+ stroke- linecap: round;
498
+ stroke- width: 16px ;
447
499
}
448
500
}
449
501
@@ -456,6 +508,42 @@ const modifierTransform = _getModifierTransform()
456
508
}
457
509
}
458
510
511
+ & .xtriggered .modifier {
512
+ .xtriggered {
513
+ stroke: $foreground;
514
+ stroke- width: 12px ;
515
+ stroke- linecap: round;
516
+ fill: none;
517
+ }
518
+ }
519
+
520
+ & .wallclock .modifier {
521
+ .outline {
522
+ fill: $background;
523
+ stroke: $foreground;
524
+ stroke- width: 7px ;
525
+ }
526
+ .wallclock {
527
+ stroke: $foreground;
528
+ stroke- width: 8px ;
529
+ fill: none;
530
+ stroke- linecap: round;
531
+ stroke- linejoin: round;
532
+ }
533
+ }
534
+
535
+ & .retry .modifier {
536
+ .retry path {
537
+ stroke: $foreground;
538
+ stroke- width: 12px ;
539
+ stroke- linecap: round;
540
+ }
541
+ .retry polygon {
542
+ stroke: none;
543
+ fill: $foreground;
544
+ }
545
+ }
546
+
459
547
& .running .progress {
460
548
animation- name: c8- task- progress- animation;
461
549
animation- timing- function: steps (50 );
0 commit comments