Statistics
| Branch: | Tag: | Revision:

root / ui / templates / machines.html @ 08cc1924

History | View | Annotate | Download (26.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 6902f72e clopy
<div id="createcontainer">
7 5ef04f85 Constantinos Venetsanopoulos
    <span id="createbody">{% trans "Start by creating a new Virtual Machine:" %}</span><br />
8 6902f72e clopy
    <a id="create" rel="#wizard" href="#">{% trans "Create New +" %}</a>
9 6902f72e clopy
</div>
10 d165dbb4 Christodoulos Psaltis
11 d165dbb4 Christodoulos Psaltis
<!-- changing between standard/list view -->
12 e55b8703 Christodoulos Psaltis
<div id="view-select">
13 aa1e0cab Markos Gogoulos
    <a id="standard" href="/machines/standard"></a>
14 aa1e0cab Markos Gogoulos
    <a id="list" href="/machines/list"></a>
15 aa1e0cab Markos Gogoulos
    <a id="single" href="#"></a>
16 e55b8703 Christodoulos Psaltis
</div>
17 e55b8703 Christodoulos Psaltis
18 6902f72e clopy
<div id="emptymachineslist"><h1 id="welcomeheader">{% trans "Welcome to the ocean!" %}</h1><br />
19 09ec6db2 clopy
    <span class="welcomebody">{% trans "From this panel you will be able to manage your Virtual Machines (VMs). If you don't know what a VM is: take the " %}<a href="#">{% trans "tour" %}</a>.</span><br /><br />
20 09ec6db2 clopy
    <span class="welcomebody">{% trans "The panel is currently empty, because you don't have any VMs yet. You can start by creating your new VM by clicking the blue button on the right. The wizard will guide you through the hole process." %}</span><br /><br />
21 5ef04f85 Constantinos Venetsanopoulos
    <span class="welcomefooter">{% trans "For more information or help, click " %}<a href="#">{% trans "here" %}</a>.</span>
22 6902f72e clopy
</div>
23 6902f72e clopy
24 cc7c5902 Dimitris Moraitis
<!-- the form -->
25 cc7c5902 Dimitris Moraitis
<form action="#">
26 cc7c5902 Dimitris Moraitis
        <!-- scrollable root element -->
27 cc7c5902 Dimitris Moraitis
        <div class="modal" id="wizard">
28 cc7c5902 Dimitris Moraitis
                <!-- status bar -->
29 cc7c5902 Dimitris Moraitis
                <ul id="status">
30 afa2ebd2 Mike Muzurakis
                        <li class="active"><span class="headernumber" class="first">1</span><div class="headerbody first">{% trans "Image" %}</div></li>
31 94adeabb Mike Muzurakis
                        <li><span class="headernumber">2</span><div class="headerbody">{% trans "Flavor" %}</div></li>
32 cf93419a Mike Muzurakis
                        <li class="third"><span class="headernumber">3</span><div class="headerbody">{% trans "Name" %}</div></li>
33 cc7c5902 Dimitris Moraitis
                </ul>
34 cc7c5902 Dimitris Moraitis
                <!-- scrollable items -->
35 cc7c5902 Dimitris Moraitis
                <div class="items">
36 cc7c5902 Dimitris Moraitis
                        <!-- pages -->
37 cc7c5902 Dimitris Moraitis
                        <div class="page">
38 cf0eb36b Markos Gogoulos
                <h2>{% trans "Select an OS" %}</h2>
39 94adeabb Mike Muzurakis
                <hr class="topruler" />
40 cc7c5902 Dimitris Moraitis
                <ul class="tabs">
41 94adeabb Mike Muzurakis
                    <li><a href="#">{% trans "system images" %}</a></li>
42 cf93419a Mike Muzurakis
                    <li><a href="#">{% trans "custom images" %}</a></li>
43 cc7c5902 Dimitris Moraitis
                </ul>
44 89976b6c Christodoulos Psaltis
                <div class="panes">
45 ec06b07c Dimitris Moraitis
                            <li id="image-template" style="display:none">
46 ec06b07c Dimitris Moraitis
                                    <label for="image.id"> 
47 9b1b6f3a Christodoulos Psaltis
                            <a>
48 94adeabb Mike Muzurakis
                                <div class="image-container">
49 94adeabb Mike Muzurakis
                                    <div class="image">
50 3091ead5 Mike Muzurakis
                                        <input class="radio" type="radio" name="image-id" id="image-id" />
51 94adeabb Mike Muzurakis
                                        <img src="" class="image-logo"/>
52 94adeabb Mike Muzurakis
                                        <strong class="image-title">image.title</strong>
53 94adeabb Mike Muzurakis
                                        <br />
54 94adeabb Mike Muzurakis
                                        <span class="description">image.description</span> 
55 cf93419a Mike Muzurakis
                                        <span id="size" class="size">?? MB</span><span class="size"> MB</span>                         
56 94adeabb Mike Muzurakis
                                    </div>
57 94adeabb Mike Muzurakis
                                </div>  
58 9b1b6f3a Christodoulos Psaltis
                            </a>
59 ec06b07c Dimitris Moraitis
                                    </label>
60 ec06b07c Dimitris Moraitis
                            </li>
61 ec06b07c Dimitris Moraitis
                    <ul class="pane" id="standard-images">
62 cc7c5902 Dimitris Moraitis
                                            <!-- standard images -->
63 cc7c5902 Dimitris Moraitis
                                    </ul>
64 ec06b07c Dimitris Moraitis
                    <ul class="pane" id="custom-images">
65 cc7c5902 Dimitris Moraitis
                                            <!-- custom images -->
66 cc7c5902 Dimitris Moraitis
                    </ul>
67 cc7c5902 Dimitris Moraitis
                </div>
68 94adeabb Mike Muzurakis
                <hr class="bottomruler" />
69 cf0eb36b Markos Gogoulos
                                <button type="button" class="prev" id="cancel">{% trans "Cancel" %}</button>
70 94adeabb Mike Muzurakis
                                <button type="button" class="next right">{% trans "Next" %}</button>
71 cc7c5902 Dimitris Moraitis
            </div>
72 cc7c5902 Dimitris Moraitis
                        <div class="page">
73 94adeabb Mike Muzurakis
                                <h2>{% trans "Select CPUs, RAM and Disk Size" %}</h2>
74 94adeabb Mike Muzurakis
                <hr class="topruler" />
75 cc7c5902 Dimitris Moraitis
                <ul>
76 94adeabb Mike Muzurakis
                    <li id="machinetype">
77 c376783b Markos Gogoulos
                        <div class="machine-type">
78 94adeabb Mike Muzurakis
                            <label for="small" id="small">
79 c376783b Markos Gogoulos
                                <input type="radio" id="small" name="machine-type" value="small" checked="true" />
80 afa2ebd2 Mike Muzurakis
                                <span class="typebody" id="small-body">{% trans "small" %}</span>
81 cc7c5902 Dimitris Moraitis
                            </label>
82 cc7c5902 Dimitris Moraitis
                        </div>
83 c376783b Markos Gogoulos
                        <div class="machine-type">      
84 94adeabb Mike Muzurakis
                            <label for="medium" id="medium">
85 c376783b Markos Gogoulos
                                <input type="radio" id="medium" name="machine-type" value="medium" />                  
86 afa2ebd2 Mike Muzurakis
                                <span class="typebody" id="medium-body">{% trans "medium" %}</span>
87 cc7c5902 Dimitris Moraitis
                            </label>
88 cc7c5902 Dimitris Moraitis
                        </div>
89 c376783b Markos Gogoulos
                        <div class="machine-type">
90 94adeabb Mike Muzurakis
                            <label for="large" id="large">
91 c376783b Markos Gogoulos
                                <input type="radio" id="large" name="machine-type" value="large" />
92 afa2ebd2 Mike Muzurakis
                                <span class="typebody" id="large-body">{% trans "large" %}</span>
93 cc7c5902 Dimitris Moraitis
                            </label>
94 cc7c5902 Dimitris Moraitis
                        </div>
95 c376783b Markos Gogoulos
                        <div class="machine-type">
96 94adeabb Mike Muzurakis
                            <label for="custom" id="custom">
97 c376783b Markos Gogoulos
                                <input type="radio" name="machine-type" id="custom" value="large" />
98 afa2ebd2 Mike Muzurakis
                                <span class="typebody" id="custom-body">{% trans "custom" %}</span>
99 cc7c5902 Dimitris Moraitis
                            </label>
100 cc7c5902 Dimitris Moraitis
                        </div>
101 cc7c5902 Dimitris Moraitis
                    </li>
102 94adeabb Mike Muzurakis
                    <div id="page2-container">
103 94adeabb Mike Muzurakis
                        <li class="slider-container">
104 94adeabb Mike Muzurakis
                                        <label><strong class="sliders">CPUs</strong></label>
105 94adeabb Mike Muzurakis
                            <input type="range" id="cpu" style="display:none" />
106 94adeabb Mike Muzurakis
                            <input type="text" class="range" id="cpu-indicator" />
107 94adeabb Mike Muzurakis
                                        <span class="units">cores</span>
108 94adeabb Mike Muzurakis
                        </li>
109 94adeabb Mike Muzurakis
                        <li class="slider-container">
110 94adeabb Mike Muzurakis
                                        <label><strong class="sliders">RAM</strong></label>
111 94adeabb Mike Muzurakis
                            <input type="range" id="ram" style="display:none" />
112 94adeabb Mike Muzurakis
                            <input type="text" class="range" id="ram-indicator" />
113 94adeabb Mike Muzurakis
                                        <span class="units">MB</span>
114 94adeabb Mike Muzurakis
                        </li>
115 94adeabb Mike Muzurakis
                        <li class="slider-container">
116 94adeabb Mike Muzurakis
                                    <label><strong class="sliders">Size</strong></label>
117 94adeabb Mike Muzurakis
                            <input type="range" id="storage" style="display:none" />
118 94adeabb Mike Muzurakis
                            <input type="text" class="range" id="storage-indicator" />
119 94adeabb Mike Muzurakis
                                        <span class="units">GB</span>
120 94adeabb Mike Muzurakis
                        </li>
121 94adeabb Mike Muzurakis
                        <li>
122 94adeabb Mike Muzurakis
                            <div class="cost">
123 99721d83 Mike Muzurakis
                                <span> {% trans "Your wallet:" %} 10,000 Credits </span> | <span>{% trans "This setup will cost you:" %}<input type="text" id="credits-indicator" value="20" class="range" disabled="disabled" /> {% trans "C/hour" %}</span>
124 94adeabb Mike Muzurakis
                            </div>
125 94adeabb Mike Muzurakis
                        </li>
126 94adeabb Mike Muzurakis
                    </div>
127 cc7c5902 Dimitris Moraitis
                </ul>
128 94adeabb Mike Muzurakis
                <hr class="bottomruler" />
129 94adeabb Mike Muzurakis
                                <button type="button" class="prev">{% trans "Back" %}</button>
130 94adeabb Mike Muzurakis
                                <button type="button" class="next right">{% trans "Next" %}</button>
131 cc7c5902 Dimitris Moraitis
            </div>
132 cc7c5902 Dimitris Moraitis
                        <div class="page">
133 cf0eb36b Markos Gogoulos
                                <h2>{% trans "Confirm your settings" %}</h2>
134 94adeabb Mike Muzurakis
                <hr class="topruler" />
135 94adeabb Mike Muzurakis
                <ul id="page3-container">
136 afa2ebd2 Mike Muzurakis
                    <li class="required" id="label-name">
137 cc7c5902 Dimitris Moraitis
                        <label>
138 94adeabb Mike Muzurakis
                            <strong>Name:</strong>
139 cae67343 Mike Muzurakis
                            <input type="text" class="text" name="machine_name" id="name" value="My Ubuntu 10.04 x86_64 server"/>
140 cc7c5902 Dimitris Moraitis
                        </label>
141 cc7c5902 Dimitris Moraitis
                    </li>
142 cc7c5902 Dimitris Moraitis
                    <li>
143 94adeabb Mike Muzurakis
                        <span>{% trans "Image:" %}</span> <span id="machine_image-label">Ubuntu 10.04 x86_64 server</span>
144 cc7c5902 Dimitris Moraitis
                    </li>
145 cc7c5902 Dimitris Moraitis
                    <li>
146 94adeabb Mike Muzurakis
                        <span>{% trans "CPUs:" %}</span> <span id="machine_cpu-label">2</span> <span>{% trans "cores" %}</span>
147 cc7c5902 Dimitris Moraitis
                    </li>
148 cc7c5902 Dimitris Moraitis
                    <li>
149 94adeabb Mike Muzurakis
                        <span>{% trans "RAM:" %}</span> <span id="machine_ram-label">1024</span><span>MB</span>
150 cc7c5902 Dimitris Moraitis
                    </li>
151 cc7c5902 Dimitris Moraitis
                    <li>
152 94adeabb Mike Muzurakis
                        <span>{% trans "System Disk:" %}</span> <span id="machine_storage-label">10</span><span>GB</span>
153 cc7c5902 Dimitris Moraitis
                    </li>
154 cc7c5902 Dimitris Moraitis
                    <li>
155 94adeabb Mike Muzurakis
                        <span>{% trans "Cost per Hour:" %}</span> <span>40 {% trans "credits" %}</span>
156 cc7c5902 Dimitris Moraitis
                    </li>
157 cc7c5902 Dimitris Moraitis
                    <li>
158 94adeabb Mike Muzurakis
                        <span>{% trans "Credits in Wallet:" %}</span> <span>10.000</span>
159 cc7c5902 Dimitris Moraitis
                    </li>
160 cc7c5902 Dimitris Moraitis
                </ul>
161 94adeabb Mike Muzurakis
                <hr class="bottomruler" />
162 94adeabb Mike Muzurakis
                                <button type="button" class="prev">{% trans "Back" %}</button>
163 cf0eb36b Markos Gogoulos
                                <button type="button" class="next right" id="start">{% trans "Create VM" %}</button>        
164 cc7c5902 Dimitris Moraitis
            </div>
165 cc7c5902 Dimitris Moraitis
                </div>
166 cc7c5902 Dimitris Moraitis
        </div>
167 cc7c5902 Dimitris Moraitis
</form>
168 cc7c5902 Dimitris Moraitis
169 339712cb Christodoulos Psaltis
<!-- base notification for error/success reporting -->
170 f58ec963 Christodoulos Psaltis
<a id="notification" rel="#error-success" href="#"></a>
171 d165dbb4 Christodoulos Psaltis
172 f58ec963 Christodoulos Psaltis
<div class="modal" id="error-success">
173 f58ec963 Christodoulos Psaltis
    <h3>{% trans "Error!/Success!" %}</h3>
174 038383b1 Dimitris Moraitis
    <div><p>{% trans "More details about the result"%}</p></div>
175 cc7c5902 Dimitris Moraitis
</div>
176 cc7c5902 Dimitris Moraitis
177 d165dbb4 Christodoulos Psaltis
178 339712cb Christodoulos Psaltis
<a id="meta-editor-1" rel="#editor-1" href="#"></a>
179 339712cb Christodoulos Psaltis
180 295800ec Christodoulos Psaltis
<div class="meta-modal" id="editor-1">
181 339712cb Christodoulos Psaltis
    <h3>
182 1027802d Christodoulos Psaltis
        <label>{% trans "Metadata for machine:" %}</label>
183 339712cb Christodoulos Psaltis
        <span></span>
184 339712cb Christodoulos Psaltis
    </h3>
185 339712cb Christodoulos Psaltis
    <hr class="topruler" />
186 295800ec Christodoulos Psaltis
    <hr class="fatruler" />
187 295800ec Christodoulos Psaltis
    <div class="content">
188 5186eb04 Christodoulos Psaltis
        <ul class="meta-template" style="display:none">
189 5186eb04 Christodoulos Psaltis
            <li>
190 339712cb Christodoulos Psaltis
                <label>{% trans "Metadata key" %}</label>
191 339712cb Christodoulos Psaltis
                <button type="button" class="remove">{% trans "remove x" %}</button>
192 339712cb Christodoulos Psaltis
                <hr class="meta-separator">
193 339712cb Christodoulos Psaltis
                <p>{% trans "Metadata value" %}</p>
194 339712cb Christodoulos Psaltis
                <button type="button" class="edit">{% trans "edit" %}</button>
195 339712cb Christodoulos Psaltis
            </li>
196 339712cb Christodoulos Psaltis
        </ul>
197 5186eb04 Christodoulos Psaltis
        <ul class="meta-list">
198 5186eb04 Christodoulos Psaltis
        </ul>
199 339712cb Christodoulos Psaltis
    </div>
200 339712cb Christodoulos Psaltis
    <button type="button" class="create">{% trans "Create New+" %}</button>
201 0c1f14ed Christodoulos Psaltis
    <div class="bottomruler" /> 
202 339712cb Christodoulos Psaltis
</div>
203 339712cb Christodoulos Psaltis
204 339712cb Christodoulos Psaltis
<a id="meta-editor-2" rel="#editor-2" href="#"></a>
205 339712cb Christodoulos Psaltis
206 295800ec Christodoulos Psaltis
<div class="meta-modal" id="editor-2">
207 339712cb Christodoulos Psaltis
    <h3>
208 1027802d Christodoulos Psaltis
        <label>{% trans "Metadata for machine:" %}</label>
209 339712cb Christodoulos Psaltis
        <span></span>
210 339712cb Christodoulos Psaltis
    </h3>
211 339712cb Christodoulos Psaltis
    <hr class="topruler" />
212 339712cb Christodoulos Psaltis
    <hr class="fatruler" />
213 295800ec Christodoulos Psaltis
    <div class="content">
214 295800ec Christodoulos Psaltis
        <label class="meta-key">{% trans "Key:" %}</label>
215 295800ec Christodoulos Psaltis
        <input type="text" maxlength="15" class="key" value="max 15 characters"/>
216 295800ec Christodoulos Psaltis
        <hr class="meta-separator">
217 295800ec Christodoulos Psaltis
        <label class="meta-value">{% trans "Value:" %}</label>
218 295800ec Christodoulos Psaltis
        <input type="text" maxlength="150" class="value" value="max 150 characters"/>
219 295800ec Christodoulos Psaltis
    </div>
220 67679131 Christodoulos Psaltis
    <button type="button" class="cancel">{% trans "Cancel" %}</button>
221 67679131 Christodoulos Psaltis
    <button type="button" class="save">{% trans "Save" %}</button>
222 0c1f14ed Christodoulos Psaltis
    <div class="bottomruler" /> 
223 d165dbb4 Christodoulos Psaltis
</div>
224 d165dbb4 Christodoulos Psaltis
225 42f67a2a Dimitris Moraitis
<div id="machinesview"></div>
226 42f67a2a Dimitris Moraitis
227 267403ca Dimitris Moraitis
<div class="confirm_multiple">
228 3d286f84 Dimitris Moraitis
    <p>{% trans "Your actions will affect" %} <span class="actionLen">XX</span> {% trans "machines" %}</p>
229 2cd96cc7 Vangelis Koukis
    <button class="yes">{% trans "Confirm All" %}</button>
230 2cd96cc7 Vangelis Koukis
        <button class="no">{% trans "Cancel All" %}</button>
231 d725fb12 Christodoulos Psaltis
</div>
232 31343277 Christodoulos Psaltis
233 5b147126 Christodoulos Psaltis
<div id="machines" class="separator"></div>
234 5b147126 Christodoulos Psaltis
235 cc7c5902 Dimitris Moraitis
<script>
236 afa2ebd2 Mike Muzurakis
//add hover to labels
237 afa2ebd2 Mike Muzurakis
$('span.typebody').mouseover(function() {
238 cf93419a Mike Muzurakis
    $(this).addClass('typehover');
239 afa2ebd2 Mike Muzurakis
});
240 afa2ebd2 Mike Muzurakis
$('span.typebody').mouseout(function() {
241 cf93419a Mike Muzurakis
    $(this).removeClass('typehover');
242 afa2ebd2 Mike Muzurakis
});
243 afa2ebd2 Mike Muzurakis

244 a64e74f0 Markos Gogoulos
// return value from metadata key "OS", if it exists
245 a64e74f0 Markos Gogoulos
function os_icon(metadata) {
246 a64e74f0 Markos Gogoulos
    if (!metadata) {
247 a64e74f0 Markos Gogoulos
        return 'unknown';
248 a64e74f0 Markos Gogoulos
    }
249 a64e74f0 Markos Gogoulos

250 a64e74f0 Markos Gogoulos
    if (metadata.values.OS == undefined || metadata.values.OS == '') {
251 a64e74f0 Markos Gogoulos
        return 'unknown';
252 a64e74f0 Markos Gogoulos
    } else {
253 a64e74f0 Markos Gogoulos
        return metadata.values.OS;
254 a64e74f0 Markos Gogoulos
    }
255 a64e74f0 Markos Gogoulos
} 
256 a64e74f0 Markos Gogoulos

257 fb66080c Dimitris Moraitis
// switch to list view
258 9b1b6f3a Christodoulos Psaltis
$("a#list").click(function(){
259 9b1b6f3a Christodoulos Psaltis
    list_view(); 
260 9b1b6f3a Christodoulos Psaltis
    return false;
261 9b1b6f3a Christodoulos Psaltis
});
262 fb66080c Dimitris Moraitis

263 9b1b6f3a Christodoulos Psaltis
// switch to standard view
264 9b1b6f3a Christodoulos Psaltis
$("a#standard").click(function(){
265 9b1b6f3a Christodoulos Psaltis
    standard_view();
266 9b1b6f3a Christodoulos Psaltis
    return false;
267 9b1b6f3a Christodoulos Psaltis
});
268 38e2c5ed Christodoulos Psaltis

269 bd8b1d60 Christodoulos Psaltis
// launch VM creation wizard
270 8fd5c3a5 Christodoulos Psaltis
$("a#create").click(function(){
271 146b6003 Dimitris Moraitis
    // launch wizard only if images and flavors are found
272 146b6003 Dimitris Moraitis
    if (images.length > 0  && flavors.length > 0) {
273 a3e418b1 Markos Gogoulos
        $("#wizard").scrollable().begin();
274 a3e418b1 Markos Gogoulos
        $("#wizard").show();
275 146b6003 Dimitris Moraitis
        $('a#create').data('overlay').load()   
276 146b6003 Dimitris Moraitis
    } else if (images.length == 0 ) {
277 146b6003 Dimitris Moraitis
        ajax_error('NO_IMAGES');
278 146b6003 Dimitris Moraitis
        return false;   
279 146b6003 Dimitris Moraitis
    } else if (flavors.length == 0) {
280 146b6003 Dimitris Moraitis
        ajax_error('NO_FLAVORS');
281 146b6003 Dimitris Moraitis
        return false;
282 146b6003 Dimitris Moraitis
    }
283 ec06b07c Dimitris Moraitis
});
284 ec06b07c Dimitris Moraitis

285 f124656b Christodoulos Psaltis
// create wizard overlay
286 f124656b Christodoulos Psaltis
$(function() { 
287 4e5d5e70 Christodoulos Psaltis
    $("a#create").overlay({
288 f124656b Christodoulos Psaltis
        mask: '#000', 
289 f124656b Christodoulos Psaltis
        effect: 'default', 
290 f124656b Christodoulos Psaltis
        top: '5%', 
291 f124656b Christodoulos Psaltis
        oneInstance: false,
292 f974b570 Dimitris Moraitis
        closeOnClick: false
293 f124656b Christodoulos Psaltis
    });
294 f124656b Christodoulos Psaltis
});
295 f124656b Christodoulos Psaltis

296 bd8b1d60 Christodoulos Psaltis
// wizard
297 bd8b1d60 Christodoulos Psaltis
$(function() {
298 bd8b1d60 Christodoulos Psaltis
    var root = $("#wizard").scrollable();
299 bd8b1d60 Christodoulos Psaltis
    var api = root.scrollable();
300 bd8b1d60 Christodoulos Psaltis
    // rangeinput with default configuration
301 bd8b1d60 Christodoulos Psaltis
    // validation logic is done inside the onBeforeSeek callback
302 bd8b1d60 Christodoulos Psaltis
    api.onBeforeSeek(function(event, i) {
303 bd8b1d60 Christodoulos Psaltis
            // we are going 1 step backwards so no need for validation
304 bd8b1d60 Christodoulos Psaltis
            if (api.getIndex() < i) {
305 bd8b1d60 Christodoulos Psaltis
             // 1. get current page
306 bd8b1d60 Christodoulos Psaltis
                     var page = root.find(".page").eq(api.getIndex()),
307 bd8b1d60 Christodoulos Psaltis
                         // 2. .. and all required fields inside the page
308 bd8b1d60 Christodoulos Psaltis
                         inputs = page.find(".required :input").removeClass("error"),
309 bd8b1d60 Christodoulos Psaltis
                         // 3. .. which are empty
310 bd8b1d60 Christodoulos Psaltis
                         empty = inputs.filter(function() {
311 bd8b1d60 Christodoulos Psaltis
                                return $(this).val().replace(/\s*/g, '') == '';
312 bd8b1d60 Christodoulos Psaltis
                         });
313 bd8b1d60 Christodoulos Psaltis
                     // if there are empty fields, then
314 bd8b1d60 Christodoulos Psaltis
                    if (empty.length) {
315 bd8b1d60 Christodoulos Psaltis
                            // add a CSS class name "error" for empty & required fields
316 bd8b1d60 Christodoulos Psaltis
                            empty.addClass("error");
317 bd8b1d60 Christodoulos Psaltis
                            // cancel seeking of the scrollable by returning false
318 bd8b1d60 Christodoulos Psaltis
                            return false;
319 bd8b1d60 Christodoulos Psaltis
                    // everything is good
320 bd8b1d60 Christodoulos Psaltis
                    } 
321 bd8b1d60 Christodoulos Psaltis
            }
322 bd8b1d60 Christodoulos Psaltis
            // update status bar
323 bd8b1d60 Christodoulos Psaltis
            $("#status li").removeClass("active").eq(i).addClass("active");
324 71642965 Dimitris Moraitis
        // update confirm step
325 20fae095 Christodoulos Psaltis
        if (api.getIndex()==0) {
326 20fae095 Christodoulos Psaltis
            var image = $("input[type=radio][name=image-id]:checked");
327 b335768e Markos Gogoulos
            var imageRef = image.length ? image[0].id : false
328 b335768e Markos Gogoulos
            if (imageRef) {
329 b335768e Markos Gogoulos
                var imageName = $("label[for=" + imageRef + "] .image-title").text();
330 20fae095 Christodoulos Psaltis
                $("#machine_image-label")[0].textContent = imageName;
331 20fae095 Christodoulos Psaltis
                $("input[type=text][name=machine_name]")[0].value = "My " + imageName + " server";
332 20fae095 Christodoulos Psaltis
            }
333 42f67a2a Dimitris Moraitis
        } else if (api.getIndex()==1) {
334 20fae095 Christodoulos Psaltis
            $("#machine_cpu-label")[0].textContent = $("#cpu-indicator")[0].value;
335 20fae095 Christodoulos Psaltis
            $("#machine_ram-label")[0].textContent = $("#ram-indicator")[0].value;
336 20fae095 Christodoulos Psaltis
            $("#machine_storage-label")[0].textContent = $("#storage-indicator")[0].value;
337 9b1b6f3a Christodoulos Psaltis
        }    
338 bd8b1d60 Christodoulos Psaltis
    });
339 bd8b1d60 Christodoulos Psaltis
    // if tab is pressed on the next button seek to next page
340 f87e79a4 Mike Muzurakis
    $(root).live('keydown', function (e) {
341 f87e79a4 Mike Muzurakis
       if ( e.keyCode == 9 ){
342 f87e79a4 Mike Muzurakis
           if(e.preventDefault) {
343 f87e79a4 Mike Muzurakis
               e.preventDefault();
344 f87e79a4 Mike Muzurakis
           }
345 1508a5ab Mike Muzurakis
           if (api.getIndex() < 2) {
346 1508a5ab Mike Muzurakis
               api.next();
347 1508a5ab Mike Muzurakis
            } else {
348 1508a5ab Mike Muzurakis
                return false;
349 1508a5ab Mike Muzurakis
            }
350 f87e79a4 Mike Muzurakis
        }
351 bd8b1d60 Christodoulos Psaltis
    });
352 cae67343 Mike Muzurakis
    $("#name").keypress(function (e) {
353 cae67343 Mike Muzurakis
                if ((e.which && e.which == 13) || (e.keyCode && e.keyCode == 13)) {
354 cae67343 Mike Muzurakis
                        $('#start').click();
355 cae67343 Mike Muzurakis
                        return false;
356 cae67343 Mike Muzurakis
                } else {
357 cae67343 Mike Muzurakis
                        return true;
358 cae67343 Mike Muzurakis
                }
359 cae67343 Mike Muzurakis
    });
360 71642965 Dimitris Moraitis
});
361 cc7c5902 Dimitris Moraitis

362 bd8b1d60 Christodoulos Psaltis
// disable sliders in flavor selection
363 cc7c5902 Dimitris Moraitis
function disableSliders() {
364 cc7c5902 Dimitris Moraitis
    $("#cpu").attr('disabled',true);
365 cc7c5902 Dimitris Moraitis
    $("#ram").attr('disabled',true);
366 cc7c5902 Dimitris Moraitis
    $("#storage").attr('disabled',true);
367 cc7c5902 Dimitris Moraitis
}
368 cc7c5902 Dimitris Moraitis

369 afa2ebd2 Mike Muzurakis
//update radio button when clicking on text
370 afa2ebd2 Mike Muzurakis
$("#small-body").live('click' ,function() { 
371 afa2ebd2 Mike Muzurakis
    $(this).parent().find("#small").click();
372 afa2ebd2 Mike Muzurakis
});
373 afa2ebd2 Mike Muzurakis
$("#medium-body").live('click' ,function() { 
374 afa2ebd2 Mike Muzurakis
    $(this).parent().find("#medium").click();
375 afa2ebd2 Mike Muzurakis
});
376 afa2ebd2 Mike Muzurakis
$("#large-body").live('click' ,function() { 
377 afa2ebd2 Mike Muzurakis
    $(this).parent().find("#large").click();
378 afa2ebd2 Mike Muzurakis
});
379 afa2ebd2 Mike Muzurakis
$("#custom-body").live('click' ,function() { 
380 afa2ebd2 Mike Muzurakis
    $(this).parent().find("#custom").click();
381 afa2ebd2 Mike Muzurakis
});
382 afa2ebd2 Mike Muzurakis

383 afa2ebd2 Mike Muzurakis
//select image div on radio button select
384 afa2ebd2 Mike Muzurakis
$('.radio').live('click' ,function() {           
385 afa2ebd2 Mike Muzurakis
    $(this).parents("div").find(".image").removeClass('selecteddiv');
386 afa2ebd2 Mike Muzurakis
    if($(this).is(':checked'))  {
387 afa2ebd2 Mike Muzurakis
        $(this).parent().addClass('selecteddiv');
388 afa2ebd2 Mike Muzurakis
    }
389 afa2ebd2 Mike Muzurakis
});
390 afa2ebd2 Mike Muzurakis

391 695e1b21 Dimitris Moraitis
// validate cpu input box
392 695e1b21 Dimitris Moraitis
$("#cpu-indicator").live('change',function(){
393 695e1b21 Dimitris Moraitis
    var v = Number(this.value);
394 695e1b21 Dimitris Moraitis
    var i = cpus.indexOf(v);
395 695e1b21 Dimitris Moraitis
    if (isNaN(v)) {
396 695e1b21 Dimitris Moraitis
        $(this).value = cpus[0];
397 695e1b21 Dimitris Moraitis
        $("#cpu").data('rangeinput').setValue(0);
398 695e1b21 Dimitris Moraitis
    } else if (i == -1) {
399 695e1b21 Dimitris Moraitis
        for (var j=0; j < cpus.length; j++)
400 695e1b21 Dimitris Moraitis
            if (v<cpus[j])
401 695e1b21 Dimitris Moraitis
                break;
402 695e1b21 Dimitris Moraitis
        $("#cpu").data('rangeinput').setValue(j);
403 695e1b21 Dimitris Moraitis
    } else {
404 695e1b21 Dimitris Moraitis
        $("#cpu").data('rangeinput').setValue(i);
405 695e1b21 Dimitris Moraitis
    }   
406 695e1b21 Dimitris Moraitis
    return false;
407 695e1b21 Dimitris Moraitis
});
408 695e1b21 Dimitris Moraitis

409 695e1b21 Dimitris Moraitis
// validate ram input box
410 695e1b21 Dimitris Moraitis
$("#ram-indicator").live('change',function(){
411 695e1b21 Dimitris Moraitis
    var v = Number(this.value);
412 695e1b21 Dimitris Moraitis
    var i = ram.indexOf(v);
413 695e1b21 Dimitris Moraitis
    if (isNaN(v)) {
414 695e1b21 Dimitris Moraitis
        $(this).value = cpus[0];
415 695e1b21 Dimitris Moraitis
        $("#ram").data('rangeinput').setValue(0);
416 695e1b21 Dimitris Moraitis
    } else if (i == -1) {
417 695e1b21 Dimitris Moraitis
        for (var j=0; j < ram.length; j++)
418 695e1b21 Dimitris Moraitis
            if (v<ram[j])
419 695e1b21 Dimitris Moraitis
                break;
420 695e1b21 Dimitris Moraitis
        $("#ram").data('rangeinput').setValue(j);
421 695e1b21 Dimitris Moraitis
    } else {
422 695e1b21 Dimitris Moraitis
        $("#ram").data('rangeinput').setValue(i);
423 695e1b21 Dimitris Moraitis
    }   
424 695e1b21 Dimitris Moraitis
    return false;
425 695e1b21 Dimitris Moraitis
});
426 695e1b21 Dimitris Moraitis

427 695e1b21 Dimitris Moraitis

428 695e1b21 Dimitris Moraitis
// validate storage input box
429 695e1b21 Dimitris Moraitis
$("#storage-indicator").live('change',function(){
430 695e1b21 Dimitris Moraitis
    var v = Number(this.value);
431 695e1b21 Dimitris Moraitis
    var i = disks.indexOf(v);
432 695e1b21 Dimitris Moraitis
    if (isNaN(v)) {
433 695e1b21 Dimitris Moraitis
        $(this).value = disks[0];
434 695e1b21 Dimitris Moraitis
        $("#storage").data('rangeinput').setValue(0);
435 695e1b21 Dimitris Moraitis
    } else if (i == -1) {
436 695e1b21 Dimitris Moraitis
        for (var j=0; j < disks.length; j++)
437 695e1b21 Dimitris Moraitis
            if (v<disks[j])
438 695e1b21 Dimitris Moraitis
                break;
439 695e1b21 Dimitris Moraitis
        $("#storage").data('rangeinput').setValue(j);
440 695e1b21 Dimitris Moraitis
    } else {
441 695e1b21 Dimitris Moraitis
        $("#storage").data('rangeinput').setValue(i);
442 695e1b21 Dimitris Moraitis
    }   
443 695e1b21 Dimitris Moraitis
    return false;
444 695e1b21 Dimitris Moraitis
});
445 695e1b21 Dimitris Moraitis

446 bd8b1d60 Christodoulos Psaltis
// selecting the small size
447 8fd5c3a5 Christodoulos Psaltis
$("#small").click(function(){
448 71642965 Dimitris Moraitis
    $("#cpu").data('rangeinput').setValue(0);
449 71642965 Dimitris Moraitis
    $("#ram").data('rangeinput').setValue(0);
450 71642965 Dimitris Moraitis
    $("#storage").data('rangeinput').setValue(0);
451 68a49035 Dimitris Moraitis
    $("#cpu-indicator")[0].value = cpus[0];
452 68a49035 Dimitris Moraitis
    $("#ram-indicator")[0].value = ram[0];
453 68a49035 Dimitris Moraitis
    $("#storage-indicator")[0].value = disks[0];
454 94adeabb Mike Muzurakis
    $("#small").addClass("active");
455 94adeabb Mike Muzurakis
    $("#medium").removeClass("active");    
456 94adeabb Mike Muzurakis
    $("#large").removeClass("active");    
457 94adeabb Mike Muzurakis
    $("#custom").removeClass("active");    
458 cc7c5902 Dimitris Moraitis
});
459 cc7c5902 Dimitris Moraitis

460 bd8b1d60 Christodoulos Psaltis
// selecting the medium size
461 8fd5c3a5 Christodoulos Psaltis
$("#medium").click(function(){
462 71642965 Dimitris Moraitis
    $("#cpu").data('rangeinput').setValue(1);
463 71642965 Dimitris Moraitis
    $("#ram").data('rangeinput').setValue(1);
464 71642965 Dimitris Moraitis
    $("#storage").data('rangeinput').setValue(1);
465 68a49035 Dimitris Moraitis
    $("#cpu-indicator")[0].value = cpus[1];
466 68a49035 Dimitris Moraitis
    $("#ram-indicator")[0].value = ram[1];
467 94adeabb Mike Muzurakis
    $("#storage-indicator")[0].value = disks[1];  
468 94adeabb Mike Muzurakis
    $("#medium").addClass("active");  
469 94adeabb Mike Muzurakis
    $("#small").removeClass("active");    
470 94adeabb Mike Muzurakis
    $("#large").removeClass("active");    
471 94adeabb Mike Muzurakis
    $("#custom").removeClass("active");  
472 cc7c5902 Dimitris Moraitis
});
473 cc7c5902 Dimitris Moraitis

474 bd8b1d60 Christodoulos Psaltis
// selecting the large size
475 8fd5c3a5 Christodoulos Psaltis
$("#large").click(function(){
476 71642965 Dimitris Moraitis
    $("#cpu").data('rangeinput').setValue(2);
477 71642965 Dimitris Moraitis
    $("#ram").data('rangeinput').setValue(2);
478 71642965 Dimitris Moraitis
    $("#storage").data('rangeinput').setValue(2);
479 68a49035 Dimitris Moraitis
    $("#cpu-indicator")[0].value = cpus[2];
480 68a49035 Dimitris Moraitis
    $("#ram-indicator")[0].value = ram[2];
481 94adeabb Mike Muzurakis
    $("#storage-indicator")[0].value = disks[2];   
482 94adeabb Mike Muzurakis
    $("#large").addClass("active"); 
483 94adeabb Mike Muzurakis
    $("#medium").removeClass("active");    
484 94adeabb Mike Muzurakis
    $("#small").removeClass("active");    
485 94adeabb Mike Muzurakis
    $("#custom").removeClass("active");  
486 cc7c5902 Dimitris Moraitis
});
487 cc7c5902 Dimitris Moraitis

488 bd8b1d60 Christodoulos Psaltis
// selecting the custom flavor enables the sliders
489 8fd5c3a5 Christodoulos Psaltis
$("#custom").click(function(){
490 bd8b1d60 Christodoulos Psaltis
    $("#cpu").attr('disabled',false);
491 bd8b1d60 Christodoulos Psaltis
    $("#ram").attr('disabled',false);
492 bd8b1d60 Christodoulos Psaltis
    $("#storage").attr('disabled',false);
493 bd8b1d60 Christodoulos Psaltis
    $("strong.sliders").style = 'color: #778899;';
494 94adeabb Mike Muzurakis
    $("#custom").addClass("active"); 
495 94adeabb Mike Muzurakis
    $("#medium").removeClass("active");    
496 94adeabb Mike Muzurakis
    $("#large").removeClass("active");    
497 94adeabb Mike Muzurakis
    $("#small").removeClass("active");  
498 bd8b1d60 Christodoulos Psaltis
});
499 bd8b1d60 Christodoulos Psaltis

500 99721d83 Mike Muzurakis
//when textbox gains focus, add selection in css
501 99721d83 Mike Muzurakis
$('#cpu-indicator').focus(function() {
502 99721d83 Mike Muzurakis
    $(this).addClass('selectedrange');
503 99721d83 Mike Muzurakis
});
504 99721d83 Mike Muzurakis
$('#ram-indicator').focus(function() {
505 99721d83 Mike Muzurakis
    $(this).addClass('selectedrange');
506 99721d83 Mike Muzurakis
});
507 99721d83 Mike Muzurakis
$('#storage-indicator').focus(function() {
508 99721d83 Mike Muzurakis
    $(this).addClass('selectedrange');
509 99721d83 Mike Muzurakis
});
510 99721d83 Mike Muzurakis

511 99721d83 Mike Muzurakis
//when textbox loses focus, clear selection in css
512 99721d83 Mike Muzurakis
$('#cpu-indicator').blur(function() {
513 99721d83 Mike Muzurakis
    $(this).removeClass('selectedrange');
514 99721d83 Mike Muzurakis
});
515 99721d83 Mike Muzurakis
$('#ram-indicator').blur(function() {
516 99721d83 Mike Muzurakis
    $(this).removeClass('selectedrange');
517 99721d83 Mike Muzurakis
});
518 99721d83 Mike Muzurakis
$('#storage-indicator').blur(function() {
519 99721d83 Mike Muzurakis
    $(this).removeClass('selectedrange');
520 99721d83 Mike Muzurakis
});
521 99721d83 Mike Muzurakis

522 bd8b1d60 Christodoulos Psaltis
// exit the wizard
523 8fd5c3a5 Christodoulos Psaltis
$("#cancel").click(function(){
524 b6270d15 Christodoulos Psaltis
    $("a#create").overlay().close();
525 cc7c5902 Dimitris Moraitis
});
526 cc7c5902 Dimitris Moraitis

527 bd8b1d60 Christodoulos Psaltis
// starting a new VM through the wizard
528 8fd5c3a5 Christodoulos Psaltis
$("#start").click(function(){
529 b335768e Markos Gogoulos
    var imageRef = $('input[type=radio][name=image-id]:checked')[0].id.replace('img-radio-','');   
530 b335768e Markos Gogoulos
    var flavorRef = identify_flavor($("#cpu-indicator")[0].value, $("#storage-indicator")[0].value, $("#ram-indicator")[0].value);
531 20fae095 Christodoulos Psaltis
    var machineName = $('input[name=machine_name]')[0].value;
532 0971fa71 Markos Gogoulos

533 0971fa71 Markos Gogoulos
    create_vm(machineName, imageRef, flavorRef);
534 71642965 Dimitris Moraitis

535 42f67a2a Dimitris Moraitis
    $('a#create').data('overlay').close();
536 2f86374f Dimitris Moraitis

537 2f86374f Dimitris Moraitis
    try{console.warn('creating ' + $("input[name=machine_name]")[0].value)} catch(err){}
538 285a1fa8 Dimitris Moraitis

539 ec06b07c Dimitris Moraitis
    $("#wizard").hide();
540 cc7c5902 Dimitris Moraitis
});
541 cc7c5902 Dimitris Moraitis

542 c902e956 Christodoulos Psaltis
// confirm all actions
543 c902e956 Christodoulos Psaltis
$("div.confirm_multiple .yes").live('click', function(){
544 c902e956 Christodoulos Psaltis
    while(pending_actions.length > 0){ // if there is a pending action for this server execute it
545 c902e956 Christodoulos Psaltis
        action = pending_actions.pop(); // extract action
546 c902e956 Christodoulos Psaltis
        var serverID = action[1];
547 c902e956 Christodoulos Psaltis
        if ($.cookie("list") != '1') { // standard view
548 c902e956 Christodoulos Psaltis
            $('#' + serverID + ' .selected').removeClass('selected');
549 c902e956 Christodoulos Psaltis
            $('#' + serverID + ' .display').removeClass('display');
550 c902e956 Christodoulos Psaltis
            if (action[0] == shutdown) {
551 c902e956 Christodoulos Psaltis
                $('#' + serverID + ' .status').text('Shutting down');
552 c902e956 Christodoulos Psaltis
            } else if (action[0] == start) {
553 c902e956 Christodoulos Psaltis
                $('#' + serverID + ' .status').text('Starting');
554 c902e956 Christodoulos Psaltis
            } else if (action[0] == reboot) {
555 c902e956 Christodoulos Psaltis
                $('#' + serverID + ' .status').text('Rebooting');
556 c902e956 Christodoulos Psaltis
            } else if (action[0] == destroy) {
557 c902e956 Christodoulos Psaltis
                $('#' + serverID + ' .status').text('Destroying');
558 c902e956 Christodoulos Psaltis
            }
559 c902e956 Christodoulos Psaltis
            $('#' + serverID + ' .spinner').show();
560 c902e956 Christodoulos Psaltis
        } else { // list view
561 c902e956 Christodoulos Psaltis
            osIcon = $('#'+serverID).parent().parent().find('.list-logo');
562 c902e956 Christodoulos Psaltis
            osIcon.attr('os',osIcon.attr('src'));
563 c902e956 Christodoulos Psaltis
            osIcon.attr('src','static/progress.gif');
564 c902e956 Christodoulos Psaltis
            if (action[0] == shutdown) {
565 c902e956 Christodoulos Psaltis
                $('#' + serverID).parent().parent().find('span.status').text('Shutting down');
566 c902e956 Christodoulos Psaltis
            } else if (action[0] == start) {
567 c902e956 Christodoulos Psaltis
                $('#' + serverID).parent().parent().find('span.status').text('Starting');
568 c902e956 Christodoulos Psaltis
            } else if (action[0] == reboot) {
569 c902e956 Christodoulos Psaltis
                $('#' + serverID).parent().parent().find('span.status').text('Rebooting');
570 c902e956 Christodoulos Psaltis
            } else if (action[0] == destroy) {
571 c902e956 Christodoulos Psaltis
                $('#' + serverID).parent().parent().find('span.status').text('Destroying');
572 c902e956 Christodoulos Psaltis
            }
573 c902e956 Christodoulos Psaltis
        }
574 c902e956 Christodoulos Psaltis
        action[0]([serverID]); // execute action
575 c902e956 Christodoulos Psaltis
    }
576 c902e956 Christodoulos Psaltis
    update_confirmations();    
577 c902e956 Christodoulos Psaltis
});
578 c902e956 Christodoulos Psaltis

579 c902e956 Christodoulos Psaltis
// cancel all actions
580 c902e956 Christodoulos Psaltis
$("div.confirm_multiple .no").live('click', function(){
581 c902e956 Christodoulos Psaltis
    pending_actions = [];
582 c902e956 Christodoulos Psaltis
    $('.machine .selected').removeClass('selected');
583 c902e956 Christodoulos Psaltis
    $('.machine .display').removeClass('display');
584 c902e956 Christodoulos Psaltis
    update_confirmations();
585 c902e956 Christodoulos Psaltis
});
586 c902e956 Christodoulos Psaltis

587 c902e956 Christodoulos Psaltis
// bring up edit metadata overlay
588 4629cc1f Christodoulos Psaltis
function editMetadata() {
589 c902e956 Christodoulos Psaltis
    var triggers = $("a#meta-editor-1").overlay({
590 c902e956 Christodoulos Psaltis
        // some mask tweaks suitable for modal dialogs
591 c902e956 Christodoulos Psaltis
        mask: '#000',
592 c902e956 Christodoulos Psaltis
        effect: 'default',
593 c902e956 Christodoulos Psaltis
        top: '10%',
594 c902e956 Christodoulos Psaltis
        closeOnClick: false,
595 c902e956 Christodoulos Psaltis
        oneInstance: false,
596 08cc1924 Christodoulos Psaltis
        load: false,
597 08cc1924 Christodoulos Psaltis
        onClose: function() {
598 08cc1924 Christodoulos Psaltis
            // remove all entries so they won't be preloaded next time you open the dialog
599 08cc1924 Christodoulos Psaltis
            $("#editor-1 div.content ul.meta-list").empty();
600 08cc1924 Christodoulos Psaltis
        },
601 08cc1924 Christodoulos Psaltis
        onLoad: function() {
602 08cc1924 Christodoulos Psaltis
            // this is a work around for the mask not appearing problem
603 08cc1924 Christodoulos Psaltis
            $("#editor-1").expose();
604 08cc1924 Christodoulos Psaltis
        }
605 c902e956 Christodoulos Psaltis
    });
606 5186eb04 Christodoulos Psaltis
    // get metadata for current server and fill the dialog
607 5186eb04 Christodoulos Psaltis
    serverID = $("#editor-1 h3").attr('id');
608 5186eb04 Christodoulos Psaltis
    get_metadata(serverID);
609 c902e956 Christodoulos Psaltis
    $("a#meta-editor-1").data('overlay').load();
610 c902e956 Christodoulos Psaltis
    return false; 
611 c902e956 Christodoulos Psaltis
}
612 c902e956 Christodoulos Psaltis

613 c902e956 Christodoulos Psaltis
// bring up add metadata overlay
614 4629cc1f Christodoulos Psaltis
function addMetadata() {
615 c902e956 Christodoulos Psaltis
    var triggers = $("a#meta-editor-2").overlay({
616 c902e956 Christodoulos Psaltis
        // some mask tweaks suitable for modal dialogs
617 c902e956 Christodoulos Psaltis
        mask: '#000',
618 c902e956 Christodoulos Psaltis
        effect: 'default',
619 c902e956 Christodoulos Psaltis
        top: '10%',
620 c902e956 Christodoulos Psaltis
        closeOnClick: false,
621 c902e956 Christodoulos Psaltis
        oneInstance: false,
622 08cc1924 Christodoulos Psaltis
        load: false,
623 08cc1924 Christodoulos Psaltis
        onLoad: function() {
624 08cc1924 Christodoulos Psaltis
            // this is a work around for the mask not appearing problem
625 08cc1924 Christodoulos Psaltis
            $("#editor-2").expose();
626 08cc1924 Christodoulos Psaltis
        }
627 c902e956 Christodoulos Psaltis
    });
628 c902e956 Christodoulos Psaltis
    $("a#meta-editor-2").data('overlay').load();
629 c902e956 Christodoulos Psaltis
    return false; 
630 c902e956 Christodoulos Psaltis
}
631 c902e956 Christodoulos Psaltis

632 c902e956 Christodoulos Psaltis
// intercept click on create button in metadata edit dialog
633 c902e956 Christodoulos Psaltis
$('#editor-1.meta-modal button.create').click( function(){
634 1b3857ab Christodoulos Psaltis
    // close edit metadata and open add metadata dialog
635 c902e956 Christodoulos Psaltis
    $('a#meta-editor-1').data('overlay').close();
636 4629cc1f Christodoulos Psaltis
    addMetadata();
637 c902e956 Christodoulos Psaltis
});
638 c902e956 Christodoulos Psaltis

639 c902e956 Christodoulos Psaltis
// intercept click on remove button in metadata edit dialog
640 1b3857ab Christodoulos Psaltis
$('#editor-1.meta-modal button.remove').live('click', function() { 
641 1b3857ab Christodoulos Psaltis
    // get the server id and meta key needed for the ajax call   
642 0943cc77 Markos Gogoulos
    var serverID = $(this).parent().parent().parent().parent().children("h3").attr('id');
643 0943cc77 Markos Gogoulos
    var meta_key = $(this).parent().find("label").text();
644 1b3857ab Christodoulos Psaltis
    // make the ajax call and list the new GET results
645 1b3857ab Christodoulos Psaltis
    delete_metadata(serverID, meta_key);
646 0943cc77 Markos Gogoulos
    return false;
647 c902e956 Christodoulos Psaltis
});
648 c902e956 Christodoulos Psaltis

649 c902e956 Christodoulos Psaltis
// intercept click on edit button in metadata edit dialog
650 1b3857ab Christodoulos Psaltis
$('#editor-1.meta-modal button.edit').click( function(){
651 c902e956 Christodoulos Psaltis
    // inline editing of selected key-value pair
652 c902e956 Christodoulos Psaltis
    // on submission ajax call from updating
653 c902e956 Christodoulos Psaltis
    // on success update the overlay
654 c902e956 Christodoulos Psaltis
    // TODO
655 c902e956 Christodoulos Psaltis
});
656 c902e956 Christodoulos Psaltis

657 c902e956 Christodoulos Psaltis
// intercept click on cancel button in metadata add dialog
658 c902e956 Christodoulos Psaltis
$('#editor-2.meta-modal button.cancel').click( function(){
659 1b3857ab Christodoulos Psaltis
    // close add metadata and open edit metadata dialog
660 c902e956 Christodoulos Psaltis
    $('a#meta-editor-2').data('overlay').close();
661 4629cc1f Christodoulos Psaltis
    editMetadata();
662 c902e956 Christodoulos Psaltis
});
663 c902e956 Christodoulos Psaltis

664 c902e956 Christodoulos Psaltis
// intercept click on save button in metadata add dialog
665 1b3857ab Christodoulos Psaltis
$('#editor-2.meta-modal button.save').live('click', function() {
666 1b3857ab Christodoulos Psaltis
    // get the server id, meta key and meta value needed for the ajax call       
667 0c578a28 Markos Gogoulos
    var serverID = $(this).parent().children("h3").attr('id');
668 0c578a28 Markos Gogoulos
    var meta_key = $(this).parent().find(".content input.key").attr('value');
669 0c578a28 Markos Gogoulos
    var meta_value = $(this).parent().find(".content input.value").attr('value');
670 1b3857ab Christodoulos Psaltis
    // make the ajax call and list the new GET results
671 1b3857ab Christodoulos Psaltis
    add_metadata(serverID, meta_key, meta_value);
672 1b3857ab Christodoulos Psaltis
    // close add metadata and open edit metadata dialog
673 1b3857ab Christodoulos Psaltis
    $('a#meta-editor-2').data('overlay').close();
674 1b3857ab Christodoulos Psaltis
    editMetadata();
675 0c578a28 Markos Gogoulos
    return false;
676 c902e956 Christodoulos Psaltis
});
677 c902e956 Christodoulos Psaltis

678 5186eb04 Christodoulos Psaltis
// update metadata in edit dialog
679 dd604c16 Christodoulos Psaltis
function list_metadata(data) {    
680 dd604c16 Christodoulos Psaltis
    // empty the list if it already exists
681 dd604c16 Christodoulos Psaltis
    $("#editor-1 div.content ul.meta-list").empty();
682 dd604c16 Christodoulos Psaltis
    // get the values to show
683 5186eb04 Christodoulos Psaltis
    meta = data.metadata.values;
684 dd604c16 Christodoulos Psaltis
    // show values
685 5186eb04 Christodoulos Psaltis
    for (key in meta) {
686 5186eb04 Christodoulos Psaltis
        pair = $("ul.meta-template li").clone();
687 5186eb04 Christodoulos Psaltis
        pair.find("label").text(key);
688 5186eb04 Christodoulos Psaltis
        pair.find("p").text(meta[key]);
689 1b3857ab Christodoulos Psaltis
        pair.appendTo("#editor-1 div.content ul.meta-list").fadeIn();
690 5186eb04 Christodoulos Psaltis
    }
691 5186eb04 Christodoulos Psaltis
}
692 5186eb04 Christodoulos Psaltis

693 bd528b3b Christodoulos Psaltis
// basic functions executed on page load
694 d134b632 Dimitris Moraitis
if (images.length > 0) {
695 d134b632 Dimitris Moraitis
    // populate image list
696 d134b632 Dimitris Moraitis
    update_wizard_images();
697 d134b632 Dimitris Moraitis
}
698 d134b632 Dimitris Moraitis
if (flavors.length > 0) {
699 d134b632 Dimitris Moraitis
    // configure flavors
700 d134b632 Dimitris Moraitis
    update_wizard_flavors(); 
701 d134b632 Dimitris Moraitis
}
702 bd528b3b Christodoulos Psaltis
// create tabs for main menu
703 bd528b3b Christodoulos Psaltis
$("ul.tabs").tabs("div.panes ul");
704 bd528b3b Christodoulos Psaltis
705 8400e1a5 Markos Gogoulos
</script>