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