Show More
@@ -42,8 +42,8 b' define(["components/underscore/underscore-min",' | |||||
42 | comm.model = this; |
|
42 | comm.model = this; | |
43 |
|
43 | |||
44 | // Hook comm messages up to model. |
|
44 | // Hook comm messages up to model. | |
45 | comm.on_close($.proxy(this.handle_comm_closed, this)); |
|
45 | comm.on_close($.proxy(this._handle_comm_closed, this)); | |
46 | comm.on_msg($.proxy(this.handle_comm_msg, this)); |
|
46 | comm.on_msg($.proxy(this._handle_comm_msg, this)); | |
47 |
|
47 | |||
48 | return Backbone.Model.apply(this); |
|
48 | return Backbone.Model.apply(this); | |
49 | }, |
|
49 | }, | |
@@ -65,7 +65,64 b' define(["components/underscore/underscore-min",' | |||||
65 | }, |
|
65 | }, | |
66 |
|
66 | |||
67 |
|
67 | |||
68 | handle_status: function (cell, msg) { |
|
68 | // Handle when a widget is closed. | |
|
69 | _handle_comm_closed: function (msg) { | |||
|
70 | for (var cell in this.views) { | |||
|
71 | var views = this.views[cell]; | |||
|
72 | for (var view_index in views) { | |||
|
73 | var view = views[view_index]; | |||
|
74 | view.remove(); | |||
|
75 | } | |||
|
76 | } | |||
|
77 | }, | |||
|
78 | ||||
|
79 | ||||
|
80 | // Handle incomming comm msg. | |||
|
81 | _handle_comm_msg: function (msg) { | |||
|
82 | var method = msg.content.data.method; | |||
|
83 | switch (method){ | |||
|
84 | case 'display': | |||
|
85 | ||||
|
86 | // Try to get the cell index. | |||
|
87 | var cell = this._get_msg_cell(msg.parent_header.msg_id); | |||
|
88 | if (cell == null) { | |||
|
89 | console.log("Could not determine where the display" + | |||
|
90 | " message was from. Widget will not be displayed") | |||
|
91 | } else { | |||
|
92 | this._display_view(msg.content.data.view_name, | |||
|
93 | msg.content.data.parent, | |||
|
94 | cell); | |||
|
95 | } | |||
|
96 | break; | |||
|
97 | case 'update': | |||
|
98 | this._handle_update(msg.content.data.state); | |||
|
99 | break; | |||
|
100 | } | |||
|
101 | }, | |||
|
102 | ||||
|
103 | ||||
|
104 | // Handle when a widget is updated via the python side. | |||
|
105 | _handle_update: function (state) { | |||
|
106 | this.updating = true; | |||
|
107 | try { | |||
|
108 | for (var key in state) { | |||
|
109 | if (state.hasOwnProperty(key)) { | |||
|
110 | if (key == "_css"){ | |||
|
111 | this.css = state[key]; | |||
|
112 | } else { | |||
|
113 | this.set(key, state[key]); | |||
|
114 | } | |||
|
115 | } | |||
|
116 | } | |||
|
117 | this.id = this.comm.comm_id; | |||
|
118 | this.save(); | |||
|
119 | } finally { | |||
|
120 | this.updating = false; | |||
|
121 | } | |||
|
122 | }, | |||
|
123 | ||||
|
124 | ||||
|
125 | _handle_status: function (cell, msg) { | |||
69 | //execution_state : ('busy', 'idle', 'starting') |
|
126 | //execution_state : ('busy', 'idle', 'starting') | |
70 | if (msg.content.execution_state=='idle') { |
|
127 | if (msg.content.execution_state=='idle') { | |
71 |
|
128 | |||
@@ -90,7 +147,7 b' define(["components/underscore/underscore-min",' | |||||
90 |
|
147 | |||
91 |
|
148 | |||
92 | // Custom syncronization logic. |
|
149 | // Custom syncronization logic. | |
93 | handle_sync: function (method, options) { |
|
150 | _handle_sync: function (method, options) { | |
94 | var model_json = this.toJSON(); |
|
151 | var model_json = this.toJSON(); | |
95 |
|
152 | |||
96 | // Only send updated state if the state hasn't been changed |
|
153 | // Only send updated state if the state hasn't been changed | |
@@ -142,65 +199,8 b' define(["components/underscore/underscore-min",' | |||||
142 | }, |
|
199 | }, | |
143 |
|
200 | |||
144 |
|
201 | |||
145 | // Handle incomming comm msg. |
|
|||
146 | handle_comm_msg: function (msg) { |
|
|||
147 | var method = msg.content.data.method; |
|
|||
148 | switch (method){ |
|
|||
149 | case 'display': |
|
|||
150 |
|
||||
151 | // Try to get the cell index. |
|
|||
152 | var cell = this._get_msg_cell(msg.parent_header.msg_id); |
|
|||
153 | if (cell == null) { |
|
|||
154 | console.log("Could not determine where the display" + |
|
|||
155 | " message was from. Widget will not be displayed") |
|
|||
156 | } else { |
|
|||
157 | this.display_view(msg.content.data.view_name, |
|
|||
158 | msg.content.data.parent, |
|
|||
159 | cell); |
|
|||
160 | } |
|
|||
161 | break; |
|
|||
162 | case 'update': |
|
|||
163 | this.handle_update(msg.content.data.state); |
|
|||
164 | break; |
|
|||
165 | } |
|
|||
166 | }, |
|
|||
167 |
|
||||
168 |
|
||||
169 | // Handle when a widget is updated via the python side. |
|
|||
170 | handle_update: function (state) { |
|
|||
171 | this.updating = true; |
|
|||
172 | try { |
|
|||
173 | for (var key in state) { |
|
|||
174 | if (state.hasOwnProperty(key)) { |
|
|||
175 | if (key == "_css"){ |
|
|||
176 | this.css = state[key]; |
|
|||
177 | } else { |
|
|||
178 | this.set(key, state[key]); |
|
|||
179 | } |
|
|||
180 | } |
|
|||
181 | } |
|
|||
182 | this.id = this.comm.comm_id; |
|
|||
183 | this.save(); |
|
|||
184 | } finally { |
|
|||
185 | this.updating = false; |
|
|||
186 | } |
|
|||
187 | }, |
|
|||
188 |
|
||||
189 |
|
||||
190 | // Handle when a widget is closed. |
|
|||
191 | handle_comm_closed: function (msg) { |
|
|||
192 | for (var cell in this.views) { |
|
|||
193 | var views = this.views[cell]; |
|
|||
194 | for (var view_index in views) { |
|
|||
195 | var view = views[view_index]; |
|
|||
196 | view.remove(); |
|
|||
197 | } |
|
|||
198 | } |
|
|||
199 | }, |
|
|||
200 |
|
||||
201 |
|
||||
202 | // Create view that represents the model. |
|
202 | // Create view that represents the model. | |
203 | display_view: function (view_name, parent_comm_id, cell) { |
|
203 | _display_view: function (view_name, parent_comm_id, cell) { | |
204 | var new_views = []; |
|
204 | var new_views = []; | |
205 |
|
205 | |||
206 | var displayed = false; |
|
206 | var displayed = false; | |
@@ -279,7 +279,7 b' define(["components/underscore/underscore-min",' | |||||
279 | output : $.proxy(cell.output_area.handle_output, cell.output_area), |
|
279 | output : $.proxy(cell.output_area.handle_output, cell.output_area), | |
280 | clear_output : $.proxy(cell.output_area.handle_clear_output, cell.output_area), |
|
280 | clear_output : $.proxy(cell.output_area.handle_clear_output, cell.output_area), | |
281 | status : function(msg){ |
|
281 | status : function(msg){ | |
282 | that.handle_status(cell, msg); |
|
282 | that._handle_status(cell, msg); | |
283 | }, |
|
283 | }, | |
284 | get_cell : function() { |
|
284 | get_cell : function() { | |
285 | if (that.last_modified_view != undefined && |
|
285 | if (that.last_modified_view != undefined && | |
@@ -356,7 +356,7 b' define(["components/underscore/underscore-min",' | |||||
356 | if (this.model.css.hasOwnProperty(selector)) { |
|
356 | if (this.model.css.hasOwnProperty(selector)) { | |
357 |
|
357 | |||
358 | // Apply the css traits to all elements that match the selector. |
|
358 | // Apply the css traits to all elements that match the selector. | |
359 | var elements = this.get_selector_element(selector); |
|
359 | var elements = this._get_selector_element(selector); | |
360 | if (elements.length > 0) { |
|
360 | if (elements.length > 0) { | |
361 | var css_traits = this.model.css[selector]; |
|
361 | var css_traits = this.model.css[selector]; | |
362 | for (var css_key in css_traits) { |
|
362 | for (var css_key in css_traits) { | |
@@ -374,7 +374,7 b' define(["components/underscore/underscore-min",' | |||||
374 | var add_class_calls = add_class[0]; |
|
374 | var add_class_calls = add_class[0]; | |
375 | if (add_class_calls > this._add_class_calls) { |
|
375 | if (add_class_calls > this._add_class_calls) { | |
376 | this._add_class_calls = add_class_calls; |
|
376 | this._add_class_calls = add_class_calls; | |
377 | var elements = this.get_selector_element(add_class[1]); |
|
377 | var elements = this._get_selector_element(add_class[1]); | |
378 | if (elements.length > 0) { |
|
378 | if (elements.length > 0) { | |
379 | elements.addClass(add_class[2]); |
|
379 | elements.addClass(add_class[2]); | |
380 | } |
|
380 | } | |
@@ -386,7 +386,7 b' define(["components/underscore/underscore-min",' | |||||
386 | var remove_class_calls = remove_class[0]; |
|
386 | var remove_class_calls = remove_class[0]; | |
387 | if (remove_class_calls > this._remove_class_calls) { |
|
387 | if (remove_class_calls > this._remove_class_calls) { | |
388 | this._remove_class_calls = remove_class_calls; |
|
388 | this._remove_class_calls = remove_class_calls; | |
389 | var elements = this.get_selector_element(remove_class[1]); |
|
389 | var elements = this._get_selector_element(remove_class[1]); | |
390 | if (elements.length > 0) { |
|
390 | if (elements.length > 0) { | |
391 | elements.removeClass(remove_class[2]); |
|
391 | elements.removeClass(remove_class[2]); | |
392 | } |
|
392 | } | |
@@ -394,7 +394,7 b' define(["components/underscore/underscore-min",' | |||||
394 | } |
|
394 | } | |
395 | }, |
|
395 | }, | |
396 |
|
396 | |||
397 | get_selector_element: function(selector) { |
|
397 | _get_selector_element: function(selector) { | |
398 | // Get the elements via the css selector. If the selector is |
|
398 | // Get the elements via the css selector. If the selector is | |
399 | // blank, apply the style to the $el_to_style element. If |
|
399 | // blank, apply the style to the $el_to_style element. If | |
400 | // the $el_to_style element is not defined, use apply the |
|
400 | // the $el_to_style element is not defined, use apply the | |
@@ -422,7 +422,7 b' define(["components/underscore/underscore-min",' | |||||
422 |
|
422 | |||
423 | var that = this; |
|
423 | var that = this; | |
424 | Backbone.sync = function(method, model, options, error) { |
|
424 | Backbone.sync = function(method, model, options, error) { | |
425 | var result = model.handle_sync(method, options); |
|
425 | var result = model._handle_sync(method, options); | |
426 | if (options.success) { |
|
426 | if (options.success) { | |
427 | options.success(result); |
|
427 | options.success(result); | |
428 | } |
|
428 | } |
General Comments 0
You need to be logged in to leave comments.
Login now