Statistics
| Branch: | Tag: | Revision:

root / ui / templates / machines.html @ 71ecd0bb

History | View | Annotate | Download (26.3 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 a7ccb6f9 Christodoulos Psaltis
    <div class='container'>
182 a7ccb6f9 Christodoulos Psaltis
        <h3>
183 a7ccb6f9 Christodoulos Psaltis
            <label>{% trans "Metadata for machine:" %}</label>
184 a7ccb6f9 Christodoulos Psaltis
            <span></span>
185 a7ccb6f9 Christodoulos Psaltis
        </h3>
186 a7ccb6f9 Christodoulos Psaltis
        <hr class="topruler" />
187 a7ccb6f9 Christodoulos Psaltis
        <hr class="fatruler" />
188 a7ccb6f9 Christodoulos Psaltis
        <div class="content">
189 a7ccb6f9 Christodoulos Psaltis
            <ul class="meta-template" style="display:none">
190 a7ccb6f9 Christodoulos Psaltis
                <li>
191 a7ccb6f9 Christodoulos Psaltis
                    <label>{% trans "Metadata key" %}</label>
192 a7ccb6f9 Christodoulos Psaltis
                    <button type="button" class="remove">{% trans "remove x" %}</button>
193 a7ccb6f9 Christodoulos Psaltis
                    <hr class="meta-separator">
194 a7ccb6f9 Christodoulos Psaltis
                    <p>{% trans "Metadata value" %}</p>
195 a7ccb6f9 Christodoulos Psaltis
                    <button type="button" class="edit">{% trans "edit" %}</button>
196 a7ccb6f9 Christodoulos Psaltis
                </li>
197 a7ccb6f9 Christodoulos Psaltis
            </ul>
198 a7ccb6f9 Christodoulos Psaltis
            <ul class="meta-list">
199 a7ccb6f9 Christodoulos Psaltis
            </ul>
200 a7ccb6f9 Christodoulos Psaltis
        </div>
201 339712cb Christodoulos Psaltis
    </div>
202 339712cb Christodoulos Psaltis
    <button type="button" class="create">{% trans "Create New+" %}</button>
203 0c1f14ed Christodoulos Psaltis
    <div class="bottomruler" /> 
204 339712cb Christodoulos Psaltis
</div>
205 339712cb Christodoulos Psaltis
206 339712cb Christodoulos Psaltis
<a id="meta-editor-2" rel="#editor-2" href="#"></a>
207 339712cb Christodoulos Psaltis
208 295800ec Christodoulos Psaltis
<div class="meta-modal" id="editor-2">
209 a7ccb6f9 Christodoulos Psaltis
    <div class='container'>
210 a7ccb6f9 Christodoulos Psaltis
        <h3>
211 a7ccb6f9 Christodoulos Psaltis
            <label>{% trans "Metadata for machine:" %}</label>
212 a7ccb6f9 Christodoulos Psaltis
            <span></span>
213 a7ccb6f9 Christodoulos Psaltis
        </h3>
214 a7ccb6f9 Christodoulos Psaltis
        <hr class="topruler" />
215 a7ccb6f9 Christodoulos Psaltis
        <hr class="fatruler" />
216 a7ccb6f9 Christodoulos Psaltis
        <div class="content">
217 a7ccb6f9 Christodoulos Psaltis
            <label class="meta-key">{% trans "Key:" %}</label>
218 a7ccb6f9 Christodoulos Psaltis
            <input type="text" maxlength="15" class="key" value="max 15 characters"/>
219 a7ccb6f9 Christodoulos Psaltis
            <hr class="meta-separator">
220 a7ccb6f9 Christodoulos Psaltis
            <label class="meta-value">{% trans "Value:" %}</label>
221 a7ccb6f9 Christodoulos Psaltis
            <input type="text" maxlength="150" class="value" value="max 150 characters"/>
222 a7ccb6f9 Christodoulos Psaltis
        </div>
223 295800ec Christodoulos Psaltis
    </div>
224 67679131 Christodoulos Psaltis
    <button type="button" class="cancel">{% trans "Cancel" %}</button>
225 67679131 Christodoulos Psaltis
    <button type="button" class="save">{% trans "Save" %}</button>
226 0c1f14ed Christodoulos Psaltis
    <div class="bottomruler" /> 
227 d165dbb4 Christodoulos Psaltis
</div>
228 d165dbb4 Christodoulos Psaltis
229 42f67a2a Dimitris Moraitis
<div id="machinesview"></div>
230 42f67a2a Dimitris Moraitis
231 267403ca Dimitris Moraitis
<div class="confirm_multiple">
232 3d286f84 Dimitris Moraitis
    <p>{% trans "Your actions will affect" %} <span class="actionLen">XX</span> {% trans "machines" %}</p>
233 2cd96cc7 Vangelis Koukis
    <button class="yes">{% trans "Confirm All" %}</button>
234 2cd96cc7 Vangelis Koukis
        <button class="no">{% trans "Cancel All" %}</button>
235 d725fb12 Christodoulos Psaltis
</div>
236 31343277 Christodoulos Psaltis
237 5b147126 Christodoulos Psaltis
<div id="machines" class="separator"></div>
238 5b147126 Christodoulos Psaltis
239 cc7c5902 Dimitris Moraitis
<script>
240 afa2ebd2 Mike Muzurakis
//add hover to labels
241 afa2ebd2 Mike Muzurakis
$('span.typebody').mouseover(function() {
242 cf93419a Mike Muzurakis
    $(this).addClass('typehover');
243 afa2ebd2 Mike Muzurakis
});
244 afa2ebd2 Mike Muzurakis
$('span.typebody').mouseout(function() {
245 cf93419a Mike Muzurakis
    $(this).removeClass('typehover');
246 afa2ebd2 Mike Muzurakis
});
247 afa2ebd2 Mike Muzurakis

248 a64e74f0 Markos Gogoulos
// return value from metadata key "OS", if it exists
249 a64e74f0 Markos Gogoulos
function os_icon(metadata) {
250 a64e74f0 Markos Gogoulos
    if (!metadata) {
251 a64e74f0 Markos Gogoulos
        return 'unknown';
252 a64e74f0 Markos Gogoulos
    }
253 a64e74f0 Markos Gogoulos

254 a64e74f0 Markos Gogoulos
    if (metadata.values.OS == undefined || metadata.values.OS == '') {
255 a64e74f0 Markos Gogoulos
        return 'unknown';
256 a64e74f0 Markos Gogoulos
    } else {
257 a64e74f0 Markos Gogoulos
        return metadata.values.OS;
258 a64e74f0 Markos Gogoulos
    }
259 a64e74f0 Markos Gogoulos
} 
260 a64e74f0 Markos Gogoulos

261 fb66080c Dimitris Moraitis
// switch to list view
262 9b1b6f3a Christodoulos Psaltis
$("a#list").click(function(){
263 9b1b6f3a Christodoulos Psaltis
    list_view(); 
264 9b1b6f3a Christodoulos Psaltis
    return false;
265 9b1b6f3a Christodoulos Psaltis
});
266 fb66080c Dimitris Moraitis

267 9b1b6f3a Christodoulos Psaltis
// switch to standard view
268 9b1b6f3a Christodoulos Psaltis
$("a#standard").click(function(){
269 9b1b6f3a Christodoulos Psaltis
    standard_view();
270 9b1b6f3a Christodoulos Psaltis
    return false;
271 9b1b6f3a Christodoulos Psaltis
});
272 38e2c5ed Christodoulos Psaltis

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

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

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

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

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

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

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

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

431 695e1b21 Dimitris Moraitis

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

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

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

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

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

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

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

526 bd8b1d60 Christodoulos Psaltis
// exit the wizard
527 8fd5c3a5 Christodoulos Psaltis
$("#cancel").click(function(){
528 b6270d15 Christodoulos Psaltis
    $("a#create").overlay().close();
529 cc7c5902 Dimitris Moraitis
});
530 cc7c5902 Dimitris Moraitis

531 bd8b1d60 Christodoulos Psaltis
// starting a new VM through the wizard
532 8fd5c3a5 Christodoulos Psaltis
$("#start").click(function(){
533 b335768e Markos Gogoulos
    var imageRef = $('input[type=radio][name=image-id]:checked')[0].id.replace('img-radio-','');   
534 b335768e Markos Gogoulos
    var flavorRef = identify_flavor($("#cpu-indicator")[0].value, $("#storage-indicator")[0].value, $("#ram-indicator")[0].value);
535 20fae095 Christodoulos Psaltis
    var machineName = $('input[name=machine_name]')[0].value;
536 5d3c8f3f Mike Muzurakis
    if (jQuery.trim(machineName) == ''){
537 5d3c8f3f Mike Muzurakis
        return false;
538 5d3c8f3f Mike Muzurakis
    }
539 0971fa71 Markos Gogoulos
    create_vm(machineName, imageRef, flavorRef);
540 71642965 Dimitris Moraitis

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

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

545 ec06b07c Dimitris Moraitis
    $("#wizard").hide();
546 cc7c5902 Dimitris Moraitis
});
547 cc7c5902 Dimitris Moraitis

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

585 c902e956 Christodoulos Psaltis
// cancel all actions
586 c902e956 Christodoulos Psaltis
$("div.confirm_multiple .no").live('click', function(){
587 c902e956 Christodoulos Psaltis
    pending_actions = [];
588 c902e956 Christodoulos Psaltis
    $('.machine .selected').removeClass('selected');
589 c902e956 Christodoulos Psaltis
    $('.machine .display').removeClass('display');
590 c902e956 Christodoulos Psaltis
    update_confirmations();
591 c902e956 Christodoulos Psaltis
});
592 c902e956 Christodoulos Psaltis

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

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

638 c902e956 Christodoulos Psaltis
// intercept click on create button in metadata edit dialog
639 c902e956 Christodoulos Psaltis
$('#editor-1.meta-modal button.create').click( function(){
640 1b3857ab Christodoulos Psaltis
    // close edit metadata and open add metadata dialog
641 c902e956 Christodoulos Psaltis
    $('a#meta-editor-1').data('overlay').close();
642 4629cc1f Christodoulos Psaltis
    addMetadata();
643 c902e956 Christodoulos Psaltis
});
644 c902e956 Christodoulos Psaltis

645 c902e956 Christodoulos Psaltis
// intercept click on remove button in metadata edit dialog
646 1b3857ab Christodoulos Psaltis
$('#editor-1.meta-modal button.remove').live('click', function() { 
647 1b3857ab Christodoulos Psaltis
    // get the server id and meta key needed for the ajax call   
648 71ecd0bb Christodoulos Psaltis
    var serverID = $(this).closest('div.container').children('h3').attr('id');
649 71ecd0bb Christodoulos Psaltis
    var meta_key = $(this).parent().find('label').text();
650 1b3857ab Christodoulos Psaltis
    // make the ajax call and list the new GET results
651 1b3857ab Christodoulos Psaltis
    delete_metadata(serverID, meta_key);
652 0943cc77 Markos Gogoulos
    return false;
653 c902e956 Christodoulos Psaltis
});
654 c902e956 Christodoulos Psaltis

655 c902e956 Christodoulos Psaltis
// intercept click on edit button in metadata edit dialog
656 1b3857ab Christodoulos Psaltis
$('#editor-1.meta-modal button.edit').click( function(){
657 c902e956 Christodoulos Psaltis
    // inline editing of selected key-value pair
658 c902e956 Christodoulos Psaltis
    // on submission ajax call from updating
659 c902e956 Christodoulos Psaltis
    // on success update the overlay
660 c902e956 Christodoulos Psaltis
    // TODO
661 c902e956 Christodoulos Psaltis
});
662 c902e956 Christodoulos Psaltis

663 c902e956 Christodoulos Psaltis
// intercept click on cancel button in metadata add dialog
664 c902e956 Christodoulos Psaltis
$('#editor-2.meta-modal button.cancel').click( function(){
665 1b3857ab Christodoulos Psaltis
    // close add metadata and open edit metadata dialog
666 c902e956 Christodoulos Psaltis
    $('a#meta-editor-2').data('overlay').close();
667 4629cc1f Christodoulos Psaltis
    editMetadata();
668 c902e956 Christodoulos Psaltis
});
669 c902e956 Christodoulos Psaltis

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

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

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