Skip to content

Commit 4758e12

Browse files
Merge pull request #1456 from MetRonnie/message-chips
Fix message chips for task outputs
2 parents 3c36618 + 88754c8 commit 4758e12

File tree

3 files changed

+51
-22
lines changed

3 files changed

+51
-22
lines changed

src/services/mock/json/App.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -263,7 +263,7 @@
263263
"finishedTime": "2020-11-08T22:57:41Z",
264264
"state": "succeeded",
265265
"submitNum": 4,
266-
"messages": ["started", "foo", "bar", "baz", "pub", "qux", "x", "y"],
266+
"messages": ["started", "foo message", "bar message", "x", "baz message", "pub message", "qux message", "y"],
267267
"taskProxy": {
268268
"outputs": [
269269
{"label": "foo", "message": "foo message"},
@@ -287,7 +287,7 @@
287287
"finishedTime": "2020-11-08T22:57:25Z",
288288
"state": "failed",
289289
"submitNum": 3,
290-
"messages": ["started", "foo", "failed/ERR"],
290+
"messages": ["started", "foo message", "failed/ERR"],
291291
"taskProxy": {
292292
"outputs": [
293293
{"label": "foo", "message": "foo message"}

src/utils/tasks.js

+9-19
Original file line numberDiff line numberDiff line change
@@ -69,30 +69,20 @@ function latestJob (taskProxy) {
6969
*/
7070
function jobMessageOutputs (jobNode) {
7171
const ret = []
72-
let messageOutput
7372

7473
for (const message of jobNode.node.messages || []) {
7574
if (TASK_OUTPUT_NAMES.includes(message)) {
7675
continue
7776
}
78-
messageOutput = null
79-
for (const output of jobNode.node.taskProxy?.outputs || []) {
80-
if (message === output.label) {
81-
messageOutput = output
82-
break
83-
}
84-
}
85-
if (messageOutput) {
86-
// add an output to the list
87-
ret.push(messageOutput)
88-
} else {
89-
// add a message to the list and make it look like an output
90-
ret.push({
91-
label: message,
92-
message: `Task Message: ${message}`,
93-
isMessage: true
94-
})
95-
}
77+
const messageOutput = jobNode.node.taskProxy?.outputs?.find(
78+
(output) => message === output.message
79+
)
80+
ret.push({
81+
level: undefined, // TODO: https://github.com/cylc/cylc-ui/pull/1436
82+
label: messageOutput?.label ?? message,
83+
message: messageOutput?.message ?? `Task message: ${message}`,
84+
isMessage: !messageOutput,
85+
})
9686
}
9787
return ret
9888
}

tests/unit/utils/tasks.spec.js

+40-1
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
*/
1717

1818
import TaskState from '@/model/TaskState.model'
19-
import { dtMean, extractGroupState, latestJob, formatDuration } from '@/utils/tasks'
19+
import { dtMean, extractGroupState, latestJob, formatDuration, jobMessageOutputs } from '@/utils/tasks'
2020

2121
describe('tasks', () => {
2222
describe('extractGroupState', () => {
@@ -36,6 +36,7 @@ describe('tasks', () => {
3636
expect(groupState).to.equal(val[0])
3737
})
3838
})
39+
3940
it('should return the correct state for the node groups when stopped', () => {
4041
[
4142
[
@@ -52,10 +53,12 @@ describe('tasks', () => {
5253
expect(groupState).to.equal(val[0])
5354
})
5455
})
56+
5557
it('should return empty when no states provided', () => {
5658
expect(extractGroupState([])).to.equal('')
5759
})
5860
})
61+
5962
describe.each([
6063
{
6164
taskProxy: null,
@@ -85,6 +88,7 @@ describe('tasks', () => {
8588
expect(latestJob(taskProxy)).to.equal(expected)
8689
})
8790
})
91+
8892
describe('dtMean', () => {
8993
it('should format seconds to nice isodatetime format', () => {
9094
const tests = [
@@ -146,6 +150,7 @@ describe('tasks', () => {
146150
})
147151
})
148152
})
153+
149154
describe('formatDuration', () => {
150155
it('should format seconds to nice isodatetime format', () => {
151156
expect(formatDuration(null)).to.equal(undefined)
@@ -168,4 +173,38 @@ describe('tasks', () => {
168173
expect(formatDuration(42, true)).to.equal('00:00:42')
169174
})
170175
})
176+
177+
describe('jobMessageOutputs()', () => {
178+
it('returns expected value for outputs vs ordinary messages', () => {
179+
const jobNode = {
180+
node: {
181+
messages: [
182+
'chilbolton',
183+
'larkhill',
184+
],
185+
taskProxy: {
186+
outputs: [{
187+
label: 'my-output',
188+
message: 'chilbolton',
189+
}]
190+
}
191+
}
192+
}
193+
194+
expect(jobMessageOutputs(jobNode)).toEqual([
195+
{
196+
level: undefined,
197+
label: 'my-output',
198+
message: 'chilbolton',
199+
isMessage: false,
200+
},
201+
{
202+
level: undefined,
203+
label: 'larkhill',
204+
message: 'Task message: larkhill',
205+
isMessage: true,
206+
},
207+
])
208+
})
209+
})
171210
})

0 commit comments

Comments
 (0)