93 lines
2.5 KiB
HTML
93 lines
2.5 KiB
HTML
{% extends "page.html" %}
|
|
|
|
{% block main %}
|
|
|
|
<div class="container">
|
|
<div class="row">
|
|
<div class="text-center">
|
|
{% block message %}
|
|
<p>Your server is starting up.</p>
|
|
<p>You will be redirected automatically when it's ready for you.</p>
|
|
{% endblock %}
|
|
<div class="progress">
|
|
<div id="progress-bar" class="progress-bar" role="progressbar" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100" style="width: 0%;">
|
|
<span class="sr-only"><span id="sr-progress">0%</span> Complete</span>
|
|
</div>
|
|
</div>
|
|
<p id="progress-message"></p>
|
|
</div>
|
|
</div>
|
|
<div class="row">
|
|
<div class="col-md-8 col-md-offset-2">
|
|
<details id="progress-details">
|
|
<summary>Event log</summary>
|
|
<div id="progress-log"></div>
|
|
</details>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
{% endblock %}
|
|
|
|
{% block script %}
|
|
{{ super() }}
|
|
<script type="text/javascript">
|
|
require(["jquery"], function ($) {
|
|
$("#refresh").click(function () {
|
|
window.location.reload();
|
|
});
|
|
|
|
// hook up event-stream for progress
|
|
var evtSource = new EventSource("{{ progress_url }}");
|
|
var progressMessage = $("#progress-message");
|
|
var progressBar = $("#progress-bar");
|
|
var srProgress = $("#sr-progress");
|
|
var progressLog = $("#progress-log");
|
|
|
|
evtSource.onmessage = function(e) {
|
|
var evt = JSON.parse(e.data);
|
|
console.log(evt);
|
|
if (evt.progress !== undefined) {
|
|
// update progress
|
|
var progText = evt.progress.toString();
|
|
progressBar.attr('aria-valuenow', progText);
|
|
srProgress.text(progText + '%');
|
|
progressBar.css('width', progText + '%');
|
|
}
|
|
// update message
|
|
var html_message;
|
|
if (evt.html_message !== undefined) {
|
|
progressMessage.html(evt.html_message);
|
|
html_message = evt.html_message;
|
|
} else if (evt.message !== undefined) {
|
|
progressMessage.text(evt.message);
|
|
html_message = progressMessage.html();
|
|
}
|
|
if (html_message) {
|
|
progressLog.append(
|
|
$("<div>")
|
|
.addClass('progress-log-event')
|
|
.html(html_message)
|
|
);
|
|
}
|
|
|
|
if (evt.ready) {
|
|
evtSource.close();
|
|
// reload the current page
|
|
// which should result in a redirect to the running server
|
|
window.location.reload();
|
|
}
|
|
|
|
if (evt.failed) {
|
|
evtSource.close();
|
|
// turn progress bar red
|
|
progressBar.addClass('progress-bar-danger');
|
|
// open event log for debugging
|
|
$('#progress-details').prop('open', true);
|
|
}
|
|
};
|
|
|
|
});
|
|
</script>
|
|
{% endblock %}
|