Statistics
| Branch: | Tag: | Revision:

root / ui / templates / machines.html @ 0604f74f

History | View | Annotate | Download (16.4 kB)

1 edda4d30 Markos Gogoulos
{% load i18n %}
2 edda4d30 Markos Gogoulos
3 43df43aa Markos Gogoulos
<div id="machines" class="seperator"></div>
4 e55b8703 Christodoulos Psaltis
5 edda4d30 Markos Gogoulos
<a id="create" rel="#wizard" href="#">{% trans "Create New +" %}</a>
6 ec06b07c Dimitris Moraitis
<a id="notify" rel="#misc" href="#"></a>
7 e55b8703 Christodoulos Psaltis
<div id="view-select">
8 43df43aa Markos Gogoulos
    <a id="standard" class="current" href="/machines">#</a>
9 1dd48fea Markos Gogoulos
    <span class="view-seperator">|</span>
10 43df43aa Markos Gogoulos
    <a id="list" href="/machines/list">=</a>
11 e55b8703 Christodoulos Psaltis
</div>
12 e55b8703 Christodoulos Psaltis
13 43df43aa Markos Gogoulos
<div id="machinesview" class="standard">
14 38e2c5ed Christodoulos Psaltis
    <div id="spinner"></div>
15 c376783b Markos Gogoulos
    <div class="machine" id="machine-template" style="display:none">
16 ec06b07c Dimitris Moraitis
        <div class="state">
17 cf0eb36b Markos Gogoulos
            <div class="status">{% trans "Running" %}</div>
18 ec06b07c Dimitris Moraitis
            <div class="indicator"></div>
19 ec06b07c Dimitris Moraitis
            <div class="indicator"></div>
20 ec06b07c Dimitris Moraitis
            <div class="indicator"></div>
21 ec06b07c Dimitris Moraitis
            <div class="indicator"></div>
22 ec06b07c Dimitris Moraitis
        </div>
23 c3b3043d Dimitris Moraitis
        <img class="logo" src="" />
24 ec06b07c Dimitris Moraitis
        <a href="#" class="name">
25 b7f8c534 Christodoulos Psaltis
            <h5>Νame: <span class="name">node.name</span><span class="rename"></span></h5>
26 ec06b07c Dimitris Moraitis
        </a>
27 ec06b07c Dimitris Moraitis
        <a href="#" class="ip">
28 ec06b07c Dimitris Moraitis
            <h5>IP: <span class="public">node.public_ip</span></h5>
29 ec06b07c Dimitris Moraitis
        </a>
30 5de45a61 Christodoulos Psaltis
        <h5 class="settings">
31 cf0eb36b Markos Gogoulos
            {% trans "Show:" %} <a href="#">{% trans "disks" %}</a> | <a href="#">{% trans "networks" %}</a> | <a href="#">{% trans "group" %}</a>
32 ec06b07c Dimitris Moraitis
        </h5>
33 ec06b07c Dimitris Moraitis
        <div class="actions">
34 cf0eb36b Markos Gogoulos
            <a href="#" class="action">{% trans "Reboot" %}</a>
35 cf0eb36b Markos Gogoulos
            <a href="#" class="action">{% trans "Shutdown" %}</a>
36 c376783b Markos Gogoulos
            <a href="#" class="more">{% trans "more &hellip;" %}</a>
37 ec06b07c Dimitris Moraitis
        </div>
38 5435c65a Christodoulos Psaltis
        <div class="seperator"></div>
39 ec06b07c Dimitris Moraitis
    </div>
40 ec06b07c Dimitris Moraitis
41 5de45a61 Christodoulos Psaltis
    <div class="running"></div>
42 e55b8703 Christodoulos Psaltis
    <div id="mini" class="seperator"></div>
43 5de45a61 Christodoulos Psaltis
    <div class="terminated"></div>
44 cc7c5902 Dimitris Moraitis
</div>
45 cc7c5902 Dimitris Moraitis
46 43df43aa Markos Gogoulos
<div id="machines" class="seperator"></div>
47 e55b8703 Christodoulos Psaltis
48 cc7c5902 Dimitris Moraitis
<!-- the form -->
49 cc7c5902 Dimitris Moraitis
<form action="#">
50 cc7c5902 Dimitris Moraitis
        <!-- scrollable root element -->
51 cc7c5902 Dimitris Moraitis
        <div class="modal" id="wizard">
52 cc7c5902 Dimitris Moraitis
                <!-- status bar -->
53 cc7c5902 Dimitris Moraitis
                <ul id="status">
54 cf0eb36b Markos Gogoulos
                        <li class="active"><strong>1.</strong> {% trans "Image" %}</li>
