Admin table contents is now using the jzed stuff instead of alpine.js

master
Zed A. Shaw 2 days ago
parent 0c09308dd4
commit 351b2d40d0
  1. 14
      admin/table/db.go
  2. 16
      admin/table/pages.go
  3. 35
      views/admin/table/contents.html

@ -8,6 +8,20 @@ import (
sq "github.com/Masterminds/squirrel"
)
func Schema(table string) []string {
the_type := data.Models()[table]
field_num := the_type.NumField()
fields := make([]string, 0, field_num)
for i := 0; i < field_num; i++ {
tag := the_type.Field(i).Name
fields = append(fields, tag)
}
return fields
}
func SearchTable(search string, table string, limit uint64, page uint64) ([]any, error) {
var results []any

@ -19,10 +19,24 @@ func GetPageSelectOne(c *fiber.Ctx) error {
})
}
func GetPageContent(c *fiber.Ctx) error {
_, err := AuthCheck(c, true)
if err != nil { return c.Redirect("/") }
table := c.Params("table")
headers := Schema(table)
return c.Render("admin/table/contents", fiber.Map{
"table": table,
"headers": headers,
})
}
func SetupPages(app *fiber.App) {
AddAuthedPage(app, true, "admin/table/", "admin/table/index")
AddAuthedPage(app, true, "admin/table/:table/", "admin/table/contents")
AddAuthedPage(app, true, "admin/table/new/:table/", "admin/table/new")
app.Get("admin/table/:table/", GetPageContent)
app.Get("/admin/table/:table/:id/", GetPageSelectOne)
}

@ -1,21 +1,9 @@
<script>
let thePage = new PaginateTable("/api/admin/table/{{ .table }}");
const craftTemplate = (example) => {
const tmpl = $id('table-row');
const tr = tmpl.content.children[0];
for(let header of Object.keys(example)) {
$append(tr,
$html("<td><a style='text-decoration: none' href='/admin/table/{{.table}}/${item.Id}/'>${item['" + header + "']}</a></td>"));
}
return tmpl;
}
$boot(async () => {
const items = await thePage.contents();
const tmpl = craftTemplate(items[0]);
const tmpl = $id('table-row');
const rows = $id('table-items');
for(let item of items) {
@ -35,10 +23,27 @@
<input type="text" name="search" size="40" placeholder="Search" />
</bar>
<table id="table-items">
<table>
<thead>
<tr>
{{ range $header := .headers }}
<th>{{ $header }}</th>
{{ end }}
</tr>
</thead>
<tbody id="table-items">
</tbody>
</table>
<template id="table-row">
<tr class="table-row"></tr>
<tr class="table-row">
{{ range $header := .headers }}
<td>
<a style='text-decoration: none' href='/admin/table/{{ $.table }}/${item.Id}/'>
${item["{{$header}}"]}
</a>
</td>
{{ end }}
</tr>
</template>
</block>

Loading…
Cancel
Save