Statistics
| Branch: | Tag: | Revision:

root / ui / templates / machines.html @ cb748f1f

History | View | Annotate | Download (42.4 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 edda4d30 Markos Gogoulos
{% load i18n %}
37 edda4d30 Markos Gogoulos
38 e5b0ba20 Vangelis Koukis
<div id="machines" class="separator"></div>
39 e55b8703 Christodoulos Psaltis
40 d165dbb4 Christodoulos Psaltis
<!-- the create button -->
41 182a5ae3 Mike Muzurakis
<div id="ie-fix">
42 182a5ae3 Mike Muzurakis
    <div id="createcontainer">
43 182a5ae3 Mike Muzurakis
        <div id="beforecreate" style="display:inline;"></div>
44 182a5ae3 Mike Muzurakis
        <a id="create" rel="#wizard" href="#">{% trans "Create New +" %}</a>
45 182a5ae3 Mike Muzurakis
    </div>
46 6902f72e clopy
</div>
47 d165dbb4 Christodoulos Psaltis
48 d165dbb4 Christodoulos Psaltis
<!-- changing between standard/list view -->
49 b7b0b116 Mike Muzurakis
<div id="ie-fix-view-select">
50 b7b0b116 Mike Muzurakis
    <div id="view-select">
51 3b84b94a Kostas Papadimitriou
        <a id="standard" href="{% url machines-standard %}" title="{% trans "Icon " %}"></a>
52 3b84b94a Kostas Papadimitriou
        <a id="list" href="{% url machines-list %}" title="{% trans "List " %}"></a>
53 3b84b94a Kostas Papadimitriou
        <a id="single" href="{% url machines-single %}" title="{% trans "Single " %}"></a>
54 b7b0b116 Mike Muzurakis
    </div>
55 e55b8703 Christodoulos Psaltis
</div>
56 e55b8703 Christodoulos Psaltis
57 ef38afe9 Christodoulos Psaltis
<div id="emptymachineslist">
58 963867be Mike Muzurakis
    <h1 id="welcomeheader">{% trans "Welcome to ~okeanos !" %}</h1>
59 ef38afe9 Christodoulos Psaltis
    <br />
60 963867be Mike Muzurakis
    <span class="welcomebody">{% trans "From this panel you will be able to manage your Virtual Machines (VMs). If you don't know what a VM is: " %}<br /><a href="#">{% trans "take the tour" %}</a>.</span>
61 ef38afe9 Christodoulos Psaltis
    <br />
62 ef38afe9 Christodoulos Psaltis
    <br />
63 963867be Mike Muzurakis
    <span class="welcomebody">{% trans "The panel is currently empty, because you don't have any VMs yet. Start by clicking the orange button on the top left. The wizard will guide you through the whole process." %}</span>
64 ef38afe9 Christodoulos Psaltis
    <br />
65 ef38afe9 Christodoulos Psaltis
    <br />
66 5ef04f85 Constantinos Venetsanopoulos
    <span class="welcomefooter">{% trans "For more information or help, click " %}<a href="#">{% trans "here" %}</a>.</span>
67 6902f72e clopy
</div>
68 6902f72e clopy
69 cc7c5902 Dimitris Moraitis
<!-- the form -->
70 cc7c5902 Dimitris Moraitis
<form action="#">
71 f533f224 Vangelis Koukis
    <!-- scrollable root element -->
72 f533f224 Vangelis Koukis
    <div class="modal" id="wizard">
73 f533f224 Vangelis Koukis
        <!-- status bar -->
74 f533f224 Vangelis Koukis
        <ul id="status">
75 b7e79006 Mike Muzurakis
            <li class="active li-0">
76 ef38afe9 Christodoulos Psaltis
                <span class="headernumber" class="first">1</span>
77 ef38afe9 Christodoulos Psaltis
                <div class="headerbody first">{% trans "Image" %}</div>
78 b7e79006 Mike Muzurakis
                <img src="static/check.png" class="img-check" style="visibility:hidden;" />
79 ef38afe9 Christodoulos Psaltis
            </li>
80 b7e79006 Mike Muzurakis
            <li class="li-1">
81 ef38afe9 Christodoulos Psaltis
                <span class="headernumber">2</span>
82 ef38afe9 Christodoulos Psaltis
                <div class="headerbody">{% trans "Flavor" %}</div>
83 b7e79006 Mike Muzurakis
                <img src="static/check.png" class="img-check" style="visibility:hidden;" />
84 ef38afe9 Christodoulos Psaltis
            </li>
85 b7e79006 Mike Muzurakis
            <li class="li-2">
86 ef38afe9 Christodoulos Psaltis
                <span class="headernumber">3</span>
87 ef38afe9 Christodoulos Psaltis
                <div class="headerbody">{% trans "Name" %}</div>
88 ef38afe9 Christodoulos Psaltis
            </li>
89 f533f224 Vangelis Koukis
        </ul>
90 f533f224 Vangelis Koukis
        <!-- scrollable items -->
91 f533f224 Vangelis Koukis
        <div class="items">
92 f533f224 Vangelis Koukis
            <!-- pages -->
93 b7e79006 Mike Muzurakis
            <div class="page page1">
94 cf0eb36b Markos Gogoulos
                <h2>{% trans "Select an OS" %}</h2>
95 94adeabb Mike Muzurakis
                <hr class="topruler" />
96 f533f224 Vangelis Koukis
                <div id="tabscontainer">
97 f533f224 Vangelis Koukis
                    <ul class="tabs">
98 f533f224 Vangelis Koukis
                        <li><a href="#">{% trans "system images" %}</a></li>
99 f533f224 Vangelis Koukis
                        <li><a href="#">{% trans "custom images" %}</a></li>
100 f533f224 Vangelis Koukis
                    </ul>
101 f533f224 Vangelis Koukis
                </div>
102 89976b6c Christodoulos Psaltis
                <div class="panes">
103 4ea5cc44 Mike Muzurakis
                    <li id="image-template" style="display:none;">
104 f533f224 Vangelis Koukis
                        <label for="image.id">
105 9b1b6f3a Christodoulos Psaltis
                            <a>
106 94adeabb Mike Muzurakis
                                <div class="image-container">
107 94adeabb Mike Muzurakis
                                    <div class="image">
108 3091ead5 Mike Muzurakis
                                        <input class="radio" type="radio" name="image-id" id="image-id" />
109 94adeabb Mike Muzurakis
                                        <img src="" class="image-logo"/>
110 94adeabb Mike Muzurakis
                                        <strong class="image-title">image.title</strong>
111 94adeabb Mike Muzurakis
                                        <br />
112 f533f224 Vangelis Koukis
                                        <div class="description-container">
113 f533f224 Vangelis Koukis
                                            <span class="description">image.description</span>
114 f533f224 Vangelis Koukis
                                            <span id="size" class="size">?? MB</span><span class="size"> MB</span>
115 f533f224 Vangelis Koukis
                                        </div>
116 94adeabb Mike Muzurakis
                                    </div>
117 f533f224 Vangelis Koukis
                                </div>
118 9b1b6f3a Christodoulos Psaltis
                            </a>
119 f533f224 Vangelis Koukis
                        </label>
120 f533f224 Vangelis Koukis
                    </li>
121 ec06b07c Dimitris Moraitis
                    <ul class="pane" id="standard-images">
122 f533f224 Vangelis Koukis
                        <!-- standard images -->
123 f533f224 Vangelis Koukis
                    </ul>
124 ec06b07c Dimitris Moraitis
                    <ul class="pane" id="custom-images">
125 f533f224 Vangelis Koukis
                        <!-- custom images -->
126 cc7c5902 Dimitris Moraitis
                    </ul>
127 cc7c5902 Dimitris Moraitis
                </div>
128 94adeabb Mike Muzurakis
                <hr class="bottomruler" />
129 f533f224 Vangelis Koukis
                <button type="button" class="prev" id="cancel">{% trans "Cancel" %}</button>
130 8e15be4c Mike Muzurakis
                <button type="button" class="next right">{% trans "Next" %}<img src="static/next.png" class="img-next" /></button>
131 cc7c5902 Dimitris Moraitis
            </div>
132 b7e79006 Mike Muzurakis
            <div class="page page2">
133 f533f224 Vangelis Koukis
                <h2>{% trans "Select CPUs, RAM and Disk Size" %}</h2>
134 94adeabb Mike Muzurakis
                <hr class="topruler" />
135 cc7c5902 Dimitris Moraitis
                <ul>
136 94adeabb Mike Muzurakis
                    <li id="machinetype">
137 c376783b Markos Gogoulos
                        <div class="machine-type">
138 94adeabb Mike Muzurakis
                            <label for="small" id="small">
139 c376783b Markos Gogoulos
                                <input type="radio" id="small" name="machine-type" value="small" checked="true" />
140 afa2ebd2 Mike Muzurakis
                                <span class="typebody" id="small-body">{% trans "small" %}</span>
141 cc7c5902 Dimitris Moraitis
                            </label>
142 cc7c5902 Dimitris Moraitis
                        </div>
143 f533f224 Vangelis Koukis
                        <div class="machine-type">
144 94adeabb Mike Muzurakis
                            <label for="medium" id="medium">
145 f533f224 Vangelis Koukis
                                <input type="radio" id="medium" name="machine-type" value="medium" />
146 afa2ebd2 Mike Muzurakis
                                <span class="typebody" id="medium-body">{% trans "medium" %}</span>
147 cc7c5902 Dimitris Moraitis
                            </label>
148 cc7c5902 Dimitris Moraitis
                        </div>
149 c376783b Markos Gogoulos
                        <div class="machine-type">
150 94adeabb Mike Muzurakis
                            <label for="large" id="large">
151 c376783b Markos Gogoulos
                                <input type="radio" id="large" name="machine-type" value="large" />
152 afa2ebd2 Mike Muzurakis
                                <span class="typebody" id="large-body">{% trans "large" %}</span>
153 cc7c5902 Dimitris Moraitis
                            </label>
154 cc7c5902 Dimitris Moraitis
                        </div>
155 c376783b Markos Gogoulos
                        <div class="machine-type">
156 94adeabb Mike Muzurakis
                            <label for="custom" id="custom">
157 c376783b Markos Gogoulos
                                <input type="radio" name="machine-type" id="custom" value="large" />
158 afa2ebd2 Mike Muzurakis
                                <span class="typebody" id="custom-body">{% trans "custom" %}</span>
159 cc7c5902 Dimitris Moraitis
                            </label>
160 cc7c5902 Dimitris Moraitis
                        </div>
161 cc7c5902 Dimitris Moraitis
                    </li>
162 94adeabb Mike Muzurakis
                    <div id="page2-container">
163 94adeabb Mike Muzurakis
                        <li class="slider-container">
164 f533f224 Vangelis Koukis
                            <label><strong class="sliders">{% trans "CPUs" %}</strong></label>
165 94adeabb Mike Muzurakis
                            <input type="range" id="cpu" style="display:none" />
166 94adeabb Mike Muzurakis
                            <input type="text" class="range" id="cpu-indicator" />
167 f533f224 Vangelis Koukis
                            <span class="units">{% trans "cores" %}</span>
168 94adeabb Mike Muzurakis
                        </li>
169 94adeabb Mike Muzurakis
                        <li class="slider-container">
170 f533f224 Vangelis Koukis
                            <label><strong class="sliders">{% trans "RAM" %}</strong></label>
171 94adeabb Mike Muzurakis
                            <input type="range" id="ram" style="display:none" />
172 94adeabb Mike Muzurakis
                            <input type="text" class="range" id="ram-indicator" />
173 f533f224 Vangelis Koukis
                            <span class="units">MB</span>
174 94adeabb Mike Muzurakis
                        </li>
175 94adeabb Mike Muzurakis
                        <li class="slider-container">
176 f533f224 Vangelis Koukis
                            <label><strong class="sliders">{% trans "Size" %}</strong></label>
177 94adeabb Mike Muzurakis
                            <input type="range" id="storage" style="display:none" />
178 94adeabb Mike Muzurakis
                            <input type="text" class="range" id="storage-indicator" />
179 f533f224 Vangelis Koukis
                            <span class="units">GB</span>
180 94adeabb Mike Muzurakis
                        </li>
181 94adeabb Mike Muzurakis
                        <li>
182 94adeabb Mike Muzurakis
                            <div class="cost">
183 504981ba Mike Muzurakis
                                <span> {% trans "Your wallet:" %} 10,000 {% trans "Credits" %} </span> | <span>{% trans "This setup will cost you:" %}<input type="text" id="credits-indicator" value="0" class="range" disabled="disabled" /> {% trans "C/hour" %}</span>
184 94adeabb Mike Muzurakis
                            </div>
185 94adeabb Mike Muzurakis
                        </li>
186 94adeabb Mike Muzurakis
                    </div>
187 cc7c5902 Dimitris Moraitis
                </ul>
188 94adeabb Mike Muzurakis
                <hr class="bottomruler" />
189 8e15be4c Mike Muzurakis
                <button type="button" class="prev"><img src="static/prev.png" class="img-prev" />{% trans "Back" %}</button>
190 8e15be4c Mike Muzurakis
                <button type="button" class="next right">{% trans "Next" %}<img src="static/next.png" class="img-next" /></button>
191 cc7c5902 Dimitris Moraitis
            </div>
192 b7e79006 Mike Muzurakis
            <div class="page page3">
193 f533f224 Vangelis Koukis
                <h2>{% trans "Confirm your settings" %}</h2>
194 94adeabb Mike Muzurakis
                <hr class="topruler" />
195 94adeabb Mike Muzurakis
                <ul id="page3-container">
196 afa2ebd2 Mike Muzurakis
                    <li class="required" id="label-name">
197 cc7c5902 Dimitris Moraitis
                        <label>
198 f533f224 Vangelis Koukis
                            <strong>{% trans "Name" %}:</strong>
199 cae67343 Mike Muzurakis
                            <input type="text" class="text" name="machine_name" id="name" value="My Ubuntu 10.04 x86_64 server"/>
200 cc7c5902 Dimitris Moraitis
                        </label>
201 cc7c5902 Dimitris Moraitis
                    </li>
202 cc7c5902 Dimitris Moraitis
                    <li>
203 94adeabb Mike Muzurakis
                        <span>{% trans "Image:" %}</span> <span id="machine_image-label">Ubuntu 10.04 x86_64 server</span>
204 cc7c5902 Dimitris Moraitis
                    </li>
205 cc7c5902 Dimitris Moraitis
                    <li>
206 94adeabb Mike Muzurakis
                        <span>{% trans "CPUs:" %}</span> <span id="machine_cpu-label">2</span> <span>{% trans "cores" %}</span>
207 cc7c5902 Dimitris Moraitis
                    </li>
208 cc7c5902 Dimitris Moraitis
                    <li>
209 94adeabb Mike Muzurakis
                        <span>{% trans "RAM:" %}</span> <span id="machine_ram-label">1024</span><span>MB</span>
210 cc7c5902 Dimitris Moraitis
                    </li>
211 cc7c5902 Dimitris Moraitis
                    <li>
212 94adeabb Mike Muzurakis
                        <span>{% trans "System Disk:" %}</span> <span id="machine_storage-label">10</span><span>GB</span>
213 cc7c5902 Dimitris Moraitis
                    </li>
214 cc7c5902 Dimitris Moraitis
                    <li>
215 94adeabb Mike Muzurakis
                        <span>{% trans "Cost per Hour:" %}</span> <span>40 {% trans "credits" %}</span>
216 cc7c5902 Dimitris Moraitis
                    </li>
217 cc7c5902 Dimitris Moraitis
                    <li>
218 94adeabb Mike Muzurakis
                        <span>{% trans "Credits in Wallet:" %}</span> <span>10.000</span>
219 cc7c5902 Dimitris Moraitis
                    </li>
220 cc7c5902 Dimitris Moraitis
                </ul>
221 94adeabb Mike Muzurakis
                <hr class="bottomruler" />
222 8e15be4c Mike Muzurakis
                <button type="button" class="prev"><img src="static/prev.png" class="img-prev" />{% trans "Back" %}</button>
223 f533f224 Vangelis Koukis
                <button type="button" class="next right" id="start">{% trans "Create VM" %}</button>
224 cc7c5902 Dimitris Moraitis
            </div>
225 f533f224 Vangelis Koukis
        </div>
226 f533f224 Vangelis Koukis
        <div class="separator-end"></div>
227 f533f224 Vangelis Koukis
    </div>
228 cc7c5902 Dimitris Moraitis
</form>
229 cc7c5902 Dimitris Moraitis
230 f533f224 Vangelis Koukis
<!-- metadata overlay -->
231 71eade6b Christodoulos Psaltis
<div>
232 f533f224 Vangelis Koukis
    <div id="metadata-wizard" class="modal">
233 f533f224 Vangelis Koukis
        <h3 class="popup-header">{% trans "Manage Tags" %}</h3>
234 f533f224 Vangelis Koukis
        <p style='display:none;'>hidden server id</p>
235 f533f224 Vangelis Koukis
        <div id="on-off" style='display:none;'>hidden server id</div>
236 f533f224 Vangelis Koukis
        <div class="popup-body">
237 f533f224 Vangelis Koukis
            <div class="popup-body-inner">
238 f533f224 Vangelis Koukis
                <div class="popup-title">{% trans "Create, edit and delete Tags for machine:" %}</div>
239 f533f224 Vangelis Koukis
                <div class="name-container">
240 f533f224 Vangelis Koukis
                    <img src="" class="machine-icon" />
241 f533f224 Vangelis Koukis
                    <div class="machine-name"></div>
242 f533f224 Vangelis Koukis
                </div>
243 f533f224 Vangelis Koukis
                <div class="popup-separator"></div>
244 f533f224 Vangelis Koukis
                <div class="large-spinner" style="display:none;"></div>
245 f533f224 Vangelis Koukis
                <div class="metadata-container">
246 f533f224 Vangelis Koukis
                    <!-- append metadata entries here -->
247 f533f224 Vangelis Koukis
                </div>
248 f533f224 Vangelis Koukis
                <div class="metadata-add-template" style="display:none;">
249 f533f224 Vangelis Koukis
                    <input type="text" id="add-meta-key" maxlength="15"></input>
250 17ee954a Mike Muzurakis
                    <ul style="display:none;" class="dropdown-container">
251 f533f224 Vangelis Koukis
                        {% for o in default_keywords %}
252 f533f224 Vangelis Koukis
                            <li><span class="dropdownitem">{{o}}</span></li>
253 f533f224 Vangelis Koukis
                        {% endfor %}
254 f533f224 Vangelis Koukis
                    </ul>
255 f533f224 Vangelis Koukis
                    <input type="text" id="add-meta-value" maxlength="150" value="{% trans 'max 150 characters' %}"></input>
256 f533f224 Vangelis Koukis
                    <div class="addbuttons">
257 9e60a338 Mike Muzurakis
                        <div class="save"></div>
258 9e60a338 Mike Muzurakis
                        <div class="cancel"></div>
259 71eade6b Christodoulos Psaltis
                    </div>
260 71eade6b Christodoulos Psaltis
                </div>
261 f533f224 Vangelis Koukis
                <div class="metadata-pair-template" style="display:none;">
262 f533f224 Vangelis Koukis
                    <div class="metadata-key">{% trans "OS" %}</div>
263 f533f224 Vangelis Koukis
                    <div class="vertical-separator"></div>
264 f533f224 Vangelis Koukis
                    <div class="metadata-value">{% trans "Debian" %}</div>
265 f533f224 Vangelis Koukis
                    <div class="metadata-full-value" style="display:none;"></div>
266 f533f224 Vangelis Koukis
                    <div class="metadata-edit">
267 9e60a338 Mike Muzurakis
                        <div class="edit"></div>
268 9e60a338 Mike Muzurakis
                        <div class="remove"></div>
269 f533f224 Vangelis Koukis
                    </div>
270 f533f224 Vangelis Koukis
                    <div class="editbuttons" style="display:none;">
271 9e60a338 Mike Muzurakis
                        <div class="save"></div>
272 9e60a338 Mike Muzurakis
                        <div class="remove"></div>
273 71eade6b Christodoulos Psaltis
                    </div>
274 71eade6b Christodoulos Psaltis
                </div>
275 71eade6b Christodoulos Psaltis
            </div>
276 a7ccb6f9 Christodoulos Psaltis
        </div>
277 f533f224 Vangelis Koukis
        <div class="buttons">
278 f533f224 Vangelis Koukis
            <button type="button" class="save" id="metadata-cancel">{% trans "Close" %}</button>
279 f533f224 Vangelis Koukis
            <button type="button" class="create" id="metadata-create">{% trans "Create New" %}</button>
280 f533f224 Vangelis Koukis
        </div>
281 339712cb Christodoulos Psaltis
    </div>
282 339712cb Christodoulos Psaltis
</div>
283 339712cb Christodoulos Psaltis
284 71eade6b Christodoulos Psaltis
<a id="metadata-scrollable" href="#" rel="#metadata-wizard"></a>
285 d165dbb4 Christodoulos Psaltis
286 42f67a2a Dimitris Moraitis
<div id="machinesview"></div>
287 42f67a2a Dimitris Moraitis
288 267403ca Dimitris Moraitis
<div class="confirm_multiple">
289 3d286f84 Dimitris Moraitis
    <p>{% trans "Your actions will affect" %} <span class="actionLen">XX</span> {% trans "machines" %}</p>
290 2cd96cc7 Vangelis Koukis
    <button class="yes">{% trans "Confirm All" %}</button>
291 f533f224 Vangelis Koukis
    <button class="no">{% trans "Cancel All" %}</button>
292 d725fb12 Christodoulos Psaltis
</div>
293 31343277 Christodoulos Psaltis
294 cc7c5902 Dimitris Moraitis
<script>
295 f1d5a1b8 Mike Muzurakis

296 dc3e66b9 Mike Muzurakis
// TODO: This should be populated with more rules for all available states
297 dc3e66b9 Mike Muzurakis
var actions = { 'reboot':        ['UNKOWN', 'ACTIVE', 'REBOOT'],
298 dc3e66b9 Mike Muzurakis
                'shutdown':      ['UNKOWN', 'ACTIVE', 'REBOOT'],
299 dc3e66b9 Mike Muzurakis
                'console':       ['ACTIVE'],
300 dc3e66b9 Mike Muzurakis
                'start':         ['UNKOWN', 'STOPPED'],
301 dc3e66b9 Mike Muzurakis
                'destroy':       ['UNKOWN', 'ACTIVE', 'STOPPED', 'REBOOT', 'ERROR', 'BUILD']
302 dc3e66b9 Mike Muzurakis
               };
303 dc3e66b9 Mike Muzurakis

304 dc3e66b9 Mike Muzurakis

305 8e15be4c Mike Muzurakis
//change hover icon on prev,next buttons
306 8e15be4c Mike Muzurakis
$("#wizard button.next").hover(function() {
307 8e15be4c Mike Muzurakis
        $(this).find(".img-next").attr("src","static/next-hover.png");
308 8e15be4c Mike Muzurakis
    },
309 8e15be4c Mike Muzurakis
    function() {
310 8e15be4c Mike Muzurakis
        $(this).find(".img-next").attr("src","static/next.png");
311 8e15be4c Mike Muzurakis
    }
312 8e15be4c Mike Muzurakis
);
313 8e15be4c Mike Muzurakis
$("#wizard button.prev").hover(function() {
314 8e15be4c Mike Muzurakis
        $(this).find(".img-prev").attr("src","static/prev-hover.png");
315 8e15be4c Mike Muzurakis
    },
316 8e15be4c Mike Muzurakis
    function() {
317 8e15be4c Mike Muzurakis
        $(this).find(".img-prev").attr("src","static/prev.png");
318 8e15be4c Mike Muzurakis
    }
319 8e15be4c Mike Muzurakis
);
320 8e15be4c Mike Muzurakis

321 afa2ebd2 Mike Muzurakis
//add hover to labels
322 f533f224 Vangelis Koukis
$('#machines-pane span.typebody').mouseover(function() {
323 cf93419a Mike Muzurakis
    $(this).addClass('typehover');
324 afa2ebd2 Mike Muzurakis
});
325 f533f224 Vangelis Koukis
$('#machines-pane span.typebody').mouseout(function() {
326 cf93419a Mike Muzurakis
    $(this).removeClass('typehover');
327 afa2ebd2 Mike Muzurakis
});
328 afa2ebd2 Mike Muzurakis

329 fb66080c Dimitris Moraitis
// switch to list view
330 f533f224 Vangelis Koukis
$("#machines-pane a#list").click(function(){
331 f533f224 Vangelis Koukis
    list_view();
332 9b1b6f3a Christodoulos Psaltis
    return false;
333 9b1b6f3a Christodoulos Psaltis
});
334 fb66080c Dimitris Moraitis

335 9b1b6f3a Christodoulos Psaltis
// switch to standard view
336 f533f224 Vangelis Koukis
$("#machines-pane a#standard").click(function(){
337 9b1b6f3a Christodoulos Psaltis
    standard_view();
338 9b1b6f3a Christodoulos Psaltis
    return false;
339 9b1b6f3a Christodoulos Psaltis
});
340 38e2c5ed Christodoulos Psaltis

341 f533f224 Vangelis Koukis
// switch to single view
342 f533f224 Vangelis Koukis
$("#machines-pane a#single").click(function(){
343 f533f224 Vangelis Koukis
    single_view();
344 f533f224 Vangelis Koukis
    return false;
345 f533f224 Vangelis Koukis
});
346 f533f224 Vangelis Koukis

347 bd8b1d60 Christodoulos Psaltis
// launch VM creation wizard
348 f533f224 Vangelis Koukis
$("#machines-pane a#create").click(function(){
349 146b6003 Dimitris Moraitis
    // launch wizard only if images and flavors are found
350 146b6003 Dimitris Moraitis
    if (images.length > 0  && flavors.length > 0) {
351 4a40dfff Dimitris Moraitis
        $('#machines-pane a#create').data('overlay').close();
352 a3e418b1 Markos Gogoulos
        $("#wizard").scrollable().begin();
353 a3e418b1 Markos Gogoulos
        $("#wizard").show();
354 4a40dfff Dimitris Moraitis
        $('#machines-pane a#create').data('overlay').load();
355 0c2ad1b7 Christodoulos Psaltis
        // enable submit button
356 0c2ad1b7 Christodoulos Psaltis
        $("#wizard #start").removeAttr('disabled');
357 146b6003 Dimitris Moraitis
    } else if (images.length == 0 ) {
358 146b6003 Dimitris Moraitis
        ajax_error('NO_IMAGES');
359 f533f224 Vangelis Koukis
        return false;
360 146b6003 Dimitris Moraitis
    } else if (flavors.length == 0) {
361 146b6003 Dimitris Moraitis
        ajax_error('NO_FLAVORS');
362 146b6003 Dimitris Moraitis
        return false;
363 146b6003 Dimitris Moraitis
    }
364 ec06b07c Dimitris Moraitis
});
365 ec06b07c Dimitris Moraitis

366 f124656b Christodoulos Psaltis
// create wizard overlay
367 f533f224 Vangelis Koukis
$(function() {
368 f533f224 Vangelis Koukis
    $("#machines-pane a#create").overlay({
369 716c3ead Dimitris Moraitis
        mask: '#666',
370 f533f224 Vangelis Koukis
        effect: 'default',
371 f533f224 Vangelis Koukis
        top: '5%',
372 f124656b Christodoulos Psaltis
        oneInstance: false,
373 f974b570 Dimitris Moraitis
        closeOnClick: false
374 f124656b Christodoulos Psaltis
    });
375 f124656b Christodoulos Psaltis
});
376 f124656b Christodoulos Psaltis

377 bd8b1d60 Christodoulos Psaltis
// wizard
378 f533f224 Vangelis Koukis
$(function() {
379 bd8b1d60 Christodoulos Psaltis
    var root = $("#wizard").scrollable();
380 bd8b1d60 Christodoulos Psaltis
    var api = root.scrollable();
381 bd8b1d60 Christodoulos Psaltis
    // rangeinput with default configuration
382 bd8b1d60 Christodoulos Psaltis
    // validation logic is done inside the onBeforeSeek callback
383 bd8b1d60 Christodoulos Psaltis
    api.onBeforeSeek(function(event, i) {
384 b7e79006 Mike Muzurakis
        // update status bar
385 b7e79006 Mike Muzurakis
        $("#status li").removeClass("active").eq(i).addClass("active");
386 f533f224 Vangelis Koukis
        // we are going 1 step backwards so no need for validation
387 b7e79006 Mike Muzurakis
        if (api.getIndex() > i) {
388 b7e79006 Mike Muzurakis
            $("#wizard .li-" + i).removeClass("checked");
389 b7e79006 Mike Muzurakis
            $("#wizard .li-" + i).find(".img-check").css("visibility","hidden");
390 b7e79006 Mike Muzurakis
        }
391 f533f224 Vangelis Koukis
        if (api.getIndex() < i) {
392 b7e79006 Mike Muzurakis
            $("#wizard .li-" + api.getIndex()).addClass("checked");
393 b7e79006 Mike Muzurakis
            $("#wizard .li-" + api.getIndex()).find(".img-check").css("visibility","visible");
394 bd8b1d60 Christodoulos Psaltis
             // 1. get current page
395 f533f224 Vangelis Koukis
             var page = root.find(".page").eq(api.getIndex()),
396 f533f224 Vangelis Koukis
             // 2. .. and all required fields inside the page
397 f533f224 Vangelis Koukis
             inputs = page.find(".required :input").removeClass("error"),
398 f533f224 Vangelis Koukis
             // 3. .. which are empty
399 f533f224 Vangelis Koukis
             empty = inputs.filter(function() {
400 f533f224 Vangelis Koukis
                return $(this).val().replace(/\s*/g, '') == '';
401 f533f224 Vangelis Koukis
             });
402 f533f224 Vangelis Koukis
             // if there are empty fields, then
403 f533f224 Vangelis Koukis
            if (empty.length) {
404 f533f224 Vangelis Koukis
                // add a CSS class name "error" for empty & required fields
405 f533f224 Vangelis Koukis
                empty.addClass("error");
406 f533f224 Vangelis Koukis
                // cancel seeking of the scrollable by returning false
407 f533f224 Vangelis Koukis
                return false;
408 f533f224 Vangelis Koukis
            // everything is good
409 f533f224 Vangelis Koukis
            }
410 f533f224 Vangelis Koukis
        }
411 71642965 Dimitris Moraitis
        // update confirm step
412 20fae095 Christodoulos Psaltis
        if (api.getIndex()==0) {
413 20fae095 Christodoulos Psaltis
            var image = $("input[type=radio][name=image-id]:checked");
414 b335768e Markos Gogoulos
            var imageRef = image.length ? image[0].id : false
415 b335768e Markos Gogoulos
            if (imageRef) {
416 b335768e Markos Gogoulos
                var imageName = $("label[for=" + imageRef + "] .image-title").text();
417 20fae095 Christodoulos Psaltis
                $("#machine_image-label")[0].textContent = imageName;
418 20fae095 Christodoulos Psaltis
                $("input[type=text][name=machine_name]")[0].value = "My " + imageName + " server";
419 20fae095 Christodoulos Psaltis
            }
420 42f67a2a Dimitris Moraitis
        } else if (api.getIndex()==1) {
421 20fae095 Christodoulos Psaltis
            $("#machine_cpu-label")[0].textContent = $("#cpu-indicator")[0].value;
422 20fae095 Christodoulos Psaltis
            $("#machine_ram-label")[0].textContent = $("#ram-indicator")[0].value;
423 20fae095 Christodoulos Psaltis
            $("#machine_storage-label")[0].textContent = $("#storage-indicator")[0].value;
424 f533f224 Vangelis Koukis
        }
425 bd8b1d60 Christodoulos Psaltis
    });
426 bd8b1d60 Christodoulos Psaltis
    // if tab is pressed on the next button seek to next page
427 f87e79a4 Mike Muzurakis
    $(root).live('keydown', function (e) {
428 f87e79a4 Mike Muzurakis
       if ( e.keyCode == 9 ){
429 f87e79a4 Mike Muzurakis
           if(e.preventDefault) {
430 f87e79a4 Mike Muzurakis
               e.preventDefault();
431 f87e79a4 Mike Muzurakis
           }
432 29f0a240 Mike Muzurakis
           api.next();
433 f87e79a4 Mike Muzurakis
        }
434 bd8b1d60 Christodoulos Psaltis
    });
435 88bdf273 Mike Muzurakis
    //submit wizard by pressing enter on the name textbox
436 cae67343 Mike Muzurakis
    $("#name").keypress(function (e) {
437 f533f224 Vangelis Koukis
        if ((e.which && e.which == 13) || (e.keyCode && e.keyCode == 13)) {
438 f533f224 Vangelis Koukis
            $('#start').click();
439 f533f224 Vangelis Koukis
            return false;
440 f533f224 Vangelis Koukis
        } else {
441 f533f224 Vangelis Koukis
            return true;
442 f533f224 Vangelis Koukis
        }
443 cae67343 Mike Muzurakis
    });
444 71642965 Dimitris Moraitis
});
445 cc7c5902 Dimitris Moraitis

446 bd8b1d60 Christodoulos Psaltis
// disable sliders in flavor selection
447 cc7c5902 Dimitris Moraitis
function disableSliders() {
448 cc7c5902 Dimitris Moraitis
    $("#cpu").attr('disabled',true);
449 cc7c5902 Dimitris Moraitis
    $("#ram").attr('disabled',true);
450 cc7c5902 Dimitris Moraitis
    $("#storage").attr('disabled',true);
451 cc7c5902 Dimitris Moraitis
}
452 cc7c5902 Dimitris Moraitis

453 afa2ebd2 Mike Muzurakis
//update radio button when clicking on text
454 f533f224 Vangelis Koukis
$("#small-body").live('click' ,function() {
455 afa2ebd2 Mike Muzurakis
    $(this).parent().find("#small").click();
456 afa2ebd2 Mike Muzurakis
});
457 f533f224 Vangelis Koukis

458 f533f224 Vangelis Koukis
$("#medium-body").live('click' ,function() {
459 afa2ebd2 Mike Muzurakis
    $(this).parent().find("#medium").click();
460 afa2ebd2 Mike Muzurakis
});
461 f533f224 Vangelis Koukis

462 f533f224 Vangelis Koukis
$("#large-body").live('click' ,function() {
463 afa2ebd2 Mike Muzurakis
    $(this).parent().find("#large").click();
464 afa2ebd2 Mike Muzurakis
});
465 f533f224 Vangelis Koukis

466 f533f224 Vangelis Koukis
$("#custom-body").live('click' ,function() {
467 afa2ebd2 Mike Muzurakis
    $(this).parent().find("#custom").click();
468 afa2ebd2 Mike Muzurakis
});
469 afa2ebd2 Mike Muzurakis

470 afa2ebd2 Mike Muzurakis
//select image div on radio button select
471 f533f224 Vangelis Koukis
$('#machines-pane .radio').live('click' ,function() {
472 afa2ebd2 Mike Muzurakis
    $(this).parents("div").find(".image").removeClass('selecteddiv');
473 afa2ebd2 Mike Muzurakis
    if($(this).is(':checked'))  {
474 afa2ebd2 Mike Muzurakis
        $(this).parent().addClass('selecteddiv');
475 afa2ebd2 Mike Muzurakis
    }
476 afa2ebd2 Mike Muzurakis
});
477 afa2ebd2 Mike Muzurakis

478 695e1b21 Dimitris Moraitis
// validate cpu input box
479 695e1b21 Dimitris Moraitis
$("#cpu-indicator").live('change',function(){
480 695e1b21 Dimitris Moraitis
    var v = Number(this.value);
481 695e1b21 Dimitris Moraitis
    var i = cpus.indexOf(v);
482 695e1b21 Dimitris Moraitis
    if (isNaN(v)) {
483 695e1b21 Dimitris Moraitis
        $(this).value = cpus[0];
484 695e1b21 Dimitris Moraitis
        $("#cpu").data('rangeinput').setValue(0);
485 695e1b21 Dimitris Moraitis
    } else if (i == -1) {
486 695e1b21 Dimitris Moraitis
        for (var j=0; j < cpus.length; j++)
487 695e1b21 Dimitris Moraitis
            if (v<cpus[j])
488 695e1b21 Dimitris Moraitis
                break;
489 695e1b21 Dimitris Moraitis
        $("#cpu").data('rangeinput').setValue(j);
490 695e1b21 Dimitris Moraitis
    } else {
491 695e1b21 Dimitris Moraitis
        $("#cpu").data('rangeinput').setValue(i);
492 f533f224 Vangelis Koukis
    }
493 695e1b21 Dimitris Moraitis
    return false;
494 695e1b21 Dimitris Moraitis
});
495 695e1b21 Dimitris Moraitis

496 695e1b21 Dimitris Moraitis
// validate ram input box
497 695e1b21 Dimitris Moraitis
$("#ram-indicator").live('change',function(){
498 695e1b21 Dimitris Moraitis
    var v = Number(this.value);
499 695e1b21 Dimitris Moraitis
    var i = ram.indexOf(v);
500 695e1b21 Dimitris Moraitis
    if (isNaN(v)) {
501 695e1b21 Dimitris Moraitis
        $(this).value = cpus[0];
502 695e1b21 Dimitris Moraitis
        $("#ram").data('rangeinput').setValue(0);
503 695e1b21 Dimitris Moraitis
    } else if (i == -1) {
504 695e1b21 Dimitris Moraitis
        for (var j=0; j < ram.length; j++)
505 695e1b21 Dimitris Moraitis
            if (v<ram[j])
506 695e1b21 Dimitris Moraitis
                break;
507 695e1b21 Dimitris Moraitis
        $("#ram").data('rangeinput').setValue(j);
508 695e1b21 Dimitris Moraitis
    } else {
509 695e1b21 Dimitris Moraitis
        $("#ram").data('rangeinput').setValue(i);
510 f533f224 Vangelis Koukis
    }
511 695e1b21 Dimitris Moraitis
    return false;
512 695e1b21 Dimitris Moraitis
});
513 695e1b21 Dimitris Moraitis

514 695e1b21 Dimitris Moraitis
// validate storage input box
515 695e1b21 Dimitris Moraitis
$("#storage-indicator").live('change',function(){
516 695e1b21 Dimitris Moraitis
    var v = Number(this.value);
517 695e1b21 Dimitris Moraitis
    var i = disks.indexOf(v);
518 695e1b21 Dimitris Moraitis
    if (isNaN(v)) {
519 695e1b21 Dimitris Moraitis
        $(this).value = disks[0];
520 695e1b21 Dimitris Moraitis
        $("#storage").data('rangeinput').setValue(0);
521 695e1b21 Dimitris Moraitis
    } else if (i == -1) {
522 695e1b21 Dimitris Moraitis
        for (var j=0; j < disks.length; j++)
523 695e1b21 Dimitris Moraitis
            if (v<disks[j])
524 695e1b21 Dimitris Moraitis
                break;
525 695e1b21 Dimitris Moraitis
        $("#storage").data('rangeinput').setValue(j);
526 695e1b21 Dimitris Moraitis
    } else {
527 695e1b21 Dimitris Moraitis
        $("#storage").data('rangeinput').setValue(i);
528 f533f224 Vangelis Koukis
    }
529 695e1b21 Dimitris Moraitis
    return false;
530 695e1b21 Dimitris Moraitis
});
531 695e1b21 Dimitris Moraitis

532 bd8b1d60 Christodoulos Psaltis
// selecting the small size
533 8fd5c3a5 Christodoulos Psaltis
$("#small").click(function(){
534 71642965 Dimitris Moraitis
    $("#cpu").data('rangeinput').setValue(0);
535 71642965 Dimitris Moraitis
    $("#ram").data('rangeinput').setValue(0);
536 71642965 Dimitris Moraitis
    $("#storage").data('rangeinput').setValue(0);
537 68a49035 Dimitris Moraitis
    $("#cpu-indicator")[0].value = cpus[0];
538 68a49035 Dimitris Moraitis
    $("#ram-indicator")[0].value = ram[0];
539 68a49035 Dimitris Moraitis
    $("#storage-indicator")[0].value = disks[0];
540 94adeabb Mike Muzurakis
    $("#small").addClass("active");
541 f533f224 Vangelis Koukis
    $("#medium").removeClass("active");
542 f533f224 Vangelis Koukis
    $("#large").removeClass("active");
543 f533f224 Vangelis Koukis
    $("#custom").removeClass("active");
544 cc7c5902 Dimitris Moraitis
});
545 cc7c5902 Dimitris Moraitis

546 bd8b1d60 Christodoulos Psaltis
// selecting the medium size
547 8fd5c3a5 Christodoulos Psaltis
$("#medium").click(function(){
548 71642965 Dimitris Moraitis
    $("#cpu").data('rangeinput').setValue(1);
549 71642965 Dimitris Moraitis
    $("#ram").data('rangeinput').setValue(1);
550 71642965 Dimitris Moraitis
    $("#storage").data('rangeinput').setValue(1);
551 68a49035 Dimitris Moraitis
    $("#cpu-indicator")[0].value = cpus[1];
552 68a49035 Dimitris Moraitis
    $("#ram-indicator")[0].value = ram[1];
553 f533f224 Vangelis Koukis
    $("#storage-indicator")[0].value = disks[1];
554 f533f224 Vangelis Koukis
    $("#medium").addClass("active");
555 f533f224 Vangelis Koukis
    $("#small").removeClass("active");
556 f533f224 Vangelis Koukis
    $("#large").removeClass("active");
557 f533f224 Vangelis Koukis
    $("#custom").removeClass("active");
558 cc7c5902 Dimitris Moraitis
});
559 cc7c5902 Dimitris Moraitis

560 bd8b1d60 Christodoulos Psaltis
// selecting the large size
561 8fd5c3a5 Christodoulos Psaltis
$("#large").click(function(){
562 71642965 Dimitris Moraitis
    $("#cpu").data('rangeinput').setValue(2);
563 71642965 Dimitris Moraitis
    $("#ram").data('rangeinput').setValue(2);
564 71642965 Dimitris Moraitis
    $("#storage").data('rangeinput').setValue(2);
565 68a49035 Dimitris Moraitis
    $("#cpu-indicator")[0].value = cpus[2];
566 68a49035 Dimitris Moraitis
    $("#ram-indicator")[0].value = ram[2];
567 f533f224 Vangelis Koukis
    $("#storage-indicator")[0].value = disks[2];
568 f533f224 Vangelis Koukis
    $("#large").addClass("active");
569 f533f224 Vangelis Koukis
    $("#medium").removeClass("active");
570 f533f224 Vangelis Koukis
    $("#small").removeClass("active");
571 f533f224 Vangelis Koukis
    $("#custom").removeClass("active");
572 cc7c5902 Dimitris Moraitis
});
573 cc7c5902 Dimitris Moraitis

574 bd8b1d60 Christodoulos Psaltis
// selecting the custom flavor enables the sliders
575 8fd5c3a5 Christodoulos Psaltis
$("#custom").click(function(){
576 bd8b1d60 Christodoulos Psaltis
    $("#cpu").attr('disabled',false);
577 bd8b1d60 Christodoulos Psaltis
    $("#ram").attr('disabled',false);
578 bd8b1d60 Christodoulos Psaltis
    $("#storage").attr('disabled',false);
579 bd8b1d60 Christodoulos Psaltis
    $("strong.sliders").style = 'color: #778899;';
580 f533f224 Vangelis Koukis
    $("#custom input").attr('checked', 'checked');
581 f533f224 Vangelis Koukis
    $("#custom").addClass("active");
582 f533f224 Vangelis Koukis
    $("#medium").removeClass("active");
583 f533f224 Vangelis Koukis
    $("#large").removeClass("active");
584 f533f224 Vangelis Koukis
    $("#small").removeClass("active");
585 bd8b1d60 Christodoulos Psaltis
});
586 bd8b1d60 Christodoulos Psaltis

587 99721d83 Mike Muzurakis
//when textbox gains focus, add selection in css
588 99721d83 Mike Muzurakis
$('#cpu-indicator').focus(function() {
589 99721d83 Mike Muzurakis
    $(this).addClass('selectedrange');
590 99721d83 Mike Muzurakis
});
591 f533f224 Vangelis Koukis

592 99721d83 Mike Muzurakis
$('#ram-indicator').focus(function() {
593 99721d83 Mike Muzurakis
    $(this).addClass('selectedrange');
594 99721d83 Mike Muzurakis
});
595 f533f224 Vangelis Koukis

596 99721d83 Mike Muzurakis
$('#storage-indicator').focus(function() {
597 99721d83 Mike Muzurakis
    $(this).addClass('selectedrange');
598 99721d83 Mike Muzurakis
});
599 99721d83 Mike Muzurakis

600 99721d83 Mike Muzurakis
//when textbox loses focus, clear selection in css
601 99721d83 Mike Muzurakis
$('#cpu-indicator').blur(function() {
602 99721d83 Mike Muzurakis
    $(this).removeClass('selectedrange');
603 99721d83 Mike Muzurakis
});
604 f533f224 Vangelis Koukis

605 99721d83 Mike Muzurakis
$('#ram-indicator').blur(function() {
606 99721d83 Mike Muzurakis
    $(this).removeClass('selectedrange');
607 99721d83 Mike Muzurakis
});
608 f533f224 Vangelis Koukis

609 99721d83 Mike Muzurakis
$('#storage-indicator').blur(function() {
610 99721d83 Mike Muzurakis
    $(this).removeClass('selectedrange');
611 99721d83 Mike Muzurakis
});
612 99721d83 Mike Muzurakis

613 bd8b1d60 Christodoulos Psaltis
// exit the wizard
614 0c2ad1b7 Christodoulos Psaltis
$("#cancel").click(function() {
615 f533f224 Vangelis Koukis
    $("#machines-pane a#create").overlay().close();
616 cc7c5902 Dimitris Moraitis
});
617 cc7c5902 Dimitris Moraitis

618 bd8b1d60 Christodoulos Psaltis
// starting a new VM through the wizard
619 0c2ad1b7 Christodoulos Psaltis
$("#start").click(function() {
620 f533f224 Vangelis Koukis
    var imageRef = $('input[type=radio][name=image-id]:checked')[0].id.replace('img-radio-','');
621 b335768e Markos Gogoulos
    var flavorRef = identify_flavor($("#cpu-indicator")[0].value, $("#storage-indicator")[0].value, $("#ram-indicator")[0].value);
622 20fae095 Christodoulos Psaltis
    var machineName = $('input[name=machine_name]')[0].value;
623 5d3c8f3f Mike Muzurakis
    if (jQuery.trim(machineName) == ''){
624 5d3c8f3f Mike Muzurakis
        return false;
625 5d3c8f3f Mike Muzurakis
    }
626 71642965 Dimitris Moraitis

627 0c2ad1b7 Christodoulos Psaltis
    // replace text 'create new' with progress indicator
628 0c2ad1b7 Christodoulos Psaltis
    $(this).text('');
629 0c2ad1b7 Christodoulos Psaltis
    $(this).html('<img src="static/icons/indicators/medium/horizontal-progress.gif" / >');
630 0c2ad1b7 Christodoulos Psaltis
    // disable submit button to prevent multiple calls
631 0c2ad1b7 Christodoulos Psaltis
    $(this).attr("disabled", true);
632 f533f224 Vangelis Koukis

633 f533f224 Vangelis Koukis
    create_vm(machineName, imageRef, flavorRef);
634 2f86374f Dimitris Moraitis

635 0c2ad1b7 Christodoulos Psaltis
    try {
636 0c2ad1b7 Christodoulos Psaltis
        console.warn('creating ' + $("input[name=machine_name]")[0].value);
637 0c2ad1b7 Christodoulos Psaltis
    } catch(err){}
638 285a1fa8 Dimitris Moraitis

639 cc7c5902 Dimitris Moraitis
});
640 cc7c5902 Dimitris Moraitis

641 71eade6b Christodoulos Psaltis
// metadata wizard
642 71eade6b Christodoulos Psaltis
$(function() {
643 71eade6b Christodoulos Psaltis
    // create wizard overlay
644 71eade6b Christodoulos Psaltis
    $("a#metadata-scrollable").overlay({
645 716c3ead Dimitris Moraitis
        mask: '#666',
646 c902e956 Christodoulos Psaltis
        effect: 'default',
647 c902e956 Christodoulos Psaltis
        top: '10%',
648 c902e956 Christodoulos Psaltis
        closeOnClick: false,
649 c902e956 Christodoulos Psaltis
        oneInstance: false,
650 3f99cc60 Mike Muzurakis
        closeOnEsc: false,
651 08cc1924 Christodoulos Psaltis
        load: false,
652 0c2ad1b7 Christodoulos Psaltis
        onClose: function() {
653 71eade6b Christodoulos Psaltis
            // reset input areas
654 f533f224 Vangelis Koukis
            serverID = $("#metadata-wizard p:first").text();
655 f533f224 Vangelis Koukis
            $("#metadata-wizard div.metadata-container").empty();
656 f533f224 Vangelis Koukis
            get_metadata(serverID, true);
657 08cc1924 Christodoulos Psaltis
        }
658 c902e956 Christodoulos Psaltis
    });
659 71eade6b Christodoulos Psaltis
});
660 71eade6b Christodoulos Psaltis

661 f533f224 Vangelis Koukis
// bring up metadata overlay
662 71eade6b Christodoulos Psaltis
function show_metadata_wizard() {
663 5186eb04 Christodoulos Psaltis
    // get metadata for current server and fill the dialog
664 f533f224 Vangelis Koukis
    serverID = $("#metadata-wizard p:first").text();
665 5186eb04 Christodoulos Psaltis
    get_metadata(serverID);
666 71eade6b Christodoulos Psaltis
    $("#metadata-wizard").show();
667 71eade6b Christodoulos Psaltis
    $("a#metadata-scrollable").data('overlay').load();
668 f533f224 Vangelis Koukis
    $('#metadata-wizard .large-spinner').show();
669 f533f224 Vangelis Koukis
    return false;
670 191ee58e Christodoulos Psaltis
}
671 191ee58e Christodoulos Psaltis

672 71eade6b Christodoulos Psaltis
// update metadata list
673 f533f224 Vangelis Koukis
function list_metadata(data) {
674 71eade6b Christodoulos Psaltis
    // empty the list if it already exists
675 f533f224 Vangelis Koukis
    $("#metadata-wizard div.metadata-container").empty();
676 71eade6b Christodoulos Psaltis
    // get the values to show
677 71eade6b Christodoulos Psaltis
    meta = data.metadata.values;
678 f533f224 Vangelis Koukis
    // set serve icon
679 f533f224 Vangelis Koukis
    var icon_name = os_icon(data.metadata);
680 f533f224 Vangelis Koukis
    $("#metadata-wizard .machine-icon").attr("src","static/icons/machines/small/" + icon_name + '-' + $("#metadata-wizard div#on-off").text() + '.png');
681 71eade6b Christodoulos Psaltis
    // show values
682 71eade6b Christodoulos Psaltis
    for (key in meta) {
683 f533f224 Vangelis Koukis
        pair = $("#metadata-wizard div.metadata-pair-template:last").clone();
684 71eade6b Christodoulos Psaltis
        //truncate metadata
685 f533f224 Vangelis Koukis
        pair.find("div.metadata-key").text(key.substring(0,15));
686 71eade6b Christodoulos Psaltis
        if (meta[key].length > 25) {
687 f533f224 Vangelis Koukis
            pair.find("div.metadata-value").text(meta[key].substring(0,25) + "...");
688 71eade6b Christodoulos Psaltis
        } else {
689 f533f224 Vangelis Koukis
            pair.find("div.metadata-value").text(meta[key]);
690 08cc1924 Christodoulos Psaltis
        }
691 f533f224 Vangelis Koukis
        //get the serverID
692 f533f224 Vangelis Koukis
        serverID = $("#metadata-wizard p:first").text();
693 f533f224 Vangelis Koukis
        //store the full metadata value on a hidden div
694 f533f224 Vangelis Koukis
        pair.find("div.metadata-full-value").text(meta[key]);
695 f533f224 Vangelis Koukis
        // show/hide edit-remove buttons on hover
696 f533f224 Vangelis Koukis
        pair.hover(function () {$(this).find('.metadata-edit').show();}, function () {$(this).find('.metadata-edit').hide();});
697 f533f224 Vangelis Koukis
        // add it to the list
698 f533f224 Vangelis Koukis
        pair.appendTo("#metadata-wizard div.metadata-container").fadeIn();
699 71eade6b Christodoulos Psaltis
    }
700 c902e956 Christodoulos Psaltis
}
701 c902e956 Christodoulos Psaltis

702 f533f224 Vangelis Koukis
// exit the metadata wizard
703 f533f224 Vangelis Koukis
$("#metadata-cancel").click(function(){
704 f533f224 Vangelis Koukis
    $("a#metadata-scrollable").overlay().close();
705 f533f224 Vangelis Koukis
});
706 f533f224 Vangelis Koukis

707 f533f224 Vangelis Koukis
//intercept create new metadata click
708 f533f224 Vangelis Koukis
$("#metadata-wizard #metadata-create").click(function(){
709 f533f224 Vangelis Koukis
    pair = $("#metadata-wizard div.metadata-add-template:first").clone();
710 f533f224 Vangelis Koukis
    pair.prependTo("#metadata-wizard div.metadata-container").fadeIn();
711 f533f224 Vangelis Koukis
      with (pair.find('input#add-meta-key')) {
712 17ee954a Mike Muzurakis
        with (pair.find('ul:first')) {
713 f533f224 Vangelis Koukis
          find('li').click(function() {
714 17ee954a Mike Muzurakis
            $(this).parent().parent().find('.textdropdown-outer').find('input:first').attr('value', $(this).find('.dropdownitem').html());
715 f533f224 Vangelis Koukis
            $(this).parent().hide();
716 f533f224 Vangelis Koukis
          });
717 f533f224 Vangelis Koukis
          hide();
718 f533f224 Vangelis Koukis
        }
719 cd154238 Christodoulos Psaltis

720 f533f224 Vangelis Koukis
        keypress(function() {
721 f533f224 Vangelis Koukis
          $(this).parent().next('ul:first').hide();
722 f533f224 Vangelis Koukis
        });
723 f533f224 Vangelis Koukis

724 f533f224 Vangelis Koukis
        change(function() {
725 f533f224 Vangelis Koukis
          $(this).parent().next('ul:first').hide();
726 f533f224 Vangelis Koukis
        });
727 f533f224 Vangelis Koukis

728 f533f224 Vangelis Koukis
        wrap('<div class="textdropdown-outer" style="width: ' + width() + 'px; height: ' + (height() + 5) + 'px"></div>');
729 f533f224 Vangelis Koukis
        var btn = parent().prepend('<div class="textdropdown-btn">&nbsp;</div>').find('.textdropdown-btn');
730 f533f224 Vangelis Koukis
        width(width() - btn.width() - 5);
731 f533f224 Vangelis Koukis
        css("border", "0");
732 f533f224 Vangelis Koukis

733 f533f224 Vangelis Koukis
        btn.click(function() {
734 17ee954a Mike Muzurakis
          var p = $(this).parent();
735 f533f224 Vangelis Koukis
          with (p.next('ul:first')) {
736 17ee954a Mike Muzurakis
            $(this).parent().parent().find('ul:first').css('position', 'absolute');
737 17ee954a Mike Muzurakis
            $(this).parent().parent().find('ul:first').css('width',    p.width());
738 17ee954a Mike Muzurakis
            $(this).parent().parent().find('ul:first').css('left',     p.position().left + 4);
739 17ee954a Mike Muzurakis
            $(this).parent().parent().find('ul:first').css('top',      p.position().top + p.height() + 1);
740 17ee954a Mike Muzurakis
            var elem = $(this).parent().parent().find('ul:first')[0];
741 17ee954a Mike Muzurakis
            if(elem.style.display == 'none') {
742 17ee954a Mike Muzurakis
                 $(this).parent().parent().find('ul:first').show();
743 17ee954a Mike Muzurakis
            } else {
744 17ee954a Mike Muzurakis
                 $(this).parent().parent().find('ul:first').hide();
745 17ee954a Mike Muzurakis
            }
746 17ee954a Mike Muzurakis

747 f533f224 Vangelis Koukis
          }
748 f533f224 Vangelis Koukis
        });
749 f533f224 Vangelis Koukis
      }
750 f533f224 Vangelis Koukis
    pair.find('input#add-meta-key').focus();
751 3f99cc60 Mike Muzurakis
    //submit keyword by pressing enter on the textbox
752 3f99cc60 Mike Muzurakis
    $(this).parent().parent().find('input#add-meta-value').keypress(function (e) {
753 3f99cc60 Mike Muzurakis
        if ((e.which && e.which == 13) || (e.keyCode && e.keyCode == 13)) {
754 3f99cc60 Mike Muzurakis
            $(this).parent().parent().find('.addbuttons .save').click();
755 3f99cc60 Mike Muzurakis
            return false;
756 3f99cc60 Mike Muzurakis
        } else {
757 3f99cc60 Mike Muzurakis
            return true;
758 3f99cc60 Mike Muzurakis
        }
759 3f99cc60 Mike Muzurakis
    });
760 f533f224 Vangelis Koukis
});
761 f533f224 Vangelis Koukis

762 f533f224 Vangelis Koukis
//save new metadata
763 f533f224 Vangelis Koukis
$('#metadata-wizard .addbuttons .save').die('click');
764 f533f224 Vangelis Koukis
$('#metadata-wizard .addbuttons .save').live('click', function(){
765 f533f224 Vangelis Koukis
    keyValue = $(this).parent().parent().find('input#add-meta-key').val();
766 f533f224 Vangelis Koukis
    valValue = $(this).parent().parent().find('input#add-meta-value').val();
767 f533f224 Vangelis Koukis
    if ((keyValue == '{% trans 'max 15 characters' %}') || (valValue == '{% trans 'max 150 characters' %}')) {
768 245c788e Mike Muzurakis
        return false;
769 f533f224 Vangelis Koukis
    } else {
770 f533f224 Vangelis Koukis
        serverID = $("#metadata-wizard p:first").text();
771 f533f224 Vangelis Koukis
        pair = $("#metadata-wizard div.metadata-pair-template:last").clone();
772 f533f224 Vangelis Koukis
        pair.find("div.metadata-key").text(keyValue.substring(0,15));
773 f533f224 Vangelis Koukis
        if (valValue.length > 25) {
774 f533f224 Vangelis Koukis
            pair.find("div.metadata-value").text(valValue.substring(0,25) + "...");
775 f533f224 Vangelis Koukis
        } else {
776 f533f224 Vangelis Koukis
            pair.find("div.metadata-value").text(valValue);
777 f533f224 Vangelis Koukis
        }
778 f533f224 Vangelis Koukis
        pair.find("div.metadata-full-value").text(valValue);
779 f533f224 Vangelis Koukis
        update_metadata(serverID, keyValue, valValue);
780 f533f224 Vangelis Koukis
        $(this).parent().parent().remove();
781 f533f224 Vangelis Koukis
        pair.hover(function () {$(this).find('.metadata-edit').show();}, function () {$(this).find('.metadata-edit').hide();});
782 f533f224 Vangelis Koukis
        // add it to the list
783 f533f224 Vangelis Koukis
        if ($("#metadata-wizard div.metadata-container").find("div.metadata-pair-template").length > 0) {
784 f533f224 Vangelis Koukis
            pair.insertBefore("#metadata-wizard div.metadata-container div.metadata-pair-template:first").fadeIn();
785 f533f224 Vangelis Koukis
        } else {
786 f533f224 Vangelis Koukis
            pair.prependTo("#metadata-wizard div.metadata-container").fadeIn();
787 f533f224 Vangelis Koukis
        }
788 245c788e Mike Muzurakis
    }
789 cd154238 Christodoulos Psaltis
});
790 cd154238 Christodoulos Psaltis

791 f533f224 Vangelis Koukis
//intercept cancel new metadata creation
792 f533f224 Vangelis Koukis
$("#metadata-wizard .addbuttons .cancel").die('click');
793 f533f224 Vangelis Koukis
$("#metadata-wizard .addbuttons .cancel").live('click',function(){
794 3f99cc60 Mike Muzurakis
    $(this).parent().parent().fadeOut('fast', function() { $(this).remove(); });
795 c902e956 Christodoulos Psaltis
});
796 c902e956 Christodoulos Psaltis

797 f533f224 Vangelis Koukis
//metadata remove button
798 f533f224 Vangelis Koukis
$("#metadata-wizard .metadata-edit .remove").die('click')
799 f533f224 Vangelis Koukis
$("#metadata-wizard .metadata-edit .remove").live('click', function() {
800 f533f224 Vangelis Koukis
    $(this).parent().parent().fadeOut('slow');
801 f533f224 Vangelis Koukis
    serverID = $("#metadata-wizard p:first").text();
802 f533f224 Vangelis Koukis
    keyValue = $(this).parent().parent().find('div.metadata-key').text();
803 f533f224 Vangelis Koukis
    //update icons if deleting the OS metadata
804 f533f224 Vangelis Koukis
    if (keyValue == "OS") {
805 f533f224 Vangelis Koukis
        $("#metadata-wizard .machine-icon").attr("src","static/icons/machines/small/unknown-" + $("#metadata-wizard div#on-off").text() + '.png');
806 f533f224 Vangelis Koukis
        $("#machinesview-icon").find("div#" + serverID).find("img.logo").attr("src", "static/icons/machines/medium/unknown-" + $("#metadata-wizard div#on-off").text() + '.png');
807 f533f224 Vangelis Koukis
    }
808 f533f224 Vangelis Koukis
    delete_metadata(serverID, keyValue);
809 f533f224 Vangelis Koukis
});
810 f533f224 Vangelis Koukis

811 f533f224 Vangelis Koukis
//metadata edit button
812 f533f224 Vangelis Koukis
$("#metadata-wizard .metadata-edit .edit").die('click');
813 f533f224 Vangelis Koukis
$("#metadata-wizard .metadata-edit .edit").live('click', function() {
814 f533f224 Vangelis Koukis
    $(this).parent().parent().find('div.metadata-value').html("<input id=\"value-edit\" maxlength=\"150\" type=\"text\" class=\"metatextbox\" value=\"" + $(this).parent().parent().find('.metadata-full-value').text() +
815 f533f224 Vangelis Koukis
                                    "\" / ><span class=\"oldValue\">" +
816 f533f224 Vangelis Koukis
                                    $(this).parent().parent().find('.metadata-full-value').text() + "</span>");
817 3f99cc60 Mike Muzurakis
    //submit keyword by pressing enter on the textbox
818 3f99cc60 Mike Muzurakis
    $(this).parent().parent().find('input.metatextbox').keypress(function (e) {
819 3f99cc60 Mike Muzurakis
        if ((e.which && e.which == 13) || (e.keyCode && e.keyCode == 13)) {
820 3f99cc60 Mike Muzurakis
            $(this).parent().parent().find('.editbuttons .save').click();
821 3f99cc60 Mike Muzurakis
            return false;
822 3f99cc60 Mike Muzurakis
        } else {
823 3f99cc60 Mike Muzurakis
            return true;
824 3f99cc60 Mike Muzurakis
        }
825 3f99cc60 Mike Muzurakis
    });
826 3f99cc60 Mike Muzurakis
    $(this).parent().parent().find('input.metatextbox').select()
827 f533f224 Vangelis Koukis
    $(this).parent().hide();
828 f533f224 Vangelis Koukis
    $(this).parent().parent().unbind('mouseenter').unbind('mouseleave');
829 f533f224 Vangelis Koukis
    $(this).parent().parent().find('.editbuttons').show();
830 f533f224 Vangelis Koukis
});
831 f533f224 Vangelis Koukis

832 3f99cc60 Mike Muzurakis
//capture Esc key
833 3f99cc60 Mike Muzurakis
bar = {};
834 4ea5cc44 Mike Muzurakis
bar.keydown = function(e) {
835 3f99cc60 Mike Muzurakis
    if (e.keyCode == 27) {
836 3f99cc60 Mike Muzurakis
        //if we are inside an add or edit textbox, cancel editing
837 3f99cc60 Mike Muzurakis
        if ($('input.metatextbox:focus').length > 0) {
838 3f99cc60 Mike Muzurakis
            $('input.metatextbox:focus').parent().parent().find('.editbuttons .remove').click();
839 3f99cc60 Mike Muzurakis
        } else if ($('input#add-meta-key:focus').length > 0)  {
840 3f99cc60 Mike Muzurakis
            $('input#add-meta-key:focus').parent().parent().find('.addbuttons .cancel').click();
841 3f99cc60 Mike Muzurakis
        } else if ($('input#add-meta-value:focus').length > 0) {
842 3f99cc60 Mike Muzurakis
            $('input#add-meta-value:focus').parent().parent().find('.addbuttons .cancel').click();
843 3f99cc60 Mike Muzurakis
        } else {
844 3f99cc60 Mike Muzurakis
            //else close the metadata wizard
845 3f99cc60 Mike Muzurakis
            $("a#metadata-scrollable").overlay().close();
846 3f99cc60 Mike Muzurakis
        }
847 3f99cc60 Mike Muzurakis
        e.preventDefault();
848 3f99cc60 Mike Muzurakis
        e.stopPropagation();
849 3f99cc60 Mike Muzurakis
    }
850 3f99cc60 Mike Muzurakis
};
851 4ea5cc44 Mike Muzurakis
document.keydown = bar.keydown;
852 3f99cc60 Mike Muzurakis

853 f533f224 Vangelis Koukis
//metadata cancel edit button
854 f533f224 Vangelis Koukis
$("#metadata-wizard .editbuttons .remove").die('click');
855 f533f224 Vangelis Koukis
$("#metadata-wizard .editbuttons .remove").live('click', function() {
856 f533f224 Vangelis Koukis
    var oldValue = $(this).parent().parent().find('.oldValue').text();
857 f533f224 Vangelis Koukis
    if (oldValue.length > 25) {
858 f533f224 Vangelis Koukis
        oldValue = oldValue.substring(0,25) + "...";
859 f533f224 Vangelis Koukis
    }
860 f533f224 Vangelis Koukis
    $(this).parent().parent().find('div.metadata-value').html(oldValue);
861 f533f224 Vangelis Koukis
    $(this).parent().parent().hover(function () {$(this).find('.metadata-edit').show();}, function () {$(this).find('.metadata-edit').hide();});
862 f533f224 Vangelis Koukis
    $(this).parent().hide();
863 f533f224 Vangelis Koukis
});
864 f533f224 Vangelis Koukis

865 3f99cc60 Mike Muzurakis

866 f533f224 Vangelis Koukis
//metadata save edit button
867 f533f224 Vangelis Koukis
$("#metadata-wizard .editbuttons .save").die('click');
868 f533f224 Vangelis Koukis
$("#metadata-wizard .editbuttons .save").live('click', function() {
869 f533f224 Vangelis Koukis
    newValue = $(this).parent().parent().find('input.metatextbox').val();
870 f533f224 Vangelis Koukis
    keyValue = $(this).parent().parent().find('div.metadata-key').text();
871 f533f224 Vangelis Koukis
    oldValue = $(this).parent().parent().find('.oldValue').text();
872 f533f224 Vangelis Koukis
    if (!(newValue == oldValue)) {
873 f533f224 Vangelis Koukis
        update_metadata(serverID, keyValue, newValue);
874 f533f224 Vangelis Koukis
    }
875 f533f224 Vangelis Koukis
    if (newValue.length > 25) {
876 f533f224 Vangelis Koukis
        newValueSort = newValue.substring(0,25) + "...";
877 f533f224 Vangelis Koukis
    } else {
878 f533f224 Vangelis Koukis
        newValueSort = newValue
879 f533f224 Vangelis Koukis
    }
880 f533f224 Vangelis Koukis
    $(this).parent().parent().find('div.metadata-value').html(newValueSort);
881 f533f224 Vangelis Koukis
    $(this).parent().parent().find('div.metadata-full-value').html(newValue);
882 f533f224 Vangelis Koukis
    $(this).parent().parent().hover(function () {$(this).find('.metadata-edit').show();}, function () {$(this).find('.metadata-edit').hide();});
883 f533f224 Vangelis Koukis
    $(this).parent().hide();
884 3a68225a Christodoulos Psaltis

885 3a68225a Christodoulos Psaltis
});
886 3a68225a Christodoulos Psaltis

887 f1805aa3 Christodoulos Psaltis
// intercept create metadata key focus
888 f533f224 Vangelis Koukis
$("#metadata-wizard input#add-meta-key").live('focusin', function() {
889 f533f224 Vangelis Koukis
    if ($(this).parent().hasClass("div-enabled")) {
890 f1805aa3 Christodoulos Psaltis
    } else {
891 f533f224 Vangelis Koukis
        $(this).parent().addClass("div-enabled");
892 f533f224 Vangelis Koukis
        $(this).addClass("input-enabled");
893 f533f224 Vangelis Koukis
        if (this.value == '{% trans 'max 15 characters' %}') {
894 f533f224 Vangelis Koukis
            this.value = '';
895 f533f224 Vangelis Koukis
        }
896 f1805aa3 Christodoulos Psaltis
    }
897 f1805aa3 Christodoulos Psaltis
    return false;
898 f1805aa3 Christodoulos Psaltis
});
899 f1805aa3 Christodoulos Psaltis

900 f1805aa3 Christodoulos Psaltis
// intercept create metadata key focus out
901 f533f224 Vangelis Koukis
$("#metadata-wizard input#add-meta-key").live('focusout', function() {
902 f533f224 Vangelis Koukis
    $(this).parent().removeClass("div-enabled");
903 f1805aa3 Christodoulos Psaltis
    if (this.value == "") {
904 f533f224 Vangelis Koukis
        $(this).removeClass("input-enabled");
905 f533f224 Vangelis Koukis
        this.value = '{% trans 'max 15 characters' %}';
906 f1805aa3 Christodoulos Psaltis
    }
907 f1805aa3 Christodoulos Psaltis
    return false;
908 f1805aa3 Christodoulos Psaltis
});
909 f1805aa3 Christodoulos Psaltis

910 f533f224 Vangelis Koukis

911 f533f224 Vangelis Koukis
// intercept metadata dropdown item click
912 f533f224 Vangelis Koukis
$(".metadata-add-template li").live('click', function() {
913 f533f224 Vangelis Koukis
    $(this).parent().parent().parent().find("input#add-meta-value").focus();
914 f533f224 Vangelis Koukis
    $(this).parent().parent().parent().find("input#add-meta-key").addClass("input-enabled");
915 f533f224 Vangelis Koukis
});
916 f533f224 Vangelis Koukis

917 f1805aa3 Christodoulos Psaltis
// intercept create metadata key focus
918 f533f224 Vangelis Koukis
$("#metadata-wizard input#add-meta-value").live('focusin', function() {
919 f1805aa3 Christodoulos Psaltis
    if ($(this).hasClass("input-enabled")) {
920 f1805aa3 Christodoulos Psaltis
    } else {
921 f533f224 Vangelis Koukis
        $(this).addClass("input-enabled");
922 f1805aa3 Christodoulos Psaltis
        this.value = '';
923 f1805aa3 Christodoulos Psaltis
    }
924 f1805aa3 Christodoulos Psaltis
    return false;
925 f1805aa3 Christodoulos Psaltis
});
926 f1805aa3 Christodoulos Psaltis

927 f1805aa3 Christodoulos Psaltis
// intercept create metadata key focus out
928 f533f224 Vangelis Koukis
$("#metadata-wizard input#add-meta-value").live('focusout', function() {
929 f1805aa3 Christodoulos Psaltis
    if (this.value == "") {
930 f533f224 Vangelis Koukis
        $(this).removeClass("input-enabled");
931 f533f224 Vangelis Koukis
        this.value = '{% trans 'max 150 characters' %}';
932 f1805aa3 Christodoulos Psaltis
    }
933 f1805aa3 Christodoulos Psaltis
    return false;
934 f1805aa3 Christodoulos Psaltis
});
935 f1805aa3 Christodoulos Psaltis

936 191ee58e Christodoulos Psaltis
// intercept click on cancel button in metadata add dialog
937 191ee58e Christodoulos Psaltis
$('#add-dialog button.cancel').live('click', function() {
938 f533f224 Vangelis Koukis

939 191ee58e Christodoulos Psaltis
});
940 191ee58e Christodoulos Psaltis

941 c902e956 Christodoulos Psaltis
// intercept click on save button in metadata add dialog
942 71eade6b Christodoulos Psaltis
$('#add-dialog button.save').live('click', function() {
943 f533f224 Vangelis Koukis
    // if both fields are filled in
944 f1805aa3 Christodoulos Psaltis
    if ($('input.key').hasClass("input-enabled") && $('textarea.value').hasClass("input-enabled")) {
945 f533f224 Vangelis Koukis
        // get the server id, meta key and meta value needed for the ajax call
946 16e27b76 Markos Gogoulos
        var serverID = $(this).parent().find('h3 p').text();
947 16e27b76 Markos Gogoulos
        var meta_key = $(this).parent().find('input.key').attr('value');
948 7330b4c1 Dimitris Moraitis
        var meta_value = $(this).parent().find('textarea.value')[0].value;
949 16e27b76 Markos Gogoulos
        // make the ajax call and list the new GET results
950 16e27b76 Markos Gogoulos
        add_metadata(serverID, meta_key, meta_value);
951 71eade6b Christodoulos Psaltis
        // go to previous step
952 71eade6b Christodoulos Psaltis
        $('#add-dialog button.prev').click();
953 16e27b76 Markos Gogoulos
    } else {
954 f1805aa3 Christodoulos Psaltis
        // find which field is not filled in and focus there
955 f1805aa3 Christodoulos Psaltis
        if (!$('input.key').hasClass("input-enabled")) {
956 f1805aa3 Christodoulos Psaltis
            $('input.key').focus();
957 7330b4c1 Dimitris Moraitis
            $('input.key').focusin();
958 f1805aa3 Christodoulos Psaltis
        } else {
959 7330b4c1 Dimitris Moraitis
            $('textarea.value').focus();
960 7330b4c1 Dimitris Moraitis
            $('textarea.value').focusin();
961 f1805aa3 Christodoulos Psaltis
        }
962 16e27b76 Markos Gogoulos
    }
963 0c578a28 Markos Gogoulos
    return false;
964 c902e956 Christodoulos Psaltis
});
965 c902e956 Christodoulos Psaltis

966 71eade6b Christodoulos Psaltis
// confirm all actions
967 f533f224 Vangelis Koukis
$("#machines-pane div.confirm_multiple .yes").live('click', function(){
968 71eade6b Christodoulos Psaltis
    while(pending_actions.length > 0){ // if there is a pending action for this server execute it
969 71eade6b Christodoulos Psaltis
        action = pending_actions.pop(); // extract action
970 71eade6b Christodoulos Psaltis
        var serverID = action[1];
971 f533f224 Vangelis Koukis
        if ($.cookie("view") != '1') { // standard view
972 71eade6b Christodoulos Psaltis
            $('#' + serverID + ' .selected').removeClass('selected');
973 71eade6b Christodoulos Psaltis
            $('#' + serverID + ' .display').removeClass('display');
974 71eade6b Christodoulos Psaltis
            if (action[0] == shutdown) {
975 f533f224 Vangelis Koukis
                $('#' + serverID + ' .status').text(TRANSITIONS['Shutting down']);
976 ed7b588e Christodoulos Psaltis
                $('#' + serverID + ' .state').removeClass().addClass('state shutting-state');
977 71eade6b Christodoulos Psaltis
            } else if (action[0] == start) {
978 f533f224 Vangelis Koukis
                $('#' + serverID + ' .status').text(TRANSITIONS['Starting']);
979 ed7b588e Christodoulos Psaltis
                $('#' + serverID + ' .state').removeClass().addClass('state starting-state');
980 71eade6b Christodoulos Psaltis
            } else if (action[0] == reboot) {
981 f533f224 Vangelis Koukis
                $('#' + serverID + ' .status').text(TRANSITIONS['Rebooting']);
982 ed7b588e Christodoulos Psaltis
                $('#' + serverID + ' .state').removeClass().addClass('state rebooting-state');
983 71eade6b Christodoulos Psaltis
            } else if (action[0] == destroy) {
984 f533f224 Vangelis Koukis
                $('#' + serverID + ' .status').text(TRANSITIONS['Destroying']);
985 ed7b588e Christodoulos Psaltis
                $('#' + serverID + ' .state').removeClass().addClass('state destroying-state');
986 71eade6b Christodoulos Psaltis
            }
987 71eade6b Christodoulos Psaltis
            $('#' + serverID + ' .spinner').show();
988 71eade6b Christodoulos Psaltis
        } else { // list view
989 71eade6b Christodoulos Psaltis
            osIcon = $('#'+serverID).parent().parent().find('.list-logo');
990 71eade6b Christodoulos Psaltis
            osIcon.attr('os',osIcon.attr('src'));
991 f533f224 Vangelis Koukis
            osIcon.attr('src','static/icons/indicators/small/progress.gif');
992 71eade6b Christodoulos Psaltis
            if (action[0] == shutdown) {
993 f533f224 Vangelis Koukis
                $('#' + serverID).parent().parent().find('span.status').text(TRANSITIONS['Shutting down']);
994 71eade6b Christodoulos Psaltis
            } else if (action[0] == start) {
995 f533f224 Vangelis Koukis
                $('#' + serverID).parent().parent().find('span.status').text(TRANSITIONS['Starting']);
996 71eade6b Christodoulos Psaltis
            } else if (action[0] == reboot) {
997 f533f224 Vangelis Koukis
                $('#' + serverID).parent().parent().find('span.status').text(TRANSITIONS['Rebooting']);
998 71eade6b Christodoulos Psaltis
            } else if (action[0] == destroy) {
999 f533f224 Vangelis Koukis
                $('#' + serverID).parent().parent().find('span.status').text(TRANSITIONS['Destroying']);
1000 71eade6b Christodoulos Psaltis
            }
1001 f9015c00 Mike Muzurakis
        }
1002 71eade6b Christodoulos Psaltis
        action[0]([serverID]); // execute action
1003 5186eb04 Christodoulos Psaltis
    }
1004 7ef7af3f Mike Muzurakis
    $('#machinesview-list .actions .selected').removeClass('selected');
1005 f533f224 Vangelis Koukis
    update_confirmations();
1006 f3b14a28 Christodoulos Psaltis
    return false;
1007 71eade6b Christodoulos Psaltis
});
1008 71eade6b Christodoulos Psaltis

1009 71eade6b Christodoulos Psaltis
// cancel all actions
1010 bb48e576 Christodoulos Psaltis
$("#machines-pane div.confirm_multiple button.no").live('click', function(){
1011 71eade6b Christodoulos Psaltis
    pending_actions = [];
1012 f533f224 Vangelis Koukis
    $('#machines-pane .machine .selected').removeClass('selected');
1013 f533f224 Vangelis Koukis
    $('#machinesview-list .actions .selected').removeClass('selected');
1014 f533f224 Vangelis Koukis
    $('#machines-pane .machine .display').removeClass('display');
1015 bb48e576 Christodoulos Psaltis

1016 71eade6b Christodoulos Psaltis
    update_confirmations();
1017 f3b14a28 Christodoulos Psaltis
    return false;
1018 71eade6b Christodoulos Psaltis
});
1019 5186eb04 Christodoulos Psaltis

1020 bd528b3b Christodoulos Psaltis
// basic functions executed on page load
1021 d134b632 Dimitris Moraitis
if (images.length > 0) {
1022 d134b632 Dimitris Moraitis
    // populate image list
1023 d134b632 Dimitris Moraitis
    update_wizard_images();
1024 d134b632 Dimitris Moraitis
}
1025 d134b632 Dimitris Moraitis
if (flavors.length > 0) {
1026 d134b632 Dimitris Moraitis
    // configure flavors
1027 f533f224 Vangelis Koukis
    update_wizard_flavors();
1028 d134b632 Dimitris Moraitis
}
1029 bd528b3b Christodoulos Psaltis
// create tabs for main menu
1030 bd528b3b Christodoulos Psaltis
$("ul.tabs").tabs("div.panes ul");
1031 bd528b3b Christodoulos Psaltis

1032 d2f03cb3 Mike Muzurakis
//fix ie z-index bug by moving the overlays to the bottom
1033 d2f03cb3 Mike Muzurakis
$(document).ready(function() {
1034 d2f03cb3 Mike Muzurakis
    if ($.browser.msie) {
1035 d2f03cb3 Mike Muzurakis
        $("body").append($("#wizard"));
1036 d2f03cb3 Mike Muzurakis
        $("body").append($("#metadata-wizard"));
1037 d2f03cb3 Mike Muzurakis
    }
1038 d2f03cb3 Mike Muzurakis
});
1039 d2f03cb3 Mike Muzurakis

1040 17ee954a Mike Muzurakis
//IE specific fixes
1041 17ee954a Mike Muzurakis
if ($.browser.msie) {
1042 17ee954a Mike Muzurakis
    //IE fix for dropdown li hover
1043 17ee954a Mike Muzurakis
    $("#metadata-wizard ul li").live("mouseenter", function () {
1044 17ee954a Mike Muzurakis
        $(this).css("background-color","#efefef");
1045 17ee954a Mike Muzurakis
        $(this).css("cursor","pointer");
1046 17ee954a Mike Muzurakis
    });
1047 17ee954a Mike Muzurakis
    $("#metadata-wizard ul li").live("mouseleave", function () {
1048 17ee954a Mike Muzurakis
        $(this).css("background-color","transparent");
1049 17ee954a Mike Muzurakis
        $(this).css("cursor","default");
1050 17ee954a Mike Muzurakis
    });
1051 7f5b5a97 Mike Muzurakis
    //IE fix for metadata wizard hover
1052 7f5b5a97 Mike Muzurakis
    $("#metadata-wizard div.metadata-pair-template").live("mouseenter", function () {
1053 7f5b5a97 Mike Muzurakis
        $(this).css("background-color","#74aec9");
1054 7f5b5a97 Mike Muzurakis
    });
1055 7f5b5a97 Mike Muzurakis
    $("#metadata-wizard ul li").live("mouseleave", function () {
1056 7f5b5a97 Mike Muzurakis
        $(this).css("background-color","transparent");
1057 7f5b5a97 Mike Muzurakis
    });
1058 17ee954a Mike Muzurakis
}
1059 17ee954a Mike Muzurakis
1060 8400e1a5 Markos Gogoulos
</script>