Statistics
| Branch: | Tag: | Revision:

root / ui / templates / machines_single.html @ 0aec49e0

History | View | Annotate | Download (34.5 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 5c5b3e58 Christodoulos Psaltis
                <div class='connect-border' title='{% trans 'Connect  machine' %}'></div>
45 5c5b3e58 Christodoulos Psaltis
                <div class='connect-arrow' title='{% trans 'Connect  machine' %}'></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 a583aa29 Kostas Papadimitriou
                    <div class="action-indicator" style="display:none"></div>
56 dc3e66b9 Mike Muzurakis
                    <img class="spinner" style="display:none" src="static/icons/indicators/medium/progress.gif" />
57 dc3e66b9 Mike Muzurakis
                    <img class="wave" style="display:none" src="static/icons/indicators/medium/wave.gif" />
58 dc3e66b9 Mike Muzurakis
                </div>
59 dc3e66b9 Mike Muzurakis
            </div>
60 dc3e66b9 Mike Muzurakis
            <div class="column2">
61 dc3e66b9 Mike Muzurakis
                <div class="machine-labels">
62 dc3e66b9 Mike Muzurakis
                    <div class="machine-label name">{% trans "Name" %}:</div>
63 dc3e66b9 Mike Muzurakis
                    <div class="machine-label cpus">{% trans "CPUs" %}:</div>
64 dc3e66b9 Mike Muzurakis
                    <div class="machine-label ram">{% trans "RAM (MB)" %}:</div>
65 dc3e66b9 Mike Muzurakis
                    <div class="machine-label disk">{% trans "System Disk (GB)" %}:</div>
66 dc3e66b9 Mike Muzurakis
                    <div class="machine-label image-name">{% trans "Image Name" %}:</div>
67 dc3e66b9 Mike Muzurakis
                    <div class="machine-label image-size">{% trans "Image Size (GB)" %}:</div>
68 dc3e66b9 Mike Muzurakis
                    <div class="machine-label ipv4">{% trans "Public IPv4" %}:</div>
69 dc3e66b9 Mike Muzurakis
                    <div class="machine-label ipv6">{% trans "Public IPv6" %}:</div>
70 dc3e66b9 Mike Muzurakis
                </div>
71 dc3e66b9 Mike Muzurakis
                <div class="machine-details">
72 dc3e66b9 Mike Muzurakis
                    <div class="machine-detail name">My Desktop</div>
73 dc3e66b9 Mike Muzurakis
                    <div class="machine-detail cpus">4</div>
74 dc3e66b9 Mike Muzurakis
                    <div class="machine-detail ram">2048</div>
75 dc3e66b9 Mike Muzurakis
                    <div class="machine-detail disk">100</div>
76 dc3e66b9 Mike Muzurakis
                    <div class="machine-detail image-name">windos_XP_blah_blah</div>
77 dc3e66b9 Mike Muzurakis
                    <div class="machine-detail image-size">2.3</div>
78 dc3e66b9 Mike Muzurakis
                    <div class="machine-detail ipv4">no ipv4</div>
79 dc3e66b9 Mike Muzurakis
                    <div class="machine-detail ipv6">2001:db8:1f70::999:de8:7648:6e8</div>
80 1e7c8953 Mike Muzurakis
                </div>
81 1e7c8953 Mike Muzurakis
                <div class="tags">
82 1e7c8953 Mike Muzurakis
                    <div class="tags-header">
83 b576496b Mike Muzurakis
                        <div class="tags-label">{% trans "Tags" %}</div>
84 b576496b Mike Muzurakis
                        <div class="toggler down"></div>
85 1e7c8953 Mike Muzurakis
                    </div>
86 1e7c8953 Mike Muzurakis
                    <div class="tags-content">
87 b576496b Mike Muzurakis
                        <div class="metadata-keys-container">
88 b576496b Mike Muzurakis
                            <div class="scrollable vertical">
89 b576496b Mike Muzurakis
                                <div class="items">
90 b576496b Mike Muzurakis
                                </div>
91 b576496b Mike Muzurakis
                            </div>
92 b576496b Mike Muzurakis
                            <div class="metadata-actions">
93 b576496b Mike Muzurakis
                                <div class="prev"></div>
94 b576496b Mike Muzurakis
                                <div class="next"></div>
95 b576496b Mike Muzurakis
                            </div>
96 b576496b Mike Muzurakis
                        </div>
97 b39f68e6 Mike Muzurakis
                        <a href="#" class="manage-metadata">{% trans "Manage Tags" %}</a>
98 dc3e66b9 Mike Muzurakis
                    </div>
99 dc3e66b9 Mike Muzurakis
                </div>
100 f533f224 Vangelis Koukis
            </div>
101 f533f224 Vangelis Koukis
            <div class="single-actions">
102 5e5df8fe Christodoulos Psaltis
                <div class="action-container start">
103 5e5df8fe Christodoulos Psaltis
                    <div class="single-action action-start">{% trans "Start" %}</div>
104 5e5df8fe Christodoulos Psaltis
                    <div class="confirm_single">
105 5e5df8fe Christodoulos Psaltis
                        <button class="yes">{% trans "Confirm" %}</button>
106 5e5df8fe Christodoulos Psaltis
                        <button class="no">X</button>
107 5e5df8fe Christodoulos Psaltis
                    </div>
108 5e5df8fe Christodoulos Psaltis
                </div>
109 5e5df8fe Christodoulos Psaltis
                <div class="action-container reboot">
110 5e5df8fe Christodoulos Psaltis
                    <div class="single-action action-reboot">{% trans "Reboot" %}</div>
111 5e5df8fe Christodoulos Psaltis
                    <div class="confirm_single">
112 5e5df8fe Christodoulos Psaltis
                        <button class="yes">{% trans "Confirm" %}</button>
113 5e5df8fe Christodoulos Psaltis
                        <button class="no">X</button>
114 5e5df8fe Christodoulos Psaltis
                    </div>
115 5e5df8fe Christodoulos Psaltis
                </div>
116 5e5df8fe Christodoulos Psaltis
                <div class="action-container shutdown">
117 5e5df8fe Christodoulos Psaltis
                    <div class="single-action action-shutdown">{% trans "Shutdown" %}</div>
118 5e5df8fe Christodoulos Psaltis
                    <div class="confirm_single">
119 5e5df8fe Christodoulos Psaltis
                        <button class="yes">{% trans "Confirm" %}</button>
120 5e5df8fe Christodoulos Psaltis
                        <button class="no">X</button>
121 5e5df8fe Christodoulos Psaltis
                    </div>
122 5e5df8fe Christodoulos Psaltis
                </div>
123 5e5df8fe Christodoulos Psaltis
                <div class="action-container console">
124 5e5df8fe Christodoulos Psaltis
                    <div class="single-action action-console">{% trans "Console" %}</div>
125 5e5df8fe Christodoulos Psaltis
                    <div class="confirm_single">
126 5e5df8fe Christodoulos Psaltis
                        <button class="yes">{% trans "Confirm" %}</button>
127 5e5df8fe Christodoulos Psaltis
                        <button class="no">X</button>
128 5e5df8fe Christodoulos Psaltis
                    </div>
129 5e5df8fe Christodoulos Psaltis
                </div>
130 5e5df8fe Christodoulos Psaltis
                <div class="action-container destroy">
131 5e5df8fe Christodoulos Psaltis
                    <div class="single-action action-destroy">{% trans "Destroy" %}</div>
132 5e5df8fe Christodoulos Psaltis
                    <div class="confirm_single">
133 5e5df8fe Christodoulos Psaltis
                        <button class="yes">{% trans "Confirm" %}</button>
134 5e5df8fe Christodoulos Psaltis
                        <button class="no">X</button>
135 5e5df8fe Christodoulos Psaltis
                    </div>
136 5e5df8fe Christodoulos Psaltis
                </div>
137 f533f224 Vangelis Koukis
            </div>
138 dc3e66b9 Mike Muzurakis
            <div class="action_error" align="center">
139 5e5df8fe Christodoulos Psaltis
                {% trans "<span>Error</span> on" %} <span class="action">{% trans "error action" %}</span>
140 dc3e66b9 Mike Muzurakis
                <span class="code"></span>
141 dc3e66b9 Mike Muzurakis
                <span class="message"></span>
142 dc3e66b9 Mike Muzurakis
                <button class="details">{% trans "Details" %}</button>
143 f533f224 Vangelis Koukis
            </div>
144 f533f224 Vangelis Koukis
        </div>
145 dc3e66b9 Mike Muzurakis
        <div class="lower">
146 a23fd087 Mike Muzurakis
            <div class="single-cpu">
147 a23fd087 Mike Muzurakis
                <div class="cpu-usage">
148 2b56fe60 Christodoulos Psaltis
                    {% trans "CPU Utilization" %}
149 a23fd087 Mike Muzurakis
                </div>
150 a23fd087 Mike Muzurakis
                <div class="cpu-graph">
151 e7cf83b1 Christodoulos Psaltis
                    <img src="http://stats.okeanos.grnet.gr/test/cpu-ts.png" class="stats" />
152 a23fd087 Mike Muzurakis
                </div>
153 dc3e66b9 Mike Muzurakis
            </div>
154 a23fd087 Mike Muzurakis
            <div class="single-network">
155 a23fd087 Mike Muzurakis
                <div class="network-usage">
156 2b56fe60 Christodoulos Psaltis
                    {% trans "Network Utilization" %}
157 a23fd087 Mike Muzurakis
                </div>
158 a23fd087 Mike Muzurakis
                <div class="network-graph">
159 e7cf83b1 Christodoulos Psaltis
                    <img src="http://stats.okeanos.grnet.gr/test/net-ts.png" class="stats" />
160 a23fd087 Mike Muzurakis
                </div>
161 dc3e66b9 Mike Muzurakis
            </div>
162 f533f224 Vangelis Koukis
        </div>
163 f533f224 Vangelis Koukis
    </div>
164 bf0bedc2 Mike Muzurakis
    <div class="column3" style="display:none;">
165 f533f224 Vangelis Koukis
        <div class="controls">
166 91965c28 Mike Muzurakis
            <div class="previous" style="display:block;">
167 5e5df8fe Christodoulos Psaltis
                <div class="prev-arrow"></div>
168 d2f03cb3 Mike Muzurakis
                <div class="prev-label">
169 d2f03cb3 Mike Muzurakis
                    {% trans "previous" %}
170 d2f03cb3 Mike Muzurakis
                </div>
171 f533f224 Vangelis Koukis
            </div>
172 91965c28 Mike Muzurakis
            <div class="next" style="display:block;">
173 5e5df8fe Christodoulos Psaltis
                <div class="next-arrow"></div>
174 d2f03cb3 Mike Muzurakis
                <div class="next-label">
175 d2f03cb3 Mike Muzurakis
                    {% trans "next" %}
176 d2f03cb3 Mike Muzurakis
                </div>
177 f533f224 Vangelis Koukis
            </div>
178 f533f224 Vangelis Koukis
        </div>
179 f533f224 Vangelis Koukis
        <div class="separator">
180 f533f224 Vangelis Koukis
        </div>
181 f533f224 Vangelis Koukis
        <div class="servers">
182 f533f224 Vangelis Koukis
            <div class="server-name" id="servers-widget-template" style="display:none;">server1</div>
183 f533f224 Vangelis Koukis
        </div>
184 f533f224 Vangelis Koukis
    </div>
185 f533f224 Vangelis Koukis
</div>
186 f533f224 Vangelis Koukis
187 f533f224 Vangelis Koukis
<script>
188 f533f224 Vangelis Koukis

189 a583aa29 Kostas Papadimitriou
init_action_indicator_handlers('single');
190 a583aa29 Kostas Papadimitriou

191 b576496b Mike Muzurakis
//hide the all of the tags contents
192 b576496b Mike Muzurakis
$("#machinesview-single.single .tags-content").hide();
193 b576496b Mike Muzurakis

194 b576496b Mike Muzurakis
//toggle the component with class tags-content
195 b576496b Mike Muzurakis
$("#machinesview-single.single div.tags-header").live('click', function() {
196 b576496b Mike Muzurakis
    if ($(this).find('.toggler').hasClass('up')) {
197 b576496b Mike Muzurakis
        $(this).find('.toggler').removeClass('up');
198 b576496b Mike Muzurakis
        $(this).find('.toggler').addClass('down');
199 b576496b Mike Muzurakis
        $(this).find('.tags-label').removeClass('darker');
200 b576496b Mike Muzurakis
        $(this).parent().parent().removeClass('light-background');
201 b576496b Mike Muzurakis
    } else {
202 b576496b Mike Muzurakis
        $(this).find('.toggler').removeClass('down');
203 b576496b Mike Muzurakis
        $(this).find('.toggler').addClass('up');
204 b576496b Mike Muzurakis
        $(this).find('.tags-label').addClass('darker');
205 b576496b Mike Muzurakis
        $(this).parent().parent().addClass('light-background');
206 b576496b Mike Muzurakis
    }
207 b576496b Mike Muzurakis
    $(this).parent().parent().find(".tags-content").slideToggle(600);
208 b576496b Mike Muzurakis
    return false;
209 b576496b Mike Muzurakis
});
210 f533f224 Vangelis Koukis

211 dc3e66b9 Mike Muzurakis
// indicate that the requested action was not completed
212 dc3e66b9 Mike Muzurakis
function display_failure(status, serverID, action, responseText) {
213 dc3e66b9 Mike Muzurakis
    $('#machinesview-single.single #'+serverID+ ' .spinner').hide();
214 dc3e66b9 Mike Muzurakis
    $('#machinesview-single.single #'+serverID+ ' .action_error .action').text(action);
215 dc3e66b9 Mike Muzurakis
    $('#machinesview-single.single #'+serverID+ ' .action_error .code').text(status);
216 dc3e66b9 Mike Muzurakis
    $('#machinesview-single.single #'+serverID+ ' .action_error .message').text(responseText);
217 dc3e66b9 Mike Muzurakis
    $('#machinesview-single.single #'+serverID+ ' .action_error').show();
218 dc3e66b9 Mike Muzurakis
}
219 dc3e66b9 Mike Muzurakis

220 dc3e66b9 Mike Muzurakis
// cancel action
221 dc3e66b9 Mike Muzurakis
$("#machinesview-single.single div.confirm_single .no").live('click', function(){
222 dc3e66b9 Mike Muzurakis
    pending_actions = [];
223 9ae7aeaa Christodoulos Psaltis
    $('#machinesview-single').find('div.single-action').removeClass("selected");
224 dc3e66b9 Mike Muzurakis
    update_confirmations();
225 dc3e66b9 Mike Muzurakis
});
226 dc3e66b9 Mike Muzurakis

227 b576496b Mike Muzurakis
// update metadata list
228 b576496b Mike Muzurakis
function list_metadata_keys(serverID, keys) {
229 b576496b Mike Muzurakis
    // empty the list if it already exists
230 b576496b Mike Muzurakis
    $("#machinesview-single.single div.#" +serverID).find("div.items").empty();
231 b576496b Mike Muzurakis
    //start counter
232 b576496b Mike Muzurakis
    var i=0;
233 b576496b Mike Muzurakis
    // show values
234 b576496b Mike Muzurakis
    for (var key in keys) {
235 f7fb0066 Mike Muzurakis
        $("#machinesview-single.single div.#" +serverID).find(".items").append("<div class='item'>" + key + ": " + keys[key].substring(0,40) + "</div>");
236 b576496b Mike Muzurakis
        i++;
237 b576496b Mike Muzurakis
    }
238 b576496b Mike Muzurakis
    //hide the metadata controls if we have less than 3 metadata
239 b576496b Mike Muzurakis
    if (i <= 3) {
240 b576496b Mike Muzurakis
        $("#machinesview-single.single div.#" +serverID).find(".metadata-actions").hide();
241 b576496b Mike Muzurakis
    }
242 b576496b Mike Muzurakis
    //show the metadata controls if we have more than 3 metadata
243 b576496b Mike Muzurakis
    if (i > 3) {
244 b576496b Mike Muzurakis
        $("#machinesview-single.single div.#" +serverID).find(".metadata-actions").show();
245 b576496b Mike Muzurakis
    }
246 b576496b Mike Muzurakis
    $("#machinesview-single.single div.#" +serverID).find(".metadata-count").text(i);
247 b576496b Mike Muzurakis
}
248 b576496b Mike Muzurakis

249 92ce65f8 Mike Muzurakis
//show error popup box
250 dc3e66b9 Mike Muzurakis
$("#machinesview-single.single div.action_error .details").live('click', function(){
251 dc3e66b9 Mike Muzurakis
    // remove the action from the pending list
252 dc3e66b9 Mike Muzurakis
    ajax_error($(this).parent().children('.code').text(), undefined, $(this).parent().children('.action').text(), $(this).parent().children('.message').text());
253 dc3e66b9 Mike Muzurakis
    $(this).parent().hide();
254 dc3e66b9 Mike Muzurakis
});
255 dc3e66b9 Mike Muzurakis

256 dc3e66b9 Mike Muzurakis
//confirm action
257 dc3e66b9 Mike Muzurakis
$("#machinesview-single.single div.confirm_single .yes").live('click', function(){
258 5e5df8fe Christodoulos Psaltis
    var serverID = $(this).closest(".single-container").attr("id");
259 dc3e66b9 Mike Muzurakis
    for (i=0;i<pending_actions.length;i++){ // if there is a pending action for this server execute it
260 dc3e66b9 Mike Muzurakis
        if (pending_actions[i][1]==serverID){
261 dc3e66b9 Mike Muzurakis
            action = pending_actions.splice(i,1)[0]; // extract action
262 dc3e66b9 Mike Muzurakis
            // change the status text in cases where no api state exists
263 dc3e66b9 Mike Muzurakis
            if (action[0] == start) {
264 66a292bd Christodoulos Psaltis
                $(this).closest(".single-container").find(".column1 .state-label").text(TRANSITIONS['Starting']);
265 66a292bd Christodoulos Psaltis
                $(this).closest(".single-container").find(".column1 .state").removeClass().addClass('state starting-state');
266 66a292bd Christodoulos Psaltis
                $(this).closest(".single-container").find(".column1 .state .spinner").show();
267 dc3e66b9 Mike Muzurakis
            } else if (action[0] == shutdown) {
268 66a292bd Christodoulos Psaltis
                $(this).closest(".single-container").find(".column1 .state-label").text(TRANSITIONS['Shutting down']);
269 66a292bd Christodoulos Psaltis
                $(this).closest(".single-container").find(".column1 .state").removeClass().addClass('state shutting-state');
270 66a292bd Christodoulos Psaltis
                $(this).closest(".single-container").find(".column1 .state .spinner").show();
271 dc3e66b9 Mike Muzurakis
            } else if (action[0] == reboot) {
272 66a292bd Christodoulos Psaltis
                $(this).closest(".single-container").find(".column1 .state-label").text(TRANSITIONS['Rebooting']);
273 66a292bd Christodoulos Psaltis
                $(this).closest(".single-container").find(".column1 .state").removeClass().addClass('state rebooting-state');
274 66a292bd Christodoulos Psaltis
                $(this).closest(".single-container").find(".column1 .state .spinner").show();
275 dc3e66b9 Mike Muzurakis
            }  else if (action[0] == destroy) {
276 66a292bd Christodoulos Psaltis
                $(this).closest(".single-container").find(".column1 .state-label").text(TRANSITIONS['Destroying']);
277 66a292bd Christodoulos Psaltis
                $(this).closest(".single-container").find(".column1 .state").removeClass().addClass('state destroying-state');
278 66a292bd Christodoulos Psaltis
                $(this).closest(".single-container").find(".column1 .state .spinner").show();
279 dc3e66b9 Mike Muzurakis
            }
280 dc3e66b9 Mike Muzurakis
            action[0]([action[1]]); // execute action
281 dc3e66b9 Mike Muzurakis
        }
282 dc3e66b9 Mike Muzurakis
    }
283 dc3e66b9 Mike Muzurakis
    $(this).parent().hide();
284 fbf48eee Christodoulos Psaltis
    $(this).closest('div.action-container').children('div.single-action').removeClass('selected');
285 66a292bd Christodoulos Psaltis
    $(this).parent().parent().find('.state').children('.spinner').show();
286 dc3e66b9 Mike Muzurakis
    update_confirmations();
287 dc3e66b9 Mike Muzurakis
    return false;
288 dc3e66b9 Mike Muzurakis
});
289 dc3e66b9 Mike Muzurakis

290 b576496b Mike Muzurakis
// intercept manage metadata click
291 b576496b Mike Muzurakis
$("#machinesview-single.single a.manage-metadata").live('click', function() {
292 b576496b Mike Muzurakis
    // get server name and server ID
293 b576496b Mike Muzurakis
    var serverID = $(this).parent().parent().parent().parent().parent().attr("id");
294 b576496b Mike Muzurakis
    var serverName = $(this).closest('.machine-container').find("div.machine-details div.name").text();
295 b576496b Mike Muzurakis
    if (['BUILD', 'ACTIVE', 'REBOOT'].indexOf($(this).parent().parent().parent().parent().parent().find(".status").text()) < 0) {
296 b576496b Mike Muzurakis
        $("#metadata-wizard div#on-off").text('on');
297 b576496b Mike Muzurakis
    } else {
298 b576496b Mike Muzurakis
        $("#metadata-wizard div#on-off").text('off');
299 b576496b Mike Muzurakis
    }
300 b576496b Mike Muzurakis
    // set server name to all related metadata dialogs
301 b576496b Mike Muzurakis
    $("#metadata-wizard div.machine-name").text(serverName);
302 b576496b Mike Muzurakis
    // set server id to all related metadata dialogs
303 b576496b Mike Muzurakis
    $("#metadata-wizard p").text(serverID);
304 b576496b Mike Muzurakis
    show_metadata_wizard();
305 b576496b Mike Muzurakis
    return false;
306 b576496b Mike Muzurakis
});
307 dc3e66b9 Mike Muzurakis

308 f533f224 Vangelis Koukis
// intercept start click
309 f533f224 Vangelis Koukis
$("#machinesview-single.single div.action-start").live('click', function(){
310 5e5df8fe Christodoulos Psaltis
    var serverID = $(this).closest(".single-container").attr("id");
311 5e5df8fe Christodoulos Psaltis
    var serverName = $(this).closest("div.upper").find(".machine-details div.name").text();
312 b13b401f Christodoulos Psaltis
    $('#machinesview-single').find('div.single-action').removeClass('selected');
313 f533f224 Vangelis Koukis
    $(this).addClass('selected');
314 f533f224 Vangelis Koukis
    $(this).parent().parent().find('.action_error').hide();
315 b13b401f Christodoulos Psaltis
    // reset pending actions so not to allow multiple actions in this view
316 b13b401f Christodoulos Psaltis
    pending_actions = [];
317 b13b401f Christodoulos Psaltis
    pending_actions.push([start, serverID, serverName]);
318 b13b401f Christodoulos Psaltis
    update_confirmations();
319 f533f224 Vangelis Koukis
    return false;
320 f533f224 Vangelis Koukis
});
321 f533f224 Vangelis Koukis

322 dc3e66b9 Mike Muzurakis
// intercept shutdown click
323 dc3e66b9 Mike Muzurakis
$("#machinesview-single.single div.action-shutdown").live('click', function(){
324 5e5df8fe Christodoulos Psaltis
    var serverID = $(this).closest(".single-container").attr("id");
325 5e5df8fe Christodoulos Psaltis
    var serverName = $(this).closest("div.upper").find(".machine-details div.name").text();
326 b13b401f Christodoulos Psaltis
    $('#machinesview-single').find('div.single-action').removeClass('selected');
327 dc3e66b9 Mike Muzurakis
    $(this).addClass('selected');
328 dc3e66b9 Mike Muzurakis
    $(this).parent().parent().find('.action_error').hide();
329 b13b401f Christodoulos Psaltis
    // reset pending actions so not to allow multiple actions in this view
330 b13b401f Christodoulos Psaltis
    pending_actions = [];
331 b13b401f Christodoulos Psaltis
    pending_actions.push([shutdown, serverID, serverName]);
332 dc3e66b9 Mike Muzurakis
    update_confirmations();
333 dc3e66b9 Mike Muzurakis
    return false;
334 dc3e66b9 Mike Muzurakis
});
335 dc3e66b9 Mike Muzurakis

336 dc3e66b9 Mike Muzurakis
// intercept reboot click
337 dc3e66b9 Mike Muzurakis
$("#machinesview-single.single div.action-reboot").live('click', function(){
338 5e5df8fe Christodoulos Psaltis
    var serverID = $(this).closest(".single-container").attr("id");
339 5e5df8fe Christodoulos Psaltis
    var serverName = $(this).closest("div.upper").find(".machine-details div.name").text();
340 b13b401f Christodoulos Psaltis
    $('#machinesview-single').find('div.single-action').removeClass('selected');
341 dc3e66b9 Mike Muzurakis
    $(this).addClass('selected');
342 dc3e66b9 Mike Muzurakis
    $(this).parent().parent().find('.action_error').hide();
343 b13b401f Christodoulos Psaltis
    // reset pending actions so not to allow multiple actions in this view
344 b13b401f Christodoulos Psaltis
    pending_actions = [];
345 b13b401f Christodoulos Psaltis
    pending_actions.push([reboot, serverID, serverName]);
346 dc3e66b9 Mike Muzurakis
    update_confirmations();
347 dc3e66b9 Mike Muzurakis
    return false;
348 dc3e66b9 Mike Muzurakis
});
349 dc3e66b9 Mike Muzurakis

350 dc3e66b9 Mike Muzurakis
// intercept destroy click
351 dc3e66b9 Mike Muzurakis
$("#machinesview-single.single div.action-destroy").live('click', function(){
352 5e5df8fe Christodoulos Psaltis
    var serverID = $(this).closest(".single-container").attr("id");
353 5e5df8fe Christodoulos Psaltis
    var serverName = $(this).closest("div.upper").find(".machine-details div.name").text();
354 b13b401f Christodoulos Psaltis
    $('#machinesview-single').find('div.single-action').removeClass('selected');
355 dc3e66b9 Mike Muzurakis
    $(this).addClass('selected');
356 dc3e66b9 Mike Muzurakis
    $(this).parent().parent().find('.action_error').hide();
357 b13b401f Christodoulos Psaltis
    // reset pending actions so not to allow multiple actions in this view
358 b13b401f Christodoulos Psaltis
    pending_actions = [];
359 b13b401f Christodoulos Psaltis
    pending_actions.push([destroy, serverID, serverName]);
360 dc3e66b9 Mike Muzurakis
    update_confirmations();
361 dc3e66b9 Mike Muzurakis
    return false;
362 dc3e66b9 Mike Muzurakis
});
363 dc3e66b9 Mike Muzurakis

364 dc3e66b9 Mike Muzurakis
// intercept console click
365 dc3e66b9 Mike Muzurakis
$("#machinesview-single.single div.action-console").live('click', function(){
366 5e5df8fe Christodoulos Psaltis
    var serverID = $(this).closest(".single-container").attr("id");
367 5e5df8fe Christodoulos Psaltis
    var serverName = $(this).closest("div.upper").find(".machine-details div.name").text();
368 b13b401f Christodoulos Psaltis
    $('#machinesview-single').find('div.single-action').removeClass('selected');
369 dc3e66b9 Mike Muzurakis
    $(this).addClass('selected');
370 dc3e66b9 Mike Muzurakis
    $(this).parent().parent().find('.action_error').hide();
371 b13b401f Christodoulos Psaltis
    // reset pending actions so not to allow multiple actions in this view
372 b13b401f Christodoulos Psaltis
    pending_actions = [];
373 b13b401f Christodoulos Psaltis
    pending_actions.push([open_console, serverID, serverName]);
374 dc3e66b9 Mike Muzurakis
    update_confirmations();
375 dc3e66b9 Mike Muzurakis
    return false;
376 dc3e66b9 Mike Muzurakis
});
377 dc3e66b9 Mike Muzurakis

378 dc3e66b9 Mike Muzurakis
// open console on connect arrow click
379 dc3e66b9 Mike Muzurakis
$("#machinesview-single.single div.connect-arrow").live('click', function(){
380 dc3e66b9 Mike Muzurakis
    $(this).parent().parent().find("div.action-console").click();
381 dc3e66b9 Mike Muzurakis
    return false;
382 dc3e66b9 Mike Muzurakis
});
383 dc3e66b9 Mike Muzurakis

384 dc3e66b9 Mike Muzurakis
// open console on connect arrow border click
385 dc3e66b9 Mike Muzurakis
$("#machinesview-single.single div.connect-border").live('click', function(){
386 dc3e66b9 Mike Muzurakis
    $(this).parent().parent().find("div.action-console").click();
387 dc3e66b9 Mike Muzurakis
    return false;
388 dc3e66b9 Mike Muzurakis
});
389 dc3e66b9 Mike Muzurakis

390 f533f224 Vangelis Koukis
// update the servers list
391 f533f224 Vangelis Koukis
function update_machines_view(data){
392 f533f224 Vangelis Koukis
    /*
393 f533f224 Vangelis Koukis
    Go through the servers in the input data. Update existing entries, add
394 f533f224 Vangelis Koukis
    new ones to the list
395 f533f224 Vangelis Koukis
    */
396 09828cb5 Mike Muzurakis

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

399 f533f224 Vangelis Koukis
        existing = $('#machinesview-single.single #' + server.id);
400 bde8af74 Mike Muzurakis
        existing_link = $('#machinesview-single div.column3 #link-' + server.id);
401 92ce65f8 Mike Muzurakis
        var current_Id = current_serverId();
402 f533f224 Vangelis Koukis

403 f533f224 Vangelis Koukis
        // if multiple machines exist in the DOM, delete all but one
404 f533f224 Vangelis Koukis
        // defensive coding - that shouldn't happen normally
405 f533f224 Vangelis Koukis
        while (existing.length > 1){
406 f533f224 Vangelis Koukis
            existing.remove();
407 f533f224 Vangelis Koukis
        }
408 09828cb5 Mike Muzurakis
        // get server OS, if it exists
409 09828cb5 Mike Muzurakis
        if (!(server.metadata == undefined)) {
410 09828cb5 Mike Muzurakis
            var server_image = os_icon(server.metadata);
411 09828cb5 Mike Muzurakis
        } else {
412 09828cb5 Mike Muzurakis
            var server_image = "unknown"
413 09828cb5 Mike Muzurakis
        }
414 09828cb5 Mike Muzurakis
        // get server status message, if it exists
415 09828cb5 Mike Muzurakis
        var current_message = existing.find(".state-label").text();
416 f533f224 Vangelis Koukis

417 f533f224 Vangelis Koukis
        // server already exists in DOM
418 f533f224 Vangelis Koukis
        if (existing.length){
419 f533f224 Vangelis Koukis
            $("#machinesview-single.single div.single-container:last-child").find("div.separator").show();
420 f533f224 Vangelis Koukis
            //  if the status is deleted, delete it from the DOM
421 f533f224 Vangelis Koukis
            if (server.status == 'DELETED') {
422 f533f224 Vangelis Koukis
                existing.remove();
423 bde8af74 Mike Muzurakis
                existing_link.remove();
424 92ce65f8 Mike Muzurakis
                //if the deleted vm is the displayed one, display the 1st vm
425 92ce65f8 Mike Muzurakis
                if (server.id == current_Id) {
426 92ce65f8 Mike Muzurakis
                    $("#machinesview-single.single div.single-container:eq(1)").show()
427 d2f03cb3 Mike Muzurakis
                    $('#machinesview-single.single .column3').find('.server-name:eq(1)').addClass('column3-selected');
428 92ce65f8 Mike Muzurakis
                }
429 f533f224 Vangelis Koukis
                try {
430 92ce65f8 Mike Muzurakis
                    console.info(existing.find(".machine-details div.name").text() + ' removed');
431 f533f224 Vangelis Koukis
                } catch(err) {}
432 09828cb5 Mike Muzurakis
            }
433 09828cb5 Mike Muzurakis
            // if the status has changed
434 09828cb5 Mike Muzurakis
            else if ( current_message != STATUSES[server.status]) {
435 09828cb5 Mike Muzurakis
                /*
436 09828cb5 Mike Muzurakis
                Here there are 4 possibilities:
437 09828cb5 Mike Muzurakis
                    1. From an active state to an inactive one
438 09828cb5 Mike Muzurakis
                    2. From an inactive state to an active one
439 09828cb5 Mike Muzurakis
                    3. From an active state to a different active one
440 09828cb5 Mike Muzurakis
                    4. From an inactive state to a different inactive one
441 09828cb5 Mike Muzurakis
                The last two (3, 4) can be dealt with the same way
442 09828cb5 Mike Muzurakis
                */
443 09828cb5 Mike Muzurakis
                if (ACTIVE_STATES.indexOf(current_message) >= 0 &&
444 09828cb5 Mike Muzurakis
                    INACTIVE_STATES.indexOf(STATUSES[server.status]) >= 0) {
445 09828cb5 Mike Muzurakis
                    // from an active state to an inactive one
446 09828cb5 Mike Muzurakis
                    log_server_status_change(existing, server.status);
447 f533f224 Vangelis Koukis
                    existing.find("img.single-image").attr("src","static/icons/machines/large/" + server_image + '-off.png');
448 66a292bd Christodoulos Psaltis
                    existing.find(".column1 .state-label").text(STATUSES[server.status]);
449 dc3e66b9 Mike Muzurakis
                    existing.find(".connect-border").hide();
450 dc3e66b9 Mike Muzurakis
                    existing.find(".connect-arrow").hide();
451 66a292bd Christodoulos Psaltis
                    existing.find(".column1 .state .spinner").hide();
452 dc3e66b9 Mike Muzurakis
                    existing.find(' .wave').attr('src','static/icons/indicators/medium/wave.gif').show();
453 66a292bd Christodoulos Psaltis
                    existing.find(".column1 .state").removeClass().addClass("state terminated-state");
454 dc3e66b9 Mike Muzurakis
                    setTimeout("$('#" + server.id +" .wave').attr('src','').hide()", 3000);
455 09828cb5 Mike Muzurakis
                }
456 09828cb5 Mike Muzurakis
                else if (INACTIVE_STATES.indexOf(current_message) >= 0 &&
457 09828cb5 Mike Muzurakis
                         ACTIVE_STATES.indexOf(STATUSES[server.status]) >= 0) {
458 09828cb5 Mike Muzurakis
                    // From an inactive state to an active one
459 09828cb5 Mike Muzurakis
                    log_server_status_change(existing, server.status);
460 09828cb5 Mike Muzurakis
                    existing.find("img.single-image").attr("src","static/icons/machines/large/" + server_image + '-on.png');
461 66a292bd Christodoulos Psaltis
                    existing.find(".column1 .state-label").text(STATUSES[server.status]);
462 dc3e66b9 Mike Muzurakis
                    existing.find(".connect-border").show();
463 dc3e66b9 Mike Muzurakis
                    existing.find(".connect-arrow").show();
464 66a292bd Christodoulos Psaltis
                    existing.find(".column1 .state .spinner").hide();
465 dc3e66b9 Mike Muzurakis
                    existing.find(' .wave').attr('src','static/icons/indicators/medium/wave.gif').show();
466 66a292bd Christodoulos Psaltis
                    existing.find(".column1 .state").removeClass().addClass("state running-state");
467 dc3e66b9 Mike Muzurakis
                    setTimeout("$('#" + server.id +" .wave').attr('src','').hide()", 3000);
468 f533f224 Vangelis Koukis
                }
469 09828cb5 Mike Muzurakis
                else {
470 09828cb5 Mike Muzurakis
                    // handling active to active or inactive to inactive changes
471 09828cb5 Mike Muzurakis
                    if (TRANSITIONS[current_message] && TRANSITIONS[current_message] != 'Rebooting') {
472 09828cb5 Mike Muzurakis
                        // don't do anything if it is still in transition
473 09828cb5 Mike Muzurakis
                    }
474 09828cb5 Mike Muzurakis
                    else if ((TRANSITIONS[current_message] == 'Rebooting' && server.status == 'ACTIVE') ||
475 09828cb5 Mike Muzurakis
                             (STATUSES['BUILD'] == current_message && server.status == 'ACTIVE')) {
476 09828cb5 Mike Muzurakis
                        // if it has been rebooted or just created
477 09828cb5 Mike Muzurakis
                        log_server_status_change(existing, server.status);
478 66a292bd Christodoulos Psaltis
                        existing.find(".column1 .state-label").text(STATUSES[server.status]);
479 dc3e66b9 Mike Muzurakis
                        existing.find(".connect-border").show();
480 dc3e66b9 Mike Muzurakis
                        existing.find(".connect-arrow").show();
481 66a292bd Christodoulos Psaltis
                        existing.find(".column1 .state .spinner").hide();
482 66a292bd Christodoulos Psaltis
                        existing.find(".column1 .state").attr('src','static/icons/indicators/medium/wave.gif').show();
483 66a292bd Christodoulos Psaltis
                        existing.find(".column1 .state").removeClass().addClass("state running-state");
484 dc3e66b9 Mike Muzurakis
                        setTimeout("$('#" + server.id +" .wave').attr('src','').hide()", 3000);
485 09828cb5 Mike Muzurakis
                    }
486 09828cb5 Mike Muzurakis
                    else {
487 09828cb5 Mike Muzurakis
                        // in any other case just change the status and ignore spinners/waves
488 66a292bd Christodoulos Psaltis
                        existing.find(".column1 .state-label").text(STATUSES[server.status]);
489 09828cb5 Mike Muzurakis
                    }
490 f533f224 Vangelis Koukis
                }
491 f533f224 Vangelis Koukis
            }
492 f533f224 Vangelis Koukis
            // find and display ips
493 f533f224 Vangelis Koukis
            var ips = get_public_ips(server);
494 f533f224 Vangelis Koukis
            existing.find(".machine-details div.ipv4").text(ips['ip4']);
495 f533f224 Vangelis Koukis
            existing.find(".machine-details div.ipv6").text(ips['ip6']);
496 09828cb5 Mike Muzurakis

497 f533f224 Vangelis Koukis
        } else if (server.status != 'DELETED') {
498 f533f224 Vangelis Koukis
            // If it does not exist and it's not deleted, we should create it
499 f533f224 Vangelis Koukis
            var serverwidget = $("#servers-widget-template").clone().attr("id", 'link-' + server.id);
500 f533f224 Vangelis Koukis
            if (server.name.length > 18) {
501 f533f224 Vangelis Koukis
                serverwidget.text(server.name.substring(0,15) + '...');
502 f533f224 Vangelis Koukis
            } else {
503 f533f224 Vangelis Koukis
                serverwidget.text(server.name)
504 f533f224 Vangelis Koukis
            }
505 f533f224 Vangelis Koukis
            serverwidget.appendTo('.servers');
506 f533f224 Vangelis Koukis
            serverwidget.show();
507 92ce65f8 Mike Muzurakis
            //find and hide the previously selected server
508 f533f224 Vangelis Koukis
            $('.single').find('.single-container').hide();
509 d2f03cb3 Mike Muzurakis
            $('.single .column3').find('.column3-selected').removeClass('column3-selected');
510 f533f224 Vangelis Koukis
            //create and select the new one
511 f533f224 Vangelis Koukis
            var machine = $("#machinesview-single.single #machine-container-template").clone().attr("id", server.id);
512 b576496b Mike Muzurakis
            machine.find(".scrollable").scrollable({vertical: true});
513 f7fb0066 Mike Muzurakis
            machine.find(".machine-details div.name").text(server.name.substring(0,30));
514 f533f224 Vangelis Koukis
            machine.find("img.single-image").attr("src","static/icons/machines/large/"+server_image+'-on.png');
515 f533f224 Vangelis Koukis
            machine.find("span.imagetag").text(server_image);
516 66a292bd Christodoulos Psaltis
            machine.find(".column1 .state-label").text(STATUSES[server.status]);
517 46095259 Christodoulos Psaltis
            // find and display flavor parameters
518 46095259 Christodoulos Psaltis
            var flavor_params = get_flavor_params(server.flavorRef);
519 46095259 Christodoulos Psaltis
            machine.find(".machine-details div.cpus").text(flavor_params['cpus']);
520 46095259 Christodoulos Psaltis
            machine.find(".machine-details div.ram").text(flavor_params['ram']);
521 46095259 Christodoulos Psaltis
            machine.find(".machine-details div.disk").text(flavor_params['disk']);
522 46095259 Christodoulos Psaltis
            // find and display image parameters
523 46095259 Christodoulos Psaltis
            var image_params = get_image_params(server.imageRef);
524 46095259 Christodoulos Psaltis
            machine.find(".machine-details div.image-name").text(image_params['name'].substring(0,15));
525 46095259 Christodoulos Psaltis
            machine.find(".machine-details div.image-size").text(image_params['size']);
526 f533f224 Vangelis Koukis
            // find and display ips
527 f533f224 Vangelis Koukis
            var ips = get_public_ips(server);
528 f533f224 Vangelis Koukis
            machine.find(".machine-details div.ipv4").text(ips['ip4']);
529 f533f224 Vangelis Koukis
            machine.find(".machine-details div.ipv6").text(ips['ip6']);
530 f533f224 Vangelis Koukis
            //show off image if server is not active
531 f533f224 Vangelis Koukis
            if (['BUILD', 'ACTIVE', 'REBOOT'].indexOf(server.status) < 0){
532 f533f224 Vangelis Koukis
                    machine.find("img.single-image").attr("src","static/icons/machines/large/"+server_image+'-off.png');
533 dc3e66b9 Mike Muzurakis
                    machine.find(".connect-border").hide();
534 dc3e66b9 Mike Muzurakis
                    machine.find(".connect-arrow").hide();
535 66a292bd Christodoulos Psaltis
                    machine.find(".column1 .state").removeClass().addClass("state terminated-state");
536 f533f224 Vangelis Koukis
            }
537 9f57e631 Mike Muzurakis
            //show spinner while machine is building or rebooting
538 f533f224 Vangelis Koukis
            if (server.status == 'BUILD' ||
539 f533f224 Vangelis Koukis
                [TRANSITIONS['Starting'], TRANSITIONS['Shutting down']].indexOf(existing.find(".status").text()) >= 0 ) {
540 66a292bd Christodoulos Psaltis
                machine.find(".column1 .state .spinner").show();
541 dc3e66b9 Mike Muzurakis
                machine.find(".connect-border").hide();
542 dc3e66b9 Mike Muzurakis
                machine.find(".connect-arrow").hide();
543 66a292bd Christodoulos Psaltis
                machine.find(".column1 .state").removeClass().addClass('state build-state');
544 9f57e631 Mike Muzurakis
            }
545 9f57e631 Mike Muzurakis
            if (server.status == 'REBOOT') {
546 66a292bd Christodoulos Psaltis
                machine.find(".column1 .state").find('.spinner').show();
547 9f57e631 Mike Muzurakis
                machine.find(".connect-border").hide();
548 9f57e631 Mike Muzurakis
                machine.find(".connect-arrow").hide();
549 66a292bd Christodoulos Psaltis
                machine.find(".column1 .state").removeClass().addClass('state rebooting-state');
550 f533f224 Vangelis Koukis
            }
551 f533f224 Vangelis Koukis
            machine.appendTo("#machinesview-single.single");
552 f533f224 Vangelis Koukis
            //disable reboot and shutdown actions while machine is building
553 f533f224 Vangelis Koukis
            if (server.status == 'BUILD') {
554 f533f224 Vangelis Koukis
                $('#machinesview-single.single div.#' + server.id + ' div.action-reboot').hide();
555 f533f224 Vangelis Koukis
                $('#machinesview-single.single div.#' + server.id + ' div.action-shutdown').hide();
556 f533f224 Vangelis Koukis
            }
557 f533f224 Vangelis Koukis
            // show console action only on active servers
558 f533f224 Vangelis Koukis
            if (server.status == 'ACTIVE') {
559 f533f224 Vangelis Koukis
                $('#machinesview-single.single div.#' + server.id + ' div.action-console').show();
560 f533f224 Vangelis Koukis
                $('#machinesview-single.single div.#' + server.id + ' div.action-start').hide();
561 dc3e66b9 Mike Muzurakis
                machine.find(".connect-border").show();
562 dc3e66b9 Mike Muzurakis
                machine.find(".connect-arrow").show();
563 f533f224 Vangelis Koukis
            } else if (server.status == 'REBOOT'){
564 f533f224 Vangelis Koukis
                $('#machinesview-single.single div.#' + server.id + ' div.action-console').hide();
565 f533f224 Vangelis Koukis
            } else {
566 f533f224 Vangelis Koukis
                $('#machinesview-single.single div.#' + server.id + ' div.action-console').hide();
567 f533f224 Vangelis Koukis
                $('#machinesview-single.single div.#' + server.id + ' div.action-reboot').hide();
568 f533f224 Vangelis Koukis
                $('#machinesview-single.single div.#' + server.id + ' div.action-shutdown').hide();
569 f533f224 Vangelis Koukis
            }
570 09828cb5 Mike Muzurakis
            //show the first machine and select it in the widget
571 09828cb5 Mike Muzurakis
            $('.single-container:eq(1)').show();
572 d2f03cb3 Mike Muzurakis
            $('.single .column3').find('.server-name:eq(1)').addClass('column3-selected');
573 f533f224 Vangelis Koukis
        }
574 b576496b Mike Muzurakis
        update_iconview_actions(server.id, server.status);
575 b576496b Mike Muzurakis
        if (!(server.metadata == undefined)) {
576 b576496b Mike Muzurakis
                list_metadata_keys(server.id, server.metadata.values);
577 b576496b Mike Muzurakis
        }
578 f533f224 Vangelis Koukis
    });
