@@ -151,22 +151,58 @@ var showAlgorithm = function(category, algorithm) {
151151 codeEditor . setValue ( '' ) ;
152152} ;
153153var showFiles = function ( category , algorithm , files ) {
154- $ ( '.files_bar' ) . empty ( ) ;
155- var init = false ;
156- for ( var file in files ) {
157- ( function ( file , explanation ) {
158- var $file = $ ( '<button>' ) . append ( file ) . click ( function ( ) {
154+ var maxButtonCount = 3 , fileNames = Object . keys ( files ) , lastFile = - 1 ;
155+ var init = false ;
156+ var currentFileBarButtons = [ ] ;
157+
158+ function addFileButton ( file , explanation ) {
159+ var $file = $ ( '<button>' ) . append ( file ) . click ( function ( ) {
159160 loadFile ( category , algorithm , file , explanation ) ;
160161 $ ( '.files_bar > button' ) . removeClass ( 'active' ) ;
161162 $ ( this ) . addClass ( 'active' ) ;
162163 } ) ;
163164 $ ( '.files_bar' ) . append ( $file ) ;
165+ currentFileBarButtons . push ( $file ) ;
166+
164167 if ( ! init ) {
165168 init = true ;
166169 $file . click ( ) ;
167170 }
168- } ) ( file , files [ file ] ) ;
169- }
171+ }
172+
173+ function clearFileBar ( ) {
174+ currentFileBarButtons . forEach ( function ( f ) {
175+ f . remove ( ) ;
176+ } ) ;
177+ }
178+
179+ $ ( '.files_bar' ) . empty ( ) ;
180+
181+ var $nextButton = $ ( '<button>' ) . append ( '<b>></b>' ) . addClass ( 'files_bar_right_button' ) . click ( function ( ) {
182+ if ( lastFile >= fileNames . length ) { return ; }
183+ clearFileBar ( ) ; //first, remove the previously visible buttons
184+
185+ init = false ;
186+ fileNames . slice ( lastFile + 1 , lastFile + 1 + maxButtonCount ) . forEach ( function ( file ) {
187+ file && addFileButton ( file , files [ file ] ) ;
188+ } ) ;
189+ lastFile += maxButtonCount ;
190+ } ) ;
191+ $ ( '.files_bar' ) . append ( $nextButton ) ;
192+
193+ var $prevButton = $ ( '<button>' ) . append ( '<b><</b>' ) . addClass ( 'files_bar_left_button' ) . click ( function ( ) {
194+ if ( lastFile === maxButtonCount - 1 ) { return ; }
195+
196+ clearFileBar ( ) ; //first, remove the previously visible buttons
197+ lastFile -= maxButtonCount ;
198+ init = false ;
199+ fileNames . slice ( lastFile + 1 - maxButtonCount , lastFile + 1 ) . forEach ( function ( file ) {
200+ addFileButton ( file , files [ file ] ) ;
201+ } ) ;
202+ } ) ;
203+ $ ( '.files_bar' ) . append ( $prevButton ) ;
204+
205+ $nextButton . click ( ) ; //initialize the file bar with the First 3 Buttons
170206} ;
171207var loadAlgorithm = function ( category , algorithm ) {
172208 if ( checkLoading ( ) ) return ;
0 commit comments