Skip to content

Commit 73bcd4d

Browse files
committed
Comments / Review
1 parent ec8e70c commit 73bcd4d

File tree

1 file changed

+14
-9
lines changed

1 file changed

+14
-9
lines changed

packages/javascript/jupyterlab-plotly/src/javascript-renderer-extension.ts

+14-9
Original file line numberDiff line numberDiff line change
@@ -42,11 +42,12 @@ export class RenderedPlotly extends Widget implements IRenderMime.IRenderer {
4242
this.addClass(CSS_CLASS);
4343
this._mimeType = options.mimeType;
4444

45+
// Create image element
4546
this._img_el = <HTMLImageElement>(document.createElement("img"));
4647
this._img_el.className = 'plot-img';
4748
this.node.appendChild(this._img_el);
4849

49-
// Install hover callback
50+
// Install image hover callback
5051
this._img_el.addEventListener('mouseenter', event => {
5152
this.createGraph(this._model);
5253
})
@@ -62,12 +63,14 @@ export class RenderedPlotly extends Widget implements IRenderMime.IRenderer {
6263
return Promise.resolve();
6364
}
6465

66+
// Save off reference to model so that we can regenerate the plot later
6567
this._model = model;
6668

69+
// Check for PNG data in mime bundle
6770
const png_data = <string>model.data['image/png'];
6871
if(png_data !== undefined && png_data !== null) {
6972
// We have PNG data, use it
70-
this.createImage(png_data);
73+
this.updateImage(png_data);
7174
return Promise.resolve();
7275
} else {
7376
// Create a new graph
@@ -76,41 +79,43 @@ export class RenderedPlotly extends Widget implements IRenderMime.IRenderer {
7679
}
7780

7881
private hasGraphElement() {
82+
// Check for the presence of the .plot-container element that plotly.js
83+
// places at the top of the figure structure
7984
return this.node.querySelector('.plot-container') !== null
8085
}
8186

82-
private createImage(png_data: string) {
87+
private updateImage(png_data: string) {
8388
this.hideGraph();
8489
this._img_el.src = "data:image/png;base64," + <string>png_data;
8590
this.showImage();
8691
}
8792

8893
private hideGraph() {
89-
// Hide any graph
94+
// Hide the graph if there is one
9095
let el = <HTMLDivElement>this.node.querySelector('.plot-container');
9196
if (el !== null && el !== undefined) {
9297
el.style.display = "none"
9398
}
9499
}
95100

96101
private showGraph() {
97-
// Hide any graph
102+
// Show the graph if there is one
98103
let el = <HTMLDivElement>this.node.querySelector('.plot-container');
99104
if (el !== null && el !== undefined) {
100105
el.style.display = "block"
101106
}
102107
}
103108

104109
private hideImage() {
105-
// Hide any graph
110+
// Hide the image element
106111
let el = <HTMLImageElement>this.node.querySelector('.plot-img');
107112
if (el !== null && el !== undefined) {
108113
el.style.display = "none"
109114
}
110115
}
111116

112117
private showImage() {
113-
// Hide any graph
118+
// Show the image element
114119
let el = <HTMLImageElement>this.node.querySelector('.plot-img');
115120
if (el !== null && el !== undefined) {
116121
el.style.display = "block"
@@ -147,12 +152,12 @@ export class RenderedPlotly extends Widget implements IRenderMime.IRenderer {
147152
});
148153
}
149154

150-
155+
// Handle webgl context lost events
151156
(<Plotly.PlotlyHTMLElement>(this.node)).on('plotly_webglcontextlost', () => {
152157
const png_data = <string>model.data['image/png'];
153158
if(png_data !== undefined && png_data !== null) {
154159
// We have PNG data, use it
155-
this.createImage(png_data);
160+
this.updateImage(png_data);
156161
return Promise.resolve();
157162
}
158163
});

0 commit comments

Comments
 (0)