const $ = require('jquery');
const api = require('../utils/api');
const utils = require('../utils');
const chart = require('./chart_and_messages');
const list_row = require('../ui/list_row');
const ui = require('../ui/common');
const modal = require('../utils/modal');
// We don't want to hit the API any time we are loading new data
let cached_accounts = {};
api.on_submit("/budget/account", [
$("#create-account"), $("#edit-account")
], {
value: x => Math.abs(utils.round(parseFloat(x), 2))
}, [
["balance", "Account balance must be a number", value => !isNaN(value)],
], async function () {
await chart.refresh();
});
$("#delete-account").on("click", async function () {
const id = $("#edit-account").find('[name="id"]').val();
await api.delete('/budget/recurring_transaction/' + id);
ui.show_banner({
message: `Account ${id} deleted`
});
modal.close();
await chart.refresh();
await populate_accounts_table();
});
populate_accounts_table().then(populate_account_balance_transfers_table);
async function populate_accounts_table() {
$("#accounts-list").empty();
const {
accounts
} = await api.get("/budget/accounts");
for (const account of accounts) {
cached_accounts[account.id] = {
name: account.name,
};
list_row.create("accounts", {
title: `${account.name}:`,
text: `Current Balance $${account.balance.toFixed(2)}`
}).on('click', function () {
ui.prefill_inputs("#edit-account", account);
modal.create('edit-account-modal');
});
}
}
async function populate_account_balance_transfers_table() {
$("#account-balance-transfers-list").empty();
const {
transfers
} = await api.get("/budget/accounts/transfers");
for (const transfer of transfers) {
const icon = transfer.from_account ? 'arrow-right' : (transfer.value < 0 ? 'arrow-down' : 'arrow-up');
let text = `$${Math.abs(transfer.value).toFixed(2)} `
if (transfer.from_account) {
text += `from ${cached_accounts[transfer.from_account].name} to ${cached_accounts[transfer.account].name}`;
} else {
text += `${transfer.value < 0 ? 'Out of' : 'Into'} ${cached_accounts[transfer.account].name}`
}
text += ` on ${transfer.date}`;
list_row.create("account-balance-transfers", {
icon,
text
});
}
}