github.com/kotovmak/go-admin@v1.1.1/examples/datamodel/posts.go (about) 1 package datamodel 2 3 import ( 4 template2 "html/template" 5 6 "github.com/kotovmak/go-admin/context" 7 "github.com/kotovmak/go-admin/modules/db" 8 "github.com/kotovmak/go-admin/plugins/admin/modules/table" 9 "github.com/kotovmak/go-admin/template" 10 "github.com/kotovmak/go-admin/template/types" 11 "github.com/kotovmak/go-admin/template/types/form" 12 editType "github.com/kotovmak/go-admin/template/types/table" 13 ) 14 15 // GetPostsTable return the model of table posts. 16 func GetPostsTable(ctx *context.Context) (postsTable table.Table) { 17 18 postsTable = table.NewDefaultTable(table.DefaultConfig().SetExportable(true)) 19 20 info := postsTable.GetInfo() 21 info.AddField("ID", "id", db.Int).FieldSortable() 22 info.AddField("Title", "title", db.Varchar) 23 info.AddField("AuthorID", "author_id", db.Varchar).FieldDisplay(func(value types.FieldModel) interface{} { 24 return template.Default(). 25 Link(). 26 SetURL("/admin/info/authors/detail?__goadmin_detail_pk=" + value.Value). 27 SetContent(template2.HTML(value.Value)). 28 OpenInNewTab(). 29 SetTabTitle("Author Detail"). 30 GetContent() 31 }) 32 info.AddField("AuthorName", "name", db.Varchar).FieldDisplay(func(value types.FieldModel) interface{} { 33 first, _ := value.Row["authors_goadmin_join_first_name"].(string) 34 last, _ := value.Row["authors_goadmin_join_last_name"].(string) 35 return first + " " + last 36 }) 37 info.AddField("AuthorFirstName", "first_name", db.Varchar).FieldJoin(types.Join{ 38 Field: "author_id", 39 JoinField: "id", 40 Table: "authors", 41 }).FieldHide() 42 info.AddField("AuthorLastName", "last_name", db.Varchar).FieldJoin(types.Join{ 43 Field: "author_id", 44 JoinField: "id", 45 Table: "authors", 46 }).FieldHide() 47 info.AddField("Description", "description", db.Varchar) 48 info.AddField("Content", "content", db.Varchar).FieldEditAble(editType.Textarea) 49 info.AddField("Date", "date", db.Varchar) 50 info.AddField("AuthorCreatedAt", "created_at", db.Varchar).FieldJoin(types.Join{ 51 Field: "author_id", 52 JoinField: "id", 53 Table: "authors", 54 }) 55 info.AddField("Created_at", "created_at", db.Varchar).FieldFilterable() 56 57 info.SetTable("posts").SetTitle("Posts").SetDescription("Posts") 58 59 formList := postsTable.GetForm() 60 formList.AddField("ID", "id", db.Int, form.Default).FieldDisplayButCanNotEditWhenUpdate().FieldDisableWhenCreate() 61 formList.AddField("Title", "title", db.Varchar, form.Text) 62 formList.AddField("Description", "description", db.Varchar, form.Text) 63 formList.AddField("Content", "content", db.Varchar, form.RichText).FieldEnableFileUpload() 64 formList.AddField("Date", "date", db.Varchar, form.Datetime) 65 formList.EnableAjax("Request Success", "Request Failed") 66 67 formList.SetTable("posts").SetTitle("Posts").SetDescription("Posts") 68 69 return 70 }