579 907bd406 Christodoulos Psaltis

580 907bd406 Christodoulos Psaltis
    // hide pane spinner
581 f533f224 Vangelis Koukis
    $("#machinesview-single.single > div.large-spinner").hide();
582 f533f224 Vangelis Koukis

583 907bd406 Christodoulos Psaltis
    // show message in case user has no server!
584 907bd406 Christodoulos Psaltis
    if ($('#machinesview-single div.single-container').length == 1) {
585 907bd406 Christodoulos Psaltis
        showWelcome();
586 907bd406 Christodoulos Psaltis
    } else {
587 907bd406 Christodoulos Psaltis
        hideWelcome();
588 bf0bedc2 Mike Muzurakis
        $('.single .column3').show();
589 907bd406 Christodoulos Psaltis
    }
590 f533f224 Vangelis Koukis

591 f533f224 Vangelis Koukis
    //enable widget links
592 f533f224 Vangelis Koukis
    $(".server-name").live('click', function() {
593 f533f224 Vangelis Koukis
        $('.single').find('.single-container').hide()
594 f533f224 Vangelis Koukis
        $('.single').find('#' + $(this).attr('id').substring(5)).show();
595 d2f03cb3 Mike Muzurakis
        $('.single .column3').find('.column3-selected').removeClass('column3-selected');
596 d2f03cb3 Mike Muzurakis
        $(this).addClass('column3-selected');
597 91965c28 Mike Muzurakis
        update_prev_next()
598 f533f224 Vangelis Koukis
    });
