-
-
Notifications
You must be signed in to change notification settings - Fork 1.3k
/
fieldfilter.go
75 lines (63 loc) · 1.78 KB
/
fieldfilter.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
package action
import (
"html/template"
"github.com/GoAdminGroup/go-admin/context"
"github.com/GoAdminGroup/go-admin/plugins/admin/modules/form"
"github.com/GoAdminGroup/go-admin/plugins/admin/modules/parameter"
"github.com/GoAdminGroup/go-admin/template/types"
)
type FieldFilterAction struct {
BaseAction
Field string
}
func FieldFilter(field string) *FieldFilterAction {
return &FieldFilterAction{Field: field}
}
func (jump *FieldFilterAction) ExtContent(ctx *context.Context) template.HTML {
options := jump.BtnData.(types.FieldOptions)
cm := ``
for _, obejct := range options {
cm += `if (e.params.data.text === "` + obejct.Text + `") {
$.pjax({url: setURL("` + jump.Field + `", "` + obejct.Value + `"), container: '#pjax-container'});
}`
}
return template.HTML(`<script>
$("select` + jump.BtnId + `").on("select2:select",function(e){
let setURL = function(field, value) {
let vars = window.location.search.substring(1).split("&");
let params = "";
let has = false;
for (let i = 0; i < vars.length; i++) {
pair = vars[i].split("=");
if (pair[0] == "` + parameter.Page + `") {
continue
} else if (pair[0] === field) {
has = true
params += field + "=" + value + "&"
} else if (pair[0] !== "` + form.NoAnimationKey + `") {
params += vars[i] + "&"
}
}
if (!has) {
params += field + "=" + value + "&` + form.NoAnimationKey + `=true"
} else {
params += "` + form.NoAnimationKey + `=true"
}
return window.location.pathname + "?" + params
}
` + cm + `
})
vv = ""
query = window.location.search.substring(1);
vars = query.split("&");
for (let i = 0; i < vars.length; i++) {
pair = vars[i].split("=");
if (pair[0] === "` + jump.Field + `") {
vv = pair[1];
}
}
if (vv !== "") {
$("` + jump.BtnId + `").val(vv).select2()
}
</script>`)
}