55 c376783b Markos Gogoulos
                        <li><strong>2.</strong> {% trans "Machine" %}</li>
56 cf0eb36b Markos Gogoulos
                        <li><strong>3.</strong> {% trans "Review" %}</li>
57 cc7c5902 Dimitris Moraitis
                </ul>
58 cc7c5902 Dimitris Moraitis
                <!-- scrollable items -->
59 cc7c5902 Dimitris Moraitis
                <div class="items">
60 cc7c5902 Dimitris Moraitis
                        <!-- pages -->
61 cc7c5902 Dimitris Moraitis
                        <div class="page">
62 cf0eb36b Markos Gogoulos
                <h2>{% trans "Select an OS" %}</h2>
63 cc7c5902 Dimitris Moraitis
                <ul class="tabs">
64 cf0eb36b Markos Gogoulos
                    <li><a href="#">{% trans "standard" %}</a></li>
65 cf0eb36b Markos Gogoulos
                    <li><a href="#">{% trans "custom" %}</a></li>
66 cc7c5902 Dimitris Moraitis
                </ul>
67 89976b6c Christodoulos Psaltis
                <div class="panes">
68 ec06b07c Dimitris Moraitis
                            <li id="image-template" style="display:none">
69 ec06b07c Dimitris Moraitis
                                    <label for="image.id"> 
70 ec06b07c Dimitris Moraitis
                            <a><div class="image">
71 c3b3043d Dimitris Moraitis
                                <img src="" class="image-logo"/>
72 ec06b07c Dimitris Moraitis
                                <strong class="image-title">image.title</strong>
73 ec06b07c Dimitris Moraitis
                                <input class="radio" type="radio" name="image-id" id="image-id" />
74 ec06b07c Dimitris Moraitis
                                <br />
75 ec06b07c Dimitris Moraitis
                                <span class="description">image.description</span> 
76 ec06b07c Dimitris Moraitis
                                <span class="size">?? MB</span>
77 ec06b07c Dimitris Moraitis
                                
78 ec06b07c Dimitris Moraitis
                            </div></a>
79 ec06b07c Dimitris Moraitis
                                    </label>
80 ec06b07c Dimitris Moraitis
                            </li>
81 ec06b07c Dimitris Moraitis
                    <ul class="pane" id="standard-images">
82 cc7c5902 Dimitris Moraitis
                                            <!-- standard images -->
83 cc7c5902 Dimitris Moraitis
                                    </ul>
84 ec06b07c Dimitris Moraitis
                    <ul class="pane" id="custom-images">
85 cc7c5902 Dimitris Moraitis
                                            <!-- custom images -->
86 ec06b07c Dimitris Moraitis
87 cc7c5902 Dimitris Moraitis
                    </ul>
88 cc7c5902 Dimitris Moraitis
                </div>
89 cf0eb36b Markos Gogoulos
                                <button type="button" class="prev" id="cancel">{% trans "Cancel" %}</button>
90 cf0eb36b Markos Gogoulos
                                <button type="button" class="next right">{% trans "Next" %} &raquo;</button>
91 cc7c5902 Dimitris Moraitis
            </div>
92 cc7c5902 Dimitris Moraitis
                        <div class="page">
93 cf0eb36b Markos Gogoulos
                                <h2>{% trans "Select CPU, RAM and storage" %}</h2>
94 cc7c5902 Dimitris Moraitis
                <ul>
95 cc7c5902 Dimitris Moraitis
                    <li>
96 c376783b Markos Gogoulos
                        <div class="machine-type">
97 cc7c5902 Dimitris Moraitis
                            <label for="small">
98 c376783b Markos Gogoulos
                                <input type="radio" id="small" name="machine-type" value="small" checked="true" />
99 cf0eb36b Markos Gogoulos
                                <strong>{% trans "small" %}</strong>
100 cc7c5902 Dimitris Moraitis
                            </label>
101 cc7c5902 Dimitris Moraitis
                        </div>
102 c376783b Markos Gogoulos
                        <div class="machine-type">      
103 cc7c5902 Dimitris Moraitis
                            <label for="medium">
104 c376783b Markos Gogoulos
                                <input type="radio" id="medium" name="machine-type" value="medium" />                  
105 cf0eb36b Markos Gogoulos
                                <strong>{% trans "medium" %}</strong>
106 cc7c5902 Dimitris Moraitis
                            </label>
107 cc7c5902 Dimitris Moraitis
                        </div>
108 c376783b Markos Gogoulos
                        <div class="machine-type">
109 cc7c5902 Dimitris Moraitis
                            <label for="large">
110 c376783b Markos Gogoulos
                                <input type="radio" id="large" name="machine-type" value="large" />
111 cf0eb36b Markos Gogoulos
                                <strong>{% trans "large" %}</strong>
