Statistics
| Branch: | Tag: | Revision:

root / ui / templates / networks.html @ f81d0548

History | View | Annotate | Download (56.3 kB)

1 a5bc3755 Vangelis Koukis
<!--
2 a5bc3755 Vangelis Koukis
Copyright 2011 GRNET S.A. All rights reserved.
3 a5bc3755 Vangelis Koukis

4 a5bc3755 Vangelis Koukis
Redistribution and use in source and binary forms, with or
5 a5bc3755 Vangelis Koukis
without modification, are permitted provided that the following
6 a5bc3755 Vangelis Koukis
conditions are met:
7 a5bc3755 Vangelis Koukis

8 a5bc3755 Vangelis Koukis
  1. Redistributions of source code must retain the above
9 a5bc3755 Vangelis Koukis
     copyright notice, this list of conditions and the following
10 a5bc3755 Vangelis Koukis
     disclaimer.
11 a5bc3755 Vangelis Koukis

12 a5bc3755 Vangelis Koukis
  2. Redistributions in binary form must reproduce the above
13 a5bc3755 Vangelis Koukis
     copyright notice, this list of conditions and the following
14 a5bc3755 Vangelis Koukis
     disclaimer in the documentation and/or other materials
15 a5bc3755 Vangelis Koukis
     provided with the distribution.
16 a5bc3755 Vangelis Koukis

17 a5bc3755 Vangelis Koukis
THIS SOFTWARE IS PROVIDED BY GRNET S.A. ``AS IS'' AND ANY EXPRESS
18 a5bc3755 Vangelis Koukis
OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
19 a5bc3755 Vangelis Koukis
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
20 a5bc3755 Vangelis Koukis
PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GRNET S.A OR
21 a5bc3755 Vangelis Koukis
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
22 a5bc3755 Vangelis Koukis
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
23 a5bc3755 Vangelis Koukis
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
24 a5bc3755 Vangelis Koukis
USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
25 a5bc3755 Vangelis Koukis
AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
26 a5bc3755 Vangelis Koukis
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
27 a5bc3755 Vangelis Koukis
ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
28 a5bc3755 Vangelis Koukis
POSSIBILITY OF SUCH DAMAGE.
29 a5bc3755 Vangelis Koukis

30 a5bc3755 Vangelis Koukis
The views and conclusions contained in the software and
31 a5bc3755 Vangelis Koukis
documentation are those of the authors and should not be
32 a5bc3755 Vangelis Koukis
interpreted as representing official policies, either expressed
33 a5bc3755 Vangelis Koukis
or implied, of GRNET S.A.
34 a5bc3755 Vangelis Koukis
-->
35 a5bc3755 Vangelis Koukis
36 7d4f351b Mike Muzurakis
{% load i18n %}
37 e690c75d Christodoulos Psaltis
38 f533f224 Vangelis Koukis
<!-- the create button -->
39 f533f224 Vangelis Koukis
<div id="networks-createcontainer">
40 f533f224 Vangelis Koukis
    <div id="beforecreate"></div>
41 f533f224 Vangelis Koukis
    <a id="networkscreate" rel="#networks-wizard" href="#">{% trans "Create New +" %}</a>
42 f533f224 Vangelis Koukis
</div>
43 e690c75d Christodoulos Psaltis
44 f533f224 Vangelis Koukis
<!-- add new network overlay -->
45 f533f224 Vangelis Koukis
<div>
46 f533f224 Vangelis Koukis
    <div class="modal" id="networks-wizard">
47 f533f224 Vangelis Koukis
        <div class="header">
48 f533f224 Vangelis Koukis
        </div>
49 f533f224 Vangelis Koukis
        <h2>{% trans "Name your network" %}</h2>
50 f533f224 Vangelis Koukis
        <hr class="topruler" />
51 f533f224 Vangelis Koukis
        <div class="container">
52 f533f224 Vangelis Koukis
            <div class="name-input">
53 f533f224 Vangelis Koukis
                <label>{% trans "Name" %}:</label>
54 f533f224 Vangelis Koukis
                <input type="text" class="text" name="machine_name"></input>
55 f533f224 Vangelis Koukis
                <span class="help">{% trans "(* Required field)" %}</span>
56 f533f224 Vangelis Koukis
            </div>
57 f533f224 Vangelis Koukis
        </div>
58 f533f224 Vangelis Koukis
        <hr class="bottomruler" />
59 f533f224 Vangelis Koukis
        <button type="button" id="add-network-cancel" class="cancel">{% trans "Cancel" %}</button>
60 f533f224 Vangelis Koukis
        <button type="button" id="add-network-create" class="create">{% trans "Create Network" %}</button>
61 f533f224 Vangelis Koukis
        <hr class="separator-end"></hr>
62 7d4f351b Mike Muzurakis
    </div>
63 f533f224 Vangelis Koukis
</div>
64 f533f224 Vangelis Koukis
65 f533f224 Vangelis Koukis
<!-- networks list -->
66 f533f224 Vangelis Koukis
<div id="networks-container">
67 f533f224 Vangelis Koukis
    <!-- spinner while loading list -->
68 f533f224 Vangelis Koukis
    <div class = "large-spinner"></div>
69 f533f224 Vangelis Koukis
70 f533f224 Vangelis Koukis
    <!-- public network template -->
71 f533f224 Vangelis Koukis
    <div class="network" id="public-template">
72 0a5c4b4d Markos Gogoulos
        <img class="network-logos" src="static/internet.png" />
73 0a8e39b4 Mike Muzurakis
        <div href="#" class="name-div">
74 7d4f351b Mike Muzurakis
            <h5 class="namecontainer">
75 7d4f351b Mike Muzurakis
                <span class="name">{% trans "Internet" %}</span>
76 7d4f351b Mike Muzurakis
            </h5>
77 7d4f351b Mike Muzurakis
        </div>
78 24990e31 Christodoulos Psaltis
        <div class="network-machines">
79 24990e31 Christodoulos Psaltis
            <div class="machines-header">
80 24990e31 Christodoulos Psaltis
                <div class="machines-label">{% trans "machines" %}
81 24990e31 Christodoulos Psaltis
                    (<span class="machines-count">0</span>)
82 24990e31 Christodoulos Psaltis
                </div>
83 24990e31 Christodoulos Psaltis
                <div class="toggler down"></div>
84 24990e31 Christodoulos Psaltis
            </div>
85 24990e31 Christodoulos Psaltis
        </div>
86 b1272faa Mike Muzurakis
        <div class="network-contents">
87 69a37abb Christodoulos Psaltis
            <div class="network-placeholder">
88 f533f224 Vangelis Koukis
                <div class="machines-list">
89 f533f224 Vangelis Koukis
                <!-- append machines here -->
90 b1272faa Mike Muzurakis
                </div>
91 24990e31 Christodoulos Psaltis
                <!-- Adding servers to public network is not supported in 0.5
92 c0c46a60 Christodoulos Psaltis
                <div class="empty-network-slot" id="machine-template">
93 f533f224 Vangelis Koukis
                    <div class='network-add-machine'>
94 4ede8cf5 Christodoulos Psaltis
                        <span class="add-icon">+</span>
95 f533f224 Vangelis Koukis
                    </div>
96 c0c46a60 Christodoulos Psaltis
                </div>
97 4ede8cf5 Christodoulos Psaltis
                -->
98 69a37abb Christodoulos Psaltis
            </div>
99 69a37abb Christodoulos Psaltis
        </div>
100 29310e65 Mike Muzurakis
        <div class="state">
101 29310e65 Mike Muzurakis
            <div class="status">{% trans "Public Network" %}</div>
102 29310e65 Mike Muzurakis
            <div class="indicators network-indicator">
103 29310e65 Mike Muzurakis
                <div class="indicator1"></div>
104 29310e65 Mike Muzurakis
                <div class="indicator2"></div>
105 29310e65 Mike Muzurakis
                <div class="indicator3"></div>
106 29310e65 Mike Muzurakis
                <div class="indicator4"></div>
107 29310e65 Mike Muzurakis
            </div>
108 29310e65 Mike Muzurakis
        </div>
109 29310e65 Mike Muzurakis
        <div class="actions">
110 24990e31 Christodoulos Psaltis
             <!-- Adding servers to public network is not supported in 0.5
111 24990e31 Christodoulos Psaltis
            <a href="#" class="action-add">{% trans "Add Machine" %}</a>
112 24990e31 Christodoulos Psaltis
            -->
113 29310e65 Mike Muzurakis
        </div>
114 29310e65 Mike Muzurakis
        <div class="confirm_single">
115 29310e65 Mike Muzurakis
            <button class="yes">{% trans "Confirm" %}</button>
116 29310e65 Mike Muzurakis
            <button class="no">{% trans "Cancel" %}</button>
117 29310e65 Mike Muzurakis
        </div>
118 29310e65 Mike Muzurakis
        <div class="action_error" align="center">
119 29310e65 Mike Muzurakis
            {% trans "<span>Error</span> on" %} <span class="action">{% trans "error action" %}</span>
120 29310e65 Mike Muzurakis
            <span class="code"></span>
121 29310e65 Mike Muzurakis
            <span class="message"></span>
122 29310e65 Mike Muzurakis
            <button class="details">{% trans "Details" %}</button>
123 29310e65 Mike Muzurakis
        </div>
124 69a37abb Christodoulos Psaltis
    </div>
125 f533f224 Vangelis Koukis
126 f533f224 Vangelis Koukis
    <!-- template for machines in public network -->
127 f533f224 Vangelis Koukis
    <div class="network-machine" id="public-machine-template">
128 829c32c6 Dimitris Moraitis
        <div class="network-cable"></div>
129 f533f224 Vangelis Koukis
        <div class="machine-actions">
130 f533f224 Vangelis Koukis
            <a href="#" class="action-details">{% trans "Details" %}</a>
131 f533f224 Vangelis Koukis
        </div>
132 f533f224 Vangelis Koukis
        <div class="confirm_single">
133 f533f224 Vangelis Koukis
            <button class="yes">{% trans "Confirm" %}</button>
134 f533f224 Vangelis Koukis
            <button class="no">{% trans "Cancel" %}</button>
135 f533f224 Vangelis Koukis
        </div>
136 f533f224 Vangelis Koukis
        <div class="action_error" align="center">
137 3b08073b Christodoulos Psaltis
            {% trans "<span>Error</span> on" %} <span class="action">{% trans "error action" %}</span>
138 f533f224 Vangelis Koukis
            <span class="code"></span>
139 f533f224 Vangelis Koukis
            <span class="message"></span>
140 f533f224 Vangelis Koukis
            <button class="details">{% trans "Details" %}</button>
141 f533f224 Vangelis Koukis
        </div>
142 29310e65 Mike Muzurakis
        <div class="ips">
143 f533f224 Vangelis Koukis
            <div class="ip4-container status">
144 696fe9e6 Christodoulos Psaltis
                {% trans "IPv4" %}:
145 f277a1cd Kostas Papadimitriou
                <span class="ip4 ipv4-text">192.94.73.15</span>
146 69a37abb Christodoulos Psaltis
            </div>
147 f533f224 Vangelis Koukis
            <div class="ip6-container status">
148 696fe9e6 Christodoulos Psaltis
                {% trans "IPv6" %}:
149 f277a1cd Kostas Papadimitriou
                <span class="ip6 ipv6-text"></span>
150 b1272faa Mike Muzurakis
            </div>
151 7d4f351b Mike Muzurakis
        </div>
152 0a5c4b4d Markos Gogoulos
        <img class="logo" src="static/icons/machines/medium/debian-on.png" />
153 f533f224 Vangelis Koukis
        <div class='network-remove-machine'>
154 24990e31 Christodoulos Psaltis
            <!-- Removing servers from public network is not supported in 0.5
155 24990e31 Christodoulos Psaltis
            <span class="remove-icon">X</span>
156 24990e31 Christodoulos Psaltis
            -->
157 f533f224 Vangelis Koukis
            <span>&nbsp;</span>
158 f533f224 Vangelis Koukis
        </div>
159 f533f224 Vangelis Koukis
        <div href="#" class="machine-name-div">
160 f533f224 Vangelis Koukis
            <h5 class="namecontainer">
161 f533f224 Vangelis Koukis
                <span class="name">my desktop1</span>
162 6f547d12 Mike Muzurakis
            </h5>
163 f533f224 Vangelis Koukis
        </div>
164 24990e31 Christodoulos Psaltis
        <div class="firewall">
165 24990e31 Christodoulos Psaltis
            <div class="firewall-header">
166 24990e31 Christodoulos Psaltis
                <div class="firewall-label">{% trans "Firewall" %}
167 24990e31 Christodoulos Psaltis
                    (<span class="firewall-off">{% trans "Off" %}</span>)
168 24990e31 Christodoulos Psaltis
                </div>
169 24990e31 Christodoulos Psaltis
                <div class="toggler down"></div>
170 e9e7fe51 Kostas Papadimitriou
171 e9e7fe51 Kostas Papadimitriou
                <div class="network-progress-indicator">
172 e9e7fe51 Kostas Papadimitriou
                    <img src="/static/icons/indicators/small/progress.gif" alt="{% trans "updating  settings" %}" title="{% trans "updating  settings" %}" />
