При отображения “Календаря” в режиме “Неделя” если кликнуть по названию дня, то календарь переключается на отображение одного дня. Если есть кнопки навигации, то можно “прокручивать” календарь по дням назад и вперёд. Но как сменить режим, как вернуться к отображению недели?
Добрый день.
К сожалению, стандартных механизмов возврата, кроме открытия окна заново, нет. Но можно написать код для переключения режимов отображения, пример показан в нашем демо. Исходный код приложения находится на Github.
1 симпатия
Да, все верно
Посмотрел. Как-то там всё слишком заморочено сделано… Очень много кода для моей очень простой задачки. Добавил обработчик события клика по дате. Оставлю это тут на всякий случай…
@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 симпатия