Statistics
| Branch: | Tag: | Revision:

root / ui / static / snf / js / ui / web / ui_connect_view.js @ 3b214560

History | View | Annotate | Download (2.7 kB)

1 550d9733 Kostas Papadimitriou
;(function(root){
2 550d9733 Kostas Papadimitriou
3 550d9733 Kostas Papadimitriou
    // root
4 550d9733 Kostas Papadimitriou
    var root = root;
5 550d9733 Kostas Papadimitriou
    
6 550d9733 Kostas Papadimitriou
    // setup namepsaces
7 550d9733 Kostas Papadimitriou
    var snf = root.synnefo = root.synnefo || {};
8 550d9733 Kostas Papadimitriou
    var models = snf.models = snf.models || {}
9 550d9733 Kostas Papadimitriou
    var storage = snf.storage = snf.storage || {};
10 550d9733 Kostas Papadimitriou
    var ui = snf.ui = snf.ui || {};
11 550d9733 Kostas Papadimitriou
    var util = snf.util = snf.util || {};
12 550d9733 Kostas Papadimitriou
13 550d9733 Kostas Papadimitriou
    var views = snf.views = snf.views || {}
14 550d9733 Kostas Papadimitriou
15 550d9733 Kostas Papadimitriou
    // shortcuts
16 550d9733 Kostas Papadimitriou
    var bb = root.Backbone;
17 550d9733 Kostas Papadimitriou
18 550d9733 Kostas Papadimitriou
19 550d9733 Kostas Papadimitriou
    views.VMConnectView = views.VMOverlay.extend({
20 550d9733 Kostas Papadimitriou
        
21 550d9733 Kostas Papadimitriou
        view_id: "connect_view",
22 550d9733 Kostas Papadimitriou
        content_selector: "#vm-connect-overlay-content",
23 550d9733 Kostas Papadimitriou
        css_class: 'overlay-vmconnect overlay-info',
24 550d9733 Kostas Papadimitriou
        overlay_id: "vmconnect-overlay",
25 550d9733 Kostas Papadimitriou
26 550d9733 Kostas Papadimitriou
        subtitle: "",
27 550d9733 Kostas Papadimitriou
        title: "Connect to machine",
28 550d9733 Kostas Papadimitriou
29 550d9733 Kostas Papadimitriou
        initialize: function(options) {
30 550d9733 Kostas Papadimitriou
            views.VMConnectView.__super__.initialize.apply(this);
31 1c922789 Kostas Papadimitriou
            _.bindAll(this, "handle_success", "handle_error");
32 1c922789 Kostas Papadimitriou
33 1c922789 Kostas Papadimitriou
            this.error = this.$("div.error");
34 1c922789 Kostas Papadimitriou
            this.info = this.$("div.connection-info");
35 1c922789 Kostas Papadimitriou
            this.description = this.info.find(".description p");
36 1c922789 Kostas Papadimitriou
            this.connect = this.info.find(".connect p");
37 1c922789 Kostas Papadimitriou
            this.subinfo = this.info.find(".subinfo");
38 1c922789 Kostas Papadimitriou
        },
39 1c922789 Kostas Papadimitriou
40 1eb9b57e Kostas Papadimitriou
        beforeOpen: function() {
41 35584d80 Kostas Papadimitriou
            this.$(".clipboard").empty();
42 35584d80 Kostas Papadimitriou
        },
43 35584d80 Kostas Papadimitriou
44 35584d80 Kostas Papadimitriou
        beforeClose: function() {
45 35584d80 Kostas Papadimitriou
            this.$(".clipboard").empty();
46 35584d80 Kostas Papadimitriou
            try { delete this.clip; } catch (err) {};
47 1eb9b57e Kostas Papadimitriou
        },
48 1eb9b57e Kostas Papadimitriou
49 1c922789 Kostas Papadimitriou
        handle_success: function(data) {
50 1c922789 Kostas Papadimitriou
            this.error.hide();
51 1c922789 Kostas Papadimitriou
            this.info.show();
52 1c922789 Kostas Papadimitriou
            this.description.html(data.info);
53 1c922789 Kostas Papadimitriou
            if (data.ssh) {
54 1c922789 Kostas Papadimitriou
                this.connect.html(data.link.title);
55 1c922789 Kostas Papadimitriou
            } else {
56 1c922789 Kostas Papadimitriou
                this.connect.html('<a href="{0}">{1}</a>'.format(data.link.url, data.link.title))
57 1c922789 Kostas Papadimitriou
            }
58 1c922789 Kostas Papadimitriou
59 1c922789 Kostas Papadimitriou
            this.subinfo.html(data.subinfo).show();
60 1c922789 Kostas Papadimitriou
            if (!data.subinfo) { this.subinfo.hide() };
61 1eb9b57e Kostas Papadimitriou
            
62 1eb9b57e Kostas Papadimitriou
            if (data.ssh) {
63 35584d80 Kostas Papadimitriou
                var ssh_msg = data.link.title;
64 35584d80 Kostas Papadimitriou
                this.clip = new snf.util.ClipHelper(this.$(".clipboard"), ssh_msg);
65 1eb9b57e Kostas Papadimitriou
            } else {
66 1eb9b57e Kostas Papadimitriou
            }
67 1c922789 Kostas Papadimitriou
        },
68 1c922789 Kostas Papadimitriou
69 1c922789 Kostas Papadimitriou
        handle_error: function() {
70 1c922789 Kostas Papadimitriou
            this.error.show();
71 1c922789 Kostas Papadimitriou
            this.info.hide();
72 550d9733 Kostas Papadimitriou
        },
73 550d9733 Kostas Papadimitriou
74 550d9733 Kostas Papadimitriou
        handle_vm_change: function(vm) {
75 53287ead Kostas Papadimitriou
            if (!this.vm) { this.vm = undefined; return; }
76 550d9733 Kostas Papadimitriou
            if (this.vm.state() == "DESTROY") {
77 550d9733 Kostas Papadimitriou
                this.hide();
78 550d9733 Kostas Papadimitriou
            }
79 550d9733 Kostas Papadimitriou
            this._update_vm_details();
80 550d9733 Kostas Papadimitriou
        },
81 550d9733 Kostas Papadimitriou
        
82 550d9733 Kostas Papadimitriou
        update_vm_details: function() {
83 1c922789 Kostas Papadimitriou
        },
84 1c922789 Kostas Papadimitriou
85 1c922789 Kostas Papadimitriou
        show: function() {
86 1c922789 Kostas Papadimitriou
            views.VMConnectView.__super__.show.apply(this, arguments);
87 1c922789 Kostas Papadimitriou
            
88 1c922789 Kostas Papadimitriou
            this.error.hide();
89 1c922789 Kostas Papadimitriou
            this.info.hide();
90 1c922789 Kostas Papadimitriou
91 1c922789 Kostas Papadimitriou
            this.vm.get_connection_info($.client.os, this.handle_success, this.handle_error)
92 550d9733 Kostas Papadimitriou
        }
93 550d9733 Kostas Papadimitriou
94 550d9733 Kostas Papadimitriou
    });
95 550d9733 Kostas Papadimitriou
    
96 550d9733 Kostas Papadimitriou
})(this);