173 e9e7fe51 Kostas Papadimitriou
                </div>
174 24990e31 Christodoulos Psaltis
            </div>
175 24990e31 Christodoulos Psaltis
        </div>
176 f533f224 Vangelis Koukis
        <div class="firewall-content">
177 829c32c6 Dimitris Moraitis
            <div class="firewall-cable"></div>
178 372f6c81 Mike Muzurakis
            <input type="radio" class="checkboxes" value="DISABLED" name="firewall" />
179 f533f224 Vangelis Koukis
            <span class="checkbox-legends">{% trans "Unprotected mode (Firewall off)" %}</span>
180 f533f224 Vangelis Koukis
            <br />
181 372f6c81 Mike Muzurakis
            <input type="radio" class="checkboxes" value="ENABLED" name="firewall" />
182 f533f224 Vangelis Koukis
            <span class="checkbox-legends">{% trans "Fully protected mode (Firewall on)" %}</span>
183 f533f224 Vangelis Koukis
            <br />
184 372f6c81 Mike Muzurakis
            <input type="radio" class="checkboxes" value="PROTECTED" name="firewall" />
185 f533f224 Vangelis Koukis
            <span class="checkbox-legends">{% trans "Basically protected mode (Firewall on)" %}</span>
186 f533f224 Vangelis Koukis
            <button type="submit" class="firewall-apply">{% trans "Apply" %}</button>
187 f533f224 Vangelis Koukis
        </div>
188 f533f224 Vangelis Koukis
        <div class="network-separator machines"></div>
189 f533f224 Vangelis Koukis
    </div>
190 f533f224 Vangelis Koukis
191 e8f98b18 Christodoulos Psaltis
    <div class="separator" style="display:none;"></div>
192 e8f98b18 Christodoulos Psaltis
193 f533f224 Vangelis Koukis
    <!-- private network template -->
194 f533f224 Vangelis Koukis
    <div class="network" id="private-template">
195 f533f224 Vangelis Koukis
        <div class="actions">
196 f533f224 Vangelis Koukis
            <a href="#" class="action-add">{% trans "Add Machine" %}</a>
197 f533f224 Vangelis Koukis
            <a href="#" class="action-network-destroy">{% trans "Destroy" %}</a>
198 f533f224 Vangelis Koukis
        </div>
199 d7414be6 Markos Gogoulos
        <div class="action_error" align="center">
200 d7414be6 Markos Gogoulos
            {% trans "<span>Error</span> on" %} <span class="action">{% trans "error action" %}</span>
201 d7414be6 Markos Gogoulos
            <span class="code"></span>
202 d7414be6 Markos Gogoulos
            <span class="message"></span>
203 d7414be6 Markos Gogoulos
            <button class="details">{% trans "Details" %}</button>
204 d7414be6 Markos Gogoulos
        </div>
205 f533f224 Vangelis Koukis
        <div class="confirm_single">
206 f533f224 Vangelis Koukis
            <button class="yes">{% trans "Confirm" %}</button>
207 df67c0cc Markos Gogoulos
            <button class="no">X</button>
208 f533f224 Vangelis Koukis
        </div>
209 f533f224 Vangelis Koukis
        <div class="action_error" align="center">
210 3b08073b Christodoulos Psaltis
            {% trans "<span>Error</span> on" %} <span class="action">{% trans "error action" %}</span>
211 f533f224 Vangelis Koukis
            <span class="code"></span>
212 f533f224 Vangelis Koukis
            <span class="message"></span>
213 f533f224 Vangelis Koukis
            <button class="details">{% trans "Details" %}</button>
214 f533f224 Vangelis Koukis
        </div>
215 f533f224 Vangelis Koukis
        <div class="state">
216 f533f224 Vangelis Koukis
            <div class="status">{% trans "Private Network" %}</div>
217 df67c0cc Markos Gogoulos
            <div class="indicators network-indicator">
218 df67c0cc Markos Gogoulos
                <div class="indicator1"></div>
219 df67c0cc Markos Gogoulos
                <div class="indicator2"></div>
220 df67c0cc Markos Gogoulos
                <div class="indicator3"></div>
221 df67c0cc Markos Gogoulos
                <div class="indicator4"></div>
222 df67c0cc Markos Gogoulos
            </div>
223 0a5c4b4d Markos Gogoulos
            <img class="spinner" style="display:none" src="static/icons/indicators/medium/progress.gif" />
224 0a5c4b4d Markos Gogoulos
            <img class="wave" style="display:none" src="static/icons/indicators/medium/wave.gif" />
225 f533f224 Vangelis Koukis
        </div>
226 0a5c4b4d Markos Gogoulos
        <img class="network-logos" src="static/network.png" />
227 f533f224 Vangelis Koukis
        <div href="#" class="name-div">
228 f533f224 Vangelis Koukis
            <h5 class="namecontainer editable">
229 f533f224 Vangelis Koukis
                <span class="name">{% trans "My Network 1" %}</span>
230 f533f224 Vangelis Koukis
                <span class="rename-network"></span>
231 f533f224 Vangelis Koukis
                <div class="editbuttons" style="display:none">
232 29310e65 Mike Muzurakis
                    <span class="save"></span>
233 29310e65 Mike Muzurakis
                    <span class="cancel"></span>
234 c0c46a60 Christodoulos Psaltis
                </div>
235 f533f224 Vangelis Koukis
            </h5>
236 6f547d12 Mike Muzurakis
        </div>
237 24990e31 Christodoulos Psaltis
        <div class="network-machines">
238 24990e31 Christodoulos Psaltis
            <div class="machines-header">
239 24990e31 Christodoulos Psaltis
                <div class="machines-label">{% trans "machines" %}
240 24990e31 Christodoulos Psaltis
                    (<span class="machines-count">0</span>)
241 24990e31 Christodoulos Psaltis
                </div>
242 24990e31 Christodoulos Psaltis
                <div class="toggler down"></div>
243 24990e31 Christodoulos Psaltis
            </div>
244 24990e31 Christodoulos Psaltis
        </div>
245 f533f224 Vangelis Koukis
        <div class="network-contents">
246 f533f224 Vangelis Koukis
            <div class="network-placeholder">
247 f533f224 Vangelis Koukis
                <div class="machines-list">
248 f533f224 Vangelis Koukis
                <!-- append machines here -->
249 f533f224 Vangelis Koukis
                </div>
250 f533f224 Vangelis Koukis
                <div class="empty-network-slot" id="machine-template">
251 01f84412 Mike Muzurakis
                    <div class='network-add-machine'><div class="add-icon">+</div></div>
252 f533f224 Vangelis Koukis
                </div>
253 6f547d12 Mike Muzurakis
            </div>
254 f533f224 Vangelis Koukis
        </div>
255 f533f224 Vangelis Koukis
    </div>
256 f533f224 Vangelis Koukis
257 f533f224 Vangelis Koukis
    <!-- template for machines in private network -->
258 f533f224 Vangelis Koukis
    <div class="network-machine" id="private-machine-template">
259 f533f224 Vangelis Koukis
        <div class="machine-actions">
260 f533f224 Vangelis Koukis
            <a href="#" class="action-disconnect">{% trans "Disconnect" %}</a>
261 f533f224 Vangelis Koukis
            <a href="#" class="action-details">{% trans "Details" %}</a>
262 f533f224 Vangelis Koukis
        </div>
263 f533f224 Vangelis Koukis
        <div class="confirm_single">
264 f533f224 Vangelis Koukis
            <button class="yes">{% trans "Confirm" %}</button>
265 df67c0cc Markos Gogoulos
            <button class="no">X</button>
266 f533f224 Vangelis Koukis
        </div>
267 f533f224 Vangelis Koukis
        <div class="action_error" align="center">
268 3b08073b Christodoulos Psaltis
            {% trans "<span>Error</span> on" %} <span class="action">{% trans "error action" %}</span>
269 f533f224 Vangelis Koukis
            <span class="code"></span>
270 f533f224 Vangelis Koukis
            <span class="message"></span>
271 f533f224 Vangelis Koukis
            <button class="details">{% trans "Details" %}</button>
272 f533f224 Vangelis Koukis
        </div>
273 0a5c4b4d Markos Gogoulos
        <img class="logo" src="static/icons/machines/medium/debian-on.png" />
274 f533f224 Vangelis Koukis
        <div class='network-remove-machine'><span class="remove-icon">X</span></div>
275 f533f224 Vangelis Koukis
        <div href="#" class="machine-name-div">
276 f533f224 Vangelis Koukis
            <h5 class="namecontainer editable">
277 f533f224 Vangelis Koukis
                <span class="name">my desktop1</span>
278 6f547d12 Mike Muzurakis
            </h5>
279 f533f224 Vangelis Koukis
        </div>
280 77d4b76f Christodoulos Psaltis
        <h5 class='machine-connect'>
281 77d4b76f Christodoulos Psaltis
            <span>{% trans "Connect" %}</span> {% trans "to manage private IPs" %}
282 f533f224 Vangelis Koukis
        </h5>
283 f533f224 Vangelis Koukis
        <div class="network-separator machines"></div>
284 f533f224 Vangelis Koukis
    </div>
285 f533f224 Vangelis Koukis
286 f533f224 Vangelis Koukis
    <!-- the actual structure to be populated -->
287 f533f224 Vangelis Koukis
    <div class="public-networks"></div>
288 f533f224 Vangelis Koukis
    <div class="private-networks" style="display:none;"></div>
289 f533f224 Vangelis Koukis
</div>
290 f533f224 Vangelis Koukis
291 f533f224 Vangelis Koukis
<!-- add servers to network overlay -->
292 f533f224 Vangelis Koukis
<div>
293 f533f224 Vangelis Koukis
    <div id="add-machines-wizard" class="modal">
294 f533f224 Vangelis Koukis
        <h3 class="popup-header">{% trans "Add machine" %}</h3>
295 f533f224 Vangelis Koukis
        <p style='display:none;'>hidden network id</p>
296 f533f224 Vangelis Koukis
        <div class="popup-body">
297 f533f224 Vangelis Koukis
            <div class="popup-body-inner">
298 f533f224 Vangelis Koukis
                <div class="popup-title">{% trans "Select machines to add to:" %}</div>
299 f533f224 Vangelis Koukis
                <div class="network-name"></div>
300 f533f224 Vangelis Koukis
                <div class="popup-separator"></div>
301 f533f224 Vangelis Koukis
                <div class="machines-container">
302 f533f224 Vangelis Koukis
                    <div class="large-spinner"></div>
303 f533f224 Vangelis Koukis
                    <div id='machine-entry-template' style="display:none;">
304 f533f224 Vangelis Koukis
                        <input type="checkbox" />
305 0a5c4b4d Markos Gogoulos
                        <img class=list-logo src="static/icons/machines/small/debian-on.png" title="debian"></img>
306 f533f224 Vangelis Koukis
                        <span class="machine-name">kati</span>
307 c0c46a60 Christodoulos Psaltis
                    </div>
308 c0c46a60 Christodoulos Psaltis
                </div>
309 b1272faa Mike Muzurakis
            </div>
310 6f547d12 Mike Muzurakis
        </div>
311 f533f224 Vangelis Koukis
        <div class="buttons">
312 f533f224 Vangelis Koukis
            <button type="button" class="cancel" id="add-server-cancel">{% trans "Cancel" %}</button>
313 f533f224 Vangelis Koukis
            <button type="button" class="add" id="add-server-add">{% trans "Add" %}</button>
314 f533f224 Vangelis Koukis
        </div>
315 7d4f351b Mike Muzurakis
    </div>
316 7d4f351b Mike Muzurakis
</div>
317 f533f224 Vangelis Koukis
318 f533f224 Vangelis Koukis
<a id="add-machines-overlay" href="#" rel="#add-machines-wizard"></a>
319 f533f224 Vangelis Koukis
320 64c30d16 Christodoulos Psaltis
<!-- reboot dialog -->
321 64c30d16 Christodoulos Psaltis
<div class="reboot-dialog">
322 64c30d16 Christodoulos Psaltis
    <p>{% trans "For the network changes to take effect you need to reboot all affected machines:" %}</p>
323 64c30d16 Christodoulos Psaltis
    <button class="reboot-all">{% trans "Reboot All" %}</button>
324 26a8c814 Christodoulos Psaltis
    <div id="reboot-machine-template" class='reboot-machine-entry'>
325 64c30d16 Christodoulos Psaltis
        <div class="name">my debian server</div>
326 64c30d16 Christodoulos Psaltis
        <button class="reboot-single">{% trans "Reboot" %}</button>
327 b9d9894f Christodoulos Psaltis
        <div class="reboot-error">
328 b9d9894f Christodoulos Psaltis
            <div class="code"></div>
329 b9d9894f Christodoulos Psaltis
            <div class="action"></div>
330 b9d9894f Christodoulos Psaltis
            <div class="message"></div>
331 b9d9894f Christodoulos Psaltis
            <button class="details">{% trans "Error!" %}</button>
332 b9d9894f Christodoulos Psaltis
        </div>
333 64c30d16 Christodoulos Psaltis
    </div>
334 26a8c814 Christodoulos Psaltis
    <div class="reboot-list"></div>