599 f533f224 Vangelis Koukis

600 f533f224 Vangelis Koukis
    if ($.cookie('server')) {
601 f533f224 Vangelis Koukis
        $('div#link-' + $.cookie('server')).click();
602 f533f224 Vangelis Koukis
        $.cookie('server', null);
603 f533f224 Vangelis Koukis
    }
604 f533f224 Vangelis Koukis

605 91965c28 Mike Muzurakis
    //if it is the last vm, disable the next button
606 d2f03cb3 Mike Muzurakis
    if ($("#machinesview-single.single .column3 .column3-selected").attr("id") == $("#machinesview-single.single .column3 .server-name:last").attr("id")) {
607 91965c28 Mike Muzurakis
        $("#machinesview-single.single .column3 .next").addClass('disabled');
608 f533f224 Vangelis Koukis
    }
609 f533f224 Vangelis Koukis

610 91965c28 Mike Muzurakis
    //if it is the first vm, disable the prev button
611 d2f03cb3 Mike Muzurakis
    if ($("#machinesview-single.single .column3 .column3-selected").attr("id") == $("#machinesview-single.single .column3 .server-name:eq(1)").attr("id")) {
612 91965c28 Mike Muzurakis
        $("#machinesview-single.single .column3 .previous").addClass('disabled');
613 f533f224 Vangelis Koukis
    }