112 cc7c5902 Dimitris Moraitis
                            </label>
113 cc7c5902 Dimitris Moraitis
                        </div>
114 c376783b Markos Gogoulos
                        <div class="machine-type">
115 cc7c5902 Dimitris Moraitis
                            <label for="custom">
116 c376783b Markos Gogoulos
                                <input type="radio" name="machine-type" id="custom" value="large" />
117 cf0eb36b Markos Gogoulos
                                <strong>{% trans "custom" %}</strong>
118 cc7c5902 Dimitris Moraitis
                            </label>
119 cc7c5902 Dimitris Moraitis
                        </div>
120 cc7c5902 Dimitris Moraitis
                    </li>
121 cc7c5902 Dimitris Moraitis
                    <li>
122 cc7c5902 Dimitris Moraitis
                                    <label><strong class="sliders">CPU (cores)</strong></label>
123 cc7c5902 Dimitris Moraitis
                        <input type="range" id="cpu" value="1" max="8" min="1" />
124 cc7c5902 Dimitris Moraitis
                    </li>
125 cc7c5902 Dimitris Moraitis
                    <li>
126 cc7c5902 Dimitris Moraitis
                                    <label><strong class="sliders">RAM (MB)</strong></label>
127 cc7c5902 Dimitris Moraitis
                        <input type="range" id="ram" value="256" max="2048" min="256" step="256" />
128 cc7c5902 Dimitris Moraitis
                    </li>
129 cc7c5902 Dimitris Moraitis
                    <li>
130 cc7c5902 Dimitris Moraitis
                                <label><strong class="sliders">Storage (GB)</strong></label>
131 cc7c5902 Dimitris Moraitis
                        <input type="range" id="storage" value="5" step="1" max="100" min="2" />
132 cc7c5902 Dimitris Moraitis
                    </li>
133 cc7c5902 Dimitris Moraitis
                    <li>
134 cc7c5902 Dimitris Moraitis
                        <div class="cost">
135 cf0eb36b Markos Gogoulos
                            {% trans "Cost per hour:" %} 20 {% trans "credits" %} | {% trans "Credits currently in account:" %} 10.000
136 cc7c5902 Dimitris Moraitis
                        </div>
137 cc7c5902 Dimitris Moraitis
                    </li>
138 cc7c5902 Dimitris Moraitis
                </ul>
139 cf0eb36b Markos Gogoulos
                                <button type="button" class="prev">&laquo; {% trans "Back" %}</button>
140 cf0eb36b Markos Gogoulos
                                <button type="button" class="next right">{% trans "Next" %} &raquo;</button>
141 cc7c5902 Dimitris Moraitis
            </div>
142 cc7c5902 Dimitris Moraitis
                        <div class="page">
143 cf0eb36b Markos Gogoulos
                                <h2>{% trans "Confirm your settings" %}</h2>
144 cc7c5902 Dimitris Moraitis
                <ul>
145 cc7c5902 Dimitris Moraitis
                    <li class="required">
146 cc7c5902 Dimitris Moraitis
                        <label>
147 c376783b Markos Gogoulos
                            <strong>Machine name</strong>
148 c376783b Markos Gogoulos
                            <input type="text" class="text" name="machine_name" value="My Ubuntu 10.04 x86_64 server"/>
149 cc7c5902 Dimitris Moraitis
                        </label>
150 cc7c5902 Dimitris Moraitis
                    </li>
151 cc7c5902 Dimitris Moraitis
                    <li>
152 cf0eb36b Markos Gogoulos
                        <strong>{% trans "Image:" %}</strong> <span>Ubuntu 10.04 x86_64 server</span>
153 cc7c5902 Dimitris Moraitis
                    </li>
154 cc7c5902 Dimitris Moraitis
                    <li>
155 cf0eb36b Markos Gogoulos
                        <strong>{% trans "CPU:" %}</strong> <span>2 cores</span>
156 cc7c5902 Dimitris Moraitis
                    </li>
157 cc7c5902 Dimitris Moraitis
                    <li>
158 cf0eb36b Markos Gogoulos
                        <strong>{% trans "RAM:" %}</strong> <span>1024MB</span>
159 cc7c5902 Dimitris Moraitis
                    </li>
160 cc7c5902 Dimitris Moraitis
                    <li>
161 cf0eb36b Markos Gogoulos
                        <strong>{% trans "Storage:" %}</strong> <span>10GB</span>
162 cc7c5902 Dimitris Moraitis
                    </li>
163 cc7c5902 Dimitris Moraitis
                    <li>
164 cf0eb36b Markos Gogoulos
                        <strong>{% trans "Cost per hour:" %}</strong> <span>20 {% trans "credits" %}</span>
