Skip to content

Commit 050cd5a

Browse files
author
p01
committed
Only render the ResourceTree view it if the template has changed.
Check if container.firstElementChild
1 parent cec5db8 commit 050cd5a

File tree

1 file changed

+26
-7
lines changed

1 file changed

+26
-7
lines changed

src/resource-manager/resource_tree_view.js

Lines changed: 26 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -27,17 +27,19 @@ cls.ResourceTreeView = function(id, name, container_class, html, default_handler
2727
{
2828
var service = this._service;
2929
var ctx = this._service.get_resource_context();
30-
var scrollTop = container.firstElementChild?container.firstElementChild.scrollTop:0;
31-
var scrollLeft = container.firstElementChild?container.firstElementChild.scrollLeft:0;
30+
var target = container.firstElementChild;
31+
var scrollTop = target?target.scrollTop:0;
32+
var scrollLeft = target?target.scrollLeft:0;
33+
var tpl;
3234

3335
if (ctx )
3436
{
3537
ctx.searchTerm = this.searchTerm||'';
36-
container.clearAndRender( templates.resource_tree.update(ctx) );
38+
tpl = templates.resource_tree.update(ctx);
3739
}
3840
else if (this._loading)
3941
{
40-
container.clearAndRender(
42+
tpl = (
4143
['div',
4244
['p', ui_strings.S_RESOURCE_LOADING_PAGE],
4345
'class', 'info-box'
@@ -46,7 +48,7 @@ cls.ResourceTreeView = function(id, name, container_class, html, default_handler
4648
}
4749
else
4850
{
49-
container.clearAndRender(
51+
tpl = (
5052
['div',
5153
['span',
5254
'class', 'container-button ui-button reload-window',
@@ -58,10 +60,27 @@ cls.ResourceTreeView = function(id, name, container_class, html, default_handler
5860
);
5961
}
6062

61-
container.firstElementChild.scrollTop = scrollTop;
62-
container.firstElementChild.scrollLeft = scrollLeft;
63+
// only render it if the template has changed ( using its JSON representation as hash )
64+
var tpl_JSON = JSON.stringify(tpl);
65+
if( !this.tpl_JSON || tpl_JSON.length != this.tpl_JSON.length || tpl_JSON != this.tpl_JSON)
66+
{
67+
container.clearAndRender( tpl );
68+
this.tpl_JSON = tpl_JSON;
69+
}
70+
71+
target = container.firstElementChild;
72+
if(target)
73+
{
74+
target.scrollTop = scrollTop;
75+
target.scrollLeft = scrollLeft;
76+
}
6377
};
6478

79+
this.ondestroy = function(container)
80+
{
81+
delete this.tpl_JSON;
82+
}
83+
6584
this.create_disabled_view = function(container)
6685
{
6786
container.clearAndRender(window.templates.disabled_view());

0 commit comments

Comments
 (0)