614 92ce65f8 Mike Muzurakis
}
615 f533f224 Vangelis Koukis

616 92ce65f8 Mike Muzurakis
//get currently displayed serverId
617 92ce65f8 Mike Muzurakis
function current_serverId() {
618 92ce65f8 Mike Muzurakis
    return $("#machinesview-single.single").find("div.single-container:visible").attr("id");
619 f533f224 Vangelis Koukis
}
620 f533f224 Vangelis Koukis

621 f533f224 Vangelis Koukis
//enable prev-next buttons
622 b13b401f Christodoulos Psaltis
$("#machinesview-single.single .column3 .previous").live('click', function() {
623 b13b401f Christodoulos Psaltis
    // set behavior
624 d2f03cb3 Mike Muzurakis
    if ($("#machinesview-single.single .column3 .column3-selected").attr("id") == $("#machinesview-single.single .column3 .server-name:eq(1)").attr("id")) {
625 f533f224 Vangelis Koukis
        return false;
626 f533f224 Vangelis Koukis
    } else {
627 d2f03cb3 Mike Muzurakis
        current_server = $('#machinesview-single.single .column3').find('.column3-selected').attr("id").substring(5);
628 f533f224 Vangelis Koukis
        $('#machinesview-single.single').find('#' + current_server).hide();
629 f533f224 Vangelis Koukis
        $('#machinesview-single.single').find('#' + current_server).prev().show();
630 d2f03cb3 Mike Muzurakis
        $('#machinesview-single.single .column3').find('#link-' + current_server).removeClass('column3-selected');
631 d2f03cb3 Mike Muzurakis
        $('#machinesview-single.single .column3').find('#link-' + current_server).prev().addClass('column3-selected');
632 91965c28 Mike Muzurakis
        update_prev_next()
633 09828cb5 Mike Muzurakis
        return false;
634 f533f224 Vangelis Koukis
    }
635 f533f224 Vangelis Koukis
});
636 f533f224 Vangelis Koukis

