更新时间:2021-09-18 GMT+08:00
分享

表单配置API

表单配置通过代码注释定义,支持两种方式配置:

  • 行内注释
    [需要暴露参数的代码行] #@param [参数定义(JSON)]
  • 顶部注释
    #@param [参数定义(JSON)] 
    [需要暴露参数的代码段]

    为了保证表单能够正常解析代码,并与之交互。“[需要暴露参数的代码段]”格式必须为:

    变量名 = {
    "xxx": "xxx"
    }

参数定义的JSON各字段如下:

表单项配置ParamConfig

表单项配置ParamConfig参数说明,如表1所示。

表1 表单项配置ParamConfig参数说明

参数

说明

type

(Python)包括如下变量类型:

  • string:字符串,输入的内容会在外层添加单引号,再写入代码“"变量名="”的后面。
  • number:数值型,输入值必须为数值,直接写入代码“"变量名="”的后面。
  • boolean:布尔型,输入值(js的boolean值为“true”或“false”)会转换为Python的布尔值True或False,再写入代码“"变量名="”的后面。
  • raw:原生类型,指原始输入内容直接写入代码“"变量名="”后面,不做任何处理。如Python数组、元组、字典等。
  • dict:字典类型,需配合dictProps一起使用。
  • list:列表类型,需配合listProps一起使用。

label

表单的标签名。

reg

正则匹配规则。可选参数,格式如下所示:

{expression: string; subIndexes: number[]; paramIndexes: number[];}
  • expression:正则表达式。需要将待修改的变量及前后代码分别用括号括起来,作为子匹配,以便表单变更时替换。这些子匹配需要能够拼接成完整的字符串。
  • subIndexes:能够完整拼接成字符串的子匹配index列表。

    由于正则表达式可能存在嵌套的括号,所以仅配置正则匹配结果顶级括号中的index。

  • paramIndexes:在子匹配中需要暴露的参数index。

默认值如下所示:

{expression: "(\\s.+?\\s*=\\s*)(.*)(\\s*)", subIndexes: [1,2,3], paramIndexes: [2]}

value

表单初始值。

如果代码“"变量名="”后面有值,则此字段不生效。

options

单选下拉选项列表。

数组类型,每条选项的格式可以是如下两种情况:

  • string:表示选项的展示名和值都为该字符串。
  • {"text": string,"value": any}:其中,“text”表示选项的展示名,“value”表示选项的取值。

radios

radios单选列表。

数值类型,配置格式同参数“options”。

required

是否为必选。

如果取值为“true”,则表单会增加必填标识,即红色星号,并做空值校验。

show

是否展示。

包括如下三种配置方式:

  • boolean:取值为“true”,即展示;或“false”,即不展示。
  • {"key":"useregex","condition":"eq","value":false}:是否展示依赖于其他变量的取值。其中,“key”为所依赖的变量名称;“condition”为依赖条件,取值“eq”,含义为等于;“value”为条件值。如果“condition”不配置,说明依赖“key”的布尔值。
    说明:

    {"key":"useregex","condition":"eq","value":false}:这是抽象出来的IFormLinkageDependency接口,表示依赖另一个表单变量的值。“condition”是ShowCondition的枚举值,包括如下取值:

    • 'eq':等于
    • 'gt':大于
    • 'ge':大于等于
    • 'lt':小于等于
    • 'contain':包含

    {"key":"use_regex","condition":"eq","value":false}数组,表示依赖多个,依赖全部成立才会展示。

  • {"key":"use_regex","condition":"eq","value":false}:数组类型,说明同时依赖多个变量,且全部依赖都成立时,才会展示。

disabled

是否禁用。

如果配置为“true”,则表单置灰不可操作。

配置方式与参数“show”相同,可以配置为“{"key":"use_regex","condition":"eq","value":false}”形式的对象。

validation

表单校验规则。

数组类型,可配置多条。每条规则的格式为“{"rule":Validation枚举值,"param":any}”。详细的校验规则,在ValidationUtils中实现。

layout

表单布局。格式如下所示:

layout: { cols: number; colIndex: number; colspan: number;}

