Statistics
| Branch: | Tag: | Revision:

root / ui / templates / machines_single.html @ b13b401f

History | View | Annotate | Download (31.6 kB)

1 a5bc3755 Vangelis Koukis
<!--
2 a5bc3755 Vangelis Koukis
Copyright 2011 GRNET S.A. All rights reserved.
3 a5bc3755 Vangelis Koukis

4 a5bc3755 Vangelis Koukis
Redistribution and use in source and binary forms, with or
5 a5bc3755 Vangelis Koukis
without modification, are permitted provided that the following
6 a5bc3755 Vangelis Koukis
conditions are met:
7 a5bc3755 Vangelis Koukis

8 a5bc3755 Vangelis Koukis
  1. Redistributions of source code must retain the above
9 a5bc3755 Vangelis Koukis
     copyright notice, this list of conditions and the following
10 a5bc3755 Vangelis Koukis
     disclaimer.
11 a5bc3755 Vangelis Koukis

12 a5bc3755 Vangelis Koukis
  2. Redistributions in binary form must reproduce the above
13 a5bc3755 Vangelis Koukis
     copyright notice, this list of conditions and the following
14 a5bc3755 Vangelis Koukis
     disclaimer in the documentation and/or other materials
15 a5bc3755 Vangelis Koukis
     provided with the distribution.
16 a5bc3755 Vangelis Koukis

17 a5bc3755 Vangelis Koukis
THIS SOFTWARE IS PROVIDED BY GRNET S.A. ``AS IS'' AND ANY EXPRESS
18 a5bc3755 Vangelis Koukis
OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
19 a5bc3755 Vangelis Koukis
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
20 a5bc3755 Vangelis Koukis
PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GRNET S.A OR
21 a5bc3755 Vangelis Koukis
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
22 a5bc3755 Vangelis Koukis
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
23 a5bc3755 Vangelis Koukis
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
24 a5bc3755 Vangelis Koukis
USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
25 a5bc3755 Vangelis Koukis
AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
26 a5bc3755 Vangelis Koukis
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
27 a5bc3755 Vangelis Koukis
ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
28 a5bc3755 Vangelis Koukis
POSSIBILITY OF SUCH DAMAGE.
29 a5bc3755 Vangelis Koukis

30 a5bc3755 Vangelis Koukis
The views and conclusions contained in the software and
31 a5bc3755 Vangelis Koukis
documentation are those of the authors and should not be
32 a5bc3755 Vangelis Koukis
interpreted as representing official policies, either expressed
33 a5bc3755 Vangelis Koukis
or implied, of GRNET S.A.
34 a5bc3755 Vangelis Koukis
-->
35 a5bc3755 Vangelis Koukis
36 f533f224 Vangelis Koukis
{% load i18n %}
37 f533f224 Vangelis Koukis
38 f533f224 Vangelis Koukis
<!-- the single view -->
39 f533f224 Vangelis Koukis
<div id="machinesview-single" class="single">
40 f533f224 Vangelis Koukis
    <div class="large-spinner"></div>
41 f533f224 Vangelis Koukis
    <div class="single-container" id="machine-container-template" style="display:none;" >
42 dc3e66b9 Mike Muzurakis
        <div class="upper">
43 dc3e66b9 Mike Muzurakis
            <div class="column1">
44 dc3e66b9 Mike Muzurakis
                <div class='connect-border'></div>
45 dc3e66b9 Mike Muzurakis
                <div class='connect-arrow'></div>
46 dc3e66b9 Mike Muzurakis
                <img src="static/icons/machines/large/ubuntu-on.png" class="single-image" />
47 dc3e66b9 Mike Muzurakis
                <div class="state">
48 dc3e66b9 Mike Muzurakis
                    <span class="state-label">{% trans "Running" %}</span>
49 dc3e66b9 Mike Muzurakis
                    <div class="indicators">
50 dc3e66b9 Mike Muzurakis
                        <div class="indicator1"></div>
51 dc3e66b9 Mike Muzurakis
                        <div class="indicator2"></div>
52 dc3e66b9 Mike Muzurakis
                        <div class="indicator3"></div>
53 dc3e66b9 Mike Muzurakis
                        <div class="indicator4"></div>
54 dc3e66b9 Mike Muzurakis
                    </div>
55 dc3e66b9 Mike Muzurakis
                    <img class="spinner" style="display:none" src="static/icons/indicators/medium/progress.gif" />
56 dc3e66b9 Mike Muzurakis
                    <img class="wave" style="display:none" src="static/icons/indicators/medium/wave.gif" />
57 dc3e66b9 Mike Muzurakis
                </div>
58 dc3e66b9 Mike Muzurakis
            </div>
59 dc3e66b9 Mike Muzurakis
            <div class="column2">
60 dc3e66b9 Mike Muzurakis
                <div class="machine-labels">
61 dc3e66b9 Mike Muzurakis
                    <div class="machine-label name">{% trans "Name" %}:</div>
62 dc3e66b9 Mike Muzurakis
                    <div class="machine-label cpus">{% trans "CPUs" %}:</div>
63 dc3e66b9 Mike Muzurakis
                    <div class="machine-label ram">{% trans "RAM (MB)" %}:</div>
64 dc3e66b9 Mike Muzurakis
                    <div class="machine-label disk">{% trans "System Disk (GB)" %}:</div>
65 dc3e66b9 Mike Muzurakis
                    <div class="machine-label image-name">{% trans "Image Name" %}:</div>
66 dc3e66b9 Mike Muzurakis
                    <div class="machine-label image-size">{% trans "Image Size (GB)" %}:</div>
67 dc3e66b9 Mike Muzurakis
                    <div class="machine-label ipv4">{% trans "Public IPv4" %}:</div>
68 dc3e66b9 Mike Muzurakis
                    <div class="machine-label ipv6">{% trans "Public IPv6" %}:</div>
69 dc3e66b9 Mike Muzurakis
                </div>
70 dc3e66b9 Mike Muzurakis
                <div class="machine-details">
71 dc3e66b9 Mike Muzurakis
                    <div class="machine-detail name">My Desktop</div>
72 dc3e66b9 Mike Muzurakis
                    <div class="machine-detail cpus">4</div>
73 dc3e66b9 Mike Muzurakis
                    <div class="machine-detail ram">2048</div>
74 dc3e66b9 Mike Muzurakis
                    <div class="machine-detail disk">100</div>
75 dc3e66b9 Mike Muzurakis
                    <div class="machine-detail image-name">windos_XP_blah_blah</div>
76 dc3e66b9 Mike Muzurakis
                    <div class="machine-detail image-size">2.3</div>
77 dc3e66b9 Mike Muzurakis
                    <div class="machine-detail ipv4">no ipv4</div>
78 dc3e66b9 Mike Muzurakis
                    <div class="machine-detail ipv6">2001:db8:1f70::999:de8:7648:6e8</div>
79 1e7c8953 Mike Muzurakis
                </div>
80 1e7c8953 Mike Muzurakis
                <div class="tags">
81 1e7c8953 Mike Muzurakis
                    <div class="tags-header">
82 1e7c8953 Mike Muzurakis
                        <div class="tags-label">
83 1e7c8953 Mike Muzurakis
                            {% trans "Tags" %}
84 1e7c8953 Mike Muzurakis
                        </div>
85 1e7c8953 Mike Muzurakis
                        <div class="tags-down-arrow">
86 1e7c8953 Mike Muzurakis
                        </div>
87 1e7c8953 Mike Muzurakis
                    </div>
88 1e7c8953 Mike Muzurakis
                    <div class="tags-content">
89 dc3e66b9 Mike Muzurakis
                    </div>
90 dc3e66b9 Mike Muzurakis
                </div>
91 f533f224 Vangelis Koukis
            </div>
92 f533f224 Vangelis Koukis
            <div class="single-actions">
93 5e5df8fe Christodoulos Psaltis
                <div class="action-container start">
94 5e5df8fe Christodoulos Psaltis
                    <div class="single-action action-start">{% trans "Start" %}</div>
95 5e5df8fe Christodoulos Psaltis
                    <div class="confirm_single">
96 5e5df8fe Christodoulos Psaltis
                        <button class="yes">{% trans "Confirm" %}</button>
97 5e5df8fe Christodoulos Psaltis
                        <button class="no">X</button>
98 5e5df8fe Christodoulos Psaltis
                    </div>
99 5e5df8fe Christodoulos Psaltis
                </div>
100 5e5df8fe Christodoulos Psaltis
                <div class="action-container reboot">
101 5e5df8fe Christodoulos Psaltis
                    <div class="single-action action-reboot">{% trans "Reboot" %}</div>
102 5e5df8fe Christodoulos Psaltis
                    <div class="confirm_single">
103 5e5df8fe Christodoulos Psaltis
                        <button class="yes">{% trans "Confirm" %}</button>
104 5e5df8fe Christodoulos Psaltis
                        <button class="no">X</button>
105 5e5df8fe Christodoulos Psaltis
                    </div>
106 5e5df8fe Christodoulos Psaltis
                </div>
107 5e5df8fe Christodoulos Psaltis
                <div class="action-container shutdown">
108 5e5df8fe Christodoulos Psaltis
                    <div class="single-action action-shutdown">{% trans "Shutdown" %}</div>
109 5e5df8fe Christodoulos Psaltis
                    <div class="confirm_single">
110 5e5df8fe Christodoulos Psaltis
                        <button class="yes">{% trans "Confirm" %}</button>
111 5e5df8fe Christodoulos Psaltis
                        <button class="no">X</button>
112 5e5df8fe Christodoulos Psaltis
                    </div>
113 5e5df8fe Christodoulos Psaltis
                </div>
114 5e5df8fe Christodoulos Psaltis
                <div class="action-container console">
115 5e5df8fe Christodoulos Psaltis
                    <div class="single-action action-console">{% trans "Console" %}</div>
116 5e5df8fe Christodoulos Psaltis
                    <div class="confirm_single">
117 5e5df8fe Christodoulos Psaltis
                        <button class="yes">{% trans "Confirm" %}</button>
118 5e5df8fe Christodoulos Psaltis
                        <button class="no">X</button>
119 5e5df8fe Christodoulos Psaltis
                    </div>
120 5e5df8fe Christodoulos Psaltis
                </div>
121 5e5df8fe Christodoulos Psaltis
                <div class="action-container destroy">
122 5e5df8fe Christodoulos Psaltis
                    <div class="single-action action-destroy">{% trans "Destroy" %}</div>
123 5e5df8fe Christodoulos Psaltis
                    <div class="confirm_single">
124 5e5df8fe Christodoulos Psaltis
                        <button class="yes">{% trans "Confirm" %}</button>
125 5e5df8fe Christodoulos Psaltis
                        <button class="no">X</button>
126 5e5df8fe Christodoulos Psaltis
                    </div>
127 5e5df8fe Christodoulos Psaltis
                </div>
128 f533f224 Vangelis Koukis
            </div>
129 dc3e66b9 Mike Muzurakis
            <div class="action_error" align="center">
130 5e5df8fe Christodoulos Psaltis
                {% trans "<span>Error</span> on" %} <span class="action">{% trans "error action" %}</span>
131 dc3e66b9 Mike Muzurakis
                <span class="code"></span>
132 dc3e66b9 Mike Muzurakis
                <span class="message"></span>
133 dc3e66b9 Mike Muzurakis
                <button class="details">{% trans "Details" %}</button>
134 f533f224 Vangelis Koukis
            </div>
135 f533f224 Vangelis Koukis
        </div>
136 dc3e66b9 Mike Muzurakis
        <div class="lower">
137 a23fd087 Mike Muzurakis
            <div class="single-cpu">
138 a23fd087 Mike Muzurakis
                <div class="cpu-usage">
139 a23fd087 Mike Muzurakis
                    {% trans "CPU Usage" %}<span class="toggler">&#710;</span>
140 a23fd087 Mike Muzurakis
                </div>
141 a23fd087 Mike Muzurakis
                <div class="cpu-graph">
142 a23fd087 Mike Muzurakis
143 a23fd087 Mike Muzurakis
                </div>
144 dc3e66b9 Mike Muzurakis
            </div>
145 a23fd087 Mike Muzurakis
            <div class="single-network">
146 a23fd087 Mike Muzurakis
                <div class="network-usage">
147 a23fd087 Mike Muzurakis
                    {% trans "Network Usage" %}<span class="toggler">&#710;</span>
148 a23fd087 Mike Muzurakis
                </div>
149 a23fd087 Mike Muzurakis
                <div class="network-graph">
150 f533f224 Vangelis Koukis
151 a23fd087 Mike Muzurakis
                </div>
152 dc3e66b9 Mike Muzurakis
            </div>
153 f533f224 Vangelis Koukis
        </div>
154 f533f224 Vangelis Koukis
    </div>
155 f533f224 Vangelis Koukis
    <div class="column3">
156 f533f224 Vangelis Koukis
        <div class="controls">
157 92ce65f8 Mike Muzurakis
            <div class="previous" style="display:none;">
158 5e5df8fe Christodoulos Psaltis
                <div class="prev-arrow"></div>
159 a23fd087 Mike Muzurakis
                {% trans "previous" %}
160 f533f224 Vangelis Koukis
            </div>
161 92ce65f8 Mike Muzurakis
            <div class="next" style="display:none;">
162 a23fd087 Mike Muzurakis
                {% trans "next" %}
163 5e5df8fe Christodoulos Psaltis
                <div class="next-arrow"></div>
164 f533f224 Vangelis Koukis
            </div>
165 f533f224 Vangelis Koukis
        </div>
166 f533f224 Vangelis Koukis
        <div class="separator">
167 f533f224 Vangelis Koukis
        </div>
168 f533f224 Vangelis Koukis
        <div class="servers">
169 f533f224 Vangelis Koukis
            <div class="server-name" id="servers-widget-template" style="display:none;">server1</div>
170 f533f224 Vangelis Koukis
        </div>
171 f533f224 Vangelis Koukis
    </div>
