Statistics
| Branch: | Tag: | Revision:

root / ui / templates / machines.html @ 79f287b1

History | View | Annotate | Download (42.1 kB)

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

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

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

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

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

30 a5bc3755 Vangelis Koukis
The views and conclusions contained in the software and
31 a5bc3755 Vangelis Koukis
documentation are those of the authors and should not be
32 a5bc3755 Vangelis Koukis
interpreted as representing official policies, either expressed
33 a5bc3755 Vangelis Koukis
or implied, of GRNET S.A.
34 a5bc3755 Vangelis Koukis
-->
35 a5bc3755 Vangelis Koukis
36 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 e9b14cb8 Kostas Papadimitriou
                <p class="desc">{% blocktrans %}Choose your preferred image{% endblocktrans %}</p>
96 94adeabb Mike Muzurakis
                <hr class="topruler" />
97 f533f224 Vangelis Koukis
                <div id="tabscontainer">
98 f533f224 Vangelis Koukis
                    <ul class="tabs">
99 f533f224 Vangelis Koukis
                        <li><a href="#">{% trans "system images" %}</a></li>
100 f533f224 Vangelis Koukis
                        <li><a href="#">{% trans "custom images" %}</a></li>
101 f533f224 Vangelis Koukis
                    </ul>
102 f533f224 Vangelis Koukis
                </div>
103 89976b6c Christodoulos Psaltis
                <div class="panes">
104 4ea5cc44 Mike Muzurakis
                    <li id="image-template" style="display:none;">
105 f533f224 Vangelis Koukis
                        <label for="image.id">
106 9b1b6f3a Christodoulos Psaltis
                            <a>
107 94adeabb Mike Muzurakis
                                <div class="image-container">
108 94adeabb Mike Muzurakis
                                    <div class="image">
109 3091ead5 Mike Muzurakis
                                        <input class="radio" type="radio" name="image-id" id="image-id" />
110 94adeabb Mike Muzurakis
                                        <img src="" class="image-logo"/>
111 94adeabb Mike Muzurakis
                                        <strong class="image-title">image.title</strong>
112 94adeabb Mike Muzurakis
                                        <br />
113 f533f224 Vangelis Koukis
                                        <div class="description-container">
114 f533f224 Vangelis Koukis
                                            <span class="description">image.description</span>
115 f533f224 Vangelis Koukis
                                            <span id="size" class="size">?? MB</span><span class="size"> MB</span>
116 f533f224 Vangelis Koukis
                                        </div>
117 94adeabb Mike Muzurakis
                                    </div>
118 f533f224 Vangelis Koukis
                                </div>
119 9b1b6f3a Christodoulos Psaltis
                            </a>
120 f533f224 Vangelis Koukis
                        </label>
121 f533f224 Vangelis Koukis
                    </li>
122 ec06b07c Dimitris Moraitis
                    <ul class="pane" id="standard-images">
123 f533f224 Vangelis Koukis
                        <!-- standard images -->
124 f533f224 Vangelis Koukis
                    </ul>
125 ec06b07c Dimitris Moraitis
                    <ul class="pane" id="custom-images">
126 f533f224 Vangelis Koukis
                        <!-- custom images -->
127 e9b14cb8 Kostas Papadimitriou
                        <p class="desc">{% blocktrans %}No custom images available{% endblocktrans %}</p>
128 cc7c5902 Dimitris Moraitis
                    </ul>
129 cc7c5902 Dimitris Moraitis
                </div>
130 94adeabb Mike Muzurakis
                <hr class="bottomruler" />
131 f533f224 Vangelis Koukis
                <button type="button" class="prev" id="cancel">{% trans "Cancel" %}</button>
132 8e15be4c Mike Muzurakis
                <button type="button" class="next right">{% trans "Next" %}<img src="static/next.png" class="img-next" /></button>
133 cc7c5902 Dimitris Moraitis
            </div>
134 b7e79006 Mike Muzurakis
            <div class="page page2">
135 f533f224 Vangelis Koukis
                <h2>{% trans "Select CPUs, RAM and Disk Size" %}</h2>
136 e9b14cb8 Kostas Papadimitriou
                <p class="desc">{% blocktrans %}Available options are filtered based on the selected image{% endblocktrans %}</p>
137 94adeabb Mike Muzurakis
                <hr class="topruler" />
138 cc7c5902 Dimitris Moraitis
                <ul>
139 94adeabb Mike Muzurakis
                    <li id="machinetype">
140 c376783b Markos Gogoulos
                        <div class="machine-type">
141 94adeabb Mike Muzurakis
                            <label for="small" id="small">
142 c376783b Markos Gogoulos
                                <input type="radio" id="small" name="machine-type" value="small" checked="true" />
143 afa2ebd2 Mike Muzurakis
                                <span class="typebody" id="small-body">{% trans "small" %}</span>
144 cc7c5902 Dimitris Moraitis
                            </label>
145 cc7c5902 Dimitris Moraitis
                        </div>
146 f533f224 Vangelis Koukis
                        <div class="machine-type">
147 94adeabb Mike Muzurakis
                            <label for="medium" id="medium">
148 f533f224 Vangelis Koukis
                                <input type="radio" id="medium" name="machine-type" value="medium" />
149 afa2ebd2 Mike Muzurakis
                                <span class="typebody" id="medium-body">{% trans "medium" %}</span>
150 cc7c5902 Dimitris Moraitis
                            </label>
151 cc7c5902 Dimitris Moraitis
                        </div>
152 c376783b Markos Gogoulos
                        <div class="machine-type">
153 94adeabb Mike Muzurakis
                            <label for="large" id="large">
154 c376783b Markos Gogoulos
                                <input type="radio" id="large" name="machine-type" value="large" />
155 afa2ebd2 Mike Muzurakis
                                <span class="typebody" id="large-body">{% trans "large" %}</span>
156 cc7c5902 Dimitris Moraitis
                            </label>
157 cc7c5902 Dimitris Moraitis
                        </div>
158 c376783b Markos Gogoulos
                        <div class="machine-type">
159 94adeabb Mike Muzurakis
                            <label for="custom" id="custom">
160 c376783b Markos Gogoulos
                                <input type="radio" name="machine-type" id="custom" value="large" />
161 afa2ebd2 Mike Muzurakis
                                <span class="typebody" id="custom-body">{% trans "custom" %}</span>
162 cc7c5902 Dimitris Moraitis
                            </label>
163 cc7c5902 Dimitris Moraitis
                        </div>
164 cc7c5902 Dimitris Moraitis
                    </li>
165 94adeabb Mike Muzurakis
                    <div id="page2-container">
166 94adeabb Mike Muzurakis
                        <li class="slider-container">
167 f533f224 Vangelis Koukis
                            <label><strong class="sliders">{% trans "CPUs" %}</strong></label>
168 94adeabb Mike Muzurakis
                            <input type="range" id="cpu" style="display:none" />
169 94adeabb Mike Muzurakis
                            <input type="text" class="range" id="cpu-indicator" />
170 f533f224 Vangelis Koukis
                            <span class="units">{% trans "cores" %}</span>
171 94adeabb Mike Muzurakis
                        </li>
172 94adeabb Mike Muzurakis
                        <li class="slider-container">
173 f533f224 Vangelis Koukis
                            <label><strong class="sliders">{% trans "RAM" %}</strong></label>
174 94adeabb Mike Muzurakis
                            <input type="range" id="ram" style="display:none" />
175 94adeabb Mike Muzurakis
                            <input type="text" class="range" id="ram-indicator" />
176 f533f224 Vangelis Koukis
                            <span class="units">MB</span>
177 94adeabb Mike Muzurakis
                        </li>
178 94adeabb Mike Muzurakis
                        <li class="slider-container">
179 f533f224 Vangelis Koukis
                            <label><strong class="sliders">{% trans "Size" %}</strong></label>
180 94adeabb Mike Muzurakis
                            <input type="range" id="storage" style="display:none" />
181 94adeabb Mike Muzurakis
                            <input type="text" class="range" id="storage-indicator" />
182 f533f224 Vangelis Koukis
                            <span class="units">GB</span>
183 94adeabb Mike Muzurakis
                        </li>
184 94adeabb Mike Muzurakis
                        <li>
185 94adeabb Mike Muzurakis
                            <div class="cost">
186 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>
187 94adeabb Mike Muzurakis
                            </div>
188 94adeabb Mike Muzurakis
                        </li>
189 94adeabb Mike Muzurakis
                    </div>
190 cc7c5902 Dimitris Moraitis
                </ul>
191 94adeabb Mike Muzurakis
                <hr class="bottomruler" />
192 8e15be4c Mike Muzurakis
                <button type="button" class="prev"><img src="static/prev.png" class="img-prev" />{% trans "Back" %}</button>
193 8e15be4c Mike Muzurakis
                <button type="button" class="next right">{% trans "Next" %}<img src="static/next.png" class="img-next" /></button>
194 cc7c5902 Dimitris Moraitis
            </div>
195 b7e79006 Mike Muzurakis
            <div class="page page3">
196 f533f224 Vangelis Koukis
                <h2>{% trans "Confirm your settings" %}</h2>
