1
1
import sampleData from "./sample_output2.json" ;
2
+ import { uiState } from "./ui" ;
3
+ import { csv } from "./export" ;
2
4
3
5
var graph = preprocess ( sampleData . graph ) ;
4
6
5
7
function preprocess ( graph ) {
6
- graph . nodes . forEach ( node => node . radius = 5 + Math . sqrt ( node . entities [ 0 ] . frequency || 25 ) ) ;
8
+ graph . nodes . forEach ( node => node . radius = 5 + Math . sqrt ( node . entities [ 0 ] . score / 4 || 25 ) ) ;
7
9
return graph ;
8
10
}
9
11
10
12
function updateSelectedNodes ( ) {
11
- let data = graph . nodes . filter ( node => ! ! node . selected ) ,
13
+ if ( ! uiState . tableToggled )
14
+ return ;
15
+ let data = graph . nodes . filter ( node => ! ! node . selected ) . sort ( ( a , b ) =>
16
+ a . entities [ 0 ] . score > b . entities [ 0 ] . score ? - 1 : 1
17
+ ) ,
12
18
table = document . querySelector ( "#table table tbody" ) ;
13
19
table . textContent = "" ;
14
20
for ( let i = 0 ; i < data . length ; i ++ ) {
15
21
let row = table . insertRow ( i ) ,
16
22
node = data [ i ] ;
17
23
row . insertCell ( 0 ) . textContent = node . id ;
18
24
row . insertCell ( 1 ) . textContent = node . label ;
19
- row . insertCell ( 2 ) . textContent = node . entities [ 0 ] . frequency ;
25
+ row . insertCell ( 2 ) . textContent = node . entities [ 0 ] . score ;
26
+ row . insertCell ( 3 ) . textContent = node . entities [ 0 ] . frequency ;
27
+ row . insertCell ( 4 ) . textContent = node . entities [ 0 ] . spread ;
20
28
}
21
29
}
22
30
@@ -91,7 +99,7 @@ window.init = () => {
91
99
if ( ! ctrlKey ) {
92
100
node . classed ( "selected" , ( p ) => p . selected = p . previouslySelected = false )
93
101
}
94
- d3 . select ( this ) . classed ( "selected" , d . selected = ! d . previouslySelected ) ;
102
+ d3 . select ( this ) . classed ( "selected" , d . selected = ! d . selected ) ; // (!prevSel)
95
103
updateSelectedNodes ( ) ;
96
104
} ) ;
97
105
@@ -197,10 +205,18 @@ window.init = () => {
197
205
}
198
206
199
207
d3 . select ( "#tableToggle" )
200
- . data ( [ { toggled : false } ] )
201
- . on ( "click" , ( d ) => {
202
- d . toggled = ! d . toggled ;
203
- d3 . select ( "#table" ) . classed ( "active" , d . toggled ) ;
208
+ . data ( [ uiState ] )
209
+ . on ( "click" , function ( d ) {
210
+ d . tableToggled = ! d . tableToggled ;
211
+ d3 . select ( this ) . classed ( "toggled" , d . tableToggled ) ;
212
+ d3 . select ( "#table" ) . classed ( "active" , d . tableToggled ) ;
213
+ updateSelectedNodes ( ) ;
204
214
} ) ;
205
215
216
+ d3 . select ( "#exportCSV" ) . on ( "click" , ( ) => {
217
+ csv ( [ ] . slice . call ( document . querySelector ( "#table table" ) . rows ) . map ( row =>
218
+ [ ] . slice . call ( row . cells ) . map ( cell => cell . textContent )
219
+ ) ) ;
220
+ } ) ;
221
+
206
222
} ;
0 commit comments