Skip to content

Commit 3f4c640

Browse files
authored
feat(add-job): provide editor for adding options (#670)
1 parent 9ddc673 commit 3f4c640

File tree

5 files changed

+38
-8
lines changed

5 files changed

+38
-8
lines changed

public/dashboard.js

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -256,8 +256,9 @@ $(document).ready(() => {
256256

257257
const job = localStorage.getItem('arena:savedJob');
258258
if (job) {
259-
const {name, data} = JSON.parse(job);
259+
const {name, data, opts} = JSON.parse(job);
260260
window.jsonEditor.set(data);
261+
if (window.jsonEditorOpts) window.jsonEditorOpts.set(opts);
261262
$('input.js-add-job-name').val(name);
262263
} else {
263264
window.jsonEditor.set({id: ''});
@@ -291,7 +292,8 @@ $(document).ready(() => {
291292
$('.js-add-job').on('click', function () {
292293
const name = $('input.js-add-job-name').val() || null;
293294
const data = window.jsonEditor.get();
294-
const job = JSON.stringify({name, data});
295+
const opts = window.jsonEditorOpts ? window.jsonEditorOpts.get() : {};
296+
const job = JSON.stringify({name, data, opts});
295297
localStorage.setItem('arena:savedJob', job);
296298
const {queueHost, queueName} = window.arenaInitialPayload;
297299
$.ajax({

src/server/queue/index.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -140,14 +140,16 @@ class Queues {
140140
* @param {Object} queue A bee or bull queue class
141141
* @param {Object} data The data to be used within the job
142142
* @param {String} name The name of the Bull job (optional)
143+
* @param {Object} opts The opts to be used within the job
143144
*/
144-
async set(queue, data, name) {
145+
async set(queue, data, name, opts) {
145146
if (queue.IS_BEE) {
146147
return queue.createJob(data).save();
147148
} else {
148149
const args = [
149150
data,
150151
{
152+
...opts,
151153
removeOnComplete: false,
152154
removeOnFail: false,
153155
},

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 {name, data} = req.body;
3+
const {name, data, opts} = 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, name);
11+
await Queues.set(queue, data, name, opts);
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
@@ -35,6 +35,7 @@ async function handler(req, res) {
3535
queueName,
3636
queueHost,
3737
queueIsBee: !!queue.IS_BEE,
38+
queueIsBullMQ: !!queue.IS_BULLMQ,
3839
hasFlows: Flows.hasFlows(),
3940
jobCounts,
4041
stats,

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

Lines changed: 28 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,17 +18,41 @@
1818
<div class="col-sm-6">
1919
<div class="panel panel-default">
2020
<div class="panel-heading">
21-
<div class="js-toggle-add-job-editor btn btn-default btn-xs pull-right">Add Job</div>
21+
<div class="js-toggle-add-job-editor btn btn-default btn-xs pull-right">Add Job</div>
2222
<h4 class="panel-title">Job Types</h4>
2323
</div>
2424
<div class="panel-body">
2525
<div class="jsoneditorx form-group hide overflow-hidden">
26-
<div class="jsoneditorx hide" id="jsoneditor" style="height:300px;"></div>
26+
{{#unless queueIsBee}}
27+
<div class="panel with-nav-tabs panel-primary">
28+
<ul class="nav nav-tabs nav-justified">
29+
<li class="active"><a href="#tab1primary" data-toggle="tab">Payload</a></li>
30+
<li><a class="text-white" href="#tab2primary" data-toggle="tab">Options</a></li>
31+
</ul>
32+
<div class="panel-body">
33+
<div class="tab-content">
34+
<div class="tab-pane fade in active" id="tab1primary">
35+
{{/unless}}
36+
<div class="jsoneditorx hide" id="jsoneditor" style="height:300px;"></div>
37+
{{#unless queueIsBee}}
38+
</div>
39+
<div class="tab-pane fade" id="tab2primary">
40+
<div class="jsoneditorx hide" id="jsoneditoropts" style="height:300px;"></div>
41+
</div>
42+
</div>
43+
</div>
44+
</div>
45+
{{/unless}}
2746
<br />
2847
<div class="form-inline pull-right">
2948
{{#unless queueIsBee}}
3049
<input type="text" class="js-add-job-name form-control input-sm" style="margin-right: 10px;"
31-
placeholder="Job name (optional)">
50+
{{#if queueIsBullMQ}}
51+
placeholder="Job name"
52+
{{else}}
53+
placeholder="Job name (optional)"
54+
{{/if}}
55+
>
3256
{{/unless}}
3357
<div class="js-add-job btn btn-primary btn-sm">Create</div>
3458
</div>
@@ -75,6 +99,7 @@
7599

76100
{{#contentFor 'script'}}
77101
window.jsonEditor = new JSONEditor(document.getElementById('jsoneditor'), { modes: ['code','tree','text'] });
102+
if(document.getElementById('jsoneditoropts')) window.jsonEditorOpts = new JSONEditor(document.getElementById('jsoneditoropts'), { modes: ['code','tree','text'] });
78103
window.arenaInitialPayload = {
79104
queueHost: "{{ queueHost }}",
80105
queueName: "{{ queueName }}"

0 commit comments

Comments
 (0)