我已经挣扎了几天,试图使用JSON Editor Javascript 插件。我正在使用SWIG JS 引擎,但我愿意接受可以解决我的问题的提议。
我创建了一个到目前为止运行良好的 JSON 模板,但这并没有完全实现我需要做的事情,我尝试理解和使用 JSON Editor github 页面提供的语法,但到目前为止还没有运气。
如何使模板的行为如下:
如果 features.type == "Point" 的值,那么我希望 features.display 具有 "#/definitions/marker" 类型的属性。否则(features.type == "Polygon")我希望 features.display 具有“#/definitions/area”类型的属性。filter.display 也是如此。
到目前为止,我使用“oneOf”属性,因为它最接近我想要的,但绝对不是。
谢谢你的帮助 !
亲切的问候。
到目前为止,这是我的 JSON 架构:
{
"type": "array",
"title": "Layers",
"items": {
"title": "Layer",
"type": "object",
"headerTemplate": "{{table.id.public_name}}",
"properties": {
"table":{"$ref": "#/definitions/table"},
"features":{"$ref": "#/definitions/features"}
}
},
"definitions": {
"table": {
"title": "Table Information",
"type": "object",
"properties": {
"id":{"$ref": "#/definitions/id"},
"primary_key":{"$ref": "#/definitions/primary_key"},
"read":{"$ref": "#/definitions/read"}
}
},
"features": {
"title": "Features Settings",
"type": "object",
"properties": {
"type":{"$ref": "#/definitions/type"},
"id":{"$ref": "#/definitions/id"},
"cols":{"$ref": "#/definitions/cols"},
"display": {
"type": "object",
"title": "Display",
"format": "grid",
"oneOf": [
{"$ref": "#/definitions/marker"},
{"$ref": "#/definitions/area"}
]
}
}
},
"cols": {
"title": "Table Columns",
"type": "array",
"items": {
"type": "object",
"title": "Column",
"properties": {
"id":{"$ref": "#/definitions/id"},
"read":{"$ref": "#/definitions/read"},
"write":{"$ref": "#/definitions/write"},
"filter":{"$ref": "#/definitions/filter"}
}
}
},
"id": {
"title": "Identifier",
"type": "object",
"format": "grid",
"properties": {
"name":{"$ref": "#/definitions/name"},
"public_name":{"$ref": "#/definitions/public_name"}
}
},
"name": {
"title": "Name",
"type": "string"
},
"public_name": {
"title": "Public Name",
"type": "string"
},
"primary_key": {
"title": "Primary key",
"type": "string",
"format": "grid"
},
"write": {
"title": "Editing",
"type": "object",
"format": "grid",
"properties": {
"read":{"$ref": "#/definitions/read"},
"method":{"$ref": "#/definitions/method"}
}
},
"read": {
"title": "Reading",
"type": "array",
"items": {
"type": "integer",
"title": "Access Level",
"format": "grid",
"properties":{"$ref": "#/definitions/access_level"}
}
},
"type": {
"title": "Type",
"type": "string",
"enum": [ "Point", "Polygon" ]
},
"access_level": {
"title": "Access Level",
"type": "integer",
"format": "number"
},
"method": {
"title": "Method",
"type": "object",
"format": "grid",
"properties": {
"type":{"$ref": "#/definitions/method_type"},
"data":{"$ref": "#/definitions/data"}
}
},
"data": {
"title": "Data",
"type": "array",
"items": {
"type": "string",
"title": "Data",
"format": "grid",
"properties":{"$ref": "#/definitions/value"}
}
},
"value": {
"title": "Value",
"type": "string"
},
"filter": {
"title": "Filter",
"type": "array",
"items": {
"type": "object",
"title": "Filter",
"properties": {
"value":{"$ref": "#/definitions/value"},
"display": {
"type": "object",
"oneOf": [
{"$ref": "#/definitions/marker"},
{"$ref": "#/definitions/area"}
]
}
}
}
},
"marker": {
"title": "Marker",
"type": "object",
"format": "grid",
"properties": {
"color":{"$ref": "#/definitions/color"},
"icon":{"$ref": "#/definitions/icon"}
}
},
"color": {
"title": "Color",
"type": "string",
"enum": ["red", "darkred", "orange", "green", "darkgreen", "blue", "purple", "darkpuple", "cadetblue"]
},
"css_color": {
"title": "CSS Color",
"type": "string",
"format": "color"
},
"icon": {
"title": "Icon",
"type": "object",
"format": "grid",
"properties": {
"name":{"$ref": "#/definitions/name"},
"color":{"$ref": "#/definitions/css_color"}
}
},
"area": {
"title": "Area",
"type": "object",
"properties": {
"color":{"$ref": "#/definitions/color"},
"border":{"$ref": "#/definitions/border"}
}
},
"border": {
"title": "Border",
"type": "object",
"properties": {
"border_color":{"$ref": "#/definitions/border_color"},
"width":{"$ref": "#/definitions/width"}
}
},
"border_color": {
"title": "Color",
"type": "object",
"format": "grid",
"properties": {
"normal":{"$ref": "#/definitions/normal"},
"hover":{"$ref": "#/definitions/hover"}
}
},
"width": {
"title": "Width",
"type": "string"
},
"normal": {
"title": "Normal",
"type": "string",
"format": "color"
},
"hover": {
"title": "Hover",
"type": "string",
"format": "color"
},
"method_type": {
"title": "Type",
"type": "string",
"enum": [ "text", "select" ]
}
}
}