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"
|
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{}
|
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 }
|
if err != nil { return results, err }
|
||||||
|
|
||||||
rows, err := data.DB.Queryx(sql_query, args...)
|
rows, err := data.DB.Queryx(sql_query, args...)
|
||||||
|
|
|
@ -2,7 +2,6 @@ package admin
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"maps"
|
"maps"
|
||||||
"strconv"
|
|
||||||
"reflect"
|
"reflect"
|
||||||
"fmt"
|
"fmt"
|
||||||
"github.com/gofiber/fiber/v2"
|
"github.com/gofiber/fiber/v2"
|
||||||
|
@ -23,10 +22,13 @@ func GetApiTableIndex(c *fiber.Ctx) error {
|
||||||
func GetApiSelectAll(c *fiber.Ctx) error {
|
func GetApiSelectAll(c *fiber.Ctx) error {
|
||||||
table := c.Params("table")
|
table := c.Params("table")
|
||||||
if table == "" { return c.Redirect("/admin/") }
|
if table == "" { return c.Redirect("/admin/") }
|
||||||
|
|
||||||
type_is := data.Models()[table]
|
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) }
|
if err != nil { return IfErrNil(err, c) }
|
||||||
|
|
||||||
return c.JSON(result)
|
return c.JSON(result)
|
||||||
|
@ -38,12 +40,12 @@ func GetPageSelectAll(c *fiber.Ctx) error {
|
||||||
|
|
||||||
func GetApiSelectOne(c *fiber.Ctx) error {
|
func GetApiSelectOne(c *fiber.Ctx) error {
|
||||||
table := c.Params("table")
|
table := c.Params("table")
|
||||||
id, err := strconv.ParseInt(c.Params("id"), 10, 64)
|
id, err := c.ParamsInt("id", -1)
|
||||||
if err != nil { return IfErrNil(err, c) }
|
if err != nil || id < 0 { return IfErrNil(err, c) }
|
||||||
|
|
||||||
type_is := data.Models()[table]
|
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) }
|
if err != nil { return IfErrNil(err, c) }
|
||||||
|
|
||||||
return c.JSON(result.Interface())
|
return c.JSON(result.Interface())
|
||||||
|
@ -51,8 +53,8 @@ func GetApiSelectOne(c *fiber.Ctx) error {
|
||||||
|
|
||||||
func GetPageSelectOne(c *fiber.Ctx) error {
|
func GetPageSelectOne(c *fiber.Ctx) error {
|
||||||
table := c.Params("table")
|
table := c.Params("table")
|
||||||
id, err := strconv.ParseInt(c.Params("id"), 10, 64)
|
id, err := c.ParamsInt("id", -1)
|
||||||
if err != nil { return IfErrNil(err, c) }
|
if err != nil || id < 0 { return IfErrNil(err, c) }
|
||||||
|
|
||||||
return c.Render("admin/table/view", fiber.Map{
|
return c.Render("admin/table/view", fiber.Map{
|
||||||
"Table": table,
|
"Table": table,
|
||||||
|
@ -100,10 +102,10 @@ func PostApiInsert(c *fiber.Ctx) error {
|
||||||
func DeleteApi(c *fiber.Ctx) error {
|
func DeleteApi(c *fiber.Ctx) error {
|
||||||
table := c.Params("table")
|
table := c.Params("table")
|
||||||
|
|
||||||
id, err := strconv.ParseInt(c.Params("id"), 10, 64)
|
id, err := c.ParamsInt("id", -1)
|
||||||
if err != nil { return IfErrNil(err, c) }
|
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) }
|
if err != nil { return IfErrNil(err, c) }
|
||||||
|
|
||||||
return c.JSON(fiber.Map{})
|
return c.JSON(fiber.Map{})
|
||||||
|
|
|
@ -1,13 +1,25 @@
|
||||||
<script>
|
<script>
|
||||||
let Tables = new GetJson("/api/admin/table/{{ .Table }}/")
|
let page = 0;
|
||||||
console.log("Tables", Tables)
|
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>
|
</script>
|
||||||
|
|
||||||
<blockstart>
|
<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)">
|
||||||
<button type="button"><a href="/admin/new/table/{{ .Table }}/">New</a></button>
|
<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>
|
<table>
|
||||||
<template x-for="item in theData">
|
<template x-for="item in theData">
|
||||||
<tr>
|
<tr>
|
||||||
|
@ -22,10 +34,6 @@
|
||||||
</tr>
|
</tr>
|
||||||
</template>
|
</template>
|
||||||
</table>
|
</table>
|
||||||
<block class="horizontal">
|
|
||||||
<a href="/admin/table/{{.Table}}/?page=2">Prev</a>
|
|
||||||
<a href="/admin/table/{{.Table}}/?page=2">Next</a>
|
|
||||||
</block>
|
|
||||||
</block>
|
</block>
|
||||||
|
|
||||||
</blockstart>
|
</blockstart>
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue