Значки

Ninext улучшает интерфейс Ninox, добавляя значки на некоторые вкладки, чтобы выделить важные сведения.

  • На вкладке «Files» синий значок показывает число вложенных файлов, добавленных к записи.
  • На вкладке «Comments» красный значок указывает на новые сообщения, а серый — на более старые комментарии.
  • На собственных вкладках можно изменить оформление (цвет, заголовок) и добавить значок, привлекающий внимание к главному.

Значки позволяют быстро заметить новое, не открывая каждую вкладку.

Значки, как и настройка вкладок, описанная ниже, отключаются в Настройках Ninext, раздел «Улучшения интерфейса»: Badge на файлах и комментариях (включено по умолчанию).

Значки на вкладках «Files» и «Comments»

Вкладка Files

  • Синий значок: появляется, если есть файлы, не связанные ни с одним полем «File», то есть находящиеся на вкладке вложений. Показанное число соответствует числу таких отдельных вложений.
  • Значка нет: отдельных вложений не найдено.

Вкладка Comments

  • Красный значок: показывает число новых комментариев, то есть оставленных менее 24 часов назад.
  • Серый значок: когда ни одному комментарию не меньше 24 часов, показывает общее число комментариев.
  • Значка нет: у этой записи нет комментариев.

image.png

Значки сообщают о наличии записей под соответствующими значками:

Здесь синяя единица означает, что к записи сохранено одно вложение, а серая — что у записи есть один комментарий.

Собственные значки

В формуле «Display field only, if» каждой вкладки можно объявить функцию onUpdate, которая возвращает объект JSON, описывающий вкладку и её значок. Пример ниже взят из таблицы «Badges» демонстрационной базы: Caption, Color, 'badge.caption'… — это поля этой таблицы.

Ninox
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

image.png

С помощью 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, читает возвращённый объект и на лету применяет изменения оформления к вкладке.

Примеры реализации

Полный пример (несколько свойств)

Ninox
"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 добавляет указатель (число или восклицательный знак) для акцента; в остальных случаях его подпись пуста, и значок не появляется.

Минимальный пример (только значок)

Ninox
"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) и вызывать глобальные функции базы.