I was planing on using modernizr to detect if type="date" is supported. I've also added min and max to the mixin since they are also supported by HTML5. I'm sure I'll put in my Bootstrap library and I'll submit it for inclusion in 5.4 but it's not at all compatible with the old DateField.
On Wed, Sep 18, 2013 at 7:12 PM, Geoff Callender < [email protected]> wrote: > iDevices have their own, great, touch-friendly, date picker for HTML5 > type="date", so maybe what's needed is to detect the media type before > deciding whether to display a JavaScript datepicker. > > Similarly, recent releases of Chrome handle type="date" with a pretty good > picker, so maybe what's needed is a parameter to declare which browsers to > NOT override with our picker. > > > > On 19 September 2013 08:24, Barry Books <[email protected]> wrote: > > > I started working on this today. Give the HTML5 spec supporting > type="date" > > I decided to break this into two parts. First I wrote a Translator for > the > > Date class. This means you can now just use TextField for dates if the > > input type is Date. Since the Translator is contributed in the AppModule > > you get a consistent date format across all fields. If you want to a > > different format you can just supply a different translator to the > > textField. Next I'll just create a mixin that adds some javascript to the > > field. I suspect I'll just use the jQueryUI one but it should be easy to > > swap them since it's a mixin. I'm not sure how general this approach is > but > > it solves all my problems. > > > > FYI: It would be possible to create the Translator on the fly in the > mixin > > except for two problems. > > 1. The Translator has a default which means the mixin cannot do a > > BindParameter and set the value > > 2. I don't get a form prepare event so I can't set the translator on the > > form submit. > > > > The Translator is here: > > > > public class DateTranslator extends AbstractTranslator<Date> { > > > > > > > > private final String formatString; > > > > > > > > public DateTranslator(String format) { > > > > super("DateTranslator(" + > > format + ")",Date.class,"date"); > > > > formatString = format; > > > > } > > > > > > > > @Override > > > > public String toClient(Date value) { > > > > return new > > SimpleDateFormat(formatString).format(value); > > > > } > > > > > > > > @Override > > > > public Date parseClient(Field field, > String > > clientValue, String message) > > > > throws > > ValidationException { > > > > > > > > ParsePosition > parsePosition > > = new ParsePosition(0); > > > > DateFormat format = new > > SimpleDateFormat(formatString); > > > > format.setLenient(false); > > > > > > > > Date date = > > format.parse(clientValue,parsePosition); > > > > if ( parsePosition.getIndex() != > > clientValue.length() ) { > > > > throw new > > ValidationException(message); > > > > } > > > > return date; > > > > } > > > > > > > > @Override > > > > public void render(Field field, String > > message, MarkupWriter writer, FormSupport formSupport) { > > > > > > writer.attributes("data-format",formatString); > > > > } > > > > > > > > } > > > > > > On Tue, Sep 17, 2013 at 11:25 PM, Lenny Primak <[email protected] > > >wrote: > > > > > Agreed. I will let the dev list know when I will start working on > > > datepicker. > > > Barry, if you start earlier let me know and we can coordinate efforts. > I > > > don't want to duplicate efforts. I have never written > PropertyEditBlocks > > > etc so you may be in a better position to do this. > > > > > > What I don't want to do is try to write my own datepicker. We should > use > > > one of the public ally available ones, I,e, bootstrap of jquery UI one. > > > > > > On Sep 17, 2013, at 10:09 PM, Barry Books <[email protected]> wrote: > > > > > > > This is high on my list also. I've spent today looking at datepickers > > and > > > > concluded none of them are perfect and it may be best to just > implement > > > the > > > > one you want and not bother with the Tapestry one. However I do think > > > > the TypeCoercer > > > > for String to DateFormat needs to be fixed. The current one does not > do > > > > setLenient(false) which I think is needed no matter what data picker > is > > > > used and while most Tapestry configuration can be overridden this one > > > > cannot. I'll submit a JIRA for this. The fix is easy and even makes > the > > > > current datepicker better. Here is a description of setLenient: > > > > > > > > Specify whether or not date/time parsing is to be lenient. With > lenient > > > > parsing, the parser may use heuristics to interpret inputs that do > not > > > > precisely match this object's format. With strict parsing, inputs > must > > > > match this object's format. > > > > > > > > I don't think you want heuristics when validating dates, you want the > > > > format to precisely match. > > > > > > > > > > > > On Tue, Sep 17, 2013 at 6:04 PM, Lenny Primak < > [email protected] > > > >wrote: > > > > > > > >> High because we have to get this done for 5.4. Probably start with > > > >> incorporating the new datefield into FlowLogix though. Not sure > patch > > > makes > > > >> sense in this case though. But I am willing to work on the datefield > > > >> modernization. > > > >> > > > >> On Sep 16, 2013, at 7:02 PM, Howard Lewis Ship <[email protected]> > > > wrote: > > > >> > > > >>> What are the chances of a patch? > > > >>> > > > >>> I'm stretched really, really thin right now. More so than usual. > I'm > > > >>> anything but a fan of the built-in DateField component for any > number > > > of > > > >>> reasons, but I can't squeeze blood from a stone. > > > >>> > > > >>> > > > >>> On Mon, Sep 16, 2013 at 7:12 PM, Lenny Primak <[email protected] > > > > > >> wrote: > > > >>> > > > >>>> Just for planning purposes, what are the changes of datepicker > being > > > >>>> replaced to bootstrap (or any other modern one) > > > >>>> prior to T5.4 release? > > > >>>> > > > >>>> I need to plan this out, because current T5.4 datepicker is > unusable > > > for > > > >>>> us, so if the new datepicker isn't in the cards, > > > >>>> we need to start writing our own datepicker integration. > > > >>>> > > > >>>> Thank you. > > > >>>> > > > >>>> > > > >>>> > > > >>>> > > --------------------------------------------------------------------- > > > >>>> To unsubscribe, e-mail: [email protected] > > > >>>> For additional commands, e-mail: [email protected] > > > >>> > > > >>> > > > >>> -- > > > >>> Howard M. Lewis Ship > > > >>> > > > >>> Creator of Apache Tapestry > > > >>> > > > >>> The source for Tapestry training, mentoring and support. Contact me > > to > > > >>> learn how I can get you up and productive in Tapestry fast! > > > >>> > > > >>> (971) 678-5210 > > > >>> http://howardlewisship.com > > > >> > > > >> > --------------------------------------------------------------------- > > > >> To unsubscribe, e-mail: [email protected] > > > >> For additional commands, e-mail: [email protected] > > > >> > > > >> > > > > > > --------------------------------------------------------------------- > > > To unsubscribe, e-mail: [email protected] > > > For additional commands, e-mail: [email protected] > > > > > > > > >
