Skip to content

Commit 4dfacb7

Browse files
committed
[exercise,exercise2] use bootstrap hidden class
rather than jquery show/hide, in order to play nicely with collapsible_headings fixes #990
1 parent 5c077f5 commit 4dfacb7

File tree

2 files changed

+12
-20
lines changed
  • src/jupyter_contrib_nbextensions/nbextensions

2 files changed

+12
-20
lines changed

src/jupyter_contrib_nbextensions/nbextensions/exercise/main.js

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
// Hide or display solutions in a notebook
55

66
/*
7+
December 6, 2017 @jcb91: use bootstrap 'hidden' class to play nicely with collapsible_headings
78
December 30, 2015: update to 4.1
89
Update december 22, 2015:
910
Added the metadata solution_first to mark the beginning of an exercise. It is now possible to have several consecutive exercises.
@@ -48,7 +49,7 @@ define([
4849
IPython.notebook.select_next();
4950
cell = IPython.notebook.get_selected_cell();
5051
while (cell_index++<ncells & cell.metadata.solution !=undefined & cell.metadata.solution_first !=true) {
51-
cell.element.show();
52+
cell.element.removeClass('hidden');
5253
cell.metadata.solution = "shown";
5354
IPython.notebook.select_next();
5455
cell = IPython.notebook.get_selected_cell();
@@ -60,7 +61,7 @@ define([
6061
IPython.notebook.select_next();
6162
cell = IPython.notebook.get_selected_cell();
6263
while (cell_index++<ncells & cell.metadata.solution !=undefined & cell.metadata.solution_first !=true) {
63-
cell.element.hide();
64+
cell.element.addClass('hidden');
6465
cell.metadata.solution = "hidden"
6566
IPython.notebook.select_next();
6667
cell = IPython.notebook.get_selected_cell();
@@ -93,7 +94,7 @@ define([
9394
delete cell.metadata.solution_first;
9495
while (cell.metadata.solution != undefined & cell.metadata.solution_first !=true ) {
9596
delete cell.metadata.solution;
96-
cell.element.show();
97+
cell.element.removeClass('hidden');
9798
IPython.notebook.select_next();
9899
cell = IPython.notebook.get_selected_cell()
99100
}
@@ -123,7 +124,7 @@ define([
123124
cell = lcells[k];
124125
//console.log("new cell:", icells[k]);
125126
cell.element.css({"background-color": "#ffffff"});
126-
cell.element.hide();
127+
cell.element.addClass('hidden');
127128
cell.metadata.solution = "hidden";
128129
}
129130
}
@@ -183,12 +184,7 @@ function load_ipython_extension(){
183184
for(var i in cells){
184185
var cell = cells[i];
185186
if (found_solution == true && typeof cell.metadata.solution != "undefined" && cell.metadata.solution_first !=true) {
186-
if (cell.metadata.solution === "hidden") {
187-
cell.element.hide()
188-
}
189-
else {
190-
cell.element.show()
191-
}
187+
cell.element.toggleClass('hidden', cell.metadata.solution === 'hidden');
192188
} else {
193189
found_solution = false
194190
}

src/jupyter_contrib_nbextensions/nbextensions/exercise2/main.js

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33

44
// Hide or display solutions in a notebook
55

6+
// dec 6, 2017 @jcb91: use bootstrap 'hidden' class to play nicely with collapsible_headings
67
// december 30, 2015: update to notebook 4.1.x
78
// updated on december 22, 2015 to allow consecutive exercises
89
// exercise2: built by @jfbercher from an earlier work by @junasch october 2015) - see readme.md
@@ -16,7 +17,7 @@
1617
IPython.notebook.select_next();
1718
cell = IPython.notebook.get_selected_cell();
1819
while (cell_index++<ncells & cell.metadata.solution2 !=undefined & cell.metadata.solution2_first !=true) {
19-
cell.element.show();
20+
cell.element.removeClass('hidden');
2021
cell.metadata.solution2 = "shown";
2122
IPython.notebook.select_next();
2223
cell = IPython.notebook.get_selected_cell();
@@ -31,7 +32,7 @@
3132
IPython.notebook.select_next();
3233
cell = IPython.notebook.get_selected_cell();
3334
while (cell_index++<ncells & cell.metadata.solution2 !=undefined & cell.metadata.solution2_first !=true) {
34-
cell.element.hide();
35+
cell.element.addClass('hidden');
3536
cell.metadata.solution2 = "hidden";
3637
IPython.notebook.select_next();
3738
cell = IPython.notebook.get_selected_cell();
@@ -105,7 +106,7 @@ id=\"myCheck' + cbx + '\" >\
105106
delete cell.metadata.solution2_first;
106107
while (cell.metadata.solution2 != undefined & cell.metadata.solution2_first !=true) {
107108
delete cell.metadata.solution2;
108-
cell.element.show();
109+
cell.element.removeClass('hidden');
109110
IPython.notebook.select_next();
110111
cell = IPython.notebook.get_selected_cell()
111112
}
@@ -119,7 +120,7 @@ id=\"myCheck' + cbx + '\" >\
119120
for (var k = 1; k < lcells.length; k++){
120121
cell = lcells[k];
121122
cell.element.css({"background-color": "#ffffff"});
122-
cell.element.hide();
123+
cell.element.addClass('hidden');
123124
cell.metadata.solution2 = "hidden";
124125
}
125126
IPython.notebook.select(icells[0]); //select first cell in the list
@@ -167,12 +168,7 @@ function load_ipython_extension(){
167168
for(var i in cells){
168169
var cell = cells[i];
169170
if (found_solution == true && typeof cell.metadata.solution2 != "undefined" && cell.metadata.solution2_first !=true) {
170-
if (cell.metadata.solution2 === "hidden") {
171-
cell.element.hide();
172-
}
173-
else {
174-
cell.element.show();
175-
}
171+
cell.element.toggleClass('hidden', cell.metadata.solution2 === 'hidden');
176172
} else {
177173
found_solution = false
178174
}

0 commit comments

Comments
 (0)