335 64c30d16 Christodoulos Psaltis
</div>
336 64c30d16 Christodoulos Psaltis
337 f533f224 Vangelis Koukis
<!-- multiple confirmation dialog -->
338 f533f224 Vangelis Koukis
<div class="confirm_multiple">
339 eead5be3 Dimitris Moraitis
    <p>{% trans "Your actions will affect" %} <span class="actionLen">XX</span> {% trans "networks or machines" %}</p>
340 f533f224 Vangelis Koukis
    <button class="yes">{% trans "Confirm All" %}</button>
341 f533f224 Vangelis Koukis
    <button class="no">{% trans "Cancel All" %}</button>
342 f533f224 Vangelis Koukis
</div>
343 6f547d12 Mike Muzurakis
344 6f547d12 Mike Muzurakis
<script>
345 f533f224 Vangelis Koukis
// add network wizard initialization
346 f533f224 Vangelis Koukis
$(function() {
347 f533f224 Vangelis Koukis
    // create wizard overlay
348 f533f224 Vangelis Koukis
    $("a#networkscreate").overlay({
349 716c3ead Dimitris Moraitis
        mask: '#666',
350 f533f224 Vangelis Koukis
        effect: 'default',
351 f533f224 Vangelis Koukis
        top: '10%',
352 f533f224 Vangelis Koukis
        closeOnClick: false,
353 f533f224 Vangelis Koukis
        oneInstance: false,
354 f533f224 Vangelis Koukis
        closeOnEsc: true,
355 f533f224 Vangelis Koukis
        load: false
356 f533f224 Vangelis Koukis
    });
357 b1272faa Mike Muzurakis
});
358 f533f224 Vangelis Koukis

359 f533f224 Vangelis Koukis
// intercept click to create new private network
360 f533f224 Vangelis Koukis
$("#networkscreate").click(function() {
361 f533f224 Vangelis Koukis
    // reset and load wizard
362 f533f224 Vangelis Koukis
    $('#networks-wizard span.help').removeClass('red');
363 f533f224 Vangelis Koukis
    $('#networks-wizard input').val('');
364 f533f224 Vangelis Koukis
    $('#networks-wizard #add-network-create').text('{% trans 'Create Network' %}');
365 f533f224 Vangelis Koukis
    $("#networks-wizard").show();
366 f533f224 Vangelis Koukis
    $('#networks-wizard input').focus();
367 f533f224 Vangelis Koukis
    $("a#networkscreate").data('overlay').load();
368 cd75a3f2 Christodoulos Psaltis
    // enable submit button
369 cd75a3f2 Christodoulos Psaltis
    $("#networks-wizard #add-network-create").removeAttr('disabled');
370 f533f224 Vangelis Koukis
    return false;
371 e0e9957e Christodoulos Psaltis
});
372 b1272faa Mike Muzurakis

373 f533f224 Vangelis Koukis
// exit the add machine to network wizard
374 f533f224 Vangelis Koukis
$("#add-network-cancel").live('click', function() {
375 f533f224 Vangelis Koukis
    $("a#networkscreate").overlay().close();
376 384da41e Christodoulos Psaltis
});
377 b1272faa Mike Muzurakis

378 f533f224 Vangelis Koukis
// add selected machines to network
379 f533f224 Vangelis Koukis
$("#add-network-create").live('click', function() {
380 f533f224 Vangelis Koukis
    if ($('#networks-wizard input').val() == '') {
381 f533f224 Vangelis Koukis
        $('#networks-wizard input').focus();
382 f533f224 Vangelis Koukis
        $('#networks-wizard span.help').addClass('red');
383 f533f224 Vangelis Koukis
    } else {
384 cd75a3f2 Christodoulos Psaltis
        // disable submit button to prevent multiple calls
385 cd75a3f2 Christodoulos Psaltis
        $(this).attr("disabled", true);
386 cd75a3f2 Christodoulos Psaltis
        // load progress bar
387 f533f224 Vangelis Koukis
        $(this).text('');
388 0a5c4b4d Markos Gogoulos
        $(this).html('<img src="static/icons/indicators/medium/horizontal-progress.gif"></img>');
389 cd75a3f2 Christodoulos Psaltis
        // make the call
390 f533f224 Vangelis Koukis
        networkName = $('#networks-wizard input').val();
391 f533f224 Vangelis Koukis
        create_network(networkName);
392 f533f224 Vangelis Koukis
    }
393 f533f224 Vangelis Koukis
    return false;
394 92f534e9 Christodoulos Psaltis
});
395 92f534e9 Christodoulos Psaltis

396 f533f224 Vangelis Koukis
// toggle component with class network-contents
397 24990e31 Christodoulos Psaltis
$("#networks-pane div.machines-header").live('click', function() {
398 637104fe Christodoulos Psaltis
    if ($(this).find('.toggler').hasClass('up')) {
399 637104fe Christodoulos Psaltis
        $(this).find('.toggler').removeClass('up');
400 637104fe Christodoulos Psaltis
        $(this).find('.toggler').addClass('down');
401 637104fe Christodoulos Psaltis
        $(this).find('.machines-label').removeClass('darker');
402 637104fe Christodoulos Psaltis
        $(this).closest('div.network').removeClass('light-background');
403 637104fe Christodoulos Psaltis
    } else {
404 637104fe Christodoulos Psaltis
        $(this).find('.toggler').removeClass('down');
405 637104fe Christodoulos Psaltis
        $(this).find('.toggler').addClass('up');
406 637104fe Christodoulos Psaltis
        $(this).find('.machines-label').addClass('darker');
407 637104fe Christodoulos Psaltis
        $(this).closest('div.network').addClass('light-background');
408 637104fe Christodoulos Psaltis
    }
409 2a437761 Kostas Papadimitriou
    $(this).parent().next("#networks-pane .network-contents").slideToggle(600, update_net_ui);
410 f533f224 Vangelis Koukis
    return false;
411 f533f224 Vangelis Koukis
});
412 f533f224 Vangelis Koukis

413 f533f224 Vangelis Koukis
// toggle component with class network-contents
414 f533f224 Vangelis Koukis
$("#networks-pane .network-logos").live('click', function() {
415 637104fe Christodoulos Psaltis
    $(this).closest('div.network').find('div.machines-header').click();
416 f533f224 Vangelis Koukis
    return false;
417 f533f224 Vangelis Koukis
});
418 f533f224 Vangelis Koukis

419 f533f224 Vangelis Koukis
//initiate network renaming
420 f533f224 Vangelis Koukis
$("#networks-pane .name-div .rename-network, #networks-pane .name-div h5.editable span.name").live('click', function() {
421 f533f224 Vangelis Koukis
    $(this).parent().find('.name').html("<input id=\"txtEdit\" type=\"text\" class=\"nametextbox\" value=\"" +
422 f533f224 Vangelis Koukis
                                        $(this).parent().find('.name').text() +
423 f533f224 Vangelis Koukis
                                        "\" / ><span class=\"oldValue\">" +
424 f533f224 Vangelis Koukis
                                        $(this).parent().find('.name').text() + "</span>");
425 f533f224 Vangelis Koukis
    $(this).parent().find('.rename-network').hide();
426 f533f224 Vangelis Koukis
    $(this).parent().find(".editbuttons").fadeIn();
427 f533f224 Vangelis Koukis
    $(this).parent().find(".nametextbox").focus().select();
428 f533f224 Vangelis Koukis
    $(this).parent().removeClass('editable');
429 f533f224 Vangelis Koukis

430 f533f224 Vangelis Koukis
    //submit wizard by pressing enter on the name textbox
431 f533f224 Vangelis Koukis
    $("#txtEdit").keydown(function (e) {
432 f533f224 Vangelis Koukis
        if ((e.which && e.which == 13) || (e.keyCode && e.keyCode == 13)) {
433 f533f224 Vangelis Koukis
            $(this).parent().parent().find('div.editbuttons span.save').click();
434 f533f224 Vangelis Koukis
            return false;
435 f533f224 Vangelis Koukis
        } else if ((e.which && e.which == 27) || (e.keyCode && e.keyCode == 27)) {
436 f533f224 Vangelis Koukis
            $(this).parent().parent().find('div.editbuttons span.cancel').click();
437 f533f224 Vangelis Koukis
            return true;
438 f533f224 Vangelis Koukis
        }
439 f533f224 Vangelis Koukis
    });
440 f533f224 Vangelis Koukis
    return false;
441 f533f224 Vangelis Koukis
});
442 f533f224 Vangelis Koukis

443 f533f224 Vangelis Koukis
//rename machine
444 f533f224 Vangelis Koukis
$("#networks-pane .name-div .editbuttons .save").live('click', function() {
445 f533f224 Vangelis Koukis
    networkID = $(this).closest('.network').attr("id").split('-').pop();
446 f533f224 Vangelis Koukis
    networkName = $(this).parent().parent().find('.nametextbox').val();
447 f533f224 Vangelis Koukis
    if (networkName.trim() == ''){
448 f533f224 Vangelis Koukis
        return false;
449 f533f224 Vangelis Koukis
    }
450 f533f224 Vangelis Koukis
    $(this).parent().parent().find('.name').html($(this).parent().parent().find('.nametextbox').val());
451 f533f224 Vangelis Koukis
    $(this).parent().parent().find(".editbuttons").fadeOut("fast");
452 f533f224 Vangelis Koukis
    $(this).parent().parent().find(".rename-network").fadeIn("slow");
453 f533f224 Vangelis Koukis
    rename_network(networkID, networkName);
454 f533f224 Vangelis Koukis
    return false;
455 f533f224 Vangelis Koukis
});
456 f533f224 Vangelis Koukis

457 f533f224 Vangelis Koukis
//cancel renaming
458 f533f224 Vangelis Koukis
$("#networks-pane .name-div .editbuttons .cancel").live('click', function() {
459 f533f224 Vangelis Koukis
    $(this).parent().parent().find('.name').html($(this).parent().parent().find('.oldValue').text());
460 f533f224 Vangelis Koukis
    $(this).parent().parent().find(".editbuttons").hide();
461 f533f224 Vangelis Koukis
    $(this).parent().parent().find(".rename-network").fadeIn();
462 f533f224 Vangelis Koukis
    $(this).parent().parent().addClass('editable');
463 f533f224 Vangelis Koukis
    return false;
464 f533f224 Vangelis Koukis
});
465 f533f224 Vangelis Koukis

466 f533f224 Vangelis Koukis
// intercept click to delete network
467 f533f224 Vangelis Koukis
$("#networks-pane .action-network-destroy").live('click', function() {
468 f533f224 Vangelis Koukis
    var networkID = $(this).parent().parent().attr('id').split('-').pop();
469 f533f224 Vangelis Koukis
    var networkName = $(this).parent().parent().find(".name-div span.name").text();
470 f533f224 Vangelis Koukis
    var found = false;
471 f533f224 Vangelis Koukis
    $(this).parent().children('a').removeClass('selected');
472 f533f224 Vangelis Koukis
    $(this).addClass('selected');
473 f533f224 Vangelis Koukis
    $(this).parent().addClass('display')
474 f533f224 Vangelis Koukis
    $(this).parent().parent().find('.action_error').hide();
475 f533f224 Vangelis Koukis
    for (i=0; i < pending_actions.length; i++){ // if there is already a pending action for this network replace it
476 f533f224 Vangelis Koukis
        if (pending_actions[i][0] == delete_network && pending_actions[i][1] == networkID){
477 f533f224 Vangelis Koukis
            pending_actions[i][0] = delete_network;
478 f533f224 Vangelis Koukis
            found = true
479 f533f224 Vangelis Koukis
        }
480 f533f224 Vangelis Koukis
    }
481 f533f224 Vangelis Koukis
    if (!found) {
482 f533f224 Vangelis Koukis
        // no pending action for this network was found, so let's just add it to the list
483 f533f224 Vangelis Koukis
        pending_actions.push([delete_network, networkID, networkName]);
484 f533f224 Vangelis Koukis
    }
485 f533f224 Vangelis Koukis
    update_network_confirmations();
486 f533f224 Vangelis Koukis
    return false;
487 f533f224 Vangelis Koukis
});
488 f533f224 Vangelis Koukis

489 f533f224 Vangelis Koukis
// intercept click to remove machine from network
490 f533f224 Vangelis Koukis
$("#networks-pane .remove-icon").live('click', function() {
491 f533f224 Vangelis Koukis
    $(this).closest('.network-machine').find('.action-disconnect').click();
492 f533f224 Vangelis Koukis
    return false;
493 f533f224 Vangelis Koukis
});
494 f533f224 Vangelis Koukis

