@@ -70,10 +70,68 @@ const Main = (function() {
7070 // }
7171 // });
7272 // }
73+
74+ function setActiveTab ( pageId , modalId = "modal" ) {
75+ let m = document . getElementById ( modalId ) ;
76+ m . classList . add ( 'open' ) ;
77+
78+ m . querySelector ( '.tab.active' ) . classList . remove ( 'active' ) ;
79+ m . querySelector ( '.page.active' ) . classList . remove ( 'active' ) ;
80+ m . querySelector ( 'header span[data-id="' + pageId + '"]' ) . classList . add ( 'active' ) ;
81+ document . getElementById ( pageId ) . classList . add ( 'active' ) ;
82+ }
83+
84+ let modalHeader = document . querySelector ( '#modal header' ) ;
85+ let modalDrag = null ;
86+ let modalWindow = document . querySelector ( '#modal > div' ) ;
87+ modalHeader . onmousedown = function ( e ) {
88+ modalDrag = e ;
89+ }
90+ document . addEventListener ( 'mousemove' , function ( e ) {
91+ if ( modalDrag ) {
92+ let dx = e . x - modalDrag . x ;
93+ let dy = e . y - modalDrag . y ;
94+ modalDrag = e ;
95+ let transform = modalWindow . style . transform . match ( / - ? \d + / g) || [ 0 , 0 ] ;
96+ transform [ 0 ] = + transform [ 0 ] + dx || dx ;
97+ transform [ 1 ] = + transform [ 1 ] + dy || dy ;
98+ modalWindow . style . transform = `translate(${ transform [ 0 ] } px, ${ transform [ 1 ] } px)` ;
99+ }
100+ } ) ;
101+ document . addEventListener ( 'mouseup' , function ( ) {
102+ modalDrag = null ;
103+ let transform = modalWindow . style . transform . match ( / - ? \d + / g) ;
104+ if ( ! transform ) { return ; }
105+
106+ let rect = modalWindow . getBoundingClientRect ( ) ;
107+ if ( rect . left > window . innerWidth - 50 ) {
108+ transform [ 0 ] -= ( 50 + rect . left - window . innerWidth ) ;
109+ }
110+ else if ( rect . right < 50 ) {
111+ transform [ 0 ] -= ( rect . right - 50 ) ;
112+ }
113+ if ( rect . top < 0 ) {
114+ transform [ 1 ] -= rect . top ;
115+ }
116+ else if ( rect . top > window . innerHeight - 50 ) {
117+ transform [ 1 ] -= ( 50 + rect . top - window . innerHeight ) ;
118+ }
119+ modalWindow . style . transform = `translate(${ transform [ 0 ] } px, ${ transform [ 1 ] } px)` ;
120+ } ) ;
121+
122+ document . querySelectorAll ( '.modal header .tab' ) . forEach ( tab => {
123+ tab . onclick = function ( ) {
124+ setActiveTab ( this . getAttribute ( 'data-id' ) ) ;
125+ }
126+ } ) ;
127+
128+ document . getElementById ( 'options-toggle' ) . onclick = function ( ) {
129+ setActiveTab ( 'options' ) ;
130+ }
73131 document . getElementById ( 'taxonomy-toggle' ) . onclick = function ( ) {
74- document . getElementById ( 'taxonomy' ) . classList . add ( 'open ') ;
132+ setActiveTab ( 'taxonomy' ) ;
75133 }
76- document . getElementById ( 'taxonomy ' ) . onclick = function ( e ) {
134+ document . getElementById ( 'modal ' ) . onclick = function ( e ) {
77135 e . target . classList . remove ( 'open' ) ;
78136 }
79137 }
@@ -88,6 +146,8 @@ const Main = (function() {
88146 ymlToJson . convert ( 'taxonomy.yml.txt' , function ( taxonomy ) {
89147 [ words , links , clusters ] = buildWordsAndLinks ( ) ;
90148
149+ //FIXME
150+ console . log ( words . filter ( x => x . val === 'Silencing' ) . map ( x => x . links ) ) ;
91151 // turn taxonomy into a proper tree
92152 let tree = ( function ( ) {
93153
@@ -304,7 +364,7 @@ const Main = (function() {
304364 } ;
305365
306366 // populate taxonomy
307- let div = document . querySelector ( '# taxonomy > div ') ;
367+ let div = document . getElementById ( ' taxonomy') ;
308368 div . innerHTML = '' ;
309369 let ul = document . createElement ( 'ul' ) ;
310370 div . appendChild ( ul ) ;
0 commit comments