Skip to content

Commit f106638

Browse files
committed
[ExecuteTime] add menu items to clear all/selected cells' timing data
1 parent d7f4b63 commit f106638

File tree

1 file changed

+63
-27
lines changed
  • src/jupyter_contrib_nbextensions/nbextensions/execute_time

1 file changed

+63
-27
lines changed

src/jupyter_contrib_nbextensions/nbextensions/execute_time/ExecuteTime.js

Lines changed: 63 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -79,60 +79,96 @@ define([
7979
};
8080
}
8181

82-
function toggle_timing_display (cell, vis) {
83-
if (cell instanceof CodeCell) {
84-
var ce = cell.element;
85-
var timing_area = ce.find('.timing_area');
86-
if (timing_area.length > 0) {
87-
if (vis === undefined) {
88-
vis = !timing_area.is(':visible');
82+
function toggle_timing_display (cells, vis) {
83+
for (var i = 0; i < cells.length; i++) {
84+
var cell = cells[i];
85+
if (cell instanceof CodeCell) {
86+
var ce = cell.element;
87+
var timing_area = ce.find('.timing_area');
88+
if (timing_area.length > 0) {
89+
if (vis === undefined) {
90+
vis = !timing_area.is(':visible');
91+
}
92+
timing_area.toggle(vis);
93+
return vis;
8994
}
90-
timing_area.toggle(vis);
91-
return vis;
9295
}
9396
}
9497
}
9598

96-
function toggle_timing_display_multiple (cells, vis) {
97-
for (var i = 0; i < cells.length; i++) {
98-
if (cells[i] instanceof CodeCell) {
99-
vis = toggle_timing_display(cells[i], vis);
100-
}
101-
}
99+
function clear_timing_data (cells) {
100+
cells.forEach(function (cell, idx, arr) {
101+
delete cell.metadata.ExecuteTime;
102+
cell.element.find('.timing_area').remove();
103+
});
104+
events.trigger('set_dirty.Notebook', {value: true});
102105
}
103106

104-
function toggle_timing_display_selected () {
105-
toggle_timing_display_multiple(Jupyter.notebook.get_selected_cells());
107+
function clear_timing_data_all () {
108+
console.log(log_prefix, 'Clearing all timing data');
109+
clear_timing_data(Jupyter.notebook.get_cells());
106110
}
107111

108112
function create_menu () {
109-
var menu_toggle_timings = $('<li/>')
113+
var timings_menu_item = $('<li/>')
110114
.addClass('dropdown-submenu')
111115
.append(
112-
$('<a/>').text('Toggle timings')
116+
$('<a/>').text('Execution Timings')
113117
)
114118
.appendTo($('#cell_menu'));
115119

116120
var timings_submenu = $('<ul/>')
117121
.addClass('dropdown-menu')
118-
.appendTo(menu_toggle_timings);
122+
.appendTo(timings_menu_item);
119123

120124
$('<li/>')
121125
.attr('title', 'Toggle the timing box for the selected cell(s)')
122126
.append(
123-
$('<a/>')
124-
.text('Selected')
125-
.on('click', toggle_timing_display_selected)
127+
$('<a href="#">')
128+
.text('Toggle visibility (selected)')
129+
.on('click', function (evt) {
130+
evt.preventDefault();
131+
evt.stopPropagation();
132+
toggle_timing_display(Jupyter.notebook.get_selected_cells());
133+
})
126134
)
127135
.appendTo(timings_submenu);
128136

129137
$('<li/>')
130138
.attr('title', 'Toggle the timing box for all cells')
131139
.append(
132-
$('<a/>')
133-
.text('All')
140+
$('<a href="#">')
141+
.text('Toggle visibility (all)')
142+
.on('click', function (evt) {
143+
evt.preventDefault();
144+
evt.stopPropagation();
145+
toggle_timing_display(Jupyter.notebook.get_cells());
146+
})
147+
)
148+
.appendTo(timings_submenu);
149+
150+
$('<li/>')
151+
.attr('title', 'Clear the selected cell(s) timing data')
152+
.append(
153+
$('<a href="#">')
154+
.text('Clear (selected)')
155+
.on('click', function (evt) {
156+
evt.preventDefault();
157+
evt.stopPropagation();
158+
clear_timing_data(Jupyter.notebook.get_selected_cells());
159+
})
160+
)
161+
.appendTo(timings_submenu);
162+
163+
$('<li/>')
164+
.attr('title', 'Clear the timing data from all cells')
165+
.append(
166+
$('<a href="#">')
167+
.text('Clear (all)')
134168
.on('click', function (evt) {
135-
toggle_timing_display_multiple(Jupyter.notebook.get_cells());
169+
evt.preventDefault();
170+
evt.stopPropagation();
171+
clear_timing_data(Jupyter.notebook.get_cells());
136172
})
137173
)
138174
.appendTo(timings_submenu);
@@ -209,7 +245,7 @@ define([
209245
if (timing_area.length < 1) {
210246
timing_area = $('<div/>')
211247
.addClass('timing_area' + (options.display_right_aligned ? ' text-right' : ''))
212-
.on('dblclick', function (evt) { toggle_timing_display(cell); })
248+
.on('dblclick', function (evt) { toggle_timing_display([cell]); })
213249
.appendTo(cell.element.find('.input_area'));
214250
}
215251

0 commit comments

Comments
 (0)