Author: ehillenius
Date: Fri Jul 13 18:38:27 2007
New Revision: 556202

URL: http://svn.apache.org/viewvc?view=rev&rev=556202
Log:
optimized javascript (moved some code to generic script)

Modified:
    
incubator/wicket/trunk/jdk-1.4/wicket-datetime/src/main/java/org/apache/wicket/extensions/yui/calendar/DatePicker.js
    
incubator/wicket/trunk/jdk-1.4/wicket-datetime/src/main/java/org/apache/wicket/extensions/yui/calendar/wicket-date.js

Modified: 
incubator/wicket/trunk/jdk-1.4/wicket-datetime/src/main/java/org/apache/wicket/extensions/yui/calendar/DatePicker.js
URL: 
http://svn.apache.org/viewvc/incubator/wicket/trunk/jdk-1.4/wicket-datetime/src/main/java/org/apache/wicket/extensions/yui/calendar/DatePicker.js?view=diff&rev=556202&r1=556201&r2=556202
==============================================================================
--- 
incubator/wicket/trunk/jdk-1.4/wicket-datetime/src/main/java/org/apache/wicket/extensions/yui/calendar/DatePicker.js
 (original)
+++ 
incubator/wicket/trunk/jdk-1.4/wicket-datetime/src/main/java/org/apache/wicket/extensions/yui/calendar/DatePicker.js
 Fri Jul 13 18:38:27 2007
@@ -17,64 +17,27 @@
  
 YAHOO.namespace("wicket");
 
-// init the date picker
 function init${widgetId}DpJs() {
 
- // create date picker instance
- YAHOO.wicket.${widgetId}DpJs = new 
YAHOO.widget.Calendar("${widgetId}DpJs","${widgetId}Dp", { ${calendarInit} });
- if (${alignWithIcon}) {
-        iconPos = YAHOO.util.Dom.getXY("${widgetId}Icon");
-        iconHeight = parseInt(YAHOO.util.Dom.getStyle("${widgetId}Icon", 
"height"));
-        YAHOO.wicket.${widgetId}DpJs.oDomContainer.style.top = iconPos[1] + 
iconHeight + 1 + "px";
-        YAHOO.wicket.${widgetId}DpJs.oDomContainer.style.left = iconPos[0] + 
"px";
-}
-
- YAHOO.wicket.${widgetId}DpJs.isVisible = function() { return 
YAHOO.wicket.${widgetId}DpJs.oDomContainer.style.display == 'block'; } 
+       YAHOO.wicket.${widgetId}DpJs = new 
YAHOO.widget.Calendar("${widgetId}DpJs","${widgetId}Dp", { ${calendarInit} });
+       YAHOO.wicket.${widgetId}DpJs.isVisible = function() { return 
YAHOO.wicket.${widgetId}DpJs.oDomContainer.style.display == 'block'; } 
+       if (${alignWithIcon}) 
Wicket.DateTime.positionRelativeTo(YAHOO.wicket.${widgetId}DpJs.oDomContainer, 
"${widgetId}Icon");
  
- // inner function to show the calendar
- function showCalendar() {
-    var dateValue = YAHOO.util.Dom.get("${widgetId}").value;
-    if (dateValue) {
-      dateValue = Wicket.DateTime.parseDate('${datePattern}', dateValue);
-      YAHOO.wicket.${widgetId}DpJs.select(dateValue);
-      var firstDate = YAHOO.wicket.${widgetId}DpJs.getSelectedDates()[0];
-      YAHOO.wicket.${widgetId}DpJs.cfg.setProperty("pagedate", 
(firstDate.getMonth() + 1) + "/" + firstDate.getFullYear());
-      YAHOO.wicket.${widgetId}DpJs.render();
-    }
-    YAHOO.wicket.${widgetId}DpJs.show();
-  }
+       function showCalendar() {
+               Wicket.DateTime.showCalendar(YAHOO.wicket.${widgetId}DpJs, 
YAHOO.util.Dom.get("${widgetId}").value, '${datePattern}');
+       }
 
-  // trigger popping up the date picker when the icon is clicked 
-  YAHOO.util.Event.addListener("${widgetId}Icon", "click", showCalendar, 
YAHOO.wicket.${widgetId}DpJs, true);
+       YAHOO.util.Event.addListener("${widgetId}Icon", "click", showCalendar, 
YAHOO.wicket.${widgetId}DpJs, true);
 
-  // inner function for handling calendar selects  
-  function selectHandler(type, args, cal) {
-    var selDateArray = args[0][0];
-    var yr = selDateArray[0];
-    var month = selDateArray[1];
-    var dt = selDateArray[2];
-    // optionally do some padding to match the pattern
-    if('${datePattern}'.match(/\bdd\b/)) dt = 
Wicket.DateTime.padDateFragment(dt);
-    if('${datePattern}'.match(/\bMM\b/)) month = 
Wicket.DateTime.padDateFragment(month);
-    if('${datePattern}'.match(/\byy\b/)) yr = 
Wicket.DateTime.padDateFragment(yr % 100);
-    // replace pattern with real values
-    var val = '${datePattern}'.replace(/d+/, dt).replace(/M+/, 
month).replace(/y+/, yr);   
-    var wasVisible = YAHOO.wicket.${widgetId}DpJs.isVisible();
-    YAHOO.util.Dom.get("${widgetId}").value = val;
-    // hide picker
-    cal.hide();
-    // fire onchange notification 
-    if (wasVisible && ${fireChangeEvent}) {
-       var field = YAHOO.util.Dom.get("${widgetId}");
-       if (typeof(field.onchange) != 'undefined') {
-               field.onchange();
-       }
-    }
-  }
+       function selectHandler(type, args, cal) {
+               YAHOO.util.Dom.get("${widgetId}").value = 
Wicket.DateTime.substituteDate('${datePattern}', args[0][0]); 
+               cal.hide(); 
+               if (${fireChangeEvent} && 
YAHOO.wicket.${widgetId}DpJs.isVisible()) {
+                       var field = YAHOO.util.Dom.get("${widgetId}");
+                       if (typeof(field.onchange) != 'undefined') 
field.onchange();
+               }
+       }
 
-  // register the select handler function
-  YAHOO.wicket.${widgetId}DpJs.selectEvent.subscribe(selectHandler, 
YAHOO.wicket.${widgetId}DpJs);
-  
-  // now that everything is set up, render the date picker
-  YAHOO.wicket.${widgetId}DpJs.render();
+       YAHOO.wicket.${widgetId}DpJs.selectEvent.subscribe(selectHandler, 
YAHOO.wicket.${widgetId}DpJs);
+       YAHOO.wicket.${widgetId}DpJs.render();
 }

