@@ -367,3 +367,31 @@ h2.panel-title { font-size: 30px; }
}
}
/* End copied in from newer version of Font-Awesome 4.3.0 */
+
+
+#overlay {
+ display: flex;
+ position: fixed;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
+ background-color: rgba(0, 0, 0, 0.7);
+ align-items: center;
+ justify-content: center;
+ z-index: 999;
+}
+
+.spinner {
+ border: 6px solid rgba(255, 255, 255, 0.3);
+ border-radius: 50%;
+ border-top: 6px solid #3498db;
+ width: 50px;
+ height: 50px;
+ animation: spin 1s linear infinite;
+}
+
+@keyframes spin {
+ 0% { transform: rotate(0deg); }
+ 100% { transform: rotate(360deg); }
+}
@@ -7,6 +7,12 @@
{% block pagecontent %}
<div class="container-fluid">
+ <div id="overlay" class="hide">
+ <div class="spinner">
+ <div class="fa-spin">
+ </div>
+ </div>
+ </div>
<div class="row">
<div class="col-md-12">
<div class="page-header">
@@ -32,7 +38,7 @@
{% endif %}
<div class="row">
<h4 style="margin-left: 15px;"><strong>Import eventlog file</strong></h4>
- <form method="POST" enctype="multipart/form-data" action="{% url 'cmdlines' %}">
+ <form method="POST" enctype="multipart/form-data" action="{% url 'cmdlines' %}" id="form_file">
{% csrf_token %}
<div class="col-md-6" style="padding-left: 20px;">
<div class="row">
@@ -52,7 +58,7 @@
<div class="row" style="padding-top: 20px;">
<div class="col-md-6 ">
- <h4><strong>Import eventlog files from directory</strong>
+ <h4><strong>Eventlogs from existing build directory: </strong>
<a href="#" data-toggle="tooltip" title="{{dir}}">
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-info-circle" viewBox="0 0 16 16" data-toggle="tooltip">
<path d="M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14m0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16"/>
@@ -78,7 +84,11 @@
<td class="col-md-6 align-middle" style="vertical-align: middle;">
{% if file.imported == True and file.build_id is not None %}
<a href="{% url 'builddashboard' file.build_id %}">Build Details</a>
- {%else %}
+ {% elif request.session.file == file.name or request.session.all_builds %}
+ <a data-toggle="tooltip" title="Build in progress">
+ <span class="glyphicon glyphicon-upload" style="font-size: 18px; color:grey"></span>
+ </a>
+ {%else%}
<a onclick="_ajax_update('{{file.name}}', false, '{{dir}}')" data-toggle="tooltip" title="Import File">
<span class="glyphicon glyphicon-upload" style="font-size: 18px;"></span>
</a>
@@ -160,12 +170,27 @@ $(function () {
$("#id_eventlog_file").change(function(){
- console.log($('#file_import'))
$('#file_import').prop("disabled", false);
$('#file_import').addClass('btn-primary')
$('#file_import').removeClass('btn-default')
})
+$(document).ajaxStart(function(){
+ $('#overlay').removeClass('hide');
+ window.setTimeout(
+ function() {
+ window.location = '/toastergui/builds/'
+ }, 10000)
+});
+
+$( "#form_file").on( "submit", function( event ) {
+ $('#overlay').removeClass('hide');
+ window.setTimeout(
+ function() {
+ window.location = '/toastergui/builds/'
+ }, 10000)
+});
+
</script>
{% endblock %}
@@ -15,7 +15,7 @@
<p>A web interface to <a href="https://www.openembedded.org">OpenEmbedded</a> and <a href="https://docs.yoctoproject.org/bitbake.html">BitBake</a>, the <a href="https://www.yoctoproject.org">Yocto Project</a> build system.</p>
<p class="top-air">
- <a class="btn btn-info btn-lg" href="http://docs.yoctoproject.org/toaster-manual/setup-and-use.html#setting-up-and-using-toaster">
+ <a class="btn btn-info btn-lg" href="http://docs.yoctoproject.org/toaster-manual/setup-and-use.html#setting-up-and-using-toaster" style="min-width: 460px;">
Toaster is ready to capture your command line builds
</a>
</p>
@@ -23,7 +23,7 @@
{% if lvs_nos %}
{% if project_enable %}
<p class="top-air">
- <a class="btn btn-primary btn-lg" href="{% url 'newproject' %}">
+ <a class="btn btn-primary btn-lg" href="{% url 'newproject' %}" style="min-width: 460px;">
Create your first Toaster project to run manage builds
</a>
</p>
@@ -42,6 +42,12 @@
</div>
{% endif %}
+ <p class="top-air">
+ <a class="btn btn-info btn-lg" href="{% url 'cmdlines' %}" style="min-width: 460px;">
+ Import command line event logs from build directory
+ </a>
+ </p>
+
<ul class="list-unstyled lead">
<li>
<a href="http://docs.yoctoproject.org/toaster-manual/index.html#toaster-user-manual">
@@ -2061,6 +2061,10 @@ class CommandLineBuilds(TemplateView):
else:
context['files'] = []
context['dir'] = ''
+
+ # enable session variable
+ if not self.request.session.get('file'):
+ self.request.session['file'] = ""
context['form'] = LoadFileForm()
context['project_enable'] = project_enable
@@ -2073,6 +2077,12 @@ class CommandLineBuilds(TemplateView):
imported_files = EventLogsImports.objects.all()
try:
if all_files == 'true':
+
+ # use of session variable to deactivate icon for builds in progress
+ request.session['all_builds'] = True
+ request.session.modified = True
+ request.session.save()
+
files = ast.literal_eval(request.POST.get('file'))
for file in files:
if imported_files.filter(name=file.get('name')).exists():
@@ -2095,6 +2105,12 @@ class CommandLineBuilds(TemplateView):
else:
file = request.POST.get('file')
+ # use of session variable to deactivate icon for build in progress
+ request.session['file'] = file
+ request.session['all_builds'] = False
+ request.session.modified = True
+ request.session.save()
+
if imported_files.filter(name=file).exists():
imported_files.filter(name=file)[0].imported = True
else:
@@ -2116,6 +2132,7 @@ class CommandLineBuilds(TemplateView):
event_log_import = EventLogsImports.objects.create(name=file, imported=True)
event_log_import.build_id = Build.objects.last().id
event_log_import.save()
+ request.session['file'] = ""
except json.decoder.JSONDecodeError:
messages.add_message(
self.request,
Follow up to feature to import eventlogs Updated UI using jquery and ajax to block screen and redirect to build page when import eventlogs is trigger Changed title for eventlogs folder in template Added a new button on landing page linked to import build page, and set min-height of buttons in landing page for uniformity Signed-off-by: Marlon Rodriguez Garcia <marlon.rodriguez-garcia@savoirfairelinux.com> --- lib/toaster/toastergui/static/css/default.css | 28 ++++++++++++++++ .../templates/command_line_builds.html | 33 ++++++++++++++++--- lib/toaster/toastergui/templates/landing.html | 10 ++++-- lib/toaster/toastergui/views.py | 17 ++++++++++ 4 files changed, 82 insertions(+), 6 deletions(-)