Statistics
| Branch: | Tag: | Revision:

root / ui / templates / machines.html @ 9cb2ca3b

History | View | Annotate | Download (26.4 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 9cb2ca3b Mike Muzurakis
    $("#custom input").attr('checked', 'checked');                
499 94adeabb Mike Muzurakis
    $("#custom").addClass("active"); 
500 94adeabb Mike Muzurakis
    $("#medium").removeClass("active");    
501 94adeabb Mike Muzurakis
    $("#large").removeClass("active");    
502 94adeabb Mike Muzurakis
    $("#small").removeClass("active");  
503 bd8b1d60 Christodoulos Psaltis
});
504 bd8b1d60 Christodoulos Psaltis

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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