165 cc7c5902 Dimitris Moraitis
                    </li>
166 cc7c5902 Dimitris Moraitis
                    <li>
167 cf0eb36b Markos Gogoulos
                        <strong>{% trans "Remaining credits:" %}</strong> <span>10.000</span>
168 cc7c5902 Dimitris Moraitis
                    </li>
169 cc7c5902 Dimitris Moraitis
                </ul>
170 cf0eb36b Markos Gogoulos
                                <button type="button" class="prev">&laquo; {% trans "Back" %}</button>
171 cf0eb36b Markos Gogoulos
                                <button type="button" class="next right" id="start">{% trans "Create VM" %}</button>        
172 cc7c5902 Dimitris Moraitis
            </div>
173 cc7c5902 Dimitris Moraitis
                </div>
174 cc7c5902 Dimitris Moraitis
        </div>
175 cc7c5902 Dimitris Moraitis
</form>
176 cc7c5902 Dimitris Moraitis
177 8400e1a5 Markos Gogoulos
<! -- TODO: remove and put into the Create VM from the wizard -->
178 d7c4ab32 Dimitris Moraitis
<a href="#" class="post-create">Create VM</a>
179 cc7c5902 Dimitris Moraitis
180 cc7c5902 Dimitris Moraitis
<div class="modal" id="misc">
181 cc7c5902 Dimitris Moraitis
    <h3>Your VM is being created!</h3>
182 cf0eb36b Markos Gogoulos
    <p>{% trans "Your password is:" %}<strong> sdeEFre</strong></p>
183 cf0eb36b Markos Gogoulos
    <p>{% trans "Please copy this! Without it you can not connect to your VM." %}</p>
184 cc7c5902 Dimitris Moraitis
</div>
185 cc7c5902 Dimitris Moraitis
186 cc7c5902 Dimitris Moraitis
<script>
187 cc7c5902 Dimitris Moraitis
// <![CDATA[ 
188 ec06b07c Dimitris Moraitis
var image_tags = {
189 ec06b07c Dimitris Moraitis
                1: 'archlinux',
190 ec06b07c Dimitris Moraitis
                2: 'centos',
191 ec06b07c Dimitris Moraitis
                3: 'debian',
192 ec06b07c Dimitris Moraitis
                4: 'freebsd',
193 ec06b07c Dimitris Moraitis
                5: 'gentoo',
194 ec06b07c Dimitris Moraitis
                6: 'netbsd',
195 ec06b07c Dimitris Moraitis
                7: 'openbsd',
196 ec06b07c Dimitris Moraitis
                8: 'redhat',
197 ec06b07c Dimitris Moraitis
                9: 'slackware',
198 ec06b07c Dimitris Moraitis
                10: 'suse',
199 ec06b07c Dimitris Moraitis
                11: 'ubuntu',
200 ec06b07c Dimitris Moraitis
                12: 'windows',
201 cbec4223 Markos Gogoulos
                20: 'ubuntu',
202 ec06b07c Dimitris Moraitis
               };
203 ec06b07c Dimitris Moraitis

