It appears Geoff did by creating a type coercer between date and joda time.


On Sun, Dec 1, 2013 at 1:49 PM, Balázs Palcsó <palcso.bal...@gmail.com>wrote:

> Hi,
>
> I am trying to use this component with org.joda.time.DateTime and I get the
> following error:
> Parameter 'translate' of component job/Post:bidsdeadline is bound to null.
> This parameter is not allowed to be null.
>
> If I apply this solution
>
> http://programmerslounge.blogspot.co.uk/2013/07/error-parameter-translate-of-component.html
> Then the above error is gone, but tapestry-datepicker (JQueryDatePicker
> class) expects a TextField and not a DateField. So it fails there
>
> I have added a type coercer for DateTime Date and configured an
> EditBlockContribution for DateTime as per follows:
>
> *public* *static* *void* contributeTypeCoercer(*final* Configuration<
> *CoercionTuple*> configuration) {
>
> *final* Coercion<DateTime, Date> coercion = *new* Coercion<DateTime,
> Date>() {
>
> @Override
>
> *public* Date coerce(*final* DateTime input) {
>
> *return* input != *null* ? input.toDate() : *null*;
>
> }
>
> };
>
>
>  configuration.add(*new* CoercionTuple<DateTime, Date>(DateTime.*class*,
> Date.*class*, coercion));
>
>
>  *final* Coercion<Date, DateTime> coercion2 = *new* Coercion<Date,
> DateTime>() {
>
>
>  @Override
>
> *public* DateTime coerce(*final* Date input) {
>
> *return* *new* DateTime(input);
>
> }
>
> };
>
>
>  configuration.add(*new* CoercionTuple<Date, DateTime>(Date.*class*,
> DateTime.*class*, coercion2));
>
> }
>
>
>  *public* *static* *void* contributeDefaultDataTypeAnalyzer(
> @SuppressWarnings("rawtypes") *final* MappedConfiguration<Class, String>
> configuration) {
>
> configuration.add(DateTime.*class*, "dateTime");
>
> }
>
>
>  *public* *static* *void*
> contributeBeanBlockSource(*final*Configuration<BeanBlockContribution>
> configuration) {
>
> configuration.add(*new* EditBlockContribution("dateTime",
> "datefield/AppPropertyEditBlocks", "dateTime"));
>
> }
>
>
> Can somebody point what I am missing please?
> Has anybody used tapestry-datepicker successfully with Joda-Time?
>
> Thanks,
> Balazs
>
>
> On 25 November 2013 14:27, Barry Books <trs...@gmail.com> wrote:
>
> > Added this also, but now I wonder what would happen if you provide a
> > LocalDate translator but no TypeCoercers. I had assumed the type of value
> > was Date but it's really unknown. Not sure this can be solved in a
> > generalized way. The code is only needed to support native date pickers
> so
> > perhaps it should fail more gracefully and warn you to provide a
> > TypeCoercer.
> >
> >
> > On Sun, Nov 24, 2013 at 11:48 PM, Geoff Callender <
> > geoff.callender.jumpst...@gmail.com> wrote:
> >
> > > Cool.
> > >
> > > I tried to use date-picker with a LocalDate (from Joda Time) but got a
> > > class-cast exception. It was unaware that I had contributed
> TypeCoercers
> > > between LocalDate and Date (
> > >
> >
> http://jumpstart.doublenegative.com.au/jumpstart/examples/lang/typecoercers
> > ).
> > >
> > > It's an easy fix that will allow the date picker to work with any class
> > > that is coerced to, and from, Date.
> > >
> > > Add this:
> > >
> > >         @Inject
> > >         private TypeCoercer coercer;
> > >
> > > and replace this:
> > >
> > >                 Date date = (Date) value;
> > >
> > > with this:
> > >
> > >                 Date date = coercer.coerce(value, Date.class);
> > >
> > > Cheers,
> > >
> > > Geoff
> > >
> > >
> > > On 24/11/2013, at 1:32 AM, Barry Books wrote:
> > >
> > > > Thanks,
> > > >
> > > > I added this to the code
> > > >
> > > >
> > > > On Wed, Nov 20, 2013 at 2:13 AM, Geoff Callender <
> > > > geoff.callender.jumpst...@gmail.com> wrote:
> > > >
> > > >> Very nice. But doesn't handle disabled. It's an easy fix:
> > > >>
> > > >> Instead of this:
> > > >>
> > > >> @InjectContainer
> > > >>
> > > >> private ClientElement clientElement;
> > > >>
> > > >> do this:
> > > >>
> > > >> @InjectContainer
> > > >>
> > > >> private TextField clientElement;
> > > >>
> > > >> and replace this:
> > > >>
> > > >> element.elementBefore("input", "value", formatedDate, "type",
> > "hidden",
> > > >> "class", "form-control", "id", clientID);
> > > >>
> > > >> with this:
> > > >>
> > > >> Element dateField = element.elementBefore("input", "value",
> > > formatedDate,
> > > >> "type", "hidden", "class",
> > > >>
> > > >> "form-control", "id", clientID);
> > > >>
> > > >>
> > > >> if (clientElement.isDisabled()) {
> > > >>
> > > >> dateField.attribute("disabled", "disabled");
> > > >>
> > > >> }
> > > >>
> > > >> Cheers,
> > > >>
> > > >> Geoff
> > > >>
> > > >>
> > > >> On 9 October 2013 22:02, Barry Books <trs...@gmail.com> wrote:
> > > >>
> > > >>> I pushed a new snapshot. What documentation there is here
> > > >>>
> > > >>> https://github.com/trsvax/tapestry-datepicker
> > > >>>
> > > >>> This version allows overriding the location of the javascript and
> css
> > > for
> > > >>> the jquery date picker.
> > > >>>
> > > >>> The basic features are
> > > >>>
> > > >>> 1. Translators for textfield to validate date/calendar/timestamp
> > entry
> > > >>> 2. A mixin that adds jQuery Calendar support to the textfield
> > > >>> 3. Native type="date" support (at least on the iPhone)
> > > >>> 4. BeanEdit support
> > > >>> 5. Ability to override css/javascript included by the jQuery mixin
> > > >>>
> > > >>> I think this makes it feature complete but at this point things are
> > > still
> > > >>> subject to change. I'm going to create some better docs and tests
> > then
> > > >> I'll
> > > >>> push a version to maven central
> > > >>>
> > > >>> Thanks for the input so far
> > > >>>
> > > >>>
> > > >>>
> > > >>> On Tue, Oct 8, 2013 at 7:54 PM, Barry Books <trs...@gmail.com>
> > wrote:
> > > >>>
> > > >>>> it's in the current one. I'll also be pushing up some fixes in the
> > > >>> morning.
> > > >>>>
> > > >>>>
> > > >>>> On Tue, Oct 8, 2013 at 5:53 PM, Lenny Primak <
> > lpri...@hope.nyc.ny.us
> > > >>>> wrote:
> > > >>>>
> > > >>>>> Let us know when the beaneditor support is there.  I'll try it
> then
> > > >> and
> > > >>>>> give feedback
> > > >>>>> Thank you!
> > > >>>>>
> > > >>>>> On Oct 8, 2013, at 6:39 AM, Barry Books wrote:
> > > >>>>>
> > > >>>>>> https://oss.sonatype.org/content/repositories/snapshots/
> > > >>>>>>
> > > >>>>>>
> > > >>>>>>
> > > >>>>>> <groupId>com.trsvax</groupId>
> > > >>>>>>
> > > >>>>>> <artifactId>tapestry-datepicker</artifactId>
> > > >>>>>>
> > > >>>>>> <version>0.0.1-SNAPSHOT</version>
> > > >>>>>>
> > > >>>>>>
> > > >>>>>> It's still a work in progress but I think it's starting to come
> > > >>>>> together.
> > > >>>>>> Being able to pass attributes from the translator into the html
> > > >> stream
> > > >>>>> is
> > > >>>>>> proving useful. For example you can do things such as
> > > >>>>>>
> > > >>>>>> placeholder="mm-dd-yyyy"
> > > >>>>>>
> > > >>>>>>
> > > >>>>>>
> > > >>>>>>
> > > >>>>>> On Tue, Oct 8, 2013 at 4:33 AM, Geoff Callender <
> > > >>>>>> geoff.callender.jumpst...@gmail.com> wrote:
> > > >>>>>>
> > > >>>>>>> What's the artifact info?
> > > >>>>>>>
> > > >>>>>>> On 07/10/2013, at 10:26 PM, Barry Books wrote:
> > > >>>>>>>
> > > >>>>>>>> Snapshot 0.0.1-SNAPSHOT is available at
> > > >>>>>>>>
> > > >>>>>>>>
> > > >>>>>>>> https://oss.sonatype.org/content/repositories/snapshots/
> > > >>>>>>>>
> > > >>>>>>>> I have a bit of cleanup and then I'll push a version to maven
> > > >>> central
> > > >>>>>>>>
> > > >>>>>>>>
> > > >>>>>>>>
> > > >>>>>>>> On Fri, Oct 4, 2013 at 3:33 PM, Barry Books <trs...@gmail.com
> >
> > > >>> wrote:
> > > >>>>>>>>
> > > >>>>>>>>> After much googling I think I've added iPhone type="date"
> > > >> support.
> > > >>> I
> > > >>>>> had
> > > >>>>>>>>> to make a few assumptions to get it to work.
> > > >>>>>>>>>
> > > >>>>>>>>> 1. The format for type="date" support is yyyy-mm-dd. This is
> > what
> > > >>> the
> > > >>>>>>>>> iPhone appears to use and seems a reasonable choice.
> > > >>>>>>>>> 2. The best test I could find to indicate native support is
> > > >>>>>>>>>
> > > >>>>>>>>> *var* input = document.createElement('input');
> > > >>>>>>>>>
> > > >>>>>>>>> input.setAttribute('type', 'date');
> > > >>>>>>>>>
> > > >>>>>>>>> input.value = 'testing';
> > > >>>>>>>>>
> > > >>>>>>>>>
> > > >>>>>>>>> If the type is date and the value is not testing I'm assuming
> > > >>> native
> > > >>>>>>> date
> > > >>>>>>>>> support.
> > > >>>>>>>>>
> > > >>>>>>>>>
> > > >>>>>>>>> What I ended up doing was adding a hidden element to support
> > > >> native
> > > >>>>> date
> > > >>>>>>>>> pickers. If I think there is support I hide the real one and
> > turn
> > > >>> the
> > > >>>>>>>>> hidden one into a date. On a form submit I copy the data into
> > the
> > > >>>>> real
> > > >>>>>>>>> element. This way I can support both date formats. It seems
> to
> > > >> work
> > > >>>>> on
> > > >>>>>>> my
> > > >>>>>>>>> iPhone but that's not a large sample.
> > > >>>>>>>>>
> > > >>>>>>>>>
> > > >>>>>>>>> There is still work to be done but I think I should be able
> to
> > > >> meet
> > > >>>>> all
> > > >>>>>>>>> the requirements I've seen so far.
> > > >>>>>>>>>
> > > >>>>>>>>>
> > > >>>>>>>>>
> > > >>>>>>>>>
> > > >>>>>>>>>
> > > >>>>>>>>> On Thu, Oct 3, 2013 at 9:15 PM, Barry Books <
> trs...@gmail.com>
> > > >>>>> wrote:
> > > >>>>>>>>>
> > > >>>>>>>>>> Unfortunately modernizer does not really support that. From
> > the
> > > >>> docs
> > > >>>>>>>>>>
> > > >>>>>>>>>> Modernizr cannot detect that date inputs create a
> datepicker,
> > > >>>>>>>>>>
> > > >>>>>>>>>> It is possible to detect if a browser support type="date"
> but
> > > >> that
> > > >>>>> does
> > > >>>>>>>>>> not mean it has a datepicker. I suspect I'm going to add an
> > > >> option
> > > >>>>> to
> > > >>>>>>> give
> > > >>>>>>>>>> it a try.
> > > >>>>>>>>>>
> > > >>>>>>>>>>
> > > >>>>>>>>>> On Thu, Oct 3, 2013 at 8:12 PM, Geoff Callender <
> > > >>>>>>>>>> geoff.callender.jumpst...@gmail.com> wrote:
> > > >>>>>>>>>>
> > > >>>>>>>>>>> Sounds good, Barry.
> > > >>>>>>>>>>>
> > > >>>>>>>>>>> You mentioned earlier that you were "planing on using
> > modernizr
> > > >>> to
> > > >>>>>>> detect
> > > >>>>>>>>>>> if type="date" is supported. " so that browsers with good
> > HTML5
> > > >>>>> date
> > > >>>>>>>>>>> support (eg. iOS Safari, Chrome) are left alone. How did
> that
> > > >> go?
> > > >>>>>>>>>>>
> > > >>>>>>>>>>>
> > > >>>>>>>>>>> On 3 October 2013 12:08, Barry Books <trs...@gmail.com>
> > wrote:
> > > >>>>>>>>>>>
> > > >>>>>>>>>>>> I've uploaded the initial version to github
> > > >>>>>>>>>>>>
> > > >>>>>>>>>>>> https://github.com/trsvax/tapestry-datepicker
> > > >>>>>>>>>>>>
> > > >>>>>>>>>>>> I think I'm going to make this standalone project that
> only
> > > >>>>> contains
> > > >>>>>>>>>>> the
> > > >>>>>>>>>>>> datepicker. This will make it easier for other project to
> > just
> > > >>>>>>> include
> > > >>>>>>>>>>> it.
> > > >>>>>>>>>>>> Currently to use it you will have to download and build
> it.
> > > >>> Here
> > > >>>>> is
> > > >>>>>>> an
> > > >>>>>>>>>>>> example usage
> > > >>>>>>>>>>>>
> > > >>>>>>>>>>>> <t:form>
> > > >>>>>>>>>>>>  <t:textfield value="date"
> > > >>> t:mixins="datefield/JQueryDatePicker"
> > > >>>>>>>>>>>> data-duration="slow"/>
> > > >>>>>>>>>>>>  <input type="submit"/>
> > > >>>>>>>>>>>> </t:form>
> > > >>>>>>>>>>>>
> > > >>>>>>>>>>>>
> > > >>>>>>>>>>>> All that's required is the input type be a date which
> causes
> > > >>>>> Tapestry
> > > >>>>>>>>>>> to
> > > >>>>>>>>>>>> use a Date Translator to convert the data to/from a
> string.
> > > >> This
> > > >>>>> also
> > > >>>>>>>>>>>> creates the client side validation. The mixin adds the
> > client
> > > >>> side
> > > >>>>>>>>>>>> interface. In this case the JQuery UI calendar.
> > > >>>>>>>>>>>>
> > > >>>>>>>>>>>> If you prefer you can create your own component and
> override
> > > >> the
> > > >>>>>>>>>>> Tapestry
> > > >>>>>>>>>>>> one.
> > > >>>>>>>>>>>>
> > > >>>>>>>>>>>> public class DateField extends TextField {
> > > >>>>>>>>>>>>
> > > >>>>>>>>>>>>  @Mixin
> > > >>>>>>>>>>>>  private JQueryDatePIcker mixin;
> > > >>>>>>>>>>>>
> > > >>>>>>>>>>>> }
> > > >>>>>>>>>>>>
> > > >>>>>>>>>>>> Questions, commets etc are welcome
> > > >>>>>>>>>>>>
> > > >>>>>>>>>>>> Barry
> > > >>>>>>>>>>>>
> > > >>>>>>>>>>>
> > > >>>>>>>>>>
> > > >>>>>>>>>>
> > > >>>>>>>>>
> > > >>>>>>>
> > > >>>>>>>
> > > >>>>>>>
> > > >>
> ---------------------------------------------------------------------
> > > >>>>>>> To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
> > > >>>>>>> For additional commands, e-mail:
> users-h...@tapestry.apache.org
> > > >>>>>>>
> > > >>>>>>>
> > > >>>>>
> > > >>>>>
> > > >>>>>
> > ---------------------------------------------------------------------
> > > >>>>> To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
> > > >>>>> For additional commands, e-mail: users-h...@tapestry.apache.org
> > > >>>>>
> > > >>>>>
> > > >>>>
> > > >>>
> > > >>
> > >
> > >
> >
>

Reply via email to