mirror of
				https://github.com/firefly-iii/firefly-iii.git
				synced 2025-10-31 18:54:58 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			250 lines
		
	
	
		
			8.0 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			250 lines
		
	
	
		
			8.0 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| /* globals $, budgeted:true, currencySymbol, budgetIncomeTotal ,budgetedMuch, budgetedPercentage, token, budgetID, repetitionID, spent, googleLineChart */
 | |
| 
 | |
| function drawSpentBar() {
 | |
|     "use strict";
 | |
|     if ($('.spentBar').length > 0) {
 | |
|         var overspent = spent > budgeted;
 | |
|         var pct;
 | |
| 
 | |
|         if (overspent) {
 | |
|             // draw overspent bar
 | |
|             pct = (budgeted / spent) * 100;
 | |
|             $('.spentBar .progress-bar-warning').css('width', pct + '%');
 | |
|             $('.spentBar .progress-bar-danger').css('width', (100 - pct) + '%');
 | |
|         } else {
 | |
|             // draw normal bar:
 | |
|             pct = (spent / budgeted) * 100;
 | |
|             $('.spentBar .progress-bar-info').css('width', pct + '%');
 | |
|         }
 | |
|     }
 | |
| }
 | |
| 
 | |
| function drawBudgetedBar() {
 | |
|     "use strict";
 | |
| 
 | |
|     if ($('.budgetedBar').length > 0) {
 | |
|         var budgetedMuch = budgeted > budgetIncomeTotal;
 | |
| 
 | |
|         // recalculate percentage:
 | |
| 
 | |
|         var pct;
 | |
|         if (budgetedMuch) {
 | |
|             // budgeted too much.
 | |
|             pct = (budgetIncomeTotal / budgeted) * 100;
 | |
|             $('.budgetedBar .progress-bar-warning').css('width', pct + '%');
 | |
|             $('.budgetedBar .progress-bar-danger').css('width', (100 - pct) + '%');
 | |
|             $('.budgetedBar .progress-bar-info').css('width', 0);
 | |
|         } else {
 | |
|             pct = (budgeted / budgetIncomeTotal) * 100;
 | |
|             $('.budgetedBar .progress-bar-warning').css('width', 0);
 | |
|             $('.budgetedBar .progress-bar-danger').css('width', 0);
 | |
|             $('.budgetedBar .progress-bar-info').css('width', pct + '%');
 | |
|         }
 | |
| 
 | |
|         $('#budgetedAmount').html(currencySymbol + ' ' + budgeted.toFixed(2));
 | |
|     }
 | |
| }
 | |
| 
 | |
| function updateBudgetedAmounts(e) {
 | |
|     "use strict";
 | |
|     var target = $(e.target);
 | |
|     var id = target.data('id');
 | |
|     var value = target.val();
 | |
|     var original = target.data('original');
 | |
|     var difference = value - original;
 | |
|     if (difference !== 0) {
 | |
|         // add difference to 'budgeted' var
 | |
|         budgeted = budgeted + difference;
 | |
| 
 | |
|         // update original:
 | |
|         target.data('original', value);
 | |
|         // run drawBudgetedBar() again:
 | |
|         drawBudgetedBar();
 | |
| 
 | |
|         // send a post to Firefly to update the amount:
 | |
|         $.post('budgets/amount/' + id, {amount: value, _token: token}).success(function (data) {
 | |
|             // update the link if relevant:
 | |
|             if (data.repetition > 0) {
 | |
|                 $('.budget-link[data-id="' + id + '"]').attr('href', 'budgets/show/' + id + '/' + data.repetition);
 | |
|             } else {
 | |
|                 $('.budget-link[data-id="' + id + '"]').attr('href', 'budgets/show/' + id);
 | |
|             }
 | |
|         });
 | |
|     }
 | |
| 
 | |
| 
 | |
|     console.log('Budget id is ' + id);
 | |
|     console.log('Difference = ' + (value - original ));
 | |
| 
 | |
| }
 | |