204 ec06b07c Dimitris Moraitis
function update() {
205 ec06b07c Dimitris Moraitis

206 1c86af5b Christodoulos Psaltis
    $(".running").text('');
207 1c86af5b Christodoulos Psaltis
    $(".terminated").text('');
208 ec06b07c Dimitris Moraitis
    $("ul#standard-images").text('');
209 ec06b07c Dimitris Moraitis
    $("ul#custom-images").text('');
210 ec06b07c Dimitris Moraitis

211 ec06b07c Dimitris Moraitis
    $.ajax({
212 ec06b07c Dimitris Moraitis
        url: '/api/v1.0/servers/detail',
213 ec06b07c Dimitris Moraitis
        type: "GET",
214 c3b3043d Dimitris Moraitis
    //    async: false,
215 ec06b07c Dimitris Moraitis
        dataType: "json",
216 ec06b07c Dimitris Moraitis
        success: function(data) {
217 ec06b07c Dimitris Moraitis
            $.each(data.servers, function(i,server){
218 38e2c5ed Christodoulos Psaltis

219 379a34cf Dimitris Moraitis
                var machine = $("#machine-template").clone().attr("id", server.id).fadeIn("slow");
220 379a34cf Dimitris Moraitis
                machine.find("input[type='checkbox']").attr("id", "input-" + server.id);
221 379a34cf Dimitris Moraitis
                machine.find("input[type='checkbox']").attr("class", server.status);
222 c376783b Markos Gogoulos
                machine.find("a.name span.name").text(server.name);
223 c376783b Markos Gogoulos
                machine.find("img.logo").attr("src","static/machines/"+image_tags[server.imageId]+'.png');
224 c376783b Markos Gogoulos
                machine.find("img.list-logo").attr("src","static/os_logos/"+image_tags[server.imageId]+'.png');
225 c3b3043d Dimitris Moraitis
                machine.find("img.list-logo").attr("title",image_tags[server.imageId]);
226 c3b3043d Dimitris Moraitis
                machine.find("span.imagetag").text(image_tags[server.imageId]);
227 c3b3043d Dimitris Moraitis

228 c3b3043d Dimitris Moraitis
                machine.find("a.ip span.public").text(String(server.addresses.public).replace(',',' '));            
229 cc7c5902 Dimitris Moraitis

230 2ed31bce Markos Gogoulos
                if (server.status == 'PE_VM_MIGRATING'){
231 c376783b Markos Gogoulos
                    machine.find(".status").text('Building');
232 c376783b Markos Gogoulos
                    machine.appendTo(".running");
233 2ed31bce Markos Gogoulos
                } else if (server.status == 'PE_VM_RUNNING') {
234 c376783b Markos Gogoulos
                    machine.find(".status").text('Running');
235 c376783b Markos Gogoulos
                    machine.appendTo(".running");
236 2ed31bce Markos Gogoulos
                } else if (server.status == 'PE_VM_SUSPENDED') {
237 c376783b Markos Gogoulos
                    machine.find(".status").text('Terminated');
238 c376783b Markos Gogoulos
                    machine.find("img.logo").attr("src","static/machines/"+image_tags[server.imageId]+'-off.png');
239 c376783b Markos Gogoulos
                    machine.appendTo(".terminated");
240 c5deae4a Markos Gogoulos
                    $("#mini.seperator").fadeIn("slow");
241 ec06b07c Dimitris Moraitis
                } else {
242 c376783b Markos Gogoulos
                    machine.find(".status").text('Unknown');
243 c376783b Markos Gogoulos
                    machine.find("img.logo").attr("src","static/machines/"+image_tags[server.imageId]+'-off.png');
244 c376783b Markos Gogoulos
                    machine.appendTo(".terminated");
245 ec06b07c Dimitris Moraitis
                }
246 ec06b07c Dimitris Moraitis
            });
247 36dc242e Christodoulos Psaltis
            $("div.machine:last-child").find("div.seperator").hide();
248 38e2c5ed Christodoulos Psaltis
            $("#spinner").hide();
249 c3b3043d Dimitris Moraitis
            $(".list table").show();
250 2e315183 Christodoulos Psaltis
            $(".list table").tablesorter({ 
251 c3b3043d Dimitris Moraitis
                headers: { 0: { sorter: false}, 6: { sorter: false }}, 
252 2e315183 Christodoulos Psaltis
                sortMultiSortKey: "ctrlKey" }).show();
253 1c86af5b Christodoulos Psaltis
            $(".list .actions").show();
254 ec06b07c Dimitris Moraitis
        }
255 ec06b07c Dimitris Moraitis
    });
256 ec06b07c Dimitris Moraitis

257 d66446ce Markos Gogoulos

258 ec06b07c Dimitris Moraitis
    $.ajax({
259 ec06b07c Dimitris Moraitis
        url: '/api/v1.0/images/detail',
260 ec06b07c Dimitris Moraitis
        type: "GET",
261 c3b3043d Dimitris Moraitis
    //    async: false,
262 ec06b07c Dimitris Moraitis
        dataType: "json",
263 ec06b07c Dimitris Moraitis
        success: function(data) {
264 ec06b07c Dimitris Moraitis
            $.each(data.images, function(i,image){
265 ec06b07c Dimitris Moraitis
                var img = $('#image-template').clone().attr("id","img-"+image.id).fadeIn("slow");
266 ec06b07c Dimitris Moraitis
                img.find("label").attr('for',"img-radio-" + image.id);
267 ec06b07c Dimitris Moraitis
                img.find(".image-title").text(image.name);
268 ec06b07c Dimitris Moraitis
                img.find("input.radio").attr('id',"img-radio-" + image.id);
269 ec06b07c Dimitris Moraitis
                if (i==0) img.find("input.radio").attr("checked","checked"); 
270 ec06b07c Dimitris Moraitis
                img.find("img.image-logo").attr('src','static/os_logos/'+image_tags[image.id]+'.png');
271 ec06b07c Dimitris Moraitis
                if (image.serverId) {
272 ec06b07c Dimitris Moraitis
                    img.appendTo("ul#custom-images");
273 ec06b07c Dimitris Moraitis
                } else {
274 ec06b07c Dimitris Moraitis
                    img.appendTo("ul#standard-images");
275 ec06b07c Dimitris Moraitis
                }
276 ec06b07c Dimitris Moraitis
            });
277 ec06b07c Dimitris Moraitis
        }
278 ec06b07c Dimitris Moraitis
    });
279 ccbd9f9b Markos Gogoulos

280 c3b3043d Dimitris Moraitis
//TESTING $.ajax POST+DELETE. api/handlers.py/ServerHandler and ServerActionHandler receive these calls
281 c3b3043d Dimitris Moraitis
//DELETE is working, while POST is not (maybe this has to do with piston+django csrf?
282 c3b3043d Dimitris Moraitis
/*
283 ccbd9f9b Markos Gogoulos
    $.ajax({
284 ccbd9f9b Markos Gogoulos
        url: '/api/v1.0/servers/1234/action',
285 ccbd9f9b Markos Gogoulos
        type: "POST",
286 ccbd9f9b Markos Gogoulos
        data: {
287 c3b3043d Dimitris Moraitis
                  "reboot": {
288 c3b3043d Dimitris Moraitis
                      "type" : "HARD"
289 c3b3043d Dimitris Moraitis
                  }
290 c3b3043d Dimitris Moraitis
               },
291 ccbd9f9b Markos Gogoulos
        dataType: "json",
292 c3b3043d Dimitris Moraitis
        success: function() {
293 c3b3043d Dimitris Moraitis
                            }
294 c3b3043d Dimitris Moraitis
            });
295 c3b3043d Dimitris Moraitis

296 c3b3043d Dimitris Moraitis

297 ccbd9f9b Markos Gogoulos

298 ccbd9f9b Markos Gogoulos
    $.ajax({
299 ccbd9f9b Markos Gogoulos
        url: '/api/v1.0/servers/1234',
300 ccbd9f9b Markos Gogoulos
        type: "DELETE",
301 c3b3043d Dimitris Moraitis
    //    async: false,
302 ccbd9f9b Markos Gogoulos
        dataType: "json",
303 c3b3043d Dimitris Moraitis
        success: function(data) {
304 c3b3043d Dimitris Moraitis
}
305 c3b3043d Dimitris Moraitis
           });
306 c3b3043d Dimitris Moraitis
*/
307 c3b3043d Dimitris Moraitis
//DELETE TILL HERE
308 c3b3043d Dimitris Moraitis
}
309 c3b3043d Dimitris Moraitis

