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