root / ui / templates / machines.html @ 67679131
History | View | Annotate | Download (21.6 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 | cf93419a | 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" /> {% 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 | 339712cb | Christodoulos Psaltis | <h3>
|
182 | 339712cb | Christodoulos Psaltis | <label>{% trans "Metadata for machine:" %}<label> |
183 | 339712cb | Christodoulos Psaltis | <span></span> |
184 | 339712cb | Christodoulos Psaltis | </h3>
|
185 | 339712cb | Christodoulos Psaltis | <hr class="topruler" /> |
186 | 295800ec | Christodoulos Psaltis | <hr class="fatruler" /> |
187 | 295800ec | Christodoulos Psaltis | <div class="content"> |
188 | 339712cb | Christodoulos Psaltis | <ul>
|
189 | 339712cb | Christodoulos Psaltis | <li class="meta-template"> |
190 | 339712cb | Christodoulos Psaltis | <label>{% trans "Metadata key" %}</label> |
191 | 339712cb | Christodoulos Psaltis | <button type="button" class="remove">{% trans "remove x" %}</button> |
192 | 339712cb | Christodoulos Psaltis | <hr class="meta-separator"> |
193 | 339712cb | Christodoulos Psaltis | <p>{% trans "Metadata value" %}</p> |
194 | 339712cb | Christodoulos Psaltis | <button type="button" class="edit">{% trans "edit" %}</button> |
195 | 339712cb | Christodoulos Psaltis | </li>
|
196 | 339712cb | Christodoulos Psaltis | </ul>
|
197 | 339712cb | Christodoulos Psaltis | </div>
|
198 | 339712cb | Christodoulos Psaltis | <button type="button" class="create">{% trans "Create New+" %}</button> |
199 | 0c1f14ed | Christodoulos Psaltis | <div class="bottomruler" /> |
200 | 339712cb | Christodoulos Psaltis | </div>
|
201 | 339712cb | Christodoulos Psaltis | |
202 | 339712cb | Christodoulos Psaltis | <a id="meta-editor-2" rel="#editor-2" href="#"></a> |
203 | 339712cb | Christodoulos Psaltis | |
204 | 295800ec | Christodoulos Psaltis | <div class="meta-modal" id="editor-2"> |
205 | 339712cb | Christodoulos Psaltis | <h3>
|
206 | 339712cb | Christodoulos Psaltis | <label>{% trans "Metadata for machine:" %}<label> |
207 | 339712cb | Christodoulos Psaltis | <span></span> |
208 | 339712cb | Christodoulos Psaltis | </h3>
|
209 | 339712cb | Christodoulos Psaltis | <hr class="topruler" /> |
210 | 339712cb | Christodoulos Psaltis | <hr class="fatruler" /> |
211 | 295800ec | Christodoulos Psaltis | <div class="content"> |
212 | 295800ec | Christodoulos Psaltis | <label class="meta-key">{% trans "Key:" %}</label> |
213 | 295800ec | Christodoulos Psaltis | <input type="text" maxlength="15" class="key" value="max 15 characters"/> |
214 | 295800ec | Christodoulos Psaltis | <hr class="meta-separator"> |
215 | 295800ec | Christodoulos Psaltis | <label class="meta-value">{% trans "Value:" %}</label> |
216 | 295800ec | Christodoulos Psaltis | <input type="text" maxlength="150" class="value" value="max 150 characters"/> |
217 | 295800ec | Christodoulos Psaltis | </div>
|
218 | 67679131 | Christodoulos Psaltis | <button type="button" class="cancel">{% trans "Cancel" %}</button> |
219 | 67679131 | Christodoulos Psaltis | <button type="button" class="save">{% trans "Save" %}</button> |
220 | 0c1f14ed | Christodoulos Psaltis | <div class="bottomruler" /> |
221 | d165dbb4 | Christodoulos Psaltis | </div>
|
222 | d165dbb4 | Christodoulos Psaltis | |
223 | 42f67a2a | Dimitris Moraitis | <div id="machinesview"></div> |
224 | 42f67a2a | Dimitris Moraitis | |
225 | 267403ca | Dimitris Moraitis | <div class="confirm_multiple"> |
226 | 3d286f84 | Dimitris Moraitis | <p>{% trans "Your actions will affect" %} <span class="actionLen">XX</span> {% trans "machines" %}</p> |
227 | 2cd96cc7 | Vangelis Koukis | <button class="yes">{% trans "Confirm All" %}</button> |
228 | 2cd96cc7 | Vangelis Koukis | <button class="no">{% trans "Cancel All" %}</button> |
229 | d725fb12 | Christodoulos Psaltis | </div>
|
230 | 31343277 | Christodoulos Psaltis | |
231 | 5b147126 | Christodoulos Psaltis | <div id="machines" class="separator"></div> |
232 | 5b147126 | Christodoulos Psaltis | |
233 | cc7c5902 | Dimitris Moraitis | <script>
|
234 | afa2ebd2 | Mike Muzurakis | //add hover to labels
|
235 | afa2ebd2 | Mike Muzurakis | $('span.typebody').mouseover(function() {
|
236 | cf93419a | Mike Muzurakis | $(this).addClass('typehover');
|
237 | afa2ebd2 | Mike Muzurakis | });
|
238 | afa2ebd2 | Mike Muzurakis | $('span.typebody').mouseout(function() {
|
239 | cf93419a | Mike Muzurakis | $(this).removeClass('typehover');
|
240 | afa2ebd2 | Mike Muzurakis | });
|
241 | afa2ebd2 | Mike Muzurakis | |
242 | a64e74f0 | Markos Gogoulos | // return value from metadata key "OS", if it exists
|
243 | a64e74f0 | Markos Gogoulos | function os_icon(metadata) {
|
244 | a64e74f0 | Markos Gogoulos | if (!metadata) {
|
245 | a64e74f0 | Markos Gogoulos | return 'unknown';
|
246 | a64e74f0 | Markos Gogoulos | }
|
247 | a64e74f0 | Markos Gogoulos | |
248 | a64e74f0 | Markos Gogoulos | if (metadata.values.OS == undefined || metadata.values.OS == '') {
|
249 | a64e74f0 | Markos Gogoulos | return 'unknown';
|
250 | a64e74f0 | Markos Gogoulos | } else {
|
251 | a64e74f0 | Markos Gogoulos | return metadata.values.OS;
|
252 | a64e74f0 | Markos Gogoulos | }
|
253 | a64e74f0 | Markos Gogoulos | }
|
254 | a64e74f0 | Markos Gogoulos | |
255 | fb66080c | Dimitris Moraitis | // switch to list view
|
256 | 9b1b6f3a | Christodoulos Psaltis | $("a#list").click(function(){
|
257 | 9b1b6f3a | Christodoulos Psaltis | list_view();
|
258 | 9b1b6f3a | Christodoulos Psaltis | return false;
|
259 | 9b1b6f3a | Christodoulos Psaltis | });
|
260 | fb66080c | Dimitris Moraitis | |
261 | 9b1b6f3a | Christodoulos Psaltis | // switch to standard view
|
262 | 9b1b6f3a | Christodoulos Psaltis | $("a#standard").click(function(){
|
263 | 9b1b6f3a | Christodoulos Psaltis | standard_view();
|
264 | 9b1b6f3a | Christodoulos Psaltis | return false;
|
265 | 9b1b6f3a | Christodoulos Psaltis | });
|
266 | 38e2c5ed | Christodoulos Psaltis | |
267 | bd8b1d60 | Christodoulos Psaltis | // launch VM creation wizard
|
268 | 8fd5c3a5 | Christodoulos Psaltis | $("a#create").click(function(){
|
269 | 146b6003 | Dimitris Moraitis | // launch wizard only if images and flavors are found
|
270 | 146b6003 | Dimitris Moraitis | if (images.length > 0 && flavors.length > 0) {
|
271 | a3e418b1 | Markos Gogoulos | $("#wizard").scrollable().begin();
|
272 | a3e418b1 | Markos Gogoulos | $("#wizard").show();
|
273 | 146b6003 | Dimitris Moraitis | $('a#create').data('overlay').load()
|
274 | 146b6003 | Dimitris Moraitis | } else if (images.length == 0 ) {
|
275 | 146b6003 | Dimitris Moraitis | ajax_error('NO_IMAGES');
|
276 | 146b6003 | Dimitris Moraitis | return false;
|
277 | 146b6003 | Dimitris Moraitis | } else if (flavors.length == 0) {
|
278 | 146b6003 | Dimitris Moraitis | ajax_error('NO_FLAVORS');
|
279 | 146b6003 | Dimitris Moraitis | return false;
|
280 | 146b6003 | Dimitris Moraitis | }
|
281 | ec06b07c | Dimitris Moraitis | });
|
282 | ec06b07c | Dimitris Moraitis | |
283 | f124656b | Christodoulos Psaltis | // create wizard overlay
|
284 | f124656b | Christodoulos Psaltis | $(function() {
|
285 | 4e5d5e70 | Christodoulos Psaltis | $("a#create").overlay({
|
286 | f124656b | Christodoulos Psaltis | mask: '#000',
|
287 | f124656b | Christodoulos Psaltis | effect: 'default',
|
288 | f124656b | Christodoulos Psaltis | top: '5%',
|
289 | f124656b | Christodoulos Psaltis | oneInstance: false,
|
290 | f974b570 | Dimitris Moraitis | closeOnClick: false
|
291 | f124656b | Christodoulos Psaltis | });
|
292 | f124656b | Christodoulos Psaltis | });
|
293 | f124656b | Christodoulos Psaltis | |
294 | bd8b1d60 | Christodoulos Psaltis | // wizard
|
295 | bd8b1d60 | Christodoulos Psaltis | $(function() {
|
296 | bd8b1d60 | Christodoulos Psaltis | var root = $("#wizard").scrollable();
|
297 | bd8b1d60 | Christodoulos Psaltis | var api = root.scrollable();
|
298 | bd8b1d60 | Christodoulos Psaltis | // rangeinput with default configuration
|
299 | bd8b1d60 | Christodoulos Psaltis | // validation logic is done inside the onBeforeSeek callback
|
300 | bd8b1d60 | Christodoulos Psaltis | api.onBeforeSeek(function(event, i) {
|
301 | bd8b1d60 | Christodoulos Psaltis | // we are going 1 step backwards so no need for validation
|
302 | bd8b1d60 | Christodoulos Psaltis | if (api.getIndex() < i) {
|
303 | bd8b1d60 | Christodoulos Psaltis | // 1. get current page
|
304 | bd8b1d60 | Christodoulos Psaltis | var page = root.find(".page").eq(api.getIndex()),
|
305 | bd8b1d60 | Christodoulos Psaltis | // 2. .. and all required fields inside the page
|
306 | bd8b1d60 | Christodoulos Psaltis | inputs = page.find(".required :input").removeClass("error"),
|
307 | bd8b1d60 | Christodoulos Psaltis | // 3. .. which are empty
|
308 | bd8b1d60 | Christodoulos Psaltis | empty = inputs.filter(function() {
|
309 | bd8b1d60 | Christodoulos Psaltis | return $(this).val().replace(/\s*/g, '') == '';
|
310 | bd8b1d60 | Christodoulos Psaltis | });
|
311 | bd8b1d60 | Christodoulos Psaltis | // if there are empty fields, then
|
312 | bd8b1d60 | Christodoulos Psaltis | if (empty.length) {
|
313 | bd8b1d60 | Christodoulos Psaltis | // add a CSS class name "error" for empty & required fields
|
314 | bd8b1d60 | Christodoulos Psaltis | empty.addClass("error");
|
315 | bd8b1d60 | Christodoulos Psaltis | // cancel seeking of the scrollable by returning false
|
316 | bd8b1d60 | Christodoulos Psaltis | return false;
|
317 | bd8b1d60 | Christodoulos Psaltis | // everything is good
|
318 | bd8b1d60 | Christodoulos Psaltis | }
|
319 | bd8b1d60 | Christodoulos Psaltis | }
|
320 | bd8b1d60 | Christodoulos Psaltis | // update status bar
|
321 | bd8b1d60 | Christodoulos Psaltis | $("#status li").removeClass("active").eq(i).addClass("active");
|
322 | 71642965 | Dimitris Moraitis | // update confirm step
|
323 | 20fae095 | Christodoulos Psaltis | if (api.getIndex()==0) {
|
324 | 20fae095 | Christodoulos Psaltis | var image = $("input[type=radio][name=image-id]:checked");
|
325 | b335768e | Markos Gogoulos | var imageRef = image.length ? image[0].id : false
|
326 | b335768e | Markos Gogoulos | if (imageRef) {
|
327 | b335768e | Markos Gogoulos | var imageName = $("label[for=" + imageRef + "] .image-title").text();
|
328 | 20fae095 | Christodoulos Psaltis | $("#machine_image-label")[0].textContent = imageName;
|
329 | 20fae095 | Christodoulos Psaltis | $("input[type=text][name=machine_name]")[0].value = "My " + imageName + " server";
|
330 | 20fae095 | Christodoulos Psaltis | }
|
331 | 42f67a2a | Dimitris Moraitis | } else if (api.getIndex()==1) {
|
332 | 20fae095 | Christodoulos Psaltis | $("#machine_cpu-label")[0].textContent = $("#cpu-indicator")[0].value;
|
333 | 20fae095 | Christodoulos Psaltis | $("#machine_ram-label")[0].textContent = $("#ram-indicator")[0].value;
|
334 | 20fae095 | Christodoulos Psaltis | $("#machine_storage-label")[0].textContent = $("#storage-indicator")[0].value;
|
335 | 9b1b6f3a | Christodoulos Psaltis | }
|
336 | bd8b1d60 | Christodoulos Psaltis | });
|
337 | bd8b1d60 | Christodoulos Psaltis | // if tab is pressed on the next button seek to next page
|
338 | f87e79a4 | Mike Muzurakis | $(root).live('keydown', function (e) {
|
339 | f87e79a4 | Mike Muzurakis | if ( e.keyCode == 9 ){
|
340 | f87e79a4 | Mike Muzurakis | if(e.preventDefault) {
|
341 | f87e79a4 | Mike Muzurakis | e.preventDefault();
|
342 | f87e79a4 | Mike Muzurakis | }
|
343 | f87e79a4 | Mike Muzurakis | api.next();
|
344 | f87e79a4 | Mike Muzurakis | }
|
345 | bd8b1d60 | Christodoulos Psaltis | });
|
346 | cae67343 | Mike Muzurakis | $("#name").keypress(function (e) {
|
347 | cae67343 | Mike Muzurakis | if ((e.which && e.which == 13) || (e.keyCode && e.keyCode == 13)) {
|
348 | cae67343 | Mike Muzurakis | $('#start').click();
|
349 | cae67343 | Mike Muzurakis | return false;
|
350 | cae67343 | Mike Muzurakis | } else {
|
351 | cae67343 | Mike Muzurakis | return true;
|
352 | cae67343 | Mike Muzurakis | }
|
353 | cae67343 | Mike Muzurakis | });
|
354 | 71642965 | Dimitris Moraitis | });
|
355 | cc7c5902 | Dimitris Moraitis | |
356 | bd8b1d60 | Christodoulos Psaltis | // disable sliders in flavor selection
|
357 | cc7c5902 | Dimitris Moraitis | function disableSliders() {
|
358 | cc7c5902 | Dimitris Moraitis | $("#cpu").attr('disabled',true);
|
359 | cc7c5902 | Dimitris Moraitis | $("#ram").attr('disabled',true);
|
360 | cc7c5902 | Dimitris Moraitis | $("#storage").attr('disabled',true);
|
361 | cc7c5902 | Dimitris Moraitis | }
|
362 | cc7c5902 | Dimitris Moraitis | |
363 | afa2ebd2 | Mike Muzurakis | //update radio button when clicking on text
|
364 | afa2ebd2 | Mike Muzurakis | $("#small-body").live('click' ,function() {
|
365 | afa2ebd2 | Mike Muzurakis | $(this).parent().find("#small").click();
|
366 | afa2ebd2 | Mike Muzurakis | });
|
367 | afa2ebd2 | Mike Muzurakis | $("#medium-body").live('click' ,function() {
|
368 | afa2ebd2 | Mike Muzurakis | $(this).parent().find("#medium").click();
|
369 | afa2ebd2 | Mike Muzurakis | });
|
370 | afa2ebd2 | Mike Muzurakis | $("#large-body").live('click' ,function() {
|
371 | afa2ebd2 | Mike Muzurakis | $(this).parent().find("#large").click();
|
372 | afa2ebd2 | Mike Muzurakis | });
|
373 | afa2ebd2 | Mike Muzurakis | $("#custom-body").live('click' ,function() {
|
374 | afa2ebd2 | Mike Muzurakis | $(this).parent().find("#custom").click();
|
375 | afa2ebd2 | Mike Muzurakis | });
|
376 | afa2ebd2 | Mike Muzurakis | |
377 | afa2ebd2 | Mike Muzurakis | //select image div on radio button select
|
378 | afa2ebd2 | Mike Muzurakis | $('.radio').live('click' ,function() {
|
379 | afa2ebd2 | Mike Muzurakis | $(this).parents("div").find(".image").removeClass('selecteddiv');
|
380 | afa2ebd2 | Mike Muzurakis | if($(this).is(':checked')) {
|
381 | afa2ebd2 | Mike Muzurakis | $(this).parent().addClass('selecteddiv');
|
382 | afa2ebd2 | Mike Muzurakis | }
|
383 | afa2ebd2 | Mike Muzurakis | });
|
384 | afa2ebd2 | Mike Muzurakis | |
385 | 267403ca | Dimitris Moraitis | // confirm all actions
|
386 | 267403ca | Dimitris Moraitis | $("div.confirm_multiple .yes").live('click', function(){
|
387 | a1a31201 | Dimitris Moraitis | while(pending_actions.length > 0){ // if there is a pending action for this server execute it
|
388 | a1a31201 | Dimitris Moraitis | action = pending_actions.pop(); // extract action
|
389 | 2f86374f | Dimitris Moraitis | var serverID = action[1];
|
390 | 990772be | Dimitris Moraitis | if ($.cookie("list") != '1') { // standard view
|
391 | 198e13aa | Christodoulos Psaltis | $('#' + serverID + ' .selected').removeClass('selected');
|
392 | 198e13aa | Christodoulos Psaltis | $('#' + serverID + ' .display').removeClass('display');
|
393 | 198e13aa | Christodoulos Psaltis | if (action[0] == shutdown) {
|
394 | 198e13aa | Christodoulos Psaltis | $('#' + serverID + ' .status').text('Shutting down');
|
395 | 198e13aa | Christodoulos Psaltis | } else if (action[0] == start) {
|
396 | 198e13aa | Christodoulos Psaltis | $('#' + serverID + ' .status').text('Starting');
|
397 | 66edd851 | Christodoulos Psaltis | } else if (action[0] == reboot) {
|
398 | 66edd851 | Christodoulos Psaltis | $('#' + serverID + ' .status').text('Rebooting');
|
399 | 66edd851 | Christodoulos Psaltis | } else if (action[0] == destroy) {
|
400 | 66edd851 | Christodoulos Psaltis | $('#' + serverID + ' .status').text('Destroying');
|
401 | 198e13aa | Christodoulos Psaltis | }
|
402 | 198e13aa | Christodoulos Psaltis | $('#' + serverID + ' .spinner').show();
|
403 | 990772be | Dimitris Moraitis | } else { // list view
|
404 | 695e1b21 | Dimitris Moraitis | osIcon = $('#'+serverID).parent().parent().find('.list-logo');
|
405 | 695e1b21 | Dimitris Moraitis | osIcon.attr('os',osIcon.attr('src'));
|
406 | 695e1b21 | Dimitris Moraitis | osIcon.attr('src','static/progress.gif');
|
407 | 1704ae25 | Christodoulos Psaltis | if (action[0] == shutdown) {
|
408 | 1704ae25 | Christodoulos Psaltis | $('#' + serverID).parent().parent().find('span.status').text('Shutting down');
|
409 | 1704ae25 | Christodoulos Psaltis | } else if (action[0] == start) {
|
410 | 1704ae25 | Christodoulos Psaltis | $('#' + serverID).parent().parent().find('span.status').text('Starting');
|
411 | 66edd851 | Christodoulos Psaltis | } else if (action[0] == reboot) {
|
412 | 66edd851 | Christodoulos Psaltis | $('#' + serverID).parent().parent().find('span.status').text('Rebooting');
|
413 | 66edd851 | Christodoulos Psaltis | } else if (action[0] == destroy) {
|
414 | 66edd851 | Christodoulos Psaltis | $('#' + serverID).parent().parent().find('span.status').text('Destroying');
|
415 | 1704ae25 | Christodoulos Psaltis | }
|
416 | 990772be | Dimitris Moraitis | }
|
417 | a1a31201 | Dimitris Moraitis | action[0]([serverID]); // execute action
|
418 | a1a31201 | Dimitris Moraitis | }
|
419 | a1a31201 | Dimitris Moraitis | update_confirmations();
|
420 | 267403ca | Dimitris Moraitis | });
|
421 | 267403ca | Dimitris Moraitis | |
422 | 267403ca | Dimitris Moraitis | // cancel all actions
|
423 | 267403ca | Dimitris Moraitis | $("div.confirm_multiple .no").live('click', function(){
|
424 | 267403ca | Dimitris Moraitis | pending_actions = [];
|
425 | aa0534a7 | Dimitris Moraitis | $('.machine .selected').removeClass('selected');
|
426 | aa0534a7 | Dimitris Moraitis | $('.machine .display').removeClass('display');
|
427 | 267403ca | Dimitris Moraitis | update_confirmations();
|
428 | 267403ca | Dimitris Moraitis | });
|
429 | 267403ca | Dimitris Moraitis | |
430 | 695e1b21 | Dimitris Moraitis | // validate cpu input box
|
431 | 695e1b21 | Dimitris Moraitis | $("#cpu-indicator").live('change',function(){
|
432 | 695e1b21 | Dimitris Moraitis | var v = Number(this.value);
|
433 | 695e1b21 | Dimitris Moraitis | var i = cpus.indexOf(v);
|
434 | 695e1b21 | Dimitris Moraitis | if (isNaN(v)) {
|
435 | 695e1b21 | Dimitris Moraitis | $(this).value = cpus[0];
|
436 | 695e1b21 | Dimitris Moraitis | $("#cpu").data('rangeinput').setValue(0);
|
437 | 695e1b21 | Dimitris Moraitis | } else if (i == -1) {
|
438 | 695e1b21 | Dimitris Moraitis | for (var j=0; j < cpus.length; j++)
|
439 | 695e1b21 | Dimitris Moraitis | if (v<cpus[j])
|
440 | 695e1b21 | Dimitris Moraitis | break;
|
441 | 695e1b21 | Dimitris Moraitis | $("#cpu").data('rangeinput').setValue(j);
|
442 | 695e1b21 | Dimitris Moraitis | } else {
|
443 | 695e1b21 | Dimitris Moraitis | $("#cpu").data('rangeinput').setValue(i);
|
444 | 695e1b21 | Dimitris Moraitis | }
|
445 | 695e1b21 | Dimitris Moraitis | return false;
|
446 | 695e1b21 | Dimitris Moraitis | });
|
447 | 695e1b21 | Dimitris Moraitis | |
448 | 695e1b21 | Dimitris Moraitis | // validate ram input box
|
449 | 695e1b21 | Dimitris Moraitis | $("#ram-indicator").live('change',function(){
|
450 | 695e1b21 | Dimitris Moraitis | var v = Number(this.value);
|
451 | 695e1b21 | Dimitris Moraitis | var i = ram.indexOf(v);
|
452 | 695e1b21 | Dimitris Moraitis | if (isNaN(v)) {
|
453 | 695e1b21 | Dimitris Moraitis | $(this).value = cpus[0];
|
454 | 695e1b21 | Dimitris Moraitis | $("#ram").data('rangeinput').setValue(0);
|
455 | 695e1b21 | Dimitris Moraitis | } else if (i == -1) {
|
456 | 695e1b21 | Dimitris Moraitis | for (var j=0; j < ram.length; j++)
|
457 | 695e1b21 | Dimitris Moraitis | if (v<ram[j])
|
458 | 695e1b21 | Dimitris Moraitis | break;
|
459 | 695e1b21 | Dimitris Moraitis | $("#ram").data('rangeinput').setValue(j);
|
460 | 695e1b21 | Dimitris Moraitis | } else {
|
461 | 695e1b21 | Dimitris Moraitis | $("#ram").data('rangeinput').setValue(i);
|
462 | 695e1b21 | Dimitris Moraitis | }
|
463 | 695e1b21 | Dimitris Moraitis | return false;
|
464 | 695e1b21 | Dimitris Moraitis | });
|
465 | 695e1b21 | Dimitris Moraitis | |
466 | 695e1b21 | Dimitris Moraitis | |
467 | 695e1b21 | Dimitris Moraitis | // validate storage input box
|
468 | 695e1b21 | Dimitris Moraitis | $("#storage-indicator").live('change',function(){
|
469 | 695e1b21 | Dimitris Moraitis | var v = Number(this.value);
|
470 | 695e1b21 | Dimitris Moraitis | var i = disks.indexOf(v);
|
471 | 695e1b21 | Dimitris Moraitis | if (isNaN(v)) {
|
472 | 695e1b21 | Dimitris Moraitis | $(this).value = disks[0];
|
473 | 695e1b21 | Dimitris Moraitis | $("#storage").data('rangeinput').setValue(0);
|
474 | 695e1b21 | Dimitris Moraitis | } else if (i == -1) {
|
475 | 695e1b21 | Dimitris Moraitis | for (var j=0; j < disks.length; j++)
|
476 | 695e1b21 | Dimitris Moraitis | if (v<disks[j])
|
477 | 695e1b21 | Dimitris Moraitis | break;
|
478 | 695e1b21 | Dimitris Moraitis | $("#storage").data('rangeinput').setValue(j);
|
479 | 695e1b21 | Dimitris Moraitis | } else {
|
480 | 695e1b21 | Dimitris Moraitis | $("#storage").data('rangeinput').setValue(i);
|
481 | 695e1b21 | Dimitris Moraitis | }
|
482 | 695e1b21 | Dimitris Moraitis | return false;
|
483 | 695e1b21 | Dimitris Moraitis | });
|
484 | 695e1b21 | Dimitris Moraitis | |
485 | bd8b1d60 | Christodoulos Psaltis | // selecting the small size
|
486 | 8fd5c3a5 | Christodoulos Psaltis | $("#small").click(function(){
|
487 | 71642965 | Dimitris Moraitis | $("#cpu").data('rangeinput').setValue(0);
|
488 | 71642965 | Dimitris Moraitis | $("#ram").data('rangeinput').setValue(0);
|
489 | 71642965 | Dimitris Moraitis | $("#storage").data('rangeinput').setValue(0);
|
490 | 68a49035 | Dimitris Moraitis | $("#cpu-indicator")[0].value = cpus[0];
|
491 | 68a49035 | Dimitris Moraitis | $("#ram-indicator")[0].value = ram[0];
|
492 | 68a49035 | Dimitris Moraitis | $("#storage-indicator")[0].value = disks[0];
|
493 | 94adeabb | Mike Muzurakis | $("#small").addClass("active");
|
494 | 94adeabb | Mike Muzurakis | $("#medium").removeClass("active");
|
495 | 94adeabb | Mike Muzurakis | $("#large").removeClass("active");
|
496 | 94adeabb | Mike Muzurakis | $("#custom").removeClass("active");
|
497 | cc7c5902 | Dimitris Moraitis | });
|
498 | cc7c5902 | Dimitris Moraitis | |
499 | bd8b1d60 | Christodoulos Psaltis | // selecting the medium size
|
500 | 8fd5c3a5 | Christodoulos Psaltis | $("#medium").click(function(){
|
501 | 71642965 | Dimitris Moraitis | $("#cpu").data('rangeinput').setValue(1);
|
502 | 71642965 | Dimitris Moraitis | $("#ram").data('rangeinput').setValue(1);
|
503 | 71642965 | Dimitris Moraitis | $("#storage").data('rangeinput').setValue(1);
|
504 | 68a49035 | Dimitris Moraitis | $("#cpu-indicator")[0].value = cpus[1];
|
505 | 68a49035 | Dimitris Moraitis | $("#ram-indicator")[0].value = ram[1];
|
506 | 94adeabb | Mike Muzurakis | $("#storage-indicator")[0].value = disks[1];
|
507 | 94adeabb | Mike Muzurakis | $("#medium").addClass("active");
|
508 | 94adeabb | Mike Muzurakis | $("#small").removeClass("active");
|
509 | 94adeabb | Mike Muzurakis | $("#large").removeClass("active");
|
510 | 94adeabb | Mike Muzurakis | $("#custom").removeClass("active");
|
511 | cc7c5902 | Dimitris Moraitis | });
|
512 | cc7c5902 | Dimitris Moraitis | |
513 | bd8b1d60 | Christodoulos Psaltis | // selecting the large size
|
514 | 8fd5c3a5 | Christodoulos Psaltis | $("#large").click(function(){
|
515 | 71642965 | Dimitris Moraitis | $("#cpu").data('rangeinput').setValue(2);
|
516 | 71642965 | Dimitris Moraitis | $("#ram").data('rangeinput').setValue(2);
|
517 | 71642965 | Dimitris Moraitis | $("#storage").data('rangeinput').setValue(2);
|
518 | 68a49035 | Dimitris Moraitis | $("#cpu-indicator")[0].value = cpus[2];
|
519 | 68a49035 | Dimitris Moraitis | $("#ram-indicator")[0].value = ram[2];
|
520 | 94adeabb | Mike Muzurakis | $("#storage-indicator")[0].value = disks[2];
|
521 | 94adeabb | Mike Muzurakis | $("#large").addClass("active");
|
522 | 94adeabb | Mike Muzurakis | $("#medium").removeClass("active");
|
523 | 94adeabb | Mike Muzurakis | $("#small").removeClass("active");
|
524 | 94adeabb | Mike Muzurakis | $("#custom").removeClass("active");
|
525 | cc7c5902 | Dimitris Moraitis | });
|
526 | cc7c5902 | Dimitris Moraitis | |
527 | bd8b1d60 | Christodoulos Psaltis | // selecting the custom flavor enables the sliders
|
528 | 8fd5c3a5 | Christodoulos Psaltis | $("#custom").click(function(){
|
529 | bd8b1d60 | Christodoulos Psaltis | $("#cpu").attr('disabled',false);
|
530 | bd8b1d60 | Christodoulos Psaltis | $("#ram").attr('disabled',false);
|
531 | bd8b1d60 | Christodoulos Psaltis | $("#storage").attr('disabled',false);
|
532 | bd8b1d60 | Christodoulos Psaltis | $("strong.sliders").style = 'color: #778899;';
|
533 | 94adeabb | Mike Muzurakis | $("#custom").addClass("active");
|
534 | 94adeabb | Mike Muzurakis | $("#medium").removeClass("active");
|
535 | 94adeabb | Mike Muzurakis | $("#large").removeClass("active");
|
536 | 94adeabb | Mike Muzurakis | $("#small").removeClass("active");
|
537 | bd8b1d60 | Christodoulos Psaltis | });
|
538 | bd8b1d60 | Christodoulos Psaltis | |
539 | bd8b1d60 | Christodoulos Psaltis | // exit the wizard
|
540 | 8fd5c3a5 | Christodoulos Psaltis | $("#cancel").click(function(){
|
541 | b6270d15 | Christodoulos Psaltis | $("a#create").overlay().close();
|
542 | cc7c5902 | Dimitris Moraitis | });
|
543 | cc7c5902 | Dimitris Moraitis | |
544 | bd8b1d60 | Christodoulos Psaltis | // starting a new VM through the wizard
|
545 | 8fd5c3a5 | Christodoulos Psaltis | $("#start").click(function(){
|
546 | b335768e | Markos Gogoulos | var imageRef = $('input[type=radio][name=image-id]:checked')[0].id.replace('img-radio-','');
|
547 | b335768e | Markos Gogoulos | var flavorRef = identify_flavor($("#cpu-indicator")[0].value, $("#storage-indicator")[0].value, $("#ram-indicator")[0].value);
|
548 | 20fae095 | Christodoulos Psaltis | var machineName = $('input[name=machine_name]')[0].value;
|
549 | 0971fa71 | Markos Gogoulos | |
550 | 0971fa71 | Markos Gogoulos | create_vm(machineName, imageRef, flavorRef);
|
551 | 71642965 | Dimitris Moraitis | |
552 | 42f67a2a | Dimitris Moraitis | $('a#create').data('overlay').close();
|
553 | 2f86374f | Dimitris Moraitis | $("#emptymachineslist").hide();
|
554 | 2f86374f | Dimitris Moraitis | |
555 | 2f86374f | Dimitris Moraitis | try{console.warn('creating ' + $("input[name=machine_name]")[0].value)} catch(err){}
|
556 | 285a1fa8 | Dimitris Moraitis | |
557 | ec06b07c | Dimitris Moraitis | $("#wizard").hide();
|
558 | cc7c5902 | Dimitris Moraitis | });
|
559 | cc7c5902 | Dimitris Moraitis | |
560 | bd528b3b | Christodoulos Psaltis | // basic functions executed on page load
|
561 | d134b632 | Dimitris Moraitis | if (images.length > 0) {
|
562 | d134b632 | Dimitris Moraitis | // populate image list
|
563 | d134b632 | Dimitris Moraitis | update_wizard_images();
|
564 | d134b632 | Dimitris Moraitis | }
|
565 | d134b632 | Dimitris Moraitis | if (flavors.length > 0) {
|
566 | d134b632 | Dimitris Moraitis | // configure flavors
|
567 | d134b632 | Dimitris Moraitis | update_wizard_flavors();
|
568 | d134b632 | Dimitris Moraitis | }
|
569 | bd528b3b | Christodoulos Psaltis | // create tabs for main menu
|
570 | bd528b3b | Christodoulos Psaltis | $("ul.tabs").tabs("div.panes ul");
|
571 | bd528b3b | Christodoulos Psaltis | |
572 | 8400e1a5 | Markos Gogoulos | </script> |