| 
 | |
| $(function () {
 | |
|     "use strict";
 | |
| 
 | |
|     $('.updateIncome').on('click', updateIncome);
 | |
| 
 | |
|     /*
 | |
|      On start, fill the "spent"-bar using the content from the page.
 | |
|      */
 | |
|     drawSpentBar();
 | |
|     drawBudgetedBar();
 | |
| 
 | |
|     /*
 | |
|      When the input changes, update the percentages for the budgeted bar:
 | |
|      */
 | |
|     $('input[type="number"]').on('input', updateBudgetedAmounts);
 | |
| 
 | |
| 
 | |
|     //updateRanges();
 | |
|     //$('input[type="range"]').on('input', updateSingleRange);
 | |
|     //$('input[type="number"]').on('input', updateSingleRange);
 | |
| 
 | |
| 
 | |
|     /*
 | |
|      Draw the charts, if necessary:
 | |
|      */
 | |
|     if (typeof budgetID !== 'undefined' && typeof repetitionID === 'undefined') {
 | |
|         googleColumnChart('chart/budget/' + budgetID, 'budgetOverview');
 | |
|     }
 | |
|     if (typeof budgetID !== 'undefined' && typeof repetitionID !== 'undefined') {
 | |
|         googleLineChart('chart/budget/' + budgetID + '/' + repetitionID, 'budgetOverview');
 | |
|     }
 | |
| 
 | |
| });
 | |
| 
 | |
| 
 | |
| //function updateSingleRange(e) {
 | |
| //    "use strict";
 | |
| //    // get some values:
 | |
| //    var input = $(e.target);
 | |
| //    var id = input.data('id');
 | |
| //    var value = parseInt(input.val());
 | |
| //    var spent = parseFloat($('#spent-' + id).data('value'));
 | |
| //
 | |
| //    // update small display:
 | |
| //    if (value > 0) {
 | |
| //        // show the input:
 | |
| //        $('#budget-info-' + id + ' span').show();
 | |
| //        $('#budget-info-' + id + ' input').show();
 | |
| //
 | |
| //        // update the text:
 | |
| //        $('#budget-description-' + id).text('Budgeted: ');
 | |
| //    } else {
 | |
| //        // hide the input:
 | |
| //        $('#budget-info-' + id + ' span').hide();
 | |
| //        $('#budget-info-' + id + ' input').hide();
 | |
| //
 | |
| //        // update the text:
 | |
| //        $('#budget-description-' + id).html('<em>No budget</em>');
 | |
| //    }
 | |
| //
 | |
| //    // update the range display text:
 | |
| //    $('#budget-range-display-' + id).text('\u20AC ' + value.toFixed(2));
 | |
| //
 | |
| //    // send a post to Firefly to update the amount:
 | |
| //    $.post('budgets/amount/' + id, {amount: value, _token: token}).success(function (data) {
 | |
| //        // update the link if relevant:
 | |
| //        $('#budget-link-' + id).attr('href', 'budgets/show/' + id + '/' + data.repetition);
 | |
| //    });
 | |
| //    if (input.attr('type') === 'number') {
 | |
| //        // update the range-input:
 | |
| //        $('#budget-range-' + id).val(value);
 | |
| //    } else {
 | |
| //        // update the number-input:
 | |
| //        $('#budget-info-' + id + ' input').val(value);
 | |
| //    }
 | |
| //
 | |
| //    // update or hide the bar, whichever is necessary.
 | |
| //    updateTotal();
 | |
| //    return value;
 | |
| //}
 | |
| //
 | |
| //function updateTotal() {
 | |
| //    "use strict";
 | |
| //    var sum = 0;
 | |
| //    $('input[type="range"]').each(function (i, v) {
 | |
| //        // get some values:
 | |
| //        sum += parseInt($(v).val());
 | |
