@@ -40,14 +40,11 @@ define([
40
40
var cell = cells [ i ] ;
41
41
if ( ( cell . cell_type === "code" ) ) {
42
42
cell . code_mirror . on ( "gutterClick" , changeEvent ) ;
43
-
44
- if ( cell . metadata . run_control !== undefined ) {
45
- if ( cell . metadata . run_control . marked === true ) {
46
- var g = cell . code_mirror . getGutterElement ( ) ;
47
- $ ( g ) . css ( {
48
- "background-color" : params . marked_color
49
- } ) ;
50
- }
43
+ if ( is_marked ( cell ) ) {
44
+ var g = cell . code_mirror . getGutterElement ( ) ;
45
+ $ ( g ) . css ( {
46
+ "background-color" : params . marked_color
47
+ } ) ;
51
48
}
52
49
}
53
50
}
@@ -184,19 +181,23 @@ define([
184
181
}
185
182
}
186
183
184
+ function _show_input_output_of_marked ( show , char ) {
185
+ var cells = Jupyter . notebook . get_cells ( ) ;
186
+ var ncells = cells . length ;
187
+ for ( var i = 0 ; i < ncells ; i ++ ) {
188
+ var _cell = cells [ i ] ;
189
+ if ( is_marked ( _cell ) )
190
+ showCell ( _cell , char , show ) ;
191
+ }
192
+ }
193
+
187
194
/**
188
195
* Hide or show input of all marked code cells
189
196
*
190
197
* @param show {Boolean} show (true) or hide (false) code cells
191
198
*/
192
199
function show_input ( show ) {
193
- var ncells = Jupyter . notebook . ncells ( ) ;
194
- var cells = Jupyter . notebook . get_cells ( ) ;
195
- for ( var i = 0 ; i < ncells ; i ++ ) {
196
- var _cell = cells [ i ] ;
197
- if ( _cell . metadata . run_control !== undefined && _cell . metadata . run_control . marked === true )
198
- showCell ( _cell , 'i' , show ) ;
199
- }
200
+ _show_input_output_of_marked ( show , 'i' ) ;
200
201
}
201
202
202
203
/**
@@ -205,13 +206,7 @@ define([
205
206
* @param {Boolean } show show (true) or hide (false)
206
207
*/
207
208
function show_output ( show ) {
208
- var ncells = Jupyter . notebook . ncells ( ) ;
209
- var cells = Jupyter . notebook . get_cells ( ) ;
210
- for ( var i = 0 ; i < ncells ; i ++ ) {
211
- var _cell = cells [ i ] ;
212
- if ( _cell . metadata . run_control !== undefined && _cell . metadata . run_control . marked === true )
213
- showCell ( _cell , 'o' , show ) ;
214
- }
209
+ _show_input_output_of_marked ( show , 'o' ) ;
215
210
}
216
211
217
212
@@ -220,11 +215,12 @@ define([
220
215
*
221
216
*/
222
217
function execute_next_marked_cell ( ) {
218
+ var cells = Jupyter . notebook . get_cells ( ) ;
219
+ var end = cells . length ;
223
220
while ( run_list . length > 0 ) {
224
221
var runcell = run_list . shift ( ) ;
225
- var end = IPython . notebook . ncells ( ) ;
226
222
for ( var i = 0 ; i < end ; i ++ ) {
227
- if ( runcell === IPython . notebook . get_cell ( i ) ) {
223
+ if ( runcell === cells [ i ] ) {
228
224
if ( runcell . metadata . run_control !== undefined && runcell . metadata . run_control . marked === true ) {
229
225
IPython . notebook . select ( i ) ;
230
226
var g = runcell . code_mirror . getGutterElement ( ) ;
@@ -244,13 +240,13 @@ define([
244
240
*
245
241
*/
246
242
function run_marked_cells ( ) {
247
- var end = IPython . notebook . ncells ( ) ;
243
+ var cells = Jupyter . notebook . get_cells ( ) ;
244
+ var end = cells . length ;
248
245
run_list = [ ] ;
249
- /* Mark all selected cells as scheduled to be run with new gutter background color */
246
+ /* Show all marked cells as scheduled to be run with new gutter background color */
250
247
for ( var i = 0 ; i < end ; i ++ ) {
251
- IPython . notebook . select ( i ) ;
252
- var cell = IPython . notebook . get_selected_cell ( ) ;
253
- if ( cell instanceof IPython . CodeCell ) {
248
+ var cell = cells [ i ] ;
249
+ if ( cell instanceof codecell . CodeCell ) {
254
250
var last_line = cell . code_mirror . lastLine ( ) ;
255
251
var cell_empty = ( last_line === 0 && cell . code_mirror . getLine ( last_line ) === "" ) ;
256
252
if ( cell . metadata . run_control !== undefined && cell_empty === false ) {
@@ -275,15 +271,11 @@ define([
275
271
var finished_execute_event = function ( evt , data ) {
276
272
var cell = data . cell ;
277
273
/* Reset gutter color no non-queued state */
278
- if ( ( cell instanceof IPython . CodeCell ) ) {
279
- if ( cell . metadata . run_control !== undefined ) {
280
- if ( cell . metadata . run_control . marked === true ) {
281
- var g = cell . code_mirror . getGutterElement ( ) ;
282
- $ ( g ) . css ( {
283
- "background-color" : params . marked_color
284
- } ) ;
285
- }
286
- }
274
+ if ( is_marked ( cell ) ) {
275
+ var g = cell . code_mirror . getGutterElement ( ) ;
276
+ $ ( g ) . css ( {
277
+ "background-color" : params . marked_color
278
+ } ) ;
287
279
}
288
280
execute_next_marked_cell ( ) ;
289
281
} ;
@@ -294,6 +286,7 @@ define([
294
286
* @param value
295
287
*/
296
288
function setCell ( cell , value ) {
289
+ if ( ! ( cell instanceof codecell . CodeCell ) ) return ;
297
290
if ( cell . metadata . run_control === undefined ) cell . metadata . run_control = { } ;
298
291
if ( cell . metadata . run_control . marked === undefined ) cell . metadata . run_control . marked = false ;
299
292
if ( value === undefined ) value = ! cell . metadata . run_control . marked ;
@@ -311,41 +304,32 @@ define([
311
304
}
312
305
}
313
306
307
+ function setCellsMarked ( cells , value ) {
308
+ var ncells = cells . length ;
309
+ for ( var i = 0 ; i < ncells ; i ++ ) {
310
+ setCell ( cells [ i ] , value ) ;
311
+ }
312
+ }
313
+
314
314
/**
315
315
* Toggle code cell marker
316
316
*/
317
317
function toggle_marker ( ) {
318
- var cell = Jupyter . notebook . get_selected_cell ( ) ;
319
- setCell ( cell , undefined ) ;
320
- cell . focus_cell ( ) ;
318
+ setCellsMarked ( Jupyter . notebook . get_selected_cells ( ) , undefined ) ;
321
319
}
322
320
323
321
/**
324
322
*
325
323
*/
326
324
function mark_all ( ) {
327
- var cell = Jupyter . notebook . get_selected_cell ( ) ;
328
- var ncells = Jupyter . notebook . ncells ( ) ;
329
- var cells = Jupyter . notebook . get_cells ( ) ;
330
- for ( var i = 0 ; i < ncells ; i ++ ) {
331
- var _cell = cells [ i ] ;
332
- setCell ( _cell , true ) ;
333
- }
334
- cell . focus_cell ( ) ;
325
+ setCellsMarked ( Jupyter . notebook . get_cells ( ) , true ) ;
335
326
}
336
327
337
328
/**
338
329
*
339
330
*/
340
331
function mark_none ( ) {
341
- var cell = Jupyter . notebook . get_selected_cell ( ) ;
342
- var ncells = Jupyter . notebook . ncells ( ) ;
343
- var cells = Jupyter . notebook . get_cells ( ) ;
344
- for ( var i = 0 ; i < ncells ; i ++ ) {
345
- var _cell = cells [ i ] ;
346
- setCell ( _cell , false ) ;
347
- }
348
- cell . focus_cell ( ) ;
332
+ setCellsMarked ( Jupyter . notebook . get_cells ( ) , false ) ;
349
333
}
350
334
351
335
/**
@@ -370,21 +354,10 @@ define([
370
354
*/
371
355
function changeEvent ( cm , line , gutter ) {
372
356
var cmline = cm . doc . children [ 0 ] . lines [ line ] ;
373
- var cell = Jupyter . notebook . get_selected_cell ( ) ;
374
357
if ( cmline === undefined ) {
375
358
return ;
376
359
}
377
-
378
- if ( cell . code_mirror !== cm ) {
379
- var ncells = Jupyter . notebook . ncells ( ) ;
380
- var cells = Jupyter . notebook . get_cells ( ) ;
381
- for ( var i = 0 ; i < ncells ; i ++ ) {
382
- cell = cells [ i ] ;
383
- if ( cell . code_mirror === cm ) {
384
- break ;
385
- }
386
- }
387
- }
360
+ var cell = $ ( cm . element ) . closest ( '.cell' ) . data ( 'cell' ) ;
388
361
if ( cell . metadata . run_control === undefined )
389
362
cell . metadata . run_control = { } ;
390
363
setCell ( cell , ! cell . metadata . run_control . marked ) ;
@@ -396,12 +369,9 @@ define([
396
369
* @returns {boolean } true if marked
397
370
*/
398
371
var is_marked = function ( cell ) {
399
- if ( cell . metadata . run_control !== undefined ) {
400
- if ( cell . metadata . run_control . marked === true ) {
401
- return true ;
402
- }
403
- }
404
- return false ;
372
+ return ( cell instanceof codecell . CodeCell ) &&
373
+ cell . metadata . run_control !== undefined &&
374
+ cell . metadata . run_control . marked ;
405
375
} ;
406
376
407
377
/**
@@ -443,10 +413,10 @@ define([
443
413
*
444
414
*/
445
415
var run_all_cells_ignore_errors = function ( ) {
446
- for ( var i = 0 ; i < Jupyter . notebook . ncells ( ) ; i ++ ) {
447
- Jupyter . notebook . select ( i ) ;
448
- var cell = Jupyter . notebook . get_selected_cell ( ) ;
449
- cell . execute ( false ) ;
416
+ var cells = Jupyter . notebook . get_cells ( ) ;
417
+ var ncells = cells . length ;
418
+ for ( var i = 0 ; i < ncells ; i ++ ) {
419
+ cells [ i ] . execute ( false ) ;
450
420
}
451
421
} ;
452
422
@@ -715,8 +685,8 @@ define([
715
685
* Initialize all cells with new gutter
716
686
*/
717
687
var initGutter = function ( ) {
718
- var ncells = Jupyter . notebook . ncells ( ) ;
719
688
var cells = Jupyter . notebook . get_cells ( ) ;
689
+ var ncells = cells . length ;
720
690
for ( var i = 0 ; i < ncells ; i ++ ) {
721
691
var cell = cells [ i ] ;
722
692
if ( cell instanceof codecell . CodeCell ) {
@@ -726,12 +696,9 @@ define([
726
696
cell . code_mirror . setOption ( 'gutters' , gutters ) ;
727
697
}
728
698
}
729
- }
730
- /**
731
- * Restore hide/show status after reload
732
- */
733
- for ( i = 0 ; i < ncells ; i ++ ) {
734
- var cell = cells [ i ] ;
699
+ /**
700
+ * Restore hide/show status after reload
701
+ */
735
702
if ( cell . metadata . hasOwnProperty ( 'hide_input' ) && cell . metadata . hide_input === true )
736
703
showCell ( cell , 'i' , false ) ;
737
704
if ( cell . metadata . hasOwnProperty ( 'hide_output' ) && cell . metadata . hide_output === true )
0 commit comments