My calendar is not updating correctly in some cases:
Testcase:
CalendarTestWindow:
1) If I change the time of an event *in the month overview* , it is not updated *in the week overview*. Also in the *day overview*. If I scroll up and down, the event disappears completely!!!
2) If I change the time of an event *in the day overview* it is not updated in the *week overview*. It is only updated if I scroll up and down.
Using smartgwt 5.0p 25.03 power.
Testcase:
Code:
public void onModuleLoad() {
VLayout layout = new VLayout();
Calendar calendar = new Calendar();
calendar.setDataSource(DataSource.get("calendar"));
calendar.setStartDateField("f_from");
calendar.setEndDateField("f_to");
calendar.setDescriptionField("f_text");
calendar.setNameField("f_title");
calendar.setTitleField("f_title");
calendar.setTimeFormatter(TimeDisplayFormat.TOSHORTPADDED24HOURTIME);
calendar.setTodayBackgroundColor("#E8E8E8");
calendar.setEventNameFieldTitle("name");
calendar.setSaveButtonTitle("save");
calendar.setRemoveButtonTitle("cancel");
calendar.setTwentyFourHourTime(true);
calendar.setWorkdayStart("8:00am");
calendar.setWorkdayEnd("8:00pm");
calendar.setShowWorkday(true);
calendar.setScrollToWorkday(true);
calendar.setCanResizeEvents(false);
calendar.setCanDragCreateEvents(false);
calendar.setShowQuickEventDialog(false);
calendar.setAutoFetchData(true);
calendar.setDisableWeekends(false);
calendar.setShowWeekends(true);
calendar.setEventEditorCustomizer(new EventEditorCustomizer() {
@Override
public boolean showEventEditor(CalendarEvent calendarEvent,
Boolean isNewEvent) {
CalendarTestWindow w = new CalendarTestWindow(calendarEvent,
getCalendar());
getCalendar().addChild(w);
w.show();
getCalendar().getEventDialog().hide();
return false;
}
});
layout.setWidth100();
layout.setHeight100();
layout.addMember(calendar);
layout.draw();
}Code:
package de.mks_infofabrik.kids.client.ui.widgets.windows;
import java.util.Date;
import com.smartgwt.client.data.DSCallback;
import com.smartgwt.client.data.DSRequest;
import com.smartgwt.client.data.DSResponse;
import com.smartgwt.client.data.DataSource;
import com.smartgwt.client.data.Record;
import com.smartgwt.client.widgets.IButton;
import com.smartgwt.client.widgets.Window;
import com.smartgwt.client.widgets.calendar.Calendar;
import com.smartgwt.client.widgets.calendar.CalendarEvent;
import com.smartgwt.client.widgets.events.ClickEvent;
import com.smartgwt.client.widgets.events.ClickHandler;
import com.smartgwt.client.widgets.form.DynamicForm;
import com.smartgwt.client.widgets.form.fields.DateTimeItem;
import com.smartgwt.client.widgets.form.fields.TextAreaItem;
import com.smartgwt.client.widgets.form.fields.TextItem;
import com.smartgwt.client.widgets.layout.HLayout;
import com.smartgwt.client.widgets.layout.VLayout;
public class CalendarTestWindow extends Window {
private final DateTimeItem dateItem;
private final TextItem nameItem;
private final TextAreaItem beschreibungItem;
public CalendarTestWindow(final CalendarEvent calendarEvent,
final Calendar calendar) {
setWidth100();
setHeight100();
setShowMaximizeButton(true);
setCanDragReposition(false);
setCanDragResize(true);
final Date from = calendar.getEventStartDate(calendarEvent);
String windowTitle = "title";
setTitle(windowTitle);
final DynamicForm form = new DynamicForm();
form.setWidth100();
form.setNumCols(3);
form.setColWidths(100, 10, 80);
dateItem = new DateTimeItem();
dateItem.setTitle("start");
dateItem.setColSpan(3);
dateItem.setValue(from);
dateItem.setRequired(true);
nameItem = new TextItem();
nameItem.setTitle("name");
nameItem.setColSpan(2);
nameItem.setWidth(372);
nameItem.setRequired(true);
nameItem.setValue(calendarEvent.getAttribute("f_title"));
beschreibungItem = new TextAreaItem();
beschreibungItem.setTitle("event");
beschreibungItem.setColSpan(2);
beschreibungItem.setWidth(372);
beschreibungItem.setHeight(60);
beschreibungItem.setValue(calendarEvent.getAttribute("f_text"));
form.setItems(dateItem, nameItem, beschreibungItem);
HLayout buttonsLayout = new HLayout(5);
IButton saveButton = new IButton("save");
saveButton.setWidth(160);
saveButton.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
if (!form.validate()) {
return;
}
doSave(calendarEvent);
}
});
IButton deleteButton = new IButton("delete");
deleteButton.setWidth(150);
deleteButton.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
calendar.removeEvent(calendarEvent);
}
});
IButton cancelButton = new IButton("cancel");
cancelButton.setWidth(150);
cancelButton.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
markForDestroy();
}
});
buttonsLayout.setMembers(saveButton, deleteButton, cancelButton);
VLayout vlayout = new VLayout();
vlayout.addMembers(form, buttonsLayout);
addItem(vlayout);
}
private void doSave(final CalendarEvent calendarEvent) {
Integer aufgabeId = calendarEvent.getAttributeAsInt("f_id");
Record aufgabeRecord = new Record();
aufgabeRecord.setAttribute("f_title", nameItem.getValue());
aufgabeRecord.setAttribute("f_text", beschreibungItem.getValue());
Date fromDate = dateItem.getValueAsDate();
Date toDate = (Date) dateItem.getValueAsDate().clone();
toDate.setMinutes(fromDate.getMinutes() + 30);
aufgabeRecord.setAttribute("f_from", fromDate);
aufgabeRecord.setAttribute("f_to", toDate);
if (aufgabeId == null) {
DataSource.get("calendar").addData(aufgabeRecord, new DSCallback() {
@Override
public void execute(DSResponse dsResponse, Object data,
DSRequest dsRequest) {
markForDestroy();
}
});
} else {
aufgabeRecord.setAttribute("f_id", aufgabeId);
DataSource.get("calendar").updateData(aufgabeRecord,
new DSCallback() {
@Override
public void execute(DSResponse dsResponse, Object data,
DSRequest dsRequest) {
markForDestroy();
}
});
}
}
}2) If I change the time of an event *in the day overview* it is not updated in the *week overview*. It is only updated if I scroll up and down.
Using smartgwt 5.0p 25.03 power.