172 f533f224 Vangelis Koukis
</div>
173 f533f224 Vangelis Koukis
174 f533f224 Vangelis Koukis
<script>
175 f533f224 Vangelis Koukis

176 f533f224 Vangelis Koukis
//hide the all of the info contents
177 f533f224 Vangelis Koukis
$("#machinesview-single.single .disks-content").hide();
178 f533f224 Vangelis Koukis
$("#machinesview-single.single .networks-content").hide();
179 f533f224 Vangelis Koukis
$("#machinesview-single.single .stats-content").hide();
180 f533f224 Vangelis Koukis

181 dc3e66b9 Mike Muzurakis
// indicate that the requested action was not completed
182 dc3e66b9 Mike Muzurakis
function display_failure(status, serverID, action, responseText) {
183 dc3e66b9 Mike Muzurakis
    $('#machinesview-single.single #'+serverID+ ' .spinner').hide();
184 dc3e66b9 Mike Muzurakis
    $('#machinesview-single.single #'+serverID+ ' .action_error .action').text(action);
185 dc3e66b9 Mike Muzurakis
    $('#machinesview-single.single #'+serverID+ ' .action_error .code').text(status);
186 dc3e66b9 Mike Muzurakis
    $('#machinesview-single.single #'+serverID+ ' .action_error .message').text(responseText);
187 dc3e66b9 Mike Muzurakis
    $('#machinesview-single.single #'+serverID+ ' .action_error').show();
188 dc3e66b9 Mike Muzurakis
}
189 dc3e66b9 Mike Muzurakis

190 dc3e66b9 Mike Muzurakis
// cancel action
191 dc3e66b9 Mike Muzurakis
$("#machinesview-single.single div.confirm_single .no").live('click', function(){
192 dc3e66b9 Mike Muzurakis
    pending_actions = [];
193 fbf48eee Christodoulos Psaltis
    $(".selected").removeClass("selected");
194 dc3e66b9 Mike Muzurakis
    update_confirmations();
195 dc3e66b9 Mike Muzurakis
});
196 dc3e66b9 Mike Muzurakis

197 92ce65f8 Mike Muzurakis
//show error popup box
198 dc3e66b9 Mike Muzurakis
$("#machinesview-single.single div.action_error .details").live('click', function(){
199 dc3e66b9 Mike Muzurakis
    // remove the action from the pending list
200 dc3e66b9 Mike Muzurakis
    ajax_error($(this).parent().children('.code').text(), undefined, $(this).parent().children('.action').text(), $(this).parent().children('.message').text());
201 dc3e66b9 Mike Muzurakis
    $(this).parent().hide();
202 dc3e66b9 Mike Muzurakis
});
203 dc3e66b9 Mike Muzurakis

204 dc3e66b9 Mike Muzurakis
//confirm action
205 dc3e66b9 Mike Muzurakis
$("#machinesview-single.single div.confirm_single .yes").live('click', function(){
206 5e5df8fe Christodoulos Psaltis
    var serverID = $(this).closest(".single-container").attr("id");
207 dc3e66b9 Mike Muzurakis
    console.info(serverID);
208 dc3e66b9 Mike Muzurakis
    for (i=0;i<pending_actions.length;i++){ // if there is a pending action for this server execute it
209 dc3e66b9 Mike Muzurakis
        if (pending_actions[i][1]==serverID){
210 dc3e66b9 Mike Muzurakis
            action = pending_actions.splice(i,1)[0]; // extract action
211 dc3e66b9 Mike Muzurakis
            // change the status text in cases where no api state exists
212 dc3e66b9 Mike Muzurakis
            if (action[0] == start) {
213 dc3e66b9 Mike Muzurakis
                $(this).parent().parent().find('.state-label').text(TRANSITIONS['Starting']);
214 dc3e66b9 Mike Muzurakis
                $(this).parent().parent().find('.state').removeClass().addClass('state starting-state');
215 dc3e66b9 Mike Muzurakis
                $(this).parent().parent().find('.spinner').show();
216 dc3e66b9 Mike Muzurakis
            } else if (action[0] == shutdown) {
217 dc3e66b9 Mike Muzurakis
                $(this).parent().parent().find('.state-label').text(TRANSITIONS['Shutting down']);
218 dc3e66b9 Mike Muzurakis
                $(this).parent().parent().find('.state').removeClass().addClass('state shutting-state');
219 dc3e66b9 Mike Muzurakis
                $(this).parent().parent().find('.spinner').show();
220 dc3e66b9 Mike Muzurakis
            } else if (action[0] == reboot) {
221 dc3e66b9 Mike Muzurakis
                $(this).parent().parent().find('.state-label').text(TRANSITIONS['Rebooting']);
222 dc3e66b9 Mike Muzurakis
                $(this).parent().parent().find('.state').removeClass().addClass('state rebooting-state');
223 dc3e66b9 Mike Muzurakis
                $(this).parent().parent().find('.spinner').show();
224 dc3e66b9 Mike Muzurakis
            }  else if (action[0] == destroy) {
225 dc3e66b9 Mike Muzurakis
                $(this).parent().parent().find('.state-label').text(TRANSITIONS['Destroying']);
226 dc3e66b9 Mike Muzurakis
                $(this).parent().parent().find('.state').removeClass().addClass('state destroying-state');
227 dc3e66b9 Mike Muzurakis
                $(this).parent().parent().find('.spinner').show();
228 dc3e66b9 Mike Muzurakis
            }
229 dc3e66b9 Mike Muzurakis
            action[0]([action[1]]); // execute action
230 dc3e66b9 Mike Muzurakis
        }
231 dc3e66b9 Mike Muzurakis
    }
232 dc3e66b9 Mike Muzurakis
    $(this).parent().hide();
233 fbf48eee Christodoulos Psaltis
    $(this).closest('div.action-container').children('div.single-action').removeClass('selected');
234 dc3e66b9 Mike Muzurakis
    $(this).parent().parent().children('.state').children('.spinner').show()
235 dc3e66b9 Mike Muzurakis
    update_confirmations();
236 dc3e66b9 Mike Muzurakis
    return false;
237 dc3e66b9 Mike Muzurakis
});
238 dc3e66b9 Mike Muzurakis

239 dc3e66b9 Mike Muzurakis

240 f533f224 Vangelis Koukis
// intercept start click
241 f533f224 Vangelis Koukis
$("#machinesview-single.single div.action-start").live('click', function(){
242 5e5df8fe Christodoulos Psaltis
    var serverID = $(this).closest(".single-container").attr("id");
243 5e5df8fe Christodoulos Psaltis
    var serverName = $(this).closest("div.upper").find(".machine-details div.name").text();
244 b13b401f Christodoulos Psaltis
    $('#machinesview-single').find('div.single-action').removeClass('selected');
245 f533f224 Vangelis Koukis
    $(this).addClass('selected');
246 f533f224 Vangelis Koukis
    $(this).parent().parent().find('.action_error').hide();
247 b13b401f Christodoulos Psaltis
    // reset pending actions so not to allow multiple actions in this view
248 b13b401f Christodoulos Psaltis
    pending_actions = [];
249 b13b401f Christodoulos Psaltis
    pending_actions.push([start, serverID, serverName]);
250 b13b401f Christodoulos Psaltis
    update_confirmations();
251 f533f224 Vangelis Koukis
    return false;
252 f533f224 Vangelis Koukis
});
253 f533f224 Vangelis Koukis