Modified: 
incubator/wicket/trunk/jdk-1.4/wicket-datetime/src/main/java/org/apache/wicket/extensions/yui/calendar/wicket-date.js
URL: 
http://svn.apache.org/viewvc/incubator/wicket/trunk/jdk-1.4/wicket-datetime/src/main/java/org/apache/wicket/extensions/yui/calendar/wicket-date.js?view=diff&rev=556202&r1=556201&r2=556202
==============================================================================
--- 
incubator/wicket/trunk/jdk-1.4/wicket-datetime/src/main/java/org/apache/wicket/extensions/yui/calendar/wicket-date.js
 (original)
+++ 
incubator/wicket/trunk/jdk-1.4/wicket-datetime/src/main/java/org/apache/wicket/extensions/yui/calendar/wicket-date.js
 Fri Jul 13 18:38:27 2007
@@ -68,3 +68,47 @@
 Wicket.DateTime.padDateFragment = function(value) {
        return (value < 10 ? "0" : "") + value;
 }
+
+/** 
+ * Position subject relative to target top-left.
+ * @param subject name of the dom element to has to be positioned
+ * @param target dom element to position relative to
+ */
+Wicket.DateTime.positionRelativeTo = function(subject, target) {
+       targetPos = YAHOO.util.Dom.getXY(target);
+       targetHeight = parseInt(YAHOO.util.Dom.getStyle(target, "height"));
+       subject.style.top = targetPos[1] + targetHeight + 1 + "px";
+       subject.style.left = targetPos[0] + "px";
+}
+
+/**
+ * Return the result of interpolating the value (date) argument with the date 
pattern.
+ * The dateValue has to be an array, where year is in the first, month in the 
second
+ * and date (day of month) in the third slot.
+ */
+Wicket.DateTime.substituteDate = function(datePattern, date) {
+       day = date[2];
+       month = date[1];
+       year = date[0];
+       // optionally do some padding to match the pattern
+       if(datePattern.match(/\bdd\b/)) day = 
Wicket.DateTime.padDateFragment(day);
+       if(datePattern.match(/\bMM\b/)) month = 
Wicket.DateTime.padDateFragment(month);
+       if(datePattern.match(/\byy\b/)) year = 
Wicket.DateTime.padDateFragment(year % 100);
+       // replace pattern with real values
+       return datePattern.replace(/d+/, day).replace(/M+/, 
month).replace(/y+/, year);
+}
+
+/**
+ * Display the YUI calendar widget. If the date is not null (should be a 
string) then it is parsed
+ * using the provided date pattern, and set as the current date on the widget.
+ */
+Wicket.DateTime.showCalendar = function(widget, date, datePattern) {
+       if (date) {
+               date = Wicket.DateTime.parseDate(datePattern, date);
+               widget.select(date);
+               firstDate = widget.getSelectedDates()[0];
+               widget.cfg.setProperty("pagedate", (firstDate.getMonth() + 1) + 
"/" + firstDate.getFullYear());
+               widget.render();
+       }
+       widget.show();
+}
\ No newline at end of file


Reply via email to