mumui/deployment/static/deployment/js/event_source.js

58 lines
1.9 KiB
JavaScript

var start = function (url) {
var es = new ReconnectingEventSource(url);
console.log("url: " + url);
es.onopen = function () {
console.log('connected');
};
es.addEventListener('stream-error', function (e) {
es.close();
message = JSON.parse(e.data);
console.log('stream error: ' + message.condition + ': ' + message.text);
}, false);
es.onerror = function (e) {
console.log('connection error');
};
// listening on `message` events and update the corresponding table line.
// If the status is `FAILED`, we reload the window to ensure a new csrf_token.
es.addEventListener('message', function (e) {
message = JSON.parse(e.data);
console.log("id: " + message.id);
console.log("status: " + message.status);
const tr = document.getElementById(message.id);
if (tr) {
var status = tr.querySelector("th[name='status']");
status.innerHTML = message.status;
var button = tr.querySelector("th[name='deploy']");
if (message.status == "RUNNING") {
var innerBtn = document.createElement("button");
innerBtn.setAttribute("disabled", "");
innerBtn.setAttribute("type", "button");
innerBtn.className = "btn btn-primary btn-sm"
innerSpan = document.createElement("span");
innerSpan.setAttribute("role", "status");
innerSpan.innerHTML = "Deploying...";
innerBtn.appendChild(innerSpan);
button.innerHTML = "";
button.appendChild(innerBtn);
}
if (message.status == "SUCCESS") {
button.innerHTML = "";
}
if (message.status == "FAILED") {
window.location.reload();
}
}
}, false);
};