197 e9b14cb8 Kostas Papadimitriou
                <p class="desc">{% blocktrans %}Confirm that the options you have selected are correct{% endblocktrans %}</p>
198 94adeabb Mike Muzurakis
                <hr class="topruler" />
199 94adeabb Mike Muzurakis
                <ul id="page3-container">
200 afa2ebd2 Mike Muzurakis
                    <li class="required" id="label-name">
201 cc7c5902 Dimitris Moraitis
                        <label>
202 f533f224 Vangelis Koukis
                            <strong>{% trans "Name" %}:</strong>
203 cae67343 Mike Muzurakis
                            <input type="text" class="text" name="machine_name" id="name" value="My Ubuntu 10.04 x86_64 server"/>
204 cc7c5902 Dimitris Moraitis
                        </label>
205 cc7c5902 Dimitris Moraitis
                    </li>
206 cc7c5902 Dimitris Moraitis
                    <li>
207 94adeabb Mike Muzurakis
                        <span>{% trans "Image:" %}</span> <span id="machine_image-label">Ubuntu 10.04 x86_64 server</span>
208 cc7c5902 Dimitris Moraitis
                    </li>
209 cc7c5902 Dimitris Moraitis
                    <li>
210 94adeabb Mike Muzurakis
                        <span>{% trans "CPUs:" %}</span> <span id="machine_cpu-label">2</span> <span>{% trans "cores" %}</span>
211 cc7c5902 Dimitris Moraitis
                    </li>
212 cc7c5902 Dimitris Moraitis
                    <li>
213 94adeabb Mike Muzurakis
                        <span>{% trans "RAM:" %}</span> <span id="machine_ram-label">1024</span><span>MB</span>
214 cc7c5902 Dimitris Moraitis
                    </li>
215 cc7c5902 Dimitris Moraitis
                    <li>
216 94adeabb Mike Muzurakis
                        <span>{% trans "System Disk:" %}</span> <span id="machine_storage-label">10</span><span>GB</span>
217 cc7c5902 Dimitris Moraitis
                    </li>
218 cc7c5902 Dimitris Moraitis
                    <li>
219 94adeabb Mike Muzurakis
                        <span>{% trans "Cost per Hour:" %}</span> <span>40 {% trans "credits" %}</span>
220 cc7c5902 Dimitris Moraitis
                    </li>
221 cc7c5902 Dimitris Moraitis
                    <li>
222 94adeabb Mike Muzurakis
                        <span>{% trans "Credits in Wallet:" %}</span> <span>10.000</span>
223 cc7c5902 Dimitris Moraitis
                    </li>
224 cc7c5902 Dimitris Moraitis
                </ul>
225 94adeabb Mike Muzurakis
                <hr class="bottomruler" />
226 8e15be4c Mike Muzurakis
                <button type="button" class="prev"><img src="static/prev.png" class="img-prev" />{% trans "Back" %}</button>
227 f533f224 Vangelis Koukis
                <button type="button" class="next right" id="start">{% trans "Create VM" %}</button>
228 cc7c5902 Dimitris Moraitis
            </div>
229 f533f224 Vangelis Koukis
        </div>
230 f533f224 Vangelis Koukis
        <div class="separator-end"></div>
231 f533f224 Vangelis Koukis
    </div>
232 cc7c5902 Dimitris Moraitis
</form>
233 cc7c5902 Dimitris Moraitis
234 f533f224 Vangelis Koukis
<!-- metadata overlay -->
235 71eade6b Christodoulos Psaltis
<div>
236 f533f224 Vangelis Koukis
    <div id="metadata-wizard" class="modal">
237 f533f224 Vangelis Koukis
        <h3 class="popup-header">{% trans "Manage Tags" %}</h3>
238 f533f224 Vangelis Koukis
        <p style='display:none;'>hidden server id</p>
239 f533f224 Vangelis Koukis
        <div id="on-off" style='display:none;'>hidden server id</div>
240 f533f224 Vangelis Koukis
        <div class="popup-body">
241 f533f224 Vangelis Koukis
            <div class="popup-body-inner">
242 f533f224 Vangelis Koukis
                <div class="popup-title">{% trans "Create, edit and delete Tags for machine:" %}</div>
243 f533f224 Vangelis Koukis
                <div class="name-container">
244 f533f224 Vangelis Koukis
                    <img src="" class="machine-icon" />
245 f533f224 Vangelis Koukis
                    <div class="machine-name"></div>
246 f533f224 Vangelis Koukis
                </div>
247 f533f224 Vangelis Koukis
                <div class="popup-separator"></div>
248 f533f224 Vangelis Koukis
                <div class="large-spinner" style="display:none;"></div>
249 f4a0f054 Kostas Papadimitriou
                <div class="metadata-labels">
250 f4a0f054 Kostas Papadimitriou
                    <div class="metadata-label">{% trans "Tag" %}</div>
251 f4a0f054 Kostas Papadimitriou
                    <div class="metadata-label last">{% trans "Value" %}</div>
252 f4a0f054 Kostas Papadimitriou
                </div>
253 f533f224 Vangelis Koukis
                <div class="metadata-container">
254 f533f224 Vangelis Koukis
                    <!-- append metadata entries here -->
255 f533f224 Vangelis Koukis
                </div>
256 f533f224 Vangelis Koukis
                <div class="metadata-add-template" style="display:none;">
257 f533f224 Vangelis Koukis
                    <input type="text" id="add-meta-key" maxlength="15"></input>
258 17ee954a Mike Muzurakis
                    <ul style="display:none;" class="dropdown-container">
259 f533f224 Vangelis Koukis
                        {% for o in default_keywords %}
260 f533f224 Vangelis Koukis
                            <li><span class="dropdownitem">{{o}}</span></li>
261 f533f224 Vangelis Koukis
                        {% endfor %}
262 f533f224 Vangelis Koukis
                    </ul>
263 f533f224 Vangelis Koukis
                    <input type="text" id="add-meta-value" maxlength="150" value="{% trans 'max 150 characters' %}"></input>
264 f533f224 Vangelis Koukis
                    <div class="addbuttons">
265 9e60a338 Mike Muzurakis
                        <div class="save"></div>
266 9e60a338 Mike Muzurakis
                        <div class="cancel"></div>
267 71eade6b Christodoulos Psaltis
                    </div>
268 71eade6b Christodoulos Psaltis
                </div>
269 f533f224 Vangelis Koukis
                <div class="metadata-pair-template" style="display:none;">
270 f533f224 Vangelis Koukis
                    <div class="metadata-key">{% trans "OS" %}</div>
271 f533f224 Vangelis Koukis
                    <div class="vertical-separator"></div>
272 f533f224 Vangelis Koukis
                    <div class="metadata-value">{% trans "Debian" %}</div>
273 f533f224 Vangelis Koukis
                    <div class="metadata-full-value" style="display:none;"></div>
274 f533f224 Vangelis Koukis
                    <div class="metadata-edit">
275 9e60a338 Mike Muzurakis
                        <div class="edit"></div>
276 9e60a338 Mike Muzurakis
                        <div class="remove"></div>
277 f533f224 Vangelis Koukis
                    </div>
278 f533f224 Vangelis Koukis
                    <div class="editbuttons" style="display:none;">
279 9e60a338 Mike Muzurakis
                        <div class="save"></div>
280 9e60a338 Mike Muzurakis
                        <div class="remove"></div>
281 71eade6b Christodoulos Psaltis
                    </div>
282 71eade6b Christodoulos Psaltis
                </div>
283 71eade6b Christodoulos Psaltis
            </div>
284 a7ccb6f9 Christodoulos Psaltis
        </div>
285 f533f224 Vangelis Koukis
        <div class="buttons">
286 f533f224 Vangelis Koukis
            <button type="button" class="save" id="metadata-cancel">{% trans "Close" %}</button>
287 f533f224 Vangelis Koukis
            <button type="button" class="create" id="metadata-create">{% trans "Create New" %}</button>
288 f533f224 Vangelis Koukis
        </div>
289 339712cb Christodoulos Psaltis
    </div>
290 339712cb Christodoulos Psaltis
</div>
291 339712cb Christodoulos Psaltis
292 71eade6b Christodoulos Psaltis
<a id="metadata-scrollable" href="#" rel="#metadata-wizard"></a>
293 d165dbb4 Christodoulos Psaltis
294 42f67a2a Dimitris Moraitis
<div id="machinesview"></div>
295 42f67a2a Dimitris Moraitis
296 267403ca Dimitris Moraitis
<div class="confirm_multiple">
297 3d286f84 Dimitris Moraitis
    <p>{% trans "Your actions will affect" %} <span class="actionLen">XX</span> {% trans "machines" %}</p>
298 2cd96cc7 Vangelis Koukis
    <button class="yes">{% trans "Confirm All" %}</button>
299 f533f224 Vangelis Koukis
    <button class="no">{% trans "Cancel All" %}</button>
300 d725fb12 Christodoulos Psaltis
</div>
301 31343277 Christodoulos Psaltis
302 cc7c5902 Dimitris Moraitis
<script>
303 f1d5a1b8 Mike Muzurakis

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

