SmartClient Version: v11.1p_2018-03-28/Pro Deployment (built 2018-03-28)
I am trying to persist and restore settings for a FilterBuilder.
Using other posts on the site I've been able to convert the AdvancedCriteria to JSON, store as a String (that I could persist to a db) and then restore the FilterBuilder contents from the JSON. This works as I expect, with the exception that when RelativeDate is restored, if I've specified the filter as "less than" "N days from now" "30", I want this 3-form-item format restored in the filter when I plug the JSON back in. Currently the widget converts the relative date to an actual date and populates it in a SelectItem which is not what I want.

The attachment shows both formats, I'd like the top (highlighted) format to be restored, not the bottom format (which is currently what happens).
Should I be modifying the defaults of RelativeDateItem to achieve this? I can't seem to find the right settings.
Thanks.
	
							
						
					I am trying to persist and restore settings for a FilterBuilder.
Using other posts on the site I've been able to convert the AdvancedCriteria to JSON, store as a String (that I could persist to a db) and then restore the FilterBuilder contents from the JSON. This works as I expect, with the exception that when RelativeDate is restored, if I've specified the filter as "less than" "N days from now" "30", I want this 3-form-item format restored in the filter when I plug the JSON back in. Currently the widget converts the relative date to an actual date and populates it in a SelectItem which is not what I want.
The attachment shows both formats, I'd like the top (highlighted) format to be restored, not the bottom format (which is currently what happens).
Should I be modifying the defaults of RelativeDateItem to achieve this? I can't seem to find the right settings.
Thanks.
Code:
	
	public class FilterBuilderDemo extends Tab {
    private String filterString;
    public FilterBuilderDemo() {
        super("Product Filter Builder");
        // Enforce how RelativeDateItem is rendered in FilterBuilder
        RelativeDateItem defaults = new RelativeDateItem();
        defaults.setTimeUnitOptions(TimeUnit.DAY, TimeUnit.WEEK, TimeUnit.MONTH, TimeUnit.YEAR);
        defaults.setAllowAbsoluteDates(false);
        RelativeDateItem.setDefaultProperties(defaults);
        final FilterBuilder filters = new FilterBuilder();
        filters.setFieldDataSource(DataSource.get("productFilterDS"));
        IButton save = new IButton("Save");
        save.addClickHandler(new ClickHandler() {
            @Override
            public void onClick(ClickEvent event) {
                filterString = filters.getCriteria().toJSON();
                filters.getCriteria().asString();
                SC.say("JSON<br>" + filterString);
                filters.clearCriteria();
            }
        });
        IButton restore = new IButton("Restore");
        restore.addClickHandler(new ClickHandler() {
            @Override
            public void onClick(ClickEvent event) {
                if (filterString != null) {
                    filters.setCriteria(AdvancedCriteria.fromJSON(filterString));
                }
            }
        });
        VLayout content = new VLayout();
        content.addMember(filters);
        content.addMember(save);
        content.addMember(restore);
        setPane(content);
    }
}
Comment