Statistics
| Branch: | Tag: | Revision:

root / snf-astakos-app / astakos / im / static / im / js / quotas.js @ 2934e509

History | View | Annotate | Download (8.7 kB)

1 bdc1c103 Olga Brani
function group_form_show_resources(el){
2 bdc1c103 Olga Brani
        
3 bdc1c103 Olga Brani
        el.addClass('selected');
4 bdc1c103 Olga Brani
        var id = el.attr('id');
5 bdc1c103 Olga Brani
        $('.quotas-form .group').each(function() {
6 bdc1c103 Olga Brani
                if( $(this).hasClass(id) ) {
7 59728d4e Olga Brani
                         
8 3cbd5e47 Olga Brani
                        $(this).appendTo('.visible');
9 bdc1c103 Olga Brani
                        $(this).show('slow');
10 bdc1c103 Olga Brani
                        $(this).find('input')[0].focus()
11 bdc1c103 Olga Brani
                }
12 bdc1c103 Olga Brani
        });
13 5841646f Olga Brani
        if ($('.quotas-form .with-info .with-errors input[type="text"]')){
14 5841646f Olga Brani
                $(this)[0].focus();        
15 5841646f Olga Brani
        }
16 5841646f Olga Brani
17 bdc1c103 Olga Brani
}
18 bdc1c103 Olga Brani
19 bdc1c103 Olga Brani
20 bdc1c103 Olga Brani
function bytesToSize2(bytes) {
21 bdc1c103 Olga Brani
    var sizes = [ 'n/a', 'bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];
22 bdc1c103 Olga Brani
    var i = +Math.floor(Math.log(bytes) / Math.log(1024));
23 bdc1c103 Olga Brani
    return  (bytes / Math.pow(1024, i)).toFixed( 0 ) + sizes[ isNaN( bytes ) ? 0 : i+1 ];
24 bdc1c103 Olga Brani
}
25 bdc1c103 Olga Brani
26 1b866d9e Olga Brani
$(document).ready(function() {
27 1b866d9e Olga Brani
28 bdc1c103 Olga Brani
        
29 bdc1c103 Olga Brani
        
30 bdc1c103 Olga Brani
        // ugly fix to transfer data easily 
31 bdc1c103 Olga Brani
        $('.with-info input[name^="is_selected_"]').each(function() {
32 bdc1c103 Olga Brani
                $(this).parents('.form-row').hide();
33 bdc1c103 Olga Brani
        });
34 bdc1c103 Olga Brani
    
35 1b866d9e Olga Brani
        $('.quotas-form ul li a').click(function(e){
36 bdc1c103 Olga Brani
                
37 bdc1c103 Olga Brani
                // check the hidden input field
38 30dd9e0e Olga Brani
                $(this).siblings('input[type="hidden"]').val("1");
39 bdc1c103 Olga Brani
                
40 bdc1c103 Olga Brani
                // get the hidden input field without the proxy
41 bdc1c103 Olga Brani
                // and check the python form field
42 bdc1c103 Olga Brani
                 hidden_name = $(this).siblings('input[type="hidden"]').attr('name').replace("proxy_","");
43 30dd9e0e Olga Brani
                 $("input[name='"+hidden_name+"']").val("1");  
44 bdc1c103 Olga Brani
                
45 bdc1c103 Olga Brani
                 // prevent extra actions if it is checked                 
46 ed2f0452 Olga Brani
                if ( $(this).hasClass('selected')){
47 ed2f0452 Olga Brani
                        e.preventDefault();
48 bdc1c103 Olga Brani
                } else {
49 bdc1c103 Olga Brani
                        
50 bdc1c103 Olga Brani
                        // show the relevant fieldsets
51 bdc1c103 Olga Brani
                        group_form_show_resources($(this));
52 1b866d9e Olga Brani
                }   
53 1b866d9e Olga Brani
        });
54 1b866d9e Olga Brani
        
55 bdc1c103 Olga Brani
         
56 bdc1c103 Olga Brani
        
57 bdc1c103 Olga Brani
        
58 bdc1c103 Olga Brani
         
59 bdc1c103 Olga Brani
        
60 1b866d9e Olga Brani
        $('.quotas-form .group .delete').click(function(e){
61 bdc1c103 Olga Brani
                
62 7c76af95 Olga Brani
                e.preventDefault(); 
63 bdc1c103 Olga Brani
                
64 bdc1c103 Olga Brani
                // clear form fields
65 1b866d9e Olga Brani
                $(this).siblings('fieldset').find('input').val('');
66 1b866d9e Olga Brani
                
67 bdc1c103 Olga Brani
                // clear errors
68 bdc1c103 Olga Brani
                $(this).siblings('fieldset').find('.form-row').removeClass('with-errors');
69 bdc1c103 Olga Brani
                 
70 bdc1c103 Olga Brani
                // hide relevant fieldset 
71 f932b578 Olga Brani
                $(this).parents('.group').hide('slow', function() {
72 3cbd5e47 Olga Brani
                    $(this).appendTo('.not-visible');        
73 f932b578 Olga Brani
                });
74 bdc1c103 Olga Brani
                
75 bdc1c103 Olga Brani
                group_class = $(this).parents('.group').attr('class').replace('group ', '');
76 bdc1c103 Olga Brani
                
77 bdc1c103 Olga Brani
                // unselect group icon
78 1b866d9e Olga Brani
                $('.quotas-form ul li a').each(function() {
79 bdc1c103 Olga Brani
                        if($(this).attr('id')==group_class) {
80 1b866d9e Olga Brani
                                $(this).removeClass('selected');
81 30dd9e0e Olga Brani
                                $(this).siblings('input[type="hidden"]').val('0');
82 bdc1c103 Olga Brani
                                
83 bdc1c103 Olga Brani
                                // get the hidden input field without the proxy
84 bdc1c103 Olga Brani
                                // and check the python form field
85 bdc1c103 Olga Brani
                                 hidden_name = $(this).siblings('input[type="hidden"]').attr('name').replace("proxy_","");
86 30dd9e0e Olga Brani
                                 $("input[name='"+hidden_name+"']").val('0');  
87 bdc1c103 Olga Brani
                                
88 1b866d9e Olga Brani
                        }
89 1b866d9e Olga Brani
                }); 
90 93b6cb50 Olga Brani
                
91 bdc1c103 Olga Brani
                // clear hidden fields
92 bdc1c103 Olga Brani
                $(this).siblings('fieldset').find('input[type="text"]').each(function() {
93 bdc1c103 Olga Brani
                        hidden_name = $(this).attr('name').replace("_proxy","");
94 bdc1c103 Olga Brani
                         hidden_input = $("input[name='"+hidden_name+"']");
95 bdc1c103 Olga Brani
                         hidden_input.val('');
96 bdc1c103 Olga Brani
                });
97 bdc1c103 Olga Brani
                 
98 f932b578 Olga Brani
                 
99 1b866d9e Olga Brani
        });
100 2934e509 Olga Brani
          
101 bdc1c103 Olga Brani
                  
102 bdc1c103 Olga Brani
        // if you fill _proxy fields do stuff 
103 dcd1c383 Olga Brani
        $('.quotas-form .quota input[type="text"]').change(function () {
104 dcd1c383 Olga Brani
                 
105 595dde70 Olga Brani
                 if ( $('#icons span.info').hasClass('error-msg')){
106 595dde70 Olga Brani
                        $('#icons span.info').find('span').html('Here you add resources to your Project. Each resource you specify here, will be granted to *EACH* user of this Project. So the total resources will be: <Total number of members> * <amount_of_resource> for each resource.');
107 595dde70 Olga Brani
                 }
108 6abd262c Olga Brani
                  
109 dcd1c383 Olga Brani
                 // get value from input
110 dcd1c383 Olga Brani
                 var value = $(this).val();
111 2934e509 Olga Brani
                  
112 6abd262c Olga Brani
                 //get input name without _proxy
113 6abd262c Olga Brani
                 hidden_name = $(this).attr('name').replace("_proxy","");
114 6abd262c Olga Brani
                 var hidden_input = $("input[name='"+hidden_name+"']");
115 6abd262c Olga Brani
                 
116 bdc1c103 Olga Brani
                 if (value) {
117 2934e509 Olga Brani
                          
118 bdc1c103 Olga Brani
                         // actions for humanize fields
119 bdc1c103 Olga Brani
                         if ($(this).hasClass('dehumanize')){
120 bdc1c103 Olga Brani
                                 
121 bdc1c103 Olga Brani
                                 var flag = 0;
122 3cbd5e47 Olga Brani
123 3cbd5e47 Olga Brani
                                // check if the value is not float
124 3cbd5e47 Olga Brani
                                 var num_float = parseFloat(value);
125 3cbd5e47 Olga Brani
                                 num_float= String(num_float);
126 3cbd5e47 Olga Brani
127 3cbd5e47 Olga Brani
                                 if (num_float.indexOf(".") == 1){
128 3cbd5e47 Olga Brani
                                         flag = 1 ; 
129 3cbd5e47 Olga Brani
                                         msg="Please enter an integer";
130 3cbd5e47 Olga Brani
                                 } else {
131 3cbd5e47 Olga Brani
                                         var num = parseInt(value);
132 3cbd5e47 Olga Brani
                                        if ( num == '0' ) { 
133 3cbd5e47 Olga Brani
                                                flag = 1 ; msg="zero"
134 3cbd5e47 Olga Brani
                                        } else {
135 595dde70 Olga Brani
                                                if ( value && !num ) { flag = 1 ; msg="Invalid format. Try something like 10GB, 2MB etc"}
136 3cbd5e47 Olga Brani
                                         
137 3cbd5e47 Olga Brani
                                                 var bytes = num;
138 3cbd5e47 Olga Brani
                                                 
139 3cbd5e47 Olga Brani
                                                // remove any numbers and get suffix                                 
140 3cbd5e47 Olga Brani
                                                 var suffix = value.replace( num, '');
141 3cbd5e47 Olga Brani
                
142 3cbd5e47 Olga Brani
                                                  // validate suffix. 'i' renders it case insensitive
143 3cbd5e47 Olga Brani
                                                 var suf = suffix.match( new RegExp('^(GB|KB|MB|TB|bytes|G|K|M|T|byte)$', 'i'));
144 3cbd5e47 Olga Brani
                                                 if (suf){
145 3cbd5e47 Olga Brani
                                                         
146 3cbd5e47 Olga Brani
                                                         suf = suf[0].toLowerCase(); 
147 3cbd5e47 Olga Brani
                                                         suf = suf.substr(0,1);
148 3cbd5e47 Olga Brani
                                                 
149 3cbd5e47 Olga Brani
                                                         // transform to bytes
150 3cbd5e47 Olga Brani
                                                         switch (suf){
151 3cbd5e47 Olga Brani
                                                                 case 'b': 
152 3cbd5e47 Olga Brani
                                                                   bytes = num*Math.pow(1024,0);
153 3cbd5e47 Olga Brani
                                                                   break;
154 3cbd5e47 Olga Brani
                                                                 case 'k':
155 3cbd5e47 Olga Brani
                                                                   bytes = num*Math.pow(1024,1);
156 3cbd5e47 Olga Brani
                                                                   break;
157 3cbd5e47 Olga Brani
                                                                 case 'm':
158 3cbd5e47 Olga Brani
                                                                   bytes = num*Math.pow(1024,2);
159 3cbd5e47 Olga Brani
                                                                   break;
160 3cbd5e47 Olga Brani
                                                                 case 'g':
161 3cbd5e47 Olga Brani
                                                                   bytes = num*Math.pow(1024,3);
162 3cbd5e47 Olga Brani
                                                                   break;
163 3cbd5e47 Olga Brani
                                                                 case 't':
164 3cbd5e47 Olga Brani
                                                                   bytes = num*Math.pow(1024,4);
165 3cbd5e47 Olga Brani
                                                                   break;    
166 3cbd5e47 Olga Brani
                                                                 default:
167 3cbd5e47 Olga Brani
                                                                   bytes = num; 
168 3cbd5e47 Olga Brani
                                                         }
169 3cbd5e47 Olga Brani
                                                 } else {
170 3cbd5e47 Olga Brani
                                                         if (num) {
171 3cbd5e47 Olga Brani
                                                                  flag = 1;
172 3cbd5e47 Olga Brani
                                                                  msg ="You must specify correct units" 
173 3cbd5e47 Olga Brani
                                                         }  
174 3cbd5e47 Olga Brani
                                                          
175 3cbd5e47 Olga Brani
                                                 }
176 2934e509 Olga Brani
                                        }                                         
177 2934e509 Olga Brani
                                 } 
178 bdc1c103 Olga Brani
                                 
179 bdc1c103 Olga Brani
                                 if ( flag == '1' ){ 
180 bdc1c103 Olga Brani
                                         $(this).parents('.form-row').addClass('with-errors');
181 5841646f Olga Brani
                                         $(this).parents('.form-row').find('.error-msg').html(msg);
182 bdc1c103 Olga Brani
                                         bytes = value;
183 bdc1c103 Olga Brani
                                         $(this).focus();
184 bdc1c103 Olga Brani
                                         
185 bdc1c103 Olga Brani
                                          
186 bdc1c103 Olga Brani
                                 } else {
187 bdc1c103 Olga Brani
                                         $(this).parents('.form-row').removeClass('with-errors');
188 bdc1c103 Olga Brani
                                 }
189 bdc1c103 Olga Brani
                                 
190 bdc1c103 Olga Brani
                                 hidden_input.val(bytes);
191 bdc1c103 Olga Brani
                                 
192 3cbd5e47 Olga Brani
                                 
193 6abd262c Olga Brani
                         }
194 bdc1c103 Olga Brani
                          
195 3cbd5e47 Olga Brani
                         // validation actions for int fields
196 bdc1c103 Olga Brani
                         else {
197 bdc1c103 Olga Brani
        
198 bdc1c103 Olga Brani
                                 var is_int = value.match (new RegExp('^[0-9]*$'));
199 bdc1c103 Olga Brani
                                 if ( !is_int ){ 
200 3cbd5e47 Olga Brani
                                         $(this).parents('.form-row').find('.error-msg').html('Enter a positive integer');
201 bdc1c103 Olga Brani
                                         $(this).parents('.form-row').addClass('with-errors');
202 bdc1c103 Olga Brani
                                          
203 bdc1c103 Olga Brani
                                 } else {
204 bdc1c103 Olga Brani
                                         if ( value == '0'){
205 bdc1c103 Olga Brani
                                                 $(this).parents('.form-row').find('.error-msg').html('Ensure this value is greater than or equal to 1');
206 bdc1c103 Olga Brani
                                                 $(this).parents('.form-row').addClass('with-errors');
207 bdc1c103 Olga Brani
                                         }else {
208 bdc1c103 Olga Brani
                                                 $(this).parents('.form-row').removeClass('with-errors');
209 bdc1c103 Olga Brani
                                         }
210 bdc1c103 Olga Brani
                                         
211 bdc1c103 Olga Brani
                                         
212 bdc1c103 Olga Brani
                                 }
213 bdc1c103 Olga Brani
                                 hidden_input.val(value);
214 bdc1c103 Olga Brani
        
215 dcd1c383 Olga Brani
                         }
216 bdc1c103 Olga Brani
                 
217 6abd262c Olga Brani
                 } else {
218 2934e509 Olga Brani
        ;                 $(this).parents('.with-errors').removeClass('with-errors')
219 bdc1c103 Olga Brani
                         hidden_input.removeAttr('value');
220 dcd1c383 Olga Brani
                 }
221 3cbd5e47 Olga Brani
                 $('#icons span.info').removeClass('error-msg');
222 dcd1c383 Olga Brani
                 
223 dcd1c383 Olga Brani
         });
224 bdc1c103 Olga Brani
         
225 bdc1c103 Olga Brani
        
226 bdc1c103 Olga Brani
        // if hidden checkboxes are checked, the right group is selected 
227 bdc1c103 Olga Brani
        $('.with-info input[name^="is_selected_"]').each(function() {
228 30dd9e0e Olga Brani
                if ( ($(this).val()) == 1 ){
229 bdc1c103 Olga Brani
                        
230 bdc1c103 Olga Brani
                        // get hidden input name
231 bdc1c103 Olga Brani
                        hidden_name = $(this).attr('name');
232 30dd9e0e Olga Brani
                        $("input[name='proxy_"+hidden_name+"']").val("1"); 
233 bdc1c103 Olga Brani
                        
234 bdc1c103 Olga Brani
                        // pretend to check the ul li a
235 bdc1c103 Olga Brani
                        // show the relevant fieldsets
236 bdc1c103 Olga Brani
                        var mock_a = $("input[name='proxy_"+hidden_name+"']").siblings('a');
237 bdc1c103 Olga Brani
                        group_form_show_resources(mock_a);
238 bdc1c103 Olga Brani
                         
239 bdc1c103 Olga Brani
                }
240 bdc1c103 Olga Brani
        }); 
241 bdc1c103 Olga Brani
        
242 2934e509 Olga Brani
 
243 30dd9e0e Olga Brani
         
244 30dd9e0e Olga Brani
        $('.group input[name$="_uplimit_proxy"]').each(function() {
245 30dd9e0e Olga Brani
                if ($(this).val()){
246 30dd9e0e Olga Brani
                        
247 30dd9e0e Olga Brani
                        // get value from input
248 30dd9e0e Olga Brani
                         var value = $(this).val();
249 30dd9e0e Olga Brani
                        
250 30dd9e0e Olga Brani
                        
251 30dd9e0e Olga Brani
                        // get hidden input name
252 30dd9e0e Olga Brani
                        hidden_name = $(this).attr('name');
253 30dd9e0e Olga Brani
                        hidden_field_name = hidden_name.replace("_proxy","");
254 30dd9e0e Olga Brani
                        $("input[name='"+hidden_field_name+"']").val(value);
255 30dd9e0e Olga Brani
                        var field = $(this); 
256 30dd9e0e Olga Brani
                        
257 30dd9e0e Olga Brani
                        
258 30dd9e0e Olga Brani
                        if ( (field.hasClass('dehumanize')) && !($(this).parents('.form-row').hasClass('with-errors'))) {
259 30dd9e0e Olga Brani
                                // for dehumanize fields transform bytes to KB, MB, etc
260 30dd9e0e Olga Brani
                                // unless there is an error
261 30dd9e0e Olga Brani
                                field.val(bytesToSize2(value))
262 30dd9e0e Olga Brani
                        } else {
263 30dd9e0e Olga Brani
                                // else just return the value
264 30dd9e0e Olga Brani
                                field.val(value);        
265 30dd9e0e Olga Brani
                        }
266 30dd9e0e Olga Brani
                        
267 30dd9e0e Olga Brani
                        var group_class = field.parents('div[class^="group"]').attr('class').replace('group ', '');
268 30dd9e0e Olga Brani
                        
269 30dd9e0e Olga Brani
                         
270 30dd9e0e Olga Brani
                         
271 30dd9e0e Olga Brani
                        
272 30dd9e0e Olga Brani
                        // select group icon
273 30dd9e0e Olga Brani
                        $('.quotas-form ul li a').each(function() {
274 30dd9e0e Olga Brani
                                
275 30dd9e0e Olga Brani
                                if($(this).attr('id') == group_class) {
276 30dd9e0e Olga Brani
                                        $(this).addClass('selected');
277 30dd9e0e Olga Brani
                                        $(this).siblings('input[type="hidden"]').val("1");
278 30dd9e0e Olga Brani
                                        
279 30dd9e0e Olga Brani
                                        // get the hidden input field without the proxy
280 30dd9e0e Olga Brani
                                        // and check the python form field
281 30dd9e0e Olga Brani
                                         hidden_name = $(this).siblings('input[type="hidden"]').attr('name').replace("proxy_","");
282 30dd9e0e Olga Brani
                                         $("input[name='"+hidden_name+"']").val("1");  
283 30dd9e0e Olga Brani
                                         
284 30dd9e0e Olga Brani
                                         group_form_show_resources($(this));
285 30dd9e0e Olga Brani
                                        
286 30dd9e0e Olga Brani
                                }
287 30dd9e0e Olga Brani
                        }); 
288 30dd9e0e Olga Brani
                        
289 30dd9e0e Olga Brani
                
290 30dd9e0e Olga Brani
                        
291 30dd9e0e Olga Brani
                        // if the field has class error, transfer error to the proxy fields
292 30dd9e0e Olga Brani
                        if ( $(this).parents('.form-row').hasClass('with-errors') ) {
293 30dd9e0e Olga Brani
                                field.parents('.form-row').addClass('with-errors');
294 30dd9e0e Olga Brani
                        }
295 30dd9e0e Olga Brani
                        
296 30dd9e0e Olga Brani
                         
297 30dd9e0e Olga Brani
                }
298 30dd9e0e Olga Brani
        });  
299 55a845c0 Olga Brani
        
300 2934e509 Olga Brani
        function goToByScroll(id){
301 2934e509 Olga Brani
             $('html,body').animate({scrollTop: $("#"+id).offset().top},'slow');
302 2934e509 Olga Brani
        }
303 2934e509 Olga Brani
        
304 2934e509 Olga Brani
        
305 595dde70 Olga Brani
        $('#group_create_form').submit(function(){
306 2934e509 Olga Brani
                
307 2934e509 Olga Brani
                var flag = 0;                 
308 595dde70 Olga Brani
                $('.quotas-form .group input[type="text"]').each(function() {
309 595dde70 Olga Brani
                         var value = $(this).val();
310 595dde70 Olga Brani
                        if (value){
311 2934e509 Olga Brani
                                flag = 1;
312 595dde70 Olga Brani
                        }
313 595dde70 Olga Brani
                });
314 2934e509 Olga Brani
                
315 2934e509 Olga Brani
                console.info(flag);
316 2934e509 Olga Brani
                
317 595dde70 Olga Brani
                if (flag =='0') {
318 2934e509 Olga Brani
                        $('#icons').focus();
319 595dde70 Olga Brani
                        $('#icons span.info').addClass('error-msg');
320 595dde70 Olga Brani
                        $('#icons span.info').find('span').html('You must fill in at least one resource');
321 2934e509 Olga Brani
                        goToByScroll("icons");
322 2934e509 Olga Brani
323 595dde70 Olga Brani
                        return false;
324 595dde70 Olga Brani
                        
325 595dde70 Olga Brani
                }
326 2934e509 Olga Brani
                if ($('.quotas-form .group .form-row.with-errors').length>0 ){
327 2934e509 Olga Brani
                        $('.quotas-form .group .form-row.with-errors input[type="text"]')[0].focus();
328 2934e509 Olga Brani
                        return false;
329 2934e509 Olga Brani
                        
330 2934e509 Olga Brani
                } 
331 2934e509 Olga Brani
                                 
332 2934e509 Olga Brani
                  
333 2934e509 Olga Brani
                 
334 595dde70 Olga Brani
        });
335 595dde70 Olga Brani
336 595dde70 Olga Brani
337 595dde70 Olga Brani
        
338 595dde70 Olga Brani
        
339 595dde70 Olga Brani
        
340 1b866d9e Olga Brani
});