@@ -37,32 +37,46 @@ codeEditor.on('change', function () {
3737} ) ;
3838
3939var cachedFile = { } ;
40+ var loading = false ;
4041var loadFile = function ( category , algorithm , file , explanation ) {
42+ if ( checkLoading ( ) ) return ;
4143lastData = null ;
4244$ ( '#explanation' ) . html ( explanation ) ;
4345
4446var dir = lastDir = './algorithm/' + category + '/' + algorithm + '/' + file + '/' ;
47+ loading = true ;
4548if ( cachedFile [ dir ] && cachedFile [ dir ] . data !== undefined && cachedFile [ dir ] . code !== undefined ) {
4649dataEditor . setValue ( cachedFile [ dir ] . data , - 1 ) ;
4750codeEditor . setValue ( cachedFile [ dir ] . code , - 1 ) ;
4851} else {
4952cachedFile [ dir ] = { } ;
5053dataEditor . setValue ( '' ) ;
5154codeEditor . setValue ( '' ) ;
55+ var onFail = function ( jqXHR , textStatus , errorThrown ) {
56+ loading = false ;
57+ alert ( "AJAX call failed: " + textStatus + ", " + errorThrown ) ;
58+ } ;
5259$ . get ( dir + 'data.js' , function ( data ) {
5360cachedFile [ dir ] . data = data ;
5461dataEditor . setValue ( data , - 1 ) ;
5562
5663$ . get ( dir + 'code.js' , function ( code ) {
5764cachedFile [ dir ] . code = code ;
5865codeEditor . setValue ( code , - 1 ) ;
59- } ) ;
60- } ) . fail ( function ( jqXHR , textStatus , errorThrown ) {
61- alert ( "AJAX call failed: " + textStatus + ", " + errorThrown ) ;
62- } ) ;
66+ loading = false ;
67+ } ) . fail ( onFail ) ;
68+ } ) . fail ( onFail ) ;
69+ }
70+ } ;
71+ var checkLoading = function ( ) {
72+ if ( loading ) {
73+ showErrorToast ( 'Wait until completes loading of previous file.' ) ;
74+ return true ;
6375}
76+ return false ;
6477} ;
6578var loadAlgorithm = function ( category , algorithm ) {
79+ if ( checkLoading ( ) ) return ;
6680$ ( '#list > button' ) . removeClass ( 'active' ) ;
6781$ ( '[data-category="' + category + '"][data-algorithm="' + algorithm + '"]' ) . addClass ( 'active' ) ;
6882$ ( '#btn_desc' ) . click ( ) ;
@@ -167,6 +181,16 @@ $('#navigation').click(function () {
167181_tracer . resize ( ) ;
168182} ) ;
169183
184+ var showErrorToast = function ( err ) {
185+ var $toast = $ ( '<div class="toast error">' ) . append ( err ) ;
186+ $ ( '.toast_container' ) . append ( $toast ) ;
187+ setTimeout ( function ( ) {
188+ $toast . fadeOut ( function ( ) {
189+ $toast . remove ( ) ;
190+ } ) ;
191+ } , 3000 ) ;
192+ } ;
193+
170194$ ( '#btn_run' ) . click ( function ( ) {
171195try {
172196eval ( dataEditor . getValue ( ) ) ;
@@ -177,13 +201,7 @@ $('#btn_run').click(function () {
177201_tracer . visualize ( ) ;
178202} catch ( err ) {
179203console . error ( err ) ;
180- var $toast = $ ( '<div class="toast error">' ) . append ( err ) ;
181- $ ( '.toast_container' ) . append ( $toast ) ;
182- setTimeout ( function ( ) {
183- $toast . fadeOut ( function ( ) {
184- $toast . remove ( ) ;
185- } ) ;
186- } , 3000 ) ;
204+ showErrorToast ( err ) ;
187205}
188206} ) ;
189207$ ( '#btn_pause' ) . click ( function ( ) {