637 b13b401f Christodoulos Psaltis
$("#machinesview-single.single .column3 .next").live('click', function() {
638 b13b401f Christodoulos Psaltis
    // set behavior
639 d2f03cb3 Mike Muzurakis
    if ($("#machinesview-single.single .column3 .column3-selected").attr("id") == $("#machinesview-single.single .column3 .server-name:last").attr("id")) {
640 f533f224 Vangelis Koukis
        return false;
641 f533f224 Vangelis Koukis
        } else {
642 d2f03cb3 Mike Muzurakis
        current_server = $('#machinesview-single.single .column3').find('.column3-selected').attr("id").substring(5);
643 f533f224 Vangelis Koukis
        $('#machinesview-single.single').find('#' + current_server).hide();
644 f533f224 Vangelis Koukis
        $('#machinesview-single.single').find('#' + current_server).next().show();
645 d2f03cb3 Mike Muzurakis
        $('#machinesview-single.single .column3').find('#link-' + current_server).removeClass('column3-selected');
646 d2f03cb3 Mike Muzurakis
        $('#machinesview-single.single .column3').find('#link-' + current_server).next().addClass('column3-selected');
647 91965c28 Mike Muzurakis
        update_prev_next()
648 09828cb5 Mike Muzurakis
        return false;
649 f533f224 Vangelis Koukis
    }
650 f533f224 Vangelis Koukis
});
651 f533f224 Vangelis Koukis

