Noty.setMaxVisible()

Noty.setMaxVisible() — это статический метод библиотеки Noty, который позволяет задавать максимальное количество уведомлений, одновременно отображаемых на экране. Этот инструмент особенно полезен для контроля интерфейса при высоком потоке уведомлений, предотвращения их наложения и перегрузки визуального пространства.


Синтаксис

Noty.setMaxVisible(max);

Параметры:

  • max — число, определяющее максимальное количество видимых уведомлений. Тип: integer.

    • Если указано значение 0, ограничение снимается, и все уведомления будут показываться без ограничений.

Возвращаемое значение: Метод ничего не возвращает (undefined).


Пример использования

// Ограничиваем количество уведомлений до 3
Noty.setMaxVisible(3);

// Создание уведомлений
new Noty({
    text: 'Уведомление 1',
    type: 'alert',
    timeout: 3000
}).show();

new Noty({
    text: 'Уведомление 2',
    type: 'success',
    timeout: 3000
}).show();

new Noty({
    text: 'Уведомление 3',
    type: 'warning',
    timeout: 3000
}).show();

new Noty({
    text: 'Уведомление 4',
    type: 'error',
    timeout: 3000
}).show();

В этом примере, несмотря на создание четырёх уведомлений, на экране одновременно будет отображаться только три последних. Четвёртое появится только после исчезновения одного из предыдущих уведомлений.


Взаимодействие с глобальными и локальными настройками

Noty.setMaxVisible() действует глобально, независимо от того, где создаются уведомления. Локальные настройки уведомлений (например, timeout, layout, theme) не влияют на ограничение видимых уведомлений. Это позволяет централизованно управлять визуальной загруженностью интерфейса.

Noty.setMaxVisible(2);

new Noty({
    text: 'Локальное уведомление',
    type: 'info',
    layout: 'bottomRight',
    theme: 'sunset',
    timeout: 4000
}).show();

Даже если локальное уведомление настроено по-своему, глобальное ограничение maxVisible применится, и оно будет показано только если в данный момент отображается меньше двух уведомлений.


Динамическое изменение лимита

Noty.setMaxVisible() может вызываться в любой момент выполнения скрипта, что позволяет динамически регулировать максимальное количество видимых уведомлений в зависимости от состояния приложения.

// Изначально ограничение до 2 уведомлений
Noty.setMaxVisible(2);

// Позже увеличиваем лимит до 5
setTimeout(() => {
    Noty.setMaxVisible(5);
}, 5000);

При изменении лимита новые уведомления будут отображаться согласно обновленному значению maxVisible.


Особенности работы метода

  • Метод применяется только к новым уведомлениям, которые создаются после установки лимита.
  • Уведомления, которые уже отображаются на экране, не исчезают при снижении лимита.
  • Лимит учитывает все уведомления одновременно, независимо от их положения (layout). Например, уведомления в topRight и bottomLeft суммируются при подсчете количества видимых уведомлений.

Практические рекомендации

  • Устанавливать лимит в зависимости от плотности интерфейса: для верхней панели уведомлений рекомендуется 3–4 уведомления, для более просторного макета — 5–6.
  • При динамическом потоке событий стоит комбинировать Noty.setMaxVisible() с опцией queue в настройках уведомлений, чтобы новые уведомления не исчезали бесконтрольно.
  • В приложениях с большим количеством уведомлений полезно объединять метод с кастомной функцией очистки старых уведомлений, чтобы избежать переполнения очереди.

Совместимость с другими методами Noty

  • noty.close() — закрывает конкретное уведомление, освобождая место для нового при достижении лимита.
  • Noty.closeAll() — закрывает все уведомления независимо от maxVisible.
  • Noty.overrideDefaults() — изменение глобальных параметров уведомлений работает вместе с setMaxVisible().

Эти методы позволяют создавать гибкую систему управления уведомлениями, где Noty.setMaxVisible() обеспечивает контроль видимой части потока событий, а другие инструменты — управление поведением отдельных уведомлений.