Statistics
| Branch: | Tag: | Revision:

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

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