495 f533f224 Vangelis Koukis
// intercept click to remove machine from network
496 f533f224 Vangelis Koukis
$("#networks-pane .action-disconnect").live('click', function() {
497 f533f224 Vangelis Koukis
    var serverID = $(this).parent().parent().attr('id').split('-').pop();
498 82835e06 Christodoulos Psaltis
    var serverName = $(this).closest('.network-machine').find('span.name').text();
499 f533f224 Vangelis Koukis
    var networkID = $(this).closest('.network').attr('id').split('-').pop();
500 f39b36a6 Christodoulos Psaltis
    var serverState = $(this).closest('.network-machine').find('img.logo').attr('src').split('-')[1];
501 f39b36a6 Christodoulos Psaltis
    serverState = serverState.split('.')[0];
502 f533f224 Vangelis Koukis
    var found = false;
503 f533f224 Vangelis Koukis
    $(this).parent().children('a').removeClass('selected');
504 f533f224 Vangelis Koukis
    $(this).addClass('selected');
505 f533f224 Vangelis Koukis
    $(this).parent().addClass('display')
506 f533f224 Vangelis Koukis
    $(this).parent().parent().find('.action_error').hide();
507 f533f224 Vangelis Koukis
    for (i=0; i < pending_actions.length; i++){
508 f533f224 Vangelis Koukis
        // if there is already a pending action for this network replace it
509 f533f224 Vangelis Koukis
        if (pending_actions[i][0] == remove_server_from_network &&
510 f533f224 Vangelis Koukis
            pending_actions[i][1] == networkID &&
511 f533f224 Vangelis Koukis
            pending_actions[i][2] == serverID) {
512 f533f224 Vangelis Koukis
                pending_actions[i][0] = remove_server_from_network;
513 f533f224 Vangelis Koukis
                found = true
514 f533f224 Vangelis Koukis
        }
515 f533f224 Vangelis Koukis
    }
516 f533f224 Vangelis Koukis
    if (!found) {
517 f533f224 Vangelis Koukis
        // no pending action for this network was found, so let's just add it to the list
518 f39b36a6 Christodoulos Psaltis
        pending_actions.push([remove_server_from_network, networkID, serverID, serverName, serverState]);
519 f533f224 Vangelis Koukis
    }
520 f533f224 Vangelis Koukis
    update_network_confirmations();
521 f533f224 Vangelis Koukis
    return false;
522 f533f224 Vangelis Koukis
});
523 f533f224 Vangelis Koukis

524 f533f224 Vangelis Koukis
$("#networks-pane .action-details").live('click', function() {
525 f533f224 Vangelis Koukis
    var serverID = $(this).parent().parent().attr('id').split('-').pop();
526 f533f224 Vangelis Koukis
    $.cookie('view', '2');
527 f533f224 Vangelis Koukis
    $.cookie('server', serverID);
528 f533f224 Vangelis Koukis
    $('a#machines').click();
529 829c32c6 Dimitris Moraitis
    return false;
530 f533f224 Vangelis Koukis
});
531 f533f224 Vangelis Koukis

532 f533f224 Vangelis Koukis
// add machines wizard initialization
533 f533f224 Vangelis Koukis
$(function() {
534 f533f224 Vangelis Koukis
    // create wizard overlay
535 f533f224 Vangelis Koukis
    $("a#add-machines-overlay").overlay({
536 716c3ead Dimitris Moraitis
        mask: '#666',
537 f533f224 Vangelis Koukis
        effect: 'default',
538 f533f224 Vangelis Koukis
        top: '10%',
539 f533f224 Vangelis Koukis
        closeOnClick: false,
540 f533f224 Vangelis Koukis
        oneInstance: false,
541 f533f224 Vangelis Koukis
        closeOnEsc: true,
542 28a81775 Christodoulos Psaltis
        load: false
543 f533f224 Vangelis Koukis
    });
544 f533f224 Vangelis Koukis
});
545 f533f224 Vangelis Koukis

546 f533f224 Vangelis Koukis
// intercept click to add machine to  network
547 f533f224 Vangelis Koukis
$("#networks-pane .action-add").live('click', function() {
548 f533f224 Vangelis Koukis
    // reset pre-existing values
549 f533f224 Vangelis Koukis
    $('#add-server-add').text('{% trans 'Add' %}');
550 f533f224 Vangelis Koukis
    $("#add-machines-wizard .network-name").text($(this).closest('.network').find('.name-div span.name').text());
551 f533f224 Vangelis Koukis
    $("#add-machines-wizard p").text($(this).closest('.network').attr('id').split('-').pop());
552 f533f224 Vangelis Koukis
    $("#add-machines-wizard .large-spinner").show();
553 f533f224 Vangelis Koukis
    $('[id^="list-entry-server-"]').remove();
554 f533f224 Vangelis Koukis
    // list new values
555 f533f224 Vangelis Koukis
    list_machines();
556 f533f224 Vangelis Koukis
    // load wizard
557 f533f224 Vangelis Koukis
    $("#add-machines-wizard").show();
558 f533f224 Vangelis Koukis
    $("a#add-machines-overlay").data('overlay').load();
559 4e3a54f3 Christodoulos Psaltis
    // enable submit button
560 4e3a54f3 Christodoulos Psaltis
    $("#add-machines-wizard #add-server-add").removeAttr('disabled');
561 f533f224 Vangelis Koukis
    return false;
562 f533f224 Vangelis Koukis
});
563 f533f224 Vangelis Koukis

564 f533f224 Vangelis Koukis
//submit wizard by pressing enter on the name textbox
565 f533f224 Vangelis Koukis
$("#networks-wizard div.name-input input.text").keypress(function (e) {
566 f533f224 Vangelis Koukis
    if ((e.which && e.which == 13) || (e.keyCode && e.keyCode == 13)) {
567 f533f224 Vangelis Koukis
        $('#add-network-create').click();
568 f533f224 Vangelis Koukis
        return false;
569 f533f224 Vangelis Koukis
    } else {
570 f533f224 Vangelis Koukis
        return true;
571 f533f224 Vangelis Koukis
    }
572 f533f224 Vangelis Koukis
});
573 f533f224 Vangelis Koukis

574 f533f224 Vangelis Koukis
// intercept click to bring up the add machine to network wizard
575 f533f224 Vangelis Koukis
$("#networks-pane .add-icon").live('click', function() {
576 f533f224 Vangelis Koukis
    $(this).closest('.network').find('.action-add').click();
577 f533f224 Vangelis Koukis
});
578 f533f224 Vangelis Koukis

579 f533f224 Vangelis Koukis
// get machines in public network and list them in add server to network wizard
580 f533f224 Vangelis Koukis
function list_machines() {
581 f533f224 Vangelis Koukis
    var networkID = $("#add-machines-wizard p").text();
582 f533f224 Vangelis Koukis
    // get the list of servers from the UI
583 f533f224 Vangelis Koukis
    var all_machines = $("#networks-pane .public-networks .network-machine");
584 f533f224 Vangelis Koukis

585 f533f224 Vangelis Koukis
    $.each(all_machines, function(i, machine) {
586 f533f224 Vangelis Koukis
        var currentID = machine.id.split('-').pop();
587 f533f224 Vangelis Koukis
        // if machine already exists in private network
588 f533f224 Vangelis Koukis
        if ( $('#net-' + networkID + '-server-' + currentID).length > 0 ) {
589 f533f224 Vangelis Koukis
            // do nothing
590 f533f224 Vangelis Koukis
        } else {
591 f533f224 Vangelis Koukis
            // put it in the list
592 f533f224 Vangelis Koukis
            var entry = $("#add-machines-wizard #machine-entry-template").clone().attr("id", "list-entry-server-" + currentID);
593 f533f224 Vangelis Koukis
            entry.find('input').attr("name", currentID);
594 0a5c4b4d Markos Gogoulos
            entry.find('img').attr('src', 'static/icons/machines/small/' + $(machine).find('img.logo').attr('src').split('/').pop());
595 f533f224 Vangelis Koukis
            entry.find('.machine-name').text($(machine).find('span.name').text());
596 f533f224 Vangelis Koukis
            entry.appendTo("#add-machines-wizard .machines-container");
597 f533f224 Vangelis Koukis
        }
598 f533f224 Vangelis Koukis
    });
599 f533f224 Vangelis Koukis
    $("#add-machines-wizard .large-spinner").hide();
600 f533f224 Vangelis Koukis
    $('[id^="list-entry-server-"]').fadeIn("slow");
601 f533f224 Vangelis Koukis
    return false;
602 f533f224 Vangelis Koukis
}
603 f533f224 Vangelis Koukis

604 f533f224 Vangelis Koukis
// exit the add machine to network wizard
605 f533f224 Vangelis Koukis
$("#add-server-cancel").live('click', function() {
606 f533f224 Vangelis Koukis
    $("a#add-machines-overlay").overlay().close();
607 f533f224 Vangelis Koukis
});
608 f533f224 Vangelis Koukis

609 f533f224 Vangelis Koukis
// add selected machines to network
610 f533f224 Vangelis Koukis
$("#add-server-add").live('click', function() {
611 f533f224 Vangelis Koukis
    var selections = $("#add-machines-wizard :checkbox:checked");
612 9422d033 Christodoulos Psaltis
    // if there are no selections simply close the wizard
613 9422d033 Christodoulos Psaltis
    if (selections.length == 0 ) {
614 9422d033 Christodoulos Psaltis
        $("a#add-machines-overlay").overlay().close();
615 9422d033 Christodoulos Psaltis
    }
616 9422d033 Christodoulos Psaltis
    // if there are servers selected make the proper call
617 9422d033 Christodoulos Psaltis
    else {
618 9422d033 Christodoulos Psaltis
        var networkID = $("#add-machines-wizard p").text();
619 9422d033 Christodoulos Psaltis
        var serverIDs = [];
620 82835e06 Christodoulos Psaltis
        var serverNames = [];
621 f39b36a6 Christodoulos Psaltis
        var serverState = [];
622 f39b36a6 Christodoulos Psaltis
        var serverStates = [];
623 9422d033 Christodoulos Psaltis
        $.each(selections, function(i, selection) {
624 9422d033 Christodoulos Psaltis
            serverIDs.push(selection.name);
625 82835e06 Christodoulos Psaltis
            serverNames.push($("#list-entry-server-" + selection.name + " span.machine-name").text());
626 f39b36a6 Christodoulos Psaltis
            serverState = $("#list-entry-server-" + selection.name + " img.list-logo").attr('src').split('-')[1];
627 f39b36a6 Christodoulos Psaltis
            serverState = serverState.split('.')[0];
628 f39b36a6 Christodoulos Psaltis
            serverStates.push(serverState);
629 9422d033 Christodoulos Psaltis
        });
630 4e3a54f3 Christodoulos Psaltis
        // disable submit button to prevent multiple calls
631 4e3a54f3 Christodoulos Psaltis
        $(this).attr("disabled", true);
632 4e3a54f3 Christodoulos Psaltis
        // load progress bar
633 9422d033 Christodoulos Psaltis
        $(this).text('');
634 9422d033 Christodoulos Psaltis
        $(this).html('<img src="static/icons/indicators/medium/horizontal-progress.gif"></img>');
635 91cbaf56 Christodoulos Psaltis
        // show the proper spinner
636 91cbaf56 Christodoulos Psaltis
        $('#net-' + networkID + '.network div.status').text(NET_STATES['Connecting']);
637 91cbaf56 Christodoulos Psaltis
        $('#net-' + networkID + '.network img.spinner').show();
638 91cbaf56 Christodoulos Psaltis
        // make the calls
639 f39b36a6 Christodoulos Psaltis
        add_server_to_network(networkID, serverIDs, serverNames, serverStates);
640 9422d033 Christodoulos Psaltis
    }
641 f533f224 Vangelis Koukis
    return false;
642 f533f224 Vangelis Koukis
});
643 f533f224 Vangelis Koukis

644 f533f224 Vangelis Koukis
// toggle component with class firewall-contents
645 24990e31 Christodoulos Psaltis
$("#networks-pane div.firewall-header").live('click', function() {
646 637104fe Christodoulos Psaltis
    if ($(this).find('.toggler').hasClass('up')) {
647 637104fe Christodoulos Psaltis
        $(this).find('.toggler').removeClass('up');
648 637104fe Christodoulos Psaltis
        $(this).find('.toggler').addClass('down');
649 637104fe Christodoulos Psaltis
        $(this).find('.firewall-label').removeClass('darker');
650 637104fe Christodoulos Psaltis
    } else {
651 637104fe Christodoulos Psaltis
        $(this).find('.toggler').removeClass('down');
652 637104fe Christodoulos Psaltis
        $(this).find('.toggler').addClass('up');
653 637104fe Christodoulos Psaltis
        $(this).find('.firewall-label').addClass('darker');
654 637104fe Christodoulos Psaltis
    }
655 2a437761 Kostas Papadimitriou
    $(this).parent().next(".firewall-content").slideToggle(600, update_net_ui);
656 38bb6c34 Mike Muzurakis
    return false;
657 b1272faa Mike Muzurakis
});
658 b1272faa Mike Muzurakis

