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 ?? ''}
}
];