652 91965c28 Mike Muzurakis

653 91965c28 Mike Muzurakis
//enables-disables previous/next buttons accordingly
654 91965c28 Mike Muzurakis
function update_prev_next() {
655 91965c28 Mike Muzurakis
    if ($("#machinesview-single.single .column3 .column3-selected").attr("id") != $("#machinesview-single.single .column3 .server-name:eq(1)").attr("id")) {
656 91965c28 Mike Muzurakis
        $(".single .column3 .previous").removeClass('disabled');
657 91965c28 Mike Muzurakis
    } else {
658 91965c28 Mike Muzurakis
        //disable class
659 91965c28 Mike Muzurakis
        $(".single .column3 .previous").addClass('disabled');
660 91965c28 Mike Muzurakis
    }
661 91965c28 Mike Muzurakis
    if ($("#machinesview-single.single .column3 .column3-selected").attr("id") != $("#machinesview-single.single .column3 .server-name:last").attr("id")) {
662 91965c28 Mike Muzurakis
        $(".single .column3 .next").removeClass('disabled');
663 91965c28 Mike Muzurakis
    } else {
664 91965c28 Mike Muzurakis
        //disable class
665 91965c28 Mike Muzurakis
        $(".single .column3 .next").addClass('disabled');
666 91965c28 Mike Muzurakis
    }
667 91965c28 Mike Muzurakis
}
668 f533f224 Vangelis Koukis

