form.go 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174
  1. package pages
  2. import (
  3. "github.com/GoAdminGroup/go-admin/context"
  4. "github.com/GoAdminGroup/go-admin/modules/config"
  5. "github.com/GoAdminGroup/go-admin/modules/db"
  6. "github.com/GoAdminGroup/go-admin/modules/language"
  7. form2 "github.com/GoAdminGroup/go-admin/plugins/admin/modules/form"
  8. template2 "github.com/GoAdminGroup/go-admin/template"
  9. "github.com/GoAdminGroup/go-admin/template/icon"
  10. "github.com/GoAdminGroup/go-admin/template/types"
  11. "github.com/GoAdminGroup/go-admin/template/types/form"
  12. )
  13. func GetFormContent(ctx *context.Context) (types.Panel, error) {
  14. components := template2.Get(ctx, config.GetTheme())
  15. col1 := components.Col().GetContent()
  16. btn1 := components.Button().SetType("submit").
  17. SetContent(language.GetFromHtml("Save")).
  18. SetThemePrimary().
  19. SetOrientationRight().
  20. SetLoadingText(icon.Icon("fa-spinner fa-spin", 2) + `Save`).
  21. GetContent()
  22. btn2 := components.Button().SetType("reset").
  23. SetContent(language.GetFromHtml("Reset")).
  24. SetThemeWarning().
  25. SetOrientationLeft().
  26. GetContent()
  27. col2 := components.Col().SetSize(types.SizeMD(8)).
  28. SetContent(btn1 + btn2).GetContent()
  29. var panel = types.NewFormPanel()
  30. panel.AddField("Name", "name", db.Varchar, form.Text)
  31. panel.AddField("Age", "age", db.Int, form.Number)
  32. panel.AddField("HomePage", "homepage", db.Varchar, form.Url).FieldDefault("http://google.com")
  33. panel.AddField("Email", "email", db.Varchar, form.Email).FieldDefault("xxxx@xxx.com")
  34. panel.AddField("Birthday", "birthday", db.Varchar, form.Date).FieldDefault("2010-09-03 18:09:05")
  35. panel.AddField("Time", "time", db.Varchar, form.Datetime).FieldDefault("2010-09-05")
  36. panel.AddField("Time Range", "time_range", db.Varchar, form.DatetimeRange)
  37. panel.AddField("Date Range", "date_range", db.Varchar, form.DateRange)
  38. panel.AddField("Password", "password", db.Varchar, form.Password).FieldDivider("Divider line")
  39. panel.AddField("IP", "ip", db.Varchar, form.Ip)
  40. panel.AddField("Certificate", "certificate", db.Varchar, form.Multifile).FieldOptionExt(map[string]interface{}{
  41. "maxFileCount": 10,
  42. })
  43. panel.AddField("Money", "currency", db.Int, form.Currency)
  44. panel.AddField("Rate", "rate", db.Int, form.Rate)
  45. panel.AddField("Reward", "reward", db.Int, form.Slider).FieldOptionExt(map[string]interface{}{
  46. "max": 1000,
  47. "min": 1,
  48. "step": 1,
  49. "postfix": "$",
  50. })
  51. panel.AddField("Content", "content", db.Text, form.RichText).
  52. FieldDefault(`<h1>343434</h1><p>34344433434</p><ol><li>23234</li><li>2342342342</li><li>asdfads</li></ol><ul><li>3434334</li><li>34343343434</li><li>44455</li></ul><p><span style="color: rgb(194, 79, 74);">343434</span></p><p><span style="background-color: rgb(194, 79, 74); color: rgb(0, 0, 0);">434434433434</span></p><table border="0" width="100%" cellpadding="0" cellspacing="0"><tbody><tr><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr><tr><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr><tr><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr><tr><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr></tbody></table><p><br></p><p><span style="color: rgb(194, 79, 74);"><br></span></p>`).
  53. FieldDivider("Divider line No2")
  54. panel.AddField("Code", "code", db.Text, form.Code).FieldDefault(`package main
  55. import "fmt"
  56. func main() {
  57. fmt.Println("hello GoAdmin!")
  58. }
  59. `)
  60. panel.AddField("Website", "website", db.Tinyint, form.Switch).
  61. FieldHelpMsg("The Website will not be able to access after closing, the admin system still can login").
  62. FieldOptions(types.FieldOptions{
  63. {Value: "0"},
  64. {Value: "1"},
  65. })
  66. panel.AddField("Fruit", "fruit", db.Varchar, form.SelectBox).
  67. FieldOptions(types.FieldOptions{
  68. {Text: "Apple", Value: "apple"},
  69. {Text: "Banana", Value: "banana"},
  70. {Text: "Watermelon", Value: "watermelon"},
  71. {Text: "Pear", Value: "pear"},
  72. }).
  73. FieldDisplay(func(value types.FieldModel) interface{} {
  74. return []string{"Pear"}
  75. })
  76. panel.AddField("Gender", "gender", db.Tinyint, form.Radio).
  77. FieldOptions(types.FieldOptions{
  78. {Text: "Men", Value: "0"},
  79. {Text: "Women", Value: "1"},
  80. })
  81. panel.AddField("Drink", "drink", db.Tinyint, form.Select).
  82. FieldOptions(types.FieldOptions{
  83. {Text: "Beer", Value: "beer"},
  84. {Text: "Juice", Value: "juice"},
  85. {Text: "Water", Value: "water"},
  86. {Text: "Red Bull", Value: "red bull"},
  87. }).FieldDefault("beer")
  88. panel.AddField("Work Experience", "experience", db.Tinyint, form.SelectSingle).
  89. FieldOptions(types.FieldOptions{
  90. {Text: "two years", Value: "0"},
  91. {Text: "three years", Value: "1"},
  92. {Text: "four years", Value: "2"},
  93. {Text: "five years", Value: "3"},
  94. }).FieldDefault("beer")
  95. panel.AddField("Snacks", "snacks", db.Varchar, form.Checkbox).
  96. FieldOptions(types.FieldOptions{
  97. {Text: "cereal", Value: "0"},
  98. {Text: "chips", Value: "1"},
  99. {Text: "spicy strip", Value: "2"},
  100. {Text: "ice cream", Value: "3"},
  101. })
  102. panel.AddField("Cat", "cat", db.Varchar, form.CheckboxStacked).
  103. FieldOptions(types.FieldOptions{
  104. {Text: "Garfield", Value: "0"},
  105. {Text: "British Shorthair", Value: "1"},
  106. {Text: "American Shorthair", Value: "2"},
  107. })
  108. panel.AddRow(func(pa *types.FormPanel) {
  109. panel.AddField("Province", "province", db.Tinyint, form.SelectSingle).
  110. FieldOptions(types.FieldOptions{
  111. {Text: "Beijing", Value: "0"},
  112. {Text: "Shanghai", Value: "1"},
  113. {Text: "GuangDong", Value: "2"},
  114. {Text: "ChongQing", Value: "3"},
  115. }).FieldRowWidth(2)
  116. panel.AddField("City", "city", db.Tinyint, form.SelectSingle).
  117. FieldOptions(types.FieldOptions{
  118. {Text: "Beijing", Value: "0"},
  119. {Text: "Shanghai", Value: "1"},
  120. {Text: "GuangZhou", Value: "2"},
  121. {Text: "ShenZhen", Value: "3"},
  122. }).FieldRowWidth(3).FieldHeadWidth(2).FieldInputWidth(10)
  123. panel.AddField("District", "district", db.Tinyint, form.SelectSingle).
  124. FieldOptions(types.FieldOptions{
  125. {Text: "ChaoYang", Value: "0"},
  126. {Text: "HaiZhu", Value: "1"},
  127. {Text: "PuDong", Value: "2"},
  128. {Text: "BaoAn", Value: "3"},
  129. }).FieldRowWidth(3).FieldHeadWidth(2).FieldInputWidth(9)
  130. })
  131. panel.AddField("Employee", "employee", db.Varchar, form.Array)
  132. panel.AddTable("Setting", "setting", func(panel *types.FormPanel) {
  133. panel.AddField("Key", "key", db.Varchar, form.Text).FieldHideLabel()
  134. panel.AddField("Value", "value", db.Varchar, form.Text).FieldHideLabel()
  135. })
  136. panel.SetTabGroups(types.TabGroups{
  137. {"name", "age", "homepage", "email", "birthday", "time", "time_range", "date_range", "password", "ip",
  138. "certificate", "currency", "rate", "reward", "content", "code"},
  139. {"website", "snacks", "fruit", "gender", "cat", "drink", "province", "city", "district", "experience"},
  140. {"employee", "setting"},
  141. })
  142. panel.SetTabHeaders("input", "select", "multi")
  143. fields, headers := panel.GroupField()
  144. aform := components.Form().
  145. SetTabHeaders(headers).
  146. SetTabContents(fields).
  147. SetPrefix(config.PrefixFixSlash()).
  148. SetUrl("/admin/form/update").
  149. SetTitle("Form").
  150. SetHiddenFields(map[string]string{
  151. form2.PreviousKey: "/admin",
  152. }).
  153. SetOperationFooter(col1 + col2)
  154. return types.Panel{
  155. Content: components.Box().
  156. SetHeader(aform.GetDefaultBoxHeader(true)).
  157. WithHeadBorder().
  158. SetBody(aform.GetContent()).
  159. GetContent(),
  160. Title: "Form",
  161. Callbacks: panel.Callbacks,
  162. Description: "form example",
  163. }, nil
  164. }