ConceptPortal-public/rsconcept/frontend/src/pages/UserProfilePage/ViewSubscriptions.tsx

84 lines
2.2 KiB
TypeScript
Raw Normal View History

'use client';
import { motion } from 'framer-motion';
2023-08-26 17:26:49 +03:00
import { useMemo } from 'react';
import { useIntl } from 'react-intl';
import DataTable, { createColumnHelper } from '@/components/DataTable';
2023-12-26 14:23:51 +03:00
import { useConceptNavigation } from '@/context/NavigationContext';
import { ILibraryItem } from '@/models/library';
import { animateSideView } from '@/utils/animations';
2023-08-26 17:26:49 +03:00
interface ViewSubscriptionsProps {
2023-12-28 14:04:44 +03:00
items: ILibraryItem[];
2023-08-26 17:26:49 +03:00
}
const columnHelper = createColumnHelper<ILibraryItem>();
2023-12-28 14:04:44 +03:00
function ViewSubscriptions({ items }: ViewSubscriptionsProps) {
const router = useConceptNavigation();
2023-08-26 17:26:49 +03:00
const intl = useIntl();
const openRSForm = (item: ILibraryItem) => router.push(`/rsforms/${item.id}`);
2023-08-26 17:26:49 +03:00
2023-12-28 14:04:44 +03:00
const columns = useMemo(
() => [
columnHelper.accessor('alias', {
id: 'alias',
header: 'Шифр',
size: 200,
minSize: 200,
maxSize: 200,
enableSorting: true
}),
columnHelper.accessor('title', {
id: 'title',
header: 'Название',
minSize: 200,
size: 800,
maxSize: 800,
enableSorting: true
}),
columnHelper.accessor('time_update', {
id: 'time_update',
2023-12-28 14:04:44 +03:00
header: 'Обновлена',
minSize: 150,
size: 150,
maxSize: 150,
cell: props => (
2024-01-04 15:04:14 +03:00
<div className='text-sm whitespace-nowrap'>{new Date(props.cell.getValue()).toLocaleString(intl.locale)}</div>
2023-12-28 14:04:44 +03:00
),
enableSorting: true
})
],
[intl]
);
2023-08-26 17:26:49 +03:00
2023-12-28 14:04:44 +03:00
return (
<motion.div
initial={{ ...animateSideView.initial }}
animate={{ ...animateSideView.animate }}
exit={{ ...animateSideView.exit }}
>
<h1 className='mb-6'>Отслеживаемые схемы</h1>
<DataTable
dense
noFooter
className='max-h-[23.8rem] overflow-y-auto text-sm border'
columns={columns}
data={items}
headPosition='0'
enableSorting
initialSorting={{
id: 'time_update',
desc: true
}}
noDataComponent={<div className='h-[10rem]'>Отслеживаемые схемы отсутствуют</div>}
onRowClicked={openRSForm}
/>
</motion.div>
);
2023-08-26 17:26:49 +03:00
}
2023-12-28 14:04:44 +03:00
export default ViewSubscriptions;