Skip to content

Commit 1c131a9

Browse files
feat(add-job): improve named job support (#209)
Co-authored-by: Eli Skeggs <skeggse@users.noreply.github.com>
1 parent b70be74 commit 1c131a9

5 files changed

Lines changed: 25 additions & 10 deletions

File tree

public/dashboard.js

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -149,25 +149,33 @@ $(document).ready(() => {
149149

150150
$('.js-toggle-add-job-editor').on('click', function () {
151151
$('.jsoneditorx').toggleClass('hide');
152-
const data = localStorage.getItem('arena:savedJobData');
153-
window.jsonEditor.set(data ? JSON.parse(data) : { id: '' });
152+
const job = localStorage.getItem('arena:savedJob');
153+
if (job) {
154+
const { name, data } = JSON.parse(job);
155+
window.jsonEditor.set(data);
156+
$('input.js-add-job-name').val(name);
157+
} else {
158+
window.jsonEditor.set({ id: '' });
159+
}
154160
});
155161

156162
$('.js-add-job').on('click', function () {
163+
const name = $('input.js-add-job-name').val() || null;
157164
const data = window.jsonEditor.get();
158-
localStorage.setItem('arena:savedJobData', JSON.stringify(data));
165+
const job = JSON.stringify({ name, data });
166+
localStorage.setItem('arena:savedJob', job);
159167
const { queueHost, queueName } = window.arenaInitialPayload;
160168
$.ajax({
161169
url: `${basePath}/api/queue/${encodeURIComponent(queueHost)}/${encodeURIComponent(
162170
queueName
163171
)}/job`,
164172
type: 'POST',
165-
data: JSON.stringify(data),
173+
data: job,
166174
contentType: 'application/json',
167175
})
168176
.done(() => {
169177
alert('Job successfully added!');
170-
localStorage.removeItem('arena:savedJobData');
178+
localStorage.removeItem('arena:savedJob');
171179
})
172180
.fail((jqXHR) => {
173181
window.alert('Failed to save job, check console for error.');

src/server/queue/index.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -106,8 +106,9 @@ class Queues {
106106
*
107107
* @param {Object} queue A bee or bull queue class
108108
* @param {Object} data The data to be used within the job
109+
* @param {String} name The name of the Bull job (optional)
109110
*/
110-
async set(queue, data) {
111+
async set(queue, data, name) {
111112
if (queue.IS_BEE) {
112113
return queue.createJob(data).save();
113114
} else {
@@ -119,7 +120,7 @@ class Queues {
119120
},
120121
];
121122

122-
if (data.name) args.unshift(data.name);
123+
if (name) args.unshift(name);
123124
return queue.add.apply(queue, args);
124125
}
125126
}

src/server/views/api/jobAdd.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
async function handler(req, res) {
22
const { queueName, queueHost } = req.params;
3-
const data = req.body;
3+
const { name, data } = req.body;
44

55
const { Queues } = req.app.locals;
66

77
const queue = await Queues.get(queueName, queueHost);
88
if (!queue) return res.status(404).json({ error: 'queue not found' });
99

1010
try {
11-
await Queues.set(queue, data);
11+
await Queues.set(queue, data, name);
1212
} catch (err) {
1313
return res.status(500).json({ error: err.message });
1414
}

src/server/views/dashboard/queueDetails.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ async function handler(req, res) {
2323
basePath,
2424
queueName,
2525
queueHost,
26+
queueIsBee: !!queue.IS_BEE,
2627
jobCounts,
2728
stats,
2829
});

src/server/views/dashboard/templates/queueDetails.hbs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,12 @@
1111
<div class="jsoneditorx form-group hide overflow-hidden">
1212
<div class="jsoneditorx hide" id="jsoneditor" style="height:300px;"></div>
1313
<br />
14-
<div class="js-add-job btn btn-primary btn-sm pull-right">Create</div>
14+
<div class="form-inline pull-right">
15+
{{#unless queueIsBee}}
16+
<input type="text" class="js-add-job-name form-control input-sm" style="margin-right: 10px;" placeholder="Job name (optional)">
17+
{{/unless}}
18+
<div class="js-add-job btn btn-primary btn-sm">Create</div>
19+
</div>
1520
</div>
1621
<ul class="list-group">
1722
{{#each jobCounts}}

0 commit comments

Comments
 (0)