Author: pyaschenko
Date: 2010-10-08 11:48:10 -0400 (Fri, 08 Oct 2010)
New Revision: 19508
Modified:
sandbox/trunk/prototypes/calendar/calendar-utils.js
sandbox/trunk/prototypes/calendar/calendar.js
sandbox/trunk/prototypes/calendar/test.html
Log:
https://jira.jboss.org/browse/RF-9152
https://jira.jboss.org/browse/RF-9168
calendar prototype
Modified: sandbox/trunk/prototypes/calendar/calendar-utils.js
===================================================================
--- sandbox/trunk/prototypes/calendar/calendar-utils.js 2010-10-08 15:21:01 UTC (rev
19507)
+++ sandbox/trunk/prototypes/calendar/calendar-utils.js 2010-10-08 15:48:10 UTC (rev
19508)
@@ -58,6 +58,7 @@
}
});*/
+ // TODO: move joinArray to richfaces utils
joinArray: function(array, begin, end, separator)
{
var value = '';
Modified: sandbox/trunk/prototypes/calendar/calendar.js
===================================================================
--- sandbox/trunk/prototypes/calendar/calendar.js 2010-10-08 15:21:01 UTC (rev 19507)
+++ sandbox/trunk/prototypes/calendar/calendar.js 2010-10-08 15:48:10 UTC (rev 19508)
@@ -19,7 +19,7 @@
if (!calendar.selectedDate || calendar.params.showApplyButton) return "";
- var text = Richfaces.Calendar.formatDate(calendar.selectedDate,(calendar.timeType ?
calendar.datePattern : calendar.params.datePattern), calendar.params.monthLabels,
calendar.params.monthLabelsShort);
+ var text = rf.calendarUtils.formatDate(calendar.selectedDate,(calendar.timeType ?
calendar.datePattern : calendar.params.datePattern), calendar.params.monthLabels,
calendar.params.monthLabelsShort);
var onclick = "RichFaces.$$('Calendar',this).showSelectedDate(); return
true;"
var markup = ( calendar.params.disabled ?
new E('div', {'class': 'rich-calendar-tool-btn-disabled'},
[new ET(text)]) :
@@ -32,7 +32,7 @@
if (!calendar.selectedDate || !calendar.timeType) return "";
- var text = Richfaces.Calendar.formatDate(calendar.selectedDate, calendar.timePattern,
calendar.params.monthLabels, calendar.params.monthLabelsShort);
+ var text = rf.calendarUtils.formatDate(calendar.selectedDate, calendar.timePattern,
calendar.params.monthLabels, calendar.params.monthLabelsShort);
var onmouseover =
"jQuery(this).removeClass('rich-calendar-tool-btn-press');";
var onmouseout =
"jQuery(this).addClass('rich-calendar-tool-btn-press');";
@@ -60,7 +60,7 @@
return (!context.calendar.params.disabled ? CalendarView.getControl("<",
CalendarView.toolButtonAttributes, "prevMonth") : "");
},
currentMonthControl: function (context) {
- var text = Richfaces.Calendar.formatDate(context.calendar.getCurrentDate(),
"MMMM, yyyy", context.monthLabels, context.monthLabelsShort);
+ var text = rf.calendarUtils.formatDate(context.calendar.getCurrentDate(), "MMMM,
yyyy", context.monthLabels, context.monthLabelsShort);
var markup = context.calendar.params.disabled ?
new E('div',{className: "rich-calendar-tool-btn-disabled"},[new
T(text)]) :
CalendarView.getControl(text, CalendarView.toolButtonAttributes,
"showDateEditor");
@@ -323,11 +323,10 @@
$super.constructor.call(this, componentId);
this.namespace = "."+rf.Event.createNamespace(this.name, componentId);
- this.attachToDom(componentId);
//create parameters
//this.options = $.extend(this.options, defaultOptions, options);
- this.params = $.extend(this.options, defaultOptions, Richfaces.Calendar[locale],
options, markups);
+ this.params = $.extend({}, defaultOptions, locales[locale], options, markups);
// labels
var value = options.labels || {};
@@ -370,7 +369,6 @@
this.POPUP_ID = this.id+'Popup';
this.POPUP_BUTTON_ID = this.id+'PopupButton';
this.INPUT_DATE_ID = this.id+'InputDate';
- this.IFRAME_ID = this.id+'IFrame';
this.EDITOR_ID = this.id+'Editor';
this.EDITOR_SHADOW_ID = this.id+'EditorShadow';
@@ -410,7 +408,6 @@
var htmlControlsHeader = (this.params.showHeader ? '<tr><td
class="rich-calendar-header" colspan="'+colspan+'"
id="'+this.id+'Header"></td></tr>' : '');
var htmlControlsFooter = (this.params.showFooter ? '<tr><td
class="rich-calendar-footer" colspan="'+colspan+'"
id="'+this.id+'Footer"></td></tr>' : '');
var htmlTextFooter = '</tbody></table>'
- var htmlTextIFrame = '<iframe src="javascript:\'\'"
frameborder="0" scrolling="no" id="' + this.IFRAME_ID +
'" style="display:none; position: absolute; width: 1px; height: 1px;
background-color:white;">'+'</iframe>';
// days bar creation
var styleClass;
@@ -473,39 +470,13 @@
htmlTextWeek.push('</tr>');
}
- var obj = rf.getDomElement(this.POPUP_ID).nextSibling;
- if (this.params.popup && Richfaces.browser.isIE6)
- {
- do {
- if (obj.id == this.IFRAME_ID)
- {
- var iframe = obj;
- obj = obj.nextSibling;
- Element.replace(iframe, htmlTextIFrame);
- break;
- }
- } while (obj = obj.nextSibling);
- }
+ var div = rf.getDomElement(this.id);
+ $(div).replaceWith(htmlTextHeader+htmlHeaderOptional+htmlControlsHeader+htmlTextWeekDayBar.join('')+htmlTextWeek.join('')+htmlControlsFooter+htmlFooterOptional+htmlTextFooter);
+ this.attachToDom(div);
- do {
- if (obj.id == id)
- {
- var div = obj;
- obj = obj.previousSibling;
- Element.replace(div,
htmlTextHeader+htmlHeaderOptional+htmlControlsHeader+htmlTextWeekDayBar.join('')+htmlTextWeek.join('')+htmlControlsFooter+htmlFooterOptional+htmlTextFooter);
- break;
- }
- } while (obj = obj.nextSibling);
-
- // set content
- obj=obj.nextSibling;
- obj.component = this;
- obj.richfacesComponent="richfaces:calendar";
- this["rich:destructor"] = "destructor";
+ // memory leaks fix // from old 3.3.x code, may be not needed now
+ div = null;
- // memory leaks fix
- obj = null;
-
if(this.params.submitFunction) this.submitFunction =
this.params.submitFunction.bind(this);
this.prepareEvents(); //TODO: function
@@ -530,7 +501,7 @@
rf.BaseComponent.extend(rf.ui.Calendar);
// define super class link
- var $super = rf.BaseComponent.$super;
+ var $super = rf.ui.Calendar.$super;
// static methods definition
var locales = {};
@@ -539,7 +510,7 @@
if (!locales[locale]) {
locales[locale] = symbols;
}
- },
+ };
/*
* Prototype definition
@@ -892,10 +863,6 @@
Richfaces.removeScrollEventHandlers(this.scrollElements, this.eventOnScroll);
Event.stopObserving(window.document, "click", this.eventOnCollapse,
false);
- var iframe=null;
- if (Richfaces.browser.isIE6) iframe = $(this.IFRAME_ID);
- if (iframe) Element.hide(iframe);
-
Element.hide(element);
this.isVisible = false;
@@ -919,9 +886,6 @@
if (this.invokeEvent("expand", element, e))
{
- var iframe=null;
- if (Richfaces.browser.isIE6) iframe = $(this.IFRAME_ID);
-
var base = $(this.POPUP_ID)
var baseInput = base.firstChild;
var baseButton = baseInput.nextSibling;
@@ -955,15 +919,6 @@
Richfaces.Calendar.setElementPosition(element, o, this.params.jointPoint,
this.params.direction, this.popupOffset);
- if (iframe)
- {
- iframe.style.left = element.style.left;
- iframe.style.top = element.style.top;
- var edim = Richfaces.Calendar.getOffsetDimensions(element);
- iframe.style.width = edim.width+'px';
- iframe.style.height = edim.height+'px';
- Element.show(iframe);
- }
Element.show(element);
this.isVisible = true;
@@ -1466,16 +1421,6 @@
//alert(new Date().getTime()-_d.getTime());
- // hack for IE 6.0 //fix 1072 // TODO check this bug again
- /*if (Richfaces.browser.isIE6)
- {
- var element = $(this.id);
- if (element)
- {
- element.style.width = "0px";
- element.style.height = "0px";
- }
- }*/
},
renderHF: function()
@@ -1504,13 +1449,22 @@
var e = $(elementId);
if (!e) return;
- e.innerHTML = markup.invoke('getContent', context).join('');
+ e.innerHTML = evaluateMarkup(markup, context);
},
evaluateMarkup: function(markup, context)
{
if (!markup) return "";
- return markup.invoke('getContent', context).join('');
+
+ var result = [];
+ var m;
+ for (var i=0; i<markup.length; i++) {
+ m = markup[i]['getContent'];
+ if (m) {
+ result.push(m(context));
+ }
+ }
+ return result.join('');
},
onUpdate: function()
Modified: sandbox/trunk/prototypes/calendar/test.html
===================================================================
--- sandbox/trunk/prototypes/calendar/test.html 2010-10-08 15:21:01 UTC (rev 19507)
+++ sandbox/trunk/prototypes/calendar/test.html 2010-10-08 15:48:10 UTC (rev 19508)
@@ -18,6 +18,17 @@
<body style="margin : 30px">
<form id="myForm">
+<div id="j_id354:calendar"><span
id="j_id354:j_id355Popup"><input class="rich-calendar-input "
id="j_id354:j_id355InputDate" name="j_id354:j_id355InputDate"
style="vertical-align: middle; " type="text"
readonly="readonly" /><img alt=""
class="rich-calendar-button " id="j_id354:j_id355PopupButton"
style="vertical-align: middle"
src="/richfaces-demo/a4j/g/3_3_3.Finalorg.richfaces.renderkit.html.iconimages.CalendarIcon/DATB/eAH7cW0fw6znAA8XBA4_.jsf"
/><input autocomplete="off" id="j_id354:j_id355InputCurrentDate"
name="j_id354:j_id355InputCurrentDate" style="display:none"
type="hidden" value="10/2010" /><style
type="text/css">
+<![CDATA[
+.j_id354_j_id355DayCell{width:24px;height:22px;}
+]]>
+</style></span><div id="j_id354:j_id355" style="display:
none;"></div><div id="j_id354:j_id355Script"
style="display: none;"><script type="text/javascript">
+//<![CDATA[
+RichFaces.ui.Calendar.addLocale('en_US',
{'weekDayLabels':['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday']
,'weekDayLabelsShort':['Sun','Mon','Tue','Wed','Thu','Fri','Sat']
,'monthLabels':['January','February','March','April','May','June','July','August','September','October','November','December']
,'monthLabelsShort':['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec']
,'minDaysInFirstWeek':1,'firstWeekDay':0} );
+new RichFaces.ui.Calendar('j_id354:j_id355',
+ "en_US",{'showApplyButton':true,'style':'z\x2Dindex: 3;
width:200px','currentDate':new
Date(2010,9,8),'datePattern':'d/M/yy
HH:mm','dayCellClass':'j_id354_j_id355DayCell'} ,{} ).load();
+//]]>
+</script></div></div>
</form>
</body>
<html>
\ No newline at end of file