Appearance
Typed Attribute Renderers
Panel renderers use backend AttributeData.dataType metadata when it is available. For JSON-only panel configuration without backend metadata, set the type explicitly:
- editor fields use
type - custom-request table columns use
dataType
Supported values are String, Object, Integer, Double, DateTime, Boolean, Binary, Guid, Date, Text, Color, Interval, Json, and dtUndefine. The internal invalid fallback is displayed for unsupported metadata but is not a normal editable field.
Clearing an editable Guid or Object field submits null instead of an empty string. Fields that were never added to a create form value remain omitted from the request.
Read-only renderers use specialized presentation for technical values: Binary and Guid render as compact monospace tokens with copy actions, Integer and Double render with lightweight numeric type marks, Interval renders as a readable duration with the raw ISO value available on hover, and Json renders as a compact preview with modal JsonEditorVue inspection in table/tree cells while using JsonEditorVue directly in attributes and simplified editable forms.
The local fixture app Демо типов атрибутов exposes three focused surfaces:
Матрица dataType: one row per data type plus focused variants for multiline text, multiline object data, and larger JSON. The table includes both a normal sample column and a constrained sample column forfixedWidth,maxRows, andmaxHeight; the attributes tab shows the full selected typed value; the form tab shows the selected type through the existing object-edit field renderer.Формы и metadata: one screen with top-level tabs for object metadata editing andAction input. The object tab uses a horizontal split with the source object table on the left and read-only, inline edit, and modal edit mode tabs on the right. The action input tab switches the whole screen and has two actions: one createActionFormwhere fields are enriched from/MetaAttributes/ForType/{metaTypeName}, and one run-method action where fieldtypeis set explicitly in panel JSON.Сквозной сценарий: a compact table -> attributes -> edit -> refreshed display workflow.
The application cards show these purposes directly from jsonData.description: matrix answers how each type is displayed and how a selected type maps to a single field control, forms answer how edit modes and metadata behave, and the end-to-end scenario answers whether selection, display, edit, and refresh work together.
Metadata
listOfValue renders a dropdown before the normal data-type input. It accepts:
json
[
{ "label": "Draft", "value": "draft" },
{ "label": "Approved", "value": "approved" }
]It also accepts JSON arrays of primitive values or newline-separated values.
Since 0.68.0, create action forms can use backend metadata instead of duplicating every field option in panel JSON. When editor.entityType.object.metaTypeName is present, the form loads /MetaAttributes/ForType/{metaTypeName} and resolves dataType, defaultValue, listOfValue, comment, and regEx by field attribute. Explicit field config in panel JSON still wins over API metadata.
defaultValue is applied only when the field value is absent. regEx is applied as a JavaScript regular expression with the exact pattern received from metadata; the panel does not add ^ or $. For example, [0-9][0-9] matches any value containing two adjacent digits, while ^[0-9][0-9]$ means exactly two digits. comment is shown as a delayed tooltip on the field. If a field has no label, display uses displayName, then attributeCaption, then attributeName.
Example
Minimal create action field JSON:
json
{
"entityType": {
"object": {
"metaTypeName": "LocalAttributeRendererForm"
}
},
"fields": [
{ "attribute": "stringValue", "label": "Строка с regex" },
{ "attribute": "statusValue", "label": "listOfValue" },
{ "attribute": "defaultFromMetadata" }
]
}Matching /MetaAttributes/ForType/LocalAttributeRendererForm metadata:
json
{
"name": "stringValue",
"displayName": "Строка с regex",
"dataType": "String",
"regEx": "^Demo",
"comment": "Значение должно начинаться с \"Demo\"."
}Explicit JSON-only field config is still supported:
json
{
"attribute": "status",
"type": "String",
"listOfValue": "[{\"label\":\"Draft\",\"value\":\"draft\"},{\"label\":\"Approved\",\"value\":\"approved\"}]",
"defaultValue": "draft",
"regEx": "^(draft|approved)$",
"comment": "Status values come from editor metadata."
}json
{
"type": "table",
"request": {
"customRequest": {
"method": "GET",
"url": "/demo/statuses"
}
},
"columns": [
{
"attribute": "payload",
"label": "Payload",
"dataType": "Json"
}
]
}