You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by gm...@apache.org on 2006/12/11 13:07:14 UTC
svn commit: r485631 - in /myfaces/tomahawk/trunk/sandbox/core/src/main:
java/org/apache/myfaces/custom/suggestajax/tablesuggestajax/TableSuggestAjaxRenderer.java
resources/org/apache/myfaces/custom/suggestajax/tablesuggestajax/resource/tableSuggest.js
Author: gmuellan
Date: Mon Dec 11 04:07:13 2006
New Revision: 485631
URL: http://svn.apache.org/viewvc?view=rev&rev=485631
Log:
Applied patch for http://issues.apache.org/jira/browse/TOMAHAWK-818 Many thanks to Grigoras Cristinel
Modified:
myfaces/tomahawk/trunk/sandbox/core/src/main/java/org/apache/myfaces/custom/suggestajax/tablesuggestajax/TableSuggestAjaxRenderer.java
myfaces/tomahawk/trunk/sandbox/core/src/main/resources/org/apache/myfaces/custom/suggestajax/tablesuggestajax/resource/tableSuggest.js
Modified: myfaces/tomahawk/trunk/sandbox/core/src/main/java/org/apache/myfaces/custom/suggestajax/tablesuggestajax/TableSuggestAjaxRenderer.java
URL: http://svn.apache.org/viewvc/myfaces/tomahawk/trunk/sandbox/core/src/main/java/org/apache/myfaces/custom/suggestajax/tablesuggestajax/TableSuggestAjaxRenderer.java?view=diff&rev=485631&r1=485630&r2=485631
==============================================================================
--- myfaces/tomahawk/trunk/sandbox/core/src/main/java/org/apache/myfaces/custom/suggestajax/tablesuggestajax/TableSuggestAjaxRenderer.java (original)
+++ myfaces/tomahawk/trunk/sandbox/core/src/main/java/org/apache/myfaces/custom/suggestajax/tablesuggestajax/TableSuggestAjaxRenderer.java Mon Dec 11 04:07:13 2006
@@ -70,7 +70,7 @@
DojoUtils.addRequire(context, component, "extensions.FacesIO");
DojoUtils.addRequire(context, component, "dojo.event.*");
DojoUtils.addRequire(context, component, "dojo.string");
- DojoUtils.addRequire(context, component, "dojo.fx.html");
+ DojoUtils.addRequire(context, component, "dojo.lfx.html");
DojoUtils.addRequire(context, component, "dojo.lang");
DojoUtils.addRequire(context, component, "dojo.html");
DojoUtils.addRequire(context, component, "dojo.style");
@@ -391,6 +391,10 @@
response.append(
htmlOutputText.getValue());
response.append("</value>");
+ } else {
+ response.append("<value>");
+ response.append(htmlOutputText.getValue());
+ response.append("</value>");
}
response.append("</column>");
}
@@ -654,5 +658,6 @@
}
}
+
Modified: myfaces/tomahawk/trunk/sandbox/core/src/main/resources/org/apache/myfaces/custom/suggestajax/tablesuggestajax/resource/tableSuggest.js
URL: http://svn.apache.org/viewvc/myfaces/tomahawk/trunk/sandbox/core/src/main/resources/org/apache/myfaces/custom/suggestajax/tablesuggestajax/resource/tableSuggest.js?view=diff&rev=485631&r1=485630&r2=485631
==============================================================================
--- myfaces/tomahawk/trunk/sandbox/core/src/main/resources/org/apache/myfaces/custom/suggestajax/tablesuggestajax/resource/tableSuggest.js (original)
+++ myfaces/tomahawk/trunk/sandbox/core/src/main/resources/org/apache/myfaces/custom/suggestajax/tablesuggestajax/resource/tableSuggest.js Mon Dec 11 04:07:13 2006
@@ -68,11 +68,11 @@
{
this.scrollOverflowDiv(trElem);
- for (var j = 0; j < trElem.childNodes.length; j+=1)
+ for (j = 0; j < trElem.childNodes.length; j++)
{
var tdElem = trElem.childNodes[j];
- for (var a = 0; a < tdElem.childNodes.length; a+=1)
+ for (a = 0; a < tdElem.childNodes.length; a++)
{
var spanElem = tdElem.childNodes[a];
@@ -83,7 +83,7 @@
if (elemToPutValue)
{
- if (dojo.dom.getTagName(elemToPutValue) == "input")
+ if (elemToPutValue.tagName == "INPUT")
{
elemToPutValue.value = spanElem.innerHTML;
if (elemToPutValue.onchange)
@@ -91,15 +91,14 @@
elemToPutValue.onchange();
}
}
- else if (dojo.dom.getTagName(elemToPutValue) == "select")
+ else if (elemToPutValue.tagName == "SELECT")
{
- for (i = 0; i < elemToPutValue.options.length; i+=1)
+ for (i = 0; i < elemToPutValue.options.length; i++)
{
var optionValue = spanElem.innerHTML;
- if (elemToPutValue.options[i].value == optionValue) {
+ if (elemToPutValue.options[i].value == optionValue)
elemToPutValue.options[i].selected = true;
- }
}
}
}
@@ -126,7 +125,7 @@
else if (this.inputField.setSelectionRange) {
this.inputField.setSelectionRange(len, suggestion.length);
}
- };
+ }
org_apache_myfaces_TableSuggest.prototype.scrollOverflowDiv = function(trElem)
{
@@ -142,7 +141,7 @@
if (prevElem)
{
- this.scrollingRow+=1;
+ this.scrollingRow++;
if (this.scrollingRow >= 4)
{
@@ -209,7 +208,7 @@
collection.clear();
- for(k=0;k<tablePagesArray.length;k+=1)
+ for(k=0;k<tablePagesArray.length;k++)
{
if(k==0)
{
@@ -217,7 +216,7 @@
firstPageField = tablePagesArray[k+1];
dojo.dom.insertAtPosition(firstPage, tableSuggest.popUp, "first");
dojo.dom.insertAtPosition(firstPageField, tableSuggest.popUp, "last");
- k+=1;
+ k++;
if(firstPage.rows && firstPage.rows.length == 2)
{
@@ -254,7 +253,7 @@
if(prevElem)
{
- if(dojo.dom.getTagName(prevElem) == "tr")
+ if(prevElem.tagName == "tr")
{
this.putValueToField(prevElem);
this.addOutClass(this.actualHighlightedElem);
@@ -262,8 +261,22 @@
this.actualHighlightedElem = prevElem;
}
}
-
- return;
+ else
+ {
+ var table = dojo.html.getFirstAncestorByTag(this.actualHighlightedElem,"table");
+
+ if(table)
+ {
+ this.previousPage(table);
+ this.addOutClass(this.actualHighlightedElem);
+ this.actualHighlightedElem = this.getLastRowElem(this.popUp);
+ this.putValueToField(this.actualHighlightedElem);
+ this.addHoverClass(this.actualHighlightedElem);
+ }
+ else
+ dojo.debug("could not move to next item in table, wrong item is");dojo.debug(nextElem);
+ }
+ }
}
//parses the XML ajax response data
@@ -274,7 +287,7 @@
//parse the column names of the table to be rendered
var columnHeaders = root.getElementsByTagName("columnHeader");
var columnHeadersArray = new Array();
- for (var i = 0; i < columnHeaders.length; i+=1)
+ for (var i = 0; i < columnHeaders.length; i++)
{
columnHeadersArray[i] = columnHeaders[i].firstChild.nodeValue;
}
@@ -284,22 +297,22 @@
var items = root.getElementsByTagName("item");
var itemsArray = new Array();
- for (var i = 0; i < items.length; i+=1)
+ for (var i = 0; i < items.length; i++)
{
var currentItem = items[i];
var columnsArray = new Array();
- for (var j = 0; j < currentItem.childNodes.length; j+=1)
+ for (var j = 0; j < currentItem.childNodes.length; j++)
{
var currentColumn = currentItem.childNodes[j];
var column = new Object();
var currentChild = currentColumn.firstChild;
-
- do {
- column[currentChild.tagName] = currentChild.firstChild.nodeValue;
- } while (currentChild = currentChild.nextSibling);
-
+ if( currentChild != null){
+ do {
+ column[currentChild.tagName] = currentChild.firstChild.nodeValue;
+ } while (currentChild = currentChild.nextSibling);
+ }
columnsArray[j] = column;
}
@@ -311,11 +324,6 @@
//Render the ajax drop-down window
org_apache_myfaces_TableSuggest.prototype.renderDropdown = function()
{
- if (this.actualHighlightedElem != null)
- {
- this.actualHighlightedElem = null;
- }
-
dojo.dom.removeChildren(this.popUp);
//if no data exists
@@ -339,7 +347,7 @@
//add the column Headers
tr = thead.insertRow(0);
- for (var i = 0; i < this.columnHeaders.length; i+=1)
+ for (var i = 0; i < this.columnHeaders.length; i++)
{
td = tr.insertCell(tr.cells.length);
tn = document.createTextNode(this.columnHeaders[i]);
@@ -349,7 +357,7 @@
var tableSuggestAjax = this;
//adding the data items
- for (var i = 0; i < this.data.length; i+=1)
+ for (var i = 0; i < this.data.length; i++)
{
var columnsArray = this.data[i];
tr = tbody.insertRow(tbody.rows.length);
@@ -372,7 +380,7 @@
tableSuggest.putValueToField(obj);
}
- for (var j = 0; j < columnsArray.length; j+=1)
+ for (var j = 0; j < columnsArray.length; j++)
{
td = tr.insertCell(tr.cells.length);
@@ -386,7 +394,7 @@
span.appendChild(tn);
td.appendChild(span);
}
- else {
+ else if (typeof columnsArray[j].forValue != "undefined"){
span = document.createElement("span");
span.id = "putValueTo" + columnsArray[j].forValue;
tn = document.createTextNode(columnsArray[j].value);
@@ -398,6 +406,11 @@
tn = document.createTextNode(columnsArray[j].label);
span.appendChild(tn);
td.appendChild(span);
+ } else {
+ span = document.createElement("span");
+ tn = document.createTextNode(columnsArray[j].value);
+ span.appendChild(tn);
+ td.appendChild(span);
}
}
}
@@ -412,23 +425,50 @@
//handles the user pressing the 'Down Arrow' key
org_apache_myfaces_TableSuggest.prototype.handleDownKey = function()
{
- if(this.actualHighlightedElem == null)
+ if(!this.firstHighlightedElem)
{
- this.actualHighlightedElem = this.getFirstRowElem(this.popUp);
- if (this.actualHighlightedElem == null) return;
+ var firstOptionElem = this.getFirstRowElem(this.popUp);
+ this.putValueToField(firstOptionElem);
+ this.addHoverClass(firstOptionElem);
+ this.firstHighlightedElem = firstOptionElem;
+
+ this.actualHighlightedElem = firstOptionElem;
}
- else {
+ else
+ {
var nextElem = dojo.dom.nextElement(this.actualHighlightedElem);
- if (nextElem == null) return;
-
- this.addOutClass(this.actualHighlightedElem);
- this.actualHighlightedElem = nextElem;
+
+ if(nextElem)
+ {
+ if(nextElem.tagName == "tr")
+ {
+ this.putValueToField(nextElem);
+ this.addOutClass(this.actualHighlightedElem);
+ this.addHoverClass(nextElem);
+ this.actualHighlightedElem = nextElem
+ }
+ }
+ else
+ {
+ var table = dojo.html.getFirstAncestorByTag(this.actualHighlightedElem,"table");
+ var pageField = dojo.dom.nextElement(table);
+
+ if(pageField)
+ {
+ if(pageField.tagName == "div")
+ {
+ this.nextPage(pageField);
+ this.firstHighlightedElem = this.getFirstRowElem(this.popUp);
+ this.putValueToField(this.firstHighlightedElem);
+ this.addOutClass(this.actualHighlightedElem);
+ this.addHoverClass(this.firstHighlightedElem);
+ this.actualHighlightedElem = this.firstHighlightedElem;
+ }
+ }
+ else
+ dojo.debug("could not move to next item in table, wrong item is");dojo.debug(nextElem);
+ }
}
-
- this.putValueToField(this.actualHighlightedElem);
- this.addHoverClass(this.actualHighlightedElem);
-
- return;
}
@@ -602,11 +642,14 @@
if (this.saveOldValues)
{
this.oldValues = new Object();
- for (var i = 0; i < this.fieldNames.length; i+=1)
+ for (var i = 0; i < this.fieldNames.length; i++)
{
- var fieldName = this.fieldNames[i];
- var field = dojo.byId(fieldName);
- this.oldValues[fieldName] = field.value;
+ if(typeof this.fieldNames[i] != "undefined")
+ {
+ var fieldName = this.fieldNames[i];
+ var field = dojo.byId(fieldName);
+ this.oldValues[fieldName] = field.value;
+ }
}
this.saveOldValues = false;
}
@@ -632,7 +675,7 @@
if (tableSuggest.data == null) return;
//search if this value is from the list of acceptable values
- for (var i = 0; i < tableSuggest.data.length; i+=1)
+ for (var i = 0; i < tableSuggest.data.length; i++)
{
var item = tableSuggest.data[i];
var primaryColumn = item[0];
@@ -643,11 +686,13 @@
}
}
//validation failed : restore the original values of all the fields (including foreign-key fields)
- for (var i = 0; i < tableSuggest.fieldNames.length; i+=1)
+ for (var i = 0; i < tableSuggest.fieldNames.length; i++)
{
var fieldName = tableSuggest.fieldNames[i];
var field = dojo.byId(fieldName);
- field.value = tableSuggest.oldValues[fieldName];
+ if(field != null ){
+ field.value = tableSuggest.oldValues[fieldName];
+ }
//tableSuggest.inputField.value = "";
//tableSuggest.inputField.focus();
}
@@ -658,7 +703,7 @@
org_apache_myfaces_TableSuggest.prototype.updateForeignKeyFields = function(row)
{
- for (var i = 0; i < row.length; i+=1)
+ for (var i = 0; i < row.length; i++)
{
var column = row[i];
var fieldId, field;
@@ -671,8 +716,10 @@
}
else {
fieldId = column.forValue;
- field = dojo.byId(fieldId);
- field.value = column.value;
+ field = dojo.byId(fieldId);
+ if(field != null && field != "undefined" && field.tagName == "INPUT"){
+ field.value = column.value;
+ }
}
}
}
@@ -744,5 +791,5 @@
this.handleRequestResponse(this);
};
-}
+