aboutsummaryrefslogtreecommitdiff
path: root/weed/admin/view/app/task_config.templ
blob: 81e089de651bc9b36a5a5026c8b39d397a6fdc5d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
package app

import (
    "github.com/seaweedfs/seaweedfs/weed/admin/maintenance"
)

templ TaskConfig(data *maintenance.TaskConfigData) {
    <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={data.TaskIcon + " me-2"}></i>
                        {data.TaskName} 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" class="btn btn-outline-primary">
                            <i class="fas fa-list me-1"></i>
                            View Queue
                        </a>
                    </div>
                </div>
            </div>
        </div>

        <div class="row">
            <div class="col-12">
                <div class="card">
                    <div class="card-header">
                        <h5 class="mb-0">
                            <i class={data.TaskIcon + " me-2"}></i>
                            {data.TaskName} Settings
                        </h5>
                    </div>
                    <div class="card-body">
                        <p class="text-muted mb-4">{data.Description}</p>
                        
                        <!-- Task-specific configuration form -->
                        <form method="POST">
                            <div class="task-config-form">
                                @templ.Raw(string(data.ConfigFormHTML))
                            </div>
                            
                            <hr class="my-4">
                            
                            <div class="d-flex gap-2">
                                <button type="submit" class="btn btn-primary">
                                    <i class="fas fa-save me-1"></i>
                                    Save Configuration
                                </button>
                                <button type="button" class="btn btn-secondary" onclick="resetForm()">
                                    <i class="fas fa-undo me-1"></i>
                                    Reset to Defaults
                                </button>
                                <a href="/maintenance/config" class="btn btn-outline-secondary">
                                    <i class="fas fa-times me-1"></i>
                                    Cancel
                                </a>
                            </div>
                        </form>
                    </div>
                </div>
            </div>
        </div>

        <!-- Task Information -->
        <div class="row mt-4">
            <div class="col-12">
                <div class="card">
                    <div class="card-header">
                        <h5 class="mb-0">
                            <i class="fas fa-info-circle me-2"></i>
                            Task Information
                        </h5>
                    </div>
                    <div class="card-body">
                        <div class="row">
                            <div class="col-md-6">
                                <h6 class="text-muted">Task Type</h6>
                                <p class="mb-3">
                                    <span class="badge bg-secondary">{string(data.TaskType)}</span>
                                </p>
                            </div>
                            <div class="col-md-6">
                                <h6 class="text-muted">Display Name</h6>
                                <p class="mb-3">{data.TaskName}</p>
                            </div>
                        </div>
                        <div class="row">
                            <div class="col-12">
                                <h6 class="text-muted">Description</h6>
                                <p class="mb-0">{data.Description}</p>
                            </div>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>

    <script>
        function resetForm() {
            if (confirm('Are you sure you want to reset all settings to their default values?')) {
                // Find all form inputs and reset them
                const form = document.querySelector('form');
                if (form) {
                    form.reset();
                }
            }
        }

        // Auto-save form data to localStorage for recovery
        document.addEventListener('DOMContentLoaded', function() {
            const form = document.querySelector('form');
            if (form) {
                const taskType = '{string(data.TaskType)}';
                const storageKey = 'taskConfig_' + taskType;

                // Load saved data
                const savedData = localStorage.getItem(storageKey);
                if (savedData) {
                    try {
                        const data = JSON.parse(savedData);
                        Object.keys(data).forEach(key => {
                            const input = form.querySelector(`[name="${key}"]`);
                            if (input) {
                                if (input.type === 'checkbox') {
                                    input.checked = data[key];
                                } else {
                                    input.value = data[key];
                                }
                            }
                        });
                    } catch (e) {
                        console.warn('Failed to load saved configuration:', e);
                    }
                }

                // Save data on input change
                form.addEventListener('input', function() {
                    const formData = new FormData(form);
                    const data = {};
                    for (let [key, value] of formData.entries()) {
                        data[key] = value;
                    }
                    localStorage.setItem(storageKey, JSON.stringify(data));
                });

                // Clear saved data on successful submit
                form.addEventListener('submit', function() {
                    localStorage.removeItem(storageKey);
                });
            }
        });
    </script>
}