对应参数含义如下所示:

  • cols:表单按照几列布局,必选参数。
  • colIndex:当前表单位于第几列,从0开始计数。可选参数,默认自动排列。
  • colspan:同行表单之间的间隔。数值型,单位像素。可选参数,默认值为“16”。生效方式如下所示:

    (|<--16px-->|表单1|colspan|colspan|表单2|<--16px-->|)

    需要注意表单与表单之间,是两个独立的colspan,首尾为固定的16px。

asyncConfig

异步获取数据的方式。

有些表单的选项来自于异步接口,可使用此字段获取,示例:{"type":"dataset"}。其中,“dataset”类型是组件预先定义好的类型,会直接调用后端服务获取数据集列表。

目前支持如下几种异步方式:

  • dataset:数据集
  • data:数据实例,示例:{"type":"data","params":{"dataset":{"key":"dataset"}}} 。其中,“params”参数指定了该数据实例所属的数据集变量名“dataset”;“{"key":"dataset"}”为抽象出来的IFormLinkageDependency接口,表示依赖另一个表单变量的值,可以直接设置为常量值,即数据集名称。
  • column:列筛选(单选)的所有列名
  • columns:列筛选(多选)的所有列名
  • get:HTTPS的get请求,示例:{"type":"get","params":{"url":string}, }。其中,“url”指定请求地址,可以配置为IFormLinkageDependency类型。
  • kernel:Kernel中的变量值,示例:{"type":"kernel","params":{"variable":VariableCallChains}}。其中,“variable”指定请求变量名,为VariableCallChains对象。{name: string, callChains:{name:string,type:string}[]},其中,“name”是请求变量名;“callChains”是调用链,可选参数,如果配置,则再对变量进行属性或成员函数调用;“type”为可选参数,如果“type”取值为“method”,表示调用成员函数,否则调用属性。

hyperParamType

标识变量是否为超参及其类型。

标识为超参的变量,在转化为python脚本或发布服务时,会提取为脚本执行的入参。

multiple

是否支持多选。

仅当“options”或“asyncConfig”参数配置时有效。

配置为“true”时,下拉框支持多选。

editable

是否支持手工输入。

仅当“options”或“asyncConfig”参数配置时有效。

配置为“true”时,下拉框支持手工输入。

variableType

标识变量类型。

其他表单可以通过类型引用该值。

dictProps

当“type”取值为“dict”时,配置当前参数,定义字典的结构,详情请参见表2

listProps

当“type”取值为“list”时,配置当前参数,定义列表元素,详情请参见表3

字典型表单dictProps配置

字典型表单dictProps配置参数说明,如表2所示。

表2 字典型表单dictProps配置参数说明

参数

类型

说明

inline

boolean

是否在同一行内布局。

配置为“true”时,字典所有条目的表单在同一行展示。

默认值:false

showLabel

boolean

是否展示字典标题。

配置为“true”时,显示字典变量label,即顶层label,非字典条目label。字典条目label由items参数对应的字段控制。

默认值:false

showLevel

boolean

是否展示字典层级样式。

配置为“true”时,表单将按照字典结构进行缩进。

默认值:false

items

{[key: string]: ParamConfig}

字典条目。格式如下所示:

{<字典的key名称>: ParamConfig(可以嵌套dict和list)}

默认值:{}

数组型表单listProps配置

数组型表单listProps配置参数说明,如表3所示。

表3 数组型表单listProps配置参数说明

参数

类型

说明

inline

boolean

是否在同一行内布局。

配置为“true”时,数组所有元素的表单在同一行展示。

默认值:false

showLabel

boolean

是否展示数组标题。显示数组变量label。

默认值:false

showItemLabel

boolean

是否展示数组元素的标题。显示数组元素label,默认为元素index,如果items中有配置每个元素label,则展示该值。

默认值:true

showLevel

boolean

是否展示数组层级样式。

配置为“true”时,表单将按照数组结构进行缩进。

默认值:false

flexible

boolean

是否支持数组条目的增加和删除操作。

如果配置为“true”,则展示增加删除按钮,支持动态增删数组元素。

默认值:false

itemConfig

ParamConfig

数组条目的表单结构配置。

开发人员预先定义好的数组元素结构,格式为ParamConfig(可以嵌套dict和list)。

默认值:{}

items

ParamConfig[]

数组的表单条目实例。

开发人员可以不用关注,从代码中获取数组值,根据值生成实例。

默认值:[]

相关文档