Statistics
| Branch: | Tag: | Revision:

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" %} &raquo;</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">&laquo; {% trans "Back" %}</button>
112 cf0eb36b Markos Gogoulos
                                <button type="button" class="next right">{% trans "Next" %} &raquo;</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">&laquo; {% 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>