Mercurial > piecrust2
diff piecrust/resources/server/piecrust-debug-info.js @ 219:d7a548ebcd58
serve: Add server sent events for showing pipeline errors in the debug window.
The server can now run an endpoint that streams pipeline status, including
errors or "fixed" statuses.
As a result, I had to investigate using event-loop based server alternatives,
before I figured out the correct flag to set in Werkzeug. Support for Gunicorn
is therefore now possible, although disabled by default. I will come in handy
though when proper support for CMS-mode is enabled.
author | Ludovic Chabant <ludovic@chabant.com> |
---|---|
date | Mon, 02 Feb 2015 08:34:44 -0800 |
parents | |
children | 9612cfc6455a |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/piecrust/resources/server/piecrust-debug-info.js Mon Feb 02 08:34:44 2015 -0800 @@ -0,0 +1,45 @@ +var eventSource = new EventSource("/__piecrust_debug/pipeline_status"); + +//window.onbeforeunload = function(e) { +// console.log("Disconnecting SSE.", e); +// eventSource.close(); +//}; + +eventSource.onerror = function(e) { + console.log("Error with SSE, closing.", e); + eventSource.close(); +}; + +eventSource.addEventListener('pipeline_success', function(e) { + var placeholder = document.getElementById('piecrust-debug-info-pipeline-status'); + //if (placeholder.firstChild !== null) + placeholder.removeChild(placeholder.firstChild); +}); + +eventSource.addEventListener('pipeline_error', function(e) { + var obj = JSON.parse(e.data); + + var outer = document.createElement('div'); + outer.style = 'padding: 1em;'; + for (var i = 0; i < obj.assets.length; ++i) { + var item = obj.assets[i]; + var markup = ( + '<p>Error processing: <span style="font-family: monospace;">' + + item.path + '</span></p>\n' + + '<ul>'); + for (var j = 0; j < item.errors.length; ++j) { + markup += ( + '<li style="font-family: monospace;">' + + item.errors[j] + + '</li>\n'); + } + markup += '</ul>\n'; + var entry = document.createElement('div'); + entry.innerHTML = markup; + outer.appendChild(entry); + } + + var placeholder = document.getElementById('piecrust-debug-info-pipeline-status'); + placeholder.appendChild(outer); +}); +