1919Ext . define ( 'EdiromOnline.controller.window.concordanceNavigator.ConcordanceNavigator' , {
2020
2121 extend : 'Ext.app.Controller' ,
22-
22+
2323 navwin : null ,
2424
2525 views : [
2626 'window.concordanceNavigator.ConcordanceNavigator'
2727 ] ,
2828
29- init : function ( ) {
30-
31- this . application . addListener ( 'workSelected' , this . onWorkSelected , this ) ;
32-
29+ init : function ( ) {
30+
31+ this . application . addListener ( 'workSelected' , this . onWorkSelected , this ) ;
32+
3333 this . control ( {
3434 'concordanceNavigator' : {
3535 render : this . onWindowRendered ,
3636 single : true
3737 }
3838 } ) ;
3939 } ,
40-
40+
4141 onWorkSelected : function ( workId ) {
42- var me = this ;
43- if ( me . navwin != null ) {
44- var app = me . application ;
45- app . callFunctionOfEdition ( me . navwin , 'getConcordances' , Ext . bind ( me . concordancesLoaded , me , [ me . navwin ] , true ) ) ;
46- }
47-
42+ var me = this ;
43+ if ( me . navwin != null ) {
44+ var app = me . application ;
45+ app . callFunctionOfEdition ( me . navwin , 'getConcordances' , Ext . bind ( me . concordancesLoaded , me , [ me . navwin ] , true ) ) ;
46+ }
47+
4848 } ,
4949
50- onWindowRendered : function ( win ) {
50+ onWindowRendered : function ( win ) {
5151 var me = this ;
5252
53- if ( win . initialized ) return ;
53+ if ( win . initialized ) return ;
5454 win . initialized = true ;
55-
55+
5656 this . navwin = win ;
5757
5858 var app = me . application ;
@@ -76,6 +76,39 @@ Ext.define('EdiromOnline.controller.window.concordanceNavigator.ConcordanceNavig
7676 } ) ;
7777 } ,
7878
79+ /**
80+ * Checks whether a connection with the given ID exists in any of the loaded concordances
81+ * (direct connections or connections within groups).
82+ */
83+ hasConnectionId : function ( concordanceStoreRaw , connectionId ) {
84+ if ( ! Array . isArray ( concordanceStoreRaw ) || ! connectionId ) return false ;
85+ var normalizedId = String ( connectionId ) ;
86+ for ( var i = 0 ; i < concordanceStoreRaw . length ; i ++ ) {
87+ var concordance = concordanceStoreRaw [ i ] ;
88+ // Check direct connections
89+ var directConnections = concordance && concordance . connections && concordance . connections . connections ;
90+ if ( Array . isArray ( directConnections ) ) {
91+ for ( var k = 0 ; k < directConnections . length ; k ++ ) {
92+ var conn = directConnections [ k ] ;
93+ if ( conn && String ( conn . id ) === normalizedId ) return true ;
94+ }
95+ }
96+ // Check grouped connections
97+ var groups = concordance && concordance . groups && concordance . groups . groups ;
98+ if ( ! Array . isArray ( groups ) ) continue ;
99+ for ( var j = 0 ; j < groups . length ; j ++ ) {
100+ var group = groups [ j ] ;
101+ var groupConnections = group && group . connections && group . connections . connections ;
102+ if ( ! Array . isArray ( groupConnections ) ) continue ;
103+ for ( var m = 0 ; m < groupConnections . length ; m ++ ) {
104+ var gconn = groupConnections [ m ] ;
105+ if ( gconn && String ( gconn . id ) === normalizedId ) return true ;
106+ }
107+ }
108+ }
109+ return false ;
110+ } ,
111+
79112 concordancesLoaded : function ( concordanceStore , concordanceWindow ) {
80113 var me = this ;
81114 console . log ( "Concordances loaded: " + concordanceStore . getCount ( ) + " concordances" ) ;
@@ -84,5 +117,17 @@ Ext.define('EdiromOnline.controller.window.concordanceNavigator.ConcordanceNavig
84117 concordanceStoreRaw . push ( concordance . raw ) ;
85118 }
86119 me . ediromConcordanceNavigator . setAttribute ( "concordances-data" , JSON . stringify ( concordanceStoreRaw ) ) ; // set concordances as attribute to the web component
120+
121+ // Navigate to a specific connection if provided via URL parameter
122+ var activeConnection = me . application . activeConnection ;
123+ if ( activeConnection ) {
124+ if ( me . hasConnectionId ( concordanceStoreRaw , activeConnection ) ) {
125+ me . ediromConcordanceNavigator . setAttribute ( "current-connection" , activeConnection ) ;
126+ } else {
127+ console . warn ( "Connection ID not found in concordances: " + activeConnection ) ;
128+ }
129+ // Clear after applying to avoid re-navigation on subsequent concordance loads
130+ me . application . activeConnection = null ;
131+ }
87132 }
88133} ) ;
0 commit comments