root / ui / templates / list.html @ 1508a5ab
History | View | Annotate | Download (14.3 kB)
1 | 42f67a2a | Dimitris Moraitis | {% load i18n %} |
---|---|---|---|
2 | 42f67a2a | Dimitris Moraitis | |
3 | 6902f72e | clopy | <div id="machinesview_wrapper" class="list"> |
4 | 1c86af5b | Christodoulos Psaltis | <div id="spinner"></div> |
5 | f87e79a4 | Mike Muzurakis | <div id="machinesview_content"> |
6 | f87e79a4 | Mike Muzurakis | <div class="actions"> |
7 | f87e79a4 | Mike Muzurakis | <a id="action-start">{% trans "Start" %}</a> |
8 | f87e79a4 | Mike Muzurakis | <a id="action-reboot">{% trans "Reboot" %}</a> |
9 | f87e79a4 | Mike Muzurakis | <a id="action-shutdown">{% trans "Shutdown" %}</a> |
10 | f87e79a4 | Mike Muzurakis | <br /> |
11 | f87e79a4 | Mike Muzurakis | <a id="action-destroy">{% trans "Destroy" %}</a> |
12 | f87e79a4 | Mike Muzurakis | <br /> |
13 | f87e79a4 | Mike Muzurakis | <a id="action-details">{% trans "Show Details" %}</a> |
14 | f87e79a4 | Mike Muzurakis | <a id="action-group">{% trans "Add to group" %}</a> |
15 | f87e79a4 | Mike Muzurakis | <br /> |
16 | f87e79a4 | Mike Muzurakis | <a id="action-band">{% trans "Out of band" %}</a> |
17 | f87e79a4 | Mike Muzurakis | <br /> |
18 | f87e79a4 | Mike Muzurakis | <a id="action-attach">{% trans "Attach disk" %}</a> |
19 | f87e79a4 | Mike Muzurakis | <a id="action-detach">{% trans "Detach disk" %}</a> |
20 | f87e79a4 | Mike Muzurakis | <br /> |
21 | f87e79a4 | Mike Muzurakis | <a id="action-connect">{% trans "Connect to network" %}</a> |
22 | f87e79a4 | Mike Muzurakis | <a id="action-disconnect">{% trans "Disconnect from net" %}</a> |
23 | f87e79a4 | Mike Muzurakis | </div>
|
24 | f87e79a4 | Mike Muzurakis | <table class="list-machines" style="display: none"> |
25 | f87e79a4 | Mike Muzurakis | <thead>
|
26 | f87e79a4 | Mike Muzurakis | <tr>
|
27 | f87e79a4 | Mike Muzurakis | <th id="selection" class="select-running"> |
28 | f87e79a4 | Mike Muzurakis | <input type="checkbox"/> |
29 | f87e79a4 | Mike Muzurakis | <div class="expand-icon"></div> |
30 | f87e79a4 | Mike Muzurakis | </th>
|
31 | f87e79a4 | Mike Muzurakis | <th id="os">{% trans "OS" %}</th> |
32 | f87e79a4 | Mike Muzurakis | <th id="name">{% trans "Name" %}</th> |
33 | f87e79a4 | Mike Muzurakis | <th id="flavor">{% trans "Flavor" %}</th> |
34 | f87e79a4 | Mike Muzurakis | <th id="group">{% trans "Group" %}</th> |
35 | f87e79a4 | Mike Muzurakis | <th id="status">{% trans "Status" %}</th> |
36 | f87e79a4 | Mike Muzurakis | </tr>
|
37 | f87e79a4 | Mike Muzurakis | </thead>
|
38 | f87e79a4 | Mike Muzurakis | <tbody class="machines"></tbody> |
39 | f87e79a4 | Mike Muzurakis | </table>
|
40 | f87e79a4 | Mike Muzurakis | <ul class="dropdown-selector" style="display: none"> |
41 | f87e79a4 | Mike Muzurakis | <li class="select-all" ><a href="#">{% trans "all" %}</a></li> |
42 | f87e79a4 | Mike Muzurakis | <li class="select-none"><a href="#">{% trans "none" %}</a></li> |
43 | f87e79a4 | Mike Muzurakis | <li class="select-group"><a href="#">{% trans "group" %}</a></li> |
44 | f87e79a4 | Mike Muzurakis | </ul>
|
45 | b303ba05 | Christodoulos Psaltis | </div>
|
46 | b303ba05 | Christodoulos Psaltis | </div>
|
47 | c3b3043d | Dimitris Moraitis | |
48 | c3b3043d | Dimitris Moraitis | <script>
|
49 | 990772be | Dimitris Moraitis | |
50 | 35b8688f | Christodoulos Psaltis | // select/deselect all from checkbox widget of table headers
|
51 | 35b8688f | Christodoulos Psaltis | $("table thead tr th#selection :checkbox").live('change', function() {
|
52 | 35b8688f | Christodoulos Psaltis | if ( $(this).is(":checked") ) {
|
53 | 008b3ae8 | Christodoulos Psaltis | $(":checkbox").attr("checked", true);
|
54 | 35b8688f | Christodoulos Psaltis | }
|
55 | 35b8688f | Christodoulos Psaltis | else {
|
56 | 008b3ae8 | Christodoulos Psaltis | $(":checkbox").attr("checked", false);
|
57 | 35b8688f | Christodoulos Psaltis | }
|
58 | 4da3085a | Dimitris Moraitis | updateActions();
|
59 | 190e3256 | Dimitris Moraitis | return false;
|
60 | 35b8688f | Christodoulos Psaltis | });
|
61 | 35b8688f | Christodoulos Psaltis | |
62 | 190e3256 | Dimitris Moraitis | // select all from drop down menu
|
63 | 190e3256 | Dimitris Moraitis | $("ul.dropdown-selector li.select-all a").live('click', function() {
|
64 | 190e3256 | Dimitris Moraitis | $(":checkbox").attr("checked", true);
|
65 | 79b68e7c | Christodoulos Psaltis | $(".dropdown-selector").slideToggle('medium');
|
66 | 82bf6df0 | Dimitris Moraitis | updateActions();
|
67 | 190e3256 | Dimitris Moraitis | return false;
|
68 | 1e03328c | Christodoulos Psaltis | });
|
69 | 1e03328c | Christodoulos Psaltis | |
70 | 190e3256 | Dimitris Moraitis | // select none from drop down menu
|
71 | 190e3256 | Dimitris Moraitis | $("ul.dropdown-selector li.select-none a").live('click', function() {
|
72 | 190e3256 | Dimitris Moraitis | $(":checkbox").attr("checked", false);
|
73 | 79b68e7c | Christodoulos Psaltis | $(".dropdown-selector").slideToggle('medium');
|
74 | 82bf6df0 | Dimitris Moraitis | updateActions();
|
75 | 190e3256 | Dimitris Moraitis | return false;
|
76 | 164d6386 | Christodoulos Psaltis | });
|
77 | 164d6386 | Christodoulos Psaltis | |
78 | 190e3256 | Dimitris Moraitis | // select group from drop down menu
|
79 | 190e3256 | Dimitris Moraitis | $("ul.dropdown-selector li.select-group a").live('click', function() {
|
80 | 190e3256 | Dimitris Moraitis | $(":checkbox").attr("checked", true);
|
81 | 79b68e7c | Christodoulos Psaltis | $(".dropdown-selector").slideToggle('medium');
|
82 | 82bf6df0 | Dimitris Moraitis | updateActions();
|
83 | 190e3256 | Dimitris Moraitis | return false;
|
84 | 190e3256 | Dimitris Moraitis | });
|
85 | 190e3256 | Dimitris Moraitis | |
86 | 190e3256 | Dimitris Moraitis | // menu toggle, running menu
|
87 | 190e3256 | Dimitris Moraitis | $("table.list-machines thead tr th#selection .expand-icon").click( function (obj) {
|
88 | 190e3256 | Dimitris Moraitis | $(".dropdown-selector").slideToggle('medium');
|
89 | 164d6386 | Christodoulos Psaltis | return false;
|
90 | 164d6386 | Christodoulos Psaltis | });
|
91 | 164d6386 | Christodoulos Psaltis | |
92 | bd96a56b | Christodoulos Psaltis | // TODO: This should be populated with more rules for all available states
|
93 | a9d8ed3a | Christodoulos Psaltis | var actions = { 'reboot': ['ACTIVE', 'REBOOT', 'multiple'],
|
94 | a9d8ed3a | Christodoulos Psaltis | 'shutdown': ['ACTIVE', 'REBOOT', 'multiple'],
|
95 | a9d8ed3a | Christodoulos Psaltis | 'connect': ['ACTIVE', ],
|
96 | a9d8ed3a | Christodoulos Psaltis | 'disconnect': ['ACTIVE', 'network'],
|
97 | a9d8ed3a | Christodoulos Psaltis | 'band': ['ACTIVE', 'REBOOT'],
|
98 | a9d8ed3a | Christodoulos Psaltis | 'details': ['ACTIVE', 'REBOOT', 'STOPPED'],
|
99 | a9d8ed3a | Christodoulos Psaltis | 'start': ['STOPPED', 'multiple'],
|
100 | 56c986b5 | Markos Gogoulos | 'destroy': ['ACTIVE', 'STOPPED', 'REBOOT', 'ERROR', 'multiple', 'BUILD'],
|
101 | a9d8ed3a | Christodoulos Psaltis | 'group': ['ACTIVE', 'STOPPED', 'REBOOT','multiple'],
|
102 | 0604f74f | Dimitris Moraitis | };
|
103 | 0604f74f | Dimitris Moraitis | |
104 | 379a34cf | Dimitris Moraitis | // on checkbox click, update the actions
|
105 | bdbd43a1 | Christodoulos Psaltis | $("tbody input[type='checkbox']").live('change', function() {
|
106 | bdbd43a1 | Christodoulos Psaltis | updateActions();
|
107 | bdbd43a1 | Christodoulos Psaltis | pending_actions = [];
|
108 | bdbd43a1 | Christodoulos Psaltis | $(".selected").removeClass('selected');
|
109 | bdbd43a1 | Christodoulos Psaltis | update_confirmations();
|
110 | bdbd43a1 | Christodoulos Psaltis | });
|
111 | 4da3085a | Dimitris Moraitis | |
112 | df1257a5 | Christodoulos Psaltis | $("div.confirm_multiple button").click(function() {
|
113 | df1257a5 | Christodoulos Psaltis | $(".selected").removeClass('selected');
|
114 | df1257a5 | Christodoulos Psaltis | });
|
115 | df1257a5 | Christodoulos Psaltis | |
116 | d7c4ab32 | Dimitris Moraitis | // destroy action
|
117 | ae0aea6d | Dimitris Moraitis | $("a.enabled#action-destroy").live('click', function() {
|
118 | 217b2431 | Dimitris Moraitis | var checked = $("table.list-machines tbody input[type='checkbox']:checked");
|
119 | bdbd43a1 | Christodoulos Psaltis | $(".selected").removeClass('selected');
|
120 | bdbd43a1 | Christodoulos Psaltis | $(this).addClass('selected');
|
121 | 990772be | Dimitris Moraitis | pending_actions = []; // reset pending actions
|
122 | 217b2431 | Dimitris Moraitis | checked.each(function(i,c) {
|
123 | 48ce8b68 | Christodoulos Psaltis | serverID=c.id;
|
124 | 990772be | Dimitris Moraitis | serverName = $('#'+serverID+' span.name').text();
|
125 | 990772be | Dimitris Moraitis | pending_actions.push([destroy, serverID]);
|
126 | 217b2431 | Dimitris Moraitis | });
|
127 | 990772be | Dimitris Moraitis | update_confirmations();
|
128 | 217b2431 | Dimitris Moraitis | return false;
|
129 | d7c4ab32 | Dimitris Moraitis | });
|
130 | d7c4ab32 | Dimitris Moraitis | |
131 | ae0aea6d | Dimitris Moraitis | $("a.enabled#action-reboot").live('click', function() {
|
132 | 42f67a2a | Dimitris Moraitis | var checked = $("table.list-machines tbody input[type='checkbox']:checked");
|
133 | bdbd43a1 | Christodoulos Psaltis | $(".selected").removeClass('selected');
|
134 | bdbd43a1 | Christodoulos Psaltis | $(this).addClass('selected');
|
135 | 990772be | Dimitris Moraitis | pending_actions = []; // reset pending actions
|
136 | 217b2431 | Dimitris Moraitis | checked.each(function(i,c) {
|
137 | 48ce8b68 | Christodoulos Psaltis | serverID=c.id;
|
138 | 990772be | Dimitris Moraitis | serverName = $('#'+serverID+' span.name').text();
|
139 | 990772be | Dimitris Moraitis | pending_actions.push([reboot, serverID]);
|
140 | 217b2431 | Dimitris Moraitis | });
|
141 | 990772be | Dimitris Moraitis | update_confirmations();
|
142 | 217b2431 | Dimitris Moraitis | return false;
|
143 | d7c4ab32 | Dimitris Moraitis | });
|
144 | d7c4ab32 | Dimitris Moraitis | |
145 | a37690bd | Markos Gogoulos | $("a.enabled#action-start").live('click', function() {
|
146 | 42f67a2a | Dimitris Moraitis | var checked = $("table.list-machines tbody input[type='checkbox']:checked");
|
147 | bdbd43a1 | Christodoulos Psaltis | $(".selected").removeClass('selected');
|
148 | bdbd43a1 | Christodoulos Psaltis | $(this).addClass('selected');
|
149 | 990772be | Dimitris Moraitis | pending_actions = []; // reset pending actions
|
150 | 217b2431 | Dimitris Moraitis | checked.each(function(i,c) {
|
151 | 48ce8b68 | Christodoulos Psaltis | serverID=c.id;
|
152 | 990772be | Dimitris Moraitis | serverName = $('#'+serverID+' span.name').text();
|
153 | 990772be | Dimitris Moraitis | pending_actions.push([start, serverID]);
|
154 | 217b2431 | Dimitris Moraitis | });
|
155 | 990772be | Dimitris Moraitis | update_confirmations();
|
156 | 217b2431 | Dimitris Moraitis | return false;
|
157 | a37690bd | Markos Gogoulos | });
|
158 | a37690bd | Markos Gogoulos | |
159 | a37690bd | Markos Gogoulos | $("a.enabled#action-shutdown").live('click', function() {
|
160 | 42f67a2a | Dimitris Moraitis | var checked = $("table.list-machines tbody input[type='checkbox']:checked");
|
161 | bdbd43a1 | Christodoulos Psaltis | $(".selected").removeClass('selected');
|
162 | bdbd43a1 | Christodoulos Psaltis | $(this).addClass('selected');
|
163 | 990772be | Dimitris Moraitis | pending_actions = []; // reset pending actions
|
164 | 217b2431 | Dimitris Moraitis | checked.each(function(i,c) {
|
165 | 48ce8b68 | Christodoulos Psaltis | serverID=c.id;
|
166 | 990772be | Dimitris Moraitis | serverName = $('#'+serverID+' span.name').text();
|
167 | 990772be | Dimitris Moraitis | pending_actions.push([shutdown, serverID]);
|
168 | 217b2431 | Dimitris Moraitis | });
|
169 | 990772be | Dimitris Moraitis | update_confirmations();
|
170 | 217b2431 | Dimitris Moraitis | return false;
|
171 | d7c4ab32 | Dimitris Moraitis | });
|
172 | d7c4ab32 | Dimitris Moraitis | |
173 | eae0a59a | Dimitris Moraitis | function update_machines_view(data){
|
174 | eae0a59a | Dimitris Moraitis | /*
|
175 | 1a49199e | Dimitris Moraitis | Go through the servers in the input data. Update existing entries, add
|
176 | eae0a59a | Dimitris Moraitis | new ones to the list
|
177 | 1a49199e | Dimitris Moraitis | */
|
178 | 1a49199e | Dimitris Moraitis | tableData = vmTable.fnGetData();
|
179 | 7e45ddef | Dimitris Moraitis | $.each(data.servers.values, function(i,server){
|
180 | 1a49199e | Dimitris Moraitis | current = -1;
|
181 | c459a72f | Christodoulos Psaltis | // check server status to select the appropriate OS icon
|
182 | a64e74f0 | Markos Gogoulos | osTag = os_icon(server.metadata);
|
183 | e2ccad35 | Dimitris Moraitis | var osIcon = osTag + ".png", imgStr, imgSrc;
|
184 | c459a72f | Christodoulos Psaltis | |
185 | 1a49199e | Dimitris Moraitis | // check if the server already exists in the datatable
|
186 | 1a49199e | Dimitris Moraitis | tableData.forEach(function(row,index){
|
187 | 1a49199e | Dimitris Moraitis |
|
188 | 1a49199e | Dimitris Moraitis | if (row[0].split(' ')[2].replace('id=','') == server.id){
|
189 | 1a49199e | Dimitris Moraitis | current = index;
|
190 | 1a49199e | Dimitris Moraitis | }
|
191 | 1a49199e | Dimitris Moraitis | });
|
192 | eae0a59a | Dimitris Moraitis |
|
193 | e357c9f0 | Christodoulos Psaltis | if (current != -1) { // if it's there, update the values
|
194 | e357c9f0 | Christodoulos Psaltis | // get current status description, including non api states
|
195 | e357c9f0 | Christodoulos Psaltis | var server_row = $('#' + server.id).parent().parent();
|
196 | e357c9f0 | Christodoulos Psaltis | var status_desc = server_row.find('span.status').text();
|
197 | e357c9f0 | Christodoulos Psaltis | // firebug console logging
|
198 | e357c9f0 | Christodoulos Psaltis | try {
|
199 | e357c9f0 | Christodoulos Psaltis | console.info(server.name + ' from ' + status_desc + ' to ' + STATUS_MESSAGES[server.status]);
|
200 | e357c9f0 | Christodoulos Psaltis | } catch(err) {}
|
201 | e357c9f0 | Christodoulos Psaltis | // when server is in deleted status it must be removed from the list
|
202 | 0e1531b4 | Markos Gogoulos | if (server.status == "DELETED") {
|
203 | 1a49199e | Dimitris Moraitis | vmTable.fnDeleteRow(current);
|
204 | e357c9f0 | Christodoulos Psaltis | } else { // when server is not be deleted, it should be updated
|
205 | e357c9f0 | Christodoulos Psaltis | if (['BUILD','ACTIVE','REBOOT'].indexOf(server.status) >= 0 &&
|
206 | e357c9f0 | Christodoulos Psaltis | [STATUS_MESSAGES['STOPPED'], STATUS_MESSAGES['ERROR'],
|
207 | e357c9f0 | Christodoulos Psaltis | 'Starting'].indexOf(server_row.find('span.status').text()) >= 0) {
|
208 | e357c9f0 | Christodoulos Psaltis | // from stopped, on error or starting to building, active or rebooting
|
209 | e357c9f0 | Christodoulos Psaltis | // starting is not an api state, it means the server is stopped or on error
|
210 | e357c9f0 | Christodoulos Psaltis | tableData[current][0] = "<input class="+server.status+" id="+server.id+" type=checkbox>";
|
211 | e357c9f0 | Christodoulos Psaltis | imgSrc = "static/wave.gif";
|
212 | e357c9f0 | Christodoulos Psaltis | imgStr = "<img class=list-logo src=" + imgSrc + " title=" + osTag + " height=16 width=16 />";
|
213 | e357c9f0 | Christodoulos Psaltis | tableData[current][1] = "<span class=imagetag>" + osTag + "</span>" + imgStr;
|
214 | e357c9f0 | Christodoulos Psaltis | tableData[current][2] = "<a class=name><span class=name>" + server.name + "</span></a>";
|
215 | e357c9f0 | Christodoulos Psaltis | //tableData[current][4] = "group"; //TODO
|
216 | e357c9f0 | Christodoulos Psaltis | tableData[current][5] = "<span class=status>" + STATUS_MESSAGES[server.status] + "</span>";
|
217 | e357c9f0 | Christodoulos Psaltis | vmTable.fnUpdate(tableData[current],current);
|
218 | e357c9f0 | Christodoulos Psaltis | setTimeout("$('#"+server.id+"').parent().parent().find('.list-logo').attr('src','static/os_logos/"
|
219 | e357c9f0 | Christodoulos Psaltis | + osIcon + "')", 1600);
|
220 | e357c9f0 | Christodoulos Psaltis | } else if (['STOPPED','ERROR'].indexOf(server.status) >= 0 &&
|
221 | e357c9f0 | Christodoulos Psaltis | [STATUS_MESSAGES['ACTIVE'], STATUS_MESSAGES['BUILD'], STATUS_MESSAGES['REBOOT'],
|
222 | e357c9f0 | Christodoulos Psaltis | 'Shutting down'].indexOf(server_row.find('span.status').text()) >= 0) {
|
223 | e357c9f0 | Christodoulos Psaltis | tableData[current][0] = "<input class="+server.status+" id="+server.id+" type=checkbox>";
|
224 | e357c9f0 | Christodoulos Psaltis | imgSrc = "static/wave.gif";
|
225 | e357c9f0 | Christodoulos Psaltis | imgStr = "<img class=list-logo src=" + imgSrc + " title=" + osTag + " height=16 width=16 />";
|
226 | e357c9f0 | Christodoulos Psaltis | tableData[current][1] = "<span class=imagetag>" + osTag + "</span>" + imgStr;
|
227 | e357c9f0 | Christodoulos Psaltis | tableData[current][2] = "<a class=name><span class=name>" + server.name + "</span></a>";
|
228 | e357c9f0 | Christodoulos Psaltis | //tableData[current][4] = "group"; //TODO
|
229 | e357c9f0 | Christodoulos Psaltis | tableData[current][5] = "<span class=status>" + STATUS_MESSAGES[server.status] + "</span>";
|
230 | e357c9f0 | Christodoulos Psaltis | vmTable.fnUpdate(tableData[current],current);
|
231 | e357c9f0 | Christodoulos Psaltis | setTimeout("$('#"+server.id+"').parent().parent().find('.list-logo').attr('src','static/os_logos/"
|
232 | e357c9f0 | Christodoulos Psaltis | + osTag + "-off.png')", 1600);
|
233 | e357c9f0 | Christodoulos Psaltis | } else if ( STATUS_MESSAGES[server.status] == server_row.find('span.status').text()) {
|
234 | e357c9f0 | Christodoulos Psaltis | |
235 | e357c9f0 | Christodoulos Psaltis | } else if (server.status == 'ACTIVE' &&
|
236 | e357c9f0 | Christodoulos Psaltis | [STATUS_MESSAGES['BUILD'], 'Rebooting'].indexOf(server_row.find('span.status').text()) >= 0) {
|
237 | e2ccad35 | Dimitris Moraitis | tableData[current][0] = "<input class="+server.status+" id="+server.id+" type=checkbox>";
|
238 | e357c9f0 | Christodoulos Psaltis | imgSrc = "static/wave.gif";
|
239 | e2ccad35 | Dimitris Moraitis | imgStr = "<img class=list-logo src=" + imgSrc + " title=" + osTag + " height=16 width=16 />";
|
240 | e2ccad35 | Dimitris Moraitis | tableData[current][1] = "<span class=imagetag>" + osTag + "</span>" + imgStr;
|
241 | e2ccad35 | Dimitris Moraitis | tableData[current][2] = "<a class=name><span class=name>" + server.name + "</span></a>";
|
242 | e2ccad35 | Dimitris Moraitis | //tableData[current][4] = "group"; //TODO
|
243 | e2ccad35 | Dimitris Moraitis | tableData[current][5] = "<span class=status>" + STATUS_MESSAGES[server.status] + "</span>";
|
244 | e357c9f0 | Christodoulos Psaltis | vmTable.fnUpdate(tableData[current],current);
|
245 | e357c9f0 | Christodoulos Psaltis | setTimeout("$('#"+server.id+"').parent().parent().find('.list-logo').attr('src','static/os_logos/"
|
246 | e357c9f0 | Christodoulos Psaltis | + osIcon + "')", 1600);
|
247 | e357c9f0 | Christodoulos Psaltis | }
|
248 | 1a49199e | Dimitris Moraitis | }
|
249 | 1a49199e | Dimitris Moraitis | updateActions();
|
250 | 0e1531b4 | Markos Gogoulos | } else if (server.status != "DELETED") { // does not exist, we should create it
|
251 | 48ce8b68 | Christodoulos Psaltis | // check server status to select the appropriate OS icon
|
252 | 48ce8b68 | Christodoulos Psaltis | if (['ERROR', 'STOPPED'].indexOf(server.status) >= 0) {
|
253 | e357c9f0 | Christodoulos Psaltis | osIcon = "static/os_logos/" + osTag + "-off.png";
|
254 | e357c9f0 | Christodoulos Psaltis | } else if ( server.status == 'BUILD') {
|
255 | e357c9f0 | Christodoulos Psaltis | osIcon = "static/progress.gif";
|
256 | e357c9f0 | Christodoulos Psaltis | } else {
|
257 | e357c9f0 | Christodoulos Psaltis | osIcon = "static/os_logos/" + osTag + ".png";
|
258 | eae0a59a | Dimitris Moraitis | }
|
259 | 63119250 | Christodoulos Psaltis | // find flavor parameters
|
260 | 2b7ae4be | Christodoulos Psaltis | var current_flavor = '';
|
261 | 2b7ae4be | Christodoulos Psaltis | for (i=0; i<flavors.length; i++) {
|
262 | 2b7ae4be | Christodoulos Psaltis | if (flavors[i]['id'] == server.flavorRef) {
|
263 | 2b7ae4be | Christodoulos Psaltis | current_flavor = flavors[i];
|
264 | 2b7ae4be | Christodoulos Psaltis | }
|
265 | 2b7ae4be | Christodoulos Psaltis | }
|
266 | 2b7ae4be | Christodoulos Psaltis | var flavor_label = '';
|
267 | 2b7ae4be | Christodoulos Psaltis | if (current_flavor['cpu'] == '1') {
|
268 | 36f65c1f | Christodoulos Psaltis | flavorLabel = '1 CPU, ';
|
269 | 36f65c1f | Christodoulos Psaltis | } else {
|
270 | 2b7ae4be | Christodoulos Psaltis | flavorLabel = current_flavor['cpu'] + ' CPUs, ';
|
271 | 36f65c1f | Christodoulos Psaltis | }
|
272 | 2b7ae4be | Christodoulos Psaltis | flavorLabel = flavorLabel + current_flavor['ram'] + 'MB, ' + current_flavor['disk'] + 'GB';
|
273 | 36f65c1f | Christodoulos Psaltis | |
274 | 48ce8b68 | Christodoulos Psaltis | // add new row to the table
|
275 | 48ce8b68 | Christodoulos Psaltis | vmTable.fnAddData([
|
276 | 48ce8b68 | Christodoulos Psaltis | "<input class=" + server.status + " id=" + server.id + " type=checkbox>",
|
277 | e357c9f0 | Christodoulos Psaltis | "<span class=imagetag>" + osTag + "</span><img class=list-logo src=" + osIcon +
|
278 | 48ce8b68 | Christodoulos Psaltis | " title=" + osTag + " height=16 width=16>",
|
279 | 48ce8b68 | Christodoulos Psaltis | "<a class=name><span class=name>" + server.name + "</span></a>",
|
280 | 36f65c1f | Christodoulos Psaltis | "<a class=flavor><span>"+ flavorLabel + "</span></a>",
|
281 | 48ce8b68 | Christodoulos Psaltis | "group",
|
282 | 48ce8b68 | Christodoulos Psaltis | "<span class=status>" + STATUS_MESSAGES[server.status] + "</span>"
|
283 | 48ce8b68 | Christodoulos Psaltis | ]);
|
284 | eae0a59a | Dimitris Moraitis | }
|
285 | eae0a59a | Dimitris Moraitis | });
|
286 | 1a49199e | Dimitris Moraitis | updateActions();
|
287 | 48ce8b68 | Christodoulos Psaltis | $("#spinner").hide();
|
288 | 48ce8b68 | Christodoulos Psaltis | // in case there are no data, leave the page empty
|
289 | eae0a59a | Dimitris Moraitis | if ($("div.list table.list-machines tbody").length > 0) {
|
290 | 48ce8b68 | Christodoulos Psaltis | $("div.list div.dataTables_filter").show();
|
291 | 48ce8b68 | Christodoulos Psaltis | $("div.list div.dataTables_filter input").show();
|
292 | eae0a59a | Dimitris Moraitis | $("div.list table.list-machines").show();
|
293 | eae0a59a | Dimitris Moraitis | $("div.list div.actions").show();
|
294 | eae0a59a | Dimitris Moraitis | }
|
295 | 6902f72e | clopy | |
296 | 6902f72e | clopy | // show message in case user has no servers!
|
297 | 6902f72e | clopy | if (servers.length == 0) {
|
298 | 6902f72e | clopy | showWelcome()
|
299 | 6902f72e | clopy | } else {
|
300 | 6902f72e | clopy | hideWelcome()
|
301 | f87e79a4 | Mike Muzurakis | $("#machinesview_content").fadeIn("fast")
|
302 | 6902f72e | clopy | }
|
303 | ed4781b5 | Dimitris Moraitis |
|
304 | ed4781b5 | Dimitris Moraitis | // set confirm box position
|
305 | e2ccad35 | Dimitris Moraitis | if (window.innerHeight - 200 < $('#machinesview').height())
|
306 | ed4781b5 | Dimitris Moraitis | $('.confirm_multiple').addClass('fixed');
|
307 | ed4781b5 | Dimitris Moraitis | else
|
308 | ed4781b5 | Dimitris Moraitis | $('.confirm_multiple').removeClass('fixed');
|
309 | eae0a59a | Dimitris Moraitis | }
|
310 | eae0a59a | Dimitris Moraitis | |
311 | a1a31201 | Dimitris Moraitis | function display_success(serverID) {
|
312 | 6d0a36e5 | Dimitris Moraitis | // do nothing
|
313 | 879748ec | Markos Gogoulos | }
|
314 | 879748ec | Markos Gogoulos | |
315 | 879748ec | Markos Gogoulos | // indicate that the requested action was not completed
|
316 | 038383b1 | Dimitris Moraitis | function display_failure(status, serverID, action, responseText) {
|
317 | 695e1b21 | Dimitris Moraitis | osIcon = $('#'+serverID).parent().parent().find('.list-logo');
|
318 | 695e1b21 | Dimitris Moraitis | osIcon.attr('src',osIcon.attr('os'));
|
319 | 038383b1 | Dimitris Moraitis | ajax_error(status, serverID, action, responseText);
|
320 | a1a31201 | Dimitris Moraitis | }
|
321 | a1a31201 | Dimitris Moraitis | |
322 | 48ce8b68 | Christodoulos Psaltis | var vmTable = $("div.list table.list-machines").dataTable({
|
323 | 48ce8b68 | Christodoulos Psaltis | "bInfo": false,
|
324 | 48ce8b68 | Christodoulos Psaltis | "bRetrieve": true,
|
325 | 48ce8b68 | Christodoulos Psaltis | "bPaginate": false,
|
326 | 48ce8b68 | Christodoulos Psaltis | "bAutoWidth": false,
|
327 | 48ce8b68 | Christodoulos Psaltis | "bSort": true,
|
328 | 48ce8b68 | Christodoulos Psaltis | "bStateSave": true,
|
329 | 48ce8b68 | Christodoulos Psaltis | "sScrollY": "270px",
|
330 | 48ce8b68 | Christodoulos Psaltis | "sScrollX": "515px",
|
331 | 48ce8b68 | Christodoulos Psaltis | "sScrollXInner": "500px",
|
332 | 48ce8b68 | Christodoulos Psaltis | "aoColumnDefs": [
|
333 | 48ce8b68 | Christodoulos Psaltis | { "bSortable": false, "aTargets": [ 0 ] }
|
334 | 48ce8b68 | Christodoulos Psaltis | ]
|
335 | 48ce8b68 | Christodoulos Psaltis | });
|
336 | 48ce8b68 | Christodoulos Psaltis | |
337 | 339712cb | Christodoulos Psaltis | // basic functions executed on page load
|
338 | 146b6003 | Dimitris Moraitis | if (images.length == 0) {
|
339 | 146b6003 | Dimitris Moraitis | // populate image list
|
340 | 146b6003 | Dimitris Moraitis | update_images();
|
341 | 146b6003 | Dimitris Moraitis | }
|
342 | 146b6003 | Dimitris Moraitis | if (flavors.length == 0) {
|
343 | 146b6003 | Dimitris Moraitis | // configure flavors
|
344 | 146b6003 | Dimitris Moraitis | update_flavors();
|
345 | 146b6003 | Dimitris Moraitis | }
|
346 | c53d09e2 | Christodoulos Psaltis | // set the label of the multiple buttons
|
347 | c53d09e2 | Christodoulos Psaltis | $('div.confirm_multiple button.yes').text('Confirm');
|
348 | c53d09e2 | Christodoulos Psaltis | $('div.confirm_multiple button.no').text('Cancel');
|
349 | 82bf6df0 | Dimitris Moraitis | // reposition multiple confirmation box on window resize
|
350 | 82bf6df0 | Dimitris Moraitis | $(window).resize(function(){
|
351 | 82bf6df0 | Dimitris Moraitis | if (this.innerHeight - 200 < $('#machinesview').height())
|
352 | 82bf6df0 | Dimitris Moraitis | $('.confirm_multiple').addClass('fixed');
|
353 | 82bf6df0 | Dimitris Moraitis | else
|
354 | 82bf6df0 | Dimitris Moraitis | $('.confirm_multiple').removeClass('fixed');
|
355 | 82bf6df0 | Dimitris Moraitis | });
|
356 | c53d09e2 | Christodoulos Psaltis | // start updating vm list
|
357 | 146b6003 | Dimitris Moraitis | update_vms(UPDATE_INTERVAL);
|
358 | 42f67a2a | Dimitris Moraitis | |
359 | 35b8688f | Christodoulos Psaltis | </script> |