You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							112 lines
						
					
					
						
							8.4 KiB
						
					
					
				
			
		
		
		
			
			
			
		
		
	
	
							112 lines
						
					
					
						
							8.4 KiB
						
					
					
				
								// Code generated by templ - DO NOT EDIT.
							 | 
						|
								
							 | 
						|
								// templ: version: v0.3.960
							 | 
						|
								package app
							 | 
						|
								
							 | 
						|
								//lint:file-ignore SA4006 This context is only used if a nested component is present.
							 | 
						|
								
							 | 
						|
								import "github.com/a-h/templ"
							 | 
						|
								import templruntime "github.com/a-h/templ/runtime"
							 | 
						|
								
							 | 
						|
								import (
							 | 
						|
									"github.com/seaweedfs/seaweedfs/weed/admin/maintenance"
							 | 
						|
									"github.com/seaweedfs/seaweedfs/weed/admin/view/components"
							 | 
						|
								)
							 | 
						|
								
							 | 
						|
								// TaskConfigTemplData represents data for templ-based task configuration
							 | 
						|
								type TaskConfigTemplData struct {
							 | 
						|
									TaskType       maintenance.MaintenanceTaskType
							 | 
						|
									TaskName       string
							 | 
						|
									TaskIcon       string
							 | 
						|
									Description    string
							 | 
						|
									ConfigSections []components.ConfigSectionData
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								func TaskConfigTempl(data *TaskConfigTemplData) templ.Component {
							 | 
						|
									return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
							 | 
						|
										templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
							 | 
						|
										if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
							 | 
						|
											return templ_7745c5c3_CtxErr
							 | 
						|
										}
							 | 
						|
										templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
							 | 
						|
										if !templ_7745c5c3_IsBuffer {
							 | 
						|
											defer func() {
							 | 
						|
												templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
							 | 
						|
												if templ_7745c5c3_Err == nil {
							 | 
						|
													templ_7745c5c3_Err = templ_7745c5c3_BufErr
							 | 
						|
												}
							 | 
						|
											}()
							 | 
						|
										}
							 | 
						|
										ctx = templ.InitializeContext(ctx)
							 | 
						|
										templ_7745c5c3_Var1 := templ.GetChildren(ctx)
							 | 
						|
										if templ_7745c5c3_Var1 == nil {
							 | 
						|
											templ_7745c5c3_Var1 = templ.NopComponent
							 | 
						|
										}
							 | 
						|
										ctx = templ.ClearChildren(ctx)
							 | 
						|
										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\">")
							 | 
						|
										if templ_7745c5c3_Err != nil {
							 | 
						|
											return templ_7745c5c3_Err
							 | 
						|
										}
							 | 
						|
										var templ_7745c5c3_Var2 = []any{data.TaskIcon + " me-2"}
							 | 
						|
										templ_7745c5c3_Err = templ.RenderCSSItems(ctx, templ_7745c5c3_Buffer, templ_7745c5c3_Var2...)
							 | 
						|
										if templ_7745c5c3_Err != nil {
							 | 
						|
											return templ_7745c5c3_Err
							 | 
						|
										}
							 | 
						|
										templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 2, "<i class=\"")
							 | 
						|
										if templ_7745c5c3_Err != nil {
							 | 
						|
											return templ_7745c5c3_Err
							 | 
						|
										}
							 | 
						|
										var templ_7745c5c3_Var3 string
							 | 
						|
										templ_7745c5c3_Var3, templ_7745c5c3_Err = templ.JoinStringErrs(templ.CSSClasses(templ_7745c5c3_Var2).String())
							 | 
						|
										if templ_7745c5c3_Err != nil {
							 | 
						|
											return templ.Error{Err: templ_7745c5c3_Err, FileName: `view/app/task_config_templ.templ`, Line: 1, Col: 0}
							 | 
						|
										}
							 | 
						|
										_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var3))
							 | 
						|
										if templ_7745c5c3_Err != nil {
							 | 
						|
											return templ_7745c5c3_Err
							 | 
						|
										}
							 | 
						|
										templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 3, "\"></i> ")
							 | 
						|
										if templ_7745c5c3_Err != nil {
							 | 
						|
											return templ_7745c5c3_Err
							 | 
						|
										}
							 | 
						|
										var templ_7745c5c3_Var4 string
							 | 
						|
										templ_7745c5c3_Var4, templ_7745c5c3_Err = templ.JoinStringErrs(data.TaskName)
							 | 
						|
										if templ_7745c5c3_Err != nil {
							 | 
						|
											return templ.Error{Err: templ_7745c5c3_Err, FileName: `view/app/task_config_templ.templ`, Line: 24, Col: 38}
							 | 
						|
										}
							 | 
						|
										_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var4))
							 | 
						|
										if templ_7745c5c3_Err != nil {
							 | 
						|
											return templ_7745c5c3_Err
							 | 
						|
										}
							 | 
						|
										templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 4, " Configuration</h2><div class=\"btn-group\"><a href=\"/maintenance/config\" class=\"btn btn-outline-secondary\"><i class=\"fas fa-arrow-left me-1\"></i> Back to Configuration</a> <a href=\"/maintenance/queue\" class=\"btn btn-outline-info\"><i class=\"fas fa-list me-1\"></i> View Queue</a></div></div></div></div><div class=\"row mb-4\"><div class=\"col-12\"><div class=\"alert alert-info\" role=\"alert\"><i class=\"fas fa-info-circle me-2\"></i> ")
							 | 
						|
										if templ_7745c5c3_Err != nil {
							 | 
						|
											return templ_7745c5c3_Err
							 | 
						|
										}
							 | 
						|
										var templ_7745c5c3_Var5 string
							 | 
						|
										templ_7745c5c3_Var5, templ_7745c5c3_Err = templ.JoinStringErrs(data.Description)
							 | 
						|
										if templ_7745c5c3_Err != nil {
							 | 
						|
											return templ.Error{Err: templ_7745c5c3_Err, FileName: `view/app/task_config_templ.templ`, Line: 44, Col: 37}
							 | 
						|
										}
							 | 
						|
										_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var5))
							 | 
						|
										if templ_7745c5c3_Err != nil {
							 | 
						|
											return templ_7745c5c3_Err
							 | 
						|
										}
							 | 
						|
										templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 5, "</div></div></div><form method=\"POST\" class=\"needs-validation\" novalidate><!-- Render all configuration sections -->")
							 | 
						|
										if templ_7745c5c3_Err != nil {
							 | 
						|
											return templ_7745c5c3_Err
							 | 
						|
										}
							 | 
						|
										for _, section := range data.ConfigSections {
							 | 
						|
											templ_7745c5c3_Err = components.ConfigSection(section).Render(ctx, templ_7745c5c3_Buffer)
							 | 
						|
											if templ_7745c5c3_Err != nil {
							 | 
						|
												return templ_7745c5c3_Err
							 | 
						|
											}
							 | 
						|
										}
							 | 
						|
										templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 6, "<!-- Form actions --><div class=\"row\"><div class=\"col-12\"><div class=\"card\"><div class=\"card-body\"><div class=\"d-flex justify-content-between\"><div><button type=\"submit\" class=\"btn btn-primary\"><i class=\"fas fa-save me-1\"></i> Save Configuration</button> <button type=\"button\" class=\"btn btn-outline-secondary ms-2\" onclick=\"resetForm()\"><i class=\"fas fa-undo me-1\"></i> Reset</button></div><div><button type=\"button\" class=\"btn btn-outline-info\" onclick=\"testConfiguration()\"><i class=\"fas fa-play me-1\"></i> Test Configuration</button></div></div></div></div></div></div></form></div><script>\n        // Form validation\n        (function() {\n            'use strict';\n            window.addEventListener('load', function() {\n                var forms = document.getElementsByClassName('needs-validation');\n                var validation = Array.prototype.filter.call(forms, function(form) {\n                    form.addEventListener('submit', function(event) {\n                        if (form.checkValidity() === false) {\n                            event.preventDefault();\n                            event.stopPropagation();\n                        }\n                        form.classList.add('was-validated');\n                    }, false);\n                });\n            }, false);\n        })();\n\n        // Auto-save functionality\n        let autoSaveTimeout;\n        function autoSave() {\n            clearTimeout(autoSaveTimeout);\n            autoSaveTimeout = setTimeout(function() {\n                const formData = new FormData(document.querySelector('form'));\n                localStorage.setItem('task_config_' + '{data.TaskType}', JSON.stringify(Object.fromEntries(formData)));\n            }, 1000);\n        }\n\n        // Add auto-save listeners to all form inputs\n        document.addEventListener('DOMContentLoaded', function() {\n            const form = document.querySelector('form');\n            if (form) {\n                form.addEventListener('input', autoSave);\n                form.addEventListener('change', autoSave);\n            }\n        });\n\n        // Reset form function\n        function resetForm() {\n            if (confirm('Are you sure you want to reset all changes?')) {\n                location.reload();\n            }\n        }\n\n        // Test configuration function\n        function testConfiguration() {\n            const formData = new FormData(document.querySelector('form'));\n            \n            // Show loading state\n            const testBtn = document.querySelector('button[onclick=\"testConfiguration()\"]');\n            const originalContent = testBtn.innerHTML;\n            testBtn.innerHTML = '<i class=\"fas fa-spinner fa-spin me-1\"></i>Testing...';\n            testBtn.disabled = true;\n            \n            fetch('/maintenance/config/{data.TaskType}/test', {\n                method: 'POST',\n                body: formData\n            })\n            .then(response => response.json())\n            .then(data => {\n                if (data.success) {\n                    alert('Configuration test successful!');\n                } else {\n                    alert('Configuration test failed: ' + data.error);\n                }\n            })\n            .catch(error => {\n                alert('Test failed: ' + error);\n            })\n            .finally(() => {\n                testBtn.innerHTML = originalContent;\n                testBtn.disabled = false;\n            });\n        }\n    </script>")
							 | 
						|
										if templ_7745c5c3_Err != nil {
							 | 
						|
											return templ_7745c5c3_Err
							 | 
						|
										}
							 | 
						|
										return nil
							 | 
						|
									})
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								var _ = templruntime.GeneratedTemplate
							 |