669 f533f224 Vangelis Koukis
// basic functions executed on page load
670 f533f224 Vangelis Koukis
if ( flavors.length == 0 && images.length == 0 ) {
671 f533f224 Vangelis Koukis
    // configure flavors, this also calls update_vms(UPDATE_INTERVAL)
672 f533f224 Vangelis Koukis
    update_flavors();
673 f533f224 Vangelis Koukis
    // populate image list
674 f533f224 Vangelis Koukis
    update_images();
675 f533f224 Vangelis Koukis
} else if ( flavors.length == 0 && images.length != 0 ) {
676 f533f224 Vangelis Koukis
    // configure flavors, this also calls update_vms(UPDATE_INTERVAL)
677 f533f224 Vangelis Koukis
    update_flavors();
678 f533f224 Vangelis Koukis
} else if ( flavors.length != 0 && images.length == 0 ) {
679 f533f224 Vangelis Koukis
    // populate image list
680 f533f224 Vangelis Koukis
    update_images();
681 f533f224 Vangelis Koukis
    update_vms(UPDATE_INTERVAL);
682 f533f224 Vangelis Koukis
} else {
683 f533f224 Vangelis Koukis
    // start updating vm list
684 f533f224 Vangelis Koukis
    update_vms(UPDATE_INTERVAL);
685 f533f224 Vangelis Koukis
}
686 64fe1ae8 Mike Muzurakis