312 dc3e66b9 Mike Muzurakis

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

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

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

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

349 f533f224 Vangelis Koukis
// switch to single view
350 f533f224 Vangelis Koukis
$("#machines-pane a#single").click(function(){
351 f533f224 Vangelis Koukis
    single_view();
352 f533f224 Vangelis Koukis
    return false;
353 f533f224 Vangelis Koukis
});
354 f533f224 Vangelis Koukis

355 bd8b1d60 Christodoulos Psaltis
// launch VM creation wizard
356 f533f224 Vangelis Koukis
$("#machines-pane a#create").click(function(){
357 146b6003 Dimitris Moraitis
    // launch wizard only if images and flavors are found
358 146b6003 Dimitris Moraitis
    if (images.length > 0  && flavors.length > 0) {
359 4a40dfff Dimitris Moraitis
        $('#machines-pane a#create').data('overlay').close();
360 a3e418b1 Markos Gogoulos
        $("#wizard").scrollable().begin();
361 a3e418b1 Markos Gogoulos
        $("#wizard").show();
362 4a40dfff Dimitris Moraitis
        $('#machines-pane a#create').data('overlay').load();
363 0c2ad1b7 Christodoulos Psaltis
        // enable submit button
364 0c2ad1b7 Christodoulos Psaltis
        $("#wizard #start").removeAttr('disabled');
365 e9b14cb8 Kostas Papadimitriou

366 e9b14cb8 Kostas Papadimitriou
        try {
367 e9b14cb8 Kostas Papadimitriou
            handle_image_choice_changed();
368 e9b14cb8 Kostas Papadimitriou
        } catch (err) {};
369 146b6003 Dimitris Moraitis
    } else if (images.length == 0 ) {
370 146b6003 Dimitris Moraitis
        ajax_error('NO_IMAGES');
371 f533f224 Vangelis Koukis
        return false;
372 146b6003 Dimitris Moraitis
    } else if (flavors.length == 0) {
373 146b6003 Dimitris Moraitis
        ajax_error('NO_FLAVORS');
374 146b6003 Dimitris Moraitis
        return false;
375 146b6003 Dimitris Moraitis
    }
376 ec06b07c Dimitris Moraitis
});
377 ec06b07c Dimitris Moraitis

378 f124656b Christodoulos Psaltis
// create wizard overlay
379 f533f224 Vangelis Koukis
$(function() {
380 f533f224 Vangelis Koukis
    $("#machines-pane a#create").overlay({
381 716c3ead Dimitris Moraitis
        mask: '#666',
382 f533f224 Vangelis Koukis
        effect: 'default',
383 f533f224 Vangelis Koukis
        top: '5%',
384 f124656b Christodoulos Psaltis
        oneInstance: false,
385 f974b570 Dimitris Moraitis
        closeOnClick: false
386 f124656b Christodoulos Psaltis
    });
387 f124656b Christodoulos Psaltis
});
388 f124656b Christodoulos Psaltis

389 bd8b1d60 Christodoulos Psaltis
// wizard
390 f533f224 Vangelis Koukis
$(function() {
391 bd8b1d60 Christodoulos Psaltis
    var root = $("#wizard").scrollable();
392 bd8b1d60 Christodoulos Psaltis
    var api = root.scrollable();
393 bd8b1d60 Christodoulos Psaltis
    // rangeinput with default configuration
394 bd8b1d60 Christodoulos Psaltis
    // validation logic is done inside the onBeforeSeek callback
395 bd8b1d60 Christodoulos Psaltis
    api.onBeforeSeek(function(event, i) {
396 b7e79006 Mike Muzurakis
        // update status bar
397 b7e79006 Mike Muzurakis
        $("#status li").removeClass("active").eq(i).addClass("active");
398 f533f224 Vangelis Koukis
        // we are going 1 step backwards so no need for validation
399 b7e79006 Mike Muzurakis
        if (api.getIndex() > i) {
400 b7e79006 Mike Muzurakis
            $("#wizard .li-" + i).removeClass("checked");
401 b7e79006 Mike Muzurakis
            $("#wizard .li-" + i).find(".img-check").css("visibility","hidden");
402 b7e79006 Mike Muzurakis
        }
403 f533f224 Vangelis Koukis
        if (api.getIndex() < i) {
404 b7e79006 Mike Muzurakis
            $("#wizard .li-" + api.getIndex()).addClass("checked");
405 b7e79006 Mike Muzurakis
            $("#wizard .li-" + api.getIndex()).find(".img-check").css("visibility","visible");
406 bd8b1d60 Christodoulos Psaltis
             // 1. get current page
407 f533f224 Vangelis Koukis
             var page = root.find(".page").eq(api.getIndex()),
408 f533f224 Vangelis Koukis
             // 2. .. and all required fields inside the page
409 f533f224 Vangelis Koukis
             inputs = page.find(".required :input").removeClass("error"),
410 f533f224 Vangelis Koukis
             // 3. .. which are empty
411 f533f224 Vangelis Koukis
             empty = inputs.filter(function() {
412 f533f224 Vangelis Koukis
                return $(this).val().replace(/\s*/g, '') == '';
413 f533f224 Vangelis Koukis
             });
414 f533f224 Vangelis Koukis
             // if there are empty fields, then
415 f533f224 Vangelis Koukis
            if (empty.length) {
416 f533f224 Vangelis Koukis
                // add a CSS class name "error" for empty & required fields
417 f533f224 Vangelis Koukis
                empty.addClass("error");
418 f533f224 Vangelis Koukis
                // cancel seeking of the scrollable by returning false
419 f533f224 Vangelis Koukis
                return false;
420 f533f224 Vangelis Koukis
            // everything is good
421 f533f224 Vangelis Koukis
            }
422 f533f224 Vangelis Koukis
        }
423 71642965 Dimitris Moraitis
        // update confirm step
424 20fae095 Christodoulos Psaltis
        if (api.getIndex()==0) {
425 20fae095 Christodoulos Psaltis
            var image = $("input[type=radio][name=image-id]:checked");
426 b335768e Markos Gogoulos
            var imageRef = image.length ? image[0].id : false
427 b335768e Markos Gogoulos
            if (imageRef) {
428 b335768e Markos Gogoulos
                var imageName = $("label[for=" + imageRef + "] .image-title").text();
429 20fae095 Christodoulos Psaltis
                $("#machine_image-label")[0].textContent = imageName;
430 20fae095 Christodoulos Psaltis
                $("input[type=text][name=machine_name]")[0].value = "My " + imageName + " server";
431 20fae095 Christodoulos Psaltis
            }
432 42f67a2a Dimitris Moraitis
        } else if (api.getIndex()==1) {
433 20fae095 Christodoulos Psaltis
            $("#machine_cpu-label")[0].textContent = $("#cpu-indicator")[0].value;
434 20fae095 Christodoulos Psaltis
            $("#machine_ram-label")[0].textContent = $("#ram-indicator")[0].value;
435 20fae095 Christodoulos Psaltis
            $("#machine_storage-label")[0].textContent = $("#storage-indicator")[0].value;
436 f533f224 Vangelis Koukis
        }
437 23307de4 Kostas Papadimitriou

438 23307de4 Kostas Papadimitriou
        // remove focus from create button
439 23307de4 Kostas Papadimitriou
        $("#create").blur();
440 bd8b1d60 Christodoulos Psaltis
    });
441 bd8b1d60 Christodoulos Psaltis
    // if tab is pressed on the next button seek to next page
442 f87e79a4 Mike Muzurakis
    $(root).live('keydown', function (e) {
443 23307de4 Kostas Papadimitriou
       if ( e.keyCode == 9 || e.keyCode == 13){
444 f87e79a4 Mike Muzurakis
           if(e.preventDefault) {
445 f87e79a4 Mike Muzurakis
               e.preventDefault();
446 f87e79a4 Mike Muzurakis
           }
447 29f0a240 Mike Muzurakis
           api.next();
448 f87e79a4 Mike Muzurakis
        }
449 bd8b1d60 Christodoulos Psaltis
    });
450 88bdf273 Mike Muzurakis
    //submit wizard by pressing enter on the name textbox
451 cae67343 Mike Muzurakis
    $("#name").keypress(function (e) {
452 f533f224 Vangelis Koukis
        if ((e.which && e.which == 13) || (e.keyCode && e.keyCode == 13)) {
453 f533f224 Vangelis Koukis
            $('#start').click();
454 f533f224 Vangelis Koukis
            return false;
455 f533f224 Vangelis Koukis
        } else {
456 f533f224 Vangelis Koukis
            return true;
457 f533f224 Vangelis Koukis
        }
458 cae67343 Mike Muzurakis
    });
459 71642965 Dimitris Moraitis
});
460 cc7c5902 Dimitris Moraitis

461 bd8b1d60 Christodoulos Psaltis
// disable sliders in flavor selection
462 cc7c5902 Dimitris Moraitis
function disableSliders() {
463 cc7c5902 Dimitris Moraitis
    $("#cpu").attr('disabled',true);
464 cc7c5902 Dimitris Moraitis
    $("#ram").attr('disabled',true);
465 cc7c5902 Dimitris Moraitis
    $("#storage").attr('disabled',true);
466 cc7c5902 Dimitris Moraitis
}
467 cc7c5902 Dimitris Moraitis