254 dc3e66b9 Mike Muzurakis
// intercept shutdown click
255 dc3e66b9 Mike Muzurakis
$("#machinesview-single.single div.action-shutdown").live('click', function(){
256 5e5df8fe Christodoulos Psaltis
    var serverID = $(this).closest(".single-container").attr("id");
257 5e5df8fe Christodoulos Psaltis
    var serverName = $(this).closest("div.upper").find(".machine-details div.name").text();
258 b13b401f Christodoulos Psaltis
    $('#machinesview-single').find('div.single-action').removeClass('selected');
259 dc3e66b9 Mike Muzurakis
    $(this).addClass('selected');
260 dc3e66b9 Mike Muzurakis
    $(this).parent().parent().find('.action_error').hide();
261 b13b401f Christodoulos Psaltis
    // reset pending actions so not to allow multiple actions in this view
262 b13b401f Christodoulos Psaltis
    pending_actions = [];
263 b13b401f Christodoulos Psaltis
    pending_actions.push([shutdown, serverID, serverName]);
264 dc3e66b9 Mike Muzurakis
    update_confirmations();
265 dc3e66b9 Mike Muzurakis
    return false;
266 dc3e66b9 Mike Muzurakis
});
267 dc3e66b9 Mike Muzurakis

268 dc3e66b9 Mike Muzurakis
// intercept reboot click
269 dc3e66b9 Mike Muzurakis
$("#machinesview-single.single div.action-reboot").live('click', function(){
270 5e5df8fe Christodoulos Psaltis
    var serverID = $(this).closest(".single-container").attr("id");
271 5e5df8fe Christodoulos Psaltis
    var serverName = $(this).closest("div.upper").find(".machine-details div.name").text();
272 b13b401f Christodoulos Psaltis
    $('#machinesview-single').find('div.single-action').removeClass('selected');
273 dc3e66b9 Mike Muzurakis
    $(this).addClass('selected');
274 dc3e66b9 Mike Muzurakis
    $(this).parent().parent().find('.action_error').hide();
275 b13b401f Christodoulos Psaltis
    // reset pending actions so not to allow multiple actions in this view
276 b13b401f Christodoulos Psaltis
    pending_actions = [];
277 b13b401f Christodoulos Psaltis
    pending_actions.push([reboot, serverID, serverName]);
278 dc3e66b9 Mike Muzurakis
    update_confirmations();
279 dc3e66b9 Mike Muzurakis
    return false;
280 dc3e66b9 Mike Muzurakis
});
281 dc3e66b9 Mike Muzurakis

282 dc3e66b9 Mike Muzurakis
// intercept destroy click
283 dc3e66b9 Mike Muzurakis
$("#machinesview-single.single div.action-destroy").live('click', function(){
284 5e5df8fe Christodoulos Psaltis
    var serverID = $(this).closest(".single-container").attr("id");
285 5e5df8fe Christodoulos Psaltis
    var serverName = $(this).closest("div.upper").find(".machine-details div.name").text();
286 b13b401f Christodoulos Psaltis
    $('#machinesview-single').find('div.single-action').removeClass('selected');
287 dc3e66b9 Mike Muzurakis
    $(this).addClass('selected');
288 dc3e66b9 Mike Muzurakis
    $(this).parent().parent().find('.action_error').hide();
289 b13b401f Christodoulos Psaltis
    // reset pending actions so not to allow multiple actions in this view
290 b13b401f Christodoulos Psaltis
    pending_actions = [];
291 b13b401f Christodoulos Psaltis
    pending_actions.push([destroy, serverID, serverName]);
292 dc3e66b9 Mike Muzurakis
    update_confirmations();
293 dc3e66b9 Mike Muzurakis
    return false;
294 dc3e66b9 Mike Muzurakis
});
295 dc3e66b9 Mike Muzurakis

296 dc3e66b9 Mike Muzurakis
// intercept console click
297 dc3e66b9 Mike Muzurakis
$("#machinesview-single.single div.action-console").live('click', function(){
298 5e5df8fe Christodoulos Psaltis
    var serverID = $(this).closest(".single-container").attr("id");
299 5e5df8fe Christodoulos Psaltis
    var serverName = $(this).closest("div.upper").find(".machine-details div.name").text();
300 b13b401f Christodoulos Psaltis
    $('#machinesview-single').find('div.single-action').removeClass('selected');
301 dc3e66b9 Mike Muzurakis
    $(this).addClass('selected');
302 dc3e66b9 Mike Muzurakis
    $(this).parent().parent().find('.action_error').hide();
303 b13b401f Christodoulos Psaltis
    // reset pending actions so not to allow multiple actions in this view
304 b13b401f Christodoulos Psaltis
    pending_actions = [];
305 b13b401f Christodoulos Psaltis
    pending_actions.push([open_console, serverID, serverName]);
306 dc3e66b9 Mike Muzurakis
    update_confirmations();
307 dc3e66b9 Mike Muzurakis
    return false;
308 dc3e66b9 Mike Muzurakis
});
309 dc3e66b9 Mike Muzurakis

310 dc3e66b9 Mike Muzurakis
// open console on connect arrow click
311 dc3e66b9 Mike Muzurakis
$("#machinesview-single.single div.connect-arrow").live('click', function(){
312 dc3e66b9 Mike Muzurakis
    $(this).parent().parent().find("div.action-console").click();
313 dc3e66b9 Mike Muzurakis
    return false;
314 dc3e66b9 Mike Muzurakis
});
315 dc3e66b9 Mike Muzurakis

316 dc3e66b9 Mike Muzurakis
// open console on connect arrow border click
317 dc3e66b9 Mike Muzurakis
$("#machinesview-single.single div.connect-border").live('click', function(){
318 dc3e66b9 Mike Muzurakis
    $(this).parent().parent().find("div.action-console").click();
319 dc3e66b9 Mike Muzurakis
    return false;
320 dc3e66b9 Mike Muzurakis
});
321 dc3e66b9 Mike Muzurakis

