How to disable past days in ZK Calendar?

258 Views Asked by At

I'm using ZK CE-9.0.0 & zk-calendar-2.1.5 source code.

Currently all the days are enabled in the calendar.

I need to disable the past days (greyed out & no click event), from all the views(Day/Week/Month), but not able to find any such feature directly available.

Can anyone help me with this please?

Thanks,

RAS

1

There are 1 best solutions below

2
Yann39 On

I don't think there is such feature.

A workaround would be to disable event click on past days and change the color.

1 . Catch clicks in your controller :

@Wire("#course-calendar")
private Calendars courseCalendar;

@Listen("onEventCreate = #course-calendar")
public void clickCreateEvent(CalendarsEvent event) {
    if (event.getBeginDate().before(new Date())) {
        // disable click if event is before now
    } else {
        //do something on event create
    }
}

@Listen("onEventEdit = #course-calendar")
public void clickEditEvent(CalendarsEvent event) {
    if (event.getBeginDate().before(new Date())) {
        // disable click if event is before now
    } else {
        // do something on event edit
    }
}
  1. Grey out events on event creation :
for (MyEvent me : myManager.getEvents()) {
    final SimpleCalendarEvent simpleCalendarEvent = new SimpleCalendarEvent();

    // set grey color event before now
    if (me.startDate < new Date()) {
        simpleCalendarEvent.setContentColor("#aaaaaa");
        simpleCalendarEvent.setHeaderColor("#aaaaaa");
        simpleCalendarEvent.setLocked(true);
    } else {
        simpleCalendarEvent.setContentColor("#4363d8");
        simpleCalendarEvent.setHeaderColor("#4363d8");
        simpleCalendarEvent.setLocked(false);
    }

    simpleCalendarEvent.setContent(me.getContent());
    simpleCalendarEvent.setBeginDate(me.startDate);
    simpleCalendarEvent.setEndDate(me.endDate);
    simpleCalendarEvent.setTitle(me.getTitle());

    getSimpleCalendarModel().add(simpleCalendarEvent);
}