Add webapp subproject (Vite + TypeScript + Web Components)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
30
webapp/src/components/days-page.ts
Normal file
30
webapp/src/components/days-page.ts
Normal file
@@ -0,0 +1,30 @@
|
||||
import { api, DaySummary } from '../api'
|
||||
import { navigate } from '../router'
|
||||
|
||||
export class DaysPage extends HTMLElement {
|
||||
async connectedCallback(): Promise<void> {
|
||||
this.innerHTML = '<p>Lade...</p>'
|
||||
try {
|
||||
const days = await api.getDays()
|
||||
if (days.length === 0) {
|
||||
this.innerHTML = '<p>Noch keine Einträge.</p>'
|
||||
return
|
||||
}
|
||||
this.innerHTML = '<h1>Tage</h1><ul id="days-list"></ul>'
|
||||
const list = this.querySelector('#days-list')!
|
||||
for (const day of days) {
|
||||
const li = document.createElement('li')
|
||||
const a = document.createElement('a')
|
||||
a.href = `/days/${day.date}`
|
||||
a.textContent = `${day.date} (${day.count} Punkte)`
|
||||
a.addEventListener('click', (e) => { e.preventDefault(); navigate(`/days/${day.date}`) })
|
||||
li.appendChild(a)
|
||||
list.appendChild(li)
|
||||
}
|
||||
} catch (err) {
|
||||
this.innerHTML = `<p>Fehler: ${err}</p>`
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
customElements.define('days-page', DaysPage)
|
||||
Reference in New Issue
Block a user