import { ArrayTable } from '@formily/antd-v5'; import { observer, useField } from '@formily/react'; import { ExtendCollectionsProvider, FormProvider, SchemaComponent, TableBlockProvider, useCollection_deprecated, useCompile, useRecord, } from '@nocobase/client'; import React, { createContext, useContext } from 'react'; import { AuditLogsDesigner } from './AuditLogsDesigner'; import { tval } from '../locale'; const collection = { name: 'auditLogs', title: tval('Audit logs'), fields: [ { name: 'createdAt', type: 'date', interface: 'createdAt', uiSchema: { type: 'datetime', title: tval('Created at'), 'x-component': 'DatePicker', 'x-component-props': { showTime: true, }, 'x-read-pretty': true, }, }, { name: 'type', type: 'string', interface: 'select', uiSchema: { type: 'string', title: tval('Action type'), 'x-component': 'Select', 'x-read-pretty': true, enum: [ { label: tval('Create record'), value: 'create', color: 'lime' }, { label: tval('Update record'), value: 'update', color: 'gold' }, { label: tval('Delete record'), value: 'destroy', color: 'magenta' }, ], }, }, ], }; const Username = observer( () => { const field = useField(); return
{field?.value?.nickname || field.value?.id}
; }, { displayName: 'Username' }, ); const Collection = observer( () => { const field = useField(); const { title, name } = field.value || {}; const compile = useCompile(); return
{title ? compile(title) : name}
; }, { displayName: 'Collection' }, ); const Field = observer( () => { const field = useField(); const compile = useCompile(); if (!field.value) { return null; } return
{field.value?.uiSchema?.title ? compile(field.value?.uiSchema?.title) : field.value.name}
; }, { displayName: 'Field' }, ); const Value = observer( () => { const field = useField(); const record = ArrayTable.useRecord(); if (record.field?.uiSchema) { return ( ); } return
{field.value ? JSON.stringify(field.value) : null}
; }, { displayName: 'Value' }, ); const IsAssociationBlock = createContext(null); IsAssociationBlock.displayName = 'IsAssociationBlock'; export const AuditLogs: any = () => { const isAssoc = useContext(IsAssociationBlock); const ext = {}; if (!isAssoc) { ext['column31'] = { type: 'void', 'x-component': 'TableV2.Column', title: tval('Record ID'), properties: { recordId: { 'x-component': 'Input', 'x-read-pretty': true, }, }, }; } return ( ); }; AuditLogs.Decorator = observer( (props: any) => { const parent = useCollection_deprecated(); const record = useRecord(); let filter = props?.params?.filter; if (parent.name) { const filterByTk = record?.[parent.filterTargetKey || 'id']; if (filter) { filter = { $and: [ filter, { collectionName: parent.name, recordId: `${filterByTk}`, }, ], }; } else { filter = { collectionName: parent.name, recordId: `${filterByTk}`, }; } } const defaults = { collection: 'auditLogs', resource: 'auditLogs', action: 'list', params: { pageSize: 20, appends: ['collection', 'user'], ...props.params, filter, sort: '-createdAt', }, rowKey: 'id', showIndex: true, dragSort: false, }; return ( {props.children} ); }, { displayName: 'AuditLogs.Decorator' }, ); AuditLogs.Designer = AuditLogsDesigner;