/
movie_files.go
185 lines (171 loc) · 8.16 KB
/
movie_files.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
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
package models
import (
template2 "html/template"
"github.com/GoAdminGroup/go-admin/context"
"github.com/GoAdminGroup/go-admin/modules/db"
"github.com/GoAdminGroup/go-admin/plugins/admin/modules/table"
"github.com/GoAdminGroup/go-admin/template"
"github.com/GoAdminGroup/go-admin/template/types"
"github.com/GoAdminGroup/go-admin/template/types/form"
)
func GetMovieFilesTable(ctx *context.Context) table.Table {
movieFiles := table.NewDefaultTable(table.DefaultConfigWithDriverAndConnection("sqlite", "media"))
detail := movieFiles.GetDetail().HideFilterArea()
detail.AddField("Id", "id", db.Integer).
FieldFilterable()
//detail.AddField("Created_at", "created_at", db.Datetime)
//detail.AddField("Updated_at", "updated_at", db.Datetime)
detail.AddField("Location", "location", db.Text)
detail.AddField("Filename", "filename", db.Text)
detail.AddField("Extension", "extension", db.Text)
detail.AddField("Quality_profile", "quality_profile", db.Text)
detail.AddField("Proper", "proper", db.Numeric)
detail.AddField("Extended", "extended", db.Numeric)
detail.AddField("Repack", "repack", db.Numeric)
detail.AddField("Height", "height", db.Integer)
detail.AddField("Width", "width", db.Integer)
detail.AddField("Resolution", "name", db.Text).FieldJoin(types.Join{
BaseTable: "movie_files",
TableAlias: "reso",
Field: "resolution_id",
Table: "qualities",
JoinField: "id",
}).FieldHide()
detail.AddField("Quality", "name", db.Text).FieldJoin(types.Join{
BaseTable: "movie_files",
TableAlias: "qual",
Field: "quality_id",
JoinField: "id",
Table: "qualities",
})
detail.AddField("Codec", "name", db.Text).FieldJoin(types.Join{
BaseTable: "movie_files",
TableAlias: "codec",
Field: "codec_id",
JoinField: "id",
Table: "qualities",
})
detail.AddField("Audio", "name", db.Text).FieldJoin(types.Join{
BaseTable: "movie_files",
Field: "audio_id",
JoinField: "id",
Table: "qualities",
})
detail.AddField("Listname", "listname", db.Text).FieldJoin(types.Join{
BaseTable: "movie_files",
Field: "movie_id",
JoinField: "id",
Table: "movies",
})
detail.AddField("Movie Title", "title", db.Text).FieldJoin(types.Join{
BaseTable: "movie_files",
Field: "dbmovie_id",
Table: "dbmovies",
JoinField: "id",
})
detail.AddField("Dbmovie_id", "dbmovie_id", db.Int).FieldDisplay(func(value types.FieldModel) any {
return template.Default().
Link().
SetURL("/admin/info/dbmovies/detail?__goadmin_detail_pk=" + value.Value).
SetContent(template2.HTML(value.Value)).
OpenInNewTab().
SetTabTitle(template.HTML("Movie Detail(" + value.Value + ")")).
GetContent()
})
detail.SetTable("movie_files").SetTitle("MovieFiles").SetDescription("MovieFiles")
info := movieFiles.GetInfo().HideFilterArea()
info.HideNewButton()
info.AddField("Id", "id", db.Integer).
FieldSortable()
//info.AddField("Created_at", "created_at", db.Datetime)
//info.AddField("Updated_at", "updated_at", db.Datetime)
info.AddField("Location", "location", db.Text).FieldFilterable(types.FilterType{Operator: types.FilterOperatorLike}).FieldSortable()
// info.AddField("Filename", "filename", db.Text)
// info.AddField("Extension", "extension", db.Text)
info.AddField("Quality_profile", "quality_profile", db.Text).FieldFilterable(types.FilterType{FormType: form.SelectSingle}).FieldFilterOptionsFromTable("movies", "quality_profile", "quality_profile", func(sql *db.SQL) *db.SQL { return sql.GroupBy("quality_profile") }).FieldFilterOptionExt(map[string]any{"allowClear": true}).FieldSortable()
// info.AddField("Quality_profile", "quality_profile", db.Text)
// info.AddField("Proper", "proper", db.Numeric)
// info.AddField("Extended", "extended", db.Numeric)
// info.AddField("Repack", "repack", db.Numeric)
// info.AddField("Height", "height", db.Integer)
// info.AddField("Width", "width", db.Integer)
// info.AddField("Resolution", "name", db.Text).FieldJoin(types.Join{
// BaseTable: "movie_files",
// TableAlias: "reso",
// Field: "resolution_id",
// Table: "qualities",
// JoinField: "id",
// }).FieldHide()
// info.AddField("Quality_id", "name", db.Text).FieldJoin(types.Join{
// BaseTable: "movie_files",
// TableAlias: "qual",
// Field: "quality_id",
// JoinField: "id",
// Table: "qualities",
// })
// info.AddField("Codec_id", "name", db.Text).FieldJoin(types.Join{
// BaseTable: "movie_files",
// TableAlias: "codec",
// Field: "codec_id",
// JoinField: "id",
// Table: "qualities",
// })
// info.AddField("Audio_id", "name", db.Text).FieldJoin(types.Join{
// BaseTable: "movie_files",
// Field: "audio_id",
// JoinField: "id",
// Table: "qualities",
// })
info.AddField("List", "listname", db.Text).FieldJoin(types.Join{
BaseTable: "movie_files",
Field: "movie_id",
JoinField: "id",
Table: "movies",
}).FieldFilterable(types.FilterType{FormType: form.SelectSingle}).FieldFilterOptionsFromTable("movies", "listname", "listname", func(sql *db.SQL) *db.SQL { return sql.GroupBy("listname") }).FieldFilterOptionExt(map[string]any{"allowClear": true}).FieldSortable()
info.AddField("Title", "title", db.Text).FieldJoin(types.Join{
BaseTable: "movie_files",
Field: "dbmovie_id",
Table: "dbmovies",
JoinField: "id",
}).FieldFilterable(types.FilterType{Operator: types.FilterOperatorLike}).FieldSortable()
info.AddField("Dbmovie_id", "dbmovie_id", db.Int).FieldDisplay(func(value types.FieldModel) any {
return template.Default().
Link().
SetURL("/admin/info/dbmovies/detail?__goadmin_detail_pk=" + value.Value).
SetContent(template2.HTML(value.Value)).
OpenInNewTab().
SetTabTitle(template.HTML("Movie Detail(" + value.Value + ")")).
GetContent()
})
info.SetTable("movie_files").SetTitle("MovieFiles").SetDescription("MovieFiles")
formList := movieFiles.GetForm()
formList.AddField("Id", "id", db.Integer, form.Default).FieldDisplayButCanNotEditWhenCreate().FieldDisableWhenUpdate()
//formList.AddField("Created_at", "created_at", db.Datetime, form.Datetime)
//formList.AddField("Updated_at", "updated_at", db.Datetime, form.Datetime)
formList.AddField("Location", "location", db.Text, form.Text)
formList.AddField("Filename", "filename", db.Text, form.Text)
formList.AddField("Extension", "extension", db.Text, form.Text)
formList.AddField("Quality_profile", "quality_profile", db.Text, form.SelectSingle).FieldOptionsFromTable("movies", "quality_profile", "quality_profile", func(sql *db.SQL) *db.SQL { return sql.GroupBy("quality_profile").Select("quality_profile") })
formList.AddField("Proper", "proper", db.Numeric, form.Switch).FieldOptions(types.FieldOptions{
{Text: "Yes", Value: "1"},
{Text: "No", Value: "0"},
})
formList.AddField("Extended", "extended", db.Numeric, form.Switch).FieldOptions(types.FieldOptions{
{Text: "Yes", Value: "1"},
{Text: "No", Value: "0"},
})
formList.AddField("Repack", "repack", db.Numeric, form.Switch).FieldOptions(types.FieldOptions{
{Text: "Yes", Value: "1"},
{Text: "No", Value: "0"},
}) // Set default value
formList.AddField("Height", "height", db.Integer, form.Number)
formList.AddField("Width", "width", db.Integer, form.Number)
formList.AddField("Resolution", "resolution_id", db.Integer, form.SelectSingle).FieldOptionsFromTable("qualities", "name", "id", func(sql *db.SQL) *db.SQL { return sql.Where("type", "=", "1") })
formList.AddField("Quality", "quality_id", db.Integer, form.SelectSingle).FieldOptionsFromTable("qualities", "name", "id", func(sql *db.SQL) *db.SQL { return sql.Where("type", "=", "2") })
formList.AddField("Codec", "codec_id", db.Integer, form.SelectSingle).FieldOptionsFromTable("qualities", "name", "id", func(sql *db.SQL) *db.SQL { return sql.Where("type", "=", "3") })
formList.AddField("Audio", "audio_id", db.Integer, form.SelectSingle).FieldOptionsFromTable("qualities", "name", "id", func(sql *db.SQL) *db.SQL { return sql.Where("type", "=", "4") })
formList.AddField("Movie_id", "movie_id", db.Integer, form.Number)
formList.AddField("Dbmovie_id", "dbmovie_id", db.Integer, form.SelectSingle).FieldOptionsFromTable("dbmovies", "title", "id")
formList.SetTable("movie_files").SetTitle("MovieFiles").SetDescription("MovieFiles")
return movieFiles
}