Statistics
| Branch: | Tag: | Revision:

root / ui / templates / machines.html @ f4a0f054

History | View | Annotate | Download (42.6 kB)

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

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

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

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

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

30 a5bc3755 Vangelis Koukis
The views and conclusions contained in the software and
31 a5bc3755 Vangelis Koukis
documentation are those of the authors and should not be
32 a5bc3755 Vangelis Koukis
interpreted as representing official policies, either expressed
33 a5bc3755 Vangelis Koukis
or implied, of GRNET S.A.
34 a5bc3755 Vangelis Koukis
-->
35 a5bc3755 Vangelis Koukis
36 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 ab95fd93 Vangelis Koukis
    <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 ab95fd93 Vangelis Koukis
    <span class="welcomefooter">{% trans "For more information or help, click " %}<a href="/about">{% 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 f4a0f054 Kostas Papadimitriou
                <div class="metadata-labels">
246 f4a0f054 Kostas Papadimitriou
                    <div class="metadata-label">{% trans "Tag" %}</div>
247 f4a0f054 Kostas Papadimitriou
                    <div class="metadata-label last">{% trans "Value" %}</div>
248 f4a0f054 Kostas Papadimitriou
                </div>
249 f533f224 Vangelis Koukis
                <div class="metadata-container">
250 f533f224 Vangelis Koukis
                    <!-- append metadata entries here -->
251 f533f224 Vangelis Koukis
                </div>
252 f533f224 Vangelis Koukis
                <div class="metadata-add-template" style="display:none;">
253 f533f224 Vangelis Koukis
                    <input type="text" id="add-meta-key" maxlength="15"></input>
254 17ee954a Mike Muzurakis
                    <ul style="display:none;" class="dropdown-container">
255 f533f224 Vangelis Koukis
                        {% for o in default_keywords %}
256 f533f224 Vangelis Koukis
                            <li><span class="dropdownitem">{{o}}</span></li>
257 f533f224 Vangelis Koukis
                        {% endfor %}
258 f533f224 Vangelis Koukis
                    </ul>
259 f533f224 Vangelis Koukis
                    <input type="text" id="add-meta-value" maxlength="150" value="{% trans 'max 150 characters' %}"></input>
260 f533f224 Vangelis Koukis
                    <div class="addbuttons">
261 9e60a338 Mike Muzurakis
                        <div class="save"></div>
262 9e60a338 Mike Muzurakis
                        <div class="cancel"></div>
263 71eade6b Christodoulos Psaltis
                    </div>
264 71eade6b Christodoulos Psaltis
                </div>
265 f533f224 Vangelis Koukis
                <div class="metadata-pair-template" style="display:none;">
266 f533f224 Vangelis Koukis
                    <div class="metadata-key">{% trans "OS" %}</div>
267 f533f224 Vangelis Koukis
                    <div class="vertical-separator"></div>
268 f533f224 Vangelis Koukis
                    <div class="metadata-value">{% trans "Debian" %}</div>
269 f533f224 Vangelis Koukis
                    <div class="metadata-full-value" style="display:none;"></div>
270 f533f224 Vangelis Koukis
                    <div class="metadata-edit">
271 9e60a338 Mike Muzurakis
                        <div class="edit"></div>
272 9e60a338 Mike Muzurakis
                        <div class="remove"></div>
273 f533f224 Vangelis Koukis
                    </div>
274 f533f224 Vangelis Koukis
                    <div class="editbuttons" style="display:none;">
275 9e60a338 Mike Muzurakis
                        <div class="save"></div>
276 9e60a338 Mike Muzurakis
                        <div class="remove"></div>
277 71eade6b Christodoulos Psaltis
                    </div>
278 71eade6b Christodoulos Psaltis
                </div>
279 71eade6b Christodoulos Psaltis
            </div>
280 a7ccb6f9 Christodoulos Psaltis
        </div>
281 f533f224 Vangelis Koukis
        <div class="buttons">
282 f533f224 Vangelis Koukis
            <button type="button" class="save" id="metadata-cancel">{% trans "Close" %}</button>
283 f533f224 Vangelis Koukis
            <button type="button" class="create" id="metadata-create">{% trans "Create New" %}</button>
284 f533f224 Vangelis Koukis
        </div>
285 339712cb Christodoulos Psaltis
    </div>
286 339712cb Christodoulos Psaltis
</div>
287 339712cb Christodoulos Psaltis
288 71eade6b Christodoulos Psaltis
<a id="metadata-scrollable" href="#" rel="#metadata-wizard"></a>
289 d165dbb4 Christodoulos Psaltis
290 42f67a2a Dimitris Moraitis
<div id="machinesview"></div>
291 42f67a2a Dimitris Moraitis
292 267403ca Dimitris Moraitis
<div class="confirm_multiple">
293 3d286f84 Dimitris Moraitis
    <p>{% trans "Your actions will affect" %} <span class="actionLen">XX</span> {% trans "machines" %}</p>
294 2cd96cc7 Vangelis Koukis
    <button class="yes">{% trans "Confirm All" %}</button>
295 f533f224 Vangelis Koukis
    <button class="no">{% trans "Cancel All" %}</button>
296 d725fb12 Christodoulos Psaltis
</div>
297 31343277 Christodoulos Psaltis
298 cc7c5902 Dimitris Moraitis
<script>
299 f1d5a1b8 Mike Muzurakis

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

308 dc3e66b9 Mike Muzurakis

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

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

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

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

345 f533f224 Vangelis Koukis
// switch to single view
346 f533f224 Vangelis Koukis
$("#machines-pane a#single").click(function(){
347 f533f224 Vangelis Koukis
    single_view();
348 f533f224 Vangelis Koukis
    return false;
349 f533f224 Vangelis Koukis
});
350 f533f224 Vangelis Koukis

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

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

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

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

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

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

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

470 f533f224 Vangelis Koukis
$("#custom-body").live('click' ,function() {
471 afa2ebd2 Mike Muzurakis
    $(this).parent().find("#custom").click();
472 afa2ebd2 Mike Muzurakis
});
473 afa2ebd2 Mike Muzurakis

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

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

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

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

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

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

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

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

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

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

600 99721d83 Mike Muzurakis
$('#storage-indicator').focus(function() {
601 99721d83 Mike Muzurakis
    $(this).addClass('selectedrange');
602 99721d83 Mike Muzurakis
});
603 99721d83 Mike Muzurakis

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

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

613 99721d83 Mike Muzurakis
$('#storage-indicator').blur(function() {
614 99721d83 Mike Muzurakis
    $(this).removeClass('selectedrange');
615 99721d83 Mike Muzurakis
});
616 99721d83 Mike Muzurakis

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

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

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

637 f533f224 Vangelis Koukis
    create_vm(machineName, imageRef, flavorRef);
638 2f86374f Dimitris Moraitis

639 0c2ad1b7 Christodoulos Psaltis
    try {
640 0c2ad1b7 Christodoulos Psaltis
        console.warn('creating ' + $("input[name=machine_name]")[0].value);
641 0c2ad1b7 Christodoulos Psaltis
    } catch(err){}
642 285a1fa8 Dimitris Moraitis

643 cc7c5902 Dimitris Moraitis
});
644 cc7c5902 Dimitris Moraitis

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

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

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

