Skip to content

Commit 68cdee3

Browse files
authored
Merge pull request #2190 from wxtim/feat.xtrigger-icon
task icon: add xtrigger derived modifiers
2 parents fd8c2da + ec9aac2 commit 68cdee3

File tree

10 files changed

+301
-111
lines changed

10 files changed

+301
-111
lines changed

changes.d/2190.fix.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Added icon modifiers for tasks waiting on failure-retry, xtriggers or wallclock.

src/components/cylc/SVGTask.vue

Lines changed: 169 additions & 100 deletions
Original file line numberDiff line numberDiff line change
@@ -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
*/
276276
const 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+
278289
const 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);

src/components/cylc/Task.vue

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,11 +48,11 @@ export default {
4848
// Scale the size of the task state modifier
4949
type: Number,
5050
default: 0.7
51-
}
51+
},
5252
},
5353
components: {
5454
SVGTask
55-
}
55+
},
5656
}
5757
</script>
5858

0 commit comments

Comments
 (0)