class TodoList {
static renderTodoList(todos, {
onEditExecutor,
onEditSchedule,
onEditTitle,
onEditDescription,
onDelete,
onComplete,
onToggleDescription
}) {
const todosContainer = document.createElement('div');
todosContainer.className = 'todo-container';
todos.forEach(todo => {
const todoElement = document.createElement('div');
todoElement.className = 'todo-item';
// 格式化日期
const createdDate = new Date(todo.created_at).toLocaleString('zh-CN');
const scheDate = new Date(todo.sche_time).toLocaleString('zh-CN');
const completeDate = todo.complete_time ?
new Date(todo.complete_time).toLocaleString('zh-CN') : '';
todoElement.innerHTML = `
${todo.completed ? `
完成时间:
${completeDate}
` : ''}
`;
// 添加执行人链接点击事件
const executorLink = todoElement.querySelector('.executor-link');
executorLink.addEventListener('click', (e) => {
e.preventDefault();
onEditExecutor(todo);
});
// 添加计划时间链接点击事件
const scheduleLink = todoElement.querySelector('.schedule-link');
scheduleLink.addEventListener('click', (e) => {
e.preventDefault();
onEditSchedule(todo);
});
// 添加编辑按钮事件
const editButton = todoElement.querySelector('.edit-button');
editButton.addEventListener('click', () => {
onEditTitle(todo);
});
// 添加描述编辑按钮事件
const descriptionEditButton = todoElement.querySelector('.todo-description .edit-button');
descriptionEditButton.addEventListener('click', () => {
onEditDescription(todo);
});
// 添加删除按钮事件
const deleteButton = todoElement.querySelector('.delete-button');
deleteButton.addEventListener('click', () => {
onDelete(todo);
});
// 添加完成/取消完成按钮事件
const completeButton = todoElement.querySelector('.complete-button');
completeButton.addEventListener('click', () => {
onComplete(todo);
});
// 添加展开/收起按钮事件
const toggleButton = todoElement.querySelector('.toggle-button');
const descriptionContent = todoElement.querySelector('.description-content');
const toggleIcon = toggleButton.querySelector('.toggle-icon');
// 移除可能存在的旧事件监听器
const newToggleButton = toggleButton.cloneNode(true);
toggleButton.parentNode.replaceChild(newToggleButton, toggleButton);
// 添加新的事件监听器
newToggleButton.addEventListener('click', function(e) {
e.preventDefault();
e.stopPropagation();
onToggleDescription(descriptionContent, newToggleButton);
});
todosContainer.appendChild(todoElement);
});
return todosContainer;
}
}
export default TodoList;