@@ -24,63 +24,6 @@ define([
24
24
var table_of_contents = toc2 . table_of_contents ;
25
25
var toggle_toc = toc2 . toggle_toc ;
26
26
27
- // ...........Parameters configuration......................
28
- // default values for system-wide configurable parameters
29
- var cfg = { 'threshold' :4 ,
30
- 'navigate_menu' :true ,
31
- 'markTocItemOnScroll' : true ,
32
- 'moveMenuLeft' : true ,
33
- 'widenNotebook' : false ,
34
- 'colors' : {
35
- 'hover_highlight' : '#DAA520' ,
36
- 'selected_highlight' : '#FFD700' ,
37
- 'running_highlight' : '#FF0000' ,
38
- 'wrapper_background' : '#FFFFFF' ,
39
- 'sidebar_border' : '#EEEEEE' ,
40
- 'navigate_text' : '#333333' ,
41
- 'navigate_num' : '#000000' ,
42
- 'on_scroll' : '#2447f0' ,
43
- } ,
44
- collapse_to_match_collapsible_headings : false ,
45
- }
46
- // default values for per-notebook configurable parameters
47
- var metadata_settings = {
48
- nav_menu : { } ,
49
- number_sections : true ,
50
- sideBar : true ,
51
- skip_h1_title : false ,
52
- title_cell : 'Table of Contents' ,
53
- title_sidebar : 'Contents' ,
54
- toc_cell : false ,
55
- toc_position : { } ,
56
- toc_section_display : true ,
57
- toc_window_display : false ,
58
- } ;
59
- // add per-notebook settings into global config object
60
- $ . extend ( true , cfg , metadata_settings ) ;
61
-
62
- var read_config = function ( cfg , callback ) {
63
- IPython . notebook . config . loaded . then ( function ( ) {
64
- // config may be specified at system level or at document level.
65
- // first, update defaults with config loaded from server
66
- $ . extend ( true , cfg , IPython . notebook . config . data . toc2 ) ;
67
- // ensure notebook metadata has toc object, cache old values
68
- var md = IPython . notebook . metadata . toc || { } ;
69
- // reset notebook metadata to remove old values
70
- IPython . notebook . metadata . toc = { } ;
71
- // then update cfg with any found in current notebook metadata
72
- // and save in nb metadata (then can be modified per document)
73
- Object . keys ( metadata_settings ) . forEach ( function ( key ) {
74
- cfg [ key ] = IPython . notebook . metadata . toc [ key ] = ( md . hasOwnProperty ( key ) ? md : cfg ) [ key ] ;
75
- } ) ;
76
- // create highlights style section in document
77
- create_additional_css ( ) ;
78
- // call callbacks
79
- callback && callback ( ) ;
80
- } ) ;
81
- return cfg ;
82
- } ;
83
-
84
27
// extra download as html with toc menu (needs IPython kernel)
85
28
function addSaveAsWithToc ( ) {
86
29
if ( IPython . notebook . metadata . kernelspec . language == 'python' ) {
@@ -106,28 +49,19 @@ define([
106
49
}
107
50
}
108
51
109
-
110
-
111
- // **********************************************************************
112
-
113
- //***********************************************************************
114
- // ----------------------------------------------------------------------
115
-
116
- function toggleToc ( ) {
117
- toggle_toc ( cfg )
118
- }
119
-
120
- var toc_button = function ( ) {
52
+ var toc_button = function ( cfg ) {
121
53
if ( ! IPython . toolbar ) {
122
- events . on ( "app_initialized.NotebookApp" , toc_button ) ;
54
+ events . on ( "app_initialized.NotebookApp" , function ( evt ) {
55
+ toc_button ( cfg ) ;
56
+ } ) ;
123
57
return ;
124
58
}
125
59
if ( $ ( "#toc_button" ) . length === 0 ) {
126
60
$ ( IPython . toolbar . add_buttons_group ( [
127
61
Jupyter . keyboard_manager . actions . register ( {
128
62
'help' : 'Table of Contents' ,
129
63
'icon' : 'fa-list' ,
130
- 'handler' : toggleToc ,
64
+ 'handler' : function ( ) { toggle_toc ( cfg ) ; } ,
131
65
} , 'toggle-toc' , 'toc2' )
132
66
] ) ) . find ( '.btn' ) . attr ( 'id' , 'toc_button' ) ;
133
67
}
@@ -141,8 +75,7 @@ define([
141
75
document . getElementsByTagName ( "head" ) [ 0 ] . appendChild ( link ) ;
142
76
} ;
143
77
144
-
145
- function create_additional_css ( ) {
78
+ function create_additional_css ( cfg ) {
146
79
var sheet = document . createElement ( 'style' )
147
80
sheet . innerHTML = "#toc li > span:hover { background-color: " + cfg . colors . hover_highlight + " }\n" +
148
81
".toc-item-highlight-select {background-color: " + cfg . colors . selected_highlight + "}\n" +
@@ -207,16 +140,20 @@ define([
207
140
208
141
var toc_init = function ( ) {
209
142
// read configuration, then call toc
210
- cfg = read_config ( cfg , function ( ) {
143
+ IPython . notebook . config . loaded . then ( function ( ) {
144
+ var cfg = toc2 . read_config ( ) ;
145
+ // create highlights style section in document
146
+ create_additional_css ( cfg ) ;
147
+ // call main function with newly loaded config
211
148
table_of_contents ( cfg ) ;
212
- } ) ; // called after config is stable
213
- // event: render toc for each markdown cell modification
214
- events . on ( "rendered.MarkdownCell" ,
215
- function ( evt , data ) {
149
+ // event: render toc for each markdown cell modification
150
+ events . on ( "rendered.MarkdownCell" , function ( evt , data ) {
216
151
table_of_contents ( cfg ) ; // recompute the toc
217
152
rehighlight_running_cells ( ) // re-highlight running cells
218
153
highlight_toc_item ( evt , data ) ; // and of course the one currently rendered
219
154
} ) ;
155
+ } ) ;
156
+
220
157
// event: on cell selection, highlight the corresponding item
221
158
events . on ( 'select.Cell' , highlight_toc_item ) ;
222
159
// event: if kernel_ready (kernel change/restart): add/remove a menu item
@@ -226,13 +163,11 @@ define([
226
163
227
164
// add a save as HTML with toc included
228
165
addSaveAsWithToc ( ) ;
229
- //
230
166
// Highlight cell on execution
231
167
patch_CodeCell_get_callbacks ( )
232
- events . on ( 'execute.CodeCell' , excute_codecell_callback ) ;
168
+ events . on ( 'execute.CodeCell' , highlight_toc_item ) ;
233
169
}
234
170
235
-
236
171
var load_ipython_extension = function ( ) {
237
172
load_css ( ) ; //console.log("Loading css")
238
173
toc_button ( ) ; //console.log("Adding toc_button")
0 commit comments