322 f533f224 Vangelis Koukis
// update the servers list
323 f533f224 Vangelis Koukis
function update_machines_view(data){
324 f533f224 Vangelis Koukis
    /*
325 f533f224 Vangelis Koukis
    Go through the servers in the input data. Update existing entries, add
326 f533f224 Vangelis Koukis
    new ones to the list
327 f533f224 Vangelis Koukis
    */
328 09828cb5 Mike Muzurakis

329 f533f224 Vangelis Koukis
    $.each(data.servers.values, function(i,server){
330 f533f224 Vangelis Koukis

331 f533f224 Vangelis Koukis
        existing = $('#machinesview-single.single #' + server.id);
332 bde8af74 Mike Muzurakis
        existing_link = $('#machinesview-single div.column3 #link-' + server.id);
333 92ce65f8 Mike Muzurakis
        var current_Id = current_serverId();
334 f533f224 Vangelis Koukis

335 f533f224 Vangelis Koukis
        //hide next button if there is only one vm
336 f533f224 Vangelis Koukis
        if (data.servers.values.length == 1) {
337 f533f224 Vangelis Koukis
            $("#machinesview-single.single .column3 .next").hide();
338 f533f224 Vangelis Koukis
        }
339 f533f224 Vangelis Koukis

340 f533f224 Vangelis Koukis
        // if multiple machines exist in the DOM, delete all but one
341 f533f224 Vangelis Koukis
        // defensive coding - that shouldn't happen normally
342 f533f224 Vangelis Koukis
        while (existing.length > 1){
343 f533f224 Vangelis Koukis
            existing.remove();
344 f533f224 Vangelis Koukis
        }
345 09828cb5 Mike Muzurakis
        // get server OS, if it exists
346 09828cb5 Mike Muzurakis
        if (!(server.metadata == undefined)) {
347 09828cb5 Mike Muzurakis
            var server_image = os_icon(server.metadata);
348 09828cb5 Mike Muzurakis
        } else {
349 09828cb5 Mike Muzurakis
            var server_image = "unknown"
350 09828cb5 Mike Muzurakis
        }
351 09828cb5 Mike Muzurakis
        // get server status message, if it exists
352 09828cb5 Mike Muzurakis
        var current_message = existing.find(".state-label").text();
353 f533f224 Vangelis Koukis

354 f533f224 Vangelis Koukis
        // server already exists in DOM
355 f533f224 Vangelis Koukis
        if (existing.length){
356 f533f224 Vangelis Koukis
            $("#machinesview-single.single div.single-container:last-child").find("div.separator").show();
357 f533f224 Vangelis Koukis
            //  if the status is deleted, delete it from the DOM
358 f533f224 Vangelis Koukis
            if (server.status == 'DELETED') {
359 f533f224 Vangelis Koukis
                existing.remove();
360 bde8af74 Mike Muzurakis
                existing_link.remove();
361 92ce65f8 Mike Muzurakis
                //if the deleted vm is the displayed one, display the 1st vm
362 92ce65f8 Mike Muzurakis
                if (server.id == current_Id) {
363 92ce65f8 Mike Muzurakis
                    $("#machinesview-single.single div.single-container:eq(1)").show()
364 92ce65f8 Mike Muzurakis
                    $('#machinesview-single.single .column3').find('.server-name:eq(1)').addClass('selected');
365 92ce65f8 Mike Muzurakis
                }
366 f533f224 Vangelis Koukis
                try {
367 92ce65f8 Mike Muzurakis
                    console.info(existing.find(".machine-details div.name").text() + ' removed');
368 f533f224 Vangelis Koukis
                } catch(err) {}
369 09828cb5 Mike Muzurakis
            }
370 09828cb5 Mike Muzurakis
            // if the status has changed
371 09828cb5 Mike Muzurakis
            else if ( current_message != STATUSES[server.status]) {
372 09828cb5 Mike Muzurakis
                /*
373 09828cb5 Mike Muzurakis
                Here there are 4 possibilities:
374 09828cb5 Mike Muzurakis
                    1. From an active state to an inactive one
375 09828cb5 Mike Muzurakis
                    2. From an inactive state to an active one
376 09828cb5 Mike Muzurakis
                    3. From an active state to a different active one
377 09828cb5 Mike Muzurakis
                    4. From an inactive state to a different inactive one
378 09828cb5 Mike Muzurakis
                The last two (3, 4) can be dealt with the same way
379 09828cb5 Mike Muzurakis
                */
380 09828cb5 Mike Muzurakis
                if (ACTIVE_STATES.indexOf(current_message) >= 0 &&
381 09828cb5 Mike Muzurakis
                    INACTIVE_STATES.indexOf(STATUSES[server.status]) >= 0) {
382 09828cb5 Mike Muzurakis
                    // from an active state to an inactive one
383 09828cb5 Mike Muzurakis
                    log_server_status_change(existing, server.status);
384 f533f224 Vangelis Koukis
                    existing.find("img.single-image").attr("src","static/icons/machines/large/" + server_image + '-off.png');
385 f533f224 Vangelis Koukis
                    existing.find(".state-label").text(STATUSES[server.status]);
386 dc3e66b9 Mike Muzurakis
                    existing.find(".connect-border").hide();
387 dc3e66b9 Mike Muzurakis
                    existing.find(".connect-arrow").hide();
388 dc3e66b9 Mike Muzurakis
                    existing.find(".spinner").hide();
389 dc3e66b9 Mike Muzurakis
                    existing.find(' .wave').attr('src','static/icons/indicators/medium/wave.gif').show();
390 dc3e66b9 Mike Muzurakis
                    existing.find(".state").removeClass().addClass("state terminated-state");
391 dc3e66b9 Mike Muzurakis
                    setTimeout("$('#" + server.id +" .wave').attr('src','').hide()", 3000);
392 09828cb5 Mike Muzurakis
                }
393 09828cb5 Mike Muzurakis
                else if (INACTIVE_STATES.indexOf(current_message) >= 0 &&
394 09828cb5 Mike Muzurakis
                         ACTIVE_STATES.indexOf(STATUSES[server.status]) >= 0) {
395 09828cb5 Mike Muzurakis
                    // From an inactive state to an active one
396 09828cb5 Mike Muzurakis
                    log_server_status_change(existing, server.status);
397 09828cb5 Mike Muzurakis
                    existing.find("img.single-image").attr("src","static/icons/machines/large/" + server_image + '-on.png');
398 f533f224 Vangelis Koukis
                    existing.find(".state-label").text(STATUSES[server.status]);
399 dc3e66b9 Mike Muzurakis
                    existing.find(".connect-border").show();
400 dc3e66b9 Mike Muzurakis
                    existing.find(".connect-arrow").show();
401 dc3e66b9 Mike Muzurakis
                    existing.find(".spinner").hide();
402 dc3e66b9 Mike Muzurakis
                    existing.find(' .wave').attr('src','static/icons/indicators/medium/wave.gif').show();
403 dc3e66b9 Mike Muzurakis
                    existing.find(".state").removeClass().addClass("state running-state");
404 dc3e66b9 Mike Muzurakis
                    setTimeout("$('#" + server.id +" .wave').attr('src','').hide()", 3000);
405 f533f224 Vangelis Koukis
                }
406 09828cb5 Mike Muzurakis
                else {
407 09828cb5 Mike Muzurakis
                    // handling active to active or inactive to inactive changes
408 09828cb5 Mike Muzurakis
                    if (TRANSITIONS[current_message] && TRANSITIONS[current_message] != 'Rebooting') {
409 09828cb5 Mike Muzurakis
                        // don't do anything if it is still in transition
410 09828cb5 Mike Muzurakis
                    }
411 09828cb5 Mike Muzurakis
                    else if ((TRANSITIONS[current_message] == 'Rebooting' && server.status == 'ACTIVE') ||
412 09828cb5 Mike Muzurakis
                             (STATUSES['BUILD'] == current_message && server.status == 'ACTIVE')) {
413 09828cb5 Mike Muzurakis
                        // if it has been rebooted or just created
414 09828cb5 Mike Muzurakis
                        log_server_status_change(existing, server.status);
415 09828cb5 Mike Muzurakis
                        existing.find(".state-label").text(STATUSES[server.status]);
416 dc3e66b9 Mike Muzurakis
                        existing.find(".connect-border").show();
417 dc3e66b9 Mike Muzurakis
                        existing.find(".connect-arrow").show();
418 dc3e66b9 Mike Muzurakis
                        existing.find(".spinner").hide();
419 dc3e66b9 Mike Muzurakis
                        existing.find(' .wave').attr('src','static/icons/indicators/medium/wave.gif').show();
420 dc3e66b9 Mike Muzurakis
                        existing.find(".state").removeClass().addClass("state running-state");
421 dc3e66b9 Mike Muzurakis
                        setTimeout("$('#" + server.id +" .wave').attr('src','').hide()", 3000);
422 09828cb5 Mike Muzurakis
                    }
423 09828cb5 Mike Muzurakis
                    else {
424 09828cb5 Mike Muzurakis
                        // in any other case just change the status and ignore spinners/waves
425 09828cb5 Mike Muzurakis
                        existing.find(".state-label").text(STATUSES[server.status]);
426 09828cb5 Mike Muzurakis
                    }
427 f533f224 Vangelis Koukis
                }
428 f533f224 Vangelis Koukis
            }
429 f533f224 Vangelis Koukis
            // find and display ips
430 f533f224 Vangelis Koukis
            var ips = get_public_ips(server);
431 f533f224 Vangelis Koukis
            existing.find(".machine-details div.ipv4").text(ips['ip4']);
432 f533f224 Vangelis Koukis
            existing.find(".machine-details div.ipv6").text(ips['ip6']);
433 09828cb5 Mike Muzurakis

434 f533f224 Vangelis Koukis
        } else if (server.status != 'DELETED') {
435 f533f224 Vangelis Koukis
            // If it does not exist and it's not deleted, we should create it
436 f533f224 Vangelis Koukis
            var serverwidget = $("#servers-widget-template").clone().attr("id", 'link-' + server.id);
437 f533f224 Vangelis Koukis
            if (server.name.length > 18) {
438 f533f224 Vangelis Koukis
                serverwidget.text(server.name.substring(0,15) + '...');
439 f533f224 Vangelis Koukis
            } else {
440 f533f224 Vangelis Koukis
                serverwidget.text(server.name)
441 f533f224 Vangelis Koukis
            }
442 f533f224 Vangelis Koukis
            serverwidget.appendTo('.servers');
443 f533f224 Vangelis Koukis
            serverwidget.show();
444 92ce65f8 Mike Muzurakis
            //find and hide the previously selected server
445 f533f224 Vangelis Koukis
            $('.single').find('.single-container').hide();
446 f533f224 Vangelis Koukis
            $('.single .column3').find('.selected').removeClass('selected');
447 f533f224 Vangelis Koukis
            //create and select the new one
448 f533f224 Vangelis Koukis
            var machine = $("#machinesview-single.single #machine-container-template").clone().attr("id", server.id);
449 f533f224 Vangelis Koukis
            machine.find(".machine-details div.name").text(server.name.substring(0,100));
450 f533f224 Vangelis Koukis
            machine.find("img.single-image").attr("src","static/icons/machines/large/"+server_image+'-on.png');
451 f533f224 Vangelis Koukis
            machine.find("span.imagetag").text(server_image);
452 f533f224 Vangelis Koukis
            machine.find(".state-label").text(STATUSES[server.status]);
453 f533f224 Vangelis Koukis
            // find and display ips
454 f533f224 Vangelis Koukis
            var ips = get_public_ips(server);
455 f533f224 Vangelis Koukis
            machine.find(".machine-details div.ipv4").text(ips['ip4']);
456 f533f224 Vangelis Koukis
            machine.find(".machine-details div.ipv6").text(ips['ip6']);
457 f533f224 Vangelis Koukis
            // find and display flavor parameters
458 f533f224 Vangelis Koukis
            var CPUs, RAM, disk, image_name, image_size;
459 f533f224 Vangelis Koukis
            if ( flavors.length > 0 ) {
460 f533f224 Vangelis Koukis
                var current_flavor = '';
461 f533f224 Vangelis Koukis
                for (i=0; i<flavors.length; i++) {
462 f533f224 Vangelis Koukis
                    if (flavors[i]['id'] == server.flavorRef) {
463 f533f224 Vangelis Koukis
                        current_flavor = flavors[i];
464 f533f224 Vangelis Koukis
                    }
465 f533f224 Vangelis Koukis
                }
466 f533f224 Vangelis Koukis
                CPUs = current_flavor['cpu'];
467 f533f224 Vangelis Koukis
                RAM = current_flavor['ram'];
468 f533f224 Vangelis Koukis
                disk = current_flavor['disk'];
469 f533f224 Vangelis Koukis
            } else {
470 f533f224 Vangelis Koukis
                CPUs = 0;
471 f533f224 Vangelis Koukis
                RAM = 0;
472 f533f224 Vangelis Koukis
                disk = 0;
473 f533f224 Vangelis Koukis
            }
474 f533f224 Vangelis Koukis
            if ( images.length > 0 ) {
475 f533f224 Vangelis Koukis
                var current_image = '';
476 f533f224 Vangelis Koukis
                for (i=0; i<images.length; i++) {
477 f533f224 Vangelis Koukis
                    if (images[i]['id'] == server.imageRef) {
478 f533f224 Vangelis Koukis
                        current_image = images[i];
479 f533f224 Vangelis Koukis
                    }
480 f533f224 Vangelis Koukis
                }
481 f533f224 Vangelis Koukis
                image_name = current_image['name'];
482 f533f224 Vangelis Koukis
                image_size = current_image['metadata']['values']['size'];
483 f533f224 Vangelis Koukis
            } else {
484 f533f224 Vangelis Koukis
                image_name = ''
485 f533f224 Vangelis Koukis
                image_size = ''
486 f533f224 Vangelis Koukis
            }
487 f533f224 Vangelis Koukis
            machine.find(".machine-details div.cpus").text(CPUs);
488 f533f224 Vangelis Koukis
            machine.find(".machine-details div.ram").text(RAM);
489 f533f224 Vangelis Koukis
            machine.find(".machine-details div.disk").text(disk);
490 dc3e66b9 Mike Muzurakis
            machine.find(".machine-details div.image-name").text(image_name.substring(0,35));
491 f533f224 Vangelis Koukis
            machine.find(".machine-details div.image-size").text(image_size);
492 f533f224 Vangelis Koukis
            //show off image if server is not active
493 f533f224 Vangelis Koukis
            if (['BUILD', 'ACTIVE', 'REBOOT'].indexOf(server.status) < 0){
494 f533f224 Vangelis Koukis
                    machine.find("img.single-image").attr("src","static/icons/machines/large/"+server_image+'-off.png');
495 dc3e66b9 Mike Muzurakis
                    machine.find(".connect-border").hide();
496 dc3e66b9 Mike Muzurakis
                    machine.find(".connect-arrow").hide();
497 dc3e66b9 Mike Muzurakis
                    machine.find(".state").removeClass().addClass("state terminated-state");
498 f533f224 Vangelis Koukis
            }
499 9f57e631 Mike Muzurakis
            //show spinner while machine is building or rebooting
500 f533f224 Vangelis Koukis
            if (server.status == 'BUILD' ||
501 f533f224 Vangelis Koukis
                [TRANSITIONS['Starting'], TRANSITIONS['Shutting down']].indexOf(existing.find(".status").text()) >= 0 ) {
502 f533f224 Vangelis Koukis
                machine.find('.spinner').show();
503 dc3e66b9 Mike Muzurakis
                machine.find(".connect-border").hide();
504 dc3e66b9 Mike Muzurakis
                machine.find(".connect-arrow").hide();
505 9f57e631 Mike Muzurakis
                machine.find('.state').removeClass().addClass('state build-state');
506 9f57e631 Mike Muzurakis
            }
507 9f57e631 Mike Muzurakis
            if (server.status == 'REBOOT') {
508 9f57e631 Mike Muzurakis
                machine.find('.spinner').show();
509 9f57e631 Mike Muzurakis
                machine.find(".connect-border").hide();
510 9f57e631 Mike Muzurakis
                machine.find(".connect-arrow").hide();
511 9f57e631 Mike Muzurakis
                machine.find('.state').removeClass().addClass('state rebooting-state');
512 f533f224 Vangelis Koukis
            }
513 f533f224 Vangelis Koukis
            machine.appendTo("#machinesview-single.single");
514 f533f224 Vangelis Koukis
            //disable reboot and shutdown actions while machine is building
515 f533f224 Vangelis Koukis
            if (server.status == 'BUILD') {
516 f533f224 Vangelis Koukis
                $('#machinesview-single.single div.#' + server.id + ' div.action-reboot').hide();
517 f533f224 Vangelis Koukis
                $('#machinesview-single.single div.#' + server.id + ' div.action-shutdown').hide();
518 f533f224 Vangelis Koukis
            }
519 f533f224 Vangelis Koukis
            // show console action only on active servers
520 f533f224 Vangelis Koukis
            if (server.status == 'ACTIVE') {
521 f533f224 Vangelis Koukis
                $('#machinesview-single.single div.#' + server.id + ' div.action-console').show();
522 f533f224 Vangelis Koukis
                $('#machinesview-single.single div.#' + server.id + ' div.action-start').hide();
523 dc3e66b9 Mike Muzurakis
                machine.find(".connect-border").show();
524 dc3e66b9 Mike Muzurakis
                machine.find(".connect-arrow").show();
525 f533f224 Vangelis Koukis
            } else if (server.status == 'REBOOT'){
526 f533f224 Vangelis Koukis
                $('#machinesview-single.single div.#' + server.id + ' div.action-console').hide();
527 f533f224 Vangelis Koukis
            } else {
528 f533f224 Vangelis Koukis
                $('#machinesview-single.single div.#' + server.id + ' div.action-console').hide();
529 f533f224 Vangelis Koukis
                $('#machinesview-single.single div.#' + server.id + ' div.action-reboot').hide();
530 f533f224 Vangelis Koukis
                $('#machinesview-single.single div.#' + server.id + ' div.action-shutdown').hide();
531 f533f224 Vangelis Koukis
            }
532 09828cb5 Mike Muzurakis
            //show the first machine and select it in the widget
533 09828cb5 Mike Muzurakis
            $('.single-container:eq(1)').show();
534 09828cb5 Mike Muzurakis
            $('.single .column3').find('.server-name:eq(1)').addClass('selected');
535 f533f224 Vangelis Koukis
        }
536 dc3e66b9 Mike Muzurakis
    update_iconview_actions(server.id, server.status);
537 f533f224 Vangelis Koukis
    });
538 f533f224 Vangelis Koukis
    $("#machinesview-single.single > div.large-spinner").hide();
539 f533f224 Vangelis Koukis

540 f533f224 Vangelis Koukis
    // show message in case user has no servers!
541 f533f224 Vangelis Koukis
    //if ($('.single-container').length < 2) {
542 f533f224 Vangelis Koukis
    //    showWelcome();
543 f533f224 Vangelis Koukis
    //} else {
544 f533f224 Vangelis Koukis
    //    hideWelcome();
545 f533f224 Vangelis Koukis
    //}
546 f533f224 Vangelis Koukis

547 f533f224 Vangelis Koukis
    // set confirm box position
548 f533f224 Vangelis Koukis
    if (window.innerHeight - 220 < $('#machinesview-single').height())
549 f533f224 Vangelis Koukis
        $('.confirm_multiple').addClass('fixed');
550 f533f224 Vangelis Koukis
    else
551 f533f224 Vangelis Koukis
        $('.confirm_multiple').removeClass('fixed');
552 f533f224 Vangelis Koukis

553 f533f224 Vangelis Koukis
    //enable widget links
554 f533f224 Vangelis Koukis
    $(".server-name").live('click', function() {
555 f533f224 Vangelis Koukis
        $('.single').find('.single-container').hide()
556 f533f224 Vangelis Koukis
        $('.single').find('#' + $(this).attr('id').substring(5)).show();
557 f533f224 Vangelis Koukis
        $('.single .column3').find('.selected').removeClass('selected');
558 f533f224 Vangelis Koukis
        $(this).addClass('selected');
559 92ce65f8 Mike Muzurakis
        //show prev next links only if there are prev next servers
560 92ce65f8 Mike Muzurakis
        if ($("#machinesview-single.single .column3 .selected").attr("id") != $("#machinesview-single.single .column3 .server-name:eq(1)").attr("id")) {
561 92ce65f8 Mike Muzurakis
            $(".single .column3 .previous").show();
562 92ce65f8 Mike Muzurakis
        } else {
563 f533f224 Vangelis Koukis
            $(".single .column3 .previous").hide();
564 92ce65f8 Mike Muzurakis
        }
565 92ce65f8 Mike Muzurakis
        if ($("#machinesview-single.single .column3 .selected").attr("id") != $("#machinesview-single.single .column3 .server-name:last").attr("id")) {
566 92ce65f8 Mike Muzurakis
            $(".single .column3 .next").show();
567 92ce65f8 Mike Muzurakis
        } else {
568 f533f224 Vangelis Koukis
            $(".single .column3 .next").hide();
569 f533f224 Vangelis Koukis
        }
570 f533f224 Vangelis Koukis
    });
571 f533f224 Vangelis Koukis

572 f533f224 Vangelis Koukis
    if ($.cookie('server')) {
573 f533f224 Vangelis Koukis
        $('div#link-' + $.cookie('server')).click();
574 f533f224 Vangelis Koukis
        $.cookie('server', null);
575 f533f224 Vangelis Koukis
    }
576 f533f224 Vangelis Koukis

577 f533f224 Vangelis Koukis
    //if it is the last vm, hide the next button
578 f533f224 Vangelis Koukis
    if ($("#machinesview-single.single .column3 .selected").attr("id") == $("#machinesview-single.single .column3 .server-name:last").attr("id")) {
579 f533f224 Vangelis Koukis
        $("#machinesview-single.single .column3 .next").hide()
580 f533f224 Vangelis Koukis
    } else {
581 f533f224 Vangelis Koukis
        $("#machinesview-single.single .column3 .next").show()
582 f533f224 Vangelis Koukis
    }
583 f533f224 Vangelis Koukis

584 f533f224 Vangelis Koukis
    //if it is the first vm, hide the prev button
585 f533f224 Vangelis Koukis
    if ($("#machinesview-single.single .column3 .selected").attr("id") == $("#machinesview-single.single .column3 .server-name:eq(1)").attr("id")) {
586 f533f224 Vangelis Koukis
        $("#machinesview-single.single .column3 .previous").hide()
587 f533f224 Vangelis Koukis
    } else {
588 f533f224 Vangelis Koukis
        $("#machinesview-single.single .column3 .previous").show()
589 f533f224 Vangelis Koukis
    }
590 92ce65f8 Mike Muzurakis
}
591 f533f224 Vangelis Koukis

