--- import DefaultLayout from '@shared/layouts/DefaultLayout.astro' import { toUnixSeconds, formatLongDate } from '@shared/lib/date-format' import { randomNumber, randomDate } from '@shared/lib/pseudo-random' import Card from '@ui/Card.astro' import CardHeader from '@ui/CardHeader.astro' import CardBody from '@ui/CardBody.astro' import CardTitle from '@ui/CardTitle.astro' import CardSubtitle from '@ui/CardSubtitle.astro' import Progress from '@ui/Progress.astro' import TablerList from '@shared/components/js/TablerList.astro' import rollercoasters from '@data/rollercoasters.json' interface Rollercoaster { name: string city: string type: string score: string } const id = 'default' const rows = (rollercoasters as Rollercoaster[]).map((rc, i) => { const index = i + 1 const progress = randomNumber(index, 0, 100) const date = randomDate(index) return { rc, progress, quantity: randomNumber(index, 1, 200), dateSeconds: toUnixSeconds(date), dateLabel: formatLongDate(date), } }) const valueNames = ['sort-name', 'sort-type', 'sort-city', 'sort-score', { attr: 'data-date', name: 'sort-date' }, { attr: 'data-progress', name: 'sort-progress' }, 'sort-quantity'] ---
Sortable table Click a column header to sort the rows by that value.
{ rows.map(({ rc, progress, quantity, dateSeconds, dateLabel }) => ( )) }
{rc.name} {rc.city} {rc.type} {rc.score} {dateLabel} {quantity}
{progress}%