class TimelineTasks extends HTMLElement {
connectedCallback() {
this.attachShadow({ mode: 'open' });
this.render();
}
render() {
this.shadowRoot.innerHTML = `
Timeline
`;
}
updateTasks(tasks) {
const container = this.shadowRoot.getElementById('timeline-task-list');
container.innerHTML = tasks.map(task => `
${task.title}
${formatTime(task.estimatedTime)}
`).join('');
}
}
customElements.define('timeline-tasks', TimelineTasks);
function formatTime(minutes) {
const h = Math.floor(minutes / 60);
const m = minutes % 60;
return `${h}h ${m}m`;
}