@@ -44,6 +44,35 @@ $(() => {
4444 } ) . always ( function ( ) {
4545 dsmTreeList . option ( "disabled" , false ) ;
4646 const expandedKeys = groupStore . items ( ) . filter ( ( { expanded } ) => expanded === true ) . map ( key => key . id ) ;
47+
48+ // Get query parameters from URL and store on respective variables
49+ const urlParams = new URLSearchParams ( window . location . search ) ;
50+ const fundingOrganization = urlParams . get ( 'fundingOrganization' ) ;
51+ const fundingCycle = urlParams . get ( 'fundingCycle' ) ;
52+ const researchGroup = urlParams . get ( 'researchGroup' ) ;
53+
54+ // if any of the query parameters is present, expand the respective groups
55+ if ( fundingOrganization ) {
56+ const fundingOrganizationItem = groups . find ( group => group . fundingOrganization === parseInt ( fundingOrganization , 10 ) ) ;
57+ expandedKeys . push ( fundingOrganizationItem . id ) ;
58+ dsmTreeList . selectRows ( [ fundingOrganizationItem . id ] , false ) ;
59+ }
60+
61+ if ( researchGroup ) {
62+ const researchGroupItem = groups . find ( group => group . researchGroup === parseInt ( researchGroup , 10 ) ) ;
63+ const parentItem = groups . find ( group => group . id === researchGroupItem . parent ) ;
64+ expandedKeys . push ( researchGroupItem . parent ) ;
65+ expandedKeys . push ( parentItem . parent ) ;
66+ dsmTreeList . selectRows ( [ researchGroupItem . id ] , false ) ;
67+ }
68+
69+ if ( fundingCycle ) {
70+ const fundingCycleItem = groups . find ( group => group . fundingCycle === parseInt ( fundingCycle , 10 ) ) ;
71+ expandedKeys . push ( fundingCycleItem . id ) ;
72+ expandedKeys . push ( fundingCycleItem . parent ) ;
73+ dsmTreeList . selectRows ( [ fundingCycleItem . id ] , false ) ;
74+ }
75+
4776 dsmTreeList . option ( "expandedRowKeys" , expandedKeys ) ;
4877 } ) ;
4978 }
@@ -199,6 +228,17 @@ $(() => {
199228 parameters = Object . assign ( parameters , { researchGroup : selectedItem . researchGroup } ) ;
200229 }
201230
231+ // Change current browser URL to add query parameters
232+ var currentUrl = new URL ( window . location . href ) ;
233+ var queryParams = new URLSearchParams ( ) ;
234+ var urlPararameters = Object . assign ( { } , parameters ) ;
235+ delete urlPararameters . datasetFilter ;
236+ for ( const key of Object . keys ( urlPararameters ) ) {
237+ queryParams . set ( key , urlPararameters [ key ] ) ;
238+ }
239+ currentUrl . search = queryParams . toString ( ) ;
240+ window . history . pushState ( { } , '' , currentUrl ) ;
241+
202242 $ . ajax ( {
203243 url : Routing . generate ( "app_api_dataset_monitoring_datasets" ,
204244 parameters
0 commit comments