package tables import ( "fmt" "strings" "github.com/GoAdminGroup/go-admin/context" "github.com/GoAdminGroup/go-admin/modules/config" "github.com/GoAdminGroup/go-admin/modules/db" "github.com/GoAdminGroup/go-admin/plugins/admin/modules/table" "github.com/GoAdminGroup/go-admin/template/icon" "github.com/GoAdminGroup/go-admin/template/types" "github.com/GoAdminGroup/go-admin/template/types/action" "github.com/GoAdminGroup/go-admin/template/types/form" selection "github.com/GoAdminGroup/go-admin/template/types/form/select" editType "github.com/GoAdminGroup/go-admin/template/types/table" ) // GetUserTable return the model of table user. func GetUserTable(ctx *context.Context) (userTable table.Table) { userTable = table.NewDefaultTable(ctx, table.Config{ Driver: config.GetDatabases().GetDefault().Driver, CanAdd: true, Editable: true, Deletable: true, Exportable: true, Connection: table.DefaultConnectionName, PrimaryKey: table.PrimaryKey{ Type: db.Int, Name: table.DefaultPrimaryKeyName, }, }) info := userTable.GetInfo().SetFilterFormLayout(form.LayoutThreeCol).Where("gender", "=", 0) info.AddField("ID", "id", db.Int).FieldSortable() info.AddField("Name", "name", db.Varchar).FieldEditAble(editType.Text). FieldFilterable(types.FilterType{Operator: types.FilterOperatorLike}) info.AddField("Gender", "gender", db.Tinyint).FieldDisplay(func(model types.FieldModel) interface{} { if model.Value == "0" { return "men" } if model.Value == "1" { return "women" } return "unknown" }).FieldEditAble(editType.Switch).FieldEditOptions(types.FieldOptions{ {Value: "0", Text: "👦"}, {Value: "1", Text: "👧"}, }).FieldFilterable(types.FilterType{FormType: form.SelectSingle}).FieldFilterOptions(types.FieldOptions{ {Value: "0", Text: "men"}, {Value: "1", Text: "women"}, }) info.AddField("Experience", "experience", db.Tinyint). FieldFilterable(types.FilterType{FormType: form.Radio}). FieldFilterOptions(types.FieldOptions{ {Value: "0", Text: "one"}, {Value: "1", Text: "two"}, {Value: "3", Text: "three"}, }).FieldHide() info.AddField("Drink", "drink", db.Tinyint). FieldFilterable(types.FilterType{FormType: form.Select}). FieldFilterOptions(types.FieldOptions{ {Value: "water", Text: "water"}, {Value: "juice", Text: "juice"}, {Value: "red bull", Text: "red bull"}, }).FieldHide() info.AddField("City", "city", db.Varchar).FieldFilterable() info.AddField("Book", "name", db.Varchar).FieldJoin(types.Join{ JoinField: "user_id", Field: "id", Table: "user_like_books", }) info.AddField("Avatar", "avatar", db.Varchar).FieldDisplay(func(value types.FieldModel) interface{} { return "1231" }) info.AddField("CreatedAt", "created_at", db.Timestamp). FieldFilterable(types.FilterType{FormType: form.DatetimeRange}) info.AddField("UpdatedAt", "updated_at", db.Timestamp).FieldEditAble(editType.Datetime) // =========================== // Buttons // =========================== info.AddActionButton(ctx, "google", action.Jump("https://google.com")) info.AddActionButton(ctx, "Audit", action.Ajax("/admin/audit", func(ctx *context.Context) (success bool, msg string, data interface{}) { fmt.Println("PostForm", ctx.PostForm()) return true, "success", "" })) info.AddActionButton(ctx, "Preview", action.PopUp("/admin/preview", "Preview", func(ctx *context.Context) (success bool, msg string, data interface{}) { return true, "", "

preview content

" })) info.AddButton(ctx, "jump", icon.User, action.JumpInNewTab("/admin/info/authors", "authors")) info.AddButton(ctx, "popup", icon.Terminal, action.PopUp("/admin/popup", "Popup Example", func(ctx *context.Context) (success bool, msg string, data interface{}) { return true, "", "

hello world

" })) info.AddButton(ctx, "ajax", icon.Android, action.Ajax("/admin/ajax", func(ctx *context.Context) (success bool, msg string, data interface{}) { return true, "Oh li get", "" })) info.AddSelectBox(ctx, "gender", types.FieldOptions{ {Value: "0", Text: "men"}, {Value: "1", Text: "women"}, }, action.FieldFilter("gender")) info.SetTable("users").SetTitle("Users").SetDescription("Users") formList := userTable.GetForm() formList.AddField("Name", "name", db.Varchar, form.Text) formList.AddField("Age", "age", db.Int, form.Number) formList.AddField("Homepage", "homepage", db.Varchar, form.Url).FieldDefault("http://google.com") formList.AddField("Email", "email", db.Varchar, form.Email).FieldDefault("xxxx@xxx.com") formList.AddField("Birthday", "birthday", db.Varchar, form.Datetime).FieldDefault("2010-09-05") formList.AddField("Password", "password", db.Varchar, form.Password) formList.AddField("IP", "ip", db.Varchar, form.Ip) formList.AddField("Cert", "certificate", db.Varchar, form.Multifile).FieldOptionExt(map[string]interface{}{ "maxFileCount": 10, }) formList.AddField("Amount", "money", db.Int, form.Currency) formList.AddField("Content", "resume", db.Text, form.RichText). FieldDefault(`

