root / ui / templates / machines.html @ e2ccad35
History | View | Annotate | Download (16.1 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 | edda4d30 | Markos Gogoulos | <a id="create" rel="#wizard" href="#">{% trans "Create New +" %}</a> |
7 | d165dbb4 | Christodoulos Psaltis | |
8 | d165dbb4 | Christodoulos Psaltis | <!-- changing between standard/list view -->
|
9 | e55b8703 | Christodoulos Psaltis | <div id="view-select"> |
10 | 42f67a2a | Dimitris Moraitis | <a id="standard" href="/machines/standard">#</a> |
11 | e5b0ba20 | Vangelis Koukis | <span class="view-separator">|</span> |
12 | 43df43aa | Markos Gogoulos | <a id="list" href="/machines/list">=</a> |
13 | e55b8703 | Christodoulos Psaltis | </div>
|
14 | e55b8703 | Christodoulos Psaltis | |
15 | cc7c5902 | Dimitris Moraitis | <!-- the form -->
|
16 | cc7c5902 | Dimitris Moraitis | <form action="#"> |
17 | cc7c5902 | Dimitris Moraitis | <!-- scrollable root element -->
|
18 | cc7c5902 | Dimitris Moraitis | <div class="modal" id="wizard"> |
19 | cc7c5902 | Dimitris Moraitis | <!-- status bar -->
|
20 | cc7c5902 | Dimitris Moraitis | <ul id="status"> |
21 | cf0eb36b | Markos Gogoulos | <li class="active"><strong>1.</strong> {% trans "Image" %}</li> |
22 | c376783b | Markos Gogoulos | <li><strong>2.</strong> {% trans "Machine" %}</li> |
23 | cf0eb36b | Markos Gogoulos | <li><strong>3.</strong> {% trans "Review" %}</li> |
24 | cc7c5902 | Dimitris Moraitis | </ul>
|
25 | cc7c5902 | Dimitris Moraitis | <!-- scrollable items -->
|
26 | cc7c5902 | Dimitris Moraitis | <div class="items"> |
27 | cc7c5902 | Dimitris Moraitis | <!-- pages -->
|
28 | cc7c5902 | Dimitris Moraitis | <div class="page"> |
29 | cf0eb36b | Markos Gogoulos | <h2>{% trans "Select an OS" %}</h2> |
30 | cc7c5902 | Dimitris Moraitis | <ul class="tabs"> |
31 | cf0eb36b | Markos Gogoulos | <li><a href="#">{% trans "standard" %}</a></li> |
32 | cf0eb36b | Markos Gogoulos | <li><a href="#">{% trans "custom" %}</a></li> |
33 | cc7c5902 | Dimitris Moraitis | </ul>
|
34 | 89976b6c | Christodoulos Psaltis | <div class="panes"> |
35 | ec06b07c | Dimitris Moraitis | <li id="image-template" style="display:none"> |
36 | ec06b07c | Dimitris Moraitis | <label for="image.id"> |
37 | 9b1b6f3a | Christodoulos Psaltis | <a>
|
38 | 9b1b6f3a | Christodoulos Psaltis | <div class="image"> |
39 | 9b1b6f3a | Christodoulos Psaltis | <img src="" class="image-logo"/> |
40 | 9b1b6f3a | Christodoulos Psaltis | <strong class="image-title">image.title</strong> |
41 | 9b1b6f3a | Christodoulos Psaltis | <input class="radio" type="radio" name="image-id" id="image-id" /> |
42 | 9b1b6f3a | Christodoulos Psaltis | <br /> |
43 | 9b1b6f3a | Christodoulos Psaltis | <span class="description">image.description</span> |
44 | 9b1b6f3a | Christodoulos Psaltis | <span class="size">?? MB</span> |
45 | 9b1b6f3a | Christodoulos Psaltis | </div>
|
46 | 9b1b6f3a | Christodoulos Psaltis | </a>
|
47 | ec06b07c | Dimitris Moraitis | </label>
|
48 | ec06b07c | Dimitris Moraitis | </li>
|
49 | ec06b07c | Dimitris Moraitis | <ul class="pane" id="standard-images"> |
50 | cc7c5902 | Dimitris Moraitis | <!-- standard images -->
|
51 | cc7c5902 | Dimitris Moraitis | </ul>
|
52 | ec06b07c | Dimitris Moraitis | <ul class="pane" id="custom-images"> |
53 | cc7c5902 | Dimitris Moraitis | <!-- custom images -->
|
54 | cc7c5902 | Dimitris Moraitis | </ul>
|
55 | cc7c5902 | Dimitris Moraitis | </div>
|
56 | cf0eb36b | Markos Gogoulos | <button type="button" class="prev" id="cancel">{% trans "Cancel" %}</button> |
57 | cf0eb36b | Markos Gogoulos | <button type="button" class="next right">{% trans "Next" %} »</button> |
58 | cc7c5902 | Dimitris Moraitis | </div>
|
59 | cc7c5902 | Dimitris Moraitis | <div class="page"> |
60 | cf0eb36b | Markos Gogoulos | <h2>{% trans "Select CPU, RAM and storage" %}</h2> |
61 | cc7c5902 | Dimitris Moraitis | <ul>
|
62 | cc7c5902 | Dimitris Moraitis | <li>
|
63 | c376783b | Markos Gogoulos | <div class="machine-type"> |
64 | cc7c5902 | Dimitris Moraitis | <label for="small"> |
65 | c376783b | Markos Gogoulos | <input type="radio" id="small" name="machine-type" value="small" checked="true" /> |
66 | cf0eb36b | Markos Gogoulos | <strong>{% trans "small" %}</strong> |
67 | cc7c5902 | Dimitris Moraitis | </label>
|
68 | cc7c5902 | Dimitris Moraitis | </div>
|
69 | c376783b | Markos Gogoulos | <div class="machine-type"> |
70 | cc7c5902 | Dimitris Moraitis | <label for="medium"> |
71 | c376783b | Markos Gogoulos | <input type="radio" id="medium" name="machine-type" value="medium" /> |
72 | cf0eb36b | Markos Gogoulos | <strong>{% trans "medium" %}</strong> |
73 | cc7c5902 | Dimitris Moraitis | </label>
|
74 | cc7c5902 | Dimitris Moraitis | </div>
|
75 | c376783b | Markos Gogoulos | <div class="machine-type"> |
76 | cc7c5902 | Dimitris Moraitis | <label for="large"> |
77 | c376783b | Markos Gogoulos | <input type="radio" id="large" name="machine-type" value="large" /> |
78 | cf0eb36b | Markos Gogoulos | <strong>{% trans "large" %}</strong> |
79 | cc7c5902 | Dimitris Moraitis | </label>
|
80 | cc7c5902 | Dimitris Moraitis | </div>
|
81 | c376783b | Markos Gogoulos | <div class="machine-type"> |
82 | cc7c5902 | Dimitris Moraitis | <label for="custom"> |
83 | c376783b | Markos Gogoulos | <input type="radio" name="machine-type" id="custom" value="large" /> |
84 | cf0eb36b | Markos Gogoulos | <strong>{% trans "custom" %}</strong> |
85 | cc7c5902 | Dimitris Moraitis | </label>
|
86 | cc7c5902 | Dimitris Moraitis | </div>
|
87 | cc7c5902 | Dimitris Moraitis | </li>
|
88 | cc7c5902 | Dimitris Moraitis | <li>
|
89 | cc7c5902 | Dimitris Moraitis | <label><strong class="sliders">CPU (cores)</strong></label> |
90 | 71642965 | Dimitris Moraitis | <input type="range" id="cpu" style="display:none" /> |
91 | 71642965 | Dimitris Moraitis | <input type="text" class="range" id="cpu-indicator" /> |
92 | cc7c5902 | Dimitris Moraitis | </li>
|
93 | cc7c5902 | Dimitris Moraitis | <li>
|
94 | cc7c5902 | Dimitris Moraitis | <label><strong class="sliders">RAM (MB)</strong></label> |
95 | 71642965 | Dimitris Moraitis | <input type="range" id="ram" style="display:none" /> |
96 | 71642965 | Dimitris Moraitis | <input type="text" class="range" id="ram-indicator" /> |
97 | 71642965 | Dimitris Moraitis | |
98 | cc7c5902 | Dimitris Moraitis | </li>
|
99 | cc7c5902 | Dimitris Moraitis | <li>
|
100 | cc7c5902 | Dimitris Moraitis | <label><strong class="sliders">Storage (GB)</strong></label> |
101 | 71642965 | Dimitris Moraitis | <input type="range" id="storage" style="display:none" /> |
102 | 71642965 | Dimitris Moraitis | <input type="text" class="range" id="storage-indicator" /> |
103 | 71642965 | Dimitris Moraitis | |
104 | cc7c5902 | Dimitris Moraitis | </li>
|
105 | cc7c5902 | Dimitris Moraitis | <li>
|
106 | cc7c5902 | Dimitris Moraitis | <div class="cost"> |
107 | cf0eb36b | Markos Gogoulos | {% trans "Cost per hour:" %} 20 {% trans "credits" %} | {% trans "Credits currently in account:" %} 10.000 |
108 | cc7c5902 | Dimitris Moraitis | </div>
|
109 | cc7c5902 | Dimitris Moraitis | </li>
|
110 | cc7c5902 | Dimitris Moraitis | </ul>
|
111 | cf0eb36b | Markos Gogoulos | <button type="button" class="prev">« {% trans "Back" %}</button> |
112 | cf0eb36b | Markos Gogoulos | <button type="button" class="next right">{% trans "Next" %} »</button> |
113 | cc7c5902 | Dimitris Moraitis | </div>
|
114 | cc7c5902 | Dimitris Moraitis | <div class="page"> |
115 | cf0eb36b | Markos Gogoulos | <h2>{% trans "Confirm your settings" %}</h2> |
116 | cc7c5902 | Dimitris Moraitis | <ul>
|
117 | cc7c5902 | Dimitris Moraitis | <li class="required"> |
118 | cc7c5902 | Dimitris Moraitis | <label>
|
119 | c376783b | Markos Gogoulos | <strong>Machine name</strong> |
120 | c376783b | Markos Gogoulos | <input type="text" class="text" name="machine_name" value="My Ubuntu 10.04 x86_64 server"/> |
121 | cc7c5902 | Dimitris Moraitis | </label>
|
122 | cc7c5902 | Dimitris Moraitis | </li>
|
123 | cc7c5902 | Dimitris Moraitis | <li>
|
124 | 71642965 | Dimitris Moraitis | <strong>{% trans "Image:" %}</strong> <span id="machine_image-label">Ubuntu 10.04 x86_64 server</span> |
125 | cc7c5902 | Dimitris Moraitis | </li>
|
126 | cc7c5902 | Dimitris Moraitis | <li>
|
127 | 71642965 | Dimitris Moraitis | <strong>{% trans "CPU:" %}</strong> <span id="machine_cpu-label">2</span> <span>{% trans "cores" %}</span> |
128 | cc7c5902 | Dimitris Moraitis | </li>
|
129 | cc7c5902 | Dimitris Moraitis | <li>
|
130 | 71642965 | Dimitris Moraitis | <strong>{% trans "RAM:" %}</strong> <span id="machine_ram-label">1024</span><span>MB</span> |
131 | cc7c5902 | Dimitris Moraitis | </li>
|
132 | cc7c5902 | Dimitris Moraitis | <li>
|
133 | 71642965 | Dimitris Moraitis | <strong>{% trans "Storage:" %}</strong> <span id="machine_storage-label">10</span><span>GB</span> |
134 | cc7c5902 | Dimitris Moraitis | </li>
|
135 | cc7c5902 | Dimitris Moraitis | <li>
|
136 | cf0eb36b | Markos Gogoulos | <strong>{% trans "Cost per hour:" %}</strong> <span>20 {% trans "credits" %}</span> |
137 | cc7c5902 | Dimitris Moraitis | </li>
|
138 | cc7c5902 | Dimitris Moraitis | <li>
|
139 | cf0eb36b | Markos Gogoulos | <strong>{% trans "Remaining credits:" %}</strong> <span>10.000</span> |
140 | cc7c5902 | Dimitris Moraitis | </li>
|
141 | cc7c5902 | Dimitris Moraitis | </ul>
|
142 | cf0eb36b | Markos Gogoulos | <button type="button" class="prev">« {% trans "Back" %}</button> |
143 | cf0eb36b | Markos Gogoulos | <button type="button" class="next right" id="start">{% trans "Create VM" %}</button> |
144 | cc7c5902 | Dimitris Moraitis | </div>
|
145 | cc7c5902 | Dimitris Moraitis | </div>
|
146 | cc7c5902 | Dimitris Moraitis | </div>
|
147 | cc7c5902 | Dimitris Moraitis | </form>
|
148 | cc7c5902 | Dimitris Moraitis | |
149 | d165dbb4 | Christodoulos Psaltis | <!-- notification after wizard completion -->
|
150 | f58ec963 | Christodoulos Psaltis | <a id="notification" rel="#error-success" href="#"></a> |
151 | d165dbb4 | Christodoulos Psaltis | |
152 | f58ec963 | Christodoulos Psaltis | <div class="modal" id="error-success"> |
153 | f58ec963 | Christodoulos Psaltis | <h3>{% trans "Error!/Success!" %}</h3> |
154 | f58ec963 | Christodoulos Psaltis | <p>{% trans "More details about the result"%}</p> |
155 | cc7c5902 | Dimitris Moraitis | </div>
|
156 | cc7c5902 | Dimitris Moraitis | |
157 | bd528b3b | Christodoulos Psaltis | <!-- confirmation before executing an action -->
|
158 | f58ec963 | Christodoulos Psaltis | <a id="confirmation" rel="#yes-no" href="#"></a> |
159 | d165dbb4 | Christodoulos Psaltis | |
160 | f58ec963 | Christodoulos Psaltis | <div class="modal" id="yes-no"> |
161 | bd528b3b | Christodoulos Psaltis | <h3>{% trans "You are about to xxx machine yyy" %}</h3> |
162 | bd528b3b | Christodoulos Psaltis | <p>{% trans "Are you sure you want to proceed?" %}</p> |
163 | bd528b3b | Christodoulos Psaltis | <button>{% trans "Yes" %}</button> |
164 | bd528b3b | Christodoulos Psaltis | <button>{% trans "No" %}</button> |
165 | d165dbb4 | Christodoulos Psaltis | </div>
|
166 | d165dbb4 | Christodoulos Psaltis | |
167 | 42f67a2a | Dimitris Moraitis | <div id="machinesview"></div> |
168 | 42f67a2a | Dimitris Moraitis | |
169 | 267403ca | Dimitris Moraitis | <div class="confirm_multiple"> |
170 | 3d286f84 | Dimitris Moraitis | <p>{% trans "Your actions will affect" %} <span class="actionLen">XX</span> {% trans "machines" %}</p> |
171 | 2cd96cc7 | Vangelis Koukis | <button class="yes">{% trans "Confirm All" %}</button> |
172 | 2cd96cc7 | Vangelis Koukis | <button class="no">{% trans "Cancel All" %}</button> |
173 | d725fb12 | Christodoulos Psaltis | </div>
|
174 | 31343277 | Christodoulos Psaltis | |
175 | 5b147126 | Christodoulos Psaltis | <div id="machines" class="separator"></div> |
176 | 5b147126 | Christodoulos Psaltis | |
177 | cc7c5902 | Dimitris Moraitis | <script>
|
178 | bd8b1d60 | Christodoulos Psaltis | // hardcoded image types
|
179 | 9b1b6f3a | Christodoulos Psaltis | // TODO: get this from the metadata
|
180 | ec06b07c | Dimitris Moraitis | var image_tags = {
|
181 | ec06b07c | Dimitris Moraitis | 1: 'archlinux',
|
182 | ec06b07c | Dimitris Moraitis | 2: 'centos',
|
183 | ec06b07c | Dimitris Moraitis | 3: 'debian',
|
184 | ec06b07c | Dimitris Moraitis | 4: 'freebsd',
|
185 | ec06b07c | Dimitris Moraitis | 5: 'gentoo',
|
186 | ec06b07c | Dimitris Moraitis | 6: 'netbsd',
|
187 | ec06b07c | Dimitris Moraitis | 7: 'openbsd',
|
188 | ec06b07c | Dimitris Moraitis | 8: 'redhat',
|
189 | ec06b07c | Dimitris Moraitis | 9: 'slackware',
|
190 | ec06b07c | Dimitris Moraitis | 10: 'suse',
|
191 | ec06b07c | Dimitris Moraitis | 11: 'ubuntu',
|
192 | ec06b07c | Dimitris Moraitis | 12: 'windows',
|
193 | cbec4223 | Markos Gogoulos | 20: 'ubuntu',
|
194 | ec06b07c | Dimitris Moraitis | };
|
195 | ec06b07c | Dimitris Moraitis | |
196 | fb66080c | Dimitris Moraitis | // switch to list view
|
197 | 9b1b6f3a | Christodoulos Psaltis | $("a#list").click(function(){
|
198 | 9b1b6f3a | Christodoulos Psaltis | list_view();
|
199 | 9b1b6f3a | Christodoulos Psaltis | return false;
|
200 | 9b1b6f3a | Christodoulos Psaltis | });
|
201 | fb66080c | Dimitris Moraitis | |
202 | 9b1b6f3a | Christodoulos Psaltis | // switch to standard view
|
203 | 9b1b6f3a | Christodoulos Psaltis | $("a#standard").click(function(){
|
204 | 9b1b6f3a | Christodoulos Psaltis | standard_view();
|
205 | 9b1b6f3a | Christodoulos Psaltis | return false;
|
206 | 9b1b6f3a | Christodoulos Psaltis | });
|
207 | 38e2c5ed | Christodoulos Psaltis | |
208 | bd8b1d60 | Christodoulos Psaltis | // launch VM creation wizard
|
209 | 8fd5c3a5 | Christodoulos Psaltis | $("a#create").click(function(){
|
210 | 146b6003 | Dimitris Moraitis | // launch wizard only if images and flavors are found
|
211 | 146b6003 | Dimitris Moraitis | if (images.length > 0 && flavors.length > 0) {
|
212 | a3e418b1 | Markos Gogoulos | $("#wizard").scrollable().begin();
|
213 | a3e418b1 | Markos Gogoulos | $("#wizard").show();
|
214 | 146b6003 | Dimitris Moraitis | $('a#create').data('overlay').load()
|
215 | 146b6003 | Dimitris Moraitis | } else if (images.length == 0 ) {
|
216 | 146b6003 | Dimitris Moraitis | ajax_error('NO_IMAGES');
|
217 | 146b6003 | Dimitris Moraitis | return false;
|
218 | 146b6003 | Dimitris Moraitis | } else if (flavors.length == 0) {
|
219 | 146b6003 | Dimitris Moraitis | ajax_error('NO_FLAVORS');
|
220 | 146b6003 | Dimitris Moraitis | return false;
|
221 | 146b6003 | Dimitris Moraitis | }
|
222 | ec06b07c | Dimitris Moraitis | });
|
223 | ec06b07c | Dimitris Moraitis | |
224 | f124656b | Christodoulos Psaltis | // create wizard overlay
|
225 | f124656b | Christodoulos Psaltis | $(function() {
|
226 | 4e5d5e70 | Christodoulos Psaltis | $("a#create").overlay({
|
227 | f124656b | Christodoulos Psaltis | mask: '#000',
|
228 | f124656b | Christodoulos Psaltis | effect: 'default',
|
229 | f124656b | Christodoulos Psaltis | top: '5%',
|
230 | f124656b | Christodoulos Psaltis | oneInstance: false,
|
231 | f974b570 | Dimitris Moraitis | closeOnClick: false
|
232 | f124656b | Christodoulos Psaltis | });
|
233 | f124656b | Christodoulos Psaltis | });
|
234 | f124656b | Christodoulos Psaltis | |
235 | bd8b1d60 | Christodoulos Psaltis | // wizard
|
236 | bd8b1d60 | Christodoulos Psaltis | $(function() {
|
237 | bd8b1d60 | Christodoulos Psaltis | var root = $("#wizard").scrollable();
|
238 | bd8b1d60 | Christodoulos Psaltis | var api = root.scrollable();
|
239 | bd8b1d60 | Christodoulos Psaltis | // rangeinput with default configuration
|
240 | bd8b1d60 | Christodoulos Psaltis | // validation logic is done inside the onBeforeSeek callback
|
241 | bd8b1d60 | Christodoulos Psaltis | api.onBeforeSeek(function(event, i) {
|
242 | bd8b1d60 | Christodoulos Psaltis | // we are going 1 step backwards so no need for validation
|
243 | bd8b1d60 | Christodoulos Psaltis | if (api.getIndex() < i) {
|
244 | bd8b1d60 | Christodoulos Psaltis | // 1. get current page
|
245 | bd8b1d60 | Christodoulos Psaltis | var page = root.find(".page").eq(api.getIndex()),
|
246 | bd8b1d60 | Christodoulos Psaltis | // 2. .. and all required fields inside the page
|
247 | bd8b1d60 | Christodoulos Psaltis | inputs = page.find(".required :input").removeClass("error"),
|
248 | bd8b1d60 | Christodoulos Psaltis | // 3. .. which are empty
|
249 | bd8b1d60 | Christodoulos Psaltis | empty = inputs.filter(function() {
|
250 | bd8b1d60 | Christodoulos Psaltis | return $(this).val().replace(/\s*/g, '') == '';
|
251 | bd8b1d60 | Christodoulos Psaltis | });
|
252 | bd8b1d60 | Christodoulos Psaltis | // if there are empty fields, then
|
253 | bd8b1d60 | Christodoulos Psaltis | if (empty.length) {
|
254 | bd8b1d60 | Christodoulos Psaltis | // add a CSS class name "error" for empty & required fields
|
255 | bd8b1d60 | Christodoulos Psaltis | empty.addClass("error");
|
256 | bd8b1d60 | Christodoulos Psaltis | // cancel seeking of the scrollable by returning false
|
257 | bd8b1d60 | Christodoulos Psaltis | return false;
|
258 | bd8b1d60 | Christodoulos Psaltis | // everything is good
|
259 | bd8b1d60 | Christodoulos Psaltis | }
|
260 | bd8b1d60 | Christodoulos Psaltis | }
|
261 | bd8b1d60 | Christodoulos Psaltis | // update status bar
|
262 | bd8b1d60 | Christodoulos Psaltis | $("#status li").removeClass("active").eq(i).addClass("active");
|
263 | 71642965 | Dimitris Moraitis | // update confirm step
|
264 | 20fae095 | Christodoulos Psaltis | if (api.getIndex()==0) {
|
265 | 20fae095 | Christodoulos Psaltis | var image = $("input[type=radio][name=image-id]:checked");
|
266 | b335768e | Markos Gogoulos | var imageRef = image.length ? image[0].id : false
|
267 | b335768e | Markos Gogoulos | if (imageRef) {
|
268 | b335768e | Markos Gogoulos | var imageName = $("label[for=" + imageRef + "] .image-title").text();
|
269 | 20fae095 | Christodoulos Psaltis | $("#machine_image-label")[0].textContent = imageName;
|
270 | 20fae095 | Christodoulos Psaltis | $("input[type=text][name=machine_name]")[0].value = "My " + imageName + " server";
|
271 | 20fae095 | Christodoulos Psaltis | }
|
272 | 42f67a2a | Dimitris Moraitis | } else if (api.getIndex()==1) {
|
273 | 20fae095 | Christodoulos Psaltis | $("#machine_cpu-label")[0].textContent = $("#cpu-indicator")[0].value;
|
274 | 20fae095 | Christodoulos Psaltis | $("#machine_ram-label")[0].textContent = $("#ram-indicator")[0].value;
|
275 | 20fae095 | Christodoulos Psaltis | $("#machine_storage-label")[0].textContent = $("#storage-indicator")[0].value;
|
276 | 9b1b6f3a | Christodoulos Psaltis | }
|
277 | bd8b1d60 | Christodoulos Psaltis | });
|
278 | bd8b1d60 | Christodoulos Psaltis | // if tab is pressed on the next button seek to next page
|
279 | bd8b1d60 | Christodoulos Psaltis | root.find("button.next").keydown(function(e) {
|
280 | bd8b1d60 | Christodoulos Psaltis | if (e.keyCode == 9) {
|
281 | bd8b1d60 | Christodoulos Psaltis | // seeks to next tab by executing our validation routine
|
282 | bd8b1d60 | Christodoulos Psaltis | api.next();
|
283 | bd8b1d60 | Christodoulos Psaltis | e.preventDefault();
|
284 | bd8b1d60 | Christodoulos Psaltis | }
|
285 | bd8b1d60 | Christodoulos Psaltis | });
|
286 | 71642965 | Dimitris Moraitis | });
|
287 | cc7c5902 | Dimitris Moraitis | |
288 | bd8b1d60 | Christodoulos Psaltis | // disable sliders in flavor selection
|
289 | cc7c5902 | Dimitris Moraitis | function disableSliders() {
|
290 | cc7c5902 | Dimitris Moraitis | $("#cpu").attr('disabled',true);
|
291 | cc7c5902 | Dimitris Moraitis | $("#ram").attr('disabled',true);
|
292 | cc7c5902 | Dimitris Moraitis | $("#storage").attr('disabled',true);
|
293 | cc7c5902 | Dimitris Moraitis | }
|
294 | cc7c5902 | Dimitris Moraitis | |
295 | 267403ca | Dimitris Moraitis | // confirm all actions
|
296 | 267403ca | Dimitris Moraitis | $("div.confirm_multiple .yes").live('click', function(){
|
297 | a1a31201 | Dimitris Moraitis | while(pending_actions.length > 0){ // if there is a pending action for this server execute it
|
298 | a1a31201 | Dimitris Moraitis | action = pending_actions.pop(); // extract action
|
299 | 2f86374f | Dimitris Moraitis | var serverID = action[1];
|
300 | 990772be | Dimitris Moraitis |
|
301 | 990772be | Dimitris Moraitis | if ($.cookie("list") != '1') { // standard view
|
302 | 990772be | Dimitris Moraitis | $('#'+serverID+' .spinner').show();
|
303 | 990772be | Dimitris Moraitis | $('#'+serverID+' .selected').removeClass('selected');
|
304 | 990772be | Dimitris Moraitis | $('#'+serverID+' .display').removeClass('display');
|
305 | 990772be | Dimitris Moraitis | } else { // list view
|
306 | 695e1b21 | Dimitris Moraitis | osIcon = $('#'+serverID).parent().parent().find('.list-logo');
|
307 | 695e1b21 | Dimitris Moraitis | osIcon.attr('os',osIcon.attr('src'));
|
308 | 695e1b21 | Dimitris Moraitis | osIcon.attr('src','static/progress.gif');
|
309 | 990772be | Dimitris Moraitis | }
|
310 | a1a31201 | Dimitris Moraitis | action[0]([serverID]); // execute action
|
311 | a1a31201 | Dimitris Moraitis | }
|
312 | a1a31201 | Dimitris Moraitis | update_confirmations();
|
313 | 267403ca | Dimitris Moraitis | });
|
314 | 267403ca | Dimitris Moraitis | |
315 | 267403ca | Dimitris Moraitis | // cancel all actions
|
316 | 267403ca | Dimitris Moraitis | $("div.confirm_multiple .no").live('click', function(){
|
317 | 267403ca | Dimitris Moraitis | pending_actions = [];
|
318 | aa0534a7 | Dimitris Moraitis | $('.machine .selected').removeClass('selected');
|
319 | aa0534a7 | Dimitris Moraitis | $('.machine .display').removeClass('display');
|
320 | 267403ca | Dimitris Moraitis | update_confirmations();
|
321 | 267403ca | Dimitris Moraitis | });
|
322 | 267403ca | Dimitris Moraitis | |
323 | 695e1b21 | Dimitris Moraitis | // validate cpu input box
|
324 | 695e1b21 | Dimitris Moraitis | $("#cpu-indicator").live('change',function(){
|
325 | 695e1b21 | Dimitris Moraitis | var v = Number(this.value);
|
326 | 695e1b21 | Dimitris Moraitis | var i = cpus.indexOf(v);
|
327 | 695e1b21 | Dimitris Moraitis | if (isNaN(v)) {
|
328 | 695e1b21 | Dimitris Moraitis | $(this).value = cpus[0];
|
329 | 695e1b21 | Dimitris Moraitis | $("#cpu").data('rangeinput').setValue(0);
|
330 | 695e1b21 | Dimitris Moraitis | } else if (i == -1) {
|
331 | 695e1b21 | Dimitris Moraitis | for (var j=0; j < cpus.length; j++)
|
332 | 695e1b21 | Dimitris Moraitis | if (v<cpus[j])
|
333 | 695e1b21 | Dimitris Moraitis | break;
|
334 | 695e1b21 | Dimitris Moraitis | $("#cpu").data('rangeinput').setValue(j);
|
335 | 695e1b21 | Dimitris Moraitis | } else {
|
336 | 695e1b21 | Dimitris Moraitis | $("#cpu").data('rangeinput').setValue(i);
|
337 | 695e1b21 | Dimitris Moraitis | }
|
338 | 695e1b21 | Dimitris Moraitis | return false;
|
339 | 695e1b21 | Dimitris Moraitis | });
|
340 | 695e1b21 | Dimitris Moraitis | |
341 | 695e1b21 | Dimitris Moraitis | // validate ram input box
|
342 | 695e1b21 | Dimitris Moraitis | $("#ram-indicator").live('change',function(){
|
343 | 695e1b21 | Dimitris Moraitis | var v = Number(this.value);
|
344 | 695e1b21 | Dimitris Moraitis | var i = ram.indexOf(v);
|
345 | 695e1b21 | Dimitris Moraitis | if (isNaN(v)) {
|
346 | 695e1b21 | Dimitris Moraitis | $(this).value = cpus[0];
|
347 | 695e1b21 | Dimitris Moraitis | $("#ram").data('rangeinput').setValue(0);
|
348 | 695e1b21 | Dimitris Moraitis | } else if (i == -1) {
|
349 | 695e1b21 | Dimitris Moraitis | for (var j=0; j < ram.length; j++)
|
350 | 695e1b21 | Dimitris Moraitis | if (v<ram[j])
|
351 | 695e1b21 | Dimitris Moraitis | break;
|
352 | 695e1b21 | Dimitris Moraitis | $("#ram").data('rangeinput').setValue(j);
|
353 | 695e1b21 | Dimitris Moraitis | } else {
|
354 | 695e1b21 | Dimitris Moraitis | $("#ram").data('rangeinput').setValue(i);
|
355 | 695e1b21 | Dimitris Moraitis | }
|
356 | 695e1b21 | Dimitris Moraitis | return false;
|
357 | 695e1b21 | Dimitris Moraitis | });
|
358 | 695e1b21 | Dimitris Moraitis | |
359 | 695e1b21 | Dimitris Moraitis | |
360 | 695e1b21 | Dimitris Moraitis | // validate storage input box
|
361 | 695e1b21 | Dimitris Moraitis | $("#storage-indicator").live('change',function(){
|
362 | 695e1b21 | Dimitris Moraitis | var v = Number(this.value);
|
363 | 695e1b21 | Dimitris Moraitis | var i = disks.indexOf(v);
|
364 | 695e1b21 | Dimitris Moraitis | if (isNaN(v)) {
|
365 | 695e1b21 | Dimitris Moraitis | $(this).value = disks[0];
|
366 | 695e1b21 | Dimitris Moraitis | $("#storage").data('rangeinput').setValue(0);
|
367 | 695e1b21 | Dimitris Moraitis | } else if (i == -1) {
|
368 | 695e1b21 | Dimitris Moraitis | for (var j=0; j < disks.length; j++)
|
369 | 695e1b21 | Dimitris Moraitis | if (v<disks[j])
|
370 | 695e1b21 | Dimitris Moraitis | break;
|
371 | 695e1b21 | Dimitris Moraitis | $("#storage").data('rangeinput').setValue(j);
|
372 | 695e1b21 | Dimitris Moraitis | } else {
|
373 | 695e1b21 | Dimitris Moraitis | $("#storage").data('rangeinput').setValue(i);
|
374 | 695e1b21 | Dimitris Moraitis | }
|
375 | 695e1b21 | Dimitris Moraitis | return false;
|
376 | 695e1b21 | Dimitris Moraitis | });
|
377 | 695e1b21 | Dimitris Moraitis | |
378 | bd8b1d60 | Christodoulos Psaltis | // selecting the small size
|
379 | 8fd5c3a5 | Christodoulos Psaltis | $("#small").click(function(){
|
380 | 71642965 | Dimitris Moraitis | $("#cpu").data('rangeinput').setValue(0);
|
381 | 71642965 | Dimitris Moraitis | $("#ram").data('rangeinput').setValue(0);
|
382 | 71642965 | Dimitris Moraitis | $("#storage").data('rangeinput').setValue(0);
|
383 | 68a49035 | Dimitris Moraitis | $("#cpu-indicator")[0].value = cpus[0];
|
384 | 68a49035 | Dimitris Moraitis | $("#ram-indicator")[0].value = ram[0];
|
385 | 68a49035 | Dimitris Moraitis | $("#storage-indicator")[0].value = disks[0];
|
386 | cc7c5902 | Dimitris Moraitis | });
|
387 | cc7c5902 | Dimitris Moraitis | |
388 | bd8b1d60 | Christodoulos Psaltis | // selecting the medium size
|
389 | 8fd5c3a5 | Christodoulos Psaltis | $("#medium").click(function(){
|
390 | 71642965 | Dimitris Moraitis | $("#cpu").data('rangeinput').setValue(1);
|
391 | 71642965 | Dimitris Moraitis | $("#ram").data('rangeinput').setValue(1);
|
392 | 71642965 | Dimitris Moraitis | $("#storage").data('rangeinput').setValue(1);
|
393 | 68a49035 | Dimitris Moraitis | $("#cpu-indicator")[0].value = cpus[1];
|
394 | 68a49035 | Dimitris Moraitis | $("#ram-indicator")[0].value = ram[1];
|
395 | 68a49035 | Dimitris Moraitis | $("#storage-indicator")[0].value = disks[1];
|
396 | cc7c5902 | Dimitris Moraitis | });
|
397 | cc7c5902 | Dimitris Moraitis | |
398 | bd8b1d60 | Christodoulos Psaltis | // selecting the large size
|
399 | 8fd5c3a5 | Christodoulos Psaltis | $("#large").click(function(){
|
400 | 71642965 | Dimitris Moraitis | $("#cpu").data('rangeinput').setValue(2);
|
401 | 71642965 | Dimitris Moraitis | $("#ram").data('rangeinput').setValue(2);
|
402 | 71642965 | Dimitris Moraitis | $("#storage").data('rangeinput').setValue(2);
|
403 | 68a49035 | Dimitris Moraitis | $("#cpu-indicator")[0].value = cpus[2];
|
404 | 68a49035 | Dimitris Moraitis | $("#ram-indicator")[0].value = ram[2];
|
405 | 68a49035 | Dimitris Moraitis | $("#storage-indicator")[0].value = disks[2];
|
406 | cc7c5902 | Dimitris Moraitis | });
|
407 | cc7c5902 | Dimitris Moraitis | |
408 | bd8b1d60 | Christodoulos Psaltis | // selecting the custom flavor enables the sliders
|
409 | 8fd5c3a5 | Christodoulos Psaltis | $("#custom").click(function(){
|
410 | bd8b1d60 | Christodoulos Psaltis | $("#cpu").attr('disabled',false);
|
411 | bd8b1d60 | Christodoulos Psaltis | $("#ram").attr('disabled',false);
|
412 | bd8b1d60 | Christodoulos Psaltis | $("#storage").attr('disabled',false);
|
413 | bd8b1d60 | Christodoulos Psaltis | $("strong.sliders").style = 'color: #778899;';
|
414 | bd8b1d60 | Christodoulos Psaltis | });
|
415 | bd8b1d60 | Christodoulos Psaltis | |
416 | bd8b1d60 | Christodoulos Psaltis | // exit the wizard
|
417 | 8fd5c3a5 | Christodoulos Psaltis | $("#cancel").click(function(){
|
418 | b6270d15 | Christodoulos Psaltis | $("a#create").overlay().close();
|
419 | cc7c5902 | Dimitris Moraitis | });
|
420 | cc7c5902 | Dimitris Moraitis | |
421 | bd8b1d60 | Christodoulos Psaltis | // starting a new VM through the wizard
|
422 | 8fd5c3a5 | Christodoulos Psaltis | $("#start").click(function(){
|
423 | b335768e | Markos Gogoulos | var imageRef = $('input[type=radio][name=image-id]:checked')[0].id.replace('img-radio-','');
|
424 | b335768e | Markos Gogoulos | var flavorRef = identify_flavor($("#cpu-indicator")[0].value, $("#storage-indicator")[0].value, $("#ram-indicator")[0].value);
|
425 | 20fae095 | Christodoulos Psaltis | var machineName = $('input[name=machine_name]')[0].value;
|
426 | 0971fa71 | Markos Gogoulos | |
427 | 0971fa71 | Markos Gogoulos | create_vm(machineName, imageRef, flavorRef);
|
428 | 71642965 | Dimitris Moraitis | |
429 | 42f67a2a | Dimitris Moraitis | $('a#create').data('overlay').close();
|
430 | 2f86374f | Dimitris Moraitis | $("#emptymachineslist").hide();
|
431 | 2f86374f | Dimitris Moraitis | |
432 | 2f86374f | Dimitris Moraitis | try{console.warn('creating ' + $("input[name=machine_name]")[0].value)} catch(err){}
|
433 | 285a1fa8 | Dimitris Moraitis | |
434 | ec06b07c | Dimitris Moraitis | $("#wizard").hide();
|
435 | cc7c5902 | Dimitris Moraitis | });
|
436 | cc7c5902 | Dimitris Moraitis | |
437 | bd528b3b | Christodoulos Psaltis | // basic functions executed on page load
|
438 | d134b632 | Dimitris Moraitis | if (images.length > 0) {
|
439 | d134b632 | Dimitris Moraitis | // populate image list
|
440 | d134b632 | Dimitris Moraitis | update_wizard_images();
|
441 | d134b632 | Dimitris Moraitis | }
|
442 | d134b632 | Dimitris Moraitis | if (flavors.length > 0) {
|
443 | d134b632 | Dimitris Moraitis | // configure flavors
|
444 | d134b632 | Dimitris Moraitis | update_wizard_flavors();
|
445 | d134b632 | Dimitris Moraitis | }
|
446 | bd528b3b | Christodoulos Psaltis | // create tabs for main menu
|
447 | bd528b3b | Christodoulos Psaltis | $("ul.tabs").tabs("div.panes ul");
|
448 | bd528b3b | Christodoulos Psaltis | |
449 | 309d7ed2 | Dimitris Moraitis | $(window).resize(function(){
|
450 | e2ccad35 | Dimitris Moraitis | if (this.innerHeight - 200 < $('#machinesview').height())
|
451 | 309d7ed2 | Dimitris Moraitis | $('.confirm_multiple').addClass('fixed');
|
452 | 309d7ed2 | Dimitris Moraitis | else
|
453 | 309d7ed2 | Dimitris Moraitis | $('.confirm_multiple').removeClass('fixed');
|
454 | 309d7ed2 | Dimitris Moraitis | });
|
455 | 309d7ed2 | Dimitris Moraitis | |
456 | 8400e1a5 | Markos Gogoulos | </script> |