Оригинал на GitHub
Вопрос
Часто нужно отобразить какието табличные данные в контекстной панели ячейки. Например, список товаров в заказе, в таблице циклов не заходя в сам цикл.
Ответ
То, что показано на картинке это специальный функционал поля тип Данные. Если определенным образом оформить в нем rowList, то он будет отображаться в контекстной панели таким образом.
Каким образом выглядит шаблон:
{
"data": [
{
"name_1": "content_here_1_1",
"name_2": "content_here_1_2",
"name_3": true
},
{
"name_1": "content_here_2_1",
"name_2": "content_here_2_2",
"name_3": false
}
],
"settings": {
"columns": [
"name_1",
"name_2",
"name_3"
],
"headRow": {
"name_1": "Title for name_1",
"name_2": "Title for name_2",
"name_3": "Title for name_3"
},
"headColumn": true
}
}
В data содержаться данные для показа — rowList. В данных может быть больше колонок чем будет показано. Показываться будут те, которые указаны в ключе settings — в ключе columns.
В settings оформляются настройки отображения:
columns
— name колонок из data, которые надо показать.
headRow
— строка заголовков в которую мы передаем row из name колонки и соответствующего ей title.
headColumn
— true | false, нужно ли выделять жирным значения в первой колонке.
Что бы значение в поле выглядело хорошо, то ему также назначается форматирование с перекрывающим text:
f1=: setFormat(text: "Some value"; textasvalue: true)
Шаблон можно собрать прям в поле кодом, либо хранить где-то и подтягивать селектом.
Я обычно имею в таблице два поля — техническое (скрытое) с данными без настроек data_from_teh_field
и показываемое пользователю:
=: rowCreate(field: "data" = #data_from_teh_field; field: "settings" = $settings)
settings: rowCreate(field: "columns" = $columns; field: "headRow" = $headRow; field: "headColumn" = true)
columns: json`["name_1","name_2","name_3"]`
headRow: rowCreate(field: "name_1" = "Title 1"; field: "name_2" = "Title 2"; field: "name_3" = "Title 3")
Обычно для такого поля ширина контекстной панели увеличивается через настройки поля через параметр Ширина контекстной панели.