[Seaside][ShoreComponents] DatePicker discussion
Avi Bryant
avi.bryant at gmail.com
Sun Sep 25 05:16:27 CEST 2005
On Sep 24, 2005, at 6:32 AM, Michel Bany wrote:
> I ported the Shore date picker widget to VisualWorks and I wanted
> to discuss some of the difficulties I had.
Thanks; it's great to see discussions of the problems people are
running into. Consider this an open call for similar such stories :)
>
> 1) The Shore date picker is based upon the Squeak version of the Date
> class. The VisualWorks version of the Date is somewhat incompatible
> and I had to convert the VisualWork Date objects to Squeak.Date
> objects
> (for those who do not know, the VisualWorks version of Seaside
> includes
> a port of the Squeak chronology subsystem in a different namespace).
In which ways are the Date objects incompatible? Rather than
maintaining Squeak.Date, can we come up with a common protocol that
can easily be implemented with a few extensions on either side, so
that at least basic date code is interoperable between Squeak and VW?
> 2) Addding to the onclick attribute. Currently, coding something
> like this
> html attributes at: 'onclick' put: 'some javascript'.
> html attributes at: 'onclick' put: 'some more javascript'.
> generates the onclick attribute twice in the html tag, making the
> response
> uncompliant to xhtml.
<snip>
> Therefore I had the idea to implement this
> html attributes at: 'onclick' append: 'some javascript'.
> html attributes at: 'onclick' append: 'some more javascript'.
> The implementation is equivalent to at:put: when the attribute was
> never used before. It concatenates the old value with the argument,
> inserting a semi-colon otherwise.
> In my opinion, a lot of thinking is still needed there.
This makes sense. It's very useful for the 'class' attribute as
well, although without the semicolon separators. The Canvas
implementation has an #onClick: method that I will adapt to use
this. Perhaps we should add one to HtmlRenderer as well.
> 3) Even with the above issue somewhat solved with at:append: we need
> a technique for telling the date picker component that we want to
> append something to the onclick attribute of the calendar cells.
> The problem
> is that sometimes we want to submit the form, sometimes we do not
> want that.
<snip>
>
> My suggestion is to add a notification in #openTag: before opening
> the html tag
>
> openTag: aString
> TagNotification raiseRenderer: self tagName: aString.
> self document openTag: aString attributes: self attributes.
> attributeBuffer := nil.
I'm concerned about the performance implications of signalling a
notification on every single openTag:. At least in Squeak, I think
that will add a ton of overhead.
If you give your elements ids, couldn't you do something like this?
(Not sure if my JS is correct here).
html datePickerOn: #dateScheduled of: self.
html script: 'document.getElementById("someElement").onclick =
function() {....}'.
Avi
More information about the Seaside
mailing list