diff --git a/IPython/frontend/html/notebook/static/js/codecell.js b/IPython/frontend/html/notebook/static/js/codecell.js index 83ebd3744..b557e29ab 100644 --- a/IPython/frontend/html/notebook/static/js/codecell.js +++ b/IPython/frontend/html/notebook/static/js/codecell.js @@ -364,9 +364,41 @@ var IPython = (function (IPython) { } - CodeCell.prototype.clear_output = function () { - this.element.find("div.output").html(""); - this.outputs = []; + CodeCell.prototype.clear_output = function (stdout, stderr, other) { + var output_div = this.element.find("div.output"); + if (stdout && stderr && other){ + // clear all, no need for logic + output_div.html(""); + this.outputs = []; + return; + } + // remove html output + // each output_subarea that has an identifying class is in an output_area + // which is the element to be removed. + if (stdout){ + output_div.find("div.output_stdout").parent().remove(); + } + if (stderr){ + output_div.find("div.output_stderr").parent().remove(); + } + if (other){ + output_div.find("div.output_subarea").not("div.output_stderr").not("div.output_stdout").parent().remove(); + } + + // remove cleared outputs from JSON list: + for (var i = this.outputs.length - 1; i >= 0; i--){ + var out = this.outputs[i]; + var output_type = out.output_type; + if (output_type == "display_data" && other){ + this.outputs.splice(i,1); + }else if (output_type == "stream"){ + if (stdout && out.stream == "stdout"){ + this.outputs.splice(i,1); + }else if (stderr && out.stream == "stderr"){ + this.outputs.splice(i,1); + } + } + } }; diff --git a/IPython/frontend/html/notebook/static/js/notebook.js b/IPython/frontend/html/notebook/static/js/notebook.js index 29b7487b3..0cc2e2080 100644 --- a/IPython/frontend/html/notebook/static/js/notebook.js +++ b/IPython/frontend/html/notebook/static/js/notebook.js @@ -627,7 +627,7 @@ var IPython = (function (IPython) { var cells = this.cells(); for (var i=0; i