1
0
mirror of https://github.com/ohwgiles/laminar.git synced 2026-03-02 03:40:21 +00:00

show active jobs on Jobs page

Rows on the jobs page now updated also during their execution. This
improvement was discussed in #8 and #9
This commit is contained in:
Oliver Giles
2017-11-07 08:21:01 +02:00
parent 022aa0d804
commit d3e4db1f29
3 changed files with 59 additions and 5 deletions

View File

@@ -54,7 +54,7 @@ const WebsocketHandler = function() {
const Utils = {
methods: {
runIcon(result) {
return result === "success" ? '<span style="color:forestgreen;font-family:\'Zapf Dingbats\';">✔</span>' : result === "failed" || result === "aborted" ? '<span style="color:crimson;">✘</span>' : '';
return result === "success" ? '<span style="color:forestgreen;font-family:\'Zapf Dingbats\';">✔</span>' : result === "failed" || result === "aborted" ? '<span style="color:crimson;">✘</span>' : '<img class="spin small" src="/progress.gif">';
},
formatDate: function(unix) {
// TODO: reimplement when toLocaleDateString() accepts formatting options on most browsers
@@ -257,7 +257,7 @@ const Jobs = function() {
};
return {
template: '#jobs',
mixins: [WebsocketHandler, Utils],
mixins: [WebsocketHandler, Utils, ProgressUpdater],
data: function() { return state; },
computed: {
filteredJobs() {
@@ -280,6 +280,13 @@ const Jobs = function() {
methods: {
status: function(msg) {
state.jobs = msg.jobs;
state.jobsRunning = msg.running;
// mix running and completed jobs
for (var i in msg.running) {
var idx = state.jobs.findIndex(job => job.name === msg.running[i].name);
if (idx > -1)
state.jobs[idx] = msg.running[i];
}
var tags = {};
for (var i in state.jobs) {
for (var j in state.jobs[i].tags) {
@@ -288,10 +295,38 @@ const Jobs = function() {
}
state.tags = Object.keys(tags);
},
job_started: function(data) {
var updAt = null;
for (var i in state.jobsRunning) {
if (state.jobsRunning[i].name === data.name) {
updAt = i;
break;
}
}
if (updAt === null) {
state.jobsRunning.unshift(data);
} else {
state.jobsRunning[updAt] = data;
}
for (var i in state.jobs) {
if (state.jobs[i].name === data.name) {
state.jobs[i] = data;
this.$forceUpdate();
break;
}
}
},
job_completed: function(data) {
for (var i in state.jobs) {
if (state.jobs[i].name === data.name) {
state.jobs[i] = data;
// forceUpdate in second loop
break;
}
}
for (var i in state.jobsRunning) {
if (state.jobsRunning[i].name === data.name) {
state.jobsRunning.splice(i, 1);
this.$forceUpdate();
break;
}