diff -r 8d9757191f05 -r d9eb50c015d1 svghmi/gen_index_xhtml.xslt --- a/svghmi/gen_index_xhtml.xslt Thu Mar 12 13:16:18 2020 +0100 +++ b/svghmi/gen_index_xhtml.xslt Fri Mar 13 10:36:13 2020 +0100 @@ -198,6 +198,11 @@ + + + + + @@ -399,11 +404,20 @@ - - - - - + + + + + + + + + + + + + + @@ -453,23 +467,21 @@ indexes: [ - - - + Widget id=" " : No match for path " - + " in HMI tree - + , @@ -551,7 +563,8 @@ - + + " @@ -571,11 +584,40 @@ ], - widgets: [ - - + + + + Page id=" + + " : No match for path " + + " in HMI tree + + + page_index: + + , + + + relative_widgets: [ + + hmi_widgets[" - + + "] + + , + + + + + ], + + absolute_widgets: [ + + + hmi_widgets[" + "] , @@ -1138,7 +1180,7 @@ - function switch_page(page_name) { + function switch_page(page_name, root_index) { if(current_subscribed_page != current_visible_page){ @@ -1164,6 +1206,16 @@ + function* chain(a,b){ + + yield* a; + + yield* b; + + }; + + + function switch_subscribed_page(page_name) { let old_desc = page_desc[current_subscribed_page]; @@ -1184,7 +1236,7 @@ if(old_desc){ - for(let widget of old_desc.widgets){ + for(let widget of chain(old_desc.absolute_widgets,old_desc.relative_widgets)){ /* remove subsribers */ @@ -1198,7 +1250,7 @@ } - for(let widget of new_desc.widgets){ + for(let widget of chain(new_desc.absolute_widgets,new_desc.relative_widgets)){ /* add widget's subsribers */ @@ -1276,7 +1328,7 @@ - for(let widget of new_desc.widgets){ + for(let widget of chain(new_desc.absolute_widgets,new_desc.relative_widgets)){ for(let index of widget.indexes){ @@ -1621,7 +1673,7 @@ on_click: function(evt) { - switch_page(this.args[0]); + switch_page(this.args[0], this.indexes[0]); },