706 f533f224 Vangelis Koukis
// exit the metadata wizard
707 f533f224 Vangelis Koukis
$("#metadata-cancel").click(function(){
708 f533f224 Vangelis Koukis
    $("a#metadata-scrollable").overlay().close();
709 f533f224 Vangelis Koukis
});
710 f533f224 Vangelis Koukis

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

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

728 f533f224 Vangelis Koukis
        change(function() {
729 f533f224 Vangelis Koukis
          $(this).parent().next('ul:first').hide();
730 f533f224 Vangelis Koukis
        });
731 f533f224 Vangelis Koukis

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

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

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

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

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

801 f533f224 Vangelis Koukis
//metadata remove button
802 f533f224 Vangelis Koukis
$("#metadata-wizard .metadata-edit .remove").die('click')
803 f533f224 Vangelis Koukis
$("#metadata-wizard .metadata-edit .remove").live('click', function() {
804 f533f224 Vangelis Koukis
    $(this).parent().parent().fadeOut('slow');
805 f533f224 Vangelis Koukis
    serverID = $("#metadata-wizard p:first").text();
806 f533f224 Vangelis Koukis
    keyValue = $(this).parent().parent().find('div.metadata-key').text();
807 f533f224 Vangelis Koukis
    //update icons if deleting the OS metadata
808 f533f224 Vangelis Koukis
    if (keyValue == "OS") {
809 f533f224 Vangelis Koukis
        $("#metadata-wizard .machine-icon").attr("src","static/icons/machines/small/unknown-" + $("#metadata-wizard div#on-off").text() + '.png');
810 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');
811 f533f224 Vangelis Koukis
    }
812 f533f224 Vangelis Koukis
    delete_metadata(serverID, keyValue);
813 f533f224 Vangelis Koukis
});
814 f533f224 Vangelis Koukis

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

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

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

869 3f99cc60 Mike Muzurakis

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

889 3a68225a Christodoulos Psaltis
});
890 3a68225a Christodoulos Psaltis

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

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

914 f533f224 Vangelis Koukis

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

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

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

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

943 191ee58e Christodoulos Psaltis
});
944 191ee58e Christodoulos Psaltis

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

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

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

1020 71eade6b Christodoulos Psaltis
    update_confirmations();
1021 f3b14a28 Christodoulos Psaltis
    return false;
1022 71eade6b Christodoulos Psaltis
});
1023 5186eb04 Christodoulos Psaltis

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

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

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