Управление масштабом времени в пределах дня в Calendar

Коллеги, добрый день!
Нужна подсказка.
Jmix 1.5.3. Элемент calendar в режиме на неделю или на день.
Как можно в динамике изменять шаг деления временной шкалы (не нашли ничего похожего)? Если события идут с частотой 10-15 минут, то стандартное отображение интервала с 8:00 до 23:00 делает события нечитаемыми.
Хочется дать пользователю кнопки управления масштабом +/- чтобы они сами могли подстраивать масштаб под текущую плотность календаря.

1 симпатия

Здравствуйте, Андрей.

Отображаемые в calendar дни недели и часы в сутках можно изменить программно. Для этого у calendar есть следующие методы:

  • setFirstVisibleDayOfWeek(int firstDay) и setLastVisibleDayOfWeek(int lastDay) - принимают значения от 1 до 7, где 1 – это воскресенье, а 7 – Суббота.
  • setFirstVisibleHourOfDay(int firstHour) и setLastVisibleHourOfDay(int lastHour) - принимают значения от 1 до 23, где 1 – это 01:00, а 23 – 23:00.
    Подробнее: Calendar :: Документация Jmix

С уважением,
Сергей.

1 симпатия

Сергей, спасибо за ответ.
Это мы нашли. Вопрос в том, что таким способом мы отсекаем полностью все неотображаемые часы. Хотелось бы при редактировании масштаба сохранить скроллинг по всему доступному диапазону. Есть какой-то вариант добиться такого поведения?

Здравствуйте!
Возможно, появилось решение по нашему вопросу?

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

Прикладываю пример экрана с изменением размеров компонента, а также изменением настроек отображения календаря.
CalendarScreen.java (6.1 КБ)
calendar-screen.xml (1.7 КБ)

1 симпатия

Сергей, спасибо большое за подсказку!