diff --git a/views/components/pagination.templ b/views/components/pagination.templ
new file mode 100644
index 0000000..5ca2a37
--- /dev/null
+++ b/views/components/pagination.templ
@@ -0,0 +1,31 @@
+package components
+
+import "github.com/tigorlazuardi/redmage/views"
+import "strconv"
+import "github.com/tigorlazuardi/redmage/views/utils"
+import "strings"
+
+type PaginationData struct {
+ Offset int64
+ Limit int64
+ BaseURL string
+ Total int64
+ Classes []string
+}
+
+templ Pagination(c *views.Context, data PaginationData) {
+ if data.Total > data.Limit {
+
+ }
+}
diff --git a/views/context.go b/views/context.go
index 1dc8ff7..d8f4dda 100644
--- a/views/context.go
+++ b/views/context.go
@@ -1,9 +1,11 @@
package views
import (
+ "fmt"
"net/http"
"net/url"
+ "github.com/a-h/templ"
"github.com/tigorlazuardi/redmage/config"
)
@@ -21,6 +23,18 @@ func (c *Context) AppendQuery(keyValue ...string) string {
return query.Encode()
}
+// URLWithExtraQuery creates a query based from baseUrl with queries joined between
+// current context and extraQueries.
+//
+// extraKeyValues is an alternating key-value pair.
+func (c *Context) URLWithExtraQuery(baseUrl string, extraKeyValues ...string) templ.SafeURL {
+ query := c.Request.URL.Query()
+ for i := 0; i < len(extraKeyValues); i += 2 {
+ query.Set(extraKeyValues[i], extraKeyValues[i+1])
+ }
+ return templ.SafeURL(fmt.Sprintf("%s?%s", baseUrl, query.Encode()))
+}
+
func NewContext(config *config.Config, request *http.Request) *Context {
return &Context{
Config: config,
diff --git a/views/devices/details/filter.templ b/views/devices/details/filter.templ
index 40c3123..b855881 100644
--- a/views/devices/details/filter.templ
+++ b/views/devices/details/filter.templ
@@ -42,13 +42,11 @@ templ filter(c *views.Context, data Data) {