feat&fix: update paths in configuration, enhance error handling, and improve UI elements

This commit is contained in:
adlsdztony
2025-06-01 04:48:50 +00:00
parent d1a001b2b7
commit cb62b3c877
13 changed files with 359 additions and 68 deletions

View File

@@ -5,6 +5,7 @@ document.addEventListener('DOMContentLoaded', () => {
document.getElementById('total-tasks').parentElement.addEventListener('click', () => setTaskFilter('all'));
document.getElementById('active-tasks').parentElement.addEventListener('click', () => setTaskFilter('active'));
document.getElementById('completed-tasks').parentElement.addEventListener('click', () => setTaskFilter('completed'));
document.getElementById('error-tasks').parentElement.addEventListener('click', () => setTaskFilter('error'));
});
let allTaskData = null;
@@ -49,6 +50,8 @@ function setTaskFilter(filter) {
document.getElementById('active-tasks').parentElement.classList.add('selected');
} else if (filter === 'completed') {
document.getElementById('completed-tasks').parentElement.classList.add('selected');
} else if (filter === 'error') {
document.getElementById('error-tasks').parentElement.classList.add('selected');
}
}
@@ -57,14 +60,17 @@ function updateStatistics(data) {
let totalTasks = 0;
let activeTasks = 0;
let completedTasks = 0;
let errorTasks = 0;
Object.entries(data).forEach(([taskType, tasks]) => {
totalTasks += tasks.length;
tasks.forEach(task => {
if (task.status.status === 'Running' || task.status.status === 'Preparing' || task.status.status === 'Initializing') {
activeTasks++;
} else if (task.status.status === 'Done') {
} else if (task.status.status === 'Done' || task.status.status === 'Done (Message Exit)' || task.status.status === 'Done (Max Steps)') {
completedTasks++;
} else if (task.status.status === 'Error') {
errorTasks++;
}
});
});
@@ -72,6 +78,19 @@ function updateStatistics(data) {
document.getElementById('total-tasks').textContent = totalTasks;
document.getElementById('active-tasks').textContent = activeTasks;
document.getElementById('completed-tasks').textContent = completedTasks;
document.getElementById('error-tasks').textContent = errorTasks;
// 高亮显示当前选中的统计卡片
document.querySelectorAll('.stat-card').forEach(card => card.classList.remove('selected'));
if (currentFilter === 'all') {
document.getElementById('total-tasks').parentElement.classList.add('selected');
} else if (currentFilter === 'active') {
document.getElementById('active-tasks').parentElement.classList.add('selected');
} else if (currentFilter === 'completed') {
document.getElementById('completed-tasks').parentElement.classList.add('selected');
} else if (currentFilter === 'error') {
document.getElementById('error-tasks').parentElement.classList.add('selected');
}
}
function renderTasks(data) {
@@ -86,7 +105,9 @@ function renderTasks(data) {
if (currentFilter === 'active') {
filteredTasks = tasks.filter(task => ['Running', 'Preparing', 'Initializing'].includes(task.status.status));
} else if (currentFilter === 'completed') {
filteredTasks = tasks.filter(task => task.status.status === 'Done');
filteredTasks = tasks.filter(task => task.status.status === 'Done' || task.status.status === 'Done (Message Exit)' || task.status.status === 'Done (Max Steps)');
} else if (currentFilter === 'error') {
filteredTasks = tasks.filter(task => task.status.status === 'Error');
}
if (filteredTasks.length > 0) {
filteredData[taskType] = filteredTasks;
@@ -107,7 +128,7 @@ function renderTasks(data) {
tasks.forEach(task => {
if (task.status.status === 'Running' || task.status.status === 'Preparing' || task.status.status === 'Initializing') {
runningCount++;
} else if (task.status.status === 'Done') {
} else if (task.status.status === 'Done' || task.status.status === 'Done (Message Exit)' || task.status.status === 'Done (Max Steps)') {
completedCount++;
} else if (task.status.status === 'Error') {
errorCount++;
@@ -146,6 +167,12 @@ function renderTasks(data) {
noTasks.innerHTML = '<i class="fas fa-info-circle"></i> No Tasks Available';
tasksContainer.appendChild(noTasks);
} else {
// Add scrolling for large task lists
if (tasks.length > 10) {
tasksContainer.style.maxHeight = '600px';
tasksContainer.style.overflowY = 'auto';
}
tasks.forEach(task => {
const taskCard = document.createElement('div');
taskCard.className = 'task-card';
@@ -178,6 +205,8 @@ function renderTasks(data) {
statusIcon = 'fa-running';
break;
case 'Done':
case 'Done (Message Exit)':
case 'Done (Max Steps)':
statusClass = 'status-completed';
statusIcon = 'fa-check-circle';
break;
@@ -185,6 +214,10 @@ function renderTasks(data) {
statusClass = 'status-error';
statusIcon = 'fa-exclamation-circle';
break;
default:
statusClass = 'status-unknown';
statusIcon = 'fa-question-circle';
break;
}
taskStatus.classList.add(statusClass);
@@ -202,7 +235,7 @@ function renderTasks(data) {
if (task.status.progress > 0) {
const progressText = document.createElement('div');
progressText.innerHTML = `<i class="fas fa-chart-line"></i> Progress: ${task.status.progress} step(s)`;
progressText.innerHTML = `<i class="fas fa-chart-line"></i> Progress: ${task.status.progress}/${task.status.max_steps} step(s)`;
taskProgress.appendChild(progressText);
const progressBar = document.createElement('div');