diff --git a/public/js/ff/transactions/split/edit.js b/public/js/ff/transactions/split/edit.js index a97739b122..0e02b11653 100644 --- a/public/js/ff/transactions/split/edit.js +++ b/public/js/ff/transactions/split/edit.js @@ -16,8 +16,8 @@ var descriptions = {}; $(document).ready(function () { "use strict"; - $('.btn-do-split').click(cloneRow); - $('.remove-current-split').click(removeRow); + $('.btn-do-split').click(cloneDivRow); + $('.remove-current-split').click(removeDivRow); $.getJSON('json/expense-accounts').done(function (data) { destAccounts = data; @@ -67,7 +67,33 @@ $(document).ready(function () { } }); +/** + * New and cool + * @param e + * @returns {boolean} + */ +function removeDivRow(e) { + "use strict"; + var rows = $('div.split_row'); + if (rows.length === 1) { + return false; + } + var row = $(e.target); + var index = row.data('split'); + $('div.split_row[data-split="' + index + '"]').remove(); + + resetDivSplits(); + + return false; + +} + +/** + * OLD + * @param e + * @returns {boolean} + */ function removeRow(e) { "use strict"; var rows = $('table.split-table tbody tr'); @@ -85,6 +111,47 @@ function removeRow(e) { } +/** + * New and cool + * @returns {boolean} + */ +function cloneDivRow() { + "use strict"; + var source = $('div.split_row').last().clone(); + var count = $('div.split_row').length + 1; + source.removeClass('initial-row'); + source.find('.count').text('#' + count); + + source.find('input[name$="][amount]"]').val("").on('input', calculateSum); + if (destAccounts.length > 0) { + source.find('input[name$="destination_account_name]"]').typeahead({source: destAccounts}); + } + + if (destAccounts.length > 0) { + source.find('input[name$="source_account_name]"]').typeahead({source: srcAccounts}); + } + if (categories.length > 0) { + source.find('input[name$="category]"]').typeahead({source: categories}); + } + if (descriptions.length > 0) { + source.find('input[name$="description]"]').typeahead({source: descriptions}); + } + + $('div.split_row_holder').append(source); + + // remove original click things, add them again: + $('.remove-current-split').unbind('click').click(removeRow); + + calculateSum(); + resetDivSplits(); + + return false; +} + +/** + * OLD + * @returns {boolean} + */ function cloneRow() { "use strict"; var source = $('.table.split-table tbody tr').last().clone(); @@ -119,6 +186,100 @@ function cloneRow() { return false; } +/** + * New and hip + */ +function resetDivSplits() { + "use strict"; + // loop rows, reset numbers: + + // update the row split number: + $.each($('div.split_row'), function (i, v) { + var row = $(v); + row.attr('data-split', i); + + // add or remove class with bg thing + if(i % 2 === 0) { + row.removeClass('bg-gray-light'); + } + if(i % 2 === 1) { + row.addClass('bg-gray-light'); + } + + }); + + // loop each remove button, update the index + $.each($('.remove-current-split'), function (i, v) { + var button = $(v); + button.attr('data-split', i); + button.find('i').attr('data-split', i); + + }); + + // loop each indicator (#) and update it: + $.each($('td.count'), function (i, v) { + var cell = $(v); + var index = i + 1; + cell.text('#' + index); + }); + + // loop each possible field. + + // ends with ][description] + $.each($('input[name$="][description]"]'), function (i, v) { + var input = $(v); + input.attr('name', 'transactions[' + i + '][description]'); + }); + // ends with ][destination_account_name] + $.each($('input[name$="][destination_account_name]"]'), function (i, v) { + var input = $(v); + input.attr('name', 'transactions[' + i + '][destination_account_name]'); + }); + // ends with ][source_account_name] + $.each($('input[name$="][source_account_name]"]'), function (i, v) { + var input = $(v); + input.attr('name', 'transactions[' + i + '][source_account_name]'); + }); + // ends with ][amount] + $.each($('input[name$="][amount]"]'), function (i, v) { + var input = $(v); + input.attr('name', 'transactions[' + i + '][amount]'); + }); + + // ends with ][foreign_amount] + $.each($('input[name$="][foreign_amount]"]'), function (i, v) { + var input = $(v); + input.attr('name', 'transactions[' + i + '][foreign_amount]'); + }); + + // ends with ][transaction_currency_id] + $.each($('input[name$="][transaction_currency_id]"]'), function (i, v) { + var input = $(v); + input.attr('name', 'transactions[' + i + '][transaction_currency_id]'); + }); + + // ends with ][foreign_currency_id] + $.each($('input[name$="][foreign_currency_id]"]'), function (i, v) { + var input = $(v); + input.attr('name', 'transactions[' + i + '][foreign_currency_id]'); + }); + + // ends with ][budget_id] + $.each($('select[name$="][budget_id]"]'), function (i, v) { + var input = $(v); + input.attr('name', 'transactions[' + i + '][budget_id]'); + }); + + // ends with ][category] + $.each($('input[name$="][category]"]'), function (i, v) { + var input = $(v); + input.attr('name', 'transactions[' + i + '][category]'); + }); +} + +/** + * OLD + */ function resetSplits() { "use strict"; // loop rows, reset numbers: diff --git a/resources/views/transactions/split/edit.twig b/resources/views/transactions/split/edit.twig index a0420fe4c8..a1f9f915dc 100644 --- a/resources/views/transactions/split/edit.twig +++ b/resources/views/transactions/split/edit.twig @@ -30,7 +30,7 @@ {% endif %}
-
+

{{ 'transaction_data'|_ }}

@@ -65,7 +65,7 @@
-
+

{{ 'optional_field_meta_data'|_ }}

@@ -185,105 +185,108 @@

{{ 'splits'|_ }}

- - - - - - - +
+
+
 
+
{{ trans('list.split_number') }}
+
{{ trans('list.description') }}
{# withdrawal and deposit have a destination. #} {% if preFilled.what == 'withdrawal' %} -
+
{{ trans('list.destination') }}
{% endif %} - - {# DEPOSIT HAS A SOURCE #} + {# Deposit has a source #} {% if preFilled.what == 'deposit' %} - +
{{ trans('list.source') }}
+ {% endif %} +
{{ trans('list.amount') }}
+ {% if transaction.foreign_amount != null %} +
 
{% endif %} - - - {# only withdrawal has budget #} {% if preFilled.what == 'withdrawal' %} - +
{{ trans('list.budget') }}
+ {% endif %} +
{{ trans('list.category') }}
+ + + {% for index, transaction in preFilled.transactions %} +
+ {# button #} +
+ + +
+ + {# index #} +
#{{ loop.index }}
+ + {# description #} +
+ +
+ + {# destination for withdrawals: #} + {% if preFilled.what == 'withdrawal' %} +
+ +
{% endif %} -
- - - - {% for index, transaction in preFilled.transactions %} - - - - + {# source for deposits #} + {% if preFilled.what == 'deposit' %} +
+ +
+ {% endif %} - - {% if preFilled.what == 'withdrawal' %} - - {% endif %} + {# amount#} +
+
+
{{ transaction.transaction_currency_symbol }}
+ +
+ +
- {# deposit has several source names #} - {% if preFilled.what == 'deposit' %} - - {% endif %} - - {# two fields for amount #} - - {# foreign amount #} - + + + {% endif %} - {% if preFilled.what == 'withdrawal' %} - - {% endif %} - - - {% endfor %} - -
 {{ trans('list.split_number') }}{{ trans('list.description') }}{{ trans('list.destination') }}{{ trans('list.source') }}{{ trans('list.amount') }}{{ trans('list.budget') }}{{ trans('list.category') }}
#{{ loop.index }} - - - - - - + {# foreign amount #} + {% if transaction.foreign_amount != null %} +
-
{{ transaction.transaction_currency_symbol }}
- {{ transaction.foreign_currency_symbol }}
+
- -
- {% if transaction.foreign_amount != null %} -
-
{{ transaction.foreign_currency_symbol }}
- -
- - {% endif %} -
- - - -
+ {# budget #} + {% if preFilled.what == 'withdrawal' %} +
+ +
+ {% endif %} + + {# category #} +
+ +
+
+ {% endfor %} +


{{ 'add_another_split'|_ }}