659 b1272faa Mike Muzurakis
//hide firewall content on apply click
660 f533f224 Vangelis Koukis
$("#networks-pane .firewall-apply").live('click', function() {
661 d6872a51 Christodoulos Psaltis
    var serverID = $(this).closest('.network-machine').attr("id").split('-').pop();
662 d6872a51 Christodoulos Psaltis
    var networkID = $(this).closest('.network-machine').attr("id").split('-')[1];
663 372f6c81 Mike Muzurakis
    var profile = $(this).parent().find('input:checked').attr('value');
664 e9e7fe51 Kostas Papadimitriou

665 e9e7fe51 Kostas Papadimitriou
    // Do not make api call if profile choice is the 
666 e9e7fe51 Kostas Papadimitriou
    // same as current vm firewall profile
667 e9e7fe51 Kostas Papadimitriou
    try {
668 e9e7fe51 Kostas Papadimitriou
        if (profile == get_machine(serverID).addresses.values[0].firewallProfile) {
669 e9e7fe51 Kostas Papadimitriou
            return;
670 e9e7fe51 Kostas Papadimitriou
        }
671 e9e7fe51 Kostas Papadimitriou
    } catch (err) {
672 e9e7fe51 Kostas Papadimitriou
        console.info(err);
673 e9e7fe51 Kostas Papadimitriou
    }
674 e9e7fe51 Kostas Papadimitriou
    
675 372f6c81 Mike Muzurakis
    if (profile != undefined) {
676 372f6c81 Mike Muzurakis
        set_firewall(networkID, serverID, profile);
677 372f6c81 Mike Muzurakis
        $(this).attr("disabled", true);
678 372f6c81 Mike Muzurakis
        $(this).html('<img src="static/icons/indicators/medium/horizontal-progress.gif"></img>');
679 e9e7fe51 Kostas Papadimitriou
        show_machine_network_indicator(serverID, "pub");
680 372f6c81 Mike Muzurakis
    }
681 f533f224 Vangelis Koukis
    return false;
682 f533f224 Vangelis Koukis
});
683 f533f224 Vangelis Koukis

684 f39b36a6 Christodoulos Psaltis
function display_reboot_dialog(networkID, serverID, serverName, serverState) {
685 cd9d5eaf Christodoulos Psaltis
    // check if the server already exists in the list
686 cd9d5eaf Christodoulos Psaltis
    var existing_reboot = $("div.reboot-list div#server-" + serverID);
687 f39b36a6 Christodoulos Psaltis
    if ( !existing_reboot.length && serverState != 'off') {
688 cd9d5eaf Christodoulos Psaltis
        $('div.reboot-dialog').fadeIn("slow");
689 cd9d5eaf Christodoulos Psaltis
        var reboot_entry = $('div#reboot-machine-template').clone().attr("id", "server-" + serverID);
690 cd9d5eaf Christodoulos Psaltis
        reboot_entry.find('div.name').text(serverName);
691 cd9d5eaf Christodoulos Psaltis
        reboot_entry.appendTo('div.reboot-list').show();
692 cd9d5eaf Christodoulos Psaltis
    }
693 cd9d5eaf Christodoulos Psaltis
    return false;
694 cd9d5eaf Christodoulos Psaltis
}
695 cd9d5eaf Christodoulos Psaltis

696 0155dc19 Christodoulos Psaltis
// intercept single reboot click
697 0155dc19 Christodoulos Psaltis
$("div.reboot-dialog button.reboot-single").live('click', function() {
698 0155dc19 Christodoulos Psaltis
    var serverID = $(this).parent().attr('id').split('-')[1];
699 0155dc19 Christodoulos Psaltis
    reboot([serverID]);
700 0155dc19 Christodoulos Psaltis
    // load progress bar
701 0155dc19 Christodoulos Psaltis
    $(this).text('');
702 0155dc19 Christodoulos Psaltis
    $(this).html('<img src="static/icons/indicators/medium/horizontal-progress.gif"></img>');
703 bf80097f Christodoulos Psaltis
    // disable submit button to prevent multiple calls
704 bf80097f Christodoulos Psaltis
    $(this).attr("disabled", true);
705 0155dc19 Christodoulos Psaltis
    return false;
706 0155dc19 Christodoulos Psaltis
});
707 0155dc19 Christodoulos Psaltis

708 0155dc19 Christodoulos Psaltis
// intercept multiple reboot click
709 0155dc19 Christodoulos Psaltis
$("div.reboot-dialog button.reboot-all").live('click', function() {
710 bf80097f Christodoulos Psaltis
    $(this).parent().find('div.reboot-list button.reboot-single').click();
711 0155dc19 Christodoulos Psaltis
    // load progress bar for all buttons
712 0155dc19 Christodoulos Psaltis
    $(this).parent().find('button').text('');
713 0155dc19 Christodoulos Psaltis
    $(this).parent().find('button').html('<img src="static/icons/indicators/medium/horizontal-progress.gif"></img>');
714 bf80097f Christodoulos Psaltis
    // disable submit button to prevent multiple calls
715 bf80097f Christodoulos Psaltis
    $(this).attr("disabled", true);
716 0155dc19 Christodoulos Psaltis
    return false;
717 0155dc19 Christodoulos Psaltis
});
718 0155dc19 Christodoulos Psaltis

719 b9d9894f Christodoulos Psaltis
// intercept error on reboot click
720 b9d9894f Christodoulos Psaltis
$("div.reboot-dialog button.details").live('click', function() {
721 b9d9894f Christodoulos Psaltis
    $(this).closest('.reboot-machine-entry').remove();
722 b9d9894f Christodoulos Psaltis
    ajax_error( $(this).parent().children('.code').text(),
723 b9d9894f Christodoulos Psaltis
                undefined,
724 b9d9894f Christodoulos Psaltis
                $(this).parent().children('.action').text(),
725 b9d9894f Christodoulos Psaltis
                $(this).parent().children('.message').text());
726 b9d9894f Christodoulos Psaltis
    if ( !$('div.reboot-list').children().length ) {
727 b9d9894f Christodoulos Psaltis
        $('div.reboot-dialog').hide();
728 b9d9894f Christodoulos Psaltis
    }
729 b9d9894f Christodoulos Psaltis
    return false;
730 b9d9894f Christodoulos Psaltis
});
731 b9d9894f Christodoulos Psaltis

732 0155dc19 Christodoulos Psaltis
// after reboot success
733 3a254f7c Christodoulos Psaltis
function display_reboot_success(serverID) {
734 0155dc19 Christodoulos Psaltis
    // remove server from the list
735 0155dc19 Christodoulos Psaltis
    $('div.reboot-list #server-' + serverID).remove();
736 0155dc19 Christodoulos Psaltis
    // if there are no other servers on the list, hide the reboot dialog
737 0155dc19 Christodoulos Psaltis
    if ( !$('div.reboot-list').children().length ) {
738 0155dc19 Christodoulos Psaltis
        $('div.reboot-dialog').hide();
739 bf80097f Christodoulos Psaltis
        // reset all buttons
740 e9789301 Christodoulos Psaltis
        $("div.reboot-dialog button.reboot-all").html('');
741 e9789301 Christodoulos Psaltis
        $("div.reboot-dialog button.reboot-all").text('{% trans 'Reboot All' %}');
742 e9789301 Christodoulos Psaltis
        $("div.reboot-dialog button.reboot-single").html('');
743 e9789301 Christodoulos Psaltis
        $("div.reboot-dialog button.reboot-single").text('{% trans 'Reboot' %}');
744 bf80097f Christodoulos Psaltis
        // enable submit button
745 bf80097f Christodoulos Psaltis
        $("#div.reboot-dialog button.reboot-all").removeAttr('disabled');
746 0155dc19 Christodoulos Psaltis
    }
747 b9d9894f Christodoulos Psaltis
    return false;
748 b9d9894f Christodoulos Psaltis
}
749 b9d9894f Christodoulos Psaltis

750 b9d9894f Christodoulos Psaltis
// after reboot error
751 3a254f7c Christodoulos Psaltis
function display_reboot_failure(status, serverID, responseText) {
752 b9d9894f Christodoulos Psaltis
    $('div.reboot-list #server-' + serverID + ' button.reboot-single').hide();
753 b9d9894f Christodoulos Psaltis
    $('div.reboot-list #server-' + serverID + ' div.code').text(status);
754 3a254f7c Christodoulos Psaltis
    $('div.reboot-list #server-' + serverID + ' div.action').text('Reboot');
755 b9d9894f Christodoulos Psaltis
    $('div.reboot-list #server-' + serverID + ' div.message').text(responseText);
756 b9d9894f Christodoulos Psaltis
    $('div.reboot-list #server-' + serverID + ' button.details').show();
757 b9d9894f Christodoulos Psaltis
    return false;
758 0155dc19 Christodoulos Psaltis
}
759 0155dc19 Christodoulos Psaltis

760 f533f224 Vangelis Koukis
// confirm single action
761 f533f224 Vangelis Koukis
$("#networks-pane div.confirm_single .yes").live('click', function() {
762 f533f224 Vangelis Koukis
    // this works both for server and network actions
763 f533f224 Vangelis Koukis
    var serverID = [];
764 f533f224 Vangelis Koukis
    if ($(this).closest('.network-machine').attr('id')) {
765 f533f224 Vangelis Koukis
        serverID = $(this).closest('.network-machine').attr('id').split('-').pop();
766 f533f224 Vangelis Koukis
    }
767 f533f224 Vangelis Koukis
    var networkID = $(this).closest('.network').attr("id").split('-').pop();
768 f533f224 Vangelis Koukis
    // execute actions
769 f533f224 Vangelis Koukis
    for (i=0;i<pending_actions.length;i++){
770 f533f224 Vangelis Koukis
        // if there is a pending action for this server execute it
771 f533f224 Vangelis Koukis
        if (pending_actions[i][0] == delete_network &&
772 28a81775 Christodoulos Psaltis
            pending_actions[i][1] == networkID) {
773 f533f224 Vangelis Koukis
                action = pending_actions.splice(i,1)[0];
774 91cbaf56 Christodoulos Psaltis
                $(this).closest('div.network').find('div.status').text(NET_STATES['Destroying']);
775 8de4338e Christodoulos Psaltis
                $(this).closest("div.network").find('div.state').addClass('destroying-state');
776 91cbaf56 Christodoulos Psaltis
                $(this).closest('div.network').find('img.spinner').show();
777 f533f224 Vangelis Koukis
                action[0]([action[1]]); // execute action
778 f533f224 Vangelis Koukis
        } else if ( pending_actions[i][0] == remove_server_from_network &&
779 91cbaf56 Christodoulos Psaltis
                    pending_actions[i][1] == networkID ) {
780 91cbaf56 Christodoulos Psaltis
                        $(this).closest('div.network').find('div.status').text(NET_STATES['Disconnecting']);
781 91cbaf56 Christodoulos Psaltis
                        $(this).closest('div.network').find('img.spinner').show();
782 f533f224 Vangelis Koukis
                        action = pending_actions.splice(i,1)[0];
783 f39b36a6 Christodoulos Psaltis
                        action[0]([action[1]], [action[2]], [action[3]], [action[4]]); // execute action
784 91cbaf56 Christodoulos Psaltis
        } // for adding servers to a network look in $("#add-server-add").live('click', function() {...});
785 f533f224 Vangelis Koukis
    }
786 f533f224 Vangelis Koukis
    $(this).parent().hide();
787 78553022 Christodoulos Psaltis
    $(this).parent().parent().find('a.selected').removeClass('selected');
788 78553022 Christodoulos Psaltis
    $(this).parent().parent().children('div.actions').removeClass('display');
789 f533f224 Vangelis Koukis
    update_network_confirmations();
790 f533f224 Vangelis Koukis
    return false;
791 f533f224 Vangelis Koukis
});
792 f533f224 Vangelis Koukis

793 f533f224 Vangelis Koukis
// cancel single action
794 f533f224 Vangelis Koukis
$("#networks-pane div.confirm_single .no").live('click', function(){
795 f533f224 Vangelis Koukis
    // this works both for server and network actions
796 f533f224 Vangelis Koukis
    var serverID = [];
797 f533f224 Vangelis Koukis
    if ($(this).closest('.network-machine').attr('id')) {
798 f533f224 Vangelis Koukis
        serverID = $(this).closest('.network-machine').attr('id').split('-').pop();
799 f533f224 Vangelis Koukis
    }
800 f533f224 Vangelis Koukis
    var networkID = $(this).closest('.network').attr("id").split('-').pop();
801 f533f224 Vangelis Koukis
    // remove the action from the pending list
802 a7b39e08 clopy
    $(this).parent().parent().children('div.machine-actions').children('a').removeClass('selected');
803 a7b39e08 clopy
    $(this).parent().parent().children('div.machine-actions').removeClass('display');
804 93cad149 Markos Gogoulos

805 a67bb993 Christodoulos Psaltis
    for (i=0; i < pending_actions.length; i++) { // if there is a pending action for this network remove it
806 a67bb993 Christodoulos Psaltis
        if (pending_actions[i][0] == delete_network && pending_actions[i][1] == networkID) {
807 f533f224 Vangelis Koukis
                pending_actions.splice(i,1);
808 f533f224 Vangelis Koukis
        } else if ( pending_actions[i][0] == remove_server_from_network &&
809 f533f224 Vangelis Koukis
                    pending_actions[i][1] == networkID &&
810 f533f224 Vangelis Koukis
                    pending_actions[i][2] == serverID) {
811 f533f224 Vangelis Koukis
                        pending_actions.splice(i,1);
812 f533f224 Vangelis Koukis
        }
813 f533f224 Vangelis Koukis
    }
814 f533f224 Vangelis Koukis
    $(this).parent().hide();
815 78553022 Christodoulos Psaltis
    $(this).parent().parent().find('a.selected').removeClass('selected');
816 78553022 Christodoulos Psaltis
    $(this).parent().parent().children('div.actions').removeClass('display');
817 f533f224 Vangelis Koukis
    update_network_confirmations();
818 f533f224 Vangelis Koukis
    return false;
819 f533f224 Vangelis Koukis
});
820 f533f224 Vangelis Koukis