687 64fe1ae8 Mike Muzurakis
//IE specific fixes
688 64fe1ae8 Mike Muzurakis
if ($.browser.msie) {
689 64fe1ae8 Mike Muzurakis
    //IE fix for green arrow hover
690 64fe1ae8 Mike Muzurakis
    $("div.connect-arrow").live("mouseenter", function () {
691 64fe1ae8 Mike Muzurakis
        $(this).addClass("connect-arrow-ie");
692 64fe1ae8 Mike Muzurakis
    });
693 64fe1ae8 Mike Muzurakis
    $("div.connect-arrow").live("mouseleave", function () {
694 64fe1ae8 Mike Muzurakis
        $(this).removeClass("connect-arrow-ie");
695 64fe1ae8 Mike Muzurakis
    });
696 0aec49e0 Mike Muzurakis
    //IE fix for details button
697 0aec49e0 Mike Muzurakis
    $("button.details").live("mouseenter", function () {
698 0aec49e0 Mike Muzurakis
        $(this).css("background-color","#FF7F2A");
699 0aec49e0 Mike Muzurakis
    });
700 0aec49e0 Mike Muzurakis
    $("button.details").live("mouseleave", function () {
701 0aec49e0 Mike Muzurakis
        $(this).css("background-color","transparent");
702 0aec49e0 Mike Muzurakis
    });
703 64fe1ae8 Mike Muzurakis
}
704 64fe1ae8 Mike Muzurakis
705 f533f224 Vangelis Koukis
</script>