Навигация в Календаре

При отображения “Календаря” в режиме “Неделя” если кликнуть по названию дня, то календарь переключается на отображение одного дня. Если есть кнопки навигации, то можно “прокручивать” календарь по дням назад и вперёд. Но как сменить режим, как вернуться к отображению недели?

Добрый день.

К сожалению, стандартных механизмов возврата, кроме открытия окна заново, нет. Но можно написать код для переключения режимов отображения, пример показан в нашем демо. Исходный код приложения находится на Github.

1 симпатия

Image 2021-09-2317

Да, все верно

Посмотрел. Как-то там всё слишком заморочено сделано… Очень много кода для моей очень простой задачки. Добавил обработчик события клика по дате. Оставлю это тут на всякий случай…

 @Subscribe("calendar")
public void onCalendarCalendarDateClick(Calendar.CalendarDateClickEvent<LocalDate> event) {
    if (event.getSource().getStartDate().isEqual(event.getSource().getEndDate())) {
        LocalDate today = event.getSource().getStartDate();  
        DayOfWeek firstDayOfWeek = WeekFields.of(Locale.getDefault()).getFirstDayOfWeek();
        LocalDate startOfCurrentWeek = today.with(TemporalAdjusters.previousOrSame(firstDayOfWeek));

        DayOfWeek lastDayOfWeek = firstDayOfWeek.plus(6); 
        LocalDate endOfCurrentWeek = today.with(TemporalAdjusters.nextOrSame(lastDayOfWeek));

        calendar.unwrap(com.vaadin.v7.ui.Calendar.class).setStartDate(Date.from(startOfCurrentWeek.atStartOfDay().atZone(ZoneId.systemDefault()).toInstant()));
        calendar.unwrap(com.vaadin.v7.ui.Calendar.class).setEndDate(Date.from(endOfCurrentWeek.atStartOfDay().atZone(ZoneId.systemDefault()).toInstant()));
    } else {
        calendar.unwrap(com.vaadin.v7.ui.Calendar.class).setStartDate(Date.from(event.getDate().atStartOfDay().atZone(ZoneId.systemDefault()).toInstant()));
        calendar.unwrap(com.vaadin.v7.ui.Calendar.class).setEndDate(Date.from(event.getDate().atStartOfDay().atZone(ZoneId.systemDefault()).toInstant()));
    }

}

По клику на дате циклически переключается между режимами “Неделя”/“День”.

1 симпатия