Files
redmine_contracts/assets/javascripts/contracts.js

143 lines
4.5 KiB
JavaScript

jQuery(function($) {
$("#ajax-indicator").ajaxStart(function(){ $(this).show(); });
$("#ajax-indicator").ajaxStop(function(){ $(this).hide(); });
var right_align = $('#contract-terms .finance tr td:nth-child ~ td, .c_overview table.right tr td:nth-child ~ td, #deliverables table tr.click td:nth-child(5) ~ td, .deliverable_finance_table tr.aright td:nth-child ~ td');
if (right_align.length > 0) {
right_align.after().css("text-align", "right");
}
$("#deliverables table tbody tr td:contains('---')").css("text-align", "center");
$(".texpand").jExpand();
$(".texpand").find("tr.even").next('tr:first').addClass("even");
$(window).resize(function() {
});
$('#expand_terms').click( function(){
$(this).next().slideToggle();
$(this).toggleClass('alt');
var new_height = $('#contract-terms .info').height() - $('#contract-terms .finance').height() + 30;
$('#contract-terms .stretch').css('height', new_height);
});
showDeliverableTotal = function() {
$('.deliverable_total_input').show();
},
hideDeliverableTotal = function() {
$('.deliverable_total_input').
children('input').val('').end().
hide();
},
showDeliverableFrequency = function() {
$('#deliverable_frequency').show();
},
hideDeliverableFrequency = function() {
$('#deliverable_frequency').hide();
},
toggleSpecificDeliverableFields = function(form) {
var deliverableType = form.find('.type').val();
if (deliverableType == 'FixedDeliverable') {
showDeliverableTotal();
hideDeliverableFrequency();
$('#retainer-finances-message').hide();
} else if(deliverableType == "HourlyDeliverable") {
hideDeliverableTotal();
hideDeliverableFrequency();
$('#retainer-finances-message').hide();
} else if(deliverableType == "RetainerDeliverable") {
hideDeliverableTotal();
showDeliverableFrequency();
if ($('form.deliverable #deliverable_stored_id').val() == '') {
$('#retainer-finances-message').show();
} else {
$('#retainer-finances-message').hide();
}
}
},
showDeliverableAddButton = function() {
$('.add-labor a.add').hide().last().show();
},
addNewDeliverableFinance = function(financeType) {
var t = $('#labor-budget-template').tmpl({});
var countOfExisting = $("#deliverable-labor tbody tr").size();
var recordLocation = countOfExisting + 1; // increments the Rails [n] placeholder
var newContent = t.html().replace(/\[0\]/g, "[" + recordLocation + "]");
$("<tr>" + newContent + '</tr>').appendTo('#deliverable-labor tbody');
showDeliverableAddButton();
},
showDeliverableAddButton();
toggleSpecificDeliverableFields($('form.deliverable'));
$('select#deliverable_type').change(function() {
toggleSpecificDeliverableFields($('form.deliverable'));
});
$('form.deliverable').submit(function() {
var deliverableType = $('form.deliverable').find('.type').val();
if (deliverableType == 'RetainerDeliverable') {
if ($('form.deliverable .start-date[value!=""]').length == 0) {
return confirm(i18nStartDateEmpty);
}
if ($('form.deliverable .end-date[value!=""]').length == 0) {
return confirm(i18nEndDateEmpty);
}
if ($('form.deliverable #deliverable_stored_id').val() != '') {
if ($('form.deliverable .start-date').val() != $('#deliverable_stored_start_date').val()) {
return confirm(i18nChangedPeriodMessage);
}
if ($('form.deliverable .end-date').val() != $('#deliverable_stored_end_date').val()) {
return confirm(i18nChangedPeriodMessage);
}
}
}
});
$('select.retainer_period_change').live('change', function() {
var deliverable_url = $(this).closest('form').attr('action');
$(this).closest('tr').load(deliverable_url, this.form.serialize());
});
});
/* Jquery Table Expander Plugin */
(function($){
$.fn.jExpand = function(){
var element = this;
$(element).find("tr.ign").hide();
$(element).find("tr.click").click(function() {
$(this).toggleClass("noborder");
$(this).next("tr").toggle();
$(this).find('.arrow').toggleClass("alt");
var box_height = $(this).next().find('.expanded').height();
var table_height = $(this).next().find('.finance table').height();
if(box_height-table_height > 0){
$(this).next().find('.finance table .fill td').css("padding-top", box_height-table_height+2);
}
});
}
})(jQuery);