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