821 3a254f7c Christodoulos Psaltis
// after single action call error
822 3a254f7c Christodoulos Psaltis
function display_net_failure(status, networkID, action, responseText) {
823 3a254f7c Christodoulos Psaltis
    return false;
824 3a254f7c Christodoulos Psaltis
}
825 3a254f7c Christodoulos Psaltis

826 f533f224 Vangelis Koukis
// show, single action, error details
827 f533f224 Vangelis Koukis
$("#networks-pane div.action_error .details").live('click', function(){
828 d7414be6 Markos Gogoulos
    $(this).parent().hide();
829 f533f224 Vangelis Koukis
    ajax_error($(this).parent().children('.code').text(),
830 f533f224 Vangelis Koukis
                 undefined,
831 f533f224 Vangelis Koukis
                 $(this).parent().children('.action').text(),
832 f533f224 Vangelis Koukis
                 $(this).parent().children('.message').text());
833 f533f224 Vangelis Koukis
    return false;
834 f533f224 Vangelis Koukis
});
835 f533f224 Vangelis Koukis

836 f533f224 Vangelis Koukis
// confirm all actions
837 f533f224 Vangelis Koukis
$("#networks-pane div.confirm_multiple .yes").live('click', function(){
838 f533f224 Vangelis Koukis
    while(pending_actions.length > 0){ // if there is a pending action for this network execute it
839 f533f224 Vangelis Koukis
        action = pending_actions.pop(); // extract action
840 f533f224 Vangelis Koukis
        var networkID = action[1];
841 f533f224 Vangelis Koukis
        $('#networks-pane .selected').removeClass('selected');
842 f533f224 Vangelis Koukis
        $('#networks-pane .display').removeClass('display');
843 d7414be6 Markos Gogoulos
        $('#networks-pane .confirm_single').hide();
844 f533f224 Vangelis Koukis
        if (action[0] == delete_network) {
845 91cbaf56 Christodoulos Psaltis
            $('#networks-pane #net-' + networkID + ' .status').text(NET_STATES['Destroying']);
846 e7d39dd7 Christodoulos Psaltis
            $('#networks-pane #net-' + networkID + ' .state').addClass('destroying-state');
847 f533f224 Vangelis Koukis
            $('#networks-pane #net-' + networkID + ' .spinner').show();
848 f533f224 Vangelis Koukis
            action[0]([networkID]); // execute action
849 f533f224 Vangelis Koukis
        } else if (action[0] == remove_server_from_network) {
850 eead5be3 Dimitris Moraitis
            $('div.network#net-'+networkID).find('div.status').text(NET_STATES['Disconnecting']);
851 4ede8cf5 Christodoulos Psaltis
            $('div.network#net-'+networkID).find('img.spinner').show();
852 f39b36a6 Christodoulos Psaltis
            action[0]([action[1]], [action[2]], [action[3]], [action[4]]); // execute action
853 4ede8cf5 Christodoulos Psaltis
        }
854 f533f224 Vangelis Koukis
    }
855 f533f224 Vangelis Koukis
    update_network_confirmations();
856 f533f224 Vangelis Koukis
    return false;
857 f533f224 Vangelis Koukis
});
858 f533f224 Vangelis Koukis

859 f533f224 Vangelis Koukis
// cancel all actions
860 f533f224 Vangelis Koukis
$("#networks-pane div.confirm_multiple .no").live('click', function(){
861 f533f224 Vangelis Koukis
    pending_actions = [];
862 f533f224 Vangelis Koukis
    $('#networks-pane .selected').removeClass('selected');
863 f533f224 Vangelis Koukis
    $('#networks-pane .display').removeClass('display');
864 d7414be6 Markos Gogoulos
    $('#networks-pane .confirm_single').hide();
865 f533f224 Vangelis Koukis
    update_network_confirmations();
866 f533f224 Vangelis Koukis
    return false;
867 f533f224 Vangelis Koukis
});
868 f533f224 Vangelis Koukis

