I'll look into rangeRoundingGranularity() once I need to configure the options for the item. For now, I'm fine with the 6 buttons from the sample and the default in the Dropdown.
Those six buttons are working now as expected with this adjusted code:
Code:
package com.smartgwt.sample.client;
import java.util.Date;
import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.i18n.client.DateTimeFormat;
import com.google.gwt.user.datepicker.client.CalendarUtil;
import com.smartgwt.client.Version;
import com.smartgwt.client.core.KeyIdentifier;
import com.smartgwt.client.data.DataSource;
import com.smartgwt.client.data.DateRange;
import com.smartgwt.client.data.RelativeDate;
import com.smartgwt.client.types.Cursor;
import com.smartgwt.client.util.Page;
import com.smartgwt.client.util.PageKeyHandler;
import com.smartgwt.client.util.SC;
import com.smartgwt.client.widgets.IButton;
import com.smartgwt.client.widgets.Label;
import com.smartgwt.client.widgets.Window;
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.CanvasItem;
import com.smartgwt.client.widgets.form.fields.MiniDateRangeItem;
import com.smartgwt.client.widgets.form.fields.SpacerItem;
import com.smartgwt.client.widgets.layout.HStack;
import com.smartgwt.client.widgets.layout.VLayout;
public class BuiltInDS implements EntryPoint {
private VLayout mainLayout;
private IButton recreateBtn;
public void onModuleLoad() {
KeyIdentifier debugKey = new KeyIdentifier();
debugKey.setCtrlKey(true);
debugKey.setKeyName("D");
Page.registerKey(debugKey, new PageKeyHandler() {
public void execute(String keyName) {
SC.showConsole();
}
});
mainLayout = new VLayout(20);
mainLayout.setWidth100();
mainLayout.setHeight100();
recreateBtn = new IButton("Recreate");
recreateBtn.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
recreate();
}
});
mainLayout.addMember(recreateBtn);
recreate();
mainLayout.draw();
}
private void recreate() {
Window w = new Window();
w.setWidth("95%");
w.setHeight("95%");
w.setMembersMargin(0);
w.setModalMaskOpacity(70);
w.setTitle(" (" + Version.getVersion() + "/" + Version.getSCVersionNumber() + ")");
w.setTitle("5.1p / 6.1d MiniDateRangeItem problems (no date, wrong calculation)" + w.getTitle());
w.setShowMinimizeButton(false);
w.setIsModal(true);
w.setShowModalMask(true);
w.centerInPage();
{
final DynamicForm df = new DynamicForm();
df.setColWidths("100", "380");
df.setDataSource(DataSource.get("supplyItem"));
MiniDateRangeItem createdAtMDRI = new MiniDateRangeItem("nextShipment");
createdAtMDRI.setHeight(28);
createdAtMDRI.setWidth("*");
MDRIConfiguer mdriConfiguer = new MDRIConfiguer("MDRIConfiguer", createdAtMDRI);
df.setFields(createdAtMDRI, new SpacerItem(), mdriConfiguer);
IButton showValue = new IButton("Show value", new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
SC.say(df.getValuesAsAdvancedCriteria() != null ? df.getValuesAsAdvancedCriteria().toJSON() : "no criteria");
}
});
w.addItem(df);
w.addItem(showValue);
}
w.show();
w.focus();
}
private class MDRIConfiguer extends CanvasItem {
private MiniDateRangeItem createdAtDRI;
public MDRIConfiguer(String name, final MiniDateRangeItem createdAtDRI) {
super(name);
this.createdAtDRI = createdAtDRI;
setStartRow(false);
setShowTitle(false);
setWidth("*");
setHeight(createdAtDRI.getHeight());
HStack al = new HStack(5);
{
al.addMember(new MyLabel("YTD", new RelativeDate("-0Y[-0Y]"), new RelativeDate("$today")));
al.addMember(new MyLabel("QTD", new RelativeDate("-0Q[-0Q]"), new RelativeDate("$today")));
al.addMember(new MyLabel("MTD", new RelativeDate("-0M[-0M]"), new RelativeDate("$today")));
Date d = new Date();
CalendarUtil.addMonthsToDate(d, -12);
String lastYear = DateTimeFormat.getFormat("yyyy").format(d);
d = new Date();
CalendarUtil.addMonthsToDate(d, -3);
int month0aligned = (new Integer(DateTimeFormat.getFormat("M").format(d)) / 3) + 1;
String lastQuarter = "Q" + (month0aligned == 0 ? 4 : month0aligned);
d = new Date();
CalendarUtil.addMonthsToDate(d, -1);
String lastMonth = DateTimeFormat.getFormat("MMMM").format(d);
al.addMember(new MyLabel(lastYear, new RelativeDate("-1Y[-0Y]"), new RelativeDate("-1Y[+0Y]")));
al.addMember(new MyLabel(lastQuarter, new RelativeDate("-1Q[-0Q]"), new RelativeDate("-1Q[+0Q]")));
al.addMember(new MyLabel(lastMonth, new RelativeDate("-1M[-0M]"), new RelativeDate("-1M[+0M]")));
}
setCanvas(al);
}
private class MyLabel extends Label {
public MyLabel(String content, final RelativeDate startRD, final RelativeDate endRD) {
super();
setWidth(1);
setCursor(Cursor.HAND);
setContents("<span style=\"text-decoration: underline;\">" + content + "</span>");
addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
DateRange dr = new DateRange();
dr.setRelativeStartDate(startRD);
dr.setRelativeEndDate(endRD);
createdAtDRI.setValue(dr);
}
});
}
}
}
}
Blama
Leave a comment: