@@ -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