tachybase_todo/packages/plugins/@tachybase/plugin-messages/src/client/collections.tsx
2024-09-26 21:17:49 +08:00

152 lines
3.7 KiB
TypeScript

import { tval } from './locale';
export const useMessageCollection = () => {
return {
name: 'messages',
title: tval('Messages'),
fields: [
{
name: 'createdAt',
type: 'date',
interface: 'createdAt',
uiSchema: {
type: 'datetime',
title: tval('Created at'),
'x-component': 'DatePicker',
'x-component-props': {
showTime: true,
ellipsis: true,
},
'x-read-pretty': true,
},
},
{
interface: 'input',
type: 'string',
name: 'title',
allowNull: false,
unique: false,
uiSchema: {
type: 'string',
title: '{{t("Title")}}',
'x-component': 'Input',
required: true,
},
},
{
interface: 'input',
type: 'string',
name: 'content',
allowNull: false,
unique: false,
uiSchema: {
type: 'string',
title: '{{t("Content")}}',
'x-component': 'Input',
required: true,
},
},
{
name: 'type',
type: 'string',
interface: 'select',
uiSchema: {
type: 'string',
title: tval('Action type'),
'x-component': 'Select',
'x-component-props': { ellipsis: true },
'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' },
],
},
},
{
name: 'recordId',
type: 'string',
interface: 'input',
uiSchema: {
title: tval('Record ID'),
type: 'string',
'x-component': 'Input',
'x-component-props': { ellipsis: true },
},
},
{
collectionName: 'messages',
name: 'collection',
type: 'belongsTo',
interface: 'm2o',
target: 'collections',
targetKey: 'name',
sourceKey: 'id',
foreignKey: 'collectionName',
uiSchema: {
type: 'object',
title: tval('Collection'),
'x-component': 'AssociationField',
'x-component-props': { fieldNames: { value: 'name', label: 'title' }, ellipsis: true },
'x-read-pretty': true,
},
},
{
name: 'user',
collectionName: 'messages',
type: 'belongsTo',
interface: 'createdBy',
targetKey: 'id',
foreignKey: 'createdById',
target: 'users',
uiSchema: {
type: 'object',
title: tval('User'),
'x-component': 'AssociationField',
'x-component-props': { fieldNames: { value: 'id', label: 'nickname' }, ellipsis: true },
'x-read-pretty': true,
},
},
],
};
};
export const useAuditChangesCollection = () => {
return {
name: 'auditChanges',
title: tval('Audit Changes'),
fields: [],
};
};
export const useCollectionsCollection = () => {
return {
name: 'collections',
title: tval('Collections'),
fields: [
{
name: 'name',
type: 'string',
interface: 'input',
uiSchema: {
title: tval('Collection name'),
type: 'string',
'x-component': 'Input',
'x-component-props': { ellipsis: true },
},
},
{
name: 'title',
type: 'string',
interface: 'input',
uiSchema: {
title: tval('Collection display name'),
type: 'string',
'x-component': 'Input',
'x-component-props': { ellipsis: true },
},
},
],
};
};