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); |