tachybase_todo/packages/client/src/collection-manager/Configuration/schemas/collectionFields.ts
2022-02-21 15:08:45 +08:00

202 lines
4.9 KiB
TypeScript

import { ISchema } from '@formily/react';
import { CollectionOptions } from '../../types';
import { options } from '../interfaces';
const collection: CollectionOptions = {
name: 'fields',
fields: [
{
type: 'string',
name: 'type',
interface: 'input',
uiSchema: {
title: '{{ t("Storage type") }}',
type: 'string',
'x-component': 'Select',
enum: [
{
label: 'String',
value: 'string',
},
],
required: true,
},
},
{
type: 'string',
name: 'interface',
interface: 'input',
uiSchema: {
title: '{{ t("Field interface") }}',
type: 'string',
'x-component': 'Select',
enum: options as any,
},
},
{
type: 'string',
name: 'title',
interface: 'input',
uiSchema: {
title: '{{ t("Field display name") }}',
type: 'string',
'x-component': 'Input',
required: true,
},
},
{
type: 'string',
name: 'name',
interface: 'input',
uiSchema: {
title: '{{ t("Field name") }}',
type: 'string',
'x-component': 'Input',
},
},
],
};
export const collectionFieldSchema: ISchema = {
type: 'void',
'x-collection-field': 'collections.fields',
'x-decorator': 'ResourceActionProvider',
'x-decorator-props': {
association: {
sourceKey: 'name',
targetKey: 'name',
},
collection,
request: {
resource: 'collections.fields',
action: 'list',
params: {
pageSize: 50,
filter: {},
// sort: ['sort'],
appends: ['uiSchema'],
},
},
},
// 'x-component': 'CollectionProvider',
// 'x-component-props': {
// collection,
// },
properties: {
actions: {
type: 'void',
'x-component': 'ActionBar',
'x-component-props': {
style: {
marginBottom: 16,
},
},
properties: {
delete: {
type: 'void',
title: '{{ t("Delete") }}',
'x-component': 'Action',
"x-component-props": {
confirm: {
title: "{{t('Delete record')}}",
content: "{{t('Are you sure you want to delete it?')}}",
},
}
},
create: {
type: 'void',
title: '{{ t("Add new") }}',
'x-component': 'AddFieldAction',
'x-component-props': {
type: 'primary',
},
},
},
},
table: {
type: 'void',
'x-uid': 'input',
'x-component': 'VoidTable',
'x-component-props': {
rowKey: 'id',
rowSelection: {
type: 'checkbox',
},
useDataSource: '{{ cm.useDataSourceFromRAC }}',
},
properties: {
column1: {
type: 'void',
title: '{{ t("Field display name") }}',
'x-component': 'VoidTable.Column',
properties: {
'uiSchema.title': {
type: 'number',
'x-component': 'Input',
'x-read-pretty': true,
},
},
},
column2: {
type: 'void',
'x-decorator': 'TableColumnDecorator',
'x-component': 'VoidTable.Column',
properties: {
name: {
'x-component': 'CollectionField',
'x-read-pretty': true,
},
},
},
column3: {
type: 'void',
'x-decorator': 'TableColumnDecorator',
'x-component': 'VoidTable.Column',
properties: {
interface: {
'x-component': 'CollectionField',
'x-read-pretty': true,
},
},
},
column4: {
type: 'void',
title: '{{ t("Actions") }}',
'x-component': 'VoidTable.Column',
properties: {
actions: {
type: 'void',
'x-component': 'Space',
'x-component-props': {
split: '|',
},
properties: {
update: {
type: 'void',
title: '{{ t("Edit") }}',
'x-component': 'EditFieldAction',
'x-component-props': {
type: 'primary',
},
},
delete: {
type: 'void',
title: '{{ t("Delete") }}',
'x-component': 'Action.Link',
'x-component-props': {
confirm: {
title: "{{t('Delete record')}}",
content: "{{t('Are you sure you want to delete it?')}}",
},
useAction: '{{ cm.useDestroyActionAndRefreshCM }}',
},
},
},
},
},
},
},
},
},
};