forked from ipython/ipython
-
Notifications
You must be signed in to change notification settings - Fork 1
/
communicate.js
95 lines (92 loc) · 2.99 KB
/
communicate.js
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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
function CometGetter() {
this.start()
this.request()
}
CometGetter.prototype.request = function () {
var thisObj = this
$.ajax({
success: function (json, status, request) {
if (json != null)
thisObj.complete(json, status, request)
},
error: function (request, status, error) {
statusbar.set("dead")
}
})
}
CometGetter.prototype.complete = function(json, status, request) {
this.request()
this.process(json)
}
CometGetter.prototype.process = function (json) {
var thisObj = this
if (json.msg_type == "status") {
statusbar.set(json.content.execution_state)
} else if (this.pause) {
setTimeout(function () { thisObj.process(json) }, 1)
} else {
//$("#messages").append("<div class='headers'>"+json.msg_type+": "+json.parent_header.msg_id+"</div>")
var id = json.parent_header.msg_id
var msg = manager.get( id, json.parent_header.session)
if (json.msg_type == "stream") {
msg.setOutput(id, fixConsole(json.content.data))
} else if (json.msg_type == "pyin") {
if (json.parent_header.session != session)
msg.setInput(id, fixConsole(json.content.code))
} else if (json.msg_type == "pyout") {
exec_count = json.content.execution_count
msg.num = json.content.execution_count
msg.setOutput(id, fixConsole(json.content.data), true)
} else if (json.msg_type == "pyerr") {
msg.setOutput(id, fixConsole(json.content.traceback.join("\n")))
}
}
}
CometGetter.prototype.start = function () {
this.pause = false
}
CometGetter.prototype.stop = function () {
this.pause = true
}
function heartbeat() {
$.ajax({
type: "POST",
data: {client_id:client_id, type:"heartbeat"},
success: function() {
setTimeout(heartbeat, 60000)
}
})
}
function execute(code, postfunc) {
comet.stop()
$.ajax({
type: "POST",
data: {type:"execute", code:code},
success: function(json, status, request) {
comet.start()
if (json != null) {
var id = json.parent_header.msg_id
exec_count = json.content.execution_count
if (typeof(postfunc) != "undefined")
postfunc(json)
if (json.content.payload.length > 0 &&
json.content.payload[0]['format'] == "svg") {
var svg = $(document.createElement('div'))
svg.html(json.content.payload[0]['data'])
manager.get(id).setOutput(id, svg)
}
//Open a new input object
manager.get().activate()
}
}
})
}
function tabcomplete(code, pos, func) {
$.ajax({
type:"POST",
data: {type:"complete", code:code, pos:pos},
success: function(json, status, request) {
func(json.content.matches)
}
})
}