form.go 7.2 KB

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