869 f533f224 Vangelis Koukis
// update the networks list
870 f533f224 Vangelis Koukis
function update_networks_view(servers_data, networks_data){
871 f533f224 Vangelis Koukis
    /*
872 f533f224 Vangelis Koukis
    Go through the input data. Update existing entries, add
873 f533f224 Vangelis Koukis
    new ones to the list
874 f533f224 Vangelis Koukis
    */
875 f533f224 Vangelis Koukis

876 f533f224 Vangelis Koukis
    // check for changes in networks
877 f533f224 Vangelis Koukis
    if (networks_data){
878 f533f224 Vangelis Koukis
        /*
879 f533f224 Vangelis Koukis
        Here we are interested in private networks only
880 28a81775 Christodoulos Psaltis
        and for servers disconnected from them
881 f533f224 Vangelis Koukis
        */
882 f533f224 Vangelis Koukis

883 a67bb993 Christodoulos Psaltis
        // if we wait for a new network to be created
884 a67bb993 Christodoulos Psaltis
        if ($('#add-network-create').children().length > 0) {
885 a67bb993 Christodoulos Psaltis
            var response_objects = networks_data.networks.values;
886 a67bb993 Christodoulos Psaltis
            // check all objects in the response
887 a67bb993 Christodoulos Psaltis
            for (i=0; i < response_objects.length; i++) {
888 a67bb993 Christodoulos Psaltis
                // if it contains the network we want to create
889 a67bb993 Christodoulos Psaltis
                var networkName = $('#networks-wizard input').val();
890 a67bb993 Christodoulos Psaltis
                if ( response_objects[i]['name'] == networkName) {
891 a67bb993 Christodoulos Psaltis
                    // close the wizard
892 a67bb993 Christodoulos Psaltis
                    $("a#networkscreate").overlay().close();
893 a67bb993 Christodoulos Psaltis
                    // and the network will be inserted in the DOM
894 28a81775 Christodoulos Psaltis
                    // during this update loop
895 a67bb993 Christodoulos Psaltis
                }
896 a67bb993 Christodoulos Psaltis
            }
897 a67bb993 Christodoulos Psaltis
        }
898 4337c7e5 Dimitris Moraitis

899 f533f224 Vangelis Koukis
        // update private networks
900 f533f224 Vangelis Koukis
        $.each(networks_data.networks.values, function(i,network) {
901 f533f224 Vangelis Koukis
            // search DOM for this network
902 f533f224 Vangelis Koukis
            existing = $('#networks-pane #net-' + network.id);
903 f533f224 Vangelis Koukis

904 28a81775 Christodoulos Psaltis
            // If in the DOM exist multiple networks with the same id,
905 c0045740 Christodoulos Psaltis
            // delete all but one.
906 c0045740 Christodoulos Psaltis
            // Defensive coding - that shouldn't happen normally
907 c0045740 Christodoulos Psaltis
            while (existing.length > 1) {
908 f533f224 Vangelis Koukis
                existing.remove();
909 f533f224 Vangelis Koukis
            }
910 28a81775 Christodoulos Psaltis

911 f533f224 Vangelis Koukis
            // If network already exists in DOM, update it
912 28a81775 Christodoulos Psaltis
            if (existing.length) {
913 f533f224 Vangelis Koukis
                // network was deleted
914 f533f224 Vangelis Koukis
                if (network.status == 'DELETED') {
915 8de4338e Christodoulos Psaltis
                    existing.next().remove(); // to delete its separator
916 f533f224 Vangelis Koukis
                    existing.remove();
917 f533f224 Vangelis Koukis
                }
918 f533f224 Vangelis Koukis
                // network was renamed
919 f533f224 Vangelis Koukis
                if (existing.find('.name-div span.name').text() != network.name) {
920 f533f224 Vangelis Koukis
                    // set the new name
921 f533f224 Vangelis Koukis
                    existing.find('.name-div span.name').text(network.name);
922 f533f224 Vangelis Koukis
                }
923 28a81775 Christodoulos Psaltis
                // a server was disconnected
924 28a81775 Christodoulos Psaltis
                // search DOM for all machines
925 28a81775 Christodoulos Psaltis
                existing_machines = $('div.private-networks div.network-machine');
926 26a8c814 Christodoulos Psaltis
                // check if the machines in the DOM exist in the response
927 28a81775 Christodoulos Psaltis
                for (i=0; i<existing_machines.length; i++) {
928 28a81775 Christodoulos Psaltis
                    // get the existing server id
929 28a81775 Christodoulos Psaltis
                    var serverID = existing_machines[i].id.split('-')[3];
930 28a81775 Christodoulos Psaltis
                    // if a server exists in DOM, but not in the response it has
931 28a81775 Christodoulos Psaltis
                    // been disconnected
932 28a81775 Christodoulos Psaltis
                    if ( network.servers.values.indexOf( parseInt(serverID) ) == -1 ) {
933 26a8c814 Christodoulos Psaltis
                        // remove it from DOM and reset all spinners
934 26a8c814 Christodoulos Psaltis
                        $('#' + existing_machines[i].id).remove();
935 28a81775 Christodoulos Psaltis
                        $('#net-' + network.id + '.network div.status').text(NET_STATES['ACTIVE']);
936 28a81775 Christodoulos Psaltis
                        $('#net-' + network.id + '.network img.spinner').hide();
937 28a81775 Christodoulos Psaltis
                    }
938 28a81775 Christodoulos Psaltis
                }
939 f533f224 Vangelis Koukis
            }
940 f533f224 Vangelis Koukis
            // If network does not exist in DOM, create it, do not take into account public network
941 f533f224 Vangelis Koukis
            else if (network.id != 'public'){
942 f533f224 Vangelis Koukis
                var privNet = $("#networks-pane #private-template").clone().attr("id", "net-" + network.id);
943 f533f224 Vangelis Koukis
                privNet.find(".name-div span.name").text(network.name).fadeIn("slow");
944 f533f224 Vangelis Koukis
                privNet.appendTo("#networks-pane .private-networks");
945 e8f98b18 Christodoulos Psaltis
                $('div.separator:last').clone().appendTo("#networks-pane .private-networks");
946 f533f224 Vangelis Koukis
            }
947 f533f224 Vangelis Koukis
        });
948 f533f224 Vangelis Koukis
    }
949 f533f224 Vangelis Koukis

950 f533f224 Vangelis Koukis
    // check for changes in servers
951 f533f224 Vangelis Koukis
    if (servers_data) {
952 f533f224 Vangelis Koukis
        /*
953 f533f224 Vangelis Koukis
        Here we are interested in any server contained
954 f533f224 Vangelis Koukis
        either in a public network or a private one
955 f533f224 Vangelis Koukis
        */
956 f533f224 Vangelis Koukis
        $.each(servers_data.servers.values, function(i,server) {
957 f533f224 Vangelis Koukis
            /*
958 f533f224 Vangelis Koukis
            First update the public network
959 f533f224 Vangelis Koukis
            */
960 f533f224 Vangelis Koukis

961 f533f224 Vangelis Koukis
            // search public network's DOM for this server
962 f533f224 Vangelis Koukis
            existing_public = $('#networks-pane #net-pub-server-' + server.id);
963 28a81775 Christodoulos Psaltis

964 f533f224 Vangelis Koukis
            // get the server's OS icon
965 f533f224 Vangelis Koukis
            var server_image = os_icon(server.metadata);
966 e4f32f27 Mike Muzurakis
            if (!(server.metadata == undefined)) {
967 e4f32f27 Mike Muzurakis
                var server_image = os_icon(server.metadata);
968 e4f32f27 Mike Muzurakis
            } else {
969 e4f32f27 Mike Muzurakis
                var server_image = "unknown"
970 e4f32f27 Mike Muzurakis
            }
971 f533f224 Vangelis Koukis

972 f533f224 Vangelis Koukis
            // server was deleted
973 f533f224 Vangelis Koukis
            if (server.status == 'DELETED') {
974 f533f224 Vangelis Koukis
                existing_public.remove();
975 f533f224 Vangelis Koukis
            }
976 f533f224 Vangelis Koukis

977 f533f224 Vangelis Koukis
            // If server already exists in public network, update it
978 f533f224 Vangelis Koukis
            if (existing_public.length){
979 f533f224 Vangelis Koukis
                // server was renamed
980 f533f224 Vangelis Koukis
                if (server.name != existing_public.find('span.name').text()) {
981 31279d33 Kostas Papadimitriou
                    existing_public.find('span.name').text(fix_server_name(server.name,25));
982 f533f224 Vangelis Koukis
                }
983 f533f224 Vangelis Koukis
                // server has changed state
984 f533f224 Vangelis Koukis
                if (server.status=='BUILD' || server.status=='ACTIVE' ||server.status=='REBOOT') {
985 f533f224 Vangelis Koukis
                    existing_public.find("img.logo").attr("src","static/icons/machines/medium/" + server_image + '-on.png');
986 f533f224 Vangelis Koukis
                } else {
987 f533f224 Vangelis Koukis
                    existing_public.find("img.logo").attr("src","static/icons/machines/medium/" + server_image + '-off.png');
988 f533f224 Vangelis Koukis
                }
989 f533f224 Vangelis Koukis
                // server has new ips
990 f533f224 Vangelis Koukis
                var old_ip4 = existing_public.find('span.ip4').text();
991 f533f224 Vangelis Koukis
                var old_ip6 = existing_public.find('span.ip6').text();
992 f533f224 Vangelis Koukis
                var new_ips = get_public_ips(server);
993 f533f224 Vangelis Koukis
                var new_ip4 = new_ips['ip4'];
994 f533f224 Vangelis Koukis
                var new_ip6 = new_ips['ip6'];
995 f533f224 Vangelis Koukis
                if (old_ip4 != new_ip4) {
996 f533f224 Vangelis Koukis
                    if (new_ips['ip4'] == undefined) {
997 f533f224 Vangelis Koukis
                        existing_public.find(".ip4-container").hide();
998 f533f224 Vangelis Koukis
                    } else {
999 f533f224 Vangelis Koukis
                        existing_public.find('span.ip4').text(new_ip4);
1000 f533f224 Vangelis Koukis
                    }
1001 f533f224 Vangelis Koukis
                }
1002 f533f224 Vangelis Koukis
                if (old_ip6 != new_ip6) {
1003 f533f224 Vangelis Koukis
                    if (new_ip6 == undefined) {
1004 f533f224 Vangelis Koukis
                        existing_public.find(".ip6-container").hide();
1005 f533f224 Vangelis Koukis
                    } else {
1006 f533f224 Vangelis Koukis
                        existing_public.find('span.ip6').text(new_ip6);
1007 f277a1cd Kostas Papadimitriou
                        fix_v6_addresses();
1008 f533f224 Vangelis Koukis
                    }
1009 f533f224 Vangelis Koukis
                }
1010 0e10469d Mike Muzurakis
                //update firewall setting
1011 d6579faa Kostas Papadimitriou
                try {
1012 d6579faa Kostas Papadimitriou
                    if (server.addresses.values[0].firewallProfile) {
1013 d6579faa Kostas Papadimitriou
                        existing_public.find("input[value=" + server.addresses.values[0].firewallProfile + "]").attr('checked',true);
1014 d6579faa Kostas Papadimitriou
                        existing_public.find(".firewall-label span").removeClass('firewall-off firewall-on');
1015 d6579faa Kostas Papadimitriou
                        if (server.addresses.values[0].firewallProfile == 'DISABLED') {
1016 d6579faa Kostas Papadimitriou
                            existing_public.find('.firewall-label span').addClass('firewall-off');
1017 d6579faa Kostas Papadimitriou
                            existing_public.find('.firewall-label span').html(VARIOUS["OFF"]);
1018 d6579faa Kostas Papadimitriou
                        } else {
1019 d6579faa Kostas Papadimitriou
                            existing_public.find('.firewall-label span').addClass('firewall-on');
1020 d6579faa Kostas Papadimitriou
                            existing_public.find('.firewall-label span').html(VARIOUS["ON"]);
1021 d6579faa Kostas Papadimitriou
                        }
1022 e9e7fe51 Kostas Papadimitriou
                        existing_public.find(".firewall-apply").hide();
1023 d6579faa Kostas Papadimitriou
                     }
1024 d6579faa Kostas Papadimitriou
                } catch (err) {
1025 d6579faa Kostas Papadimitriou
                    try{console.info('Server ' + server.id + ' has no network addresses')}catch(err){};
1026 d6579faa Kostas Papadimitriou
                }
1027 f533f224 Vangelis Koukis
                //TODO: server has changed OS
1028 e9e7fe51 Kostas Papadimitriou

1029 e9e7fe51 Kostas Papadimitriou
                // indicator handle
1030 e9e7fe51 Kostas Papadimitriou
                var vm = get_machine(server.id);
1031 e9e7fe51 Kostas Papadimitriou
                var networkID = "pub";
1032 e9e7fe51 Kostas Papadimitriou
                var serverID = server.id;
1033 e9e7fe51 Kostas Papadimitriou
                var network_el = existing_public;
1034 e9e7fe51 Kostas Papadimitriou

1035 e9e7fe51 Kostas Papadimitriou
                network_el.find(".network-progress-indicator").hide();
1036 e9e7fe51 Kostas Papadimitriou
                if (vm.network_transition == "NETWORK_CHANGE") {
1037 e9e7fe51 Kostas Papadimitriou
                    network_el.find(".network-progress-indicator").show();
1038 e9e7fe51 Kostas Papadimitriou
                }
1039 e9e7fe51 Kostas Papadimitriou

1040 e9e7fe51 Kostas Papadimitriou
                if (vm.network_transition == "CHANGED") {
1041 e9e7fe51 Kostas Papadimitriou
                    network_el.find(".network-progress-indicator").hide();
1042 e9e7fe51 Kostas Papadimitriou
                }
1043 e9e7fe51 Kostas Papadimitriou
            } else {
1044 e9e7fe51 Kostas Papadimitriou
                // If server does not exist in public network, create it
1045 e9e7fe51 Kostas Papadimitriou

1046 391752b9 Kostas Papadimitriou
                // quick fix to skip machines with no addresses
1047 391752b9 Kostas Papadimitriou
                if (server.addresses) {
1048 391752b9 Kostas Papadimitriou
                    var machine = $("#networks-pane #public-machine-template").clone().attr("id", "net-pub-server-" + server.id).fadeIn("slow");
1049 31279d33 Kostas Papadimitriou
                    machine.find('span.name').text(fix_server_name(server.name,25));
1050 a5f6a51c Kostas Papadimitriou

1051 a5f6a51c Kostas Papadimitriou
                    // unique radio group for each machine
1052 a5f6a51c Kostas Papadimitriou
                    machine.find('input[type=radio]').attr({name:'firewall-'+server.id});
1053 a5f6a51c Kostas Papadimitriou

1054 391752b9 Kostas Papadimitriou
                    // find and display ips
1055 391752b9 Kostas Papadimitriou
                    var ips = get_public_ips(server);
1056 391752b9 Kostas Papadimitriou
                    if (ips['ip4'] == undefined) {
1057 391752b9 Kostas Papadimitriou
                        machine.find(".ip4-container").hide();
1058 391752b9 Kostas Papadimitriou
                    } else {
1059 391752b9 Kostas Papadimitriou
                        machine.find("span.ip4").text(ips['ip4']);
1060 391752b9 Kostas Papadimitriou
                    }
1061 391752b9 Kostas Papadimitriou
                    if (ips['ip6'] == undefined) {
1062 391752b9 Kostas Papadimitriou
                        machine.find(".ip6-container").hide();
1063 391752b9 Kostas Papadimitriou
                    } else {
1064 391752b9 Kostas Papadimitriou
                        machine.find("span.ip6").text(ips['ip6']);
1065 391752b9 Kostas Papadimitriou
                    }
1066 391752b9 Kostas Papadimitriou
                    // add the proper icon
1067 391752b9 Kostas Papadimitriou
                    if (server.status=='BUILD' || server.status=='ACTIVE' ||server.status=='REBOOT') {
1068 391752b9 Kostas Papadimitriou
                        machine.find("img.logo").attr("src","static/icons/machines/medium/" + server_image + '-on.png');
1069 391752b9 Kostas Papadimitriou
                    } else {
1070 391752b9 Kostas Papadimitriou
                        machine.find("img.logo").attr("src","static/icons/machines/medium/" + server_image + '-off.png');
1071 391752b9 Kostas Papadimitriou
                    }
1072 391752b9 Kostas Papadimitriou
                    machine.appendTo("#networks-pane .public-networks .machines-list");
1073 f277a1cd Kostas Papadimitriou
                    fix_v6_addresses();
1074 391752b9 Kostas Papadimitriou
                    //update firewall setting
1075 391752b9 Kostas Papadimitriou
                    try {
1076 391752b9 Kostas Papadimitriou
                        if (server.addresses.values[0].firewallProfile) {
1077 391752b9 Kostas Papadimitriou
                            machine.find("input[value=" + server.addresses.values[0].firewallProfile + "]").attr('checked',true);
1078 391752b9 Kostas Papadimitriou
                            machine.find(".firewall-label span").removeClass('firewall-off firewall-on');
1079 391752b9 Kostas Papadimitriou
                            if (server.addresses.values[0].firewallProfile == 'DISABLED') {
1080 391752b9 Kostas Papadimitriou
                                machine.find('.firewall-label span').addClass('firewall-off');
1081 391752b9 Kostas Papadimitriou
                                machine.find('.firewall-label span').html(VARIOUS["OFF"]);
1082 391752b9 Kostas Papadimitriou
                            } else {
1083 391752b9 Kostas Papadimitriou
                                machine.find('.firewall-label span').addClass('firewall-on');
1084 391752b9 Kostas Papadimitriou
                                machine.find('.firewall-label span').html(VARIOUS["ON"]);
1085 391752b9 Kostas Papadimitriou
                            }
1086 e9e7fe51 Kostas Papadimitriou
                        }
1087 e9e7fe51 Kostas Papadimitriou
                        machine.find(".firewall-apply").hide();
1088 391752b9 Kostas Papadimitriou
                    } catch (err) {
1089 391752b9 Kostas Papadimitriou
                        try{console.info('Server ' + server.id + ' has no network addresses')}catch(err){};
1090 391752b9 Kostas Papadimitriou
                    }
1091 e9e7fe51 Kostas Papadimitriou

1092 e9e7fe51 Kostas Papadimitriou
                    // indicator handle
1093 e9e7fe51 Kostas Papadimitriou
                    var vm = get_machine(server.id);
1094 e9e7fe51 Kostas Papadimitriou
                    var networkID = "pub";
1095 e9e7fe51 Kostas Papadimitriou
                    var serverID = server.id;
1096 e9e7fe51 Kostas Papadimitriou
                    var network_el = machine;
1097 e9e7fe51 Kostas Papadimitriou
                    
1098 e9e7fe51 Kostas Papadimitriou
                    network_el.find(".network-progress-indicator").hide();
1099 e9e7fe51 Kostas Papadimitriou
                    if (vm.network_transition == "NETWORK_CHANGE") {
1100 e9e7fe51 Kostas Papadimitriou
                        network_el.find(".network-progress-indicator").show();
1101 e9e7fe51 Kostas Papadimitriou
                    }
1102 e9e7fe51 Kostas Papadimitriou

1103 e9e7fe51 Kostas Papadimitriou
                    if (vm.network_transition == "CHANGED") {
1104 e9e7fe51 Kostas Papadimitriou
                        network_el.find(".network-progress-indicator").hide();
1105 e9e7fe51 Kostas Papadimitriou
                    }
1106 e9e7fe51 Kostas Papadimitriou

1107 e9e7fe51 Kostas Papadimitriou
                    // vm added. apply firewall options change handlers
1108 e9e7fe51 Kostas Papadimitriou
                    $(".firewall-content input[type=radio]", machine).change(function() {
1109 e9e7fe51 Kostas Papadimitriou
                        var vm = server;
1110 e9e7fe51 Kostas Papadimitriou
                        var el = $(this).closest(".firewall-content");
1111 e9e7fe51 Kostas Papadimitriou
                        var current_profile = get_firewall_profile(vm.id);
1112 e9e7fe51 Kostas Papadimitriou
                        var selected_profile = $(this).val();
1113 e9e7fe51 Kostas Papadimitriou
                        
1114 e9e7fe51 Kostas Papadimitriou
                        if (current_profile == selected_profile) {
1115 e9e7fe51 Kostas Papadimitriou
                            el.find(".firewall-apply").hide();
1116 e9e7fe51 Kostas Papadimitriou
                        } else {
1117 e9e7fe51 Kostas Papadimitriou
                            el.find(".firewall-apply").show();
1118 e9e7fe51 Kostas Papadimitriou
                        }
1119 e9e7fe51 Kostas Papadimitriou
                    })
1120 d6579faa Kostas Papadimitriou
                }
1121 f533f224 Vangelis Koukis
            }
1122 e4f32f27 Mike Muzurakis

1123 f533f224 Vangelis Koukis
            /*
1124 28a81775 Christodoulos Psaltis
            Now update all private networks, this does NOT check for
1125 26a8c814 Christodoulos Psaltis
            disconnected servers (see above in updating private networks).
1126 f533f224 Vangelis Koukis
            Since one server may belong to more than one private networks,
1127 f533f224 Vangelis Koukis
            we follow a different approach.
1128 f533f224 Vangelis Koukis
            We check each server and add, update or leave it as it is accordingly
1129 f533f224 Vangelis Koukis
            */
1130 f533f224 Vangelis Koukis
            try {
1131 f533f224 Vangelis Koukis
                $.each(server.addresses.values, function(i,server_net) {
1132 f533f224 Vangelis Koukis
                    // find in which private networks it belongs
1133 f533f224 Vangelis Koukis
                    if (server_net.id != "public") {
1134 f533f224 Vangelis Koukis
                        var existing_private = $("#networks-pane .private-networks #net-" + server_net.id + "-server-" + server.id);
1135 f533f224 Vangelis Koukis
                        // add new server
1136 f533f224 Vangelis Koukis
                        if (!existing_private.length) {
1137 f533f224 Vangelis Koukis
                            var machine = $("#networks-pane #private-machine-template").clone().attr("id", "net-" + server_net.id + "-server-" + server.id).fadeIn("slow");
1138 31279d33 Kostas Papadimitriou
                            machine.find('span.name').text(fix_server_name(server.name, 25));
1139 e58fdac8 Kostas Papadimitriou

1140 e58fdac8 Kostas Papadimitriou
                            // the id of the server the callback function will show connect message for
1141 e58fdac8 Kostas Papadimitriou
                            var CONNECT_SERVER_ID = server.id;
1142 e58fdac8 Kostas Papadimitriou
                            machine.find('.machine-connect').click(function(){
1143 e58fdac8 Kostas Papadimitriou
                                // keep id in local scope
1144 e58fdac8 Kostas Papadimitriou
                                var id = CONNECT_SERVER_ID;
1145 e58fdac8 Kostas Papadimitriou
                                machine_connect([machine_connect, id])
1146 e58fdac8 Kostas Papadimitriou
                            });
1147 e58fdac8 Kostas Papadimitriou

1148 f533f224 Vangelis Koukis
                            if (server.status=='BUILD' || server.status=='ACTIVE' ||server.status=='REBOOT') {
1149 f533f224 Vangelis Koukis
                                machine.find("img.logo").attr("src","static/icons/machines/medium/" + server_image + '-on.png');
1150 f533f224 Vangelis Koukis
                            } else {
1151 f533f224 Vangelis Koukis
                                machine.find("img.logo").attr("src","static/icons/machines/medium/" + server_image + '-off.png');
1152 f533f224 Vangelis Koukis
                            }
1153 f533f224 Vangelis Koukis
                            machine.appendTo("#networks-pane .private-networks #net-" + server_net.id + " .machines-list");
1154 28a81775 Christodoulos Psaltis
                        // hide spinners
1155 28a81775 Christodoulos Psaltis
                        $('#net-' + server_net.id + '.network div.status').text(NET_STATES['ACTIVE']);
1156 28a81775 Christodoulos Psaltis
                        $('#net-' + server_net.id + '.network img.spinner').hide();
1157 f533f224 Vangelis Koukis
                        }
1158 f533f224 Vangelis Koukis
                        // server was deleted
1159 f533f224 Vangelis Koukis
                        if (server.status == 'DELETED') {
1160 f533f224 Vangelis Koukis
                            existing_private.remove();
1161 f533f224 Vangelis Koukis
                        }
1162 f533f224 Vangelis Koukis
                        // server was renamed
1163 f533f224 Vangelis Koukis
                        if (server.name != existing_private.find('span.name').text()) {
1164 31279d33 Kostas Papadimitriou
                            existing_private.find('span.name').text(fix_server_name(server.name,25));
1165 f533f224 Vangelis Koukis
                        }
1166 f533f224 Vangelis Koukis
                        // server has changed state
1167 f533f224 Vangelis Koukis
                        if (server.status=='BUILD' || server.status=='ACTIVE' ||server.status=='REBOOT') {
1168 f533f224 Vangelis Koukis
                            existing_private.find("img.logo").attr("src","static/icons/machines/medium/" + server_image + '-on.png');
1169 f533f224 Vangelis Koukis
                        } else {
1170 f533f224 Vangelis Koukis
                            existing_private.find("img.logo").attr("src","static/icons/machines/medium/" + server_image + '-off.png');
1171 f533f224 Vangelis Koukis
                        }
1172 f533f224 Vangelis Koukis
                        //TODO: server has changed OS
1173 f533f224 Vangelis Koukis
                    }
1174 f533f224 Vangelis Koukis
                });
1175 f533f224 Vangelis Koukis
            } catch (err) {
1176 f533f224 Vangelis Koukis
                try{console.info('Server ' + server.id + ' has no network addresses')}catch(err){};
1177 f533f224 Vangelis Koukis
            }
1178 f533f224 Vangelis Koukis
        });
1179 f533f224 Vangelis Koukis
    }
1180 f533f224 Vangelis Koukis
    $("#networks-pane #networks-container > .large-spinner").hide();
1181 2a437761 Kostas Papadimitriou
    update_net_ui();
1182 2a437761 Kostas Papadimitriou
}
1183 f533f224 Vangelis Koukis

