Almost have pagination working. On the backend it works but I can't figure out how to make alpine do the request and update.
This commit is contained in:
parent
c8ece708c3
commit
52e92a3814
3 changed files with 32 additions and 22 deletions
|
@ -8,9 +8,9 @@ import (
|
|||
sq "github.com/Masterminds/squirrel"
|
||||
)
|
||||
|
||||
func SelectTable(table string, the_type reflect.Type, limit uint64, offset uint64) ([]interface{}, error) {
|
||||
func SelectTable(table string, the_type reflect.Type, limit uint64, page uint64) ([]interface{}, error) {
|
||||
var results []interface{}
|
||||
sql_query, args, err := sq.Select("*").Limit(limit).Offset(offset).From(table).ToSql()
|
||||
sql_query, args, err := sq.Select("*").Limit(limit).Offset(limit * page).From(table).ToSql()
|
||||
if err != nil { return results, err }
|
||||
|
||||
rows, err := data.DB.Queryx(sql_query, args...)
|
||||
|
|
|
@ -2,7 +2,6 @@ package admin
|
|||
|
||||
import (
|
||||
"maps"
|
||||
"strconv"
|
||||
"reflect"
|
||||
"fmt"
|
||||
"github.com/gofiber/fiber/v2"
|
||||
|
@ -23,10 +22,13 @@ func GetApiTableIndex(c *fiber.Ctx) error {
|
|||
func GetApiSelectAll(c *fiber.Ctx) error {
|
||||
table := c.Params("table")
|
||||
if table == "" { return c.Redirect("/admin/") }
|
||||
|
||||
type_is := data.Models()[table]
|
||||
|
||||
result, err := SelectTable(table, type_is, 20, 0);
|
||||
page := c.QueryInt("page", 0)
|
||||
fmt.Println("-------------------------", page)
|
||||
if page < 0 { page = 0 }
|
||||
|
||||
result, err := SelectTable(table, type_is, 20, uint64(page));
|
||||
if err != nil { return IfErrNil(err, c) }
|
||||
|
||||
return c.JSON(result)
|
||||
|
@ -38,12 +40,12 @@ func GetPageSelectAll(c *fiber.Ctx) error {
|
|||
|
||||
func GetApiSelectOne(c *fiber.Ctx) error {
|
||||
table := c.Params("table")
|
||||
id, err := strconv.ParseInt(c.Params("id"), 10, 64)
|
||||
if err != nil { return IfErrNil(err, c) }
|
||||
id, err := c.ParamsInt("id", -1)
|
||||
if err != nil || id < 0 { return IfErrNil(err, c) }
|
||||
|
||||
type_is := data.Models()[table]
|
||||
|
||||
result, err := Get(table, type_is, id)
|
||||
result, err := Get(table, type_is, int64(id))
|
||||
if err != nil { return IfErrNil(err, c) }
|
||||
|
||||
return c.JSON(result.Interface())
|
||||
|
@ -51,8 +53,8 @@ func GetApiSelectOne(c *fiber.Ctx) error {
|
|||
|
||||
func GetPageSelectOne(c *fiber.Ctx) error {
|
||||
table := c.Params("table")
|
||||
id, err := strconv.ParseInt(c.Params("id"), 10, 64)
|
||||
if err != nil { return IfErrNil(err, c) }
|
||||
id, err := c.ParamsInt("id", -1)
|
||||
if err != nil || id < 0 { return IfErrNil(err, c) }
|
||||
|
||||
return c.Render("admin/table/view", fiber.Map{
|
||||
"Table": table,
|
||||
|
@ -100,10 +102,10 @@ func PostApiInsert(c *fiber.Ctx) error {
|
|||
func DeleteApi(c *fiber.Ctx) error {
|
||||
table := c.Params("table")
|
||||
|
||||
id, err := strconv.ParseInt(c.Params("id"), 10, 64)
|
||||
if err != nil { return IfErrNil(err, c) }
|
||||
id, err := c.ParamsInt("id", -1)
|
||||
if err != nil || id < 0 { return IfErrNil(err, c) }
|
||||
|
||||
err = Delete(table, id)
|
||||
err = Delete(table, int64(id))
|
||||
if err != nil { return IfErrNil(err, c) }
|
||||
|
||||
return c.JSON(fiber.Map{})
|
||||
|
|
|
@ -1,13 +1,25 @@
|
|||
<script>
|
||||
let Tables = new GetJson("/api/admin/table/{{ .Table }}/")
|
||||
console.log("Tables", Tables)
|
||||
let page = 0;
|
||||
let Tables = new GetJson(`/api/admin/table/{{ .Table }}/?page=${page}`);
|
||||
|
||||
const newPage = (new_page_num) => {
|
||||
console.log("the function");
|
||||
page = new_page_num;
|
||||
new GetJson(`/api/admin/table/{{ .Table }}/?page=${page}`);
|
||||
}
|
||||
</script>
|
||||
|
||||
<blockstart>
|
||||
<h1>Admin Tables</h1>
|
||||
<h1><a href="/admin/table/">«</a> Admin {{ .Table }}</h1>
|
||||
|
||||
<block x-data="Tables">
|
||||
<block x-data="Tables" x-effect="newPage(page)">
|
||||
<block class="horizontal">
|
||||
<button type="button"><a href="/admin/new/table/{{ .Table }}/">New</a></button>
|
||||
<button type="button" @click="page -= 1">Prev</button>
|
||||
<button type="button" @click="page += 1">Next</button>
|
||||
<input type="text" name="search" size="35" placeholder="Search" />
|
||||
<button type="button">Search</button>
|
||||
</block>
|
||||
<table>
|
||||
<template x-for="item in theData">
|
||||
<tr>
|
||||
|
@ -22,10 +34,6 @@
|
|||
</tr>
|
||||
</template>
|
||||
</table>
|
||||
<block class="horizontal">
|
||||
<a href="/admin/table/{{.Table}}/?page=2">Prev</a>
|
||||
<a href="/admin/table/{{.Table}}/?page=2">Next</a>
|
||||
</block>
|
||||
</block>
|
||||
|
||||
</blockstart>
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue