One thing I would look into is to make this new field JavaScript only and
have it transfer the data as a hidden field, in the ISO date format. That
would help eliminate the class of problems related to client vs. server
time zone.

I've developed for a client a DatePicker that can also select times; it's
unfortunately based on a proprietary calendar widget. Don't have the URL
handy, but whatever. Point is, having (optional) support for selecting time
within date would be very nice.


On Wed, Sep 18, 2013 at 3:24 PM, 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]
> >
> >
>



-- 
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

Reply via email to