chenos 1ad57fa514 Revert "feat: remove charts plugin (#5737)"
This reverts commit 73003568a61236106b9f4f3ad7a4580339f80737.
2024-11-28 10:29:45 +08:00

329 lines
11 KiB
TypeScript

/**
* This file is part of the NocoBase (R) project.
* Copyright (c) 2020-2024 NocoBase Co., Ltd.
* Authors: NocoBase Team.
*
* This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
* For more information, please refer to: https://www.nocobase.com/agreement.
*/
import { ISchema } from '@formily/react';
import { uid } from '@formily/shared';
import {
useActionContext,
useRecord,
useRequest,
useResourceActionContext,
useResourceContext,
} from '@nocobase/client';
import { useChartQueryMetadataContext } from '../../ChartQueryMetadataProvider';
const collection = {
name: 'chartsQueries',
fields: [
{
type: 'integer',
name: 'title',
interface: 'input',
uiSchema: {
title: '{{t("Title",{ns:"charts"})}}',
type: 'string',
'x-component': 'Input',
required: true,
} as ISchema,
},
{
type: 'string',
name: 'type',
interface: 'select',
uiSchema: {
title: '{{t("Type",{ns:"charts"})}}',
type: 'string',
'x-component': 'Select',
required: true,
enum: [
{ label: '{{t("API")}}', value: 'api' },
{ label: '{{t("SQL")}}', value: 'sql' },
{ label: '{{t("JSON")}}', value: 'json' },
],
} as ISchema,
},
],
};
export const useDestroyQueryItemAction = () => {
const ctx = useChartQueryMetadataContext();
const { refresh } = useResourceActionContext();
const { resource, targetKey } = useResourceContext();
const { [targetKey]: filterByTk } = useRecord();
return {
async run() {
await resource.destroy({ filterByTk });
refresh();
ctx.refresh();
},
};
};
export const useDestroyAllSelectedQueriesAction = () => {
const ctx = useChartQueryMetadataContext();
const { state, setState, refresh } = useResourceActionContext();
const { resource, targetKey } = useResourceContext();
return {
async run() {
await resource.destroy({
filterByTk: state?.selectedRowKeys || [],
});
setState?.({ selectedRowKeys: [] });
refresh();
ctx.refresh();
},
};
};
export const chartsQueriesSchema: ISchema = {
type: 'object',
properties: {
[uid()]: {
type: 'void',
'x-decorator': 'ResourceActionProvider',
'x-decorator-props': {
collection,
resourceName: 'chartsQueries',
request: {
resource: 'chartsQueries',
action: 'list',
params: {
pageSize: 50,
sort: ['-id'],
appends: [],
},
},
},
'x-component': 'CollectionProvider_deprecated',
'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': {
useAction: '{{ useDestroyAllSelectedQueriesAction }}',
confirm: {
title: '{{t("Delete queries",{ns:"charts"})}}',
content: "{{t('Are you sure you want to delete it?')}}",
},
},
},
create: {
type: 'void',
title: '{{t("Add query")}}',
'x-component': 'AddNewQuery',
'x-component-props': {
type: 'primary',
},
properties: {
drawer: {
type: 'void',
'x-component': 'Action.Drawer',
'x-decorator': 'Form',
'x-decorator-props': {
useValues(options) {
const ctx = useActionContext();
return useRequest(
() =>
Promise.resolve({
data: {
name: `s_${uid()}`,
},
}),
{ ...options, refreshDeps: [ctx.visible] },
);
},
},
title: '{{t("Add query",{ns:"charts"})}}',
properties: {
title: {
'x-component': 'CollectionField',
'x-decorator': 'FormItem',
},
type: {
'x-component': 'CollectionField',
'x-decorator': 'FormItem',
},
footer: {
type: 'void',
'x-component': 'Action.Drawer.Footer',
properties: {
cancel: {
title: '{{t("Cancel",{ns:"charts"})}}',
'x-component': 'Action',
'x-component-props': {
useAction: '{{ cm.useCancelAction }}',
},
},
submit: {
title: '{{t("Submit",{ns:"charts"})}}',
'x-component': 'Action',
'x-component-props': {
type: 'primary',
useAction: '{{ cm.useCreateAction }}',
},
},
},
},
},
},
},
},
},
},
table: {
type: 'void',
'x-uid': 'input',
'x-component': 'Table.Void',
'x-component-props': {
rowKey: 'id',
rowSelection: {
type: 'checkbox',
},
useDataSource: '{{ cm.useDataSourceFromRAC }}',
},
properties: {
title: {
type: 'void',
'x-decorator': 'Table.Column.Decorator',
'x-component': 'Table.Column',
properties: {
title: {
type: 'number',
'x-component': 'CollectionField',
'x-read-pretty': true,
},
},
},
type: {
type: 'void',
'x-decorator': 'Table.Column.Decorator',
'x-component': 'Table.Column',
properties: {
type: {
type: 'string',
'x-component': 'CollectionField',
'x-read-pretty': true,
},
},
},
actions: {
type: 'void',
title: '{{t("Actions")}}',
'x-component': 'Table.Column',
properties: {
actions: {
type: 'void',
'x-component': 'Space',
'x-component-props': {
split: '|',
},
properties: {
fields: {
type: 'void',
title: '{{t("Configure fields")}}',
'x-component': 'Action.Link',
'x-component-props': {
type: 'primary',
},
properties: {
drawer: {
type: 'void',
'x-component': 'Action.Drawer',
title: '{{t("Configure fields")}}',
properties: {
configure: {
type: 'void',
'x-component': 'ConfigureFields',
},
},
},
},
},
update: {
type: 'void',
title: '{{t("Edit")}}',
'x-component': 'EditQuery',
'x-component-props': {
type: 'primary',
},
properties: {
drawer: {
type: 'void',
'x-component': 'Action.Drawer',
'x-decorator': 'Form',
'x-decorator-props': {
useValues: '{{ cm.useValuesFromRecord }}',
},
title: '{{t("Edit")}}',
properties: {
title: {
'x-component': 'CollectionField',
'x-decorator': 'FormItem',
},
footer: {
type: 'void',
'x-component': 'Action.Drawer.Footer',
properties: {
cancel: {
title: '{{t("Cancel",{ns:"charts"})}}',
'x-component': 'Action',
'x-component-props': {
useAction: '{{ cm.useCancelAction }}',
},
},
submit: {
title: '{{t("Submit",{ns:"charts"})}}',
'x-component': 'Action',
'x-component-props': {
type: 'primary',
useAction: '{{ cm.useUpdateAction }}',
},
},
},
},
},
},
},
},
delete: {
type: 'void',
title: '{{ t("Delete") }}',
'x-component': 'Action.Link',
'x-component-props': {
confirm: {
title: '{{t("Delete query",{ns:"charts"})}}',
content: "{{t('Are you sure you want to delete it?')}}",
},
useAction: '{{ useDestroyQueryItemAction }}',
},
},
},
},
},
},
},
},
},
},
},
};