maintenance_config_schema_templ.go 32 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622
  1. // Code generated by templ - DO NOT EDIT.
  2. // templ: version: v0.3.906
  3. package app
  4. //lint:file-ignore SA4006 This context is only used if a nested component is present.
  5. import "github.com/a-h/templ"
  6. import templruntime "github.com/a-h/templ/runtime"
  7. import (
  8. "fmt"
  9. "github.com/seaweedfs/seaweedfs/weed/admin/config"
  10. "github.com/seaweedfs/seaweedfs/weed/admin/maintenance"
  11. "github.com/seaweedfs/seaweedfs/weed/admin/view/components"
  12. )
  13. func MaintenanceConfigSchema(data *maintenance.MaintenanceConfigData, schema *maintenance.MaintenanceConfigSchema) templ.Component {
  14. return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
  15. templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
  16. if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
  17. return templ_7745c5c3_CtxErr
  18. }
  19. templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
  20. if !templ_7745c5c3_IsBuffer {
  21. defer func() {
  22. templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
  23. if templ_7745c5c3_Err == nil {
  24. templ_7745c5c3_Err = templ_7745c5c3_BufErr
  25. }
  26. }()
  27. }
  28. ctx = templ.InitializeContext(ctx)
  29. templ_7745c5c3_Var1 := templ.GetChildren(ctx)
  30. if templ_7745c5c3_Var1 == nil {
  31. templ_7745c5c3_Var1 = templ.NopComponent
  32. }
  33. ctx = templ.ClearChildren(ctx)
  34. templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 1, "<div class=\"container-fluid\"><div class=\"row mb-4\"><div class=\"col-12\"><div class=\"d-flex justify-content-between align-items-center\"><h2 class=\"mb-0\"><i class=\"fas fa-cogs me-2\"></i> Maintenance Configuration</h2><div class=\"btn-group\"><a href=\"/maintenance/tasks\" class=\"btn btn-outline-primary\"><i class=\"fas fa-tasks me-1\"></i> View Tasks</a></div></div></div></div><div class=\"row\"><div class=\"col-12\"><div class=\"card\"><div class=\"card-header\"><h5 class=\"mb-0\">System Settings</h5></div><div class=\"card-body\"><form id=\"maintenanceConfigForm\"><!-- Dynamically render all schema fields in order -->")
  35. if templ_7745c5c3_Err != nil {
  36. return templ_7745c5c3_Err
  37. }
  38. for _, field := range schema.Fields {
  39. templ_7745c5c3_Err = ConfigField(field, data.Config).Render(ctx, templ_7745c5c3_Buffer)
  40. if templ_7745c5c3_Err != nil {
  41. return templ_7745c5c3_Err
  42. }
  43. }
  44. templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 2, "<div class=\"d-flex gap-2\"><button type=\"button\" class=\"btn btn-primary\" onclick=\"saveConfiguration()\"><i class=\"fas fa-save me-1\"></i> Save Configuration</button> <button type=\"button\" class=\"btn btn-secondary\" onclick=\"resetToDefaults()\"><i class=\"fas fa-undo me-1\"></i> Reset to Defaults</button></div></form></div></div></div></div><!-- Task Configuration Cards --><div class=\"row mt-4\"><div class=\"col-md-4\"><div class=\"card\"><div class=\"card-header\"><h5 class=\"mb-0\"><i class=\"fas fa-broom me-2\"></i> Volume Vacuum</h5></div><div class=\"card-body\"><p class=\"card-text\">Reclaims disk space by removing deleted files from volumes.</p><a href=\"/maintenance/config/vacuum\" class=\"btn btn-primary\">Configure</a></div></div></div><div class=\"col-md-4\"><div class=\"card\"><div class=\"card-header\"><h5 class=\"mb-0\"><i class=\"fas fa-balance-scale me-2\"></i> Volume Balance</h5></div><div class=\"card-body\"><p class=\"card-text\">Redistributes volumes across servers to optimize storage utilization.</p><a href=\"/maintenance/config/balance\" class=\"btn btn-primary\">Configure</a></div></div></div><div class=\"col-md-4\"><div class=\"card\"><div class=\"card-header\"><h5 class=\"mb-0\"><i class=\"fas fa-shield-alt me-2\"></i> Erasure Coding</h5></div><div class=\"card-body\"><p class=\"card-text\">Converts volumes to erasure coded format for improved durability.</p><a href=\"/maintenance/config/erasure_coding\" class=\"btn btn-primary\">Configure</a></div></div></div></div></div><script>\n function saveConfiguration() {\n const form = document.getElementById('maintenanceConfigForm');\n const formData = new FormData(form);\n \n // Convert form data to JSON, handling interval fields specially\n const config = {};\n \n for (let [key, value] of formData.entries()) {\n if (key.endsWith('_value')) {\n // This is an interval value part\n const baseKey = key.replace('_value', '');\n const unitKey = baseKey + '_unit';\n const unitValue = formData.get(unitKey);\n \n if (unitValue) {\n // Convert to seconds based on unit\n const numValue = parseInt(value) || 0;\n let seconds = numValue;\n switch(unitValue) {\n case 'minutes':\n seconds = numValue * 60;\n break;\n case 'hours':\n seconds = numValue * 3600;\n break;\n case 'days':\n seconds = numValue * 24 * 3600;\n break;\n }\n config[baseKey] = seconds;\n }\n } else if (key.endsWith('_unit')) {\n // Skip unit keys - they're handled with their corresponding value\n continue;\n } else {\n // Regular field\n if (form.querySelector(`[name=\"${key}\"]`).type === 'checkbox') {\n config[key] = form.querySelector(`[name=\"${key}\"]`).checked;\n } else {\n const numValue = parseFloat(value);\n config[key] = isNaN(numValue) ? value : numValue;\n }\n }\n }\n\n fetch('/api/maintenance/config', {\n method: 'PUT',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify(config)\n })\n .then(response => {\n if (response.status === 401) {\n alert('Authentication required. Please log in first.');\n window.location.href = '/login';\n return;\n }\n return response.json();\n })\n .then(data => {\n if (!data) return; // Skip if redirected to login\n if (data.success) {\n alert('Configuration saved successfully!');\n location.reload();\n } else {\n alert('Error saving configuration: ' + (data.error || 'Unknown error'));\n }\n })\n .catch(error => {\n console.error('Error:', error);\n alert('Error saving configuration: ' + error.message);\n });\n }\n\n function resetToDefaults() {\n if (confirm('Are you sure you want to reset to default configuration? This will overwrite your current settings.')) {\n fetch('/maintenance/config/defaults', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n }\n })\n .then(response => response.json())\n .then(data => {\n if (data.success) {\n alert('Configuration reset to defaults!');\n location.reload();\n } else {\n alert('Error resetting configuration: ' + (data.error || 'Unknown error'));\n }\n })\n .catch(error => {\n console.error('Error:', error);\n alert('Error resetting configuration: ' + error.message);\n });\n }\n }\n </script>")
  45. if templ_7745c5c3_Err != nil {
  46. return templ_7745c5c3_Err
  47. }
  48. return nil
  49. })
  50. }
  51. // ConfigField renders a single configuration field based on schema with typed value lookup
  52. func ConfigField(field *config.Field, config *maintenance.MaintenanceConfig) templ.Component {
  53. return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
  54. templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
  55. if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
  56. return templ_7745c5c3_CtxErr
  57. }
  58. templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
  59. if !templ_7745c5c3_IsBuffer {
  60. defer func() {
  61. templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
  62. if templ_7745c5c3_Err == nil {
  63. templ_7745c5c3_Err = templ_7745c5c3_BufErr
  64. }
  65. }()
  66. }
  67. ctx = templ.InitializeContext(ctx)
  68. templ_7745c5c3_Var2 := templ.GetChildren(ctx)
  69. if templ_7745c5c3_Var2 == nil {
  70. templ_7745c5c3_Var2 = templ.NopComponent
  71. }
  72. ctx = templ.ClearChildren(ctx)
  73. if field.InputType == "interval" {
  74. templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 3, "<!-- Interval field with number input + unit dropdown --> <div class=\"mb-3\"><label for=\"")
  75. if templ_7745c5c3_Err != nil {
  76. return templ_7745c5c3_Err
  77. }
  78. var templ_7745c5c3_Var3 string
  79. templ_7745c5c3_Var3, templ_7745c5c3_Err = templ.JoinStringErrs(field.JSONName)
  80. if templ_7745c5c3_Err != nil {
  81. return templ.Error{Err: templ_7745c5c3_Err, FileName: `view/app/maintenance_config_schema.templ`, Line: 212, Col: 39}
  82. }
  83. _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var3))
  84. if templ_7745c5c3_Err != nil {
  85. return templ_7745c5c3_Err
  86. }
  87. templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 4, "\" class=\"form-label\">")
  88. if templ_7745c5c3_Err != nil {
  89. return templ_7745c5c3_Err
  90. }
  91. var templ_7745c5c3_Var4 string
  92. templ_7745c5c3_Var4, templ_7745c5c3_Err = templ.JoinStringErrs(field.DisplayName)
  93. if templ_7745c5c3_Err != nil {
  94. return templ.Error{Err: templ_7745c5c3_Err, FileName: `view/app/maintenance_config_schema.templ`, Line: 213, Col: 35}
  95. }
  96. _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var4))
  97. if templ_7745c5c3_Err != nil {
  98. return templ_7745c5c3_Err
  99. }
  100. templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 5, " ")
  101. if templ_7745c5c3_Err != nil {
  102. return templ_7745c5c3_Err
  103. }
  104. if field.Required {
  105. templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 6, "<span class=\"text-danger\">*</span>")
  106. if templ_7745c5c3_Err != nil {
  107. return templ_7745c5c3_Err
  108. }
  109. }
  110. templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 7, "</label><div class=\"input-group\"><input type=\"number\" class=\"form-control\" id=\"")
  111. if templ_7745c5c3_Err != nil {
  112. return templ_7745c5c3_Err
  113. }
  114. var templ_7745c5c3_Var5 string
  115. templ_7745c5c3_Var5, templ_7745c5c3_Err = templ.JoinStringErrs(field.JSONName + "_value")
  116. if templ_7745c5c3_Err != nil {
  117. return templ.Error{Err: templ_7745c5c3_Err, FileName: `view/app/maintenance_config_schema.templ`, Line: 222, Col: 50}
  118. }
  119. _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var5))
  120. if templ_7745c5c3_Err != nil {
  121. return templ_7745c5c3_Err
  122. }
  123. templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 8, "\" name=\"")
  124. if templ_7745c5c3_Err != nil {
  125. return templ_7745c5c3_Err
  126. }
  127. var templ_7745c5c3_Var6 string
  128. templ_7745c5c3_Var6, templ_7745c5c3_Err = templ.JoinStringErrs(field.JSONName + "_value")
  129. if templ_7745c5c3_Err != nil {
  130. return templ.Error{Err: templ_7745c5c3_Err, FileName: `view/app/maintenance_config_schema.templ`, Line: 223, Col: 52}
  131. }
  132. _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var6))
  133. if templ_7745c5c3_Err != nil {
  134. return templ_7745c5c3_Err
  135. }
  136. templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 9, "\" value=\"")
  137. if templ_7745c5c3_Err != nil {
  138. return templ_7745c5c3_Err
  139. }
  140. var templ_7745c5c3_Var7 string
  141. templ_7745c5c3_Var7, templ_7745c5c3_Err = templ.JoinStringErrs(fmt.Sprintf("%.0f", components.ConvertInt32SecondsToDisplayValue(getMaintenanceInt32Field(config, field.JSONName))))
  142. if templ_7745c5c3_Err != nil {
  143. return templ.Error{Err: templ_7745c5c3_Err, FileName: `view/app/maintenance_config_schema.templ`, Line: 224, Col: 143}
  144. }
  145. _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var7))
  146. if templ_7745c5c3_Err != nil {
  147. return templ_7745c5c3_Err
  148. }
  149. templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 10, "\" step=\"1\" min=\"1\"")
  150. if templ_7745c5c3_Err != nil {
  151. return templ_7745c5c3_Err
  152. }
  153. if field.Required {
  154. templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 11, " required")
  155. if templ_7745c5c3_Err != nil {
  156. return templ_7745c5c3_Err
  157. }
  158. }
  159. templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 12, "> <select class=\"form-select\" id=\"")
  160. if templ_7745c5c3_Err != nil {
  161. return templ_7745c5c3_Err
  162. }
  163. var templ_7745c5c3_Var8 string
  164. templ_7745c5c3_Var8, templ_7745c5c3_Err = templ.JoinStringErrs(field.JSONName + "_unit")
  165. if templ_7745c5c3_Err != nil {
  166. return templ.Error{Err: templ_7745c5c3_Err, FileName: `view/app/maintenance_config_schema.templ`, Line: 233, Col: 49}
  167. }
  168. _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var8))
  169. if templ_7745c5c3_Err != nil {
  170. return templ_7745c5c3_Err
  171. }
  172. templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 13, "\" name=\"")
  173. if templ_7745c5c3_Err != nil {
  174. return templ_7745c5c3_Err
  175. }
  176. var templ_7745c5c3_Var9 string
  177. templ_7745c5c3_Var9, templ_7745c5c3_Err = templ.JoinStringErrs(field.JSONName + "_unit")
  178. if templ_7745c5c3_Err != nil {
  179. return templ.Error{Err: templ_7745c5c3_Err, FileName: `view/app/maintenance_config_schema.templ`, Line: 234, Col: 51}
  180. }
  181. _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var9))
  182. if templ_7745c5c3_Err != nil {
  183. return templ_7745c5c3_Err
  184. }
  185. templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 14, "\" style=\"max-width: 120px;\"")
  186. if templ_7745c5c3_Err != nil {
  187. return templ_7745c5c3_Err
  188. }
  189. if field.Required {
  190. templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 15, " required")
  191. if templ_7745c5c3_Err != nil {
  192. return templ_7745c5c3_Err
  193. }
  194. }
  195. templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 16, "><option value=\"minutes\"")
  196. if templ_7745c5c3_Err != nil {
  197. return templ_7745c5c3_Err
  198. }
  199. if components.GetInt32DisplayUnit(getMaintenanceInt32Field(config, field.JSONName)) == "minutes" {
  200. templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 17, " selected")
  201. if templ_7745c5c3_Err != nil {
  202. return templ_7745c5c3_Err
  203. }
  204. }
  205. templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 18, ">Minutes</option> <option value=\"hours\"")
  206. if templ_7745c5c3_Err != nil {
  207. return templ_7745c5c3_Err
  208. }
  209. if components.GetInt32DisplayUnit(getMaintenanceInt32Field(config, field.JSONName)) == "hours" {
  210. templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 19, " selected")
  211. if templ_7745c5c3_Err != nil {
  212. return templ_7745c5c3_Err
  213. }
  214. }
  215. templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 20, ">Hours</option> <option value=\"days\"")
  216. if templ_7745c5c3_Err != nil {
  217. return templ_7745c5c3_Err
  218. }
  219. if components.GetInt32DisplayUnit(getMaintenanceInt32Field(config, field.JSONName)) == "days" {
  220. templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 21, " selected")
  221. if templ_7745c5c3_Err != nil {
  222. return templ_7745c5c3_Err
  223. }
  224. }
  225. templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 22, ">Days</option></select></div>")
  226. if templ_7745c5c3_Err != nil {
  227. return templ_7745c5c3_Err
  228. }
  229. if field.Description != "" {
  230. templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 23, "<div class=\"form-text text-muted\">")
  231. if templ_7745c5c3_Err != nil {
  232. return templ_7745c5c3_Err
  233. }
  234. var templ_7745c5c3_Var10 string
  235. templ_7745c5c3_Var10, templ_7745c5c3_Err = templ.JoinStringErrs(field.Description)
  236. if templ_7745c5c3_Err != nil {
  237. return templ.Error{Err: templ_7745c5c3_Err, FileName: `view/app/maintenance_config_schema.templ`, Line: 267, Col: 69}
  238. }
  239. _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var10))
  240. if templ_7745c5c3_Err != nil {
  241. return templ_7745c5c3_Err
  242. }
  243. templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 24, "</div>")
  244. if templ_7745c5c3_Err != nil {
  245. return templ_7745c5c3_Err
  246. }
  247. }
  248. templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 25, "</div>")
  249. if templ_7745c5c3_Err != nil {
  250. return templ_7745c5c3_Err
  251. }
  252. } else if field.InputType == "checkbox" {
  253. templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 26, "<!-- Checkbox field --> <div class=\"mb-3\"><div class=\"form-check form-switch\"><input class=\"form-check-input\" type=\"checkbox\" id=\"")
  254. if templ_7745c5c3_Err != nil {
  255. return templ_7745c5c3_Err
  256. }
  257. var templ_7745c5c3_Var11 string
  258. templ_7745c5c3_Var11, templ_7745c5c3_Err = templ.JoinStringErrs(field.JSONName)
  259. if templ_7745c5c3_Err != nil {
  260. return templ.Error{Err: templ_7745c5c3_Err, FileName: `view/app/maintenance_config_schema.templ`, Line: 277, Col: 39}
  261. }
  262. _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var11))
  263. if templ_7745c5c3_Err != nil {
  264. return templ_7745c5c3_Err
  265. }
  266. templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 27, "\" name=\"")
  267. if templ_7745c5c3_Err != nil {
  268. return templ_7745c5c3_Err
  269. }
  270. var templ_7745c5c3_Var12 string
  271. templ_7745c5c3_Var12, templ_7745c5c3_Err = templ.JoinStringErrs(field.JSONName)
  272. if templ_7745c5c3_Err != nil {
  273. return templ.Error{Err: templ_7745c5c3_Err, FileName: `view/app/maintenance_config_schema.templ`, Line: 278, Col: 41}
  274. }
  275. _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var12))
  276. if templ_7745c5c3_Err != nil {
  277. return templ_7745c5c3_Err
  278. }
  279. templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 28, "\"")
  280. if templ_7745c5c3_Err != nil {
  281. return templ_7745c5c3_Err
  282. }
  283. if getMaintenanceBoolField(config, field.JSONName) {
  284. templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 29, " checked")
  285. if templ_7745c5c3_Err != nil {
  286. return templ_7745c5c3_Err
  287. }
  288. }
  289. templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 30, "> <label class=\"form-check-label\" for=\"")
  290. if templ_7745c5c3_Err != nil {
  291. return templ_7745c5c3_Err
  292. }
  293. var templ_7745c5c3_Var13 string
  294. templ_7745c5c3_Var13, templ_7745c5c3_Err = templ.JoinStringErrs(field.JSONName)
  295. if templ_7745c5c3_Err != nil {
  296. return templ.Error{Err: templ_7745c5c3_Err, FileName: `view/app/maintenance_config_schema.templ`, Line: 283, Col: 68}
  297. }
  298. _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var13))
  299. if templ_7745c5c3_Err != nil {
  300. return templ_7745c5c3_Err
  301. }
  302. templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 31, "\"><strong>")
  303. if templ_7745c5c3_Err != nil {
  304. return templ_7745c5c3_Err
  305. }
  306. var templ_7745c5c3_Var14 string
  307. templ_7745c5c3_Var14, templ_7745c5c3_Err = templ.JoinStringErrs(field.DisplayName)
  308. if templ_7745c5c3_Err != nil {
  309. return templ.Error{Err: templ_7745c5c3_Err, FileName: `view/app/maintenance_config_schema.templ`, Line: 284, Col: 47}
  310. }
  311. _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var14))
  312. if templ_7745c5c3_Err != nil {
  313. return templ_7745c5c3_Err
  314. }
  315. templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 32, "</strong></label></div>")
  316. if templ_7745c5c3_Err != nil {
  317. return templ_7745c5c3_Err
  318. }
  319. if field.Description != "" {
  320. templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 33, "<div class=\"form-text text-muted\">")
  321. if templ_7745c5c3_Err != nil {
  322. return templ_7745c5c3_Err
  323. }
  324. var templ_7745c5c3_Var15 string
  325. templ_7745c5c3_Var15, templ_7745c5c3_Err = templ.JoinStringErrs(field.Description)
  326. if templ_7745c5c3_Err != nil {
  327. return templ.Error{Err: templ_7745c5c3_Err, FileName: `view/app/maintenance_config_schema.templ`, Line: 288, Col: 69}
  328. }
  329. _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var15))
  330. if templ_7745c5c3_Err != nil {
  331. return templ_7745c5c3_Err
  332. }
  333. templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 34, "</div>")
  334. if templ_7745c5c3_Err != nil {
  335. return templ_7745c5c3_Err
  336. }
  337. }
  338. templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 35, "</div>")
  339. if templ_7745c5c3_Err != nil {
  340. return templ_7745c5c3_Err
  341. }
  342. } else {
  343. templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 36, "<!-- Number field --> <div class=\"mb-3\"><label for=\"")
  344. if templ_7745c5c3_Err != nil {
  345. return templ_7745c5c3_Err
  346. }
  347. var templ_7745c5c3_Var16 string
  348. templ_7745c5c3_Var16, templ_7745c5c3_Err = templ.JoinStringErrs(field.JSONName)
  349. if templ_7745c5c3_Err != nil {
  350. return templ.Error{Err: templ_7745c5c3_Err, FileName: `view/app/maintenance_config_schema.templ`, Line: 294, Col: 39}
  351. }
  352. _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var16))
  353. if templ_7745c5c3_Err != nil {
  354. return templ_7745c5c3_Err
  355. }
  356. templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 37, "\" class=\"form-label\">")
  357. if templ_7745c5c3_Err != nil {
  358. return templ_7745c5c3_Err
  359. }
  360. var templ_7745c5c3_Var17 string
  361. templ_7745c5c3_Var17, templ_7745c5c3_Err = templ.JoinStringErrs(field.DisplayName)
  362. if templ_7745c5c3_Err != nil {
  363. return templ.Error{Err: templ_7745c5c3_Err, FileName: `view/app/maintenance_config_schema.templ`, Line: 295, Col: 35}
  364. }
  365. _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var17))
  366. if templ_7745c5c3_Err != nil {
  367. return templ_7745c5c3_Err
  368. }
  369. templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 38, " ")
  370. if templ_7745c5c3_Err != nil {
  371. return templ_7745c5c3_Err
  372. }
  373. if field.Required {
  374. templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 39, "<span class=\"text-danger\">*</span>")
  375. if templ_7745c5c3_Err != nil {
  376. return templ_7745c5c3_Err
  377. }
  378. }
  379. templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 40, "</label> <input type=\"number\" class=\"form-control\" id=\"")
  380. if templ_7745c5c3_Err != nil {
  381. return templ_7745c5c3_Err
  382. }
  383. var templ_7745c5c3_Var18 string
  384. templ_7745c5c3_Var18, templ_7745c5c3_Err = templ.JoinStringErrs(field.JSONName)
  385. if templ_7745c5c3_Err != nil {
  386. return templ.Error{Err: templ_7745c5c3_Err, FileName: `view/app/maintenance_config_schema.templ`, Line: 303, Col: 35}
  387. }
  388. _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var18))
  389. if templ_7745c5c3_Err != nil {
  390. return templ_7745c5c3_Err
  391. }
  392. templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 41, "\" name=\"")
  393. if templ_7745c5c3_Err != nil {
  394. return templ_7745c5c3_Err
  395. }
  396. var templ_7745c5c3_Var19 string
  397. templ_7745c5c3_Var19, templ_7745c5c3_Err = templ.JoinStringErrs(field.JSONName)
  398. if templ_7745c5c3_Err != nil {
  399. return templ.Error{Err: templ_7745c5c3_Err, FileName: `view/app/maintenance_config_schema.templ`, Line: 304, Col: 37}
  400. }
  401. _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var19))
  402. if templ_7745c5c3_Err != nil {
  403. return templ_7745c5c3_Err
  404. }
  405. templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 42, "\" value=\"")
  406. if templ_7745c5c3_Err != nil {
  407. return templ_7745c5c3_Err
  408. }
  409. var templ_7745c5c3_Var20 string
  410. templ_7745c5c3_Var20, templ_7745c5c3_Err = templ.JoinStringErrs(fmt.Sprintf("%d", getMaintenanceInt32Field(config, field.JSONName)))
  411. if templ_7745c5c3_Err != nil {
  412. return templ.Error{Err: templ_7745c5c3_Err, FileName: `view/app/maintenance_config_schema.templ`, Line: 305, Col: 91}
  413. }
  414. _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var20))
  415. if templ_7745c5c3_Err != nil {
  416. return templ_7745c5c3_Err
  417. }
  418. templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 43, "\" placeholder=\"")
  419. if templ_7745c5c3_Err != nil {
  420. return templ_7745c5c3_Err
  421. }
  422. var templ_7745c5c3_Var21 string
  423. templ_7745c5c3_Var21, templ_7745c5c3_Err = templ.JoinStringErrs(field.Placeholder)
  424. if templ_7745c5c3_Err != nil {
  425. return templ.Error{Err: templ_7745c5c3_Err, FileName: `view/app/maintenance_config_schema.templ`, Line: 306, Col: 47}
  426. }
  427. _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var21))
  428. if templ_7745c5c3_Err != nil {
  429. return templ_7745c5c3_Err
  430. }
  431. templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 44, "\"")
  432. if templ_7745c5c3_Err != nil {
  433. return templ_7745c5c3_Err
  434. }
  435. if field.MinValue != nil {
  436. templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 45, " min=\"")
  437. if templ_7745c5c3_Err != nil {
  438. return templ_7745c5c3_Err
  439. }
  440. var templ_7745c5c3_Var22 string
  441. templ_7745c5c3_Var22, templ_7745c5c3_Err = templ.JoinStringErrs(fmt.Sprintf("%v", field.MinValue))
  442. if templ_7745c5c3_Err != nil {
  443. return templ.Error{Err: templ_7745c5c3_Err, FileName: `view/app/maintenance_config_schema.templ`, Line: 308, Col: 59}
  444. }
  445. _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var22))
  446. if templ_7745c5c3_Err != nil {
  447. return templ_7745c5c3_Err
  448. }
  449. templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 46, "\"")
  450. if templ_7745c5c3_Err != nil {
  451. return templ_7745c5c3_Err
  452. }
  453. }
  454. if field.MaxValue != nil {
  455. templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 47, " max=\"")
  456. if templ_7745c5c3_Err != nil {
  457. return templ_7745c5c3_Err
  458. }
  459. var templ_7745c5c3_Var23 string
  460. templ_7745c5c3_Var23, templ_7745c5c3_Err = templ.JoinStringErrs(fmt.Sprintf("%v", field.MaxValue))
  461. if templ_7745c5c3_Err != nil {
  462. return templ.Error{Err: templ_7745c5c3_Err, FileName: `view/app/maintenance_config_schema.templ`, Line: 311, Col: 59}
  463. }
  464. _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var23))
  465. if templ_7745c5c3_Err != nil {
  466. return templ_7745c5c3_Err
  467. }
  468. templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 48, "\"")
  469. if templ_7745c5c3_Err != nil {
  470. return templ_7745c5c3_Err
  471. }
  472. }
  473. templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 49, " step=\"")
  474. if templ_7745c5c3_Err != nil {
  475. return templ_7745c5c3_Err
  476. }
  477. var templ_7745c5c3_Var24 string
  478. templ_7745c5c3_Var24, templ_7745c5c3_Err = templ.JoinStringErrs(getNumberStep(field))
  479. if templ_7745c5c3_Err != nil {
  480. return templ.Error{Err: templ_7745c5c3_Err, FileName: `view/app/maintenance_config_schema.templ`, Line: 313, Col: 43}
  481. }
  482. _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var24))
  483. if templ_7745c5c3_Err != nil {
  484. return templ_7745c5c3_Err
  485. }
  486. templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 50, "\"")
  487. if templ_7745c5c3_Err != nil {
  488. return templ_7745c5c3_Err
  489. }
  490. if field.Required {
  491. templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 51, " required")
  492. if templ_7745c5c3_Err != nil {
  493. return templ_7745c5c3_Err
  494. }
  495. }
  496. templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 52, "> ")
  497. if templ_7745c5c3_Err != nil {
  498. return templ_7745c5c3_Err
  499. }
  500. if field.Description != "" {
  501. templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 53, "<div class=\"form-text text-muted\">")
  502. if templ_7745c5c3_Err != nil {
  503. return templ_7745c5c3_Err
  504. }
  505. var templ_7745c5c3_Var25 string
  506. templ_7745c5c3_Var25, templ_7745c5c3_Err = templ.JoinStringErrs(field.Description)
  507. if templ_7745c5c3_Err != nil {
  508. return templ.Error{Err: templ_7745c5c3_Err, FileName: `view/app/maintenance_config_schema.templ`, Line: 319, Col: 69}
  509. }
  510. _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var25))
  511. if templ_7745c5c3_Err != nil {
  512. return templ_7745c5c3_Err
  513. }
  514. templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 54, "</div>")
  515. if templ_7745c5c3_Err != nil {
  516. return templ_7745c5c3_Err
  517. }
  518. }
  519. templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 55, "</div>")
  520. if templ_7745c5c3_Err != nil {
  521. return templ_7745c5c3_Err
  522. }
  523. }
  524. return nil
  525. })
  526. }
  527. // Helper functions for form field types
  528. func getNumberStep(field *config.Field) string {
  529. if field.Type == config.FieldTypeFloat {
  530. return "0.01"
  531. }
  532. return "1"
  533. }
  534. // Typed field getters for MaintenanceConfig - no interface{} needed
  535. func getMaintenanceInt32Field(config *maintenance.MaintenanceConfig, fieldName string) int32 {
  536. if config == nil {
  537. return 0
  538. }
  539. switch fieldName {
  540. case "scan_interval_seconds":
  541. return config.ScanIntervalSeconds
  542. case "worker_timeout_seconds":
  543. return config.WorkerTimeoutSeconds
  544. case "task_timeout_seconds":
  545. return config.TaskTimeoutSeconds
  546. case "retry_delay_seconds":
  547. return config.RetryDelaySeconds
  548. case "max_retries":
  549. return config.MaxRetries
  550. case "cleanup_interval_seconds":
  551. return config.CleanupIntervalSeconds
  552. case "task_retention_seconds":
  553. return config.TaskRetentionSeconds
  554. case "global_max_concurrent":
  555. if config.Policy != nil {
  556. return config.Policy.GlobalMaxConcurrent
  557. }
  558. return 0
  559. default:
  560. return 0
  561. }
  562. }
  563. func getMaintenanceBoolField(config *maintenance.MaintenanceConfig, fieldName string) bool {
  564. if config == nil {
  565. return false
  566. }
  567. switch fieldName {
  568. case "enabled":
  569. return config.Enabled
  570. default:
  571. return false
  572. }
  573. }
  574. // Helper function to convert schema to JSON for JavaScript
  575. func schemaToJSON(schema *maintenance.MaintenanceConfigSchema) templ.Component {
  576. return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
  577. templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
  578. if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
  579. return templ_7745c5c3_CtxErr
  580. }
  581. templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
  582. if !templ_7745c5c3_IsBuffer {
  583. defer func() {
  584. templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
  585. if templ_7745c5c3_Err == nil {
  586. templ_7745c5c3_Err = templ_7745c5c3_BufErr
  587. }
  588. }()
  589. }
  590. ctx = templ.InitializeContext(ctx)
  591. templ_7745c5c3_Var26 := templ.GetChildren(ctx)
  592. if templ_7745c5c3_Var26 == nil {
  593. templ_7745c5c3_Var26 = templ.NopComponent
  594. }
  595. ctx = templ.ClearChildren(ctx)
  596. var templ_7745c5c3_Var27 string
  597. templ_7745c5c3_Var27, templ_7745c5c3_Err = templ.JoinStringErrs(`{}`)
  598. if templ_7745c5c3_Err != nil {
  599. return templ.Error{Err: templ_7745c5c3_Err, FileName: `view/app/maintenance_config_schema.templ`, Line: 380, Col: 9}
  600. }
  601. _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var27))
  602. if templ_7745c5c3_Err != nil {
  603. return templ_7745c5c3_Err
  604. }
  605. return nil
  606. })
  607. }
  608. var _ = templruntime.GeneratedTemplate