343434

34344433434

  1. 23234
  2. 2342342342
  3. asdfads

343434

434434433434

   
   
   
   



`) formList.AddField("Switch", "website", db.Tinyint, form.Switch). FieldHelpMsg("Will not be able to access when the site was off"). FieldOptions(types.FieldOptions{ {Value: "0"}, {Value: "1"}, }) formList.AddField("Fruit", "fruit", db.Varchar, form.SelectBox). FieldOptions(types.FieldOptions{ {Text: "Apple", Value: "apple"}, {Text: "Banana", Value: "banana"}, {Text: "Watermelon", Value: "watermelon"}, {Text: "Pear", Value: "pear"}, }). FieldDisplay(func(value types.FieldModel) interface{} { return []string{"Pear"} }) formList.AddField("Country", "country", db.Tinyint, form.SelectSingle). FieldOptions(types.FieldOptions{ {Text: "China", Value: "china"}, {Text: "America", Value: "america"}, {Text: "England", Value: "england"}, {Text: "Canada", Value: "canada"}, }).FieldDefault("china").FieldOnChooseAjax("city", "/choose/country", func(ctx *context.Context) (bool, string, interface{}) { country := ctx.FormValue("value") var data = make(selection.Options, 0) switch country { case "china": data = selection.Options{ {Text: "Beijing", ID: "beijing"}, {Text: "ShangHai", ID: "shanghai"}, {Text: "GuangZhou", ID: "guangzhou"}, {Text: "ShenZhen", ID: "shenzhen"}, } case "america": data = selection.Options{ {Text: "Los Angeles", ID: "los angeles"}, {Text: "Washington, dc", ID: "washington, dc"}, {Text: "New York", ID: "new york"}, {Text: "Las Vegas", ID: "las vegas"}, } case "england": data = selection.Options{ {Text: "London", ID: "london"}, {Text: "Cambridge", ID: "cambridge"}, {Text: "Manchester", ID: "manchester"}, {Text: "Liverpool", ID: "liverpool"}, } case "canada": data = selection.Options{ {Text: "Vancouver", ID: "vancouver"}, {Text: "Toronto", ID: "toronto"}, } default: data = selection.Options{ {Text: "Beijing", ID: "beijing"}, {Text: "ShangHai", ID: "shangHai"}, {Text: "GuangZhou", ID: "guangzhou"}, {Text: "ShenZhen", ID: "shenZhen"}, } } return true, "ok", data }) formList.AddField("City", "city", db.Varchar, form.SelectSingle). FieldOptionInitFn(func(val types.FieldModel) types.FieldOptions { return types.FieldOptions{ {Value: val.Value, Text: val.Value, Selected: true}, } }).FieldOptions(types.FieldOptions{ {Text: "Beijing", Value: "beijing"}, {Text: "ShangHai", Value: "shanghai"}, {Text: "GuangZhou", Value: "guangzhou"}, {Text: "ShenZhen", Value: "shenzhen"}, }) formList.AddField("Gender", "gender", db.Tinyint, form.Radio). FieldOptions(types.FieldOptions{ {Text: "Boy", Value: "0"}, {Text: "Girl", Value: "1"}, }) formList.AddField("Drink", "drink", db.Varchar, form.Select). FieldOptions(types.FieldOptions{ {Text: "Beer", Value: "beer"}, {Text: "Juice", Value: "juice"}, {Text: "Water", Value: "water"}, {Text: "Red bull", Value: "red bull"}, }). FieldDefault("beer"). FieldDisplay(func(value types.FieldModel) interface{} { return strings.Split(value.Value, ",") }). FieldPostFilterFn(func(value types.PostFieldModel) interface{} { return strings.Join(value.Value, ",") }) formList.AddField("Work Experience", "experience", db.Tinyint, form.SelectSingle). FieldOptions(types.FieldOptions{ {Text: "two years", Value: "0"}, {Text: "three years", Value: "1"}, {Text: "four years", Value: "2"}, {Text: "five years", Value: "3"}, }).FieldDefault("beer") formList.SetTabGroups(types.TabGroups{ {"name", "age", "homepage", "email", "birthday", "password", "ip", "certificate", "money", "resume"}, {"website", "fruit", "country", "city", "gender", "drink", "experience"}, }) formList.SetTabHeaders("input", "select") formList.SetTable("users").SetTitle("Users").SetDescription("Users") return }