592 92ce65f8 Mike Muzurakis
//get currently displayed serverId
593 92ce65f8 Mike Muzurakis
function current_serverId() {
594 92ce65f8 Mike Muzurakis
    return $("#machinesview-single.single").find("div.single-container:visible").attr("id");
595 f533f224 Vangelis Koukis
}
596 f533f224 Vangelis Koukis

597 f533f224 Vangelis Koukis
//enable prev-next buttons
598 b13b401f Christodoulos Psaltis
$("#machinesview-single.single .column3 .previous").live('click', function() {
599 b13b401f Christodoulos Psaltis
    // set behavior
600 f533f224 Vangelis Koukis
    if ($("#machinesview-single.single .column3 .selected").attr("id") == $("#machinesview-single.single .column3 .server-name:eq(1)").attr("id")) {
601 f533f224 Vangelis Koukis
        return false;
602 f533f224 Vangelis Koukis
    } else {
603 f533f224 Vangelis Koukis
        current_server = $('#machinesview-single.single .column3').find('.selected').attr("id").substring(5);
604 f533f224 Vangelis Koukis
        $('#machinesview-single.single').find('#' + current_server).hide();
605 f533f224 Vangelis Koukis
        $('#machinesview-single.single').find('#' + current_server).prev().show();
606 f533f224 Vangelis Koukis
        $('#machinesview-single.single .column3').find('#link-' + current_server).removeClass('selected');
607 f533f224 Vangelis Koukis
        $('#machinesview-single.single .column3').find('#link-' + current_server).prev().addClass('selected');
608 f533f224 Vangelis Koukis
        if ($("#machinesview-single.single .column3 .selected").attr("id") == $("#machinesview-single.single .column3 .server-name:eq(1)").attr("id")) {
609 f533f224 Vangelis Koukis
            $(this).hide()
610 f533f224 Vangelis Koukis
        }
611 f533f224 Vangelis Koukis
        $("#machinesview-single.single .column3 .next").show()
612 09828cb5 Mike Muzurakis
        return false;
613 f533f224 Vangelis Koukis
    }
614 f533f224 Vangelis Koukis
});
615 f533f224 Vangelis Koukis

