root / ui / templates / machines.html @ 9cb2ca3b
History | View | Annotate | Download (26.4 kB)
1 | edda4d30 | Markos Gogoulos | {% load i18n %} |
---|---|---|---|
2 | edda4d30 | Markos Gogoulos | |
3 | e5b0ba20 | Vangelis Koukis | <div id="machines" class="separator"></div> |
4 | e55b8703 | Christodoulos Psaltis | |
5 | d165dbb4 | Christodoulos Psaltis | <!-- the create button -->
|
6 | 6902f72e | clopy | <div id="createcontainer"> |
7 | 5ef04f85 | Constantinos Venetsanopoulos | <span id="createbody">{% trans "Start by creating a new Virtual Machine:" %}</span><br /> |
8 | 6902f72e | clopy | <a id="create" rel="#wizard" href="#">{% trans "Create New +" %}</a> |
9 | 6902f72e | clopy | </div>
|
10 | d165dbb4 | Christodoulos Psaltis | |
11 | d165dbb4 | Christodoulos Psaltis | <!-- changing between standard/list view -->
|
12 | e55b8703 | Christodoulos Psaltis | <div id="view-select"> |
13 | aa1e0cab | Markos Gogoulos | <a id="standard" href="/machines/standard"></a> |
14 | aa1e0cab | Markos Gogoulos | <a id="list" href="/machines/list"></a> |
15 | aa1e0cab | Markos Gogoulos | <a id="single" href="#"></a> |
16 | e55b8703 | Christodoulos Psaltis | </div>
|
17 | e55b8703 | Christodoulos Psaltis | |
18 | 6902f72e | clopy | <div id="emptymachineslist"><h1 id="welcomeheader">{% trans "Welcome to the ocean!" %}</h1><br /> |
19 | 09ec6db2 | clopy | <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: take the " %}<a href="#">{% trans "tour" %}</a>.</span><br /><br /> |
20 | 09ec6db2 | clopy | <span class="welcomebody">{% trans "The panel is currently empty, because you don't have any VMs yet. You can start by creating your new VM by clicking the blue button on the right. The wizard will guide you through the hole process." %}</span><br /><br /> |
21 | 5ef04f85 | Constantinos Venetsanopoulos | <span class="welcomefooter">{% trans "For more information or help, click " %}<a href="#">{% trans "here" %}</a>.</span> |
22 | 6902f72e | clopy | </div>
|
23 | 6902f72e | clopy | |
24 | cc7c5902 | Dimitris Moraitis | <!-- the form -->
|
25 | cc7c5902 | Dimitris Moraitis | <form action="#"> |
26 | cc7c5902 | Dimitris Moraitis | <!-- scrollable root element -->
|
27 | cc7c5902 | Dimitris Moraitis | <div class="modal" id="wizard"> |
28 | cc7c5902 | Dimitris Moraitis | <!-- status bar -->
|
29 | cc7c5902 | Dimitris Moraitis | <ul id="status"> |
30 | afa2ebd2 | Mike Muzurakis | <li class="active"><span class="headernumber" class="first">1</span><div class="headerbody first">{% trans "Image" %}</div></li> |
31 | 94adeabb | Mike Muzurakis | <li><span class="headernumber">2</span><div class="headerbody">{% trans "Flavor" %}</div></li> |
32 | cf93419a | Mike Muzurakis | <li class="third"><span class="headernumber">3</span><div class="headerbody">{% trans "Name" %}</div></li> |
33 | cc7c5902 | Dimitris Moraitis | </ul>
|
34 | cc7c5902 | Dimitris Moraitis | <!-- scrollable items -->
|
35 | cc7c5902 | Dimitris Moraitis | <div class="items"> |
36 | cc7c5902 | Dimitris Moraitis | <!-- pages -->
|
37 | cc7c5902 | Dimitris Moraitis | <div class="page"> |
38 | cf0eb36b | Markos Gogoulos | <h2>{% trans "Select an OS" %}</h2> |
39 | 94adeabb | Mike Muzurakis | <hr class="topruler" /> |
40 | cc7c5902 | Dimitris Moraitis | <ul class="tabs"> |
41 | 94adeabb | Mike Muzurakis | <li><a href="#">{% trans "system images" %}</a></li> |
42 | cf93419a | Mike Muzurakis | <li><a href="#">{% trans "custom images" %}</a></li> |
43 | cc7c5902 | Dimitris Moraitis | </ul>
|
44 | 89976b6c | Christodoulos Psaltis | <div class="panes"> |
45 | ec06b07c | Dimitris Moraitis | <li id="image-template" style="display:none"> |
46 | ec06b07c | Dimitris Moraitis | <label for="image.id"> |
47 | 9b1b6f3a | Christodoulos Psaltis | <a>
|
48 | 94adeabb | Mike Muzurakis | <div class="image-container"> |
49 | 94adeabb | Mike Muzurakis | <div class="image"> |
50 | 3091ead5 | Mike Muzurakis | <input class="radio" type="radio" name="image-id" id="image-id" /> |
51 | 94adeabb | Mike Muzurakis | <img src="" class="image-logo"/> |
52 | 94adeabb | Mike Muzurakis | <strong class="image-title">image.title</strong> |
53 | 94adeabb | Mike Muzurakis | <br /> |
54 | 94adeabb | Mike Muzurakis | <span class="description">image.description</span> |
55 | cf93419a | Mike Muzurakis | <span id="size" class="size">?? MB</span><span class="size"> MB</span> |
56 | 94adeabb | Mike Muzurakis | </div>
|
57 | 94adeabb | Mike Muzurakis | </div>
|
58 | 9b1b6f3a | Christodoulos Psaltis | </a>
|
59 | ec06b07c | Dimitris Moraitis | </label>
|
60 | ec06b07c | Dimitris Moraitis | </li>
|
61 | ec06b07c | Dimitris Moraitis | <ul class="pane" id="standard-images"> |
62 | cc7c5902 | Dimitris Moraitis | <!-- standard images -->
|
63 | cc7c5902 | Dimitris Moraitis | </ul>
|
64 | ec06b07c | Dimitris Moraitis | <ul class="pane" id="custom-images"> |
65 | cc7c5902 | Dimitris Moraitis | <!-- custom images -->
|
66 | cc7c5902 | Dimitris Moraitis | </ul>
|
67 | cc7c5902 | Dimitris Moraitis | </div>
|
68 | 94adeabb | Mike Muzurakis | <hr class="bottomruler" /> |
69 | cf0eb36b | Markos Gogoulos | <button type="button" class="prev" id="cancel">{% trans "Cancel" %}</button> |
70 | 94adeabb | Mike Muzurakis | <button type="button" class="next right">{% trans "Next" %}</button> |
71 | cc7c5902 | Dimitris Moraitis | </div>
|
72 | cc7c5902 | Dimitris Moraitis | <div class="page"> |
73 | 94adeabb | Mike Muzurakis | <h2>{% trans "Select CPUs, RAM and Disk Size" %}</h2> |
74 | 94adeabb | Mike Muzurakis | <hr class="topruler" /> |
75 | cc7c5902 | Dimitris Moraitis | <ul>
|
76 | 94adeabb | Mike Muzurakis | <li id="machinetype"> |
77 | c376783b | Markos Gogoulos | <div class="machine-type"> |
78 | 94adeabb | Mike Muzurakis | <label for="small" id="small"> |
79 | c376783b | Markos Gogoulos | <input type="radio" id="small" name="machine-type" value="small" checked="true" /> |
80 | afa2ebd2 | Mike Muzurakis | <span class="typebody" id="small-body">{% trans "small" %}</span> |
81 | cc7c5902 | Dimitris Moraitis | </label>
|
82 | cc7c5902 | Dimitris Moraitis | </div>
|
83 | c376783b | Markos Gogoulos | <div class="machine-type"> |
84 | 94adeabb | Mike Muzurakis | <label for="medium" id="medium"> |
85 | c376783b | Markos Gogoulos | <input type="radio" id="medium" name="machine-type" value="medium" /> |
86 | afa2ebd2 | Mike Muzurakis | <span class="typebody" id="medium-body">{% trans "medium" %}</span> |
87 | cc7c5902 | Dimitris Moraitis | </label>
|
88 | cc7c5902 | Dimitris Moraitis | </div>
|
89 | c376783b | Markos Gogoulos | <div class="machine-type"> |
90 | 94adeabb | Mike Muzurakis | <label for="large" id="large"> |
91 | c376783b | Markos Gogoulos | <input type="radio" id="large" name="machine-type" value="large" /> |
92 | afa2ebd2 | Mike Muzurakis | <span class="typebody" id="large-body">{% trans "large" %}</span> |
93 | cc7c5902 | Dimitris Moraitis | </label>
|
94 | cc7c5902 | Dimitris Moraitis | </div>
|
95 | c376783b | Markos Gogoulos | <div class="machine-type"> |
96 | 94adeabb | Mike Muzurakis | <label for="custom" id="custom"> |
97 | c376783b | Markos Gogoulos | <input type="radio" name="machine-type" id="custom" value="large" /> |
98 | afa2ebd2 | Mike Muzurakis | <span class="typebody" id="custom-body">{% trans "custom" %}</span> |
99 | cc7c5902 | Dimitris Moraitis | </label>
|
100 | cc7c5902 | Dimitris Moraitis | </div>
|
101 | cc7c5902 | Dimitris Moraitis | </li>
|
102 | 94adeabb | Mike Muzurakis | <div id="page2-container"> |
103 | 94adeabb | Mike Muzurakis | <li class="slider-container"> |
104 | 94adeabb | Mike Muzurakis | <label><strong class="sliders">CPUs</strong></label> |
105 | 94adeabb | Mike Muzurakis | <input type="range" id="cpu" style="display:none" /> |
106 | 94adeabb | Mike Muzurakis | <input type="text" class="range" id="cpu-indicator" /> |
107 | 94adeabb | Mike Muzurakis | <span class="units">cores</span> |
108 | 94adeabb | Mike Muzurakis | </li>
|
109 | 94adeabb | Mike Muzurakis | <li class="slider-container"> |
110 | 94adeabb | Mike Muzurakis | <label><strong class="sliders">RAM</strong></label> |
111 | 94adeabb | Mike Muzurakis | <input type="range" id="ram" style="display:none" /> |
112 | 94adeabb | Mike Muzurakis | <input type="text" class="range" id="ram-indicator" /> |
113 | 94adeabb | Mike Muzurakis | <span class="units">MB</span> |
114 | 94adeabb | Mike Muzurakis | </li>
|
115 | 94adeabb | Mike Muzurakis | <li class="slider-container"> |
116 | 94adeabb | Mike Muzurakis | <label><strong class="sliders">Size</strong></label> |
117 | 94adeabb | Mike Muzurakis | <input type="range" id="storage" style="display:none" /> |
118 | 94adeabb | Mike Muzurakis | <input type="text" class="range" id="storage-indicator" /> |
119 | 94adeabb | Mike Muzurakis | <span class="units">GB</span> |
120 | 94adeabb | Mike Muzurakis | </li>
|
121 | 94adeabb | Mike Muzurakis | <li>
|
122 | 94adeabb | Mike Muzurakis | <div class="cost"> |
123 | 99721d83 | Mike Muzurakis | <span> {% trans "Your wallet:" %} 10,000 Credits </span> | <span>{% trans "This setup will cost you:" %}<input type="text" id="credits-indicator" value="20" class="range" disabled="disabled" /> {% trans "C/hour" %}</span> |
124 | 94adeabb | Mike Muzurakis | </div>
|
125 | 94adeabb | Mike Muzurakis | </li>
|
126 | 94adeabb | Mike Muzurakis | </div>
|
127 | cc7c5902 | Dimitris Moraitis | </ul>
|
128 | 94adeabb | Mike Muzurakis | <hr class="bottomruler" /> |
129 | 94adeabb | Mike Muzurakis | <button type="button" class="prev">{% trans "Back" %}</button> |
130 | 94adeabb | Mike Muzurakis | <button type="button" class="next right">{% trans "Next" %}</button> |
131 | cc7c5902 | Dimitris Moraitis | </div>
|
132 | cc7c5902 | Dimitris Moraitis | <div class="page"> |
133 | cf0eb36b | Markos Gogoulos | <h2>{% trans "Confirm your settings" %}</h2> |
134 | 94adeabb | Mike Muzurakis | <hr class="topruler" /> |
135 | 94adeabb | Mike Muzurakis | <ul id="page3-container"> |
136 | afa2ebd2 | Mike Muzurakis | <li class="required" id="label-name"> |
137 | cc7c5902 | Dimitris Moraitis | <label>
|
138 | 94adeabb | Mike Muzurakis | <strong>Name:</strong> |
139 | cae67343 | Mike Muzurakis | <input type="text" class="text" name="machine_name" id="name" value="My Ubuntu 10.04 x86_64 server"/> |
140 | cc7c5902 | Dimitris Moraitis | </label>
|
141 | cc7c5902 | Dimitris Moraitis | </li>
|
142 | cc7c5902 | Dimitris Moraitis | <li>
|
143 | 94adeabb | Mike Muzurakis | <span>{% trans "Image:" %}</span> <span id="machine_image-label">Ubuntu 10.04 x86_64 server</span> |
144 | cc7c5902 | Dimitris Moraitis | </li>
|
145 | cc7c5902 | Dimitris Moraitis | <li>
|
146 | 94adeabb | Mike Muzurakis | <span>{% trans "CPUs:" %}</span> <span id="machine_cpu-label">2</span> <span>{% trans "cores" %}</span> |
147 | cc7c5902 | Dimitris Moraitis | </li>
|
148 | cc7c5902 | Dimitris Moraitis | <li>
|
149 | 94adeabb | Mike Muzurakis | <span>{% trans "RAM:" %}</span> <span id="machine_ram-label">1024</span><span>MB</span> |
150 | cc7c5902 | Dimitris Moraitis | </li>
|
151 | cc7c5902 | Dimitris Moraitis | <li>
|
152 | 94adeabb | Mike Muzurakis | <span>{% trans "System Disk:" %}</span> <span id="machine_storage-label">10</span><span>GB</span> |
153 | cc7c5902 | Dimitris Moraitis | </li>
|
154 | cc7c5902 | Dimitris Moraitis | <li>
|
155 | 94adeabb | Mike Muzurakis | <span>{% trans "Cost per Hour:" %}</span> <span>40 {% trans "credits" %}</span> |
156 | cc7c5902 | Dimitris Moraitis | </li>
|
157 | cc7c5902 | Dimitris Moraitis | <li>
|
158 | 94adeabb | Mike Muzurakis | <span>{% trans "Credits in Wallet:" %}</span> <span>10.000</span> |
159 | cc7c5902 | Dimitris Moraitis | </li>
|
160 | cc7c5902 | Dimitris Moraitis | </ul>
|
161 | 94adeabb | Mike Muzurakis | <hr class="bottomruler" /> |
162 | 94adeabb | Mike Muzurakis | <button type="button" class="prev">{% trans "Back" %}</button> |
163 | cf0eb36b | Markos Gogoulos | <button type="button" class="next right" id="start">{% trans "Create VM" %}</button> |
164 | cc7c5902 | Dimitris Moraitis | </div>
|
165 | cc7c5902 | Dimitris Moraitis | </div>
|
166 | cc7c5902 | Dimitris Moraitis | </div>
|
167 | cc7c5902 | Dimitris Moraitis | </form>
|
168 | cc7c5902 | Dimitris Moraitis | |
169 | 339712cb | Christodoulos Psaltis | <!-- base notification for error/success reporting -->
|
170 | f58ec963 | Christodoulos Psaltis | <a id="notification" rel="#error-success" href="#"></a> |
171 | d165dbb4 | Christodoulos Psaltis | |
172 | f58ec963 | Christodoulos Psaltis | <div class="modal" id="error-success"> |
173 | f58ec963 | Christodoulos Psaltis | <h3>{% trans "Error!/Success!" %}</h3> |
174 | 038383b1 | Dimitris Moraitis | <div><p>{% trans "More details about the result"%}</p></div> |
175 | cc7c5902 | Dimitris Moraitis | </div>
|
176 | cc7c5902 | Dimitris Moraitis | |
177 | d165dbb4 | Christodoulos Psaltis | |
178 | 339712cb | Christodoulos Psaltis | <a id="meta-editor-1" rel="#editor-1" href="#"></a> |
179 | 339712cb | Christodoulos Psaltis | |
180 | 295800ec | Christodoulos Psaltis | <div class="meta-modal" id="editor-1"> |
181 | a7ccb6f9 | Christodoulos Psaltis | <div class='container'> |
182 | a7ccb6f9 | Christodoulos Psaltis | <h3>
|
183 | a7ccb6f9 | Christodoulos Psaltis | <label>{% trans "Metadata for machine:" %}</label> |
184 | a7ccb6f9 | Christodoulos Psaltis | <span></span> |
185 | a7ccb6f9 | Christodoulos Psaltis | </h3>
|
186 | a7ccb6f9 | Christodoulos Psaltis | <hr class="topruler" /> |
187 | a7ccb6f9 | Christodoulos Psaltis | <hr class="fatruler" /> |
188 | a7ccb6f9 | Christodoulos Psaltis | <div class="content"> |
189 | a7ccb6f9 | Christodoulos Psaltis | <ul class="meta-template" style="display:none"> |
190 | a7ccb6f9 | Christodoulos Psaltis | <li>
|
191 | a7ccb6f9 | Christodoulos Psaltis | <label>{% trans "Metadata key" %}</label> |
192 | a7ccb6f9 | Christodoulos Psaltis | <button type="button" class="remove">{% trans "remove x" %}</button> |
193 | a7ccb6f9 | Christodoulos Psaltis | <hr class="meta-separator"> |
194 | a7ccb6f9 | Christodoulos Psaltis | <p>{% trans "Metadata value" %}</p> |
195 | a7ccb6f9 | Christodoulos Psaltis | <button type="button" class="edit">{% trans "edit" %}</button> |
196 | a7ccb6f9 | Christodoulos Psaltis | </li>
|
197 | a7ccb6f9 | Christodoulos Psaltis | </ul>
|
198 | a7ccb6f9 | Christodoulos Psaltis | <ul class="meta-list"> |
199 | a7ccb6f9 | Christodoulos Psaltis | </ul>
|
200 | a7ccb6f9 | Christodoulos Psaltis | </div>
|
201 | 339712cb | Christodoulos Psaltis | </div>
|
202 | 339712cb | Christodoulos Psaltis | <button type="button" class="create">{% trans "Create New+" %}</button> |
203 | 0c1f14ed | Christodoulos Psaltis | <div class="bottomruler" /> |
204 | 339712cb | Christodoulos Psaltis | </div>
|
205 | 339712cb | Christodoulos Psaltis | |
206 | 339712cb | Christodoulos Psaltis | <a id="meta-editor-2" rel="#editor-2" href="#"></a> |
207 | 339712cb | Christodoulos Psaltis | |
208 | 295800ec | Christodoulos Psaltis | <div class="meta-modal" id="editor-2"> |
209 | a7ccb6f9 | Christodoulos Psaltis | <div class='container'> |
210 | a7ccb6f9 | Christodoulos Psaltis | <h3>
|
211 | a7ccb6f9 | Christodoulos Psaltis | <label>{% trans "Metadata for machine:" %}</label> |
212 | a7ccb6f9 | Christodoulos Psaltis | <span></span> |
213 | a7ccb6f9 | Christodoulos Psaltis | </h3>
|
214 | a7ccb6f9 | Christodoulos Psaltis | <hr class="topruler" /> |
215 | a7ccb6f9 | Christodoulos Psaltis | <hr class="fatruler" /> |
216 | a7ccb6f9 | Christodoulos Psaltis | <div class="content"> |
217 | a7ccb6f9 | Christodoulos Psaltis | <label class="meta-key">{% trans "Key:" %}</label> |
218 | a7ccb6f9 | Christodoulos Psaltis | <input type="text" maxlength="15" class="key" value="max 15 characters"/> |
219 | a7ccb6f9 | Christodoulos Psaltis | <hr class="meta-separator"> |
220 | a7ccb6f9 | Christodoulos Psaltis | <label class="meta-value">{% trans "Value:" %}</label> |
221 | a7ccb6f9 | Christodoulos Psaltis | <input type="text" maxlength="150" class="value" value="max 150 characters"/> |
222 | a7ccb6f9 | Christodoulos Psaltis | </div>
|
223 | 295800ec | Christodoulos Psaltis | </div>
|
224 | 67679131 | Christodoulos Psaltis | <button type="button" class="cancel">{% trans "Cancel" %}</button> |
225 | 67679131 | Christodoulos Psaltis | <button type="button" class="save">{% trans "Save" %}</button> |
226 | 0c1f14ed | Christodoulos Psaltis | <div class="bottomruler" /> |
227 | d165dbb4 | Christodoulos Psaltis | </div>
|
228 | d165dbb4 | Christodoulos Psaltis | |
229 | 42f67a2a | Dimitris Moraitis | <div id="machinesview"></div> |
230 | 42f67a2a | Dimitris Moraitis | |
231 | 267403ca | Dimitris Moraitis | <div class="confirm_multiple"> |
232 | 3d286f84 | Dimitris Moraitis | <p>{% trans "Your actions will affect" %} <span class="actionLen">XX</span> {% trans "machines" %}</p> |
233 | 2cd96cc7 | Vangelis Koukis | <button class="yes">{% trans "Confirm All" %}</button> |
234 | 2cd96cc7 | Vangelis Koukis | <button class="no">{% trans "Cancel All" %}</button> |
235 | d725fb12 | Christodoulos Psaltis | </div>
|
236 | 31343277 | Christodoulos Psaltis | |
237 | 5b147126 | Christodoulos Psaltis | <div id="machines" class="separator"></div> |
238 | 5b147126 | Christodoulos Psaltis | |
239 | cc7c5902 | Dimitris Moraitis | <script>
|
240 | afa2ebd2 | Mike Muzurakis | //add hover to labels
|
241 | afa2ebd2 | Mike Muzurakis | $('span.typebody').mouseover(function() {
|
242 | cf93419a | Mike Muzurakis | $(this).addClass('typehover');
|
243 | afa2ebd2 | Mike Muzurakis | });
|
244 | afa2ebd2 | Mike Muzurakis | $('span.typebody').mouseout(function() {
|
245 | cf93419a | Mike Muzurakis | $(this).removeClass('typehover');
|
246 | afa2ebd2 | Mike Muzurakis | });
|
247 | afa2ebd2 | Mike Muzurakis | |
248 | a64e74f0 | Markos Gogoulos | // return value from metadata key "OS", if it exists
|
249 | a64e74f0 | Markos Gogoulos | function os_icon(metadata) {
|
250 | a64e74f0 | Markos Gogoulos | if (!metadata) {
|
251 | a64e74f0 | Markos Gogoulos | return 'unknown';
|
252 | a64e74f0 | Markos Gogoulos | }
|
253 | a64e74f0 | Markos Gogoulos | |
254 | a64e74f0 | Markos Gogoulos | if (metadata.values.OS == undefined || metadata.values.OS == '') {
|
255 | a64e74f0 | Markos Gogoulos | return 'unknown';
|
256 | a64e74f0 | Markos Gogoulos | } else {
|
257 | a64e74f0 | Markos Gogoulos | return metadata.values.OS;
|
258 | a64e74f0 | Markos Gogoulos | }
|
259 | a64e74f0 | Markos Gogoulos | }
|
260 | a64e74f0 | Markos Gogoulos | |
261 | fb66080c | Dimitris Moraitis | // switch to list view
|
262 | 9b1b6f3a | Christodoulos Psaltis | $("a#list").click(function(){
|
263 | 9b1b6f3a | Christodoulos Psaltis | list_view();
|
264 | 9b1b6f3a | Christodoulos Psaltis | return false;
|
265 | 9b1b6f3a | Christodoulos Psaltis | });
|
266 | fb66080c | Dimitris Moraitis | |
267 | 9b1b6f3a | Christodoulos Psaltis | // switch to standard view
|
268 | 9b1b6f3a | Christodoulos Psaltis | $("a#standard").click(function(){
|
269 | 9b1b6f3a | Christodoulos Psaltis | standard_view();
|
270 | 9b1b6f3a | Christodoulos Psaltis | return false;
|
271 | 9b1b6f3a | Christodoulos Psaltis | });
|
272 | 38e2c5ed | Christodoulos Psaltis | |
273 | bd8b1d60 | Christodoulos Psaltis | // launch VM creation wizard
|
274 | 8fd5c3a5 | Christodoulos Psaltis | $("a#create").click(function(){
|
275 | 146b6003 | Dimitris Moraitis | // launch wizard only if images and flavors are found
|
276 | 146b6003 | Dimitris Moraitis | if (images.length > 0 && flavors.length > 0) {
|
277 | a3e418b1 | Markos Gogoulos | $("#wizard").scrollable().begin();
|
278 | a3e418b1 | Markos Gogoulos | $("#wizard").show();
|
279 | 146b6003 | Dimitris Moraitis | $('a#create').data('overlay').load()
|
280 | 146b6003 | Dimitris Moraitis | } else if (images.length == 0 ) {
|
281 | 146b6003 | Dimitris Moraitis | ajax_error('NO_IMAGES');
|
282 | 146b6003 | Dimitris Moraitis | return false;
|
283 | 146b6003 | Dimitris Moraitis | } else if (flavors.length == 0) {
|
284 | 146b6003 | Dimitris Moraitis | ajax_error('NO_FLAVORS');
|
285 | 146b6003 | Dimitris Moraitis | return false;
|
286 | 146b6003 | Dimitris Moraitis | }
|
287 | ec06b07c | Dimitris Moraitis | });
|
288 | ec06b07c | Dimitris Moraitis | |
289 | f124656b | Christodoulos Psaltis | // create wizard overlay
|
290 | f124656b | Christodoulos Psaltis | $(function() {
|
291 | 4e5d5e70 | Christodoulos Psaltis | $("a#create").overlay({
|
292 | f124656b | Christodoulos Psaltis | mask: '#000',
|
293 | f124656b | Christodoulos Psaltis | effect: 'default',
|
294 | f124656b | Christodoulos Psaltis | top: '5%',
|
295 | f124656b | Christodoulos Psaltis | oneInstance: false,
|
296 | f974b570 | Dimitris Moraitis | closeOnClick: false
|
297 | f124656b | Christodoulos Psaltis | });
|
298 | f124656b | Christodoulos Psaltis | });
|
299 | f124656b | Christodoulos Psaltis | |
300 | bd8b1d60 | Christodoulos Psaltis | // wizard
|
301 | bd8b1d60 | Christodoulos Psaltis | $(function() {
|
302 | bd8b1d60 | Christodoulos Psaltis | var root = $("#wizard").scrollable();
|
303 | bd8b1d60 | Christodoulos Psaltis | var api = root.scrollable();
|
304 | bd8b1d60 | Christodoulos Psaltis | // rangeinput with default configuration
|
305 | bd8b1d60 | Christodoulos Psaltis | // validation logic is done inside the onBeforeSeek callback
|
306 | bd8b1d60 | Christodoulos Psaltis | api.onBeforeSeek(function(event, i) {
|
307 | bd8b1d60 | Christodoulos Psaltis | // we are going 1 step backwards so no need for validation
|
308 | bd8b1d60 | Christodoulos Psaltis | if (api.getIndex() < i) {
|
309 | bd8b1d60 | Christodoulos Psaltis | // 1. get current page
|
310 | bd8b1d60 | Christodoulos Psaltis | var page = root.find(".page").eq(api.getIndex()),
|
311 | bd8b1d60 | Christodoulos Psaltis | // 2. .. and all required fields inside the page
|
312 | bd8b1d60 | Christodoulos Psaltis | inputs = page.find(".required :input").removeClass("error"),
|
313 | bd8b1d60 | Christodoulos Psaltis | // 3. .. which are empty
|
314 | bd8b1d60 | Christodoulos Psaltis | empty = inputs.filter(function() {
|
315 | bd8b1d60 | Christodoulos Psaltis | return $(this).val().replace(/\s*/g, '') == '';
|
316 | bd8b1d60 | Christodoulos Psaltis | });
|
317 | bd8b1d60 | Christodoulos Psaltis | // if there are empty fields, then
|
318 | bd8b1d60 | Christodoulos Psaltis | if (empty.length) {
|
319 | bd8b1d60 | Christodoulos Psaltis | // add a CSS class name "error" for empty & required fields
|
320 | bd8b1d60 | Christodoulos Psaltis | empty.addClass("error");
|
321 | bd8b1d60 | Christodoulos Psaltis | // cancel seeking of the scrollable by returning false
|
322 | bd8b1d60 | Christodoulos Psaltis | return false;
|
323 | bd8b1d60 | Christodoulos Psaltis | // everything is good
|
324 | bd8b1d60 | Christodoulos Psaltis | }
|
325 | 29f0a240 | Mike Muzurakis | }
|
326 | 71642965 | Dimitris Moraitis | // update confirm step
|
327 | 20fae095 | Christodoulos Psaltis | if (api.getIndex()==0) {
|
328 | 20fae095 | Christodoulos Psaltis | var image = $("input[type=radio][name=image-id]:checked");
|
329 | b335768e | Markos Gogoulos | var imageRef = image.length ? image[0].id : false
|
330 | b335768e | Markos Gogoulos | if (imageRef) {
|
331 | b335768e | Markos Gogoulos | var imageName = $("label[for=" + imageRef + "] .image-title").text();
|
332 | 20fae095 | Christodoulos Psaltis | $("#machine_image-label")[0].textContent = imageName;
|
333 | 20fae095 | Christodoulos Psaltis | $("input[type=text][name=machine_name]")[0].value = "My " + imageName + " server";
|
334 | 20fae095 | Christodoulos Psaltis | }
|
335 | 42f67a2a | Dimitris Moraitis | } else if (api.getIndex()==1) {
|
336 | 20fae095 | Christodoulos Psaltis | $("#machine_cpu-label")[0].textContent = $("#cpu-indicator")[0].value;
|
337 | 20fae095 | Christodoulos Psaltis | $("#machine_ram-label")[0].textContent = $("#ram-indicator")[0].value;
|
338 | 20fae095 | Christodoulos Psaltis | $("#machine_storage-label")[0].textContent = $("#storage-indicator")[0].value;
|
339 | 29f0a240 | Mike Muzurakis | }
|
340 | bd8b1d60 | Christodoulos Psaltis | });
|
341 | 9066781c | Mike Muzurakis | api.onSeek(function(event, i) {
|
342 | 9066781c | Mike Muzurakis | // update status bar
|
343 | 9066781c | Mike Muzurakis | $("#status li").removeClass("active").eq(i).addClass("active");
|
344 | 9066781c | Mike Muzurakis | });
|
345 | bd8b1d60 | Christodoulos Psaltis | // if tab is pressed on the next button seek to next page
|
346 | f87e79a4 | Mike Muzurakis | $(root).live('keydown', function (e) {
|
347 | f87e79a4 | Mike Muzurakis | if ( e.keyCode == 9 ){
|
348 | f87e79a4 | Mike Muzurakis | if(e.preventDefault) {
|
349 | f87e79a4 | Mike Muzurakis | e.preventDefault();
|
350 | f87e79a4 | Mike Muzurakis | }
|
351 | 29f0a240 | Mike Muzurakis | api.next();
|
352 | f87e79a4 | Mike Muzurakis | }
|
353 | bd8b1d60 | Christodoulos Psaltis | });
|
354 | 88bdf273 | Mike Muzurakis | //submit wizard by pressing enter on the name textbox
|
355 | cae67343 | Mike Muzurakis | $("#name").keypress(function (e) {
|
356 | cae67343 | Mike Muzurakis | if ((e.which && e.which == 13) || (e.keyCode && e.keyCode == 13)) {
|
357 | cae67343 | Mike Muzurakis | $('#start').click();
|
358 | cae67343 | Mike Muzurakis | return false;
|
359 | cae67343 | Mike Muzurakis | } else {
|
360 | cae67343 | Mike Muzurakis | return true;
|
361 | cae67343 | Mike Muzurakis | }
|
362 | cae67343 | Mike Muzurakis | });
|
363 | 71642965 | Dimitris Moraitis | });
|
364 | cc7c5902 | Dimitris Moraitis | |
365 | bd8b1d60 | Christodoulos Psaltis | // disable sliders in flavor selection
|
366 | cc7c5902 | Dimitris Moraitis | function disableSliders() {
|
367 | cc7c5902 | Dimitris Moraitis | $("#cpu").attr('disabled',true);
|
368 | cc7c5902 | Dimitris Moraitis | $("#ram").attr('disabled',true);
|
369 | cc7c5902 | Dimitris Moraitis | $("#storage").attr('disabled',true);
|
370 | cc7c5902 | Dimitris Moraitis | }
|
371 | cc7c5902 | Dimitris Moraitis | |
372 | afa2ebd2 | Mike Muzurakis | //update radio button when clicking on text
|
373 | afa2ebd2 | Mike Muzurakis | $("#small-body").live('click' ,function() {
|
374 | afa2ebd2 | Mike Muzurakis | $(this).parent().find("#small").click();
|
375 | afa2ebd2 | Mike Muzurakis | });
|
376 | afa2ebd2 | Mike Muzurakis | $("#medium-body").live('click' ,function() {
|
377 | afa2ebd2 | Mike Muzurakis | $(this).parent().find("#medium").click();
|
378 | afa2ebd2 | Mike Muzurakis | });
|
379 | afa2ebd2 | Mike Muzurakis | $("#large-body").live('click' ,function() {
|
380 | afa2ebd2 | Mike Muzurakis | $(this).parent().find("#large").click();
|
381 | afa2ebd2 | Mike Muzurakis | });
|
382 | afa2ebd2 | Mike Muzurakis | $("#custom-body").live('click' ,function() {
|
383 | afa2ebd2 | Mike Muzurakis | $(this).parent().find("#custom").click();
|
384 | afa2ebd2 | Mike Muzurakis | });
|
385 | afa2ebd2 | Mike Muzurakis | |
386 | afa2ebd2 | Mike Muzurakis | //select image div on radio button select
|
387 | afa2ebd2 | Mike Muzurakis | $('.radio').live('click' ,function() {
|
388 | afa2ebd2 | Mike Muzurakis | $(this).parents("div").find(".image").removeClass('selecteddiv');
|
389 | afa2ebd2 | Mike Muzurakis | if($(this).is(':checked')) {
|
390 | afa2ebd2 | Mike Muzurakis | $(this).parent().addClass('selecteddiv');
|
391 | afa2ebd2 | Mike Muzurakis | }
|
392 | 9066781c | Mike Muzurakis |
|
393 | afa2ebd2 | Mike Muzurakis | });
|
394 | afa2ebd2 | Mike Muzurakis | |
395 | 695e1b21 | Dimitris Moraitis | // validate cpu input box
|
396 | 695e1b21 | Dimitris Moraitis | $("#cpu-indicator").live('change',function(){
|
397 | 695e1b21 | Dimitris Moraitis | var v = Number(this.value);
|
398 | 695e1b21 | Dimitris Moraitis | var i = cpus.indexOf(v);
|
399 | 695e1b21 | Dimitris Moraitis | if (isNaN(v)) {
|
400 | 695e1b21 | Dimitris Moraitis | $(this).value = cpus[0];
|
401 | 695e1b21 | Dimitris Moraitis | $("#cpu").data('rangeinput').setValue(0);
|
402 | 695e1b21 | Dimitris Moraitis | } else if (i == -1) {
|
403 | 695e1b21 | Dimitris Moraitis | for (var j=0; j < cpus.length; j++)
|
404 | 695e1b21 | Dimitris Moraitis | if (v<cpus[j])
|
405 | 695e1b21 | Dimitris Moraitis | break;
|
406 | 695e1b21 | Dimitris Moraitis | $("#cpu").data('rangeinput').setValue(j);
|
407 | 695e1b21 | Dimitris Moraitis | } else {
|
408 | 695e1b21 | Dimitris Moraitis | $("#cpu").data('rangeinput').setValue(i);
|
409 | 695e1b21 | Dimitris Moraitis | }
|
410 | 695e1b21 | Dimitris Moraitis | return false;
|
411 | 695e1b21 | Dimitris Moraitis | });
|
412 | 695e1b21 | Dimitris Moraitis | |
413 | 695e1b21 | Dimitris Moraitis | // validate ram input box
|
414 | 695e1b21 | Dimitris Moraitis | $("#ram-indicator").live('change',function(){
|
415 | 695e1b21 | Dimitris Moraitis | var v = Number(this.value);
|
416 | 695e1b21 | Dimitris Moraitis | var i = ram.indexOf(v);
|
417 | 695e1b21 | Dimitris Moraitis | if (isNaN(v)) {
|
418 | 695e1b21 | Dimitris Moraitis | $(this).value = cpus[0];
|
419 | 695e1b21 | Dimitris Moraitis | $("#ram").data('rangeinput').setValue(0);
|
420 | 695e1b21 | Dimitris Moraitis | } else if (i == -1) {
|
421 | 695e1b21 | Dimitris Moraitis | for (var j=0; j < ram.length; j++)
|
422 | 695e1b21 | Dimitris Moraitis | if (v<ram[j])
|
423 | 695e1b21 | Dimitris Moraitis | break;
|
424 | 695e1b21 | Dimitris Moraitis | $("#ram").data('rangeinput').setValue(j);
|
425 | 695e1b21 | Dimitris Moraitis | } else {
|
426 | 695e1b21 | Dimitris Moraitis | $("#ram").data('rangeinput').setValue(i);
|
427 | 695e1b21 | Dimitris Moraitis | }
|
428 | 695e1b21 | Dimitris Moraitis | return false;
|
429 | 695e1b21 | Dimitris Moraitis | });
|
430 | 695e1b21 | Dimitris Moraitis | |
431 | 695e1b21 | Dimitris Moraitis | |
432 | 695e1b21 | Dimitris Moraitis | // validate storage input box
|
433 | 695e1b21 | Dimitris Moraitis | $("#storage-indicator").live('change',function(){
|
434 | 695e1b21 | Dimitris Moraitis | var v = Number(this.value);
|
435 | 695e1b21 | Dimitris Moraitis | var i = disks.indexOf(v);
|
436 | 695e1b21 | Dimitris Moraitis | if (isNaN(v)) {
|
437 | 695e1b21 | Dimitris Moraitis | $(this).value = disks[0];
|
438 | 695e1b21 | Dimitris Moraitis | $("#storage").data('rangeinput').setValue(0);
|
439 | 695e1b21 | Dimitris Moraitis | } else if (i == -1) {
|
440 | 695e1b21 | Dimitris Moraitis | for (var j=0; j < disks.length; j++)
|
441 | 695e1b21 | Dimitris Moraitis | if (v<disks[j])
|
442 | 695e1b21 | Dimitris Moraitis | break;
|
443 | 695e1b21 | Dimitris Moraitis | $("#storage").data('rangeinput').setValue(j);
|
444 | 695e1b21 | Dimitris Moraitis | } else {
|
445 | 695e1b21 | Dimitris Moraitis | $("#storage").data('rangeinput').setValue(i);
|
446 | 695e1b21 | Dimitris Moraitis | }
|
447 | 695e1b21 | Dimitris Moraitis | return false;
|
448 | 695e1b21 | Dimitris Moraitis | });
|
449 | 695e1b21 | Dimitris Moraitis | |
450 | bd8b1d60 | Christodoulos Psaltis | // selecting the small size
|
451 | 8fd5c3a5 | Christodoulos Psaltis | $("#small").click(function(){
|
452 | 71642965 | Dimitris Moraitis | $("#cpu").data('rangeinput').setValue(0);
|
453 | 71642965 | Dimitris Moraitis | $("#ram").data('rangeinput').setValue(0);
|
454 | 71642965 | Dimitris Moraitis | $("#storage").data('rangeinput').setValue(0);
|
455 | 68a49035 | Dimitris Moraitis | $("#cpu-indicator")[0].value = cpus[0];
|
456 | 68a49035 | Dimitris Moraitis | $("#ram-indicator")[0].value = ram[0];
|
457 | 68a49035 | Dimitris Moraitis | $("#storage-indicator")[0].value = disks[0];
|
458 | 94adeabb | Mike Muzurakis | $("#small").addClass("active");
|
459 | 94adeabb | Mike Muzurakis | $("#medium").removeClass("active");
|
460 | 94adeabb | Mike Muzurakis | $("#large").removeClass("active");
|
461 | 94adeabb | Mike Muzurakis | $("#custom").removeClass("active");
|
462 | cc7c5902 | Dimitris Moraitis | });
|
463 | cc7c5902 | Dimitris Moraitis | |
464 | bd8b1d60 | Christodoulos Psaltis | // selecting the medium size
|
465 | 8fd5c3a5 | Christodoulos Psaltis | $("#medium").click(function(){
|
466 | 71642965 | Dimitris Moraitis | $("#cpu").data('rangeinput').setValue(1);
|
467 | 71642965 | Dimitris Moraitis | $("#ram").data('rangeinput').setValue(1);
|
468 | 71642965 | Dimitris Moraitis | $("#storage").data('rangeinput').setValue(1);
|
469 | 68a49035 | Dimitris Moraitis | $("#cpu-indicator")[0].value = cpus[1];
|
470 | 68a49035 | Dimitris Moraitis | $("#ram-indicator")[0].value = ram[1];
|
471 | 94adeabb | Mike Muzurakis | $("#storage-indicator")[0].value = disks[1];
|
472 | 94adeabb | Mike Muzurakis | $("#medium").addClass("active");
|
473 | 94adeabb | Mike Muzurakis | $("#small").removeClass("active");
|
474 | 94adeabb | Mike Muzurakis | $("#large").removeClass("active");
|
475 | 94adeabb | Mike Muzurakis | $("#custom").removeClass("active");
|
476 | cc7c5902 | Dimitris Moraitis | });
|
477 | cc7c5902 | Dimitris Moraitis | |
478 | bd8b1d60 | Christodoulos Psaltis | // selecting the large size
|
479 | 8fd5c3a5 | Christodoulos Psaltis | $("#large").click(function(){
|
480 | 71642965 | Dimitris Moraitis | $("#cpu").data('rangeinput').setValue(2);
|
481 | 71642965 | Dimitris Moraitis | $("#ram").data('rangeinput').setValue(2);
|
482 | 71642965 | Dimitris Moraitis | $("#storage").data('rangeinput').setValue(2);
|
483 | 68a49035 | Dimitris Moraitis | $("#cpu-indicator")[0].value = cpus[2];
|
484 | 68a49035 | Dimitris Moraitis | $("#ram-indicator")[0].value = ram[2];
|
485 | 94adeabb | Mike Muzurakis | $("#storage-indicator")[0].value = disks[2];
|
486 | 94adeabb | Mike Muzurakis | $("#large").addClass("active");
|
487 | 94adeabb | Mike Muzurakis | $("#medium").removeClass("active");
|
488 | 94adeabb | Mike Muzurakis | $("#small").removeClass("active");
|
489 | 94adeabb | Mike Muzurakis | $("#custom").removeClass("active");
|
490 | cc7c5902 | Dimitris Moraitis | });
|
491 | cc7c5902 | Dimitris Moraitis | |
492 | bd8b1d60 | Christodoulos Psaltis | // selecting the custom flavor enables the sliders
|
493 | 8fd5c3a5 | Christodoulos Psaltis | $("#custom").click(function(){
|
494 | bd8b1d60 | Christodoulos Psaltis | $("#cpu").attr('disabled',false);
|
495 | bd8b1d60 | Christodoulos Psaltis | $("#ram").attr('disabled',false);
|
496 | bd8b1d60 | Christodoulos Psaltis | $("#storage").attr('disabled',false);
|
497 | bd8b1d60 | Christodoulos Psaltis | $("strong.sliders").style = 'color: #778899;';
|
498 | 9cb2ca3b | Mike Muzurakis | $("#custom input").attr('checked', 'checked');
|
499 | 94adeabb | Mike Muzurakis | $("#custom").addClass("active");
|
500 | 94adeabb | Mike Muzurakis | $("#medium").removeClass("active");
|
501 | 94adeabb | Mike Muzurakis | $("#large").removeClass("active");
|
502 | 94adeabb | Mike Muzurakis | $("#small").removeClass("active");
|
503 | bd8b1d60 | Christodoulos Psaltis | });
|
504 | bd8b1d60 | Christodoulos Psaltis | |
505 | 99721d83 | Mike Muzurakis | //when textbox gains focus, add selection in css
|
506 | 99721d83 | Mike Muzurakis | $('#cpu-indicator').focus(function() {
|
507 | 99721d83 | Mike Muzurakis | $(this).addClass('selectedrange');
|
508 | 99721d83 | Mike Muzurakis | });
|
509 | 99721d83 | Mike Muzurakis | $('#ram-indicator').focus(function() {
|
510 | 99721d83 | Mike Muzurakis | $(this).addClass('selectedrange');
|
511 | 99721d83 | Mike Muzurakis | });
|
512 | 99721d83 | Mike Muzurakis | $('#storage-indicator').focus(function() {
|
513 | 99721d83 | Mike Muzurakis | $(this).addClass('selectedrange');
|
514 | 99721d83 | Mike Muzurakis | });
|
515 | 99721d83 | Mike Muzurakis | |
516 | 99721d83 | Mike Muzurakis | //when textbox loses focus, clear selection in css
|
517 | 99721d83 | Mike Muzurakis | $('#cpu-indicator').blur(function() {
|
518 | 99721d83 | Mike Muzurakis | $(this).removeClass('selectedrange');
|
519 | 99721d83 | Mike Muzurakis | });
|
520 | 99721d83 | Mike Muzurakis | $('#ram-indicator').blur(function() {
|
521 | 99721d83 | Mike Muzurakis | $(this).removeClass('selectedrange');
|
522 | 99721d83 | Mike Muzurakis | });
|
523 | 99721d83 | Mike Muzurakis | $('#storage-indicator').blur(function() {
|
524 | 99721d83 | Mike Muzurakis | $(this).removeClass('selectedrange');
|
525 | 99721d83 | Mike Muzurakis | });
|
526 | 99721d83 | Mike Muzurakis | |
527 | bd8b1d60 | Christodoulos Psaltis | // exit the wizard
|
528 | 8fd5c3a5 | Christodoulos Psaltis | $("#cancel").click(function(){
|
529 | b6270d15 | Christodoulos Psaltis | $("a#create").overlay().close();
|
530 | cc7c5902 | Dimitris Moraitis | });
|
531 | cc7c5902 | Dimitris Moraitis | |
532 | bd8b1d60 | Christodoulos Psaltis | // starting a new VM through the wizard
|
533 | 8fd5c3a5 | Christodoulos Psaltis | $("#start").click(function(){
|
534 | b335768e | Markos Gogoulos | var imageRef = $('input[type=radio][name=image-id]:checked')[0].id.replace('img-radio-','');
|
535 | b335768e | Markos Gogoulos | var flavorRef = identify_flavor($("#cpu-indicator")[0].value, $("#storage-indicator")[0].value, $("#ram-indicator")[0].value);
|
536 | 20fae095 | Christodoulos Psaltis | var machineName = $('input[name=machine_name]')[0].value;
|
537 | 5d3c8f3f | Mike Muzurakis | if (jQuery.trim(machineName) == ''){
|
538 | 5d3c8f3f | Mike Muzurakis | return false;
|
539 | 5d3c8f3f | Mike Muzurakis | }
|
540 | 0971fa71 | Markos Gogoulos | create_vm(machineName, imageRef, flavorRef);
|
541 | 71642965 | Dimitris Moraitis | |
542 | 42f67a2a | Dimitris Moraitis | $('a#create').data('overlay').close();
|
543 | 2f86374f | Dimitris Moraitis | |
544 | 2f86374f | Dimitris Moraitis | try{console.warn('creating ' + $("input[name=machine_name]")[0].value)} catch(err){}
|
545 | 285a1fa8 | Dimitris Moraitis | |
546 | ec06b07c | Dimitris Moraitis | $("#wizard").hide();
|
547 | cc7c5902 | Dimitris Moraitis | });
|
548 | cc7c5902 | Dimitris Moraitis | |
549 | c902e956 | Christodoulos Psaltis | // confirm all actions
|
550 | c902e956 | Christodoulos Psaltis | $("div.confirm_multiple .yes").live('click', function(){
|
551 | c902e956 | Christodoulos Psaltis | while(pending_actions.length > 0){ // if there is a pending action for this server execute it
|
552 | c902e956 | Christodoulos Psaltis | action = pending_actions.pop(); // extract action
|
553 | c902e956 | Christodoulos Psaltis | var serverID = action[1];
|
554 | c902e956 | Christodoulos Psaltis | if ($.cookie("list") != '1') { // standard view
|
555 | c902e956 | Christodoulos Psaltis | $('#' + serverID + ' .selected').removeClass('selected');
|
556 | c902e956 | Christodoulos Psaltis | $('#' + serverID + ' .display').removeClass('display');
|
557 | c902e956 | Christodoulos Psaltis | if (action[0] == shutdown) {
|
558 | c902e956 | Christodoulos Psaltis | $('#' + serverID + ' .status').text('Shutting down');
|
559 | c902e956 | Christodoulos Psaltis | } else if (action[0] == start) {
|
560 | c902e956 | Christodoulos Psaltis | $('#' + serverID + ' .status').text('Starting');
|
561 | c902e956 | Christodoulos Psaltis | } else if (action[0] == reboot) {
|
562 | c902e956 | Christodoulos Psaltis | $('#' + serverID + ' .status').text('Rebooting');
|
563 | c902e956 | Christodoulos Psaltis | } else if (action[0] == destroy) {
|
564 | c902e956 | Christodoulos Psaltis | $('#' + serverID + ' .status').text('Destroying');
|
565 | c902e956 | Christodoulos Psaltis | }
|
566 | c902e956 | Christodoulos Psaltis | $('#' + serverID + ' .spinner').show();
|
567 | c902e956 | Christodoulos Psaltis | } else { // list view
|
568 | c902e956 | Christodoulos Psaltis | osIcon = $('#'+serverID).parent().parent().find('.list-logo');
|
569 | c902e956 | Christodoulos Psaltis | osIcon.attr('os',osIcon.attr('src'));
|
570 | c902e956 | Christodoulos Psaltis | osIcon.attr('src','static/progress.gif');
|
571 | c902e956 | Christodoulos Psaltis | if (action[0] == shutdown) {
|
572 | c902e956 | Christodoulos Psaltis | $('#' + serverID).parent().parent().find('span.status').text('Shutting down');
|
573 | c902e956 | Christodoulos Psaltis | } else if (action[0] == start) {
|
574 | c902e956 | Christodoulos Psaltis | $('#' + serverID).parent().parent().find('span.status').text('Starting');
|
575 | c902e956 | Christodoulos Psaltis | } else if (action[0] == reboot) {
|
576 | c902e956 | Christodoulos Psaltis | $('#' + serverID).parent().parent().find('span.status').text('Rebooting');
|
577 | c902e956 | Christodoulos Psaltis | } else if (action[0] == destroy) {
|
578 | c902e956 | Christodoulos Psaltis | $('#' + serverID).parent().parent().find('span.status').text('Destroying');
|
579 | c902e956 | Christodoulos Psaltis | }
|
580 | c902e956 | Christodoulos Psaltis | }
|
581 | c902e956 | Christodoulos Psaltis | action[0]([serverID]); // execute action
|
582 | c902e956 | Christodoulos Psaltis | }
|
583 | c902e956 | Christodoulos Psaltis | update_confirmations();
|
584 | c902e956 | Christodoulos Psaltis | });
|
585 | c902e956 | Christodoulos Psaltis | |
586 | c902e956 | Christodoulos Psaltis | // cancel all actions
|
587 | c902e956 | Christodoulos Psaltis | $("div.confirm_multiple .no").live('click', function(){
|
588 | c902e956 | Christodoulos Psaltis | pending_actions = [];
|
589 | c902e956 | Christodoulos Psaltis | $('.machine .selected').removeClass('selected');
|
590 | c902e956 | Christodoulos Psaltis | $('.machine .display').removeClass('display');
|
591 | c902e956 | Christodoulos Psaltis | update_confirmations();
|
592 | c902e956 | Christodoulos Psaltis | });
|
593 | c902e956 | Christodoulos Psaltis | |
594 | c902e956 | Christodoulos Psaltis | // bring up edit metadata overlay
|
595 | 4629cc1f | Christodoulos Psaltis | function editMetadata() {
|
596 | c902e956 | Christodoulos Psaltis | var triggers = $("a#meta-editor-1").overlay({
|
597 | c902e956 | Christodoulos Psaltis | // some mask tweaks suitable for modal dialogs
|
598 | c902e956 | Christodoulos Psaltis | mask: '#000',
|
599 | c902e956 | Christodoulos Psaltis | effect: 'default',
|
600 | c902e956 | Christodoulos Psaltis | top: '10%',
|
601 | c902e956 | Christodoulos Psaltis | closeOnClick: false,
|
602 | c902e956 | Christodoulos Psaltis | oneInstance: false,
|
603 | 08cc1924 | Christodoulos Psaltis | load: false,
|
604 | 08cc1924 | Christodoulos Psaltis | onClose: function() {
|
605 | 08cc1924 | Christodoulos Psaltis | // remove all entries so they won't be preloaded next time you open the dialog
|
606 | 08cc1924 | Christodoulos Psaltis | $("#editor-1 div.content ul.meta-list").empty();
|
607 | 08cc1924 | Christodoulos Psaltis | },
|
608 | 08cc1924 | Christodoulos Psaltis | onLoad: function() {
|
609 | a7ccb6f9 | Christodoulos Psaltis | // this is a workaround for the mask not appearing problem
|
610 | 08cc1924 | Christodoulos Psaltis | $("#editor-1").expose();
|
611 | 08cc1924 | Christodoulos Psaltis | }
|
612 | c902e956 | Christodoulos Psaltis | });
|
613 | 5186eb04 | Christodoulos Psaltis | // get metadata for current server and fill the dialog
|
614 | 5186eb04 | Christodoulos Psaltis | serverID = $("#editor-1 h3").attr('id');
|
615 | 5186eb04 | Christodoulos Psaltis | get_metadata(serverID);
|
616 | c902e956 | Christodoulos Psaltis | $("a#meta-editor-1").data('overlay').load();
|
617 | c902e956 | Christodoulos Psaltis | return false;
|
618 | c902e956 | Christodoulos Psaltis | }
|
619 | c902e956 | Christodoulos Psaltis | |
620 | c902e956 | Christodoulos Psaltis | // bring up add metadata overlay
|
621 | 4629cc1f | Christodoulos Psaltis | function addMetadata() {
|
622 | c902e956 | Christodoulos Psaltis | var triggers = $("a#meta-editor-2").overlay({
|
623 | c902e956 | Christodoulos Psaltis | // some mask tweaks suitable for modal dialogs
|
624 | c902e956 | Christodoulos Psaltis | mask: '#000',
|
625 | c902e956 | Christodoulos Psaltis | effect: 'default',
|
626 | c902e956 | Christodoulos Psaltis | top: '10%',
|
627 | c902e956 | Christodoulos Psaltis | closeOnClick: false,
|
628 | c902e956 | Christodoulos Psaltis | oneInstance: false,
|
629 | 08cc1924 | Christodoulos Psaltis | load: false,
|
630 | 08cc1924 | Christodoulos Psaltis | onLoad: function() {
|
631 | a7ccb6f9 | Christodoulos Psaltis | // this is a workaround for the mask not appearing problem
|
632 | 08cc1924 | Christodoulos Psaltis | $("#editor-2").expose();
|
633 | 08cc1924 | Christodoulos Psaltis | }
|
634 | c902e956 | Christodoulos Psaltis | });
|
635 | c902e956 | Christodoulos Psaltis | $("a#meta-editor-2").data('overlay').load();
|
636 | c902e956 | Christodoulos Psaltis | return false;
|
637 | c902e956 | Christodoulos Psaltis | }
|
638 | c902e956 | Christodoulos Psaltis | |
639 | c902e956 | Christodoulos Psaltis | // intercept click on create button in metadata edit dialog
|
640 | c902e956 | Christodoulos Psaltis | $('#editor-1.meta-modal button.create').click( function(){
|
641 | 1b3857ab | Christodoulos Psaltis | // close edit metadata and open add metadata dialog
|
642 | c902e956 | Christodoulos Psaltis | $('a#meta-editor-1').data('overlay').close();
|
643 | 4629cc1f | Christodoulos Psaltis | addMetadata();
|
644 | c902e956 | Christodoulos Psaltis | });
|
645 | c902e956 | Christodoulos Psaltis | |
646 | c902e956 | Christodoulos Psaltis | // intercept click on remove button in metadata edit dialog
|
647 | 1b3857ab | Christodoulos Psaltis | $('#editor-1.meta-modal button.remove').live('click', function() {
|
648 | 1b3857ab | Christodoulos Psaltis | // get the server id and meta key needed for the ajax call
|
649 | 71ecd0bb | Christodoulos Psaltis | var serverID = $(this).closest('div.container').children('h3').attr('id');
|
650 | 71ecd0bb | Christodoulos Psaltis | var meta_key = $(this).parent().find('label').text();
|
651 | 1b3857ab | Christodoulos Psaltis | // make the ajax call and list the new GET results
|
652 | 1b3857ab | Christodoulos Psaltis | delete_metadata(serverID, meta_key);
|
653 | 0943cc77 | Markos Gogoulos | return false;
|
654 | c902e956 | Christodoulos Psaltis | });
|
655 | c902e956 | Christodoulos Psaltis | |
656 | c902e956 | Christodoulos Psaltis | // intercept click on edit button in metadata edit dialog
|
657 | 1b3857ab | Christodoulos Psaltis | $('#editor-1.meta-modal button.edit').click( function(){
|
658 | c902e956 | Christodoulos Psaltis | // inline editing of selected key-value pair
|
659 | c902e956 | Christodoulos Psaltis | // on submission ajax call from updating
|
660 | c902e956 | Christodoulos Psaltis | // on success update the overlay
|
661 | c902e956 | Christodoulos Psaltis | // TODO
|
662 | c902e956 | Christodoulos Psaltis | });
|
663 | c902e956 | Christodoulos Psaltis | |
664 | c902e956 | Christodoulos Psaltis | // intercept click on cancel button in metadata add dialog
|
665 | c902e956 | Christodoulos Psaltis | $('#editor-2.meta-modal button.cancel').click( function(){
|
666 | 1b3857ab | Christodoulos Psaltis | // close add metadata and open edit metadata dialog
|
667 | c902e956 | Christodoulos Psaltis | $('a#meta-editor-2').data('overlay').close();
|
668 | 4629cc1f | Christodoulos Psaltis | editMetadata();
|
669 | c902e956 | Christodoulos Psaltis | });
|
670 | c902e956 | Christodoulos Psaltis | |
671 | c902e956 | Christodoulos Psaltis | // intercept click on save button in metadata add dialog
|
672 | 1b3857ab | Christodoulos Psaltis | $('#editor-2.meta-modal button.save').live('click', function() {
|
673 | 1b3857ab | Christodoulos Psaltis | // get the server id, meta key and meta value needed for the ajax call
|
674 | 71ecd0bb | Christodoulos Psaltis | var serverID = $(this).parent().find('h3').attr('id');
|
675 | 71ecd0bb | Christodoulos Psaltis | var meta_key = $(this).parent().find('input.key').attr('value');
|
676 | 71ecd0bb | Christodoulos Psaltis | var meta_value = $(this).parent().find('input.value').attr('value');
|
677 | 1b3857ab | Christodoulos Psaltis | // make the ajax call and list the new GET results
|
678 | 1b3857ab | Christodoulos Psaltis | add_metadata(serverID, meta_key, meta_value);
|
679 | 1b3857ab | Christodoulos Psaltis | // close add metadata and open edit metadata dialog
|
680 | 1b3857ab | Christodoulos Psaltis | $('a#meta-editor-2').data('overlay').close();
|
681 | 1b3857ab | Christodoulos Psaltis | editMetadata();
|
682 | 0c578a28 | Markos Gogoulos | return false;
|
683 | c902e956 | Christodoulos Psaltis | });
|
684 | c902e956 | Christodoulos Psaltis | |
685 | 5186eb04 | Christodoulos Psaltis | // update metadata in edit dialog
|
686 | dd604c16 | Christodoulos Psaltis | function list_metadata(data) {
|
687 | dd604c16 | Christodoulos Psaltis | // empty the list if it already exists
|
688 | dd604c16 | Christodoulos Psaltis | $("#editor-1 div.content ul.meta-list").empty();
|
689 | dd604c16 | Christodoulos Psaltis | // get the values to show
|
690 | 5186eb04 | Christodoulos Psaltis | meta = data.metadata.values;
|
691 | dd604c16 | Christodoulos Psaltis | // show values
|
692 | 5186eb04 | Christodoulos Psaltis | for (key in meta) {
|
693 | 5186eb04 | Christodoulos Psaltis | pair = $("ul.meta-template li").clone();
|
694 | 5186eb04 | Christodoulos Psaltis | pair.find("label").text(key);
|
695 | e54fdda9 | Markos Gogoulos | pair.find("p").text(meta[key].substring(0,25));
|
696 | 1b3857ab | Christodoulos Psaltis | pair.appendTo("#editor-1 div.content ul.meta-list").fadeIn();
|
697 | 5186eb04 | Christodoulos Psaltis | }
|
698 | 5186eb04 | Christodoulos Psaltis | }
|
699 | 5186eb04 | Christodoulos Psaltis | |
700 | bd528b3b | Christodoulos Psaltis | // basic functions executed on page load
|
701 | d134b632 | Dimitris Moraitis | if (images.length > 0) {
|
702 | d134b632 | Dimitris Moraitis | // populate image list
|
703 | d134b632 | Dimitris Moraitis | update_wizard_images();
|
704 | d134b632 | Dimitris Moraitis | }
|
705 | d134b632 | Dimitris Moraitis | if (flavors.length > 0) {
|
706 | d134b632 | Dimitris Moraitis | // configure flavors
|
707 | d134b632 | Dimitris Moraitis | update_wizard_flavors();
|
708 | d134b632 | Dimitris Moraitis | }
|
709 | bd528b3b | Christodoulos Psaltis | // create tabs for main menu
|
710 | bd528b3b | Christodoulos Psaltis | $("ul.tabs").tabs("div.panes ul");
|
711 | bd528b3b | Christodoulos Psaltis | |
712 | 8400e1a5 | Markos Gogoulos | </script> |