table.go 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. package pages
  2. import (
  3. "fmt"
  4. "github.com/GoAdminGroup/go-admin/context"
  5. "github.com/GoAdminGroup/go-admin/modules/config"
  6. "github.com/GoAdminGroup/go-admin/plugins/admin/modules/paginator"
  7. "github.com/GoAdminGroup/go-admin/plugins/admin/modules/parameter"
  8. "github.com/GoAdminGroup/go-admin/template"
  9. "github.com/GoAdminGroup/go-admin/template/icon"
  10. "github.com/GoAdminGroup/go-admin/template/types"
  11. "github.com/GoAdminGroup/go-admin/template/types/action"
  12. )
  13. func GetTableContent(ctx *context.Context) (types.Panel, error) {
  14. comp := template.Get(ctx, config.GetTheme())
  15. table := comp.DataTable().
  16. SetInfoList([]map[string]types.InfoItem{
  17. {
  18. "id": {Content: "0"},
  19. "name": {Content: "Jack"},
  20. "gender": {Content: "men"},
  21. "age": {Content: "20"},
  22. },
  23. {
  24. "id": {Content: "1"},
  25. "name": {Content: "Jane"},
  26. "gender": {Content: "women"},
  27. "age": {Content: "23"},
  28. },
  29. }).
  30. SetPrimaryKey("id").
  31. SetThead(types.Thead{
  32. {Head: "ID", Field: "id"},
  33. {Head: "Name", Field: "name"},
  34. {Head: "Gender", Field: "gender"},
  35. {Head: "Age", Field: "age"},
  36. })
  37. allBtns := make(types.Buttons, 0)
  38. // Add a ajax button action
  39. allBtns = append(allBtns, types.GetDefaultButton("Click me", icon.ArrowLeft, action.Ajax("ajax_id",
  40. func(ctx *context.Context) (success bool, msg string, data interface{}) {
  41. fmt.Println("ctx request", ctx.FormValue("id"))
  42. return true, "ok", nil
  43. })))
  44. btns, btnsJs := allBtns.Content(ctx)
  45. table = table.SetButtons(btns).SetActionJs(btnsJs)
  46. cbs := make(types.Callbacks, 0)
  47. for _, btn := range allBtns {
  48. cbs = append(cbs, btn.GetAction().GetCallbacks())
  49. }
  50. body := table.GetContent()
  51. return types.Panel{
  52. Content: comp.Box().
  53. SetBody(body).
  54. SetNoPadding().
  55. SetHeader(table.GetDataTableHeader()).
  56. WithHeadBorder().
  57. SetFooter(paginator.Get(ctx, paginator.Config{
  58. Size: 50,
  59. PageSizeList: []string{"10", "20", "30", "50"},
  60. Param: parameter.GetParam(ctx.Request.URL, 10),
  61. }).GetContent()).
  62. GetContent(),
  63. Title: "Table",
  64. Description: "table example",
  65. Callbacks: cbs,
  66. }, nil
  67. }