468 afa2ebd2 Mike Muzurakis
//update radio button when clicking on text
469 f533f224 Vangelis Koukis
$("#small-body").live('click' ,function() {
470 afa2ebd2 Mike Muzurakis
    $(this).parent().find("#small").click();
471 afa2ebd2 Mike Muzurakis
});
472 f533f224 Vangelis Koukis

473 f533f224 Vangelis Koukis
$("#medium-body").live('click' ,function() {
474 afa2ebd2 Mike Muzurakis
    $(this).parent().find("#medium").click();
475 afa2ebd2 Mike Muzurakis
});
476 f533f224 Vangelis Koukis

477 f533f224 Vangelis Koukis
$("#large-body").live('click' ,function() {
478 afa2ebd2 Mike Muzurakis
    $(this).parent().find("#large").click();
479 afa2ebd2 Mike Muzurakis
});
480 f533f224 Vangelis Koukis

481 f533f224 Vangelis Koukis
$("#custom-body").live('click' ,function() {
482 afa2ebd2 Mike Muzurakis
    $(this).parent().find("#custom").click();
483 afa2ebd2 Mike Muzurakis
});
484 afa2ebd2 Mike Muzurakis

485 afa2ebd2 Mike Muzurakis
//select image div on radio button select
486 f533f224 Vangelis Koukis
$('#machines-pane .radio').live('click' ,function() {
487 afa2ebd2 Mike Muzurakis
    $(this).parents("div").find(".image").removeClass('selecteddiv');
488 afa2ebd2 Mike Muzurakis
    if($(this).is(':checked'))  {
489 afa2ebd2 Mike Muzurakis
        $(this).parent().addClass('selecteddiv');
490 afa2ebd2 Mike Muzurakis
    }
491 afa2ebd2 Mike Muzurakis
});
492 afa2ebd2 Mike Muzurakis

493 e9b14cb8 Kostas Papadimitriou
var v2p = range_value_to_percentage;
494 695e1b21 Dimitris Moraitis
// validate cpu input box
495 e9b14cb8 Kostas Papadimitriou
$("#cpu-indicator").live('change',function() {
496 e9b14cb8 Kostas Papadimitriou
    $("#cpu").data('rangeinput').setValue(get_closest_from_value(this.value, cpus));
497 e9b14cb8 Kostas Papadimitriou
    validate_selected_flavor_options();
498 695e1b21 Dimitris Moraitis
    return false;
499 695e1b21 Dimitris Moraitis
});
500 695e1b21 Dimitris Moraitis

501 695e1b21 Dimitris Moraitis
// validate ram input box
502 e9b14cb8 Kostas Papadimitriou
$("#ram-indicator").live('change',function() {
503 e9b14cb8 Kostas Papadimitriou
    $("#ram").data('rangeinput').setValue(get_closest_from_value(this.value, ram));
504 e9b14cb8 Kostas Papadimitriou
    validate_selected_flavor_options();
505 695e1b21 Dimitris Moraitis
    return false;
506 695e1b21 Dimitris Moraitis
});
507 695e1b21 Dimitris Moraitis

508 695e1b21 Dimitris Moraitis
// validate storage input box
509 695e1b21 Dimitris Moraitis
$("#storage-indicator").live('change',function(){
510 e9b14cb8 Kostas Papadimitriou
    $("#storage").data('rangeinput').setValue(get_closest_from_value(this.value, disks));
511 e9b14cb8 Kostas Papadimitriou
    validate_selected_flavor_options();
512 695e1b21 Dimitris Moraitis
    return false;
513 695e1b21 Dimitris Moraitis
});
514 695e1b21 Dimitris Moraitis

515 bd8b1d60 Christodoulos Psaltis
// selecting the small size
516 8fd5c3a5 Christodoulos Psaltis
$("#small").click(function(){
517 e9b14cb8 Kostas Papadimitriou
    if ($(this).find("input:disabled").length == 1) { return };
518 e9b14cb8 Kostas Papadimitriou
    var flavor = SUGGESTED_FLAVORS[$(this).attr("id")];
519 e9b14cb8 Kostas Papadimitriou
    $(this).parent().parent().parent().find("label").removeClass("active");
520 e9b14cb8 Kostas Papadimitriou
    $(this).addClass("active");
521 e9b14cb8 Kostas Papadimitriou
    set_flavor_sliders_values(flavor.cpu, flavor.disk, flavor.ram);
522 cc7c5902 Dimitris Moraitis
});
523 cc7c5902 Dimitris Moraitis

524 bd8b1d60 Christodoulos Psaltis
// selecting the medium size
525 8fd5c3a5 Christodoulos Psaltis
$("#medium").click(function(){
526 e9b14cb8 Kostas Papadimitriou
    if ($(this).find("input:disabled").length == 1) { return };
527 e9b14cb8 Kostas Papadimitriou
    var flavor = SUGGESTED_FLAVORS[$(this).attr("id")];
528 e9b14cb8 Kostas Papadimitriou
    $(this).parent().parent().parent().find("label").removeClass("active");
529 e9b14cb8 Kostas Papadimitriou
    $(this).addClass("active");
530 e9b14cb8 Kostas Papadimitriou
    set_flavor_sliders_values(flavor.cpu, flavor.disk, flavor.ram);
531 cc7c5902 Dimitris Moraitis
});
532 cc7c5902 Dimitris Moraitis

533 bd8b1d60 Christodoulos Psaltis
// selecting the large size
534 8fd5c3a5 Christodoulos Psaltis
$("#large").click(function(){
535 e9b14cb8 Kostas Papadimitriou
    if ($(this).find("input:disabled").length == 1) { return };
536 e9b14cb8 Kostas Papadimitriou
    var flavor = SUGGESTED_FLAVORS[$(this).attr("id")];
537 e9b14cb8 Kostas Papadimitriou
    $(this).parent().parent().parent().find("label").removeClass("active");
538 e9b14cb8 Kostas Papadimitriou
    $(this).addClass("active");
539 e9b14cb8 Kostas Papadimitriou
    set_flavor_sliders_values(flavor.cpu, flavor.disk, flavor.ram);
540 cc7c5902 Dimitris Moraitis
});
541 cc7c5902 Dimitris Moraitis

542 bd8b1d60 Christodoulos Psaltis
// selecting the custom flavor enables the sliders
543 8fd5c3a5 Christodoulos Psaltis
$("#custom").click(function(){
544 bd8b1d60 Christodoulos Psaltis
    $("#cpu").attr('disabled',false);
545 bd8b1d60 Christodoulos Psaltis
    $("#ram").attr('disabled',false);
546 bd8b1d60 Christodoulos Psaltis
    $("#storage").attr('disabled',false);
547 bd8b1d60 Christodoulos Psaltis
    $("strong.sliders").style = 'color: #778899;';
548 f533f224 Vangelis Koukis
    $("#custom input").attr('checked', 'checked');
549 f533f224 Vangelis Koukis
    $("#custom").addClass("active");
550 f533f224 Vangelis Koukis
    $("#medium").removeClass("active");
551 f533f224 Vangelis Koukis
    $("#large").removeClass("active");
552 f533f224 Vangelis Koukis
    $("#small").removeClass("active");
553 bd8b1d60 Christodoulos Psaltis
});
554 bd8b1d60 Christodoulos Psaltis

555 99721d83 Mike Muzurakis
//when textbox gains focus, add selection in css
556 99721d83 Mike Muzurakis
$('#cpu-indicator').focus(function() {
557 99721d83 Mike Muzurakis
    $(this).addClass('selectedrange');
558 99721d83 Mike Muzurakis
});
559 f533f224 Vangelis Koukis

560 99721d83 Mike Muzurakis
$('#ram-indicator').focus(function() {
561 99721d83 Mike Muzurakis
    $(this).addClass('selectedrange');
562 99721d83 Mike Muzurakis
});
563 f533f224 Vangelis Koukis

564 99721d83 Mike Muzurakis
$('#storage-indicator').focus(function() {
565 99721d83 Mike Muzurakis
    $(this).addClass('selectedrange');
566 99721d83 Mike Muzurakis
});
567 99721d83 Mike Muzurakis

568 99721d83 Mike Muzurakis
//when textbox loses focus, clear selection in css
569 99721d83 Mike Muzurakis
$('#cpu-indicator').blur(function() {
570 99721d83 Mike Muzurakis
    $(this).removeClass('selectedrange');
571 99721d83 Mike Muzurakis
});
572 f533f224 Vangelis Koukis

573 99721d83 Mike Muzurakis
$('#ram-indicator').blur(function() {
574 99721d83 Mike Muzurakis
    $(this).removeClass('selectedrange');
575 99721d83 Mike Muzurakis
});
576 f533f224 Vangelis Koukis

