root / ui / templates / standard.html @ ab5282e4
History | View | Annotate | Download (6.6 kB)
1 | 42f67a2a | Dimitris Moraitis | {% load i18n %} |
---|---|---|---|
2 | 42f67a2a | Dimitris Moraitis | |
3 | 42f67a2a | Dimitris Moraitis | <!-- the standard view -->
|
4 | 42f67a2a | Dimitris Moraitis | <div id="machinesview" class="standard"> |
5 | 935bb83f | Markos Gogoulos | <div id="emptymachineslist">{% trans "You have no virtual machines! Press Create New to create some!" %}</div> |
6 | 42f67a2a | Dimitris Moraitis | <div id="spinner"></div> |
7 | 42f67a2a | Dimitris Moraitis | <div class="machine" id="machine-template" style="display:none"> |
8 | 42f67a2a | Dimitris Moraitis | <div class="state"> |
9 | 42f67a2a | Dimitris Moraitis | <div class="status">{% trans "Running" %}</div> |
10 | 42f67a2a | Dimitris Moraitis | <div class="indicator"></div> |
11 | 42f67a2a | Dimitris Moraitis | <div class="indicator"></div> |
12 | 42f67a2a | Dimitris Moraitis | <div class="indicator"></div> |
13 | 42f67a2a | Dimitris Moraitis | <div class="indicator"></div> |
14 | 42f67a2a | Dimitris Moraitis | </div>
|
15 | 42f67a2a | Dimitris Moraitis | <img class="logo" src="" /> |
16 | 42f67a2a | Dimitris Moraitis | <a href="#" class="name"> |
17 | 42f67a2a | Dimitris Moraitis | <h5>Name: <span class="name">node.name</span><span class="rename"></span></h5> |
18 | 42f67a2a | Dimitris Moraitis | </a>
|
19 | 42f67a2a | Dimitris Moraitis | <a href="#" class="ip"> |
20 | 42f67a2a | Dimitris Moraitis | <h5>IP: <span class="public">node.public_ip</span></h5> |
21 | 42f67a2a | Dimitris Moraitis | </a>
|
22 | 42f67a2a | Dimitris Moraitis | <h5 class="settings"> |
23 | 42f67a2a | Dimitris Moraitis | {% trans "Show:" %} <a href="#">{% trans "disks" %}</a> | <a href="#">{% trans "networks" %}</a> | <a href="#">{% trans "group" %}</a> |
24 | 42f67a2a | Dimitris Moraitis | </h5>
|
25 | 42f67a2a | Dimitris Moraitis | <div class="actions"> |
26 | 42f67a2a | Dimitris Moraitis | <a href="#" class="action-start">{% trans "Start" %}</a> |
27 | 42f67a2a | Dimitris Moraitis | <a href="#" class="action-reboot">{% trans "Reboot" %}</a> |
28 | 42f67a2a | Dimitris Moraitis | <a href="#" class="action-shutdown">{% trans "Shutdown" %}</a> |
29 | 42f67a2a | Dimitris Moraitis | <a href="#" class="more">{% trans "more …" %}</a> |
30 | 42f67a2a | Dimitris Moraitis | </div>
|
31 | e5b0ba20 | Vangelis Koukis | <div class="separator"></div> |
32 | 42f67a2a | Dimitris Moraitis | </div>
|
33 | 42f67a2a | Dimitris Moraitis | |
34 | 42f67a2a | Dimitris Moraitis | <div class="running"></div> |
35 | e5b0ba20 | Vangelis Koukis | <div id="mini" class="separator"></div> |
36 | 42f67a2a | Dimitris Moraitis | <div class="terminated"></div> |
37 | 42f67a2a | Dimitris Moraitis | </div>
|
38 | 42f67a2a | Dimitris Moraitis | |
39 | e5b0ba20 | Vangelis Koukis | <div id="machines" class="separator"></div> |
40 | 42f67a2a | Dimitris Moraitis | |
41 | 42f67a2a | Dimitris Moraitis | <script>
|
42 | 42f67a2a | Dimitris Moraitis | // intercept reboot click
|
43 | 42f67a2a | Dimitris Moraitis | $("div.actions a.action-reboot").live('click', function(){
|
44 | 42f67a2a | Dimitris Moraitis | var serverID = $(this).parent().parent().attr("id");
|
45 | 42f67a2a | Dimitris Moraitis | var serverName = $(this).parent().prevAll("a.name").find("span.name").text();
|
46 | 42f67a2a | Dimitris Moraitis | confirm_action('reboot', reboot, [serverID], [serverName]);
|
47 | 42f67a2a | Dimitris Moraitis | return false;
|
48 | 42f67a2a | Dimitris Moraitis | });
|
49 | 42f67a2a | Dimitris Moraitis | |
50 | 42f67a2a | Dimitris Moraitis | // intercept shutdown click
|
51 | 42f67a2a | Dimitris Moraitis | $("div.actions a.action-shutdown").live('click', function(){
|
52 | 42f67a2a | Dimitris Moraitis | var serverID = $(this).parent().parent().attr("id");
|
53 | 42f67a2a | Dimitris Moraitis | var serverName = $(this).parent().prevAll("a.name").find("span.name").text();
|
54 | 42f67a2a | Dimitris Moraitis | confirm_action('shutdown', shutdown, [serverID], [serverName]);
|
55 | 42f67a2a | Dimitris Moraitis | return false;
|
56 | 42f67a2a | Dimitris Moraitis | });
|
57 | eae0a59a | Dimitris Moraitis | |
58 | 42f67a2a | Dimitris Moraitis | // intercept start click
|
59 | 42f67a2a | Dimitris Moraitis | $("div.actions a.action-start").live('click', function(){
|
60 | 42f67a2a | Dimitris Moraitis | var serverID = $(this).parent().parent().attr("id");
|
61 | 42f67a2a | Dimitris Moraitis | var serverName = $(this).parent().prevAll("a.name").find("span.name").text();
|
62 | 2ed4ced5 | Markos Gogoulos | // confirm_action('start', start, [serverID], [serverName]);
|
63 | 2ed4ced5 | Markos Gogoulos | start([serverID]);
|
64 | 42f67a2a | Dimitris Moraitis | return false;
|
65 | 42f67a2a | Dimitris Moraitis | });
|
66 | 42f67a2a | Dimitris Moraitis | |
67 | eae0a59a | Dimitris Moraitis | // update the servers list
|
68 | eae0a59a | Dimitris Moraitis | function update_machines_view(data){
|
69 | eae0a59a | Dimitris Moraitis | /*
|
70 | 1a49199e | Dimitris Moraitis | Go through the servers in the input data. Update existing entries, add
|
71 | eae0a59a | Dimitris Moraitis | new ones to the list
|
72 | eae0a59a | Dimitris Moraitis | */
|
73 | eae0a59a | Dimitris Moraitis | $.each(data.servers, function(i,server){
|
74 | eae0a59a | Dimitris Moraitis |
|
75 | 150eb972 | Christodoulos Psaltis | existing = $('#' + server.id);
|
76 | eae0a59a | Dimitris Moraitis |
|
77 | 81d48bff | Christodoulos Psaltis | if (existing.length > 1){
|
78 | eae0a59a | Dimitris Moraitis | existing.remove();
|
79 | eae0a59a | Dimitris Moraitis | existing = [];
|
80 | eae0a59a | Dimitris Moraitis | }
|
81 | eae0a59a | Dimitris Moraitis |
|
82 | 1a49199e | Dimitris Moraitis | if (existing.length){
|
83 | ab5282e4 | Dimitris Moraitis | $("div.machine:last-child").find("div.separator").show();
|
84 | ab5282e4 | Dimitris Moraitis | |
85 | 1a49199e | Dimitris Moraitis | // If the machine already exists in the DOM then simply update or delete it
|
86 | 1a49199e | Dimitris Moraitis | if (server.deleted == true) {
|
87 | 1a49199e | Dimitris Moraitis | existing.remove();
|
88 | 81d48bff | Christodoulos Psaltis | try {
|
89 | 1a49199e | Dimitris Moraitis | console.info(existing.find("a.name span.name").text() + ' removed');
|
90 | 1a49199e | Dimitris Moraitis | } catch(err) {}
|
91 | 1a49199e | Dimitris Moraitis | } else if (existing.find(".status").text() != STATUS_MESSAGES[server.status]) {
|
92 | 1a49199e | Dimitris Moraitis |
|
93 | 1a49199e | Dimitris Moraitis | try { // firebug console logging
|
94 | 150eb972 | Christodoulos Psaltis | console.info(existing.find("a.name span.name").text() + ' from '
|
95 | 150eb972 | Christodoulos Psaltis | + existing.find(".status").text() + ' to ' + STATUS_MESSAGES[server.status]);
|
96 | 81d48bff | Christodoulos Psaltis | } catch(err) {}
|
97 | 1a49199e | Dimitris Moraitis |
|
98 | 1a49199e | Dimitris Moraitis | if (['BUILD','ACTIVE','REBOOT'].indexOf(server.status) >= 0 &&
|
99 | 1a49199e | Dimitris Moraitis | [STATUS_MESSAGES['STOPPED'], STATUS_MESSAGES['ERROR']].indexOf(existing.find(".status").text()) >= 0) {
|
100 | 1a49199e | Dimitris Moraitis | // from stopped to running
|
101 | 1a49199e | Dimitris Moraitis | moved = existing.clone().appendTo(".running");
|
102 | 1a49199e | Dimitris Moraitis | moved.find("img.logo").attr("src","static/machines/"+image_tags[server.imageRef]+'.png');
|
103 | 1a49199e | Dimitris Moraitis | existing.remove();
|
104 | 1a49199e | Dimitris Moraitis | existing = moved;
|
105 | 1a49199e | Dimitris Moraitis | } else if (['STOPPED','ERROR'].indexOf(server.status) >= 0 &&
|
106 | 1a49199e | Dimitris Moraitis | [STATUS_MESSAGES['ACTIVE'], STATUS_MESSAGES['BUILD'], STATUS_MESSAGES['REBOOT']].indexOf(existing.find(".status").text()) >= 0) {
|
107 | 1a49199e | Dimitris Moraitis | moved = existing.clone().appendTo(".terminated");
|
108 | 1a49199e | Dimitris Moraitis | moved.find("img.logo").attr("src","static/machines/"+image_tags[server.imageRef]+'-off.png');
|
109 | 1a49199e | Dimitris Moraitis | existing.remove();
|
110 | 1a49199e | Dimitris Moraitis | existing = moved;
|
111 | 1a49199e | Dimitris Moraitis | }
|
112 | eae0a59a | Dimitris Moraitis | existing.find(".status").text(STATUS_MESSAGES[server.status]);
|
113 | 1a49199e | Dimitris Moraitis |
|
114 | eae0a59a | Dimitris Moraitis | }
|
115 | eae0a59a | Dimitris Moraitis | existing.find("a.name span.name").text(server.name);
|
116 | eae0a59a | Dimitris Moraitis | existing.find("a.ip span.public").text(String(server.addresses.public.ip.addr).replace(',',' '));
|
117 | 1a49199e | Dimitris Moraitis | } else if (server.deleted != true) {
|
118 | 1a49199e | Dimitris Moraitis | // If it does not exist and it's not deleted, we should create it
|
119 | eae0a59a | Dimitris Moraitis | var machine = $("#machine-template").clone().attr("id", server.id).fadeIn("slow");
|
120 | eae0a59a | Dimitris Moraitis | machine.find("a.name span.name").text(server.name);
|
121 | b335768e | Markos Gogoulos | machine.find("img.logo").attr("src","static/machines/"+image_tags[server.imageRef]+'.png');
|
122 | b335768e | Markos Gogoulos | machine.find("span.imagetag").text(image_tags[server.imageRef]);
|
123 | eae0a59a | Dimitris Moraitis | machine.find("a.ip span.public").text(String(server.addresses.public.ip.addr).replace(',',' '));
|
124 | eae0a59a | Dimitris Moraitis | machine.find(".status").text(STATUS_MESSAGES[server.status]);
|
125 | eae0a59a | Dimitris Moraitis | if (['BUILD', 'ACTIVE', 'REBOOT'].indexOf(server.status) >= 0){
|
126 | eae0a59a | Dimitris Moraitis | machine.appendTo(".running");
|
127 | eae0a59a | Dimitris Moraitis | } else {
|
128 | b335768e | Markos Gogoulos | machine.find("img.logo").attr("src","static/machines/"+image_tags[server.imageRef]+'-off.png');
|
129 | eae0a59a | Dimitris Moraitis | machine.appendTo(".terminated");
|
130 | eae0a59a | Dimitris Moraitis | }
|
131 | eae0a59a | Dimitris Moraitis | |
132 | eae0a59a | Dimitris Moraitis | }
|
133 | eae0a59a | Dimitris Moraitis | });
|
134 | eae0a59a | Dimitris Moraitis | |
135 | eae0a59a | Dimitris Moraitis | $("#spinner").hide();
|
136 | e5b0ba20 | Vangelis Koukis | $("div.machine:last-child").find("div.separator").hide();
|
137 | e5b0ba20 | Vangelis Koukis | // the separator shows only when running and terminated machines are available
|
138 | c58db69b | Christodoulos Psaltis | if ($(".terminated a.name").length > 0 && $(".running a.name").length > 0) {
|
139 | e5b0ba20 | Vangelis Koukis | $("#mini.separator").fadeIn("slow");
|
140 | e5b0ba20 | Vangelis Koukis | } else {
|
141 | e5b0ba20 | Vangelis Koukis | $("#mini.separator").fadeOut("slow");
|
142 | eae0a59a | Dimitris Moraitis | }
|
143 | 935bb83f | Markos Gogoulos | // show message in case user has no servers!
|
144 | 935bb83f | Markos Gogoulos | if (servers.length == 0) {
|
145 | 935bb83f | Markos Gogoulos | $("#emptymachineslist").fadeIn("slow");
|
146 | 935bb83f | Markos Gogoulos | }
|
147 | eae0a59a | Dimitris Moraitis | }
|
148 | eae0a59a | Dimitris Moraitis | |
149 | 146b6003 | Dimitris Moraitis | if (images.length == 0) {
|
150 | 146b6003 | Dimitris Moraitis | // populate image list
|
151 | 146b6003 | Dimitris Moraitis | update_images();
|
152 | 146b6003 | Dimitris Moraitis | }
|
153 | 146b6003 | Dimitris Moraitis | if (flavors.length == 0) {
|
154 | 146b6003 | Dimitris Moraitis | // configure flavors
|
155 | 146b6003 | Dimitris Moraitis | update_flavors();
|
156 | 146b6003 | Dimitris Moraitis | }
|
157 | 146b6003 | Dimitris Moraitis | |
158 | 146b6003 | Dimitris Moraitis | update_vms(UPDATE_INTERVAL);
|
159 | 2ed4ced5 | Markos Gogoulos | </script> |