import { ArrowUpDown } from 'lucide-vue-next'; import { Button } from '../../ui/button'; import { i18n } from '../../../plugin'; import { formatDateFilter } from '../../../shared/utils'; const { t } = i18n.global; const sortButton = ({ column, label, descFirst = false }) => ( ); export const createColumns = ({ onLookupUser }) => [ { id: 'created_at', accessorFn: (row) => (row?.created_at ? Date.parse(row.created_at) : 0), size: 170, header: ({ column }) => sortButton({ column, label: t('table.previous_instances.date'), descFirst: true }), cell: ({ row }) => { const createdAt = row.original?.created_at; const shortText = formatDateFilter(createdAt, 'short'); const longText = formatDateFilter(createdAt, 'long'); return {shortText}; } }, { id: 'friend', accessorFn: (row) => (row?.isFavorite ? 2 : row?.isFriend ? 1 : 0), size: 70, enableSorting: false, header: () => t('table.gameLog.icon'), meta: { thClass: 'text-center', tdClass: 'text-center' }, cell: ({ row }) => { const original = row.original; if (original?.isFavorite) { return ; } if (original?.isFriend) { return 💚; } return null; } }, { id: 'displayName', accessorFn: (row) => row?.displayName ?? '', header: ({ column }) => sortButton({ column, label: t('table.previous_instances.display_name') }), meta: { stretch: true }, cell: ({ row }) => { const original = row.original; return ( { event.stopPropagation(); onLookupUser?.(original); }} > {original?.displayName ?? ''} ); } }, { id: 'time', accessorFn: (row) => row?.time ?? 0, size: 100, header: ({ column }) => sortButton({ column, label: t('table.previous_instances.time') }), cell: ({ row }) => {row.original?.timer ?? ''} }, { id: 'count', accessorFn: (row) => row?.count ?? 0, size: 100, header: ({ column }) => sortButton({ column, label: t('table.previous_instances.count') }), cell: ({ row }) => {row.original?.count ?? ''} } ];