You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tapestry.apache.org by hl...@apache.org on 2012/11/11 21:11:19 UTC
[5/9] git commit: Get basic parse/format working
Get basic parse/format working
Project: http://git-wip-us.apache.org/repos/asf/tapestry-5/repo
Commit: http://git-wip-us.apache.org/repos/asf/tapestry-5/commit/69a2edd1
Tree: http://git-wip-us.apache.org/repos/asf/tapestry-5/tree/69a2edd1
Diff: http://git-wip-us.apache.org/repos/asf/tapestry-5/diff/69a2edd1
Branch: refs/heads/5.4-js-rewrite
Commit: 69a2edd1d50e1d386574fc60710e34a3178cc5c9
Parents: 4150051
Author: Howard M. Lewis Ship <hl...@apache.org>
Authored: Sun Nov 11 08:40:53 2012 -0800
Committer: Howard M. Lewis Ship <hl...@apache.org>
Committed: Sun Nov 11 08:40:53 2012 -0800
----------------------------------------------------------------------
.../META-INF/modules/core/datefield.coffee | 69 +++++++++++++--
1 files changed, 61 insertions(+), 8 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/69a2edd1/tapestry-core/src/main/coffeescript/META-INF/modules/core/datefield.coffee
----------------------------------------------------------------------
diff --git a/tapestry-core/src/main/coffeescript/META-INF/modules/core/datefield.coffee b/tapestry-core/src/main/coffeescript/META-INF/modules/core/datefield.coffee
index 464817b..33cd0aa 100644
--- a/tapestry-core/src/main/coffeescript/META-INF/modules/core/datefield.coffee
+++ b/tapestry-core/src/main/coffeescript/META-INF/modules/core/datefield.coffee
@@ -15,8 +15,9 @@
# ##core/datefield
#
# Provides support for the `core/DateField` component.
-define ["core/dom", "core/events", "core/messages", "core/builder", "_"],
- (dom, events, messages, builder, _) ->
+define ["core/dom", "core/events", "core/messages", "core/builder", "core/ajax",
+ "core/alert", "_"],
+ (dom, events, messages, builder, ajax, alert, _) ->
# Translate from the provided order (SUNDAY = 0, MONDAY = 1), to
# the order needed by the DatePicker component (MONDAY = 0 ... SUNDAY = 6)
@@ -42,12 +43,43 @@ define ["core/dom", "core/events", "core/messages", "core/builder", "_"],
unless @popup
@createPopup()
+ else if @popup.visible()
+ @popup.hide()
return
- if @popup.visible()
- @popup.hide()
- else
+ value = @field.value()
+
+ if value is ""
+ @datePicker.setDate null
@popup.show()
+ return
+
+ @field.addClass "ajax-wait"
+
+ ajax (@container.attribute "data-parse-url"),
+ parameters:
+ input: value
+ onerror: =>
+ @field.removeClass "ajax-wait"
+ @field.focus()
+
+ onsuccess: (response) =>
+ @field.removeClass "ajax-wait"
+ reply = response.responseJSON
+
+ if reply.result
+ date = new Date()
+ date.setTime reply.result
+ @datePicker.setDate date
+ @popup.show()
+ return
+
+ @field.focus()
+
+ @fieldError reply.error
+
+ fieldError: (message) ->
+ alert { message }
createPopup: ->
@datePicker = new DatePicker()
@@ -55,10 +87,31 @@ define ["core/dom", "core/events", "core/messages", "core/builder", "_"],
@popup.append dom @datePicker.create()
@trigger.insertAfter @popup
- # @popup.absolutize().hide()
+ @datePicker.onselect = _.bind @onSelect, this
+
+ onSelect: ->
+ @field.addClass "t-ajax-wait"
+
+ date = @datePicker.getDate()
+
+ if date is null
+ @popup.hide()
+ @field.value ""
+ return
+
+ ajax (@container.attribute "data-format-url"),
+ parameters:
+ input: date.getTime()
+ onerror: (message) =>
+ @field.removeClass "t-ajax-wait"
+ @fieldError message
+ @popup.hide()
+ onsuccess: (response) =>
+ @field.removeClass "t-ajax-wait"
+ @field.value response.responseJSON.result
+ @popup.hide()
+
- positionPopup: ->
- reference = @container.findFirst "input[type=text], button"
scan = (root) ->
for container in root.find "[data-component-type=core/DateField]"