Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 | 1x 1x 4x 4x 4x 4x 4x 4x 4x 4x 4x 4x 4x 4x 4x 4x 4x 4x 4x 4x 4x 4x 4x 4x 4x 4x 4x 4x 4x 4x 4x 4x 4x 4x 4x 4x 4x 4x 4x 4x 4x 4x 4x 4x 4x 4x 4x 4x 4x 4x 4x 4x 4x 4x | import { DefaultRecordType } from 'rc-table/lib/interface'
import { FCWithClassName, Table } from '@tmk/ui-kit'
import { TableProps } from 'rc-table/lib/Table'
import { useTranslate } from '@/shared/lib'
import { ChangeLogItem, changeLogSortAtom, getChangeLogTableColumns } from '@/entities/change-log'
import { useAtom } from 'jotai'
import { useFilesCollection } from '@/entities/files'
import { useDocumentsCollection } from '@/entities/documents'
import { getFieldIdsFromCollection } from '@/shared/helpers'
export interface ChangeLogTableProps extends TableProps<DefaultRecordType> {
data?: ChangeLogItem[]
isLoading?: boolean
}
export const ChangeLogTable: FCWithClassName<ChangeLogTableProps> = ({ data, isLoading, ...rest }) => {
const { t } = useTranslate(['common', 'accounting-object'])
const [sortChangeLog, setSortChangeLog] = useAtom(changeLogSortAtom)
const changeLogDataNew = data?.map(item => item?.data)
const changeLogDataOld = data?.map(item => item?.lastData)
const { data: documents, isLoading: isLoadingDocuments } = useDocumentsCollection({
enabled: !!data,
filters: {
id: getFieldIdsFromCollection('documents', changeLogDataNew),
},
key: ['change-log-collection-documents'],
})
const { data: files, isLoading: isFilesLoading } = useFilesCollection({
enabled: !!data,
filters: {
id: [
...getFieldIdsFromCollection('file', changeLogDataNew),
...getFieldIdsFromCollection('file', changeLogDataOld),
...getFieldIdsFromCollection('mediaFiles', changeLogDataNew),
...getFieldIdsFromCollection('mediaFiles', changeLogDataOld),
],
},
key: ['change-log-collection-files'],
})
return (
<Table
{...rest}
t={t}
caption={false}
rowClassName='text-min bg-white hover:bg-gray-secondary'
tableClassname={{
body: {
cell: 'border-b border-border first:text-center !py-0 h-14 !text-black align-middle !px-0',
row: 'contents ',
},
header: { cell: '!pb-0 h-[50px] !text-black !px-0' },
table: 'rounded-base overflow-hidden',
}}
isLoading={isLoading}
data={data}
emptyText={
<p className='text-main-regular text-text-secondary'>{t('accounting-object:The_list_of_changes_is_empty')}</p>
}
>
{getChangeLogTableColumns({
t: t,
sort: sortChangeLog,
setSort: setSortChangeLog,
files: files?.['hydra:member'],
isFilesLoading,
documents: documents?.['hydra:member'],
isLoadingDocuments,
})}
</Table>
)
}
|