310 c3b3043d Dimitris Moraitis

311 c3b3043d Dimitris Moraitis
update();
312 38e2c5ed Christodoulos Psaltis

313 5006d438 Christodoulos Psaltis
// switch to list view
314 cc7c5902 Dimitris Moraitis
$("#list").click(function(event){
315 43df43aa Markos Gogoulos
    $("div.standard#machinesview").load($("#list").attr("href"));
316 e55b8703 Christodoulos Psaltis
    $("a#standard")[0].className += ' activelink'
317 e55b8703 Christodoulos Psaltis
    this.style.color = '#5f8dd3';
318 ec06b07c Dimitris Moraitis
    update(); 
319 ec06b07c Dimitris Moraitis
    return false;
320 ec06b07c Dimitris Moraitis
});
321 ec06b07c Dimitris Moraitis

322 ec06b07c Dimitris Moraitis
$("a#standard").click(function(event){
323 ec06b07c Dimitris Moraitis
    href=$("a#standard").attr("href");
324 43df43aa Markos Gogoulos
    $("div.pane#machines-pane").load(href);
325 ec06b07c Dimitris Moraitis
    //$("a#standard")[0].className += ' activelink'
326 ec06b07c Dimitris Moraitis
    //this.style.color = '#5f8dd3';
327 cc7c5902 Dimitris Moraitis
    return false;
328 cc7c5902 Dimitris Moraitis
});
329 cc7c5902 Dimitris Moraitis

330 cc7c5902 Dimitris Moraitis
$("ul.tabs").tabs("div.panes ul");
331 cc7c5902 Dimitris Moraitis

332 3141976d Christodoulos Psaltis
$(":range").rangeinput({progress:true});
333 cc7c5902 Dimitris Moraitis

334 cc7c5902 Dimitris Moraitis
function disableSliders() {
335 cc7c5902 Dimitris Moraitis
    $("#cpu").attr('disabled',true);
336 cc7c5902 Dimitris Moraitis
    $("#ram").attr('disabled',true);
337 cc7c5902 Dimitris Moraitis
    $("#storage").attr('disabled',true);
338 cc7c5902 Dimitris Moraitis
}
339 cc7c5902 Dimitris Moraitis

