Statistics
| Branch: | Tag: | Revision:

root / snf-cyclades-app / synnefo / ui / new_ui / ui / javascripts / common.js @ 112e5dd2

History | View | Annotate | Download (21 kB)

1 5acf3fcf Olga Brani
/*
2 5acf3fcf Olga Brani
* Various functions that will be used throughout all templates
3 5acf3fcf Olga Brani
* are inside ui Object
4 5acf3fcf Olga Brani
*/
5 b3c1328b Olga Brani
6 5acf3fcf Olga Brani
ui = {};
7 9b6be833 Olga Brani
/*
8 9b6be833 Olga Brani
* ui.wizards get populated in vm-wizard.js
9 9b6be833 Olga Brani
* here is the declaration only
10 9b6be833 Olga Brani
*/
11 6bd1416f Athina Bekakou
ui.wizard = {};
12 98714f8a Olga Brani
13 5acf3fcf Olga Brani
/* when closeEl el is clicked, its parent with class divToCloseClass slidesUp */
14 98714f8a Olga Brani
ui.closeDiv = function(closeEl, divToCloseClass) {
15 d3bfabe8 Olga Brani
    closeEl.click(function(e){
16 d3bfabe8 Olga Brani
        e.preventDefault();
17 d3bfabe8 Olga Brani
        $(this).parents(divToCloseClass).slideUp('slow');
18 d3bfabe8 Olga Brani
    });
19 b3c1328b Olga Brani
}
20 b3c1328b Olga Brani
21 98714f8a Olga Brani
22 9569cdc8 Olga Brani
ui.trimChars = function( str, chars) {
23 9569cdc8 Olga Brani
    if ( str.length>chars){
24 5acf3fcf Olga Brani
        return $.trim(str).substring(0, chars)+ "...";
25 9569cdc8 Olga Brani
    } else {
26 9569cdc8 Olga Brani
        return str;
27 9569cdc8 Olga Brani
    }
28 9569cdc8 Olga Brani
}
29 9569cdc8 Olga Brani
30 9a0058e2 Olga Brani
31 9a0058e2 Olga Brani
/* Sets element min-height
32 9a0058e2 Olga Brani
* Used for .details, .lt-bar divs
33 34d12b31 Olga Brani
*/
34 34d12b31 Olga Brani
ui.setElminHeight = function(el){
35 d3bfabe8 Olga Brani
    var WindowHeight = $(window).height();
36 34d12b31 Olga Brani
    var header = $('.header').outerHeight();
37 9a0058e2 Olga Brani
    var actions = $('.actions-bar').height();
38 34d12b31 Olga Brani
    var h1= WindowHeight - (header+actions);
39 34d12b31 Olga Brani
    el.css('min-height', h1);
40 98714f8a Olga Brani
}
41 98714f8a Olga Brani
42 9a0058e2 Olga Brani
/* Sets element height
43 9a0058e2 Olga Brani
* Used for .details, .lt-bar divs
44 9a0058e2 Olga Brani
*/
45 9a0058e2 Olga Brani
ui.setElHeight = function(el){
46 9a0058e2 Olga Brani
    var WindowHeight = $(window).height();
47 9a0058e2 Olga Brani
    var header = $('.header').outerHeight();
48 9a0058e2 Olga Brani
    var actions = $('.actions-bar').height();
49 9a0058e2 Olga Brani
    var h1= WindowHeight - (header+actions);
50 9a0058e2 Olga Brani
    el.css('height', h1);
51 9a0058e2 Olga Brani
}
52 5acf3fcf Olga Brani
53 5acf3fcf Olga Brani
/* 
54 5acf3fcf Olga Brani
* Logic for Entities actions. Present in items_list pages
55 5acf3fcf Olga Brani
* Available categories are :
56 5acf3fcf Olga Brani
*  - both/single ( for multiple entities/single entities)
57 4e7c16f1 Olga Brani
*  - running/off ( for running/off entities)
58 5acf3fcf Olga Brani
*  - permanent ( for entities always active )
59 5acf3fcf Olga Brani
*/
60 5acf3fcf Olga Brani
ui.entitiesActionsEnabled = function(){
61 8db75456 Athina Bekakou
    var all = $('.snf-checkbox-checked').length;
62 4e7c16f1 Olga Brani
    var running = $('.snf-checkbox-checked').parents('li.running').length;
63 4e7c16f1 Olga Brani
    var off = $('.snf-checkbox-checked').parents('li.off').length;
64 4e7c16f1 Olga Brani
    console.log(off, 'actions here');
65 4e7c16f1 Olga Brani
    $('.lt-bar .lt-actions li:not(.permanent) a').removeClass('active');
66 4e7c16f1 Olga Brani
    if ( (running*off) > 0 ){
67 4e7c16f1 Olga Brani
         $('.lt-actions li.both a').addClass('active');
68 4e7c16f1 Olga Brani
         $('.lt-actions li.single a').removeClass('active');
69 5e62e9c1 Olga Brani
    } else {
70 5e62e9c1 Olga Brani
        if (running > 0) {
71 4e7c16f1 Olga Brani
            $('.lt-actions li.both a').addClass('active');
72 4e7c16f1 Olga Brani
            $('.lt-actions li.running a').addClass('active');
73 4e7c16f1 Olga Brani
        } else if (off>0) {
74 4e7c16f1 Olga Brani
            $('.lt-actions li.both a').addClass('active');
75 4e7c16f1 Olga Brani
            $('.lt-actions li.off a').addClass('active');
76 5e62e9c1 Olga Brani
        }
77 5e62e9c1 Olga Brani
        if ( all > 1 ) {
78 4e7c16f1 Olga Brani
            $('.lt-actions li.single a').removeClass('active');
79 5e62e9c1 Olga Brani
        }
80 5e62e9c1 Olga Brani
    }
81 5e62e9c1 Olga Brani
}
82 a18bd0ed Olga Brani
83 ca0d2b34 Olga Brani
ui.inactiveActions = function() {
84 ca0d2b34 Olga Brani
85 ca0d2b34 Olga Brani
    // Availble actions: connect, reboot, shut, destroy, start
86 ca0d2b34 Olga Brani
    // These actions will be DISABLED
87 ca0d2b34 Olga Brani
    var statesActions ={
88 ca0d2b34 Olga Brani
        'off'      : ['connect', 'reboot', 'shut'],
89 ca0d2b34 Olga Brani
        'error'    : ['connect', 'reboot', 'shut', 'start'],
90 ca0d2b34 Olga Brani
        'building' : ['reboot', 'start'],
91 ca0d2b34 Olga Brani
        'running'  : ['start'],
92 ca0d2b34 Olga Brani
        'rebooting': ['start'],
93 ca0d2b34 Olga Brani
        'starting' : ['start'],
94 ca0d2b34 Olga Brani
        'shutting' : ['connect', 'reboot', 'shut']
95 ca0d2b34 Olga Brani
    } ;
96 ca0d2b34 Olga Brani
97 ca0d2b34 Olga Brani
    _.each (statesActions, function(val, key) {
98 ca0d2b34 Olga Brani
        _.each(val, function(value) {
99 ca0d2b34 Olga Brani
            var el = '.' + key + ' .' + value;
100 ca0d2b34 Olga Brani
            $(el).addClass('inactive');
101 ca0d2b34 Olga Brani
        });
102 ca0d2b34 Olga Brani
    })
103 ca0d2b34 Olga Brani
}
104 ca0d2b34 Olga Brani
105 f0498685 Athina Bekakou
ui.detailsCustom = function(id) {
106 34d12b31 Olga Brani
    // position last connected item
107 f0498685 Athina Bekakou
    var el = $('#'+id+'.connected .item').last();
108 3549163d Olga Brani
    // -2 is the border width;
109 9a0058e2 Olga Brani
    var moveY = el.find('.connections >li').last().outerHeight(true) - 2;
110 3549163d Olga Brani
    el.css('top',moveY);
111 9a0058e2 Olga Brani
    console.log(moveY);
112 3549163d Olga Brani
    el.css('marginTop', -moveY);
113 3549163d Olga Brani
}
114 3549163d Olga Brani
115 3549163d Olga Brani
ui.firewallSetup = function(){
116 3549163d Olga Brani
    $('.firewall').each(function(){
117 3549163d Olga Brani
        $(this).removeClass('fully unprotected basic');
118 3549163d Olga Brani
        $(this).addClass($(this).data('firewall'));
119 3549163d Olga Brani
        if($(this).hasClass('unprotected')){
120 3549163d Olga Brani
            $(this).find('p').first().find('em').html('off');
121 3549163d Olga Brani
        } else {
122 3549163d Olga Brani
            $(this).find('p').first().find('em').html('on');
123 3549163d Olga Brani
        }
124 3549163d Olga Brani
    });
125 3549163d Olga Brani
    $('.firewall .more span').each(function(e){
126 3549163d Olga Brani
        var that = this;
127 3549163d Olga Brani
        if ($(this).hasClass('snf-radio-checked')){
128 3549163d Olga Brani
            $(that).siblings('em').html('on');
129 3549163d Olga Brani
        } else {
130 3549163d Olga Brani
            $(that).siblings('em').html('off');
131 3549163d Olga Brani
        }
132 3549163d Olga Brani
    })
133 3549163d Olga Brani
}
134 3549163d Olga Brani
135 ca0d2b34 Olga Brani
136 5acf3fcf Olga Brani
/*
137 5acf3fcf Olga Brani
* In order for the editable value functionality to work, the html markup
138 5acf3fcf Olga Brani
* should be:
139 5acf3fcf Olga Brani
    <div class="editable">
140 5acf3fcf Olga Brani
        <span class="input-txt">editable value</span>
141 5acf3fcf Olga Brani
        <input type="text">
142 5acf3fcf Olga Brani
        <a href="#" class="edit">edit</a>
143 5acf3fcf Olga Brani
        <a href="#" class="save">save</a>
144 5acf3fcf Olga Brani
        <a href="#" class="cancel">cancel</a>
145 5acf3fcf Olga Brani
    </div>
146 5acf3fcf Olga Brani
*/
147 788833c7 Olga Brani
ui.editable = function(){
148 788833c7 Olga Brani
149 788833c7 Olga Brani
/*
150 5acf3fcf Olga Brani
* resetForm hides save and cancel buttons,
151 5acf3fcf Olga Brani
* text input and shows input-txt. resetForm does not alter
152 5acf3fcf Olga Brani
* input-txt content.
153 788833c7 Olga Brani
*/
154 788833c7 Olga Brani
155 788833c7 Olga Brani
    function resetForm(e, elem) {
156 788833c7 Olga Brani
        var el = elem.parents('.editable');
157 788833c7 Olga Brani
        el.find('input[type="text"]').hide();
158 788833c7 Olga Brani
        el.find('a.cancel, a.save').hide();
159 5acf3fcf Olga Brani
        el.find('a.edit, .input-txt').show();
160 9bae51cb Athina Bekakou
        el.find('.delete').show();
161 788833c7 Olga Brani
    }
162 788833c7 Olga Brani
163 788833c7 Olga Brani
/* 
164 5acf3fcf Olga Brani
* showForm hides input-txt, shows save and cancel buttons and
165 5acf3fcf Olga Brani
* sets input value to input-txt content.
166 788833c7 Olga Brani
*/
167 788833c7 Olga Brani
    function showForm(e,elem) {
168 788833c7 Olga Brani
        e.stopPropagation(); 
169 788833c7 Olga Brani
        e.preventDefault();
170 788833c7 Olga Brani
        var el = elem.parents('.editable'); 
171 788833c7 Olga Brani
        el.find('input[type="text"]').val(el.find('.input-txt').html());
172 788833c7 Olga Brani
        el.find('input[type="text"]').show();
173 788833c7 Olga Brani
        el.find('a.cancel, a.save').show();
174 788833c7 Olga Brani
        elem.hide();
175 788833c7 Olga Brani
        el.find('.input-txt').hide();
176 9bae51cb Athina Bekakou
        if(el.find('.delete').length != 0) {
177 9bae51cb Athina Bekakou
            el.find('.delete').hide();
178 9bae51cb Athina Bekakou
        }
179 788833c7 Olga Brani
180 788833c7 Olga Brani
    }
181 788833c7 Olga Brani
182 788833c7 Olga Brani
/*
183 788833c7 Olga Brani
setValue sets input-txt value to the input value.
184 788833c7 Olga Brani
Makes sure that the input value is not empty.
185 788833c7 Olga Brani
TODO:
186 788833c7 Olga Brani
Ajax request to submit form
187 788833c7 Olga Brani
*/
188 788833c7 Olga Brani
189 788833c7 Olga Brani
    function setValue(elem) {
190 788833c7 Olga Brani
        var el = elem.parents('.editable');
191 788833c7 Olga Brani
        if( el.find('input[type="text"]').val() ) {
192 788833c7 Olga Brani
            el.find('.input-txt').html(el.find('input[type="text"]').val());
193 788833c7 Olga Brani
        }
194 788833c7 Olga Brani
    }
195 788833c7 Olga Brani
196 788833c7 Olga Brani
197 788833c7 Olga Brani
    $('.editable .edit').click(function(e){
198 788833c7 Olga Brani
        showForm(e, $(this));
199 788833c7 Olga Brani
    })
200 788833c7 Olga Brani
201 788833c7 Olga Brani
    $('.editable .cancel').click(function(e){
202 788833c7 Olga Brani
        e.stopPropagation();
203 788833c7 Olga Brani
        e.preventDefault();
204 788833c7 Olga Brani
        resetForm(e, $(this));
205 788833c7 Olga Brani
    })
206 788833c7 Olga Brani
207 788833c7 Olga Brani
    $('.editable .save').click(function(e){
208 788833c7 Olga Brani
        e.stopPropagation();
209 788833c7 Olga Brani
        e.preventDefault();
210 788833c7 Olga Brani
        setValue($(this));
211 788833c7 Olga Brani
        resetForm(e, $(this));
212 788833c7 Olga Brani
213 788833c7 Olga Brani
    })
214 788833c7 Olga Brani
215 788833c7 Olga Brani
216 788833c7 Olga Brani
    $('.editable input[type="text"]').click(function(e){
217 788833c7 Olga Brani
        e.stopPropagation();
218 788833c7 Olga Brani
    })
219 788833c7 Olga Brani
220 788833c7 Olga Brani
    $('.editable input[type="text"]').keyup(function(e){
221 788833c7 Olga Brani
        if(e.keyCode == 13) { 
222 788833c7 Olga Brani
            setValue($(this));
223 788833c7 Olga Brani
            resetForm(e, $(this));
224 788833c7 Olga Brani
            
225 788833c7 Olga Brani
        }
226 788833c7 Olga Brani
    
227 788833c7 Olga Brani
    })
228 788833c7 Olga Brani
229 788833c7 Olga Brani
    $('html').click(function(e) {
230 788833c7 Olga Brani
        resetForm(e, $('.editable a.cancel'));
231 aafd8478 Athina Bekakou
        // not sure if we want to hide the error window after every click in the ui
232 aafd8478 Athina Bekakou
        if($('.communication-error').css('bottom') == '0px') {
233 aafd8478 Athina Bekakou
            $('.communication-error').animate({bottom: "-151px"});
234 aafd8478 Athina Bekakou
        }
235 788833c7 Olga Brani
    });
236 788833c7 Olga Brani
237 9569cdc8 Olga Brani
}
238 9569cdc8 Olga Brani
239 5acf3fcf Olga Brani
/* TODO: better overlay functionality */
240 9569cdc8 Olga Brani
ui.overlay = function() {
241 9569cdc8 Olga Brani
    $('[data-overlay-id]').click(function(e){
242 9569cdc8 Olga Brani
        e.preventDefault();
243 9569cdc8 Olga Brani
        var el = $(this);
244 6e73603a Athina Bekakou
        var id = '#'+el.data('overlay-id');
245 03bcb595 Olga Brani
246 6e73603a Athina Bekakou
        $('.overlay-area-custom').fadeIn(100);
247 bb8cc1dc Olga Brani
        $('body').addClass('with-overlay');
248 6fcab23b Olga Brani
        $(id).fadeIn('slow');
249 bdf1d2fd Olga Brani
        if (id=='#network-wizard') {
250 bdf1d2fd Olga Brani
            $(id).find('input').first().focus();
251 bdf1d2fd Olga Brani
            return false;
252 bdf1d2fd Olga Brani
        }
253 9b6be833 Olga Brani
        $(id).find('a').first().focus();
254 9569cdc8 Olga Brani
    });
255 788833c7 Olga Brani
}
256 788833c7 Olga Brani
257 5c4713f8 Olga Brani
function goToByScroll(id){
258 5c4713f8 Olga Brani
      // Remove "link" from the ID
259 5c4713f8 Olga Brani
    id = id.replace("link", "");
260 5c4713f8 Olga Brani
      // Scroll
261 5c4713f8 Olga Brani
    $('html,body').animate({
262 5c4713f8 Olga Brani
        scrollTop: $("#"+id).offset().top},
263 5c4713f8 Olga Brani
        'slow');
264 5c4713f8 Olga Brani
}
265 f5321878 Olga Brani
266 f5321878 Olga Brani
267 9b6be833 Olga Brani
/*
268 9b6be833 Olga Brani
* functions concerning checkboxes and radiobuttons links
269 9b6be833 Olga Brani
*/
270 656c135b Olga Brani
271 9b6be833 Olga Brani
ui.changeCheckboxState =function(checkbox_link) {
272 77d5883f Olga Brani
    $(checkbox_link).find('.snf-checkbox-unchecked, .snf-checkbox-checked').toggleClass('snf-checkbox-unchecked snf-checkbox-checked');
273 77d5883f Olga Brani
    ui.entitiesActionsEnabled();
274 9b6be833 Olga Brani
}
275 9b6be833 Olga Brani
276 112e5dd2 Athina Bekakou
// to use the above functions use first the ui.checkOneRadioButton and then ui.changeRadiobuttonState
277 112e5dd2 Athina Bekakou
ui.checkOneRadioButton = function(radiobtn_link) {
278 112e5dd2 Athina Bekakou
    $(radiobtn_link).closest('ul').find('span.snf-radio-checked').toggleClass('snf-radio-unchecked snf-radio-checked');
279 112e5dd2 Athina Bekakou
}
280 9b6be833 Olga Brani
ui.changeRadiobuttonState = function(radiobtn_link) {
281 9b6be833 Olga Brani
    $(radiobtn_link).find('span.snf-radio-unchecked, span.snf-radio-checked').toggleClass('snf-radio-unchecked snf-radio-checked');
282 9b6be833 Olga Brani
}
283 9b6be833 Olga Brani
284 9b6be833 Olga Brani
285 9b6be833 Olga Brani
286 937c0d49 Athina Bekakou
// toggle expand arrrow  and corresponding area
287 937c0d49 Athina Bekakou
// todo: one function for all the areas we reveal
288 937c0d49 Athina Bekakou
ui.expandDownArea = function(arrow_link, area) {
289 937c0d49 Athina Bekakou
    var arrow_link = $(arrow_link);
290 937c0d49 Athina Bekakou
    var area = $(area);
291 937c0d49 Athina Bekakou
            arrow_link.find('span.snf-arrow-up, span.snf-arrow-down').toggleClass('snf-arrow-up snf-arrow-down');
292 937c0d49 Athina Bekakou
            // $('.wizard-content').removeAttr('style');
293 937c0d49 Athina Bekakou
            area.stop().slideToggle(600, function() {
294 e3de445d Athina Bekakou
                if (area.is(':visible')) {
295 937c0d49 Athina Bekakou
                    arrow_link.find('.snf-arrow-down .snf-arrow-up').removeClass('snf-arrow-down').addClass('snf-arrow-up');
296 937c0d49 Athina Bekakou
                } else {
297 937c0d49 Athina Bekakou
                    arrow_link.find('.snf-arrow-down .snf-arrow-up').addClass('snf-arrow-down');
298 937c0d49 Athina Bekakou
                }
299 937c0d49 Athina Bekakou
300 937c0d49 Athina Bekakou
            });
301 937c0d49 Athina Bekakou
}
302 9b6be833 Olga Brani
303 34d12b31 Olga Brani
304 34d12b31 Olga Brani
/* Tabs functionality
305 34d12b31 Olga Brani
* tabsEl is the div/ul with the links to the sections and the sections that
306 34d12b31 Olga Brani
* with toggle have class sectionEl.
307 34d12b31 Olga Brani
* Markup needed is an href to each a with the id of the relative section.
308 34d12b31 Olga Brani
*/
309 34d12b31 Olga Brani
ui.tabs = function(tabsEl, sectionEl) {
310 34d12b31 Olga Brani
    var tabLink = tabsEl.find('a');
311 34d12b31 Olga Brani
    function href(a) {
312 34d12b31 Olga Brani
        return a.attr('href');
313 34d12b31 Olga Brani
    }
314 34d12b31 Olga Brani
    tabLink.click(function(e){
315 34d12b31 Olga Brani
        e.preventDefault();
316 34d12b31 Olga Brani
        if ( $(this).hasClass('active')){
317 34d12b31 Olga Brani
             return false;
318 34d12b31 Olga Brani
        } else {
319 34d12b31 Olga Brani
            $(this).parents(tabsEl).find('a').removeClass('active');
320 34d12b31 Olga Brani
            $(this).addClass('active');
321 34d12b31 Olga Brani
            $(sectionEl).hide();
322 f0498685 Athina Bekakou
            sectionVis = $(href($(this)));
323 f0498685 Athina Bekakou
            sectionVisID = sectionVis.attr('id');
324 9a0058e2 Olga Brani
            $(href($(this))).stop(true,true).fadeIn(500, function(){
325 f0498685 Athina Bekakou
                ui.detailsCustom(sectionVisID);
326 9a0058e2 Olga Brani
            });
327 34d12b31 Olga Brani
        }
328 34d12b31 Olga Brani
    })
329 34d12b31 Olga Brani
}
330 34d12b31 Olga Brani
331 b3c1328b Olga Brani
$(document).ready(function(){
332 b3c1328b Olga Brani
333 208dd6d1 Athina Bekakou
    if($('.vms.entities').length!=0){
334 208dd6d1 Athina Bekakou
        ui.inactiveActions();
335 208dd6d1 Athina Bekakou
    };
336 337ea026 Athina Bekakou
    ui.setElminHeight($('.main > .details'));
337 9a0058e2 Olga Brani
    ui.setElminHeight($('.lt-bar'));
338 9a0058e2 Olga Brani
    ui.setElHeight($('.scroll-wrap'));
339 283f4927 Olga Brani
    $('#hd-search .hd-icon-search').click(function(e){
340 164fdcd9 Olga Brani
        var that = this;
341 283f4927 Olga Brani
        $(this).parents('.hd-search').toggleClass('hd-open');
342 164fdcd9 Olga Brani
        if ($(this).parents('.hd-search').hasClass('hd-open')) {
343 164fdcd9 Olga Brani
            $(that).parents('.hd-search').find('input[type="search"]').focus();
344 164fdcd9 Olga Brani
        } else {
345 164fdcd9 Olga Brani
            $(that).parents('.hd-search').find('input[type="search"]').val('');
346 164fdcd9 Olga Brani
        }
347 283f4927 Olga Brani
    })
348 283f4927 Olga Brani
349 77d5883f Olga Brani
    $('.header .login').mouseenter(function(e){
350 4e7c16f1 Olga Brani
        $(this).find('ul').stop(true, true).slideDown(200);
351 77d5883f Olga Brani
    });
352 77d5883f Olga Brani
    $('.header .login').mouseleave(function(e){
353 4e7c16f1 Olga Brani
        $(this).find('ul').stop(true, true).slideUp(200);
354 77d5883f Olga Brani
    });
355 77d5883f Olga Brani
356 656c135b Olga Brani
    $('.entities a').click(function(){
357 ca0d2b34 Olga Brani
        if ($(this).attr('data-reveal-id') && !($(this).hasClass('inactive'))) {
358 656c135b Olga Brani
            $('.entities li .more').hide();
359 656c135b Olga Brani
        }
360 656c135b Olga Brani
    });
361 656c135b Olga Brani
362 ca0d2b34 Olga Brani
    $('.inactive').click(function(e){
363 ca0d2b34 Olga Brani
        e.stopPropagation();
364 ca0d2b34 Olga Brani
        e.preventDefault();
365 ca0d2b34 Olga Brani
     })
366 ca0d2b34 Olga Brani
367 ca0d2b34 Olga Brani
368 4e7c16f1 Olga Brani
    $('.lt-actions a:not(.active)').click(function(e){
369 4e7c16f1 Olga Brani
        e.preventDefault();
370 4e7c16f1 Olga Brani
    })
371 4e7c16f1 Olga Brani
372 656c135b Olga Brani
    if ($('.entities .items-list >li').length == 1) {
373 656c135b Olga Brani
        $('.overlay-wrapper').addClass('no-vm');
374 656c135b Olga Brani
    };
375 656c135b Olga Brani
    $('.entities li .more').each(function(){
376 656c135b Olga Brani
        var width = $(this).parent('li').outerWidth()  + 20;
377 656c135b Olga Brani
        $(this).css('width', width);
378 656c135b Olga Brani
    });
379 656c135b Olga Brani
380 656c135b Olga Brani
    $('.items-list li .img-wrap').on("mouseenter", function(e) {
381 656c135b Olga Brani
        var that = this;
382 656c135b Olga Brani
        if ($(this).parents('.entities').hasClass('grid-view')) {
383 656c135b Olga Brani
            if ($(that).parent('.container').siblings('.more').length>0) {
384 656c135b Olga Brani
                $(that).parent('.container').fadeOut(50,'easeInCirc');
385 656c135b Olga Brani
                $(that).parent('.container').siblings('.more').fadeIn(150,'easeInCirc');
386 656c135b Olga Brani
            }
387 656c135b Olga Brani
        }
388 656c135b Olga Brani
    });
389 656c135b Olga Brani
    $('.entities li .more').mouseleave(function(e) {
390 656c135b Olga Brani
        $(this).fadeOut(50, function() {
391 656c135b Olga Brani
            $(this).siblings('.container').fadeIn(50);
392 656c135b Olga Brani
        });
393 656c135b Olga Brani
    });
394 656c135b Olga Brani
    $('.grid-view .items-list > li').mouseleave(function(e){
395 656c135b Olga Brani
        var that = this;
396 656c135b Olga Brani
        setTimeout(function(){
397 656c135b Olga Brani
            $(that).find('.more').fadeOut(200, function() {
398 656c135b Olga Brani
                $(this).siblings('.container').fadeIn('fast');
399 656c135b Olga Brani
            });
400 656c135b Olga Brani
        },50)
401 656c135b Olga Brani
    });
402 164fdcd9 Olga Brani
403 d3bfabe8 Olga Brani
    ui.closeDiv($('.info .close'), '.info');
404 5acf3fcf Olga Brani
    ui.editable();
405 5acf3fcf Olga Brani
    ui.overlay();
406 4ff5dda5 Athina Bekakou
    ui.colorPickerVisible = 0;
407 d3bfabe8 Olga Brani
408 937c0d49 Athina Bekakou
    $("a.disabled").each(function() {
409 937c0d49 Athina Bekakou
        $(this).removeAttr('href');
410 937c0d49 Athina Bekakou
    });
411 937c0d49 Athina Bekakou
    
412 937c0d49 Athina Bekakou
    $("a.disabled").click(function(e) {
413 937c0d49 Athina Bekakou
        e.preventDefault();
414 937c0d49 Athina Bekakou
    });
415 937c0d49 Athina Bekakou
416 62462e34 Athina Bekakou
    // checkbox: basic reaction on click (checked, unchecked)
417 05205849 Athina Bekakou
    // see wizard
418 62462e34 Athina Bekakou
    $('.check').click(function(e){
419 62462e34 Athina Bekakou
        e.preventDefault();
420 62462e34 Athina Bekakou
        e.stopPropagation();
421 62462e34 Athina Bekakou
        ui.changeCheckboxState(this);
422 62462e34 Athina Bekakou
    });
423 62462e34 Athina Bekakou
424 937c0d49 Athina Bekakou
425 937c0d49 Athina Bekakou
    $('.with-checkbox').click(function(e){
426 937c0d49 Athina Bekakou
        e.preventDefault();
427 937c0d49 Athina Bekakou
        e.stopPropagation();
428 937c0d49 Athina Bekakou
        var checkbox = self.find('.check');
429 937c0d49 Athina Bekakou
        ui.changeCheckboxState(checkbox);
430 937c0d49 Athina Bekakou
    });
431 937c0d49 Athina Bekakou
432 937c0d49 Athina Bekakou
    $('.radio_btn').click(function(e) {
433 937c0d49 Athina Bekakou
        e.preventDefault();
434 937c0d49 Athina Bekakou
         var state = $(this).find('span');
435 937c0d49 Athina Bekakou
         if(state.hasClass('snf-radio-unchecked')) {
436 937c0d49 Athina Bekakou
            ui.checkOneRadioButton(this);
437 937c0d49 Athina Bekakou
            ui.changeRadiobuttonState(this);
438 937c0d49 Athina Bekakou
        }
439 9a0058e2 Olga Brani
    });
440 937c0d49 Athina Bekakou
441 d3bfabe8 Olga Brani
    $('.main-actions li a').click(function(e){
442 d3bfabe8 Olga Brani
        if (!($(this).hasClass('active'))) {
443 d3bfabe8 Olga Brani
            e.preventDefault();
444 d3bfabe8 Olga Brani
        }
445 9a0058e2 Olga Brani
    });
446 9569cdc8 Olga Brani
447 f2126967 Olga Brani
    $('.main-actions li a').click(function(e){
448 f2126967 Olga Brani
        if (!($(this).hasClass('active'))) {
449 f2126967 Olga Brani
            e.preventDefault();
450 f2126967 Olga Brani
        }
451 9a0058e2 Olga Brani
    });
452 6e73603a Athina Bekakou
    $('.overlay-area-custom').children('.close').click(function(e){
453 9569cdc8 Olga Brani
        e.preventDefault();
454 62462e34 Athina Bekakou
        e.stopPropagation();
455 6e73603a Athina Bekakou
        $(this).parents('.overlay-area-custom').hide();
456 6e73603a Athina Bekakou
        $(this).parents('.overlay-area-custom').find($('.overlay-div')).hide();
457 bb8cc1dc Olga Brani
        $('body').removeClass('with-overlay');
458 9569cdc8 Olga Brani
    })
459 f2126967 Olga Brani
460 182f3fe2 Olga Brani
    $('.browse-files').click(function(e){
461 182f3fe2 Olga Brani
        e.preventDefault();
462 182f3fe2 Olga Brani
    })
463 182f3fe2 Olga Brani
464 846f5913 Olga Brani
    Dropzone.options.filesDropzone = {
465 182f3fe2 Olga Brani
        dictDefaultMessage:'',
466 182f3fe2 Olga Brani
        clickable: '.browse-files',
467 846f5913 Olga Brani
        previewsContainer: '.dropzone-files',
468 846f5913 Olga Brani
        createImageThumbnails: false,
469 846f5913 Olga Brani
        dictRemoveFile: "snf-Remove file",
470 182f3fe2 Olga Brani
    };
471 182f3fe2 Olga Brani
472 342fa48b Olga Brani
473 342fa48b Olga Brani
    $('.main .files').magnificPopup({
474 342fa48b Olga Brani
        delegate: 'a.show.image',
475 342fa48b Olga Brani
        type: 'image',
476 342fa48b Olga Brani
        tLoading: 'Loading image #%curr%...',
477 342fa48b Olga Brani
        mainClass: 'mfp-img-mobile',
478 342fa48b Olga Brani
        gallery: {
479 342fa48b Olga Brani
            enabled: true,
480 342fa48b Olga Brani
            navigateByImgClick: true,
481 342fa48b Olga Brani
            preload: [0,1] // Will preload 0 - before current, and 1 after the current image
482 342fa48b Olga Brani
        },
483 342fa48b Olga Brani
        image: {
484 bb8cc1dc Olga Brani
            tError: 'The image could not be loaded.',
485 342fa48b Olga Brani
            titleSrc: function(item) {
486 342fa48b Olga Brani
                return item.el.data('title');
487 342fa48b Olga Brani
            }
488 342fa48b Olga Brani
        }
489 342fa48b Olga Brani
    });
490 342fa48b Olga Brani
491 62462e34 Athina Bekakou
    if($('#picker').length>0) {
492 62462e34 Athina Bekakou
        $('#picker').farbtastic('#color');
493 62462e34 Athina Bekakou
    };
494 f2380a69 Athina Bekakou
    if($('#sb-search').length>0) {
495 f2380a69 Athina Bekakou
        new UISearch( document.getElementById( 'sb-search' ) );
496 f2380a69 Athina Bekakou
    }
497 026edcbc Olga Brani
498 026edcbc Olga Brani
499 026edcbc Olga Brani
    /* grid/list view for items-list */
500 026edcbc Olga Brani
501 026edcbc Olga Brani
    $('.view-type .list').click(function(e){
502 026edcbc Olga Brani
        e.preventDefault();
503 026edcbc Olga Brani
        $('.view-type .grid span').removeClass('current');
504 026edcbc Olga Brani
        $(this).find('span').addClass('current');
505 656c135b Olga Brani
        $('.entities').removeClass('grid-view');
506 656c135b Olga Brani
        $('.entities').addClass('list-view');
507 775d43ea Athina Bekakou
    });
508 026edcbc Olga Brani
509 026edcbc Olga Brani
     $('.view-type .grid').click(function(e){
510 026edcbc Olga Brani
        e.preventDefault();
511 026edcbc Olga Brani
        $('.view-type .list span').removeClass('current');
512 026edcbc Olga Brani
        $(this).find('span').addClass('current');
513 656c135b Olga Brani
        $('.entities').addClass('grid-view');
514 656c135b Olga Brani
        $('.entities').removeClass('list-view');
515 775d43ea Athina Bekakou
    });
516 775d43ea Athina Bekakou
517 656c135b Olga Brani
     $('.lt-bar .select').click(function(e){
518 656c135b Olga Brani
        $(this).find('span').toggleClass('snf-checkbox-checked snf-checkbox-unchecked');
519 656c135b Olga Brani
        $(this).find('em').toggle();
520 656c135b Olga Brani
        if ( $(this).find('span').hasClass('snf-checkbox-unchecked')){
521 656c135b Olga Brani
            $('.list-view  li .check span').removeClass('snf-checkbox-checked');
522 656c135b Olga Brani
            $('.list-view  li .check span').addClass('snf-checkbox-unchecked');
523 656c135b Olga Brani
        } else {
524 656c135b Olga Brani
            $('.list-view  li .check span').addClass('snf-checkbox-checked');
525 656c135b Olga Brani
            $('.list-view  li .check span').removeClass('snf-checkbox-unchecked');
526 656c135b Olga Brani
        }
527 77d5883f Olga Brani
        ui.entitiesActionsEnabled();
528 656c135b Olga Brani
     });
529 656c135b Olga Brani
530 ca0d2b34 Olga Brani
531 775d43ea Athina Bekakou
    // set filter visible
532 775d43ea Athina Bekakou
    $('.filter-menu .filter').click(function(e) {
533 775d43ea Athina Bekakou
        e.preventDefault();
534 283f4927 Olga Brani
        $(this).parents('.filter-menu').toggleClass('current');
535 d4427ef0 Athina Bekakou
    });
536 d4427ef0 Athina Bekakou
537 d4427ef0 Athina Bekakou
    // temp function used to demonstrate the visual effect of the building state of vm
538 f0ac40a4 Athina Bekakou
    $('[data-status="building"] .btn5.temp').click(function(e) {
539 d4427ef0 Athina Bekakou
        e.preventDefault();
540 d4427ef0 Athina Bekakou
        $(this).siblings('.container').find('.complete').toggleClass('build-progress');
541 f0ac40a4 Athina Bekakou
    });
542 f0ac40a4 Athina Bekakou
543 f0ac40a4 Athina Bekakou
    $('[data-status="rebooting"] .btn5.temp').click(function(e) {
544 f0ac40a4 Athina Bekakou
        e.preventDefault();
545 de9b2b51 Athina Bekakou
        $(this).siblings('.container').find('.snf-pc-full').toggleClass('reboot-progress');
546 026edcbc Olga Brani
    })
547 4e7c16f1 Olga Brani
548 aafd8478 Athina Bekakou
    // //temp function to preventDefault of links in modal
549 aafd8478 Athina Bekakou
    // $('.reveal-modal a:not(".close-reveal-modal, .generate-key-btn, .import-key-btn")').click(function(e){
550 aafd8478 Athina Bekakou
    //     e.preventDefault();
551 aafd8478 Athina Bekakou
    //     $('a.close-reveal-modal').trigger('click');
552 aafd8478 Athina Bekakou
    // });
553 8e94f2a9 Athina Bekakou
554 8e94f2a9 Athina Bekakou
     // temp btn to show communication error message
555 aafd8478 Athina Bekakou
    $('.temp-for-btns .communication-error-btn').click(function(e) {
556 8e94f2a9 Athina Bekakou
         e.preventDefault();
557 8e94f2a9 Athina Bekakou
         e.stopPropagation();
558 aafd8478 Athina Bekakou
         $('.communication-error').animate({bottom: "0px"});
559 8e94f2a9 Athina Bekakou
     });
560 8e94f2a9 Athina Bekakou
561 aafd8478 Athina Bekakou
    $('.communication-error a').click(function(e) {
562 8e94f2a9 Athina Bekakou
        e.preventDefault();
563 8e94f2a9 Athina Bekakou
        e.stopPropagation();
564 aafd8478 Athina Bekakou
        $('.communication-error').animate({bottom: "-151px"});
565 8e94f2a9 Athina Bekakou
566 aafd8478 Athina Bekakou
    });
567 aafd8478 Athina Bekakou
    $('.communication-error').click(function(e) {
568 aafd8478 Athina Bekakou
        e.stopPropagation();
569 9bae51cb Athina Bekakou
    });
570 9bae51cb Athina Bekakou
571 9bae51cb Athina Bekakou
    $('.show-add-tag').click(function(e) {
572 9bae51cb Athina Bekakou
    e.preventDefault();
573 9bae51cb Athina Bekakou
    $(this).parents('.tags-area, .tags').find('.snf-color-picker').slideDown('slow', function() {
574 9bae51cb Athina Bekakou
        $('#hide-add-tag-dummy').scrollintoview({
575 9bae51cb Athina Bekakou
            'duration': 'slow'
576 9bae51cb Athina Bekakou
        });
577 9bae51cb Athina Bekakou
    });
578 9bae51cb Athina Bekakou
    ui.colorPickerVisible = 1;
579 9bae51cb Athina Bekakou
    });
580 9bae51cb Athina Bekakou
581 9bae51cb Athina Bekakou
    $('.hide-add-tag').click(function(e) {
582 9bae51cb Athina Bekakou
    e.preventDefault();
583 9bae51cb Athina Bekakou
    $(this).parents('.tags-area, .tags').find('.snf-color-picker').slideUp(400, function() {
584 9bae51cb Athina Bekakou
        $('.show-add-tag').first().scrollintoview({
585 9bae51cb Athina Bekakou
            'duration': 'slow'
586 9bae51cb Athina Bekakou
        });
587 9bae51cb Athina Bekakou
        ui.colorPickerVisible = 0;
588 9bae51cb Athina Bekakou
    });
589 aafd8478 Athina Bekakou
    });
590 3549163d Olga Brani
591 3549163d Olga Brani
    // connected details js
592 f0498685 Athina Bekakou
    ui.detailsCustom('disk-connected');
593 f0498685 Athina Bekakou
    ui.detailsCustom('network-connected');
594 f0498685 Athina Bekakou
    ui.detailsCustom('vm-connected');
595 3549163d Olga Brani
    ui.firewallSetup();
596 3549163d Olga Brani
    $('.firewall .more  a').click(function(e){
597 3549163d Olga Brani
        e.preventDefault();
598 3549163d Olga Brani
        if ($(this).find('span').hasClass('snf-radio-checked')) {
599 3549163d Olga Brani
            return false;
600 3549163d Olga Brani
        }
601 3549163d Olga Brani
        $(this).parents('.firewall').removeAttr('data-firewall');
602 3549163d Olga Brani
        $(this).parents('.firewall').data('firewall', $(this).parent().attr('class'));
603 3549163d Olga Brani
        $(this).find('span').toggleClass('snf-radio-unchecked snf-radio-checked');
604 3549163d Olga Brani
        $(this).parent('p').siblings('p').find('span').removeClass('snf-radio-checked');
605 3549163d Olga Brani
        $(this).parent('p').siblings('p').find('span').addClass('snf-radio-unchecked');
606 3549163d Olga Brani
         ui.firewallSetup();
607 3549163d Olga Brani
    });
608 3549163d Olga Brani
    $('.firewall').mouseenter(function(e){
609 3549163d Olga Brani
        $(this).find('.more').stop(true, true).slideDown(200);
610 3549163d Olga Brani
    });
611 3549163d Olga Brani
    $('.firewall').mouseleave(function(e){
612 3549163d Olga Brani
        $(this).find('.more').stop(true, true).slideUp(200);
613 3549163d Olga Brani
    });
614 34d12b31 Olga Brani
    ui.tabs($('.tabs'), $('.content'));
615 9a0058e2 Olga Brani
616 9a0058e2 Olga Brani
    $('.toggle-lt-bar').click(function(e){
617 9a0058e2 Olga Brani
        e.preventDefault();
618 4734dbcc Athina Bekakou
        var self =this;
619 4734dbcc Athina Bekakou
        if($(this).hasClass('fix-position')) {
620 4734dbcc Athina Bekakou
            $(this).fadeOut({
621 4734dbcc Athina Bekakou
                complete: function() {
622 4734dbcc Athina Bekakou
                $(self).removeClass('fix-position');
623 4734dbcc Athina Bekakou
                $(self).fadeIn();
624 4734dbcc Athina Bekakou
                },
625 4734dbcc Athina Bekakou
                start: function() {
626 4734dbcc Athina Bekakou
                $('.lt-bar').animate({ width: 'toggle' });
627 4734dbcc Athina Bekakou
                }
628 4734dbcc Athina Bekakou
        });
629 4734dbcc Athina Bekakou
        }
630 4734dbcc Athina Bekakou
        else {
631 4734dbcc Athina Bekakou
            $(this).addClass('fix-position');
632 4734dbcc Athina Bekakou
            $('.lt-bar').animate({ width: 'toggle' });
633 4734dbcc Athina Bekakou
        }
634 84e9a07d Olga Brani
    });
635 84e9a07d Olga Brani
636 cc9091bb Athina Bekakou
637 112e5dd2 Athina Bekakou
    $('.act').click(function(e) {
638 112e5dd2 Athina Bekakou
        $(this).addClass('pending last');
639 112e5dd2 Athina Bekakou
    });
640 112e5dd2 Athina Bekakou
641 112e5dd2 Athina Bekakou
    $('.remove .cancel').click(function(e) {
642 112e5dd2 Athina Bekakou
        e.preventDefault();
643 112e5dd2 Athina Bekakou
        $('a.close-reveal-modal').trigger('click');
644 112e5dd2 Athina Bekakou
        $('.last').removeClass('pending last');
645 112e5dd2 Athina Bekakou
    });
646 112e5dd2 Athina Bekakou
647 112e5dd2 Athina Bekakou
    $('.remove .ok').click(function(e) {
648 84e9a07d Olga Brani
        e.preventDefault();
649 112e5dd2 Athina Bekakou
        $('a.close-reveal-modal').trigger('click');
650 112e5dd2 Athina Bekakou
        var connection_img = $('.connections').find('.last');
651 112e5dd2 Athina Bekakou
        connection_img.addClass('open', 0);
652 112e5dd2 Athina Bekakou
        connection_img.removeClass('last');;
653 112e5dd2 Athina Bekakou
        var img = connection_img.closest('.item').find('.img-wrap .snf-font');
654 a716e840 Athina Bekakou
        img.addClass('reboot-progress');
655 a716e840 Athina Bekakou
        setTimeout(function() {
656 112e5dd2 Athina Bekakou
            var connections_list = connection_img.closest('.connections').children('li:not(".hidden")');
657 a716e840 Athina Bekakou
            if(connections_list.length>1) {
658 112e5dd2 Athina Bekakou
                connection_img.closest('li').slideUp(function(){
659 a716e840 Athina Bekakou
                    console.log(img)
660 112e5dd2 Athina Bekakou
                    connection_img.closest('li').addClass('hidden');
661 112e5dd2 Athina Bekakou
                    if(connections_list.find('.pending').length == 0) {
662 112e5dd2 Athina Bekakou
                      img.removeClass('reboot-progress');
663 112e5dd2 Athina Bekakou
                    }
664 a716e840 Athina Bekakou
                });
665 a716e840 Athina Bekakou
            }
666 a716e840 Athina Bekakou
            else {
667 112e5dd2 Athina Bekakou
                connection_img.closest('.item').slideUp(function(){
668 112e5dd2 Athina Bekakou
                    img.removeClass('reboot-progress');
669 112e5dd2 Athina Bekakou
                    img.closest('li').addClass('hidden');
670 112e5dd2 Athina Bekakou
                    img.removeClass('reboot-progress');
671 a716e840 Athina Bekakou
                });
672 a716e840 Athina Bekakou
            }
673 112e5dd2 Athina Bekakou
            connection_img.removeClass('pending');
674 a716e840 Athina Bekakou
        }, 3000)
675 112e5dd2 Athina Bekakou
    });
676 84e9a07d Olga Brani
677 3549163d Olga Brani
    // end of connected details js
678 98714f8a Olga Brani
})
679 b3c1328b Olga Brani
680 9569cdc8 Olga Brani
681 98714f8a Olga Brani
$(window).resize(function(e){
682 337ea026 Athina Bekakou
    ui.setElminHeight($('.main > .details'));
683 9a0058e2 Olga Brani
    ui.setElminHeight($('.lt-bar'));
684 9a0058e2 Olga Brani
    ui.setElHeight($('.scroll-wrap'));
685 b3c1328b Olga Brani
})