widget_output.js
64 lines
| 2.0 KiB
| application/javascript
|
JavascriptLexer
Jonathan Frederic
|
r18953 | // Copyright (c) IPython Development Team. | ||
// Distributed under the terms of the Modified BSD License. | ||||
define([ | ||||
"widgets/js/widget", | ||||
"jquery", | ||||
'notebook/js/outputarea', | ||||
Jonathan Frederic
|
r18958 | ], function(widget, $, outputarea) { | ||
'use strict'; | ||||
Jonathan Frederic
|
r18953 | |||
var OutputView = widget.DOMWidgetView.extend({ | ||||
Jonathan Frederic
|
r20060 | /** | ||
* Public constructor | ||||
*/ | ||||
Jonathan Frederic
|
r18953 | initialize: function (parameters) { | ||
OutputView.__super__.initialize.apply(this, [parameters]); | ||||
this.model.on('msg:custom', this._handle_route_msg, this); | ||||
}, | ||||
Jonathan Frederic
|
r20060 | /** | ||
* Called when view is rendered. | ||||
*/ | ||||
Jonathan Frederic
|
r18953 | render: function(){ | ||
this.output_area = new outputarea.OutputArea({ | ||||
selector: this.$el, | ||||
prompt_area: false, | ||||
events: this.model.widget_manager.notebook.events, | ||||
keyboard_manager: this.model.widget_manager.keyboard_manager }); | ||||
Jonathan Frederic
|
r18954 | |||
// Make output area reactive. | ||||
var that = this; | ||||
this.output_area.element.on('changed', function() { | ||||
that.model.set('contents', that.output_area.element.html()); | ||||
}); | ||||
this.model.on('change:contents', function(){ | ||||
var html = this.model.get('contents'); | ||||
if (this.output_area.element.html() != html) { | ||||
this.output_area.element.html(html); | ||||
} | ||||
}, this); | ||||
// Set initial contents. | ||||
this.output_area.element.html(this.model.get('contents')); | ||||
Jonathan Frederic
|
r18953 | }, | ||
Jonathan Frederic
|
r20060 | /** | ||
* Handles re-routed iopub messages. | ||||
*/ | ||||
Jonathan Frederic
|
r20072 | _handle_route_msg: function(msg) { | ||
if (msg) { | ||||
var msg_type = msg.msg_type; | ||||
Jonathan Frederic
|
r20060 | if (msg_type=='clear_output') { | ||
Jonathan Frederic
|
r20072 | this.output_area.handle_clear_output(msg); | ||
Jonathan Frederic
|
r20060 | } else { | ||
Jonathan Frederic
|
r20072 | this.output_area.handle_output(msg); | ||
Jonathan Frederic
|
r18953 | } | ||
} | ||||
}, | ||||
}); | ||||
return { | ||||
'OutputView': OutputView, | ||||
}; | ||||
}); | ||||