577 99721d83 Mike Muzurakis
$('#storage-indicator').blur(function() {
578 99721d83 Mike Muzurakis
    $(this).removeClass('selectedrange');
579 99721d83 Mike Muzurakis
});
580 99721d83 Mike Muzurakis

581 bd8b1d60 Christodoulos Psaltis
// exit the wizard
582 0c2ad1b7 Christodoulos Psaltis
$("#cancel").click(function() {
583 f533f224 Vangelis Koukis
    $("#machines-pane a#create").overlay().close();
584 cc7c5902 Dimitris Moraitis
});
585 cc7c5902 Dimitris Moraitis

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

595 0c2ad1b7 Christodoulos Psaltis
    // replace text 'create new' with progress indicator
596 0c2ad1b7 Christodoulos Psaltis
    $(this).text('');
597 0c2ad1b7 Christodoulos Psaltis
    $(this).html('<img src="static/icons/indicators/medium/horizontal-progress.gif" / >');
598 0c2ad1b7 Christodoulos Psaltis
    // disable submit button to prevent multiple calls
599 0c2ad1b7 Christodoulos Psaltis
    $(this).attr("disabled", true);
600 f533f224 Vangelis Koukis

601 f533f224 Vangelis Koukis
    create_vm(machineName, imageRef, flavorRef);
602 2f86374f Dimitris Moraitis

603 0c2ad1b7 Christodoulos Psaltis
    try {
604 0c2ad1b7 Christodoulos Psaltis
        console.warn('creating ' + $("input[name=machine_name]")[0].value);
605 0c2ad1b7 Christodoulos Psaltis
    } catch(err){}
606 285a1fa8 Dimitris Moraitis

607 cc7c5902 Dimitris Moraitis
});
608 cc7c5902 Dimitris Moraitis

609 71eade6b Christodoulos Psaltis
// metadata wizard
610 71eade6b Christodoulos Psaltis
$(function() {
611 71eade6b Christodoulos Psaltis
    // create wizard overlay
612 71eade6b Christodoulos Psaltis
    $("a#metadata-scrollable").overlay({
613 716c3ead Dimitris Moraitis
        mask: '#666',
614 c902e956 Christodoulos Psaltis
        effect: 'default',
615 c902e956 Christodoulos Psaltis
        top: '10%',
616 c902e956 Christodoulos Psaltis
        closeOnClick: false,
617 c902e956 Christodoulos Psaltis
        oneInstance: false,
618 3f99cc60 Mike Muzurakis
        closeOnEsc: false,
619 08cc1924 Christodoulos Psaltis
        load: false,
620 0c2ad1b7 Christodoulos Psaltis
        onClose: function() {
621 71eade6b Christodoulos Psaltis
            // reset input areas
622 f533f224 Vangelis Koukis
            serverID = $("#metadata-wizard p:first").text();
623 f533f224 Vangelis Koukis
            $("#metadata-wizard div.metadata-container").empty();
624 f533f224 Vangelis Koukis
            get_metadata(serverID, true);
625 08cc1924 Christodoulos Psaltis
        }
626 c902e956 Christodoulos Psaltis
    });
627 71eade6b Christodoulos Psaltis
});
628 71eade6b Christodoulos Psaltis

629 f533f224 Vangelis Koukis
// bring up metadata overlay
630 71eade6b Christodoulos Psaltis
function show_metadata_wizard() {
631 5186eb04 Christodoulos Psaltis
    // get metadata for current server and fill the dialog
632 f533f224 Vangelis Koukis
    serverID = $("#metadata-wizard p:first").text();
633 5186eb04 Christodoulos Psaltis
    get_metadata(serverID);
634 71eade6b Christodoulos Psaltis
    $("#metadata-wizard").show();
635 71eade6b Christodoulos Psaltis
    $("a#metadata-scrollable").data('overlay').load();
636 f533f224 Vangelis Koukis
    $('#metadata-wizard .large-spinner').show();
637 f533f224 Vangelis Koukis
    return false;
638 191ee58e Christodoulos Psaltis
}
639 191ee58e Christodoulos Psaltis

640 71eade6b Christodoulos Psaltis
// update metadata list
641 f533f224 Vangelis Koukis
function list_metadata(data) {
642 71eade6b Christodoulos Psaltis
    // empty the list if it already exists
643 f533f224 Vangelis Koukis
    $("#metadata-wizard div.metadata-container").empty();
644 71eade6b Christodoulos Psaltis
    // get the values to show
645 71eade6b Christodoulos Psaltis
    meta = data.metadata.values;
646 f533f224 Vangelis Koukis
    // set serve icon
647 f533f224 Vangelis Koukis
    var icon_name = os_icon(data.metadata);
648 f533f224 Vangelis Koukis
    $("#metadata-wizard .machine-icon").attr("src","static/icons/machines/small/" + icon_name + '-' + $("#metadata-wizard div#on-off").text() + '.png');
649 71eade6b Christodoulos Psaltis
    // show values
650 71eade6b Christodoulos Psaltis
    for (key in meta) {
651 f533f224 Vangelis Koukis
        pair = $("#metadata-wizard div.metadata-pair-template:last").clone();
652 71eade6b Christodoulos Psaltis
        //truncate metadata
653 f533f224 Vangelis Koukis
        pair.find("div.metadata-key").text(key.substring(0,15));
654 71eade6b Christodoulos Psaltis
        if (meta[key].length > 25) {
655 f533f224 Vangelis Koukis
            pair.find("div.metadata-value").text(meta[key].substring(0,25) + "...");
656 71eade6b Christodoulos Psaltis
        } else {
657 f533f224 Vangelis Koukis
            pair.find("div.metadata-value").text(meta[key]);
658 08cc1924 Christodoulos Psaltis
        }
659 f533f224 Vangelis Koukis
        //get the serverID
660 f533f224 Vangelis Koukis
        serverID = $("#metadata-wizard p:first").text();
661 f533f224 Vangelis Koukis
        //store the full metadata value on a hidden div
662 f533f224 Vangelis Koukis
        pair.find("div.metadata-full-value").text(meta[key]);
663 f533f224 Vangelis Koukis
        // show/hide edit-remove buttons on hover
664 f533f224 Vangelis Koukis
        pair.hover(function () {$(this).find('.metadata-edit').show();}, function () {$(this).find('.metadata-edit').hide();});
665 f533f224 Vangelis Koukis
        // add it to the list
666 f533f224 Vangelis Koukis
        pair.appendTo("#metadata-wizard div.metadata-container").fadeIn();
667 71eade6b Christodoulos Psaltis
    }
668 c902e956 Christodoulos Psaltis
}
669 c902e956 Christodoulos Psaltis

670 f533f224 Vangelis Koukis
// exit the metadata wizard
671 f533f224 Vangelis Koukis
$("#metadata-cancel").click(function(){
672 f533f224 Vangelis Koukis
    $("a#metadata-scrollable").overlay().close();
673 f533f224 Vangelis Koukis
});
674 f533f224 Vangelis Koukis

675 f533f224 Vangelis Koukis
//intercept create new metadata click
676 f533f224 Vangelis Koukis
$("#metadata-wizard #metadata-create").click(function(){
677 f533f224 Vangelis Koukis
    pair = $("#metadata-wizard div.metadata-add-template:first").clone();
678 f533f224 Vangelis Koukis
    pair.prependTo("#metadata-wizard div.metadata-container").fadeIn();
679 f533f224 Vangelis Koukis
      with (pair.find('input#add-meta-key')) {
680 17ee954a Mike Muzurakis
        with (pair.find('ul:first')) {
681 f533f224 Vangelis Koukis
          find('li').click(function() {
682 17ee954a Mike Muzurakis
            $(this).parent().parent().find('.textdropdown-outer').find('input:first').attr('value', $(this).find('.dropdownitem').html());
683 f533f224 Vangelis Koukis
            $(this).parent().hide();
684 f533f224 Vangelis Koukis
          });
685 f533f224 Vangelis Koukis
          hide();
686 f533f224 Vangelis Koukis
        }
687 cd154238 Christodoulos Psaltis

688 f533f224 Vangelis Koukis
        keypress(function() {
689 f533f224 Vangelis Koukis
          $(this).parent().next('ul:first').hide();
690 f533f224 Vangelis Koukis
        });
691 f533f224 Vangelis Koukis

692 f533f224 Vangelis Koukis
        change(function() {
693 f533f224 Vangelis Koukis
          $(this).parent().next('ul:first').hide();
694 f533f224 Vangelis Koukis
        });
695 f533f224 Vangelis Koukis

696 f533f224 Vangelis Koukis
        wrap('<div class="textdropdown-outer" style="width: ' + width() + 'px; height: ' + (height() + 5) + 'px"></div>');
697 f533f224 Vangelis Koukis
        var btn = parent().prepend('<div class="textdropdown-btn">&nbsp;</div>').find('.textdropdown-btn');
698 f533f224 Vangelis Koukis
        width(width() - btn.width() - 5);
699 f533f224 Vangelis Koukis
        css("border", "0");
700 f533f224 Vangelis Koukis

701 f533f224 Vangelis Koukis
        btn.click(function() {
702 17ee954a Mike Muzurakis
          var p = $(this).parent();
703 f533f224 Vangelis Koukis
          with (p.next('ul:first')) {
704 17ee954a Mike Muzurakis
            $(this).parent().parent().find('ul:first').css('position', 'absolute');
705 17ee954a Mike Muzurakis
            $(this).parent().parent().find('ul:first').css('width',    p.width());
706 17ee954a Mike Muzurakis
            $(this).parent().parent().find('ul:first').css('left',     p.position().left + 4);
707 17ee954a Mike Muzurakis
            $(this).parent().parent().find('ul:first').css('top',      p.position().top + p.height() + 1);
708 17ee954a Mike Muzurakis
            var elem = $(this).parent().parent().find('ul:first')[0];
709 17ee954a Mike Muzurakis
            if(elem.style.display == 'none') {
710 17ee954a Mike Muzurakis
                 $(this).parent().parent().find('ul:first').show();
711 17ee954a Mike Muzurakis
            } else {
712 17ee954a Mike Muzurakis
                 $(this).parent().parent().find('ul:first').hide();
713 17ee954a Mike Muzurakis
            }
714 17ee954a Mike Muzurakis

715 f533f224 Vangelis Koukis
          }
716 f533f224 Vangelis Koukis
        });
717 f533f224 Vangelis Koukis
      }
718 f533f224 Vangelis Koukis
    pair.find('input#add-meta-key').focus();
719 3f99cc60 Mike Muzurakis
    //submit keyword by pressing enter on the textbox
720 3f99cc60 Mike Muzurakis
    $(this).parent().parent().find('input#add-meta-value').keypress(function (e) {
721 3f99cc60 Mike Muzurakis
        if ((e.which && e.which == 13) || (e.keyCode && e.keyCode == 13)) {
722 3f99cc60 Mike Muzurakis
            $(this).parent().parent().find('.addbuttons .save').click();
723 3f99cc60 Mike Muzurakis
            return false;
724 3f99cc60 Mike Muzurakis
        } else {
725 3f99cc60 Mike Muzurakis
            return true;
726 3f99cc60 Mike Muzurakis
        }
727 3f99cc60 Mike Muzurakis
    });
728 f533f224 Vangelis Koukis
});
729 f533f224 Vangelis Koukis

