记录一下多层嵌套配置界面
{
"status": 0,
"msg": "",
"data": {
"title": "采集向导",
"definitions": {
"selectCtrl": {
"type": "combo",
"name": "items",
"required": true,
"value": [
{
"type": "xpath"
}
],
"minLength": 1,
"multiple": true,
"typeSwitchable": false,
"conditions": [
{
"label": "xpath",
"test": "this.type === \"xpath\"",
"scaffold": {
"type": "xpath"
},
"items": [
{
"name": "arg",
"required": true,
"label": "${index+1}. ${type}",
"type": "input-text"
}
]
},
{
"label": "jpath",
"test": "this.type === \"jpath\"",
"scaffold": {
"type": "jpath"
},
"items": [
{
"name": "arg",
"required": true,
"label": "${index+1}. ${type}",
"type": "input-text"
}
]
},
{
"label": "mix",
"test": "this.type === \"mix\"",
"scaffold": {
"type": "mix"
},
"items": [
{
"name": "arg",
"required": true,
"label": "${index+1}. ${type}",
"type": "input-text"
}
]
},
{
"label": "split",
"test": "this.type === \"split\"",
"scaffold": {
"type": "split"
},
"items": [
{
"name": "arg",
"required": true,
"label": "${index+1}. ${type}",
"type": "input-text"
}
]
},
{
"label": "replace",
"test": "this.type === \"replace\"",
"scaffold": {
"type": "replace"
},
"items": [
{
"name": "arg",
"required": true,
"label": "${index+1}. ${type}",
"type": "input-text"
},
{
"name": "arg1",
"required": true,
"type": "input-text"
}
]
},
{
"label": "regex",
"test": "this.type === \"regex\"",
"scaffold": {
"type": "regex"
},
"items": [
{
"name": "arg",
"required": true,
"label": "${index+1}. ${type}",
"type": "input-text"
},
{
"name": "arg1",
"type": "input-number"
}
]
},
{
"label": "object",
"test": "this.type === \"more\" && this.isArray === false",
"scaffold": {
"type": "more",
"isArray": false
},
"items": [
{
"$ref": "subItemObjCtrl",
"label": "${index+1}. ${type}",
"name": "arg"
}
]
},
{
"label": "array",
"test": "this.type === \"more\" && this.isArray === true",
"scaffold": {
"type": "more",
"isArray": true
},
"items": [
{
"$ref": "subItemArrayCtrl",
"label": "${index+1}. ${type}",
"name": "arg"
}
]
}
]
},
"subItemObjCtrl": {
"type": "input-kvs",
"addButtonText": "新增子选择器",
"minLength": 1,
"draggable": false,
"keyItem": {
"label": "字段名"
},
"required": true,
"valueItems": [
{
"$ref": "selectCtrl",
"name": "_value"
}
]
},
"subItemArrayCtrl": {
"type": "input-array",
"addButtonText": "新增子选择器",
"minLength": 1,
"draggable": false,
"items": {
"$ref": "selectCtrl",
"name": "_value",
"label": "子选择器 [${index+1}]"
}
},
"itemsCtrl": {
"type": "input-array",
"addButtonText": "新增字段",
"minLength": 1,
"draggable": false,
"required": true,
"items": {
"type": "group",
"mode": "vertical",
"body": [
{
"type": "divider"
},
{
"name": "name",
"type": "input-text",
"required": true,
"label": "字段名 [${index+1}]"
},
{
"type": "group",
"mode": "inline",
"body": [
{
"name": "isExtend",
"type": "checkbox",
"trueValue": true,
"falseValue": false,
"option": "结果向后传递"
},
{
"name": "isHelpUrls",
"type": "checkbox",
"trueValue": true,
"falseValue": false,
"option": "添加采集URL"
},
{
"name": "mutil",
"type": "checkbox",
"trueValue": true,
"falseValue": false,
"value": true,
"option": "结果为数组"
},
{
"type": "radios",
"name": "araeSpace",
"label": "采集区域",
"value": "BODY",
"options": [
{
"label": "BODY",
"value": "BODY"
},
{
"label": "URL",
"value": "URL"
},
{
"label": "BLOCK",
"value": "BLOCK"
},
{
"label": "PAGE",
"value": "PAGE"
}
]
}
]
},
{
"$ref": "selectCtrl",
"name": "selector",
"label": "抽取规则"
}
]
}
}
},
"body": {
"type": "wizard",
"api": {
"method": "post",
"url": "/api/save.aardio"
},
"initApi": "/data${window:document.location.pathname}",
"mode": "vertical",
"debug": true,
"steps": [
{
"title": "基础信息配置",
"body": {
"type": "json-schema",
"name": "site",
"value": {
"downloaderPoolSize": 100,
"downloaderThreadSize": 10,
"retryTimes": 1,
"cycleRetryTimes": 0,
"sleepTime": 100
},
"required": true,
"schema": {
"type": "object",
"additionalProperties": false,
"required": [
"domain",
"downloaderPoolSize",
"downloaderThreadSize",
"retryTimes",
"cycleRetryTimes",
"sleepTime"
],
"properties": {
"domain": {
"type": "string",
"title": "爬虫唯一标识"
},
"downloaderThreadSize": {
"type": "number",
"title": "下载器线程池数量"
},
"downloaderPoolSize": {
"type": "number",
"title": "单次批量下载条数"
},
"retryTimes": {
"type": "number",
"title": "失败立即重试次数"
},
"cycleRetryTimes": {
"type": "number",
"title": "失败循环重试次数"
},
"sleepTime": {
"type": "number",
"title": "下载间隔(毫秒)"
}
}
}
}
},
{
"title": "抽取规则配置",
"body": [
{
"type": "combo",
"name": "modles",
"label": "模板配置",
"multiple": true,
"multiLine": true,
"value": [
{
"parse": "//page.request\n//page.response\n//page.result\n//page.extend\n//page.helpUrls",
"items": [
{
"selector": [
{
"type": "xpath"
}
]
}
],
"tagUrl": "https?\\://"
}
],
"tabsMode": true,
"tabsStyle": "chrome",
"minLength": 1,
"tabsLabelTpl": "模板 [${index|plus}]",
"items": [
{
"name": "tagUrl",
"label": "网页过滤",
"required": true,
"type": "input-text",
"value": ""
},
{
"type": "divider"
},
{
"type": "combo",
"name": "items",
"label": "抽取规则配置",
"multiple": true,
"multiLine": true,
"tabsMode": true,
"tabsStyle": "simple",
"minLength": 1,
"tabsLabelTpl": "字段 [${index|plus}]",
"items": [
{
"name": "name",
"type": "input-text",
"required": true,
"label": "字段名"
},
{
"type": "group",
"mode": "inline",
"body": [
{
"name": "isExtend",
"type": "checkbox",
"trueValue": true,
"falseValue": false,
"option": "结果向后传递"
},
{
"name": "isHelpUrls",
"type": "checkbox",
"trueValue": true,
"falseValue": false,
"option": "添加采集URL"
},
{
"name": "mutil",
"type": "checkbox",
"trueValue": true,
"falseValue": false,
"value": true,
"option": "结果为数组"
},
{
"type": "radios",
"name": "araeSpace",
"label": "采集区域",
"value": "BODY",
"options": [
{
"label": "BODY",
"value": "BODY"
},
{
"label": "URL",
"value": "URL"
},
{
"label": "BLOCK",
"value": "BLOCK"
},
{
"label": "PAGE",
"value": "PAGE"
}
]
}
]
},
{
"$ref": "selectCtrl",
"name": "selector",
"label": "抽取规则"
}
]
},
{
"type": "divider"
},
{
"name": "parse",
"type": "editor",
"label": "后处理",
"language": "javascript",
"value": ""
}
]
}
]
},
{
"title": "调度器配置",
"body": [
"这是最后一步了"
]
}
]
}
}
}