mirror of
https://github.com/seaweedfs/seaweedfs.git
synced 2026-11-14 15:58:52 +01:00
Fix Javascript merge issue and UI worker detail display bug (#8135)
* Fix previous merge issues in Javascript Signed-off-by: Alasdair Macmillan <aimmac23@gmail.com> * Fix issue where worker detail doesn't display without tasks --------- Signed-off-by: Alasdair Macmillan <aimmac23@gmail.com>
This commit is contained in:
1 parent
b1d63d0943
commit
41d079a316
3 files changed
+2
-12
No files matched your search
@@ -7,7 +7,6 @@
|
||||
* showConfirm('Delete this?', function() { });
|
||||
*/
|
||||
|
||||
<<<<<<< HEAD
|
||||
(function () {
|
||||
'use strict';
|
||||
|
||||
|
||||
@@ -276,7 +276,7 @@ templ MaintenanceWorkers(data *dash.MaintenanceWorkersData) {
|
||||
'</div>' +
|
||||
'<hr>' +
|
||||
'<h6>Current Tasks</h6>' +
|
||||
(data.current_tasks.length === 0 ?
|
||||
(data.current_tasks === null || data.current_tasks.length === 0 ?
|
||||
'<p class="text-muted">No current tasks</p>' :
|
||||
data.current_tasks.map(task =>
|
||||
'<div class="card mb-2">' +
|
||||
@@ -311,15 +311,6 @@ templ MaintenanceWorkers(data *dash.MaintenanceWorkersData) {
|
||||
'Content-Type': 'application/json',
|
||||
}
|
||||
})
|
||||
showConfirm(`Are you sure you want to pause worker ${workerID}?`, function() {
|
||||
const encodedWorkerId = encodeURIComponent(workerID);
|
||||
fetch('/api/maintenance/workers/' + encodedWorkerId + '/pause', {
|
||||
method: 'POST',
|
||||
headers: {
|
||||
'Content-Type': 'application/json',
|
||||
}
|
||||
>>>>>>> 5a7c74feac7c0b1dbab24446fbdbeddb8899c538
|
||||
})
|
||||
.then(response => response.json())
|
||||
.then(data => {
|
||||
if (data.success) {
|
||||
|
||||
@@ -390,7 +390,7 @@ func MaintenanceWorkers(data *dash.MaintenanceWorkersData) templ.Component {
|
||||
return templ_7745c5c3_Err
|
||||
}
|
||||
}
|
||||
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 40, "</div></div></div></div></div><!-- Worker Details Modal --><div class=\"modal fade\" id=\"workerDetailsModal\" tabindex=\"-1\" aria-labelledby=\"workerDetailsModalLabel\" aria-hidden=\"true\"><div class=\"modal-dialog modal-lg\"><div class=\"modal-content\"><div class=\"modal-header\"><h5 class=\"modal-title\" id=\"workerDetailsModalLabel\">Worker Details</h5><button type=\"button\" class=\"btn-close\" data-bs-dismiss=\"modal\" aria-label=\"Close\"></button></div><div class=\"modal-body\" id=\"workerDetailsContent\"><!-- Content will be loaded dynamically --></div></div></div></div><script>\n function showWorkerDetails(event) {\n const workerID = event.target.closest('button').getAttribute('data-worker-id');\n \n // Show modal\n var modal = new bootstrap.Modal(document.getElementById('workerDetailsModal'));\n \n // Load worker details\n const encodedWorkerId = encodeURIComponent(workerID);\n fetch('/api/maintenance/workers/' + encodedWorkerId)\n .then(response => response.json())\n .then(data => {\n const content = document.getElementById('workerDetailsContent');\n content.innerHTML = '<div class=\"row\">' +\n '<div class=\"col-md-6\">' +\n '<h6>Worker Information</h6>' +\n '<ul class=\"list-unstyled\">' +\n '<li><strong>ID:</strong> ' + data.worker.id + '</li>' +\n '<li><strong>Address:</strong> ' + data.worker.address + '</li>' +\n '<li><strong>Status:</strong> ' + data.worker.status + '</li>' +\n '<li><strong>Max Concurrent:</strong> ' + data.worker.max_concurrent + '</li>' +\n '<li><strong>Current Load:</strong> ' + data.worker.current_load + '</li>' +\n '</ul>' +\n '</div>' +\n '<div class=\"col-md-6\">' +\n '<h6>Performance Metrics</h6>' +\n '<ul class=\"list-unstyled\">' +\n '<li><strong>Tasks Completed:</strong> ' + data.performance.tasks_completed + '</li>' +\n '<li><strong>Tasks Failed:</strong> ' + data.performance.tasks_failed + '</li>' +\n '<li><strong>Success Rate:</strong> ' + data.performance.success_rate.toFixed(1) + '%</li>' +\n '<li><strong>Average Task Time:</strong> ' + formatDuration(data.performance.average_task_time) + '</li>' +\n '<li><strong>Uptime:</strong> ' + formatDuration(data.performance.uptime) + '</li>' +\n '</ul>' +\n '</div>' +\n '</div>' +\n '<hr>' +\n '<h6>Current Tasks</h6>' +\n (data.current_tasks.length === 0 ? \n '<p class=\"text-muted\">No current tasks</p>' :\n data.current_tasks.map(task => \n '<div class=\"card mb-2\">' +\n '<div class=\"card-body py-2\">' +\n '<div class=\"d-flex justify-content-between\">' +\n '<span><strong>' + task.type + '</strong> - Volume ' + task.volume_id + '</span>' +\n '<span class=\"badge bg-info\">' + task.status + '</span>' +\n '</div>' +\n '<small class=\"text-muted\">' + task.reason + '</small>' +\n '</div>' +\n '</div>'\n ).join('')\n );\n modal.show();\n })\n .catch(error => {\n console.error('Error loading worker details:', error);\n const content = document.getElementById('workerDetailsContent');\n content.innerHTML = '<div class=\"alert alert-danger\">Failed to load worker details</div>';\n modal.show();\n });\n }\n\n function pauseWorker(event) {\n const workerID = event.target.closest('button').getAttribute('data-worker-id');\n \n showConfirm(`Are you sure you want to pause worker ${workerID}?`, function() {\n const encodedWorkerId = encodeURIComponent(workerID);\n fetch('/api/maintenance/workers/' + encodedWorkerId + '/pause', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n }\n })\n showConfirm(`Are you sure you want to pause worker ${workerID}?`, function() {\n const encodedWorkerId = encodeURIComponent(workerID);\n fetch('/api/maintenance/workers/' + encodedWorkerId + '/pause', {\n Line truncated
|
||||
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 40, "</div></div></div></div></div><!-- Worker Details Modal --><div class=\"modal fade\" id=\"workerDetailsModal\" tabindex=\"-1\" aria-labelledby=\"workerDetailsModalLabel\" aria-hidden=\"true\"><div class=\"modal-dialog modal-lg\"><div class=\"modal-content\"><div class=\"modal-header\"><h5 class=\"modal-title\" id=\"workerDetailsModalLabel\">Worker Details</h5><button type=\"button\" class=\"btn-close\" data-bs-dismiss=\"modal\" aria-label=\"Close\"></button></div><div class=\"modal-body\" id=\"workerDetailsContent\"><!-- Content will be loaded dynamically --></div></div></div></div><script>\n function showWorkerDetails(event) {\n const workerID = event.target.closest('button').getAttribute('data-worker-id');\n \n // Show modal\n var modal = new bootstrap.Modal(document.getElementById('workerDetailsModal'));\n \n // Load worker details\n const encodedWorkerId = encodeURIComponent(workerID);\n fetch('/api/maintenance/workers/' + encodedWorkerId)\n .then(response => response.json())\n .then(data => {\n const content = document.getElementById('workerDetailsContent');\n content.innerHTML = '<div class=\"row\">' +\n '<div class=\"col-md-6\">' +\n '<h6>Worker Information</h6>' +\n '<ul class=\"list-unstyled\">' +\n '<li><strong>ID:</strong> ' + data.worker.id + '</li>' +\n '<li><strong>Address:</strong> ' + data.worker.address + '</li>' +\n '<li><strong>Status:</strong> ' + data.worker.status + '</li>' +\n '<li><strong>Max Concurrent:</strong> ' + data.worker.max_concurrent + '</li>' +\n '<li><strong>Current Load:</strong> ' + data.worker.current_load + '</li>' +\n '</ul>' +\n '</div>' +\n '<div class=\"col-md-6\">' +\n '<h6>Performance Metrics</h6>' +\n '<ul class=\"list-unstyled\">' +\n '<li><strong>Tasks Completed:</strong> ' + data.performance.tasks_completed + '</li>' +\n '<li><strong>Tasks Failed:</strong> ' + data.performance.tasks_failed + '</li>' +\n '<li><strong>Success Rate:</strong> ' + data.performance.success_rate.toFixed(1) + '%</li>' +\n '<li><strong>Average Task Time:</strong> ' + formatDuration(data.performance.average_task_time) + '</li>' +\n '<li><strong>Uptime:</strong> ' + formatDuration(data.performance.uptime) + '</li>' +\n '</ul>' +\n '</div>' +\n '</div>' +\n '<hr>' +\n '<h6>Current Tasks</h6>' +\n (data.current_tasks === null || data.current_tasks.length === 0 ?\n '<p class=\"text-muted\">No current tasks</p>' :\n data.current_tasks.map(task => \n '<div class=\"card mb-2\">' +\n '<div class=\"card-body py-2\">' +\n '<div class=\"d-flex justify-content-between\">' +\n '<span><strong>' + task.type + '</strong> - Volume ' + task.volume_id + '</span>' +\n '<span class=\"badge bg-info\">' + task.status + '</span>' +\n '</div>' +\n '<small class=\"text-muted\">' + task.reason + '</small>' +\n '</div>' +\n '</div>'\n ).join('')\n );\n modal.show();\n })\n .catch(error => {\n console.error('Error loading worker details:', error);\n const content = document.getElementById('workerDetailsContent');\n content.innerHTML = '<div class=\"alert alert-danger\">Failed to load worker details</div>';\n modal.show();\n });\n }\n\n function pauseWorker(event) {\n const workerID = event.target.closest('button').getAttribute('data-worker-id');\n \n showConfirm(`Are you sure you want to pause worker ${workerID}?`, function() {\n const encodedWorkerId = encodeURIComponent(workerID);\n fetch('/api/maintenance/workers/' + encodedWorkerId + '/pause', {\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 location.reload();\n } else {\n showAlert('FaileLine truncated
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ_7745c5c3_Err
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user