]> git.ipfire.org Git - pbs.git/commitdiff
log: Add pagination
authorMichael Tremer <michael.tremer@ipfire.org>
Sat, 29 Apr 2023 11:09:23 +0000 (11:09 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Sat, 29 Apr 2023 11:09:23 +0000 (11:09 +0000)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/buildservice/events.py
src/templates/log.html
src/web/handlers.py

index 1d847190f4307df8a5f990956859673b7e05b06b..aee757963fa6a968a1829e4e346aa08b7c682adb 100644 (file)
@@ -275,7 +275,7 @@ class Events(base.Object):
 
                        yield Event(self.backend, event)
 
-       def __call__(self, build=None, user=None, priority=None, limit=None):
+       def __call__(self, build=None, user=None, priority=None, offset=None, limit=None):
                """
                        Returns all events filtered by the given criteria
                """
@@ -313,12 +313,14 @@ class Events(base.Object):
                        -- Sort everything in reverse order
                        ORDER BY
                                t DESC
+                       OFFSET
+                               %%s
                        LIMIT
                                %%s
                        """ % {
                                "EVENTS_VIEW" : EVENTS_VIEW,
                                "conditions"  : " AND ".join(conditions) or "TRUE",
-                       }, *values, limit,
+                       }, *values, offset, limit,
                )
 
                # Expand all events
index 0142a7f99ae90e58588c7e427f2a15aa0c5a8920..6e1112f87d52b163bb1f41bf4042f5c0ed988531 100644 (file)
@@ -3,18 +3,32 @@
 {% block title %}{{ _("Log") }}{% end block %}
 
 {% block container %}
-       <nav aria-label="{{ _("You are here:") }}" role="navigation">
-               <ul class="breadcrumbs">
-                       <li>
-                               <a href="/">{{ _("Home") }}</a>
-                       </li>
-                       <li>
-                               <span class="show-for-sr">{{ _("Current") }}: </span> {{ _("Log") }}
+       <nav class="breadcrumb" aria-label="breadcrumbs">
+               <ul>
+                       <li class="is-active">
+                               <a href="#" aria-current="page">{{ _("Log") }}</a>
                        </li>
                </ul>
        </nav>
 
-       <h1 class="text-center">{{ _("Log") }}</h1>
+       <section class="section">
+               <h1 class="title">{{ _("Log") }}</h1>
+
+               <div class="block">
+                       {% module EventsList(user=user, offset=offset, limit=limit) %}
+               </div>
+
+               <div class="block">
+                       <nav class="pagination is-centered" role="navigation" aria-label="pagination">
+                               <a class="pagination-previous {% if not offset %}is-disabled{% end %}"
+                                               href="/log?offset={{ offset - limit }}&limit={{ limit }}">
+                                       {{ _("Previous Page") }}
+                               </a>
 
-       {% module EventsList(user=user) %}
+                               <a class="pagination-next" href="/log?offset={{ offset + limit }}&limit={{ limit }}">
+                                       {{ _("Next Page") }}
+                               </a>
+                       </nav>
+               </div>
+       </section>
 {% end %}
index 4ec826d86b7f342dfbf948583145e8122d172d0d..e16585d41d502c201f8143cd144a88f101ff5e38 100644 (file)
@@ -12,7 +12,12 @@ class IndexHandler(base.BaseHandler):
 class LogHandler(base.BaseHandler):
        def get(self):
                kwargs = {
-                       "user" : self.get_argument_user("user", None),
+                       # Pagination
+                       "offset" : self.get_argument_int("offset", None) or 0,
+                       "limit"  : self.get_argument_int("limit", None) or 50,
+
+                       # Filters
+                       "user"   : self.get_argument_user("user", None),
                }
 
                self.render("log.html", **kwargs)