3434 vertical-align : top;
3535 }
3636
37+ # network-show {
38+ vertical-align : top;
39+ }
40+
3741 # data-table {
3842 width : 100% ;
3943 };
@@ -45,6 +49,7 @@ <h1>Infuse-IoT TDF Viewer</h1>
4549 < div id ="filteringSidebar " class ="sidebar ">
4650 < span id ="tdf-show "> </ span >
4751 < span id ="app-show "> </ span >
52+ < span id ="network-show "> </ span >
4853 </ div >
4954 < div >
5055 < b >
@@ -114,20 +119,39 @@ <h1>Infuse-IoT TDF Viewer</h1>
114119 } ,
115120 ]
116121 } ) ;
122+ const shownNetworkTable = new Tabulator ( "#network-show" , {
123+ layout : "fitDataTable" ,
124+ columns : [
125+ { title : "Network ID" , field : "name" , width : 200 } ,
126+ {
127+ title : "Show" ,
128+ field : "checked" ,
129+ hozAlign : "center" ,
130+ formatter : "tickCross" ,
131+ cellClick : function ( ev , cell ) {
132+ filtering_update = true ;
133+ cell . setValue ( ! cell . getValue ( ) ) ;
134+ } ,
135+ } ,
136+ ]
137+ } ) ;
117138
118139 // Connect to the WebSocket server
119140 const ws = new WebSocket ( "ws://localhost:" + location . port + "/ws" ) ;
120141 let shownTDFs = { } ;
121142 let currentTDFs = [ ] ;
122143 let current_num_columns = 0 ;
123144 let currentApps = [ ] ;
145+ let currentNetworks = [ ]
124146
125147 const arraysEqual = ( a , b ) =>
126148 a . length === b . length &&
127149 a . every ( ( element , index ) => element === b [ index ] ) ;
128150
129151 ws . onmessage = function ( event ) {
130- const { columns, rows, tdfs, apps } = JSON . parse ( event . data ) ;
152+ const { columns, rows, tdfs, apps, networks } = JSON . parse ( event . data ) ;
153+
154+ console . log ( networks ) ;
131155
132156 if ( ! arraysEqual ( currentTDFs , tdfs ) ) {
133157 // Merge new data with the existing table data
@@ -164,6 +188,20 @@ <h1>Infuse-IoT TDF Viewer</h1>
164188 filtering_update = true ;
165189 }
166190
191+ if ( ! arraysEqual ( currentNetworks , networks ) ) {
192+ // Merge new data with the existing table data
193+ const currentRows = shownAppTable . getData ( ) ;
194+ const updatedData = networks . map ( ( str , index ) => {
195+ const existingRow = currentRows . find ( row => row . name === str ) ;
196+ return existingRow
197+ ? existingRow // Preserve the existing row if found
198+ : { id : `row-${ index } ` , name : str , checked : true } ;
199+ } ) ;
200+ shownNetworkTable . replaceData ( updatedData ) ;
201+ currentNetworks = networks
202+ filtering_update = true ;
203+ }
204+
167205 // Update column definitions if new TDFs have appeared
168206 if ( columns . length != current_num_columns ) {
169207 dataTable . setColumns ( columns ) ;
@@ -190,14 +228,21 @@ <h1>Infuse-IoT TDF Viewer</h1>
190228 }
191229 } ) ;
192230
193- // Filter applications as requested
231+ // Filter applications and networks as requested
194232 appShow = Object . fromEntries (
195233 shownAppTable . getData ( ) . map ( row => [ row . name , row . checked ] )
196234 ) ;
235+ networkShow = Object . fromEntries (
236+ shownNetworkTable . getData ( ) . map ( row => [ row . name , row . checked ] )
237+ ) ;
197238 enabledApps = currentApps . filter ( a => appShow [ a ] ) ;
239+ enabledNetworks = currentNetworks . filter ( a => networkShow [ a ] ) ;
240+
241+ console . log ( enabledApps , enabledNetworks ) ;
198242
199243 dataTable . clearFilter ( ) ;
200244 dataTable . setFilter ( "application" , "in" , enabledApps ) ;
245+ dataTable . setFilter ( "network_id" , "in" , enabledNetworks ) ;
201246
202247 filtering_update = false ;
203248 }
0 commit comments