Details
-
Type: Improvement
-
Status: Closed
-
Priority: Major
-
Resolution: Fixed
-
Affects Version/s: 2.0.0
-
Fix Version/s: 2.1-Beta, 3.0, EE-2.0.0.GA_P01
-
Component/s: ACE-Components
-
Labels:None
-
Environment:JSF 2.0.3 ICEfaces 2
-
Assignee Priority:P1
Description
We have a client requirement that an iframe tab in a tabset not be reloaded as the user interacts with the component. The following clientSide="true" configuration is working fine until a new ace:tabPane is dynamically added, at that point the DOM update is returning ALL the existing tabSet content, when ideally it should just be returning the new tab.
I think this is undesirable under normal circumstances as a situation where the user has many tabs with say ice:dataTables holding many items could result in very sluggish performance when adding a new tab.
<ace:tabSet id="tabSet"
clientSide="true"
orientation="bottom"
selectedIndex="#{tabset.visibleTab}"
rendered="#{not empty tabset.tabs}" >
<c:forEach items="#{tabset.tabs}" var="tab">
<ace:tabPane label="#{tab.label}" >
<ui:include src="#{tab.include}" />
</ace:tabPane>
</c:forEach>
</ace:tabSet>
I think this is undesirable under normal circumstances as a situation where the user has many tabs with say ice:dataTables holding many items could result in very sluggish performance when adding a new tab.
<ace:tabSet id="tabSet"
clientSide="true"
orientation="bottom"
selectedIndex="#{tabset.visibleTab}"
rendered="#{not empty tabset.tabs}" >
<c:forEach items="#{tabset.tabs}" var="tab">
<ace:tabPane label="#{tab.label}" >
<ui:include src="#{tab.include}" />
</ace:tabPane>
</c:forEach>
</ace:tabSet>
Issue Links
- depends on
-
ICE-6728 Add client-side cache support for ace:tabPane within a 'clientSide=false'
- Closed
Activity
Brad Kroeger
created issue -
Brad Kroeger
made changes -
Field | Original Value | New Value |
---|---|---|
Assignee | Ken Fyten [ ken.fyten ] |
Ken Fyten
made changes -
Salesforce Case | [] | |
Fix Version/s | 2.0.1 [ 10255 ] | |
Assignee Priority | P1 | |
Assignee | Ken Fyten [ ken.fyten ] | Mark Collette [ mark.collette ] |
Ken Fyten
made changes -
Salesforce Case | [] | |
Assignee | Mark Collette [ mark.collette ] | Judy Guglielmin [ judy.guglielmin ] |
Brad Kroeger
made changes -
Summary | Dynamically adding ace:tabPane Results in ace:tabset Retrieving Entire Tabset Content | Dynamically adding/removing ace:tabPane Results in ace:tabset Retrieving Entire Tabset Content |
Salesforce Case | [] |
Ken Fyten
made changes -
Assignee | Judy Guglielmin [ judy.guglielmin ] | Ken Fyten [ ken.fyten ] |
Ken Fyten
made changes -
Issue Type | Bug [ 1 ] | Improvement [ 4 ] |
Salesforce Case | [] | |
Fix Version/s | 2.1 [ 10241 ] | |
Fix Version/s | 2.0.1 [ 10255 ] |
Mark Collette
made changes -
Mark Collette
made changes -
Mark Collette
made changes -
Status | Open [ 1 ] | Resolved [ 5 ] |
Fix Version/s | EE-2.0.0.GA_P01 [ 10271 ] | |
Resolution | Fixed [ 1 ] |
Mark Collette
made changes -
Ken Fyten
made changes -
Fix Version/s | 2.1-Beta [ 10291 ] | |
Fix Version/s | 2.1 [ 10241 ] |
Ken Fyten
made changes -
Fix Version/s | 3.0 [ 10241 ] |
Ken Fyten
made changes -
Status | Resolved [ 5 ] | Closed [ 6 ] |
Since we don't currently have dom insert capabilty, but rather dom replace, the trick is to already have rendered a place-holder for future content. For ace:tabSet, we could render some tuned number of future place-holder tabPane root divs, each styled to be hidden. Then, when a tab is added, the first place-holder will be swapped out for an actual tabPane, styled to no longer be hidden. The key is that as tabs are added and removed, they are taken from and returned to the pool of place-holders, so that the dom element child count does not vary, which would cause then all to be dom updated.