Значки
Ninext улучшает интерфейс Ninox, добавляя значки на некоторые вкладки, чтобы выделить важные сведения.
- На вкладке «Files» синий значок показывает число вложенных файлов, добавленных к записи.
- На вкладке «Comments» красный значок указывает на новые сообщения, а серый — на более старые комментарии.
- На собственных вкладках можно изменить оформление (цвет, заголовок) и добавить значок, привлекающий внимание к главному.
Значки позволяют быстро заметить новое, не открывая каждую вкладку.
Значки, как и настройка вкладок, описанная ниже, отключаются в Настройках Ninext, раздел «Улучшения интерфейса»: Badge на файлах и комментариях (включено по умолчанию).
Значки на вкладках «Files» и «Comments»
Вкладка Files
- Синий значок: появляется, если есть файлы, не связанные ни с одним полем «File», то есть находящиеся на вкладке вложений. Показанное число соответствует числу таких отдельных вложений.
- Значка нет: отдельных вложений не найдено.
Вкладка Comments
- Красный значок: показывает число новых комментариев, то есть оставленных менее 24 часов назад.
- Серый значок: когда ни одному комментарию не меньше 24 часов, показывает общее число комментариев.
- Значка нет: у этой записи нет комментариев.

Значки сообщают о наличии записей под соответствующими значками:
Здесь синяя единица означает, что к записи сохранено одно вложение, а серая — что у записи есть один комментарий.
Собственные значки
В формуле «Display field only, if» каждой вкладки можно объявить функцию onUpdate, которая возвращает объект JSON, описывающий вкладку и её значок. Пример ниже взят из таблицы «Badges» демонстрационной базы: Caption, Color, 'badge.caption'… — это поля этой таблицы.
function onUpdate(event : any) do
debug(formatJSON(event));
{
caption: Caption,
color: Color,
backgroundColor: BackgroundColor,
tooltip: Tooltip,
badge: {
caption: 'badge.caption',
color: 'badge.color',
backgroundColor: 'badge.backgroundColor'
}
}
end;
trueНастройка вкладок с помощью Ninext

С помощью Ninext вы можете менять оформление созданных вами вкладок Ninox: для этого в формуле «Display field only, if» вкладки объявляется функция onUpdate. Она возвращает объект, указывающий Ninext, какие элементы оформления изменить. Вы можете:
- изменить заголовок вкладки (caption) и подсказку;
- изменить цвет текста и фона (в обычном и выбранном состоянии);
- задать цвет фона связанной формы;
- показать на вкладке значок, выделяющий важные сведения.
Краткий обзор свойств JSON
| Свойство | Описание | Пример / применение |
|---|---|---|
| caption | Заголовок, показанный на вкладке. | "To Invoice" / "View Invoice" |
| tooltip | Текст, показываемый при наведении на вкладку. | "Click to view details" |
| color | Цвет текста, когда вкладка не выбрана. | "#333333" |
| backgroundColor | Цвет фона, когда вкладка не выбрана. | "#ededed" |
| formBackgroundColor | Цвет фона формы (редактора), когда вкладка активна. | "#fafafa" |
| selected.color | Цвет текста, когда вкладка выбрана. | "#ffffff" |
| selected.backgroundColor | Цвет фона, когда вкладка выбрана. | "#4970ff" |
| badge.caption | Текст, число или символ, показанный на значке. Это всегда текст: преобразуйте число с помощью text(). Пустой текст скрывает значок. | "3" (три новых клиента) или "!" (предупреждение) |
| badge.color | Цвет текста значка (по умолчанию белый). | "#ffffff" |
| badge.backgroundColor | Цвет фона значка (по умолчанию красный). | "#4970ff" |
Общий порядок работы
- Объявите функцию onUpdate
В формуле «Display field only, if» вкладки создайте функцию с именемonUpdate. Она должна вернуть объект (вида JSON), описывающий изменяемые элементы оформления. В качестве параметра она получает объект, который вернула при предыдущем вызове (при первом вызове — пустой объект). - Верните логическое значение видимости
Формула «Display field only, if» должна заканчиваться возвратомtrueилиfalse, указывающим, показывать вкладку или нет. - Ninext применяет изменения
Каждый раз, когда пользователь открывает или обновляет запись, Ninext выполняет функциюonUpdate, читает возвращённый объект и на лету применяет изменения оформления к вкладке.
Примеры реализации
Полный пример (несколько свойств)
"Declaration of the onUpdate function";
function onUpdate(tabValues : any) do
let nb := this.NumberTest;
{
caption: if nb > 0 then "To Invoice" else "View Invoice" end,
tooltip: "Click to view details",
color: "#333333",
backgroundColor: "#ededed",
formBackgroundColor: "#fafafa",
selected: {
color: "#ffffff",
backgroundColor: "#4970ff"
},
badge: {
caption: if nb = 3 then "3" else if nb = -1 then "!" else "" end,
color: "#ffffff",
backgroundColor: if nb = 3 then "#4970ff" else if nb = -1 then "#ff0000" else "#cccccc" end
}
}
end;
"Determine whether the tab is displayed: shown if NumberTest > 0";
if this.NumberTest > 0 then
true
else
false
endПояснения:
- В функции нет
return: этого слова нет в языке Ninox. Она возвращает значение своего последнего выражения — здесь объект. - caption меняет заголовок вкладки в зависимости от
NumberTest. - tooltip выводит текст при наведении.
- color и backgroundColor задают цвета в невыбранном состоянии.
- selected содержит цвета активной вкладки.
- badge добавляет указатель (число или восклицательный знак) для акцента; в остальных случаях его подпись пуста, и значок не появляется.
Минимальный пример (только значок)
"Declaration of the onUpdate function";
function onUpdate(tabValues : any) do
let newClients := this.NewClients;
{
badge: {
caption: if newClients > 0 then text(newClients) else "" end,
color: "#ffffff",
backgroundColor: "#4970ff"
}
}
end;
"The tab is always displayed";
trueПояснения:
- Возвращается только свойство badge.
- Если
NewClientsбольше 0, показывается его значение, преобразованное в текст функциейtext(); иначе подпись пуста, и значок не появляется. - У значка белый текст на синем фоне.
Важные замечания
- Обязательный логический возврат в конце
Без возвратаtrueилиfalseв конце вкладка не будет видна. - Подпись значка — всегда текст
Ninext показывает значок, только еслиbadge.caption— непустой текст. Число (3вместо"3") оставляет значок скрытым: используйтеtext(). - Функция вычисляется отдельно
Ninext извлекает из формулы одну лишь функциюonUpdate, а затем вычисляет её отдельно, в контексте записи. Поэтому она не видит ни переменных, ни других функций, объявленных в другом месте «Display field only, if»: объявите внутриonUpdateвсё, что ей нужно. Она может читать поля записи (this.NumberTest) и вызывать глобальные функции базы.
