Mercurial > hg > soundsoftware-site
comparison public/javascripts/application.js @ 1298:4f746d8966dd redmine_2.3_integration
Merge from redmine-2.3 branch to create new branch redmine-2.3-integration
author | Chris Cannam |
---|---|
date | Fri, 14 Jun 2013 09:28:30 +0100 |
parents | bb32da3bea34 622f24f53b42 |
children |
comparison
equal
deleted
inserted
replaced
1297:0a574315af3e | 1298:4f746d8966dd |
---|---|
1 /* Redmine - project management software | 1 /* Redmine - project management software |
2 Copyright (C) 2006-2012 Jean-Philippe Lang */ | 2 Copyright (C) 2006-2013 Jean-Philippe Lang */ |
3 | 3 |
4 function checkAll(id, checked) { | 4 function checkAll(id, checked) { |
5 if (checked) { | 5 if (checked) { |
6 $('#'+id).find('input[type=checkbox]').attr('checked', true); | 6 $('#'+id).find('input[type=checkbox]').attr('checked', true); |
7 } else { | 7 } else { |
12 function toggleCheckboxesBySelector(selector) { | 12 function toggleCheckboxesBySelector(selector) { |
13 var all_checked = true; | 13 var all_checked = true; |
14 $(selector).each(function(index) { | 14 $(selector).each(function(index) { |
15 if (!$(this).is(':checked')) { all_checked = false; } | 15 if (!$(this).is(':checked')) { all_checked = false; } |
16 }); | 16 }); |
17 $(selector).attr('checked', !all_checked) | 17 $(selector).attr('checked', !all_checked); |
18 } | 18 } |
19 | 19 |
20 function showAndScrollTo(id, focus) { | 20 function showAndScrollTo(id, focus) { |
21 $('#'+id).show(); | 21 $('#'+id).show(); |
22 if (focus!=null) { | 22 if (focus !== null) { |
23 $('#'+focus).focus(); | 23 $('#'+focus).focus(); |
24 } | 24 } |
25 $('html, body').animate({scrollTop: $('#'+id).offset().top}, 100); | 25 $('html, body').animate({scrollTop: $('#'+id).offset().top}, 100); |
26 } | 26 } |
27 | 27 |
129 filterTable.append(tr); | 129 filterTable.append(tr); |
130 | 130 |
131 select = tr.find('td.operator select'); | 131 select = tr.find('td.operator select'); |
132 for (i=0;i<operators.length;i++){ | 132 for (i=0;i<operators.length;i++){ |
133 var option = $('<option>').val(operators[i]).text(operatorLabels[operators[i]]); | 133 var option = $('<option>').val(operators[i]).text(operatorLabels[operators[i]]); |
134 if (operators[i] == operator) {option.attr('selected', true)}; | 134 if (operators[i] == operator) { option.attr('selected', true); } |
135 select.append(option); | 135 select.append(option); |
136 } | 136 } |
137 select.change(function(){toggleOperator(field)}); | 137 select.change(function(){ toggleOperator(field); }); |
138 | 138 |
139 switch (filterOptions['type']){ | 139 switch (filterOptions['type']){ |
140 case "list": | 140 case "list": |
141 case "list_optional": | 141 case "list_optional": |
142 case "list_status": | 142 case "list_status": |
144 tr.find('td.values').append( | 144 tr.find('td.values').append( |
145 '<span style="display:none;"><select class="value" id="values_'+fieldId+'_1" name="v['+field+'][]"></select>' + | 145 '<span style="display:none;"><select class="value" id="values_'+fieldId+'_1" name="v['+field+'][]"></select>' + |
146 ' <span class="toggle-multiselect"> </span></span>' | 146 ' <span class="toggle-multiselect"> </span></span>' |
147 ); | 147 ); |
148 select = tr.find('td.values select'); | 148 select = tr.find('td.values select'); |
149 if (values.length > 1) {select.attr('multiple', true)}; | 149 if (values.length > 1) { select.attr('multiple', true); } |
150 for (i=0;i<filterValues.length;i++){ | 150 for (i=0;i<filterValues.length;i++){ |
151 var filterValue = filterValues[i]; | 151 var filterValue = filterValues[i]; |
152 var option = $('<option>'); | 152 var option = $('<option>'); |
153 if ($.isArray(filterValue)) { | 153 if ($.isArray(filterValue)) { |
154 option.val(filterValue[1]).text(filterValue[0]); | 154 option.val(filterValue[1]).text(filterValue[0]); |
187 select = tr.find('td.values select'); | 187 select = tr.find('td.values select'); |
188 for (i=0;i<allProjects.length;i++){ | 188 for (i=0;i<allProjects.length;i++){ |
189 var filterValue = allProjects[i]; | 189 var filterValue = allProjects[i]; |
190 var option = $('<option>'); | 190 var option = $('<option>'); |
191 option.val(filterValue[1]).text(filterValue[0]); | 191 option.val(filterValue[1]).text(filterValue[0]); |
192 if (values[0] == filterValue[1]) {option.attr('selected', true)}; | 192 if (values[0] == filterValue[1]) { option.attr('selected', true); } |
193 select.append(option); | 193 select.append(option); |
194 } | 194 } |
195 case "integer": | 195 case "integer": |
196 case "float": | 196 case "float": |
197 tr.find('td.values').append( | 197 tr.find('td.values').append( |
240 var operator = $("#operators_" + fieldId); | 240 var operator = $("#operators_" + fieldId); |
241 switch (operator.val()) { | 241 switch (operator.val()) { |
242 case "!*": | 242 case "!*": |
243 case "*": | 243 case "*": |
244 case "t": | 244 case "t": |
245 case "ld": | |
245 case "w": | 246 case "w": |
247 case "lw": | |
248 case "l2w": | |
249 case "m": | |
250 case "lm": | |
251 case "y": | |
246 case "o": | 252 case "o": |
247 case "c": | 253 case "c": |
248 enableValues(field, []); | 254 enableValues(field, []); |
249 break; | 255 break; |
250 case "><": | 256 case "><": |
282 function submit_query_form(id) { | 288 function submit_query_form(id) { |
283 selectAllOptions("selected_columns"); | 289 selectAllOptions("selected_columns"); |
284 $('#'+id).submit(); | 290 $('#'+id).submit(); |
285 } | 291 } |
286 | 292 |
287 var fileFieldCount = 1; | |
288 function addFileField() { | |
289 var fields = $('#attachments_fields'); | |
290 if (fields.children().length >= 10) return false; | |
291 fileFieldCount++; | |
292 var s = fields.children('span').first().clone(); | |
293 s.children('input.file').attr('name', "attachments[" + fileFieldCount + "][file]").val(''); | |
294 s.children('input.description').attr('name', "attachments[" + fileFieldCount + "][description]").val(''); | |
295 fields.append(s); | |
296 } | |
297 | |
298 function removeFileField(el) { | |
299 var fields = $('#attachments_fields'); | |
300 var s = $(el).parents('span').first(); | |
301 if (fields.children().length > 1) { | |
302 s.remove(); | |
303 } else { | |
304 s.children('input.file').val(''); | |
305 s.children('input.description').val(''); | |
306 } | |
307 } | |
308 | |
309 function checkFileSize(el, maxSize, message) { | |
310 var files = el.files; | |
311 if (files) { | |
312 for (var i=0; i<files.length; i++) { | |
313 if (files[i].size > maxSize) { | |
314 alert(message); | |
315 el.value = ""; | |
316 } | |
317 } | |
318 } | |
319 } | |
320 | |
321 function showTab(name) { | 293 function showTab(name) { |
322 $('div#content .tab-content').hide(); | 294 $('div#content .tab-content').hide(); |
323 $('div.tabs a').removeClass('selected'); | 295 $('div.tabs a').removeClass('selected'); |
324 $('#tab-content-' + name).show(); | 296 $('#tab-content-' + name).show(); |
325 $('#tab-' + name).addClass('selected'); | 297 $('#tab-' + name).addClass('selected'); |
378 } | 350 } |
379 } | 351 } |
380 | 352 |
381 function showModal(id, width) { | 353 function showModal(id, width) { |
382 var el = $('#'+id).first(); | 354 var el = $('#'+id).first(); |
383 if (el.length == 0 || el.is(':visible')) {return;} | 355 if (el.length === 0 || el.is(':visible')) {return;} |
384 var title = el.find('h3.title').text(); | 356 var title = el.find('h3.title').text(); |
385 el.dialog({ | 357 el.dialog({ |
386 width: width, | 358 width: width, |
387 modal: true, | 359 modal: true, |
388 resizable: false, | 360 resizable: false, |
482 type: 'post', | 454 type: 'post', |
483 data: $('#bulk_edit_form').serialize() | 455 data: $('#bulk_edit_form').serialize() |
484 }); | 456 }); |
485 } | 457 } |
486 | 458 |
487 function observeAutocompleteField(fieldId, url) { | 459 function observeAutocompleteField(fieldId, url, options) { |
488 $(document).ready(function() { | 460 $(document).ready(function() { |
489 $('#'+fieldId).autocomplete({ | 461 $('#'+fieldId).autocomplete($.extend({ |
490 source: url, | 462 source: url, |
491 minLength: 2 | 463 minLength: 2, |
492 }); | 464 search: function(){$('#'+fieldId).addClass('ajax-loading');}, |
465 response: function(){$('#'+fieldId).removeClass('ajax-loading');} | |
466 }, options)); | |
467 $('#'+fieldId).addClass('autocomplete'); | |
493 }); | 468 }); |
494 } | 469 } |
495 | 470 |
496 function observeSearchfield(fieldId, targetId, url) { | 471 function observeSearchfield(fieldId, targetId, url) { |
497 $('#'+fieldId).each(function() { | 472 $('#'+fieldId).each(function() { |
498 var $this = $(this); | 473 var $this = $(this); |
474 $this.addClass('autocomplete'); | |
499 $this.attr('data-value-was', $this.val()); | 475 $this.attr('data-value-was', $this.val()); |
500 var check = function() { | 476 var check = function() { |
501 var val = $this.val(); | 477 var val = $this.val(); |
502 if ($this.attr('data-value-was') != val){ | 478 if ($this.attr('data-value-was') != val){ |
503 $this.attr('data-value-was', val); | 479 $this.attr('data-value-was', val); |
504 $.ajax({ | 480 $.ajax({ |
505 url: url, | 481 url: url, |
506 type: 'get', | 482 type: 'get', |
507 data: {q: $this.val()}, | 483 data: {q: $this.val()}, |
508 success: function(data){ $('#'+targetId).html(data); }, | 484 success: function(data){ if(targetId) $('#'+targetId).html(data); }, |
509 beforeSend: function(){ $this.addClass('ajax-loading'); }, | 485 beforeSend: function(){ $this.addClass('ajax-loading'); }, |
510 complete: function(){ $this.removeClass('ajax-loading'); } | 486 complete: function(){ $this.removeClass('ajax-loading'); } |
511 }); | 487 }); |
512 } | 488 } |
513 }; | 489 }; |
568 warn = true; | 544 warn = true; |
569 } | 545 } |
570 }); | 546 }); |
571 if (warn) {return warnLeavingUnsavedMessage;} | 547 if (warn) {return warnLeavingUnsavedMessage;} |
572 }; | 548 }; |
573 }; | 549 } |
574 | 550 |
575 $(document).ready(function(){ | 551 function setupAjaxIndicator() { |
576 $('#ajax-indicator').bind('ajaxSend', function(){ | 552 |
577 if ($('.ajax-loading').length == 0) { | 553 $('#ajax-indicator').bind('ajaxSend', function(event, xhr, settings) { |
554 | |
555 if ($('.ajax-loading').length === 0 && settings.contentType != 'application/octet-stream') { | |
578 $('#ajax-indicator').show(); | 556 $('#ajax-indicator').show(); |
579 } | 557 } |
580 }); | 558 }); |
581 $('#ajax-indicator').bind('ajaxStop', function(){ | 559 |
560 $('#ajax-indicator').bind('ajaxStop', function() { | |
582 $('#ajax-indicator').hide(); | 561 $('#ajax-indicator').hide(); |
583 }); | 562 }); |
584 }); | 563 } |
585 | 564 |
586 function hideOnLoad() { | 565 function hideOnLoad() { |
587 $('.hol').hide(); | 566 $('.hol').hide(); |
588 } | 567 } |
589 | 568 |
599 }); | 578 }); |
600 } | 579 } |
601 }); | 580 }); |
602 } | 581 } |
603 | 582 |
583 function blockEventPropagation(event) { | |
584 event.stopPropagation(); | |
585 event.preventDefault(); | |
586 } | |
587 | |
588 $(document).ready(setupAjaxIndicator); | |
604 $(document).ready(hideOnLoad); | 589 $(document).ready(hideOnLoad); |
605 $(document).ready(addFormObserversForDoubleSubmit); | 590 $(document).ready(addFormObserversForDoubleSubmit); |
606 | 591 |