1184 2a437761 Kostas Papadimitriou
function update_net_ui() {
1185 f533f224 Vangelis Koukis
    // show all separators and hide the last one
1186 e8f98b18 Christodoulos Psaltis
    $("div.private-networks div.separator").show();
1187 e8f98b18 Christodoulos Psaltis
    $("div.private-networks div.separator:last").hide();
1188 f533f224 Vangelis Koukis
    // update the counters of servers in each network
1189 f533f224 Vangelis Koukis
    var nets = $('#networks-pane .network');
1190 f533f224 Vangelis Koukis
    $.each(nets, function(i,net) {
1191 f533f224 Vangelis Koukis
        $(net).find('span.machines-count').text($(net).find('.network-machine').length);
1192 f533f224 Vangelis Koukis
    });
1193 f533f224 Vangelis Koukis

1194 f533f224 Vangelis Koukis
    // the private div shows only when private networks are available
1195 f533f224 Vangelis Koukis
    if ($("div.private-networks div.network").length > 0) {
1196 f533f224 Vangelis Koukis
        $("div.private-networks").fadeIn("slow");
1197 f533f224 Vangelis Koukis
    } else {
1198 f533f224 Vangelis Koukis
        $("div.private-networks").fadeOut("slow");
1199 f533f224 Vangelis Koukis
    }
1200 77d4b76f Christodoulos Psaltis

1201 829c32c6 Dimitris Moraitis
    // tag the first and last seperators for better styling
1202 829c32c6 Dimitris Moraitis
    $("#pub .network-machine").removeClass('first');
1203 4ede8cf5 Christodoulos Psaltis
    $("#pub .network-machine").first().addClass('first');
1204 eb40af65 Dimitris Moraitis
    $("#pub .network-machine").removeClass('last');
1205 eb40af65 Dimitris Moraitis
    $("#pub .network-machine").last().addClass('last');
1206 016f234a Mike Muzurakis

1207 0d9ac039 clopy
    if ($("div.public-networks div.network-machine").length == 1) {
1208 0d9ac039 clopy
        $("div.public-networks div.network-machine div.network-cable").css('height','60px');
1209 0d9ac039 clopy
    }
1210 0d9ac039 clopy

1211 016f234a Mike Muzurakis
    //remove top margin from the first machine of each private network
1212 016f234a Mike Muzurakis
    $(".private-networks").find(".network-contents .network-machine:first-child").css("margin-top","0");
1213 e9e7fe51 Kostas Papadimitriou

1214 f533f224 Vangelis Koukis
}
1215 f533f224 Vangelis Koukis

1216 d7414be6 Markos Gogoulos
// indicate that the requested action was not completed
1217 d7414be6 Markos Gogoulos
function display_failure(status, networkID, action, responseText) {
1218 d7414be6 Markos Gogoulos
    $('#networks-container #net-'+networkID+ ' .spinner').hide();
1219 d7414be6 Markos Gogoulos
    $('#networks-container #net-'+networkID+ ' .action_error .action').text(action);
1220 d7414be6 Markos Gogoulos
    $('#networks-container #net-'+networkID+ ' .action_error .code').text(status);
1221 d7414be6 Markos Gogoulos
    $('#networks-container #net-'+networkID+ ' .action_error .message').text(responseText);
1222 d7414be6 Markos Gogoulos
    $('#networks-container #net-'+networkID+ ' .action_error').show();
1223 d7414be6 Markos Gogoulos
}
1224 d7414be6 Markos Gogoulos

1225 f533f224 Vangelis Koukis
// reposition multiple confirmation box on window resize
1226 f533f224 Vangelis Koukis
$(window).resize(function(){
1227 2aab1d5e Christodoulos Psaltis
    if (this.innerHeight - 220 < $('#networks-pane #networks-container').height()) {
1228 f533f224 Vangelis Koukis
        $('#networks-pane .confirm_multiple').addClass('fixed');
1229 2aab1d5e Christodoulos Psaltis
        $('div.reboot-dialog').addClass('fixed');
1230 2aab1d5e Christodoulos Psaltis
    } else {
1231 f533f224 Vangelis Koukis
        $('#networks-pane .confirm_multiple').removeClass('fixed');
1232 2aab1d5e Christodoulos Psaltis
        $('div.reboot-dialog').removeClass('fixed');
1233 2aab1d5e Christodoulos Psaltis
    }
1234 b1272faa Mike Muzurakis
});
1235 f533f224 Vangelis Koukis

1236 f533f224 Vangelis Koukis
// basic functions executed on page load
1237 f533f224 Vangelis Koukis
// hide the all of the networks contents
1238 f533f224 Vangelis Koukis
$("#networks-pane .network-contents").hide();
1239 f533f224 Vangelis Koukis
// hide the all of the firewall contents
1240 f533f224 Vangelis Koukis
$("#networks-pane .firewall-content").hide();
1241 f533f224 Vangelis Koukis
changes_since = 0; // to reload full list of servers
1242 f533f224 Vangelis Koukis
networks_changes_since= 0; // to reload full list of networks
1243 fbab7fae Christodoulos Psaltis
// there is always one public network to render
1244 f533f224 Vangelis Koukis
var pubNet = $("#networks-pane #public-template").clone().attr("id", "pub").fadeIn("slow");
1245 f533f224 Vangelis Koukis
pubNet.appendTo("#networks-pane .public-networks");
1246 f533f224 Vangelis Koukis
update_networks(UPDATE_INTERVAL);
1247 f533f224 Vangelis Koukis

1248 d2f03cb3 Mike Muzurakis
//fix ie z-index bug by moving the overlays to the bottom
1249 d2f03cb3 Mike Muzurakis
$(document).ready(function() {
1250 d2f03cb3 Mike Muzurakis
    if ($.browser.msie) {
1251 d2f03cb3 Mike Muzurakis
        $("body").append($("#networks-wizard"));
1252 d2f03cb3 Mike Muzurakis
        $("body").append($("#add-machines-wizard"));
1253 d2f03cb3 Mike Muzurakis
    }
1254 d2f03cb3 Mike Muzurakis
});
1255 d2f03cb3 Mike Muzurakis

1256 b365d9ff Christodoulos Psaltis
//IE specific fixes
1257 b365d9ff Christodoulos Psaltis
if ($.browser.msie) {
1258 b365d9ff Christodoulos Psaltis
    //IE fix for network div hover
1259 b365d9ff Christodoulos Psaltis
    $("div.network").live("mouseenter", function () {
1260 b365d9ff Christodoulos Psaltis
        $(this).css("background-color","#A1C8DB");
1261 b365d9ff Christodoulos Psaltis
        $(this).find(".actions a").css("visibility","visible");
1262 b365d9ff Christodoulos Psaltis
    });
1263 b365d9ff Christodoulos Psaltis
    $("div.network").live("mouseleave", function () {
1264 b365d9ff Christodoulos Psaltis
        $(this).css("background-color","transparent");
1265 b365d9ff Christodoulos Psaltis
        $(this).find(".actions a").css("visibility","hidden");
1266 b365d9ff Christodoulos Psaltis
    });
1267 3d547ef0 Mike Muzurakis
    $("div.machine-actions").live("mouseenter", function () {
1268 3d547ef0 Mike Muzurakis
        $(this).find("a").css("visibility","visible");
1269 3d547ef0 Mike Muzurakis
    });
1270 3d547ef0 Mike Muzurakis
    $("div.machine-actions").live("mouseleave", function () {
1271 3d547ef0 Mike Muzurakis
        $(this).find("a").css("visibility","hidden");
1272 3d547ef0 Mike Muzurakis
    });
1273 c93a67cd Christodoulos Psaltis
    //IE fix for network machine hover
1274 c93a67cd Christodoulos Psaltis
    $("div.network-machine").live("mouseenter", function () {
1275 c93a67cd Christodoulos Psaltis
        $(this).css("background-color","#84B7D0");
1276 c93a67cd Christodoulos Psaltis
        $(this).find("div.machine-actions a").css("visibility","visible");
1277 c93a67cd Christodoulos Psaltis
    });
1278 c93a67cd Christodoulos Psaltis
    $("div.network-machine").live("mouseleave", function () {
1279 c93a67cd Christodoulos Psaltis
        $(this).css("background-color","transparent");
1280 c93a67cd Christodoulos Psaltis
        $(this).find("div.machine-actions a").css("visibility","hidden");
1281 c93a67cd Christodoulos Psaltis
    });
1282 d64ff282 Mike Muzurakis
    //IE fix for network machine hover
1283 d64ff282 Mike Muzurakis
    $("button.reboot-single").live("mouseenter", function () {
1284 d64ff282 Mike Muzurakis
        $(this).css("background-color","#FF7F2A");
1285 d64ff282 Mike Muzurakis
    });
1286 d64ff282 Mike Muzurakis
    $("button.reboot-single").live("mouseleave", function () {
1287 d64ff282 Mike Muzurakis
        $(this).css("background-color","transparent");
1288 d64ff282 Mike Muzurakis
    });
1289 b365d9ff Christodoulos Psaltis
}
1290 6f547d12 Mike Muzurakis
</script>