730 f533f224 Vangelis Koukis
//save new metadata
731 f533f224 Vangelis Koukis
$('#metadata-wizard .addbuttons .save').die('click');
732 f533f224 Vangelis Koukis
$('#metadata-wizard .addbuttons .save').live('click', function(){
733 f533f224 Vangelis Koukis
    keyValue = $(this).parent().parent().find('input#add-meta-key').val();
734 f533f224 Vangelis Koukis
    valValue = $(this).parent().parent().find('input#add-meta-value').val();
735 f533f224 Vangelis Koukis
    if ((keyValue == '{% trans 'max 15 characters' %}') || (valValue == '{% trans 'max 150 characters' %}')) {
736 245c788e Mike Muzurakis
        return false;
737 f533f224 Vangelis Koukis
    } else {
738 f533f224 Vangelis Koukis
        serverID = $("#metadata-wizard p:first").text();
739 f533f224 Vangelis Koukis
        pair = $("#metadata-wizard div.metadata-pair-template:last").clone();
740 f533f224 Vangelis Koukis
        pair.find("div.metadata-key").text(keyValue.substring(0,15));
741 f533f224 Vangelis Koukis
        if (valValue.length > 25) {
742 f533f224 Vangelis Koukis
            pair.find("div.metadata-value").text(valValue.substring(0,25) + "...");
743 f533f224 Vangelis Koukis
        } else {
744 f533f224 Vangelis Koukis
            pair.find("div.metadata-value").text(valValue);
745 f533f224 Vangelis Koukis
        }
746 f533f224 Vangelis Koukis
        pair.find("div.metadata-full-value").text(valValue);
747 f533f224 Vangelis Koukis
        update_metadata(serverID, keyValue, valValue);
748 f533f224 Vangelis Koukis
        $(this).parent().parent().remove();
749 f533f224 Vangelis Koukis
        pair.hover(function () {$(this).find('.metadata-edit').show();}, function () {$(this).find('.metadata-edit').hide();});
750 f533f224 Vangelis Koukis
        // add it to the list
751 f533f224 Vangelis Koukis
        if ($("#metadata-wizard div.metadata-container").find("div.metadata-pair-template").length > 0) {
752 f533f224 Vangelis Koukis
            pair.insertBefore("#metadata-wizard div.metadata-container div.metadata-pair-template:first").fadeIn();
753 f533f224 Vangelis Koukis
        } else {
754 f533f224 Vangelis Koukis
            pair.prependTo("#metadata-wizard div.metadata-container").fadeIn();
755 f533f224 Vangelis Koukis
        }
756 245c788e Mike Muzurakis
    }
757 cd154238 Christodoulos Psaltis
});
758 cd154238 Christodoulos Psaltis

759 f533f224 Vangelis Koukis
//intercept cancel new metadata creation
760 f533f224 Vangelis Koukis
$("#metadata-wizard .addbuttons .cancel").die('click');
761 f533f224 Vangelis Koukis
$("#metadata-wizard .addbuttons .cancel").live('click',function(){
762 3f99cc60 Mike Muzurakis
    $(this).parent().parent().fadeOut('fast', function() { $(this).remove(); });
763 c902e956 Christodoulos Psaltis
});
764 c902e956 Christodoulos Psaltis

765 f533f224 Vangelis Koukis
//metadata remove button
766 f533f224 Vangelis Koukis
$("#metadata-wizard .metadata-edit .remove").die('click')
767 f533f224 Vangelis Koukis
$("#metadata-wizard .metadata-edit .remove").live('click', function() {
768 f533f224 Vangelis Koukis
    $(this).parent().parent().fadeOut('slow');
769 f533f224 Vangelis Koukis
    serverID = $("#metadata-wizard p:first").text();
770 f533f224 Vangelis Koukis
    keyValue = $(this).parent().parent().find('div.metadata-key').text();
771 f533f224 Vangelis Koukis
    //update icons if deleting the OS metadata
772 f533f224 Vangelis Koukis
    if (keyValue == "OS") {
773 f533f224 Vangelis Koukis
        $("#metadata-wizard .machine-icon").attr("src","static/icons/machines/small/unknown-" + $("#metadata-wizard div#on-off").text() + '.png');
774 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');
775 f533f224 Vangelis Koukis
    }
776 f533f224 Vangelis Koukis
    delete_metadata(serverID, keyValue);
777 f533f224 Vangelis Koukis
});
778 f533f224 Vangelis Koukis

779 f533f224 Vangelis Koukis
//metadata edit button
780 f533f224 Vangelis Koukis
$("#metadata-wizard .metadata-edit .edit").die('click');
781 f533f224 Vangelis Koukis
$("#metadata-wizard .metadata-edit .edit").live('click', function() {
782 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() +
783 f533f224 Vangelis Koukis
                                    "\" / ><span class=\"oldValue\">" +
784 f533f224 Vangelis Koukis
                                    $(this).parent().parent().find('.metadata-full-value').text() + "</span>");
785 3f99cc60 Mike Muzurakis
    //submit keyword by pressing enter on the textbox
786 3f99cc60 Mike Muzurakis
    $(this).parent().parent().find('input.metatextbox').keypress(function (e) {
787 3f99cc60 Mike Muzurakis
        if ((e.which && e.which == 13) || (e.keyCode && e.keyCode == 13)) {
788 3f99cc60 Mike Muzurakis
            $(this).parent().parent().find('.editbuttons .save').click();
789 3f99cc60 Mike Muzurakis
            return false;
790 3f99cc60 Mike Muzurakis
        } else {
791 3f99cc60 Mike Muzurakis
            return true;
792 3f99cc60 Mike Muzurakis
        }
793 3f99cc60 Mike Muzurakis
    });
794 3f99cc60 Mike Muzurakis
    $(this).parent().parent().find('input.metatextbox').select()
795 f533f224 Vangelis Koukis
    $(this).parent().hide();
796 f533f224 Vangelis Koukis
    $(this).parent().parent().unbind('mouseenter').unbind('mouseleave');
797 f533f224 Vangelis Koukis
    $(this).parent().parent().find('.editbuttons').show();
798 f533f224 Vangelis Koukis
});
799 f533f224 Vangelis Koukis