340 cc7c5902 Dimitris Moraitis
$("#custom").click(function(event){
341 cc7c5902 Dimitris Moraitis
    $("#cpu").attr('disabled',false);
342 cc7c5902 Dimitris Moraitis
    $("#ram").attr('disabled',false);
343 cc7c5902 Dimitris Moraitis
    $("#storage").attr('disabled',false);
344 cc7c5902 Dimitris Moraitis
    $("strong.sliders").style = 'color: #778899;';
345 cc7c5902 Dimitris Moraitis
});
346 cc7c5902 Dimitris Moraitis

347 cc7c5902 Dimitris Moraitis
$("#small").click(function(event){
348 cc7c5902 Dimitris Moraitis
    $("#cpu").data('rangeinput').setValue(1);
349 cc7c5902 Dimitris Moraitis
    $("#ram").data('rangeinput').setValue(256);
350 cc7c5902 Dimitris Moraitis
    $("#storage").data('rangeinput').setValue(5);
351 cc7c5902 Dimitris Moraitis
});
352 cc7c5902 Dimitris Moraitis

353 cc7c5902 Dimitris Moraitis
$("#medium").click(function(event){
354 cc7c5902 Dimitris Moraitis
    $("#cpu").data('rangeinput').setValue(4);
355 cc7c5902 Dimitris Moraitis
    $("#ram").data('rangeinput').setValue(1024);
356 cc7c5902 Dimitris Moraitis
    $("#storage").data('rangeinput').setValue(30);
357 cc7c5902 Dimitris Moraitis
});
358 cc7c5902 Dimitris Moraitis

359 cc7c5902 Dimitris Moraitis
$("#large").click(function(event){
360 cc7c5902 Dimitris Moraitis
    $("#cpu").data('rangeinput').setValue(8);
361 cc7c5902 Dimitris Moraitis
    $("#ram").data('rangeinput').setValue(4096);
362 cc7c5902 Dimitris Moraitis
    $("#storage").data('rangeinput').setValue(80);
363 cc7c5902 Dimitris Moraitis
});
364 cc7c5902 Dimitris Moraitis

365 cc7c5902 Dimitris Moraitis
$("#cancel").click(function(event){
366 cc7c5902 Dimitris Moraitis
    $("a#create[rel]").overlay().close();
367 cc7c5902 Dimitris Moraitis
});
368 cc7c5902 Dimitris Moraitis

369 cc7c5902 Dimitris Moraitis
$("#start").click(function(event){
370 ec06b07c Dimitris Moraitis
    var triggers = $("a#notify").overlay({
371 cc7c5902 Dimitris Moraitis
            // some mask tweaks suitable for modal dialogs
372 cc7c5902 Dimitris Moraitis
            mask: {
373 cc7c5902 Dimitris Moraitis
                    color: '#ebecff',
374 cc7c5902 Dimitris Moraitis
                    opacity: '0.9'
375 cc7c5902 Dimitris Moraitis
            },
376 cc7c5902 Dimitris Moraitis
        top: 'center',
377 ec06b07c Dimitris Moraitis
            closeOnClick: false,
378 ec06b07c Dimitris Moraitis
        oneInstance: false,
379 6feab707 Dimitris Moraitis
        load: true,
380 6feab707 Dimitris Moraitis
        onClose: function(event){
381 43df43aa Markos Gogoulos
            $("div.pane#machines-pane").load($("a#standard").attr("href"));
382 6feab707 Dimitris Moraitis
        }
383 cc7c5902 Dimitris Moraitis
    });
384 ec06b07c Dimitris Moraitis
    $("#wizard").hide();
385 ec06b07c Dimitris Moraitis
    update();
386 cc7c5902 Dimitris Moraitis
});
387 cc7c5902 Dimitris Moraitis

388 cc7c5902 Dimitris Moraitis
$("a#create").click(function(event){
389 cc7c5902 Dimitris Moraitis
    $("#wizard").scrollable().begin();
390 cc7c5902 Dimitris Moraitis
});
391 cc7c5902 Dimitris Moraitis

392 cc7c5902 Dimitris Moraitis
$("#cpu").change(function(event){
393 cc7c5902 Dimitris Moraitis
    $("#custom").click();
394 cc7c5902 Dimitris Moraitis
});
395 cc7c5902 Dimitris Moraitis

396 cc7c5902 Dimitris Moraitis
$("#ram").change(function(event){
397 cc7c5902 Dimitris Moraitis
    $("#custom").click();
398 cc7c5902 Dimitris Moraitis
});
399 cc7c5902 Dimitris Moraitis

400 cc7c5902 Dimitris Moraitis
$("#storage").change(function(event){
401 cc7c5902 Dimitris Moraitis
    $("#custom").click();
402 cc7c5902 Dimitris Moraitis
});
403 cc7c5902 Dimitris Moraitis

