Removed for () loops where necessary. Replaced with _.each

This commit is contained in:
Jonathan Frederic 2014-01-21 16:26:03 -08:00
parent 35a02a0436
commit 08e40697de
4 changed files with 74 additions and 87 deletions

View File

@ -34,14 +34,12 @@
// Attach a comm manager to the
this.comm_manager = comm_manager;
this._models = {}; /* Dictionary of model ids and model instances */
// Register already-registered widget model types with the comm manager.
for (var name in WidgetManager._model_types) {
if (WidgetManager._model_types.hasOwnProperty(name)) {
this.comm_manager.register_target(name, $.proxy(this._handle_comm_open, this));
}
}
_.each(WidgetManager._model_types, function(value, key) {
this.comm_manager.register_target(value, $.proxy(this._handle_comm_open, this));
});
};
//--------------------------------------------------------------------
@ -49,7 +47,6 @@
//--------------------------------------------------------------------
WidgetManager._model_types = {}; /* Dictionary of model type names (target_name) and model types. */
WidgetManager._view_types = {}; /* Dictionary of view names and view types. */
WidgetManager._models = {}; /* Dictionary of model ids and model instances */
WidgetManager._managers = []; /* List of widget managers */
WidgetManager.register_widget_model = function (model_name, model_type) {
@ -58,12 +55,11 @@
// Register the widget with the comm manager. Make sure to pass this object's context
// in so `this` works in the call back.
for (var i = 0; i < WidgetManager._managers.length; i++) {
var instance = WidgetManager._managers[i];
_.each(WidgetManager._managers, function(instance, i) {
if (instance.comm_manager !== null) {
instance.comm_manager.register_target(model_name, $.proxy(instance._handle_comm_open, instance));
}
}
});
};
WidgetManager.register_widget_view = function (view_name, view_type) {
@ -169,7 +165,7 @@
};
WidgetManager.prototype.get_model = function (model_id) {
var model = WidgetManager._models[model_id];
var model = this._models[model_id];
if (model !== undefined && model.id == model_id) {
return model;
}
@ -180,7 +176,7 @@
var model_id = comm.comm_id;
var widget_type_name = msg.content.target_name;
var widget_model = new WidgetManager._model_types[widget_type_name](this, model_id, comm);
WidgetManager._models[model_id] = widget_model;
this._models[model_id] = widget_model;
};
IPython.WidgetManager = WidgetManager;

View File

@ -86,17 +86,14 @@ function(WidgetManager, Underscore, Backbone){
apply_update: function (state) {
// Handle when a widget is updated via the python side.
for (var key in state) {
if (state.hasOwnProperty(key)) {
var value = state[key];
this.key_value_lock = [key, value];
try {
this.set(key, this._unpack_models(value));
} finally {
this.key_value_lock = null;
}
_.each(state, function(value, key) {
this.key_value_lock = [key, value];
try {
this.set(key, this._unpack_models(value));
} finally {
this.key_value_lock = null;
}
}
});
},
_handle_status: function (msg, callbacks) {
@ -205,9 +202,9 @@ function(WidgetManager, Underscore, Backbone){
return value.id;
} else if (value instanceof Object) {
var packed = {};
for (var key in value) {
packed[key] = this._pack_models(value[key]);
}
_.each(value, function(sub_value, key) {
packed[key] = this._pack_models(sub_value);
});
return packed;
} else {
return value;
@ -218,9 +215,9 @@ function(WidgetManager, Underscore, Backbone){
// Replace model ids with models recursively.
if (value instanceof Object) {
var unpacked = {};
for (var key in value) {
unpacked[key] = this._unpack_models(value[key]);
}
_.each(value, function(sub_value, key) {
unpacked[key] = this._unpack_models(sub_value);
});
return unpacked;
} else {
var model = this.widget_manager.get_model(value);
@ -369,20 +366,16 @@ function(WidgetManager, Underscore, Backbone){
var css = this.model.get('_css');
if (css === undefined) {return;}
for (var selector in css) {
if (css.hasOwnProperty(selector)) {
// Apply the css traits to all elements that match the selector.
var elements = this._get_selector_element(selector);
if (elements.length > 0) {
var css_traits = css[selector];
for (var css_key in css_traits) {
if (css_traits.hasOwnProperty(css_key)) {
elements.css(css_key, css_traits[css_key]);
}
}
}
_.each(css, function(css_traits, selector){
// Apply the css traits to all elements that match the selector.
var elements = this._get_selector_element(selector);
if (elements.length > 0) {
_.each(css_traits, function(css_value, css_key){
elements.css(css_key, css_value);
});
}
}
});
},
_get_selector_element: function (selector) {

View File

@ -67,13 +67,13 @@ define(["notebook/js/widgets/widget"], function(WidgetManager){
var items = this.model.get('values');
var $replace_droplist = $('<ul />')
.addClass('dropdown-menu');
for (var index in items) {
var that = this;
_.each(items, function(item, i) {
var item_button = $('<a href="#"/>')
.text(items[index])
.text(item)
.on('click', $.proxy(this.handle_click, this));
$replace_droplist.append($('<li />').append(item_button));
}
});
this.$droplist.replaceWith($replace_droplist);
this.$droplist.remove();
this.$droplist = $replace_droplist;
@ -140,41 +140,41 @@ define(["notebook/js/widgets/widget"], function(WidgetManager){
// Add missing items to the DOM.
var items = this.model.get('values');
var disabled = this.model.get('disabled');
for (var index in items) {
var item_query = ' :input[value="' + items[index] + '"]';
_.each(items, function(item, index) {
var item_query = ' :input[value="' + item + '"]';
if (this.$el.find(item_query).length === 0) {
var $label = $('<label />')
.addClass('radio')
.text(items[index])
.text(item)
.appendTo(this.$container);
$('<input />')
.attr('type', 'radio')
.addClass(this.model)
.val(items[index])
.val(item)
.prependTo($label)
.on('click', $.proxy(this.handle_click, this));
}
var $item_element = this.$container.find(item_query);
if (this.model.get('value') == items[index]) {
if (this.model.get('value') == item) {
$item_element.prop('checked', true);
} else {
$item_element.prop('checked', false);
}
$item_element.prop('disabled', disabled);
}
});
// Remove items that no longer exist.
this.$container.find('input').each(function(i, obj) {
var value = $(obj).val();
var found = false;
for (var index in items) {
if (items[index] == value) {
_.each(items, function(item, index) {
if (item == value) {
found = true;
break;
}
}
});
if (!found) {
$(obj).parent().remove();
@ -230,37 +230,37 @@ define(["notebook/js/widgets/widget"], function(WidgetManager){
// Add missing items to the DOM.
var items = this.model.get('values');
var disabled = this.model.get('disabled');
for (var index in items) {
var item_query = ' :contains("' + items[index] + '")';
_.each(items, function(item, index) {
var item_query = ' :contains("' + item + '")';
if (this.$buttongroup.find(item_query).length === 0) {
$('<button />')
.attr('type', 'button')
.addClass('btn')
.text(items[index])
.text(item)
.appendTo(this.$buttongroup)
.on('click', $.proxy(this.handle_click, this));
}
var $item_element = this.$buttongroup.find(item_query);
if (this.model.get('value') == items[index]) {
if (this.model.get('value') == item) {
$item_element.addClass('active');
} else {
$item_element.removeClass('active');
}
$item_element.prop('disabled', disabled);
}
$item_element.prop('disabled', disabled);
});
// Remove items that no longer exist.
this.$buttongroup.find('button').each(function(i, obj) {
var value = $(obj).text();
var found = false;
for (var index in items) {
if (items[index] == value) {
_.each(items, function(item, index) {
if (item == value) {
found = true;
break;
}
}
});
if (!found) {
$(obj).remove();
}
@ -314,16 +314,16 @@ define(["notebook/js/widgets/widget"], function(WidgetManager){
if (options === undefined || options.updated_view != this) {
// Add missing items to the DOM.
var items = this.model.get('values');
for (var index in items) {
var item_query = ' :contains("' + items[index] + '")';
_.each(items, function(item, index) {
var item_query = ' :contains("' + item + '")';
if (this.$listbox.find(item_query).length === 0) {
$('<option />')
.text(items[index])
.attr('value', items[index])
.text(item)
.attr('value', item)
.appendTo(this.$listbox)
.on('click', $.proxy(this.handle_click, this));
}
}
}
});
// Select the correct element
this.$listbox.val(this.model.get('value'));
@ -336,12 +336,12 @@ define(["notebook/js/widgets/widget"], function(WidgetManager){
this.$listbox.find('option').each(function(i, obj) {
var value = $(obj).text();
var found = false;
for (var index in items) {
if (items[index] == value) {
_.each(items, function(item, index) {
if (item == value) {
found = true;
break;
}
}
});
if (!found) {
$(obj).remove();

View File

@ -39,28 +39,26 @@ define(["notebook/js/widgets/widget"], function(WidgetManager){
if (options === undefined || options.updated_view != this) {
// Set tab titles
var titles = this.model.get('_titles');
for (var page_index in titles) {
_.each(titles, function(title, page_index) {
var accordian = this.containers[page_index];
if (accordian !== undefined) {
accordian
.find('.accordion-heading')
.find('.accordion-toggle')
.text(titles[page_index]);
.text(title);
}
}
});
// Set selected page
var selected_index = this.model.get("selected_index");
if (0 <= selected_index && selected_index < this.containers.length) {
for (var index in this.containers) {
_.each(this.containers, function(container, index) {
if (index==selected_index) {
this.containers[index].find('.accordion-body').collapse('show');
container.find('.accordion-body').collapse('show');
} else {
this.containers[index].find('.accordion-body').collapse('hide');
container.find('.accordion-body').collapse('hide');
}
}
});
}
}
return AccordionView.__super__.update.apply(this);
@ -218,12 +216,12 @@ define(["notebook/js/widgets/widget"], function(WidgetManager){
if (options === undefined || options.updated_view != this) {
// Set tab titles
var titles = this.model.get('_titles');
for (var page_index in titles) {
var tab_text = this.containers[page_index];
_.each(titles, function(title, page_index) {
var tab_text = this.containers[page_index];
if (tab_text !== undefined) {
tab_text.text(titles[page_index]);
}
}
tab_text.text(title);
}
});
var selected_index = this.model.get('selected_index');
if (0 <= selected_index && selected_index < this.containers.length) {