| //    });
 | |
| //
 | |
| //    /**
 | |
| //     * Update total sum:
 | |
| //     */
 | |
| //    var totalAmount = parseInt($('#totalAmount').data('value'));
 | |
| //    var pct;
 | |
| //    if (sum <= totalAmount) {
 | |
| //        pct = sum / totalAmount * 100;
 | |
| //        $('#progress-bar-default').css('width', pct + '%');
 | |
| //        $('#progress-bar-warning').css('width', '0');
 | |
| //        $('#progress-bar-danger').css('width', '0');
 | |
| //        $('#budgetedAmount').text('\u20AC ' + sum.toFixed(2)).addClass('text-success').removeClass('text-danger');
 | |
| //    } else {
 | |
| //        // we gaan er X overheen,
 | |
| //
 | |
| //        pct = totalAmount / sum * 100;
 | |
| //        var danger = 100 - pct;
 | |
| //        var err = 100 - danger;
 | |
| //        $('#progress-bar-default').css('width', 0);
 | |
| //        $('#progress-bar-warning').css('width', err + '%');
 | |
| //        $('#progress-bar-danger').css('width', danger + '%');
 | |
| //        $('#budgetedAmount').text('\u20AC ' + sum.toFixed(2)).addClass('text-danger').removeClass('text-success');
 | |
| //    }
 | |
| //
 | |
| //}
 | |
| //
 | |
| function updateIncome(e) {
 | |
|     "use strict";
 | |
|     $('#defaultModal').empty().load('budgets/income', function () {
 | |
|         $('#defaultModal').modal('show');
 | |
|     });
 | |
| 
 | |
|     return false;
 | |
| }
 | |
| //
 | |
| //function updateRanges() {
 | |
| //    "use strict";
 | |
| //
 | |
| //
 | |
| //    var sum = 0;
 | |
| //    $('input[type="range"]').each(function (i, v) {
 | |
| //        // get some values:
 | |
| //        var input = $(v);
 | |
| //        var id = input.data('id');
 | |
| //        var value = parseInt(input.val());
 | |
| //
 | |
| //        // calculate sum:
 | |
| //        sum += value;
 | |
| //
 | |
| //        // update small display:
 | |
| //        $('#budget-range-display-' + id).text('\u20AC ' + value.toFixed(2));
 | |
| //
 | |
| //        // send a post to Firefly to update the amount:
 | |
| //        $.post('budgets/amount/' + id, {amount: value, _token: token});
 | |
| //
 | |
| //    });
 | |
| //
 | |
| //    /**
 | |
| //     * Update total sum:
 | |
| //     */
 | |
| //    var totalAmount = parseInt($('#totalAmount').data('value'));
 | |
| //    var pct;
 | |
| //    if (sum <= totalAmount) {
 | |
| //        pct = sum / totalAmount * 100;
 | |
| //        $('#progress-bar-default').css('width', pct + '%');
 | |
| //        $('#progress-bar-warning').css('width', '0');
 | |
| //        $('#progress-bar-danger').css('width', '0');
 | |
| //        $('#budgetedAmount').text('\u20AC ' + sum.toFixed(2)).addClass('text-success').removeClass('text-danger');
 | |
| //    } else {
 | |
| //        // we gaan er X overheen,
 | |
| //
 | |
| //        pct = totalAmount / sum * 100;
 | |
| //        var danger = 100 - pct;
 | |
| //        var err = 100 - danger;
 | |
| //        $('#progress-bar-default').css('width', 0);
 | |
| //        $('#progress-bar-warning').css('width', err + '%');
 | |
| //        $('#progress-bar-danger').css('width', danger + '%');
 | |
| //        $('#budgetedAmount').text('\u20AC ' + sum.toFixed(2)).addClass('text-danger').removeClass('text-success');
 | |
| //    }
 | |
| //
 | |
| //
 | |
| //}
 |