Author: pgolawski
Date: 2008-11-18 03:47:38 -0500 (Tue, 18 Nov 2008)
New Revision: 11199
Modified:
trunk/ui/extendedDataTable/src/main/java/org/richfaces/renderkit/AbstractExtendedTableRenderer.java
Log:
sort and group changed
Modified:
trunk/ui/extendedDataTable/src/main/java/org/richfaces/renderkit/AbstractExtendedTableRenderer.java
===================================================================
---
trunk/ui/extendedDataTable/src/main/java/org/richfaces/renderkit/AbstractExtendedTableRenderer.java 2008-11-18
08:43:48 UTC (rev 11198)
+++
trunk/ui/extendedDataTable/src/main/java/org/richfaces/renderkit/AbstractExtendedTableRenderer.java 2008-11-18
08:47:38 UTC (rev 11199)
@@ -29,12 +29,10 @@
import java.util.List;
import java.util.Map;
import java.util.Set;
-import java.util.logging.Logger;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import javax.faces.component.UIComponent;
-import javax.faces.component.UIForm;
import javax.faces.component.UIInput;
import javax.faces.context.FacesContext;
import javax.faces.context.ResponseWriter;
@@ -95,6 +93,8 @@
private final static String CHANGE_COL_VISIBILITY = "change_col_v";
private static final String SORT_FUNCTION = "sortFunction";
+
+ private static final String GROUP_FUNCTION = "groupFunction";
private static final String SHOW_MENU_FUNCTION = "showMenuFunction";
@@ -843,6 +843,8 @@
context, table));
scriptOptions.addOption(SORT_FUNCTION, getSortFunctionDef(context,
table));
+ scriptOptions.addOption(GROUP_FUNCTION, getGroupFunctionDef(context,
+ table));
scriptOptions.addOption(SHOW_MENU_FUNCTION, getShowMenuFunction(
context, table));
/* Not needed if we do not save open/close state */
@@ -869,6 +871,7 @@
JSFunctionDefinition definition = new JSFunctionDefinition();
definition.addParameter("event");
definition.addParameter("columnId");
+ definition.addParameter("ascending");
String id = table.getClientId(context);
Map<String, Object> eventOptions = AjaxRendererUtils.buildEventOptions(
context, table);
@@ -876,10 +879,10 @@
Map<String, Object> parameters = (Map<String, Object>) eventOptions
.get("parameters");
parameters.put(id, SORT_FILTER_PARAMETER);
- if (asc != null) {
- parameters.put(SORT_DIR_PARAMETER, asc ? SORT_DIR_PARAMETER_ASC
- : SORT_DIR_PARAMETER_DESC);
- }
+// if (asc != null) {
+// parameters.put(SORT_DIR_PARAMETER, asc ? SORT_DIR_PARAMETER_ASC
+// : SORT_DIR_PARAMETER_DESC);
+// }
// parameters.put(SORT_FILTER_PARAMETER, column.getClientId(context));
JSFunctionDefinition onAjaxCompleteFunction = getOnAjaxCompleteFunction(
context, table);
@@ -891,12 +894,17 @@
ScriptUtils.toScript(eventOptions)).addToBody(";\n");
definition.addToBody("options.parameters['" +
SORT_FILTER_PARAMETER
+ "'] = columnId;\n");
+ definition.addToBody("" +
+ "if (ascending != null){"+
+ " options.parameters['" + SORT_DIR_PARAMETER + "'] =
(ascending ?
'"+SORT_DIR_PARAMETER_ASC+"':'"+SORT_DIR_PARAMETER_DESC+"');"+
+ "}"
+ );
JSFunction ajaxFunction = AjaxRendererUtils.buildAjaxFunction(table,
context);
ajaxFunction.addParameter(new JSReference("options"));
definition.addToBody(ajaxFunction.toScript()).addToBody(";\n");
return definition;
- }// getSortFunction
+ }// getSortFunctionDef
protected JSFunction getSortFunction(FacesContext context, UIDataTable table) {
String id = table.getClientId(context);
@@ -918,8 +926,60 @@
context);
ajaxFunction.addParameter(requestOpts);
return ajaxFunction;
- }// getSortFunction
+ }// getSortFunction
+ protected JSFunction getGroupFunction(FacesContext context,
+ UIDataTable table) {
+ String id = table.getClientId(context);
+ Map<String, Object> requestOpts = AjaxRendererUtils.buildEventOptions(
+ context, table);
+ @SuppressWarnings("unchecked")
+ Map<String, Object> parameters = (Map<String, Object>) requestOpts
+ .get("parameters");
+ parameters.put(id, GROUP_FILTER_PARAMETER);
+ parameters.put(GROUP_FILTER_PARAMETER, "{columnId}");
+ JSFunctionDefinition onAjaxCompleteFunction = getOnAjaxCompleteFunction(
+ context, table);
+ if (onAjaxCompleteFunction != null) {
+ requestOpts.put(AjaxRendererUtils.ONCOMPLETE_ATTR_NAME,
+ onAjaxCompleteFunction);
+ }
+ JSFunction ajaxFunction = AjaxRendererUtils.buildAjaxFunction(table,
+ context);
+ ajaxFunction.addParameter(requestOpts);
+ return ajaxFunction;
+ }// getGroupFunction
+
+ protected JSFunctionDefinition getGroupFunctionDef(FacesContext context,
+ UIDataTable table) {
+ JSFunctionDefinition definition = new JSFunctionDefinition();
+ definition.addParameter("event");
+ definition.addParameter("columnId");
+ String id = table.getClientId(context);
+ Map<String, Object> eventOptions = AjaxRendererUtils.buildEventOptions(
+ context, table);
+ @SuppressWarnings("unchecked")
+ Map<String, Object> parameters = (Map<String, Object>) eventOptions
+ .get("parameters");
+ parameters.put(id, GROUP_FILTER_PARAMETER);
+
+ JSFunctionDefinition onAjaxCompleteFunction = getOnAjaxCompleteFunction(
+ context, table);
+ if (onAjaxCompleteFunction != null) {
+ eventOptions.put(AjaxRendererUtils.ONCOMPLETE_ATTR_NAME,
+ onAjaxCompleteFunction);
+ }
+ definition.addToBody("var options = ").addToBody(
+ ScriptUtils.toScript(eventOptions)).addToBody(";\n");
+ definition.addToBody("options.parameters['" +
GROUP_FILTER_PARAMETER
+ + "'] = columnId;\n");
+ JSFunction ajaxFunction = AjaxRendererUtils.buildAjaxFunction(table,
+ context);
+ ajaxFunction.addParameter(new JSReference("options"));
+ definition.addToBody(ajaxFunction.toScript()).addToBody(";\n");
+ return definition;
+ }// getGroupFunctionDef
+
protected JSFunctionDefinition getOnGroupToggleFunctionDef(
FacesContext context, UIDataTable table) {
JSFunctionDefinition definition = new JSFunctionDefinition();
@@ -940,30 +1000,8 @@
ajaxFunction.addParameter(new JSReference("options"));
definition.addToBody(ajaxFunction.toScript()).addToBody(";\n");
return definition;
- }// getSortFunction
+ }// getOnGroupToggleFunctionDef
- protected JSFunction getGroupFunction(FacesContext context,
- UIDataTable table) {
- String id = table.getClientId(context);
- Map<String, Object> requestOpts = AjaxRendererUtils.buildEventOptions(
- context, table);
- @SuppressWarnings("unchecked")
- Map<String, Object> parameters = (Map<String, Object>) requestOpts
- .get("parameters");
- parameters.put(id, GROUP_FILTER_PARAMETER);
- parameters.put(GROUP_FILTER_PARAMETER, "{columnId}");
- JSFunctionDefinition onAjaxCompleteFunction = getOnAjaxCompleteFunction(
- context, table);
- if (onAjaxCompleteFunction != null) {
- requestOpts.put(AjaxRendererUtils.ONCOMPLETE_ATTR_NAME,
- onAjaxCompleteFunction);
- }
- JSFunction ajaxFunction = AjaxRendererUtils.buildAjaxFunction(table,
- context);
- ajaxFunction.addParameter(requestOpts);
- return ajaxFunction;
- }// getSortFunction
-
protected JSFunctionDefinition getOnResizeFunctionDef(FacesContext context,
UIDataTable table) {
JSFunctionDefinition definition = new JSFunctionDefinition();
@@ -1286,6 +1324,7 @@
} catch (NumberFormatException _) {
}
}// if
+ context.renderResponse();
}
}