filtering.go 732 B

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. package presets
  2. import (
  3. "net/url"
  4. "github.com/qor5/web"
  5. "github.com/qor5/ui/vuetifyx"
  6. )
  7. func (b *ListingBuilder) FilterDataFunc(v FilterDataFunc) {
  8. if v == nil {
  9. b.filterDataFunc = nil
  10. return
  11. }
  12. b.filterDataFunc = func(ctx *web.EventContext) vuetifyx.FilterData {
  13. fd := v(ctx)
  14. for _, k := range fd {
  15. k.Key = "f_" + k.Key
  16. }
  17. return fd
  18. }
  19. }
  20. func (b *ListingBuilder) FilterTabsFunc(v FilterTabsFunc) {
  21. if v == nil {
  22. b.filterTabsFunc = nil
  23. return
  24. }
  25. b.filterTabsFunc = func(ctx *web.EventContext) []*FilterTab {
  26. fts := v(ctx)
  27. for _, ft := range fts {
  28. newQuery := make(url.Values)
  29. for k, _ := range ft.Query {
  30. newQuery["f_"+k] = ft.Query[k]
  31. }
  32. ft.Query = newQuery
  33. }
  34. return fts
  35. }
  36. }