404 cc7c5902 Dimitris Moraitis
$(function() { 
405 ec06b07c Dimitris Moraitis
    $("a#create[rel]").overlay({mask: '#000', effect: 'default', top: '5%', oneInstance: false, closeOnClick: false});
406 cc7c5902 Dimitris Moraitis
});
407 cc7c5902 Dimitris Moraitis

408 cc7c5902 Dimitris Moraitis
$(function() {
409 cc7c5902 Dimitris Moraitis
    var root = $("#wizard").scrollable();
410 cc7c5902 Dimitris Moraitis

411 cc7c5902 Dimitris Moraitis
    // some variables that we need
412 cc7c5902 Dimitris Moraitis
    var api = root.scrollable();
413 cc7c5902 Dimitris Moraitis

414 cc7c5902 Dimitris Moraitis
    // rangeinput with default configuration
415 cc7c5902 Dimitris Moraitis
    // validation logic is done inside the onBeforeSeek callback
416 cc7c5902 Dimitris Moraitis
    api.onBeforeSeek(function(event, i) {
417 cc7c5902 Dimitris Moraitis
            // we are going 1 step backwards so no need for validation
418 cc7c5902 Dimitris Moraitis
            if (api.getIndex() < i) {
419 cc7c5902 Dimitris Moraitis
             // 1. get current page
420 cc7c5902 Dimitris Moraitis
                     var page = root.find(".page").eq(api.getIndex()),
421 cc7c5902 Dimitris Moraitis
                         // 2. .. and all required fields inside the page
422 cc7c5902 Dimitris Moraitis
                         inputs = page.find(".required :input").removeClass("error"),
423 cc7c5902 Dimitris Moraitis
                         // 3. .. which are empty
424 cc7c5902 Dimitris Moraitis
                         empty = inputs.filter(function() {
425 cc7c5902 Dimitris Moraitis
                                return $(this).val().replace(/\s*/g, '') == '';
426 cc7c5902 Dimitris Moraitis
                         });
427 cc7c5902 Dimitris Moraitis
                     // if there are empty fields, then
428 cc7c5902 Dimitris Moraitis
                    if (empty.length) {
429 cc7c5902 Dimitris Moraitis
                            // add a CSS class name "error" for empty & required fields
430 cc7c5902 Dimitris Moraitis
                            empty.addClass("error");
431 cc7c5902 Dimitris Moraitis
                            // cancel seeking of the scrollable by returning false
432 cc7c5902 Dimitris Moraitis
                            return false;
433 cc7c5902 Dimitris Moraitis
                    // everything is good
434 cc7c5902 Dimitris Moraitis
                    } 
435 cc7c5902 Dimitris Moraitis
            }
436 cc7c5902 Dimitris Moraitis
            // update status bar
437 cc7c5902 Dimitris Moraitis
            $("#status li").removeClass("active").eq(i).addClass("active");
438 cc7c5902 Dimitris Moraitis
    });
439 cc7c5902 Dimitris Moraitis

440 cc7c5902 Dimitris Moraitis
    // if tab is pressed on the next button seek to next page
441 cc7c5902 Dimitris Moraitis
    root.find("button.next").keydown(function(e) {
442 cc7c5902 Dimitris Moraitis
            if (e.keyCode == 9) {
443 cc7c5902 Dimitris Moraitis
                    // seeks to next tab by executing our validation routine
444 cc7c5902 Dimitris Moraitis
                    api.next();
445 cc7c5902 Dimitris Moraitis
                    e.preventDefault();
446 cc7c5902 Dimitris Moraitis
            }
447 cc7c5902 Dimitris Moraitis
    });
448 cc7c5902 Dimitris Moraitis
// ]]>
449 cc7c5902 Dimitris Moraitis
});
450 8400e1a5 Markos Gogoulos

451 8400e1a5 Markos Gogoulos
// create action
452 8400e1a5 Markos Gogoulos
$(".post-create").click(function() {
453 8400e1a5 Markos Gogoulos
    $.ajax({
454 8400e1a5 Markos Gogoulos
        url: '/api/v1.0/servers',
455 8400e1a5 Markos Gogoulos
        type: "POST",
456 8400e1a5 Markos Gogoulos
        data: {
457 8400e1a5 Markos Gogoulos
            "create": {"foo" : "foo"}
458 8400e1a5 Markos Gogoulos
            },
459 8400e1a5 Markos Gogoulos
        //TODO: get the real data
460 8400e1a5 Markos Gogoulos
        //async: false,
461 8400e1a5 Markos Gogoulos
        dataType: "json",
462 8400e1a5 Markos Gogoulos
        success: function() {}
463 8400e1a5 Markos Gogoulos
    });
464 8400e1a5 Markos Gogoulos
});
465 8400e1a5 Markos Gogoulos
</script>