1+ // Function to update the modal content 
2+ function  updateSelectedSignalsModal ( )  { 
3+     var  selectedSignals  =  localStorage . getItem ( 'selectedSignals' ) ; 
4+     var  signals  =  selectedSignals  ? JSON . parse ( selectedSignals )  : { } ; 
5+ 
6+     var  selectedSignalsList  =  document . getElementById ( 'selectedSignalsList' ) ; 
7+     selectedSignalsList . innerHTML  =  '' ;  // Clear existing items 
8+ 
9+ 
10+     for  ( const  signal  in  signals )  { 
11+         let  data  =  JSON . parse ( localStorage . getItem ( "selectedSignals" ) ) [ signal ] ; 
12+         console . log ( data ) ; 
13+         var  tr  =  document . createElement ( 'tr' ) ; 
14+         var  memberName  =  document . createElement ( 'td' ) ; 
15+         memberName . textContent  =  data [ 'info' ] [ 'memberName' ] ; 
16+         tr . appendChild ( memberName ) ; 
17+         var  memberDescription  =  document . createElement ( 'td' ) ; 
18+         memberDescription . textContent  =  data [ 'info' ] [ 'memberDescription' ] ; 
19+         tr . appendChild ( memberDescription ) ; 
20+         var  dataSource  =  document . createElement ( 'td' ) ; 
21+         dataSource . textContent  =  data [ 'epivis' ] [ 'params' ] [ 'data_source' ] ; 
22+         tr . appendChild ( dataSource ) ; 
23+         var  signalName  =  document . createElement ( 'td' ) ; 
24+         signalName . textContent  =  data [ 'epivis' ] [ 'params' ] [ 'signal' ] ; 
25+         tr . appendChild ( signalName ) ; 
26+         var  timeType  =  document . createElement ( 'td' ) ; 
27+         timeType . textContent  =  data [ 'epivis' ] [ 'params' ] [ 'time_type' ] ; 
28+         tr . appendChild ( timeType ) ; 
29+         var  geoType  =  document . createElement ( 'td' ) ; 
30+         geoType . textContent  =  data [ 'epivis' ] [ 'params' ] [ 'geo_type' ] ; 
31+         tr . appendChild ( geoType ) ; 
32+         var  geoValue  =  document . createElement ( 'td' ) ; 
33+         geoValue . textContent  =  data [ 'epivis' ] [ 'params' ] [ 'geo_value' ] ; 
34+         tr . appendChild ( geoValue ) ; 
35+         selectedSignalsList . appendChild ( tr ) ; 
36+     } 
37+ } 
38+ 
39+ function  addSelectedSignals ( dataSource ,  timeType ,  signalSetEndpoint )  { 
40+     let  selectedSignals  =  localStorage . getItem ( "selectedSignals" ) ; 
41+     selectedSignals  =  selectedSignals  ? JSON . parse ( selectedSignals )  : { } ; 
42+     var  dataSignals  =  Array . from ( document . getElementsByName ( 'selectedSignal' ) ,  ( signal )  =>  ( signal . checked )  ? signal  : null ) . filter ( ( el )  =>  el  !==  null ) ; 
43+     var  geographicType  =  document . getElementById ( 'geographic_type' ) . value ; 
44+     // geographicValue is a comma separated string of geographic values. type can be string or integer 
45+     // in case of string, it should be converted to lowercase 
46+     // else it will be treated as integer 
47+     var  geographicValue  =  $ ( '#geographic_value' ) . select2 ( 'data' ) . map ( ( el )  =>  ( typeof  el . id  ===  'string' )  ? el . id . toLowerCase ( )  : el . id ) . join ( ',' ) ; 
48+ 
49+     if  ( geographicType  ===  'Choose...'  ||  geographicValue  ===  '' )  { 
50+         showWarningAlert ( "Geographic Type or Geographic Value is not selected." ) ; 
51+         return ; 
52+     } 
53+ 
54+     var  geographicValues  =  geographicValue . split ( ',' ) ; 
55+     dataSignals . forEach ( ( signal )  =>  { 
56+         geographicValues . forEach ( ( geographicValue )  =>  { 
57+             selectedSignals [ `${ signal . value } ${ geographicValue }  ]  =  { 
58+                 info : { 
59+                     memberName : signal . getAttribute ( 'data-member-name' ) , 
60+                     memberDescription : signal . getAttribute ( 'data-member-description' ) ,  
61+                 } , 
62+                 epivis : { 
63+                 color : '#'  +  ( Math . random ( )  *  0xFFFFFF  <<  0 ) . toString ( 16 ) . padStart ( 6 ,  '0' ) , 
64+                 title : "value" , 
65+                 params : { 
66+                     _endpoint : signalSetEndpoint , 
67+                     data_source : dataSource , 
68+                     signal : signal . value , 
69+                     time_type : timeType , 
70+                     geo_type : geographicType , 
71+                     geo_value : geographicValue 
72+                 } 
73+             } 
74+             } ; 
75+         } ) ; 
76+     } ) ; 
77+     localStorage . setItem ( "selectedSignals" ,  JSON . stringify ( selectedSignals ) ) ; 
78+     updateSelectedSignalsModal ( ) ; 
79+     $ ( "#showSelectedSignalsButton" ) . show ( ) ; 
80+ } 
81+ 
82+ function  plotData ( epivisUrl )  { 
83+     var  dataSets  =  [ ] ; 
84+     for  ( const  signal  in  JSON . parse ( localStorage . getItem ( "selectedSignals" ) ) )  { 
85+         dataSets . push ( JSON . parse ( localStorage . getItem ( "selectedSignals" ) ) [ signal ] [ 'epivis' ] ) ; 
86+     } 
87+     var  urlParamsEncoded  =  btoa ( `{"datasets":${ JSON . stringify ( dataSets ) }  ) ; 
88+     
89+     var  linkToEpivis  =  `${ epivisUrl } ${ urlParamsEncoded }  
90+     window . open ( linkToEpivis ,  '_blank' ) . focus ( ) ; 
91+ } 
92+ 
93+ document . addEventListener ( 'DOMContentLoaded' ,  function ( )  { 
94+     // Call the function to update the modal content when the page loads 
95+     updateSelectedSignalsModal ( ) ; 
96+ 
97+ } ) ; 
98+ 
99+ 
100+ 
101+ //for (const signal in JSON.parse(localStorage.getItem("selectedSignals"))) {console.log(JSON.parse(localStorage.getItem("selectedSignals"))[signal])} 
0 commit comments