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: