Revision 75331d54 ui/static/snf/js/ui/web/ui_vms_base_view.js
b/ui/static/snf/js/ui/web/ui_vms_base_view.js | ||
---|---|---|
18 | 18 |
var logger = new snf.logging.logger("SNF-VIEWS"); |
19 | 19 |
var debug = _.bind(logger.debug, logger); |
20 | 20 |
|
21 |
var hasKey = Object.prototype.hasOwnProperty; |
|
22 |
|
|
21 | 23 |
// base class for views that contain/handle VMS |
22 | 24 |
views.VMListView = views.View.extend({ |
23 | 25 |
|
... | ... | |
32 | 34 |
|
33 | 35 |
initialize: function() { |
34 | 36 |
views.VMListView.__super__.initialize.call(this); |
37 |
this._vm_els = {}; |
|
35 | 38 |
this.set_storage_handlers(); |
36 | 39 |
this.set_handlers(); |
37 | 40 |
this.vms_updated_handler(); |
38 | 41 |
this.connect_overlay = new views.VMConnectView(); |
39 |
this.vm_selector = this.selectors.vm; |
|
40 | 42 |
}, |
41 | 43 |
|
42 | 44 |
// Helpers |
... | ... | |
49 | 51 |
|
50 | 52 |
// vm element based on vm model instance provided |
51 | 53 |
vm: function(vm) { |
52 |
return $(this.vm_selector + vm.id); |
|
54 |
if (hasKey.call(this._vm_els, vm.id)) { |
|
55 |
ret = this._vm_els[vm.id]; |
|
56 |
} else { |
|
57 |
return $([]); |
|
58 |
} |
|
59 |
|
|
60 |
return ret; |
|
53 | 61 |
}, |
54 | 62 |
|
55 | 63 |
// get vm model instance from DOM element |
... | ... | |
88 | 96 |
// create dom element |
89 | 97 |
var vm_view = this.create_vm_element(vm); |
90 | 98 |
vm_view.find(".vm-actions").attr("id", this.view_id+"-actions-" + vm.id); |
99 |
this._vm_els[vm.id] = vm_view; |
|
91 | 100 |
var container = this.get_vm_container(vm); |
92 | 101 |
container.append(vm_view); |
93 | 102 |
vm_view.find(".action-indicator").text(""); |
... | ... | |
97 | 106 |
|
98 | 107 |
// initialize vm specific event handlers |
99 | 108 |
this.__set_vm_handlers(vm); |
109 |
return vm_view; |
|
100 | 110 |
}, |
101 | 111 |
|
102 | 112 |
// create vm dom element |
... | ... | |
118 | 128 |
// if it doesn't exist update vm data and make it visible |
119 | 129 |
add: function(vm) { |
120 | 130 |
// create if it does not exist |
121 |
if (this.vm(vm).length == 0) {
|
|
122 |
this.create_vm(vm); |
|
123 |
this.vm(vm).show();
|
|
131 |
if (!hasKey.call(this._vm_els, vm.id)) {
|
|
132 |
var el = this.create_vm(vm);
|
|
133 |
el.show();
|
|
124 | 134 |
this.post_add(vm); |
125 | 135 |
} |
126 | 136 |
|
... | ... | |
140 | 150 |
// FIXME: some kind of transiton ??? effect maybe ??? |
141 | 151 |
this.vm(vm).remove(); |
142 | 152 |
this.post_remove_vm(vm); |
153 |
if (hasKey.call(this._vm_els, vm.id)) { |
|
154 |
delete this._vm_els[vm.id]; |
|
155 |
} |
|
143 | 156 |
}, |
144 | 157 |
|
145 | 158 |
// remove all vms from view |
Also available in: Unified diff