616 b13b401f Christodoulos Psaltis
$("#machinesview-single.single .column3 .next").live('click', function() {
617 b13b401f Christodoulos Psaltis
    // set behavior
618 f533f224 Vangelis Koukis
    if ($("#machinesview-single.single .column3 .selected").attr("id") == $("#machinesview-single.single .column3 .server-name:last").attr("id")) {
619 f533f224 Vangelis Koukis
        return false;
620 f533f224 Vangelis Koukis
        } else {
621 f533f224 Vangelis Koukis
        current_server = $('#machinesview-single.single .column3').find('.selected').attr("id").substring(5);
622 f533f224 Vangelis Koukis
        $('#machinesview-single.single').find('#' + current_server).hide();
623 f533f224 Vangelis Koukis
        $('#machinesview-single.single').find('#' + current_server).next().show();
624 f533f224 Vangelis Koukis
        $('#machinesview-single.single .column3').find('#link-' + current_server).removeClass('selected');
625 f533f224 Vangelis Koukis
        $('#machinesview-single.single .column3').find('#link-' + current_server).next().addClass('selected');
626 f533f224 Vangelis Koukis
        //if it is the last vm, hide the next button
627 f533f224 Vangelis Koukis
        if ($("#machinesview-single.single .column3 .selected").attr("id") == $("#machinesview-single.single .column3 .server-name:last").attr("id")) {
628 f533f224 Vangelis Koukis
            $(this).hide()
629 f533f224 Vangelis Koukis
        }
630 f533f224 Vangelis Koukis
        $("#machinesview-single.single .column3 .previous").show();
631 09828cb5 Mike Muzurakis
        return false;
632 f533f224 Vangelis Koukis
    }
633 f533f224 Vangelis Koukis
});
634 f533f224 Vangelis Koukis

