Junyi 4fbad75ea9
Feat(plugin-workflow) manual instruction (#1339)
* 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>
2023-02-20 11:52:06 +08:00

200 lines
5.6 KiB
TypeScript

import { ArrayItems } from '@formily/antd';
import { css } from '@emotion/css';
import { NAMESPACE } from '../locale';
import { useWorkflowVariableOptions } from '../variable';
import { VariableJSONInput } from '../components/VariableJSONInput';
import { VariableInput } from '../components/VariableInput';
export default {
title: `{{t("HTTP request", { ns: "${NAMESPACE}" })}}`,
type: 'request',
group: 'extended',
fieldset: {
'config.method': {
type: 'string',
name: 'config.method',
required: true,
title: `{{t("HTTP method", { ns: "${NAMESPACE}" })}}`,
'x-decorator': 'FormItem',
'x-component': 'Select',
'x-component-props': {
showSearch: false,
allowClear: false,
},
enum: [
{ label: 'GET', value: 'GET' },
{ label: 'POST', value: 'POST' },
{ label: 'PUT', value: 'PUT' },
{ label: 'PATCH', value: 'PATCH' },
{ label: 'DELETE', value: 'DELETE' },
],
default: 'POST'
},
'config.url': {
type: 'string',
name: 'config.url',
required: true,
title: `{{t("URL", { ns: "${NAMESPACE}" })}}`,
'x-decorator': 'FormItem',
'x-decorator-props': {
className: css`
.ant-formily-item-control-content-component{
.ant-input-affix-wrapper,
.ant-input{
width: 100%;
}
}
`
},
'x-component': 'Input',
'x-component-props': {
placeholder: 'https://www.nocobase.com',
},
},
'config.headers': {
type: 'array',
name: 'config.headers',
'x-component': 'ArrayItems',
'x-decorator': 'FormItem',
title: `{{t("Headers", { ns: "${NAMESPACE}" })}}`,
description: `{{t('"Content-Type" only support "application/json", and no need to specify', { ns: "${NAMESPACE}" })}}`,
items: {
type: 'object',
properties: {
space: {
type: 'void',
'x-component': 'Space',
properties: {
name: {
type: 'string',
'x-decorator': 'FormItem',
'x-component': 'Input',
'x-component-props': {
placeholder: `{{t("Name")}}`,
},
},
value: {
type: 'string',
'x-decorator': 'FormItem',
'x-component': 'VariableInput',
'x-component-props': {
scope: useWorkflowVariableOptions
}
},
remove: {
type: 'void',
'x-decorator': 'FormItem',
'x-component': 'ArrayItems.Remove',
},
},
},
},
},
properties: {
add: {
type: 'void',
title: `{{t("Add request header", { ns: "${NAMESPACE}" })}}`,
'x-component': 'ArrayItems.Addition',
},
},
},
'config.params': {
type: 'array',
name: 'config.params',
'x-component': 'ArrayItems',
'x-decorator': 'FormItem',
title: `{{t("Parameters", { ns: "${NAMESPACE}" })}}`,
items: {
type: 'object',
properties: {
space: {
type: 'void',
'x-component': 'Space',
properties: {
name: {
type: 'string',
'x-decorator': 'FormItem',
'x-component': 'Input',
'x-component-props': {
placeholder: `{{t("Name")}}`,
},
},
value: {
type: 'string',
'x-decorator': 'FormItem',
'x-component': 'VariableInput',
'x-component-props': {
scope: useWorkflowVariableOptions
}
},
remove: {
type: 'void',
'x-decorator': 'FormItem',
'x-component': 'ArrayItems.Remove',
},
},
},
},
},
properties: {
add: {
type: 'void',
title: `{{t("Add parameter", { ns: "${NAMESPACE}" })}}`,
'x-component': 'ArrayItems.Addition',
},
},
},
'config.data': {
type: 'string',
name: 'config.data',
title: `{{t("Body", { ns: "${NAMESPACE}" })}}`,
'x-decorator': 'FormItem',
'x-decorator-props': {},
'x-component': 'VariableJSONInput',
'x-component-props': {
scope: useWorkflowVariableOptions,
autoSize: {
minRows: 10,
},
placeholder: `{{t("Input request data", { ns: "${NAMESPACE}" })}}`,
className: css`
font-size: 85%;
font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;
`
},
description: `{{t("Only support standard JSON data", { ns: "${NAMESPACE}" })}}`,
},
'config.timeout': {
type: 'number',
name: 'config.timeout',
title: `{{t("Timeout config", { ns: "${NAMESPACE}" })}}`,
'x-decorator': 'FormItem',
'x-decorator-props': {},
'x-component': 'InputNumber',
'x-component-props': {
addonAfter: `{{t("ms", { ns: "${NAMESPACE}" })}}`,
min: 1,
step: 1000,
defaultValue: 5000,
},
},
'config.ignoreFail': {
type: 'boolean',
name: 'config.ignoreFail',
title: `{{t("Ignore fail request and continue workflow", { ns: "${NAMESPACE}" })}}`,
'x-decorator': 'FormItem',
'x-component': 'Checkbox',
}
},
view: {},
scope: {},
components: {
ArrayItems,
VariableInput,
VariableJSONInput
},
};