4fbad75ea9
* feat(plugin-workflow): add prompt node * feat(plugin-workflow): useValueGetter for all instructions and triggers * feat(plugin-workflow): add workflow block initializer * refactor(plugin-workflow): change prompt node type to manual * feat(plugin-workflow): add ModeConfig component for mode * feat(plugin-workflow): add todo drawer * feat(plugin-workflow): add block value provider * feat(plugin-workflow): improve todo block and drawer * fix(plugin-workflow): fix instruction name in test cases * fix(plugin-workflow): fix test cases * refactor(plugin-workflow): change param type of collection field initializer * feat(plugin-workflow): add filter types for getters * fix(plugin-workflow): fix assignees variable * fix(plugin-workflow): filter todo by exist workflow * fix(plugin-workflow): fix duplicated save action in manual config * fix(plugin-workflow): fix transaction * feat(plugin-workflow): destroy workflow will be cascaded * fix(plugin-workflow): fix merge * fix(plugin-workflow): fix locale * fix(plugin-workflow): allow open ui view when executed * fix(plugin-workflow): change todo table filter * feat(plugin-workflow): use formula for calculation * fix(plugin-workflow): fix variable template regexp * fix(plugin-workflow): fix sub-options logic with types * refactor(plugin-workflow): drop useless component * fix(plugin-workflow): fix manual node action button * feat(plugin-workflow): add new variable input component * refactor(plugin-workflow): change all variable to new component * fix(plugin-workflow): fix type * fix(plugin-workflow): fix functions init * fix(plugin-workflow): change jsonb to json for stable order * fix(plugin-workflow): fix duplicated field name when initialize * fix(plugin-workflow): fix manual result in manual block * test(plugin-workflow): log field initializer props * fix(plugin-workflow): fix nullable arguments * test(plugin-workflow): test initializer fields schema * fix: observer * fix(plugin-workflow): adjust hints * fix(plugin-workflow): fix locale and cursor in variable input * refactor(plugin-workflow): change status keys * fix(plugin-workflow): fix parallel instruction * fix(plugin-workflow): fix calculation migration * fix(plugin-workflow): move tasks native filter to server * fix(plugin-workflow): fix manual options for variable * fix(plugin-workflow): fix conflict * fix(plugin-workflow): fix some bugs * fix(plugin-workflow): fix todo list filter and locale * fix(plugin-workflow): fix update action of workflow * refactor(plugin-workflow): add legacy condition calculation as basic engine * fix(plugin-workflow): fix type * fix(plugin-workflow): fix condition basic calculation * fix(plugin-workflow): fix type * fix(plugin-workflow): fix migration * fix(plugin-workflow): fix evaluators and scope * fix(plugin-workflow): remove disabled type select in schema config * fix(plugin-workflow): fix manual form schema designer --------- Co-authored-by: chenos <chenlinxh@gmail.com>
90 lines
2.8 KiB
TypeScript
90 lines
2.8 KiB
TypeScript
import React, { useContext } from 'react';
|
|
import { Card } from 'antd';
|
|
import { PluginManagerContext, RouteSwitchContext, SchemaComponent, SchemaComponentOptions, SettingsCenterProvider } from '@nocobase/client';
|
|
import { WorkflowPage } from './WorkflowPage';
|
|
import { ExecutionPage } from './ExecutionPage';
|
|
import { triggers } from './triggers';
|
|
import { instructions } from './nodes';
|
|
import { lang } from './locale';
|
|
import { workflowSchema } from './schemas/workflows';
|
|
import { WorkflowLink } from './WorkflowLink';
|
|
import { ExecutionResourceProvider } from './ExecutionResourceProvider';
|
|
import { ExecutionLink } from './ExecutionLink';
|
|
import OpenDrawer from './components/OpenDrawer';
|
|
import { WorkflowTodo } from './nodes/manual/WorkflowTodo';
|
|
import { WorkflowTodoBlockInitializer } from './nodes/manual/WorkflowTodoBlockInitializer';
|
|
|
|
export const WorkflowContext = React.createContext({});
|
|
|
|
export function useWorkflowContext() {
|
|
return useContext(WorkflowContext);
|
|
}
|
|
|
|
function WorkflowPane() {
|
|
return (
|
|
<Card bordered={false}>
|
|
<SchemaComponent
|
|
schema={workflowSchema}
|
|
components={{
|
|
WorkflowLink,
|
|
ExecutionResourceProvider,
|
|
ExecutionLink,
|
|
OpenDrawer
|
|
}}
|
|
/>
|
|
</Card>
|
|
);
|
|
};
|
|
|
|
export const WorkflowProvider = (props) => {
|
|
const ctx = useContext(PluginManagerContext);
|
|
const { routes, components, ...others } = useContext(RouteSwitchContext);
|
|
routes[1].routes.unshift(
|
|
{
|
|
type: 'route',
|
|
path: '/admin/settings/workflow/workflows/:id',
|
|
component: 'WorkflowPage',
|
|
},
|
|
{
|
|
type: 'route',
|
|
path: '/admin/settings/workflow/executions/:id',
|
|
component: 'ExecutionPage',
|
|
},
|
|
);
|
|
return (
|
|
<SettingsCenterProvider
|
|
settings={{
|
|
workflow: {
|
|
icon: 'PartitionOutlined',
|
|
// title: `{{t("Workflow", { ns: "${NAMESPACE}" })}}`,
|
|
title: lang('Workflow'),
|
|
tabs: {
|
|
workflows: {
|
|
isBookmark: true,
|
|
title: lang('Workflow'),
|
|
component: WorkflowPane,
|
|
},
|
|
},
|
|
},
|
|
}}
|
|
>
|
|
<PluginManagerContext.Provider
|
|
value={{
|
|
components: {
|
|
...ctx?.components,
|
|
// WorkflowShortcut,
|
|
},
|
|
}}
|
|
>
|
|
<RouteSwitchContext.Provider value={{ components: { ...components, WorkflowPage, ExecutionPage }, ...others, routes }}>
|
|
<SchemaComponentOptions components={{ WorkflowTodo, WorkflowTodoBlockInitializer }}>
|
|
<WorkflowContext.Provider value={{ triggers, instructions }}>
|
|
{props.children}
|
|
</WorkflowContext.Provider>
|
|
</SchemaComponentOptions>
|
|
</RouteSwitchContext.Provider>
|
|
</PluginManagerContext.Provider>
|
|
</SettingsCenterProvider>
|
|
);
|
|
};
|