@@ -115,94 +115,10 @@ function setupSortableTables() {
115115 } ) ;
116116}
117117
118- // 拡大アイコンをクリックしたときに、その行以外を非表示にする
119- function setupZoomIcons ( ) {
120- const zoomIcons = document . querySelectorAll ( "i.zoom" ) ;
121-
122- zoomIcons . forEach ( icon => {
123- icon . style . cursor = "pointer" ;
124-
125- icon . addEventListener ( "click" , function ( ) {
126- const row = this . closest ( "tr" ) ;
127- const table = this . closest ( "table" ) ;
128- const tbody = table . querySelector ( "tbody" ) ;
129- const allRows = tbody . querySelectorAll ( "tr" ) ;
130- const fqn = row . querySelector ( "td.fqn" ) . textContent ;
131-
132- // クリックされた行以外を非表示にする
133- allRows . forEach ( r => {
134- if ( r !== row && ! fqnStartsWith ( fqn , r ) ) {
135- r . classList . add ( "hidden-by-zoom" ) ;
136- }
137- } ) ;
138-
139- zoomFamilyTables ( table , row ) ;
140- // ズーム解除ボタンを表示
141- document . getElementById ( "cancel-zoom" ) . classList . remove ( "hidden" ) ;
142- } ) ;
143- } ) ;
144- }
145-
146- // ズームを解除する
147- function cancelZoom ( event ) {
148- // すべてのテーブルからhidden-by-zoomクラスを削除
149- document . querySelectorAll ( "table tbody tr.hidden-by-zoom" ) . forEach ( row => {
150- row . classList . remove ( "hidden-by-zoom" ) ;
151- } ) ;
152- event . target . classList . add ( "hidden" ) ;
153- }
154-
155- function fqnStartsWith ( prefix , targetRow ) {
156- return targetRow . querySelector ( "td.fqn" ) . textContent . startsWith ( prefix ) ;
157- }
158-
159- function zoomFamilyTables ( baseTable , baseRow ) {
160- baseTable . parentElement . querySelectorAll ( "table" ) . forEach ( table => {
161- if ( table === baseTable ) return ;
162-
163- const allRows = table . querySelectorAll ( "tbody tr" ) ;
164-
165- // zoomされているものがあったら一旦解除して
166- const hiddenRows = table . querySelectorAll ( "tbody tr.hidden-by-zoom" ) ;
167- if ( hiddenRows . length > 0 ) {
168- allRows . forEach ( r => {
169- r . classList . remove ( "hidden-by-zoom" ) ;
170- } ) ;
171- }
172-
173- // 関係するもの以外を非表示にする
174- // 元テーブルと対象テーブルの組み合わせでprefixが変わる
175- let prefix = baseRow . dataset . fqn ;
176- if ( baseTable . id . includes ( "package" ) ) {
177- prefix = prefix + '.' ;
178- } else if ( baseTable . id . includes ( "type" ) ) {
179- if ( table . id . includes ( "package" ) ) {
180- prefix = baseRow . dataset . packageFqn ;
181- } else if ( table . id . includes ( "method" ) ) {
182- prefix = prefix + '#' ;
183- }
184- } else if ( baseTable . id . includes ( "method" ) ) {
185- if ( table . id . includes ( "package" ) ) {
186- prefix = baseRow . dataset . packageFqn ;
187- }
188- if ( table . id . includes ( "type" ) ) {
189- prefix = baseRow . dataset . typeFqn ;
190- }
191- }
192- allRows . forEach ( r => {
193- if ( ! fqnStartsWith ( prefix , r ) ) r . classList . add ( "hidden-by-zoom" ) ;
194- } ) ;
195- } )
196- }
197-
198118// ページ読み込み時のイベント
199119// リスナーの登録はそのページだけでやる
200120document . addEventListener ( "DOMContentLoaded" , function ( ) {
201- if ( document . body . classList . contains ( "insight" ) ) {
202- setupSortableTables ( ) ;
203- setupZoomIcons ( ) ;
204- document . getElementById ( "cancel-zoom" ) . addEventListener ( "click" , cancelZoom ) ;
205- } else if ( document . body . classList . contains ( "repository" ) ) {
121+ if ( document . body . classList . contains ( "repository" ) ) {
206122 setupSortableTables ( ) ;
207123 }
208124} ) ;
0 commit comments