Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
var widgets = require('@jupyter-widgets/base');
var _ = require('lodash');
import ParaViewWebClient from 'paraviewweb/src/IO/WebSocket/ParaViewWebClient';
import RemoteRenderer from 'paraviewweb/src/NativeUI/Canvas/RemoteRenderer';
import SizeHelper from "paraviewweb/src/Common/Misc/SizeHelper";
import SmartConnect from 'wslink/src/SmartConnect';
export var RemoteRendererModel = widgets.DOMWidgetModel.extend({
defaults: _.extend(widgets.DOMWidgetModel.prototype.defaults(), {
_model_name: 'RemoteRendererModel',
_view_name: 'RemoteRendererView',
_model_module: 'pvlink',
_view_module: 'pvlink',
_model_module_version: '0.1.0',
_view_module_version: '0.1.0',
})
});
export var RemoteRendererView = widgets.DOMWidgetView.extend({
render: function () {
var that = this;
// div to hold the canvas of the RemoteRenderer.
var render_div = document.createElement('div');
render_div.style.height = '100%';
render_div.style.width = '100%';
this.el.appendChild(render_div);
/* Get configuration for SmartConnect.
* SmartConnect will establish a direct
* WebSocket connection using Autobahn.
*/
var config = {
sessionURL: this.model.get('sessionURL'),
secret: this.model.get('authKey')
};
var smartConnect = SmartConnect.newInstance({ config: config });
smartConnect.onConnectionReady(function (connection) {
// Create the RemoteRenderer
var pvwClient = ParaViewWebClient.createClient(connection, [
'MouseHandler',
'ViewPort',
'ViewPortImageDelivery']
);
var renderer = new RemoteRenderer(pvwClient);
renderer.setContainer(render_div);
renderer.setView(that.model.get('viewID'));
renderer.onImageReady(function () {
// Resize when the renderer is placed within a widget.
if (that.el.style.width != '100%') {
that.el.style.width = '100%';
renderer.resize();
}
console.log("We are good.");
});
// Handle size changes when the entire window is resized.
SizeHelper.onSizeChange(function () {
renderer.resize();
});
SizeHelper.startListening();
// Explicit render called from python side.
that.model.on('change:_update', function () {
renderer.render(true);
}, that);
});
smartConnect.connect();
},
});