635 f533f224 Vangelis Koukis
//hide prev button on startup
636 f533f224 Vangelis Koukis
$("#machinesview-single.single .column3 .previous").hide()
637 f533f224 Vangelis Koukis

638 f533f224 Vangelis Koukis
// basic functions executed on page load
639 f533f224 Vangelis Koukis
if ( flavors.length == 0 && images.length == 0 ) {
640 f533f224 Vangelis Koukis
    // configure flavors, this also calls update_vms(UPDATE_INTERVAL)
641 f533f224 Vangelis Koukis
    update_flavors();
642 f533f224 Vangelis Koukis
    // populate image list
643 f533f224 Vangelis Koukis
    update_images();
644 f533f224 Vangelis Koukis
} else if ( flavors.length == 0 && images.length != 0 ) {
645 f533f224 Vangelis Koukis
    // configure flavors, this also calls update_vms(UPDATE_INTERVAL)
646 f533f224 Vangelis Koukis
    update_flavors();
647 f533f224 Vangelis Koukis
} else if ( flavors.length != 0 && images.length == 0 ) {
648 f533f224 Vangelis Koukis
    // populate image list
649 f533f224 Vangelis Koukis
    update_images();
650 f533f224 Vangelis Koukis
    update_vms(UPDATE_INTERVAL);
651 f533f224 Vangelis Koukis
} else {
652 f533f224 Vangelis Koukis
    // start updating vm list
653 f533f224 Vangelis Koukis
    update_vms(UPDATE_INTERVAL);
654 f533f224 Vangelis Koukis
}
655 f533f224 Vangelis Koukis

656 f533f224 Vangelis Koukis
//FIXME: Hide and show welcome depending on number of machines
657 f533f224 Vangelis Koukis
hideWelcome();
658 f533f224 Vangelis Koukis
</script>