800 3f99cc60 Mike Muzurakis
//capture Esc key
801 3f99cc60 Mike Muzurakis
bar = {};
802 4ea5cc44 Mike Muzurakis
bar.keydown = function(e) {
803 3f99cc60 Mike Muzurakis
    if (e.keyCode == 27) {
804 3f99cc60 Mike Muzurakis
        //if we are inside an add or edit textbox, cancel editing
805 3f99cc60 Mike Muzurakis
        if ($('input.metatextbox:focus').length > 0) {
806 3f99cc60 Mike Muzurakis
            $('input.metatextbox:focus').parent().parent().find('.editbuttons .remove').click();
807 3f99cc60 Mike Muzurakis
        } else if ($('input#add-meta-key:focus').length > 0)  {
808 3f99cc60 Mike Muzurakis
            $('input#add-meta-key:focus').parent().parent().find('.addbuttons .cancel').click();
809 3f99cc60 Mike Muzurakis
        } else if ($('input#add-meta-value:focus').length > 0) {
810 3f99cc60 Mike Muzurakis
            $('input#add-meta-value:focus').parent().parent().find('.addbuttons .cancel').click();
811 3f99cc60 Mike Muzurakis
        } else {
812 3f99cc60 Mike Muzurakis
            //else close the metadata wizard
813 3f99cc60 Mike Muzurakis
            $("a#metadata-scrollable").overlay().close();
814 3f99cc60 Mike Muzurakis
        }
815 3f99cc60 Mike Muzurakis
        e.preventDefault();
816 3f99cc60 Mike Muzurakis
        e.stopPropagation();
817 3f99cc60 Mike Muzurakis
    }
818 3f99cc60 Mike Muzurakis
};
819 4ea5cc44 Mike Muzurakis
document.keydown = bar.keydown;
820 3f99cc60 Mike Muzurakis

821 f533f224 Vangelis Koukis
//metadata cancel edit button
822 f533f224 Vangelis Koukis
$("#metadata-wizard .editbuttons .remove").die('click');
823 f533f224 Vangelis Koukis
$("#metadata-wizard .editbuttons .remove").live('click', function() {
824 f533f224 Vangelis Koukis
    var oldValue = $(this).parent().parent().find('.oldValue').text();
825 f533f224 Vangelis Koukis
    if (oldValue.length > 25) {
826 f533f224 Vangelis Koukis
        oldValue = oldValue.substring(0,25) + "...";
827 f533f224 Vangelis Koukis
    }
828 f533f224 Vangelis Koukis
    $(this).parent().parent().find('div.metadata-value').html(oldValue);
829 f533f224 Vangelis Koukis
    $(this).parent().parent().hover(function () {$(this).find('.metadata-edit').show();}, function () {$(this).find('.metadata-edit').hide();});
830 f533f224 Vangelis Koukis
    $(this).parent().hide();
831 f533f224 Vangelis Koukis
});
832 f533f224 Vangelis Koukis

833 3f99cc60 Mike Muzurakis

834 f533f224 Vangelis Koukis
//metadata save edit button
835 f533f224 Vangelis Koukis
$("#metadata-wizard .editbuttons .save").die('click');
836 f533f224 Vangelis Koukis
$("#metadata-wizard .editbuttons .save").live('click', function() {
837 f533f224 Vangelis Koukis
    newValue = $(this).parent().parent().find('input.metatextbox').val();
838 f533f224 Vangelis Koukis
    keyValue = $(this).parent().parent().find('div.metadata-key').text();
839 f533f224 Vangelis Koukis
    oldValue = $(this).parent().parent().find('.oldValue').text();
840 f533f224 Vangelis Koukis
    if (!(newValue == oldValue)) {
841 f533f224 Vangelis Koukis
        update_metadata(serverID, keyValue, newValue);
842 f533f224 Vangelis Koukis
    }
843 f533f224 Vangelis Koukis
    if (newValue.length > 25) {
844 f533f224 Vangelis Koukis
        newValueSort = newValue.substring(0,25) + "...";
845 f533f224 Vangelis Koukis
    } else {
846 f533f224 Vangelis Koukis
        newValueSort = newValue
847 f533f224 Vangelis Koukis
    }
848 f533f224 Vangelis Koukis
    $(this).parent().parent().find('div.metadata-value').html(newValueSort);
849 f533f224 Vangelis Koukis
    $(this).parent().parent().find('div.metadata-full-value').html(newValue);
850 f533f224 Vangelis Koukis
    $(this).parent().parent().hover(function () {$(this).find('.metadata-edit').show();}, function () {$(this).find('.metadata-edit').hide();});
851 f533f224 Vangelis Koukis
    $(this).parent().hide();
852 3a68225a Christodoulos Psaltis

853 3a68225a Christodoulos Psaltis
});
854 3a68225a Christodoulos Psaltis

855 f1805aa3 Christodoulos Psaltis
// intercept create metadata key focus
856 f533f224 Vangelis Koukis
$("#metadata-wizard input#add-meta-key").live('focusin', function() {
857 f533f224 Vangelis Koukis
    if ($(this).parent().hasClass("div-enabled")) {
858 f1805aa3 Christodoulos Psaltis
    } else {
859 f533f224 Vangelis Koukis
        $(this).parent().addClass("div-enabled");
860 f533f224 Vangelis Koukis
        $(this).addClass("input-enabled");
861 f533f224 Vangelis Koukis
        if (this.value == '{% trans 'max 15 characters' %}') {
862 f533f224 Vangelis Koukis
            this.value = '';
863 f533f224 Vangelis Koukis
        }
864 f1805aa3 Christodoulos Psaltis
    }
865 f1805aa3 Christodoulos Psaltis
    return false;
866 f1805aa3 Christodoulos Psaltis
});
867 f1805aa3 Christodoulos Psaltis

868 f1805aa3 Christodoulos Psaltis
// intercept create metadata key focus out
869 f533f224 Vangelis Koukis
$("#metadata-wizard input#add-meta-key").live('focusout', function() {
870 f533f224 Vangelis Koukis
    $(this).parent().removeClass("div-enabled");
871 f1805aa3 Christodoulos Psaltis
    if (this.value == "") {
872 f533f224 Vangelis Koukis
        $(this).removeClass("input-enabled");
873 f533f224 Vangelis Koukis
        this.value = '{% trans 'max 15 characters' %}';
874 f1805aa3 Christodoulos Psaltis
    }
875 f1805aa3 Christodoulos Psaltis
    return false;
876 f1805aa3 Christodoulos Psaltis
});
877 f1805aa3 Christodoulos Psaltis

878 f533f224 Vangelis Koukis

879 f533f224 Vangelis Koukis
// intercept metadata dropdown item click
880 f533f224 Vangelis Koukis
$(".metadata-add-template li").live('click', function() {
881 f533f224 Vangelis Koukis
    $(this).parent().parent().parent().find("input#add-meta-value").focus();
882 f533f224 Vangelis Koukis
    $(this).parent().parent().parent().find("input#add-meta-key").addClass("input-enabled");
883 f533f224 Vangelis Koukis
});
884 f533f224 Vangelis Koukis

885 f1805aa3 Christodoulos Psaltis
// intercept create metadata key focus
886 f533f224 Vangelis Koukis
$("#metadata-wizard input#add-meta-value").live('focusin', function() {
887 f1805aa3 Christodoulos Psaltis
    if ($(this).hasClass("input-enabled")) {
888 f1805aa3 Christodoulos Psaltis
    } else {
889 f533f224 Vangelis Koukis
        $(this).addClass("input-enabled");
890 f1805aa3 Christodoulos Psaltis
        this.value = '';
891 f1805aa3 Christodoulos Psaltis
    }
892 f1805aa3 Christodoulos Psaltis
    return false;
893 f1805aa3 Christodoulos Psaltis
});
894 f1805aa3 Christodoulos Psaltis

895 f1805aa3 Christodoulos Psaltis
// intercept create metadata key focus out
896 f533f224 Vangelis Koukis
$("#metadata-wizard input#add-meta-value").live('focusout', function() {
897 f1805aa3 Christodoulos Psaltis
    if (this.value == "") {
898 f533f224 Vangelis Koukis
        $(this).removeClass("input-enabled");
899 f533f224 Vangelis Koukis
        this.value = '{% trans 'max 150 characters' %}';
900 f1805aa3 Christodoulos Psaltis
    }
901 f1805aa3 Christodoulos Psaltis
    return false;
902 f1805aa3 Christodoulos Psaltis
});
903 f1805aa3 Christodoulos Psaltis

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

907 191ee58e Christodoulos Psaltis
});
908 191ee58e Christodoulos Psaltis

909 c902e956 Christodoulos Psaltis
// intercept click on save button in metadata add dialog
910 71eade6b Christodoulos Psaltis
$('#add-dialog button.save').live('click', function() {
911 f533f224 Vangelis Koukis
    // if both fields are filled in
912 f1805aa3 Christodoulos Psaltis
    if ($('input.key').hasClass("input-enabled") && $('textarea.value').hasClass("input-enabled")) {
913 f533f224 Vangelis Koukis
        // get the server id, meta key and meta value needed for the ajax call
914 16e27b76 Markos Gogoulos
        var serverID = $(this).parent().find('h3 p').text();
915 16e27b76 Markos Gogoulos
        var meta_key = $(this).parent().find('input.key').attr('value');
916 7330b4c1 Dimitris Moraitis
        var meta_value = $(this).parent().find('textarea.value')[0].value;
917 16e27b76 Markos Gogoulos
        // make the ajax call and list the new GET results
918 16e27b76 Markos Gogoulos
        add_metadata(serverID, meta_key, meta_value);
919 71eade6b Christodoulos Psaltis
        // go to previous step
920 71eade6b Christodoulos Psaltis
        $('#add-dialog button.prev').click();
921 16e27b76 Markos Gogoulos
    } else {
922 f1805aa3 Christodoulos Psaltis
        // find which field is not filled in and focus there
923 f1805aa3 Christodoulos Psaltis
        if (!$('input.key').hasClass("input-enabled")) {
924 f1805aa3 Christodoulos Psaltis
            $('input.key').focus();
925 7330b4c1 Dimitris Moraitis
            $('input.key').focusin();
926 f1805aa3 Christodoulos Psaltis
        } else {
927 7330b4c1 Dimitris Moraitis
            $('textarea.value').focus();
928 7330b4c1 Dimitris Moraitis
            $('textarea.value').focusin();
929 f1805aa3 Christodoulos Psaltis
        }
930 16e27b76 Markos Gogoulos
    }
931 0c578a28 Markos Gogoulos
    return false;
932 c902e956 Christodoulos Psaltis
});
933 c902e956 Christodoulos Psaltis

934 71eade6b Christodoulos Psaltis
// confirm all actions
935 f533f224 Vangelis Koukis
$("#machines-pane div.confirm_multiple .yes").live('click', function(){
936 71eade6b Christodoulos Psaltis
    while(pending_actions.length > 0){ // if there is a pending action for this server execute it
937 71eade6b Christodoulos Psaltis
        action = pending_actions.pop(); // extract action
938 71eade6b Christodoulos Psaltis
        var serverID = action[1];
939 f533f224 Vangelis Koukis
        if ($.cookie("view") != '1') { // standard view
940 71eade6b Christodoulos Psaltis
            $('#' + serverID + ' .selected').removeClass('selected');
941 71eade6b Christodoulos Psaltis
            $('#' + serverID + ' .display').removeClass('display');
942 71eade6b Christodoulos Psaltis
            if (action[0] == shutdown) {
943 f533f224 Vangelis Koukis
                $('#' + serverID + ' .status').text(TRANSITIONS['Shutting down']);
944 ed7b588e Christodoulos Psaltis
                $('#' + serverID + ' .state').removeClass().addClass('state shutting-state');
945 71eade6b Christodoulos Psaltis
            } else if (action[0] == start) {
946 f533f224 Vangelis Koukis
                $('#' + serverID + ' .status').text(TRANSITIONS['Starting']);
947 ed7b588e Christodoulos Psaltis
                $('#' + serverID + ' .state').removeClass().addClass('state starting-state');
948 71eade6b Christodoulos Psaltis
            } else if (action[0] == reboot) {
949 f533f224 Vangelis Koukis
                $('#' + serverID + ' .status').text(TRANSITIONS['Rebooting']);
950 ed7b588e Christodoulos Psaltis
                $('#' + serverID + ' .state').removeClass().addClass('state rebooting-state');
951 71eade6b Christodoulos Psaltis
            } else if (action[0] == destroy) {
952 f533f224 Vangelis Koukis
                $('#' + serverID + ' .status').text(TRANSITIONS['Destroying']);
953 ed7b588e Christodoulos Psaltis
                $('#' + serverID + ' .state').removeClass().addClass('state destroying-state');
954 71eade6b Christodoulos Psaltis
            }
955 71eade6b Christodoulos Psaltis
            $('#' + serverID + ' .spinner').show();
956 71eade6b Christodoulos Psaltis
        } else { // list view
957 71eade6b Christodoulos Psaltis
            osIcon = $('#'+serverID).parent().parent().find('.list-logo');
958 71eade6b Christodoulos Psaltis
            osIcon.attr('os',osIcon.attr('src'));
959 f533f224 Vangelis Koukis
            osIcon.attr('src','static/icons/indicators/small/progress.gif');
960 71eade6b Christodoulos Psaltis
            if (action[0] == shutdown) {
961 f533f224 Vangelis Koukis
                $('#' + serverID).parent().parent().find('span.status').text(TRANSITIONS['Shutting down']);
962 71eade6b Christodoulos Psaltis
            } else if (action[0] == start) {
963 f533f224 Vangelis Koukis
                $('#' + serverID).parent().parent().find('span.status').text(TRANSITIONS['Starting']);
964 71eade6b Christodoulos Psaltis
            } else if (action[0] == reboot) {
965 f533f224 Vangelis Koukis
                $('#' + serverID).parent().parent().find('span.status').text(TRANSITIONS['Rebooting']);
966 71eade6b Christodoulos Psaltis
            } else if (action[0] == destroy) {
967 f533f224 Vangelis Koukis
                $('#' + serverID).parent().parent().find('span.status').text(TRANSITIONS['Destroying']);
968 71eade6b Christodoulos Psaltis
            }
969 f9015c00 Mike Muzurakis
        }
970 71eade6b Christodoulos Psaltis
        action[0]([serverID]); // execute action
971 6dd01959 Kostas Papadimitriou
        update_transition_names();
972 5186eb04 Christodoulos Psaltis
    }
973 7ef7af3f Mike Muzurakis
    $('#machinesview-list .actions .selected').removeClass('selected');
974 f533f224 Vangelis Koukis
    update_confirmations();
975 f3b14a28 Christodoulos Psaltis
    return false;
976 71eade6b Christodoulos Psaltis
});
977 71eade6b Christodoulos Psaltis

978 71eade6b Christodoulos Psaltis
// cancel all actions
979 bb48e576 Christodoulos Psaltis
$("#machines-pane div.confirm_multiple button.no").live('click', function(){
980 71eade6b Christodoulos Psaltis
    pending_actions = [];
981 f533f224 Vangelis Koukis
    $('#machines-pane .machine .selected').removeClass('selected');
982 f533f224 Vangelis Koukis
    $('#machinesview-list .actions .selected').removeClass('selected');
983 f533f224 Vangelis Koukis
    $('#machines-pane .machine .display').removeClass('display');
984 bb48e576 Christodoulos Psaltis

985 71eade6b Christodoulos Psaltis
    update_confirmations();
986 f3b14a28 Christodoulos Psaltis
    return false;
987 71eade6b Christodoulos Psaltis
});
988 5186eb04 Christodoulos Psaltis

989 bd528b3b Christodoulos Psaltis
// basic functions executed on page load
990 d134b632 Dimitris Moraitis
if (images.length > 0) {
991 d134b632 Dimitris Moraitis
    // populate image list
992 d134b632 Dimitris Moraitis
    update_wizard_images();
993 d134b632 Dimitris Moraitis
}
994 d134b632 Dimitris Moraitis
if (flavors.length > 0) {
995 d134b632 Dimitris Moraitis
    // configure flavors
996 f533f224 Vangelis Koukis
    update_wizard_flavors();
997 d134b632 Dimitris Moraitis
}
998 bd528b3b Christodoulos Psaltis
// create tabs for main menu
999 bd528b3b Christodoulos Psaltis
$("ul.tabs").tabs("div.panes ul");
1000 bd528b3b Christodoulos Psaltis

1001 d2f03cb3 Mike Muzurakis
//fix ie z-index bug by moving the overlays to the bottom
1002 d2f03cb3 Mike Muzurakis
$(document).ready(function() {
1003 d2f03cb3 Mike Muzurakis
    if ($.browser.msie) {
1004 d2f03cb3 Mike Muzurakis
        $("body").append($("#wizard"));
1005 d2f03cb3 Mike Muzurakis
        $("body").append($("#metadata-wizard"));
1006 d2f03cb3 Mike Muzurakis
    }
1007 d2f03cb3 Mike Muzurakis
});
1008 d2f03cb3 Mike Muzurakis

1009 17ee954a Mike Muzurakis
//IE specific fixes
1010 17ee954a Mike Muzurakis
if ($.browser.msie) {
1011 17ee954a Mike Muzurakis
    //IE fix for dropdown li hover
1012 17ee954a Mike Muzurakis
    $("#metadata-wizard ul li").live("mouseenter", function () {
1013 17ee954a Mike Muzurakis
        $(this).css("background-color","#efefef");
1014 17ee954a Mike Muzurakis
        $(this).css("cursor","pointer");
1015 17ee954a Mike Muzurakis
    });
1016 17ee954a Mike Muzurakis
    $("#metadata-wizard ul li").live("mouseleave", function () {
1017 17ee954a Mike Muzurakis
        $(this).css("background-color","transparent");
1018 17ee954a Mike Muzurakis
        $(this).css("cursor","default");
1019 17ee954a Mike Muzurakis
    });
1020 7f5b5a97 Mike Muzurakis
    //IE fix for metadata wizard hover
1021 7f5b5a97 Mike Muzurakis
    $("#metadata-wizard div.metadata-pair-template").live("mouseenter", function () {
1022 7f5b5a97 Mike Muzurakis
        $(this).css("background-color","#74aec9");
1023 7f5b5a97 Mike Muzurakis
    });
1024 7f5b5a97 Mike Muzurakis
    $("#metadata-wizard ul li").live("mouseleave", function () {
1025 7f5b5a97 Mike Muzurakis
        $(this).css("background-color","transparent");
1026 7f5b5a97 Mike Muzurakis
    });
1027 17ee954a Mike Muzurakis
}
1028 17ee954a Mike Muzurakis
1029 8400e1a5 Markos Gogoulos
</script>