]> git.ipfire.org Git - pbs.git/commitdiff
web: Create UI module for queued jobs
authorMichael Tremer <michael.tremer@ipfire.org>
Mon, 31 Jul 2023 17:19:48 +0000 (17:19 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Mon, 31 Jul 2023 17:19:48 +0000 (17:19 +0000)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Makefile.am
src/templates/builds/queue.html
src/templates/index.html
src/templates/jobs/modules/queue.html [new file with mode: 0644]
src/web/__init__.py
src/web/jobs.py

index 84b5f9e6665e120b2881a500f58442aa98b023a8..cd54a190131a0b18cc1d9fcb882e4e86ad2ec32b 100644 (file)
@@ -288,7 +288,8 @@ templates_jobs_messagesdir = $(templates_jobsdir)/messages
 
 dist_templates_jobs_modules_DATA = \
        src/templates/jobs/modules/list.html \
-       src/templates/jobs/modules/log-stream.html
+       src/templates/jobs/modules/log-stream.html \
+       src/templates/jobs/modules/queue.html
 
 templates_jobs_modulesdir = $(templates_jobsdir)/modules
 
index 820e5e0654543f25791530d04f7a84036614fe74..06d271acf96b75982e4d18d20eeecd81a57ed360 100644 (file)
@@ -26,7 +26,7 @@
 
        <section class="section">
                <div class="container">
-                       {% module JobsList(queue) %}
+                       {% module JobsQueue(queue) %}
                </div>
        </section>
 {% end block %}
index c006615d6915d772185c989cabcb0b34d3070868..b59a12758c427354832dc68531b713bafdde0c28 100644 (file)
                                                        <div class="level-item has-text-centered">
                                                                <div>
                                                                        <p class="heading">{{ _("Queued Jobs") }}</p>
-                                                                       <p class="title">{{ queue_length }}</p>
+                                                                       <p class="title">
+                                                                               <a href="/builds/queue">
+                                                                                       {{ queue_length }}
+                                                                               </a>
+                                                                       </p>
                                                                </div>
                                                        </div>
                                                {% end %}
                                        </div>
 
-                                       <nav class="panel has-background-white">
-                                               {# Show running jobs #}
-                                               {% for job in running_jobs %}
-                                                       <a class="panel-block is-active"
-                                                                       href="/builds/{{ job.build.uuid }}">
-                                                               <span class="panel-icon">
-                                                                       <i class="fa-solid fa-gear fa-spin" aria-hidden="true"></i>
-                                                               </span>
-
-                                                               {{ job }}
-                                                       </a>
-                                               {% end %}
-
-                                               {# Show queued jobs #}
-                                               {% for job in queued_jobs %}
-                                                       <a class="panel-block"
-                                                                       href="/builds/{{ job.build.uuid }}">
-                                                               <span class="panel-icon">
-                                                                       <i class="fa-solid fa-clock" aria-hidden="true"></i>
-                                                               </span>
-
-                                                               {{ job }}
-                                                       </a>
-                                               {% end %}
-
-                                               {# Show link to see entire queue #}
-                                               {% if queue_length > len(queued_jobs) %}
-                                                       <a class="panel-block is-justify-content-center" href="/builds/queue">
-                                                               {{ _("Show All Queued Jobs") }}
-                                                       </a>
-                                               {% end %}
-                                       </nav>
+                                       {% module JobsQueue(running_jobs + queued_jobs) %}
                                </div>
                        </div>
                </section>
diff --git a/src/templates/jobs/modules/queue.html b/src/templates/jobs/modules/queue.html
new file mode 100644 (file)
index 0000000..e75d04c
--- /dev/null
@@ -0,0 +1,16 @@
+<nav class="panel has-background-white">
+       {% for job in jobs %}
+               <a class="panel-block {% if job.is_running() %}is-active{% end %}"
+                               href="/builds/{{ job.build.uuid }}">
+                       <span class="panel-icon">
+                               {% if job.is_running() %}
+                                       <i class="fa-solid fa-gear fa-spin" aria-hidden="true"></i>
+                               {% elif job.is_queued() %}
+                                       <i class="fa-solid fa-clock" aria-hidden="true"></i>
+                               {% end %}
+                       </span>
+
+                       {{ job }}
+               </a>
+       {% end %}
+</nav>
index 886bc69cc15884ca8c00d738a1c2743a06d19162..52352b5bf658c91fc2cba54cc3790693ff1cced1 100644 (file)
@@ -67,6 +67,7 @@ class Application(tornado.web.Application):
                                # Jobs
                                "JobsList"           : jobs.ListModule,
                                "JobsLogStream"      : jobs.LogStreamModule,
+                               "JobsQueue"          : jobs.QueueModule,
 
                                # Mirrors
                                "MirrorsList"        : mirrors.ListModule,
index 6c7e2c5ca3473ca0661930db2662d86b61e1da5c..0907dee8731338a8e40beeb0467a3f09465a8410 100644 (file)
@@ -232,6 +232,11 @@ class ListModule(ui_modules.UIModule):
                        show_arch_only=show_arch_only, show_packages=show_packages)
 
 
+class QueueModule(ui_modules.UIModule):
+       def render(self, jobs):
+               return self.render_string("jobs/modules/queue.html", jobs=jobs)
+
+
 class LogStreamModule(ui_modules.UIModule):
        def render(self, job, limit=None, small=False):
                return self.render_string("jobs/modules/log-stream.html",