Details
-
Type: New Feature
-
Status: Closed
-
Priority: Major
-
Resolution: Fixed
-
Affects Version/s: None
-
Component/s: MOBI-Components
-
Labels:None
-
Environment:ICEfaces 4
-
Assignee Priority:P1
-
Affects:Documentation (User Guide, Ref. Guide, etc.), Sample App./Tutorial
Description
mobi:dataView component renders a table region for iterative output using columns defined with the required DataViewColumns component child, and a detail region for extensive viewing (and editing) of the row objects of the table model. The detail region is defined with the DataViewDetails child component and it's contents are displayed when a row of table region is activated, typically by a row tap.
mobi:dataViewColumns defines a column in the table region of the DataView component.
mobi:dataViewColumns component defines the table region of the DataView component either by its DataViewColumn child components or by attaching an implementationof DataViewColumnsModel to the 'value' attribute of this component.
mobi:dataViewDetail - The child components of this component define the region to be displayed when a row object of DataView table region is activated. When DataView 'activationMode' is set to 'server' the child components of this region may be arbitrary JSF components. When 'activationMode' is set to 'client' the child components of this region are prerendered and have their dynamic attributes cached on the client to allow instantaneous activation. Client activation mode is restricted to particular components and only particular attributes of these components may be dynamic, the specifics are documented on our wiki.
mobi:dataViewColumns defines a column in the table region of the DataView component.
mobi:dataViewColumns component defines the table region of the DataView component either by its DataViewColumn child components or by attaching an implementationof DataViewColumnsModel to the 'value' attribute of this component.
mobi:dataViewDetail - The child components of this component define the region to be displayed when a row object of DataView table region is activated. When DataView 'activationMode' is set to 'server' the child components of this region may be arbitrary JSF components. When 'activationMode' is set to 'client' the child components of this region are prerendered and have their dynamic attributes cached on the client to allow instantaneous activation. Client activation mode is restricted to particular components and only particular attributes of these components may be dynamic, the specifics are documented on our wiki.
Test Results
ICEfaces4 trunk revision# 40043
General:
1) The rowIndexVar attribute doesn't seem to do anything, I tried printing it out in a dataViewColumn and in the dataViewDetails region but it is always empty.
2) Trying to use the markup attribute just throws a NullPointerException. This is probably because getMarkup() in org.icefaces.mobi.component.dataview.DataViewColumn.java is just returning null and not the actual value from the page. Currently the attribute is unusable.
3) The reactivePriority attribute isn't always respected. A column of type boolean with low priority will remain visible while columns with higher priority are hidden.
4) There are JS errors when changing reactiveColumnVisibility, reactivePriority and activationMode attributes dynamically:
Error when changing reactiveColumnVisibility or activationMode dynamically:
[window] Error [status: malformedXML code: 200]: During update: form:dataView_js not found
Error when changing reactivePriority dynamically:
[window] Error [status: malformedXML code: 200]: Argument 1 of Node.replaceChild is not an object.
5) Setting activeRowIndex to null displays the first row in the detail region (same results as 0). It seems null should display nothing in the detail region because currently a row always appears active/selected if using this attribute.
Styling issues:
1) There is no styling (incl. header/footer) on the dataView unless using rowStripe and rowStroke attributes.
2) When using a column with the "bool" type no checkbox is rendered because the styling is missing.
3) The rows cannot be selected in the desktop view like they can be in showcase, think this might be something related to the styling? They can be selected on a mobile device.
Doc issues:
1) Rendered attribute not listed in the tlddoc for dataViewColumn component but attribute is functional and used in showcase demo.
2) tlddoc for dataViewColumn type attribute reads "..f:dateTimeConverter..", but it should be "..f:convertDateTime..".
Not tested:
1) I haven't created a test for the value attribute of dataViewColumns because there is no documentation when implementing DataViewColumnsModel. It's difficult to understand the implemented methods.
2) Uncertain best way to test the "client" activationMode.