mirror of
https://github.com/woodpecker-ci/woodpecker.git
synced 2024-12-27 02:40:30 +00:00
83577a7d5d
removed amber files. replacing with angular removed queue package in favor or worker package removed channel package in favor of pubsub package
98 lines
2.1 KiB
JavaScript
98 lines
2.1 KiB
JavaScript
;// Live commit updates
|
|
|
|
if(typeof(Drone) === 'undefined') { Drone = {}; }
|
|
|
|
(function () {
|
|
Drone.CommitUpdates = function(socket) {
|
|
if(typeof(socket) === "string") {
|
|
var url = [(window.location.protocol == 'https:' ? 'wss' : 'ws'),
|
|
'://',
|
|
window.location.host,
|
|
socket].join('')
|
|
this.socket = new WebSocket(url);
|
|
} else {
|
|
this.socket = socket;
|
|
}
|
|
|
|
this.lineFormatter = new Drone.LineFormatter();
|
|
this.attach();
|
|
}
|
|
|
|
Drone.CommitUpdates.prototype = {
|
|
lineBuffer: "",
|
|
autoFollow: false,
|
|
|
|
startOutput: function(el) {
|
|
if(typeof(el) === 'string') {
|
|
this.el = document.getElementById(el);
|
|
} else {
|
|
this.el = el;
|
|
}
|
|
|
|
if(!this.reqId) {
|
|
this.updateScreen();
|
|
}
|
|
},
|
|
|
|
stopOutput: function() {
|
|
this.stoppingRefresh = true;
|
|
},
|
|
|
|
attach: function() {
|
|
this.socket.onopen = this.onOpen;
|
|
this.socket.onerror = this.onError;
|
|
this.socket.onmessage = this.onMessage.bind(this);
|
|
this.socket.onclose = this.onClose;
|
|
},
|
|
|
|
updateScreen: function() {
|
|
if(this.lineBuffer.length > 0) {
|
|
this.el.innerHTML += this.lineBuffer;
|
|
this.lineBuffer = '';
|
|
|
|
if (this.autoFollow) {
|
|
window.scrollTo(0, document.body.scrollHeight);
|
|
}
|
|
}
|
|
|
|
if(this.stoppingRefresh) {
|
|
this.stoppingRefresh = false;
|
|
} else {
|
|
window.requestAnimationFrame(this.updateScreen.bind(this));
|
|
}
|
|
},
|
|
|
|
onOpen: function() {
|
|
console.log('output websocket open');
|
|
},
|
|
|
|
onError: function(e) {
|
|
console.log('websocket error: ' + e);
|
|
},
|
|
|
|
onMessage: function(e) {
|
|
this.lineBuffer += this.lineFormatter.format(e.data);
|
|
},
|
|
|
|
onClose: function(e) {
|
|
console.log('output websocket closed: ' + JSON.stringify(e));
|
|
window.location.reload();
|
|
}
|
|
};
|
|
|
|
// Polyfill rAF for older browsers
|
|
window.requestAnimationFrame = window.requestAnimationFrame ||
|
|
window.webkitRequestAnimationFrame ||
|
|
function(callback, element) {
|
|
return window.setTimeout(function() {
|
|
callback(+new Date());
|
|
}, 1000 / 60);
|
|
};
|
|
|
|
window.cancelRequestAnimationFrame = window.cancelRequestAnimationFrame ||
|
|
window.cancelWebkitRequestAnimationFrame ||
|
|
function(fn) {
|
|
window.clearTimeout(fn);
|
|
};
|
|
|
|
})();
|