Statistics
| Branch: | Tag: | Revision:

root / ui / templates / home.html @ e4f32f27

History | View | Annotate | Download (19.1 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 4ea5cc44 Mike Muzurakis
<html>
37 4ea5cc44 Mike Muzurakis
38 d7f0ad6e provetza
{% load i18n %}
39 cc7c5902 Dimitris Moraitis
<!DOCTYPE html>
40 cc7c5902 Dimitris Moraitis
<head>
41 f533f224 Vangelis Koukis
    <title>{{ project }}</title>
42 f533f224 Vangelis Koukis
    <!-- include the Tools -->
43 146b6003 Dimitris Moraitis
    <!-- jquery tools minified for deployment-->
44 01864f44 Dimitris Moraitis
    <script src="static/jquery.tools.min.js"></script>
45 f533f224 Vangelis Koukis
    <!-- jquery tools source for JS debugging -->
46 01864f44 Dimitris Moraitis
    <!--
47 f533f224 Vangelis Koukis
    <script src="http://flowplayer.org/tools/download/1.2.5/jquery-1.4.2.js"></script>
48 f533f224 Vangelis Koukis
    <script src="http://flowplayer.org/tools/download/1.2.5/tabs/tabs.js"></script>
49 f533f224 Vangelis Koukis
    <script src="http://flowplayer.org/tools/download/1.2.5/scrollable/scrollable.js"></script>
50 f533f224 Vangelis Koukis
    <script src="http://flowplayer.org/tools/download/1.2.5/overlay/overlay.js"></script>
51 f533f224 Vangelis Koukis
    <script src="http://flowplayer.org/tools/download/1.2.5/rangeinput/rangeinput.js"></script>
52 f533f224 Vangelis Koukis
    <script src="http://flowplayer.org/tools/download/1.2.5/toolbox/toolbox.expose.js"></script>
53 01864f44 Dimitris Moraitis
    -->
54 fb66080c Dimitris Moraitis
    <script src="static/jquery.cookie.js"></script>
55 a4531705 Christodoulos Psaltis
    <script src="static/jquery.dataTables.min.js"></script>
56 7b7e768e Christodoulos Psaltis
    <script src="static/synnefo.js"></script>
57 f533f224 Vangelis Koukis
    <link rel="stylesheet" type="text/css" href="static/main.css"/>
58 42f67a2a Dimitris Moraitis
    <script>
59 f533f224 Vangelis Koukis
        //populate available image icons array
60 f533f224 Vangelis Koukis
        var os_icons = {{image_icons|safe}};
61 f533f224 Vangelis Koukis

62 eae0a59a Dimitris Moraitis
        // timeout value from settings.py
63 d36493ce Dimitris Moraitis
        var TIMEOUT = {{timeout}};
64 7b03c69d Dimitris Moraitis
        var UPDATE_INTERVAL = {{update_interval}};
65 f533f224 Vangelis Koukis
        var STATUSES = {
66 f533f224 Vangelis Koukis
            'UNKNOWN'   : '{% trans "Unknown" %}',
67 eae0a59a Dimitris Moraitis
            'BUILD'     : '{% trans "Building" %}',
68 f533f224 Vangelis Koukis
            'REBOOT'    : '{% trans "Rebooting" %}',
69 eae0a59a Dimitris Moraitis
            'STOPPED'   : '{% trans "Stopped" %}',
70 f533f224 Vangelis Koukis
            'ACTIVE'    : '{% trans "Running" %}',
71 f533f224 Vangelis Koukis
            'ERROR'     : '{% trans "Error" %}'
72 f533f224 Vangelis Koukis
        };
73 f533f224 Vangelis Koukis

74 f533f224 Vangelis Koukis
        var TRANSITIONS = {
75 f533f224 Vangelis Koukis
            'Shutting down' : '{% trans "Shutting down" %}',
76 f533f224 Vangelis Koukis
            'Rebooting'     : '{% trans "Rebooting" %}',
77 f533f224 Vangelis Koukis
            'Starting'      : '{% trans "Starting" %}',
78 f533f224 Vangelis Koukis
            'Destroying'    : '{% trans "Destroying" %}'
79 eae0a59a Dimitris Moraitis
        };
80 f533f224 Vangelis Koukis

81 f533f224 Vangelis Koukis
        // Statuses and transitions that should be displayed as active or inactive
82 f533f224 Vangelis Koukis
        var ACTIVE_STATES = [
83 f533f224 Vangelis Koukis
            '{% trans "Building" %}',
84 f533f224 Vangelis Koukis
            '{% trans "Rebooting" %}',
85 f533f224 Vangelis Koukis
            '{% trans "Running" %}',
86 f533f224 Vangelis Koukis
            '{% trans "Shutting down" %}',
87 f533f224 Vangelis Koukis
            '{% trans "Rebooting" %}',
88 f533f224 Vangelis Koukis
            '{% trans "Destroying" %}'
89 f533f224 Vangelis Koukis
        ];
90 f533f224 Vangelis Koukis

91 f533f224 Vangelis Koukis
        var INACTIVE_STATES = [
92 f533f224 Vangelis Koukis
            '{% trans "Unknown" %}',
93 f533f224 Vangelis Koukis
            '{% trans "Stopped" %}',
94 f533f224 Vangelis Koukis
            '{% trans "Error" %}',
95 f533f224 Vangelis Koukis
            '{% trans "Starting" %}',
96 f533f224 Vangelis Koukis
            '{% trans "Destroying" %}'
97 f533f224 Vangelis Koukis
        ];
98 f533f224 Vangelis Koukis

99 eae0a59a Dimitris Moraitis
        var ERRORS = {
100 eae0a59a Dimitris Moraitis
            // error message header
101 f533f224 Vangelis Koukis
            'HEADER' : '{% trans "Error" %}',
102 eae0a59a Dimitris Moraitis
            // default
103 146b6003 Dimitris Moraitis
            'DEFAULT' : '{% trans "Could not contact the service. Please check your network connectivity and try again." %}',
104 eae0a59a Dimitris Moraitis
            // bad request
105 eae0a59a Dimitris Moraitis
            '400' : '{% trans "Malformed request." %}',
106 eae0a59a Dimitris Moraitis
            // not found
107 eae0a59a Dimitris Moraitis
            '404' : '{% trans "Your request has failed. Resource not found." %}',
108 eae0a59a Dimitris Moraitis
            // internal server error
109 ccd40764 Markos Gogoulos
            '500' : '{% trans "There has been an Internal Error. Our administrators have been notified." %}',
110 ccd40764 Markos Gogoulos
            // service unavailable
111 ccd40764 Markos Gogoulos
            '501' : '{% trans "This server has not been implemented yet." %}',
112 eae0a59a Dimitris Moraitis
            // service unavailable
113 f533f224 Vangelis Koukis
            '502' : '{% trans "Bad Gateway error." %}',
114 f533f224 Vangelis Koukis
            // service unavailable
115 a5093da5 Markos Gogoulos
            '503' : '{% trans "This service is unavailable right now, please try again later." %}',
116 80a8f602 Christodoulos Psaltis
            // no server handshake
117 80a8f602 Christodoulos Psaltis
            '0' : '{% trans "Could not contact the server." %}',
118 e2ccad35 Dimitris Moraitis
            // no images found
119 146b6003 Dimitris Moraitis
            'NO_IMAGES' : '{% trans "Cannot show the Create machine wizard: No images found." %}',
120 e2ccad35 Dimitris Moraitis
            // no flavors found
121 f533f224 Vangelis Koukis
            'NO_FLAVORS' : '{% trans "Cannot show the Create machine wizard: No machine configurations found." %}',
122 f533f224 Vangelis Koukis
            // error box title
123 f533f224 Vangelis Koukis
            'GENERIC_POPUP_HEADER' : '{% trans "Something seems to have gone wrong :( Here is what happened:" %}',
124 f533f224 Vangelis Koukis
            // no advanced details
125 f533f224 Vangelis Koukis
            'NO_DETAILS' : '{% trans "Νο advanced details provided" %}'
126 eae0a59a Dimitris Moraitis
        };
127 f533f224 Vangelis Koukis

128 eae0a59a Dimitris Moraitis
        var SUCCESS = {
129 f533f224 Vangelis Koukis
            'HEADER' : '{% trans "Success" %}',
130 146b6003 Dimitris Moraitis
            'DEFAULT' : '{% trans "Your request has been succefully executed." %}',
131 f533f224 Vangelis Koukis
            'PASSWORD' : '{% trans "Password:" %}',
132 aa0801aa Markos Gogoulos
            'CREATE_VM_SUCCESS' : '{% trans "Success" %}',
133 f533f224 Vangelis Koukis
            'CREATE_VM_SUCCESS_ONE' : '{% trans "Your new machine is now buidling... (this might take a few minutes)" %}',
134 def71253 Markos Gogoulos
            'CREATE_VM_SUCCESS_TWO' : '{% trans "Write down your password now:" %}',
135 f533f224 Vangelis Koukis
            'CREATE_VM_SUCCESS_THREE' : '{% trans "You will need this later to connect to your machine." %}',
136 f533f224 Vangelis Koukis
            'CREATE_VM_SUCCESS_FOUR' : '{% trans "After closing this window you will NOT be able to retrieve it again." %}'
137 eae0a59a Dimitris Moraitis
        };
138 f533f224 Vangelis Koukis

139 f533f224 Vangelis Koukis
        // ajax error checking
140 038383b1 Dimitris Moraitis
        function ajax_error(status, serverID, action, responseText) {
141 def71253 Markos Gogoulos
            $('#error-success').addClass('error');
142 def71253 Markos Gogoulos
            $('#error-success').removeClass('success');
143 def71253 Markos Gogoulos

144 038383b1 Dimitris Moraitis
            var serverName = '';
145 f533f224 Vangelis Koukis

146 4ea5cc44 Mike Muzurakis
            if (serverID !== undefined) {
147 a8e592c7 Dimitris Moraitis
                // standard view
148 4ea5cc44 Mike Muzurakis
                serverName = $("#" + serverID).find("span.name").text();
149 4ea5cc44 Mike Muzurakis
                if (serverName === "") { // list view
150 4ea5cc44 Mike Muzurakis
                    serverName = $("#" + serverID).parent().parent().find("span.name").text();
151 a8e592c7 Dimitris Moraitis
                }
152 038383b1 Dimitris Moraitis
            }
153 f533f224 Vangelis Koukis

154 42f67a2a Dimitris Moraitis
            // prepare the error message
155 146b6003 Dimitris Moraitis
            $("#error-success h3").text(ERRORS['HEADER']);
156 4ea5cc44 Mike Muzurakis
            if (responseText !== undefined) {
157 f533f224 Vangelis Koukis
                var errors = parse_error(responseText, status), details = '';
158 4ea5cc44 Mike Muzurakis
                if (serverName) {
159 4ea5cc44 Mike Muzurakis
                    serverName = "<p>{% trans "Server" %}: " + serverName + "</p>";
160 038383b1 Dimitris Moraitis
                }
161 4ea5cc44 Mike Muzurakis
                if ((errors[0].details === undefined) || (errors[0].details === "")) {
162 f533f224 Vangelis Koukis
                    details = ERRORS["NO_DETAILS"];
163 f533f224 Vangelis Koukis
                } else {
164 f533f224 Vangelis Koukis
                    details = errors[0].details;
165 a8e592c7 Dimitris Moraitis
                }
166 f533f224 Vangelis Koukis

167 f533f224 Vangelis Koukis
                $("#error-success .machine-now-building").html(ERRORS["GENERIC_POPUP_HEADER"]);
168 f533f224 Vangelis Koukis
                $("#error-success .popup-header").addClass("popup-header-error");
169 f533f224 Vangelis Koukis
                $("#error-success").addClass("popup-border-error");
170 f533f224 Vangelis Koukis
                $("#error-success .password-container").hide();
171 f533f224 Vangelis Koukis
                $("#error-success .popup-details").addClass("popup-details-error");
172 f533f224 Vangelis Koukis
                $("#error-success .popup-separator").addClass("popup-separator-error");
173 4ea5cc44 Mike Muzurakis
                $("#error-success .popup-details").html("<p>" + (errors[0].message || ERRORS[errors[0].code]) + "</p>" + serverName + "<p>{% trans "Action" %}: " + action + "</p><p>{% trans "Code" %}: " + errors[0].code + "<p><a class='expand-details' href='#'>{% trans 'Details' %}</a><div class='more-details'>" + details + "</div></p>");
174 4ea5cc44 Mike Muzurakis
            } else if (ERRORS[status] !== undefined) {
175 4ea5cc44 Mike Muzurakis
                if (serverID === undefined) {
176 7020cb54 Markos Gogoulos
                    //eg no_images, no_flavors cases
177 7020cb54 Markos Gogoulos
                    $("#error-success .machine-now-building").html(ERRORS["GENERIC_POPUP_HEADER"]);
178 7020cb54 Markos Gogoulos
                    $("#error-success .popup-header").addClass("popup-header-error");
179 7020cb54 Markos Gogoulos
                    $("#error-success").addClass("popup-border-error");
180 7020cb54 Markos Gogoulos
                    $("#error-success .password-container").hide();
181 7020cb54 Markos Gogoulos
                    $("#error-success .popup-details").addClass("popup-details-error");
182 7020cb54 Markos Gogoulos
                    $("#error-success .popup-separator").addClass("popup-separator-error");
183 4ea5cc44 Mike Muzurakis
                    $("#error-success .popup-details").html("<p>" + ERRORS[status] + "</p>");
184 e1a023a6 Markos Gogoulos
                } else {
185 1532343a Markos Gogoulos
                    $("#error-success .machine-now-building").html(ERRORS["GENERIC_POPUP_HEADER"]);
186 1532343a Markos Gogoulos
                    $("#error-success .popup-header").addClass("popup-header-error");
187 1532343a Markos Gogoulos
                    $("#error-success").addClass("popup-border-error");
188 1532343a Markos Gogoulos
                    $("#error-success .password-container").hide();
189 1532343a Markos Gogoulos
                    $("#error-success .popup-details").addClass("popup-details-error");
190 1532343a Markos Gogoulos
                    $("#error-success .popup-separator").addClass("popup-separator-error");
191 4ea5cc44 Mike Muzurakis
                    $("#error-success .popup-details").html("<p>" + ERRORS[status] + "</p><p>" + serverName + "</p>");
192 e1a023a6 Markos Gogoulos
                }
193 eae0a59a Dimitris Moraitis
            } else {
194 266597ae Markos Gogoulos
                $("#error-success .machine-now-building").html(ERRORS["DEFAULT"]);
195 4ea5cc44 Mike Muzurakis
                $("#error-success .popup-header").addClass("popup-header-error");
196 4ea5cc44 Mike Muzurakis
                $("#error-success").addClass("popup-border-error");
197 4ea5cc44 Mike Muzurakis
                $("#error-success .password-container").hide();
198 266597ae Markos Gogoulos
                $("#error-success .popup-details").hide();
199 266597ae Markos Gogoulos
                $("#error-success .popup-separator").hide();
200 f533f224 Vangelis Koukis
            }
201 4ea5cc44 Mike Muzurakis
            $("#error-success p:first").css("padding-bottom", "10px");
202 4ea5cc44 Mike Muzurakis
            $("#error-success p:first").css("color", "#800000");
203 f533f224 Vangelis Koukis
            $("#error-success div.more-details").hide();
204 4ea5cc44 Mike Muzurakis
            $("#error-success a.expand-details").live('click', function () {
205 f533f224 Vangelis Koukis
                $(this).parent().parent().find("div.more-details").slideToggle(600);
206 f533f224 Vangelis Koukis
                return false;
207 4ea5cc44 Mike Muzurakis
            });
208 f533f224 Vangelis Koukis
            //stop the progress icon and hide the wizard
209 4ea5cc44 Mike Muzurakis
            if (action !== undefined) {
210 4ea5cc44 Mike Muzurakis
                if (action === 'Create VM') {
211 f533f224 Vangelis Koukis
                    $('#wizard #start').text('{% trans "Create VM" %}');
212 f533f224 Vangelis Koukis
                    $("#wizard").hide();
213 4ea5cc44 Mike Muzurakis
                } else if (action === 'Create network') {
214 f533f224 Vangelis Koukis
                    $('#networks-wizard').hide();
215 4ea5cc44 Mike Muzurakis
                } else if (action === 'Add server to network') {
216 f533f224 Vangelis Koukis
                    $('#add-machines-wizard').hide();
217 f533f224 Vangelis Koukis
                }
218 eae0a59a Dimitris Moraitis
            }
219 f533f224 Vangelis Koukis

220 42f67a2a Dimitris Moraitis
            // bring up error notification
221 42f67a2a Dimitris Moraitis
            var triggers = $("a#notification").overlay({
222 42f67a2a Dimitris Moraitis
                // some mask tweaks suitable for modal dialogs
223 42f67a2a Dimitris Moraitis
                mask: {
224 42f67a2a Dimitris Moraitis
                    color: '#ebecff',
225 42f67a2a Dimitris Moraitis
                    opacity: '0.9'
226 42f67a2a Dimitris Moraitis
                },
227 42f67a2a Dimitris Moraitis
                top: 'center',
228 42f67a2a Dimitris Moraitis
                closeOnClick: false,
229 42f67a2a Dimitris Moraitis
                oneInstance: false,
230 42f67a2a Dimitris Moraitis
                load: false,
231 4ea5cc44 Mike Muzurakis
                onClose: function () {
232 e5b0ba20 Vangelis Koukis
                    // With partial refresh working properly,
233 e5b0ba20 Vangelis Koukis
                    // it is no longer necessary to refresh the whole page
234 e5b0ba20 Vangelis Koukis
                    // choose_view();
235 42f67a2a Dimitris Moraitis
                }
236 42f67a2a Dimitris Moraitis
            });
237 42f67a2a Dimitris Moraitis
            $("a#notification").data('overlay').load();
238 42f67a2a Dimitris Moraitis
            return false;
239 42f67a2a Dimitris Moraitis
        }
240 f533f224 Vangelis Koukis

241 42f67a2a Dimitris Moraitis
        // ajax success checking
242 146b6003 Dimitris Moraitis
        function ajax_success(status, password) {
243 42f67a2a Dimitris Moraitis
            // prepare the error message
244 42f67a2a Dimitris Moraitis
            // bring up success notification
245 def71253 Markos Gogoulos
            $('#error-success').addClass('success');
246 def71253 Markos Gogoulos
            $('#error-success').removeClass('error');
247 4ea5cc44 Mike Muzurakis
            if (status !== undefined && SUCCESS[status]) {
248 4ea5cc44 Mike Muzurakis
                if (password !== undefined && status === "CREATE_VM_SUCCESS") {
249 f533f224 Vangelis Koukis

250 f533f224 Vangelis Koukis
                    //stop the progress icon and hide the wizard
251 f533f224 Vangelis Koukis
                    $('#wizard #start').text('{% trans "Create VM" %}');
252 f533f224 Vangelis Koukis
                    $("#wizard").hide();
253 f533f224 Vangelis Koukis

254 97b6ee61 Markos Gogoulos
                    $("#error-success h3 span.header-box").text(SUCCESS[status]);
255 f533f224 Vangelis Koukis
                    var CREATE_VM_SUCCESS_MSG = SUCCESS["CREATE_VM_SUCCESS_THREE"] + '<br / >'
256 f533f224 Vangelis Koukis
                        + SUCCESS["CREATE_VM_SUCCESS_FOUR"];
257 f533f224 Vangelis Koukis
                    $("#error-success div.machine-now-building").html(SUCCESS["CREATE_VM_SUCCESS_ONE"]);
258 f533f224 Vangelis Koukis
                    $("#error-success .popup-header").removeClass("popup-header-error");
259 f533f224 Vangelis Koukis
                    $("#error-success").removeClass("popup-border-error");
260 f533f224 Vangelis Koukis
                    $("#error-success .popup-details").removeClass("popup-details-error");
261 f533f224 Vangelis Koukis
                    $("#error-success .popup-separator").removeClass("popup-separator-error");
262 f533f224 Vangelis Koukis
                    $("#error-success .password-container").show();
263 def71253 Markos Gogoulos

264 4ea5cc44 Mike Muzurakis
                    $("#error-success .popup-details").html("</div><div class=\"write-password-details\">" + CREATE_VM_SUCCESS_MSG + "</div>");
265 4ea5cc44 Mike Muzurakis
                    $("#error-success div.password").html("<div class=\"write-password\">" + SUCCESS["CREATE_VM_SUCCESS_TWO"] + "<div class=\"write-password-password\">" + password + "</div></div>");
266 f533f224 Vangelis Koukis
                    //$("#error-success div.write-password").html(SUCCESS["CREATE_VM_SUCCESS_TWO"]);
267 f533f224 Vangelis Koukis
                    //$("#error-success div.write-password-details").html(CREATE_VM_SUCCESS_MSG);
268 8550e831 Markos Gogoulos
                } else {
269 8550e831 Markos Gogoulos
                    $("#error-success h3").text(SUCCESS['HEADER']);
270 f533f224 Vangelis Koukis
                    $("#error-success div.popup-body-inner").text("<p>" + SUCCESS[status] + "</p>");
271 8550e831 Markos Gogoulos
                }
272 8550e831 Markos Gogoulos
            } else {
273 8550e831 Markos Gogoulos
                $("#error-success h3").text(SUCCESS['HEADER']);
274 f533f224 Vangelis Koukis
                $("#error-success div.popup-body-inner").html("<p>" + SUCCESS['DEFAULT'] + "</p>");
275 8550e831 Markos Gogoulos
            }
276 8550e831 Markos Gogoulos

277 42f67a2a Dimitris Moraitis
            var triggers = $("a#notification").overlay({
278 42f67a2a Dimitris Moraitis
                // some mask tweaks suitable for modal dialogs
279 42f67a2a Dimitris Moraitis
                mask: {
280 42f67a2a Dimitris Moraitis
                    color: '#ebecff',
281 42f67a2a Dimitris Moraitis
                    opacity: '0.9'
282 42f67a2a Dimitris Moraitis
                },
283 42f67a2a Dimitris Moraitis
                top: 'center',
284 42f67a2a Dimitris Moraitis
                closeOnClick: false,
285 42f67a2a Dimitris Moraitis
                oneInstance: false,
286 42f67a2a Dimitris Moraitis
                load: false,
287 4ea5cc44 Mike Muzurakis
                onClose: function () {
288 e5b0ba20 Vangelis Koukis
                    // With partial refresh working properly,
289 e5b0ba20 Vangelis Koukis
                    // it is no longer necessary to refresh the whole page
290 e5b0ba20 Vangelis Koukis
                    // choose_view();
291 42f67a2a Dimitris Moraitis
                }
292 42f67a2a Dimitris Moraitis
            });
293 42f67a2a Dimitris Moraitis
            $("a#notification").data('overlay').load();
294 42f67a2a Dimitris Moraitis
            return false;
295 42f67a2a Dimitris Moraitis
        }
296 42f67a2a Dimitris Moraitis
    </script>
297 cc7c5902 Dimitris Moraitis
</head>
298 cc7c5902 Dimitris Moraitis
<body>
299 f533f224 Vangelis Koukis
    <div id="container">
300 3b363b8e Christodoulos Psaltis
        <div id='header'>
301 f533f224 Vangelis Koukis
            <div id='user'>
302 f533f224 Vangelis Koukis
                <a href="#">{% trans "username" %}</a>
303 f533f224 Vangelis Koukis
                {% get_available_languages as LANGUAGES %}
304 f533f224 Vangelis Koukis
                {% for lang in LANGUAGES %}
305 f533f224 Vangelis Koukis
                    &nbsp;|&nbsp;
306 f533f224 Vangelis Koukis
                    <a {% if  == lang.0 %}class="current_lang" {% else %}  href="/lang/?l={{lang.0}}" {% endif %}>{{lang.0}}</a>
307 f533f224 Vangelis Koukis
                {% endfor %}
308 f533f224 Vangelis Koukis
            </div>
309 f533f224 Vangelis Koukis
            <div class="header-logo">
310 f533f224 Vangelis Koukis
                <a href="/">
311 f533f224 Vangelis Koukis
                    <img src="static/okeanos.png" alt="okeanos"/>
312 f533f224 Vangelis Koukis
                </a>
313 f533f224 Vangelis Koukis
            </div>
314 cc7c5902 Dimitris Moraitis
        </div>
315 f533f224 Vangelis Koukis
        <div id="content">
316 f533f224 Vangelis Koukis
            <div id="wrapper">
317 f533f224 Vangelis Koukis
                <!-- tabs -->
318 f533f224 Vangelis Koukis
                <div class="tab-name">{% trans "machines" %}</div>
319 f533f224 Vangelis Koukis
                <div class="tab-separator"></div>
320 f533f224 Vangelis Koukis
                <ul class="css-tabs">
321 f533f224 Vangelis Koukis
                    <li><a href="machines" title="{% trans "manage  virtual " %}" class="primary" id="machines">
322 f533f224 Vangelis Koukis
                        <img src="static/machines-icon.png" /></a></li><div class="tab-separator"></div>
323 f533f224 Vangelis Koukis
                    <li><a href="networks" title="{% trans "configure " %}" class="primary" id="networks">
324 f533f224 Vangelis Koukis
                        <img src="static/networks-icon.png" /></a></li><div class="tab-separator"></div>
325 f533f224 Vangelis Koukis
                    <li><a href="disks" title="{% trans "manage  storage " %}" class="primary" id="disks">
326 f533f224 Vangelis Koukis
                        <img src="static/disks-icon.png" /></a></li>
327 f533f224 Vangelis Koukis
                </ul>
328 f533f224 Vangelis Koukis
                <div class="css-panes">
329 e4f32f27 Mike Muzurakis
                    <div id="machines-pane" class="pane" style="display:block;"></div>
330 e4f32f27 Mike Muzurakis
                    <div id="networks-pane" class="pane"></div>
331 f533f224 Vangelis Koukis
                    <div id="disks-pane" class="pane"></div>
332 f533f224 Vangelis Koukis
                </div>
333 f533f224 Vangelis Koukis
                <!-- base notification for error/success reporting -->
334 f533f224 Vangelis Koukis
                <a id="notification" rel="#error-success" href="#"></a>
335 7d4f351b Mike Muzurakis
336 f533f224 Vangelis Koukis
                <div class="modal" id="error-success">
337 97b6ee61 Markos Gogoulos
                    <h3 class="popup-header">
338 97b6ee61 Markos Gogoulos
                        <span class="header-box"></span>
339 97b6ee61 Markos Gogoulos
                    </h3>
340 f533f224 Vangelis Koukis
                    <div class="popup-body">
341 f533f224 Vangelis Koukis
                        <div class="popup-body-inner">
342 f533f224 Vangelis Koukis
                            <div class="machine-now-building"></div>
343 f533f224 Vangelis Koukis
                            <div class="popup-separator"></div>
344 f533f224 Vangelis Koukis
                            <div class="password-container">
345 def71253 Markos Gogoulos
                                <div class="password-header"></div>
346 f533f224 Vangelis Koukis
                                <div class="password"></div>
347 f533f224 Vangelis Koukis
                            </div>
348 f533f224 Vangelis Koukis
                            <div class="popup-details">
349 f533f224 Vangelis Koukis
                                <div class="write-password"></div>
350 f533f224 Vangelis Koukis
                                <div class="write-password-details">{% trans "More details about the result"%}</div>
351 f533f224 Vangelis Koukis
                            </div>
352 f533f224 Vangelis Koukis
                        </div>
353 f533f224 Vangelis Koukis
                    </div>
354 f533f224 Vangelis Koukis
                </div>
355 f533f224 Vangelis Koukis
            </div>
356 cc7c5902 Dimitris Moraitis
        </div>
357 f533f224 Vangelis Koukis
        {% include "footer.html" %}
358 cc7c5902 Dimitris Moraitis
    </div>
359 f533f224 Vangelis Koukis
360 cc7c5902 Dimitris Moraitis
    <!-- activate tabs with JavaScript -->
361 cc7c5902 Dimitris Moraitis
    <script>
362 f533f224 Vangelis Koukis

363 cc7c5902 Dimitris Moraitis
        $(function() {
364 87a29449 Dimitris Moraitis
            // check pane cookie to select the initial pane
365 87a29449 Dimitris Moraitis
            var initial = 0, pane = $.cookie("pane");
366 87a29449 Dimitris Moraitis
            if (pane > 0)
367 87a29449 Dimitris Moraitis
                initial = pane;
368 87a29449 Dimitris Moraitis
            //alert(initial);
369 f533f224 Vangelis Koukis
            $("ul.css-tabs").tabs("div.css-panes div.pane", {
370 87a29449 Dimitris Moraitis
                initialIndex: initial,
371 f533f224 Vangelis Koukis
                onBeforeClick: function(event, i) {
372 f533f224 Vangelis Koukis
                    // get the pane to be opened
373 f533f224 Vangelis Koukis
                    var pane = this.getPanes().eq(i);
374 f533f224 Vangelis Koukis
                    //change the displaying title
375 f533f224 Vangelis Koukis
                    $(".tab-name").text(this.getTabs().eq(i).attr("href"));
376 f533f224 Vangelis Koukis
                    // load it with a page specified in the tab's href attribute
377 4ea5cc44 Mike Muzurakis
                    pane.load(this.getTabs().eq(i).attr("href"),function() {if (!i) {choose_view()}});
378 f533f224 Vangelis Koukis
                }
379 f533f224 Vangelis Koukis
            });
380 cc7c5902 Dimitris Moraitis
        });
381 87a29449 Dimitris Moraitis
        
382 87a29449 Dimitris Moraitis
        // set pane cookie whenever the user clicks on a different pane
383 4ea5cc44 Mike Muzurakis
        $("ul.css-tabs a").click(function(i) {
384 87a29449 Dimitris Moraitis
            $.cookie("pane", $("ul.css-tabs a").index(this));
385 87a29449 Dimitris Moraitis
        });
386 87a29449 Dimitris Moraitis
        
387 f533f224 Vangelis Koukis
        //change menu title on hover
388 f533f224 Vangelis Koukis
        $("ul.css-tabs li").hover(
389 f533f224 Vangelis Koukis
            function () {
390 f533f224 Vangelis Koukis
                if ($(this).find("a.current").length == 0) {
391 f533f224 Vangelis Koukis
                    $(this).parent().parent().find(".tab-name").text($(this).find("a").attr("href"));
392 f533f224 Vangelis Koukis
                }
393 f533f224 Vangelis Koukis
            },
394 f533f224 Vangelis Koukis
            function () {
395 f533f224 Vangelis Koukis
                $(this).parent().parent().find(".tab-name").text($(this).parent().find("a.current").attr("href"));
396 f533f224 Vangelis Koukis
            }
397 f533f224 Vangelis Koukis
        );
398 87a29449 Dimitris Moraitis
        
399 cc7c5902 Dimitris Moraitis
    </script>
400 cc7c5902 Dimitris Moraitis
</body>
401 cc7c5902 Dimitris Moraitis
</html>