Quantcast
Channel: SmartClient Forums
Viewing all articles
Browse latest Browse all 4756

Calendar: not updating correctly

$
0
0
My calendar is not updating correctly in some cases:

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();
        }

CalendarTestWindow:
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();
                                                }
                                        });
                }
        }
}

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.

Viewing all articles
Browse latest Browse all 4756

Trending Articles