/* Dependencies: BANK_ACCOUNT['list_url'] BANK_ACCOUNT['edit_id_prefix'] BANK_ACCOUNT['delete_id_prefix'] BANK_ACCOUNT['bank_id_prefix'] */ // edit $(document).ready(function() { var bank_form = $('#bank-account-edit-form'); bank_form.dialog({ modal: true, autoOpen: false }); $('button[name=close-form]', bank_form).click(function() { bank_form.dialog('close'); return false; }); setup_bank_account_edit_links(bank_form); setup_bank_account_add_link(bank_form); var bank_delete_form = $('#bank-account-delete-form'); bank_delete_form.dialog({ modal: true, autoOpen: false }); $('button[name=close-form]', bank_delete_form).click(function() { bank_delete_form.dialog('close'); return false; }); setup_bank_account_delete_links(bank_delete_form); }); function setup_bank_account_edit_links(form) { $('table#accounts td a[id^="account_edit_link_"]').each(function() { $(this).click(function() { var link = $(this); var form_action = link.attr('href') + 'ajax/'; // url to post form form.attr('action', form_action); // update form action form.dialog({title: link.attr('title')}); form.clearForm(); clear_form_errors(form); var get_url = link.attr('href').replace('edit/', 'get/ajax/'); // url to fetch account fields var obj_values = fetch_data(get_url); update_form_fields(form, obj_values); form.one('dialogbeforeclose', update_bank_acoounts_list); form.dialog('open'); return false; }); }); } function setup_bank_account_delete_links(form) { $('table#accounts td a[id^="account_delete_link_"]').each(function() { $(this).click(function() { var link = $(this); var form_action = link.attr('href') + 'ajax/'; // url to post form form.attr('action', form_action); // update form action //form.dialog({title: link.attr('title')}); form.clearForm(); clear_form_errors(form); var get_url = link.attr('href').replace('delete/', 'get/ajax/'); // url to fetch account fields var obj_values = fetch_data(get_url); $('span.bank-account', form).html(obj_values.account); form.one('dialogbeforeclose', update_bank_acoounts_list); form.dialog('open'); return false; }); }); } function setup_bank_account_add_link(form) { $('table#accounts td a#account_add_link').each(function() { $(this).click(function() { var link = $(this); var form_action = link.attr('href') + 'ajax/'; // url to post form form.attr('action', form_action); // update form action form.dialog({title: link.attr('title')}); form.clearForm(); clear_form_errors(form); form.one('dialogbeforeclose', update_bank_acoounts_list); form.dialog('open'); return false; }); }); } function update_bank_acoounts_list(event, ui) { var accounts = fetch_data(BANK_ACCOUNT['list_url']); var table = $('table#accounts'); var tbl_rows = $('tr[class="account"]', table); // TODO > tbody ??? var tbl_rows_num = tbl_rows.length; tbl_rows.hide(); // hide all rows for (var i in accounts) { if (accounts.hasOwnProperty(i)) { var account = accounts[i]; var tbl_row = null; var was_cloned = false; if (i < tbl_rows_num) { // fill existing row tbl_row = tbl_rows[i]; } else { // add extra row var last_row = $('tr[class="account"]', table).filter(':last'); tbl_row = last_row.clone(true).insertAfter(last_row); was_cloned = true; } // update edit link var edit_link = $('a[id^="' + BANK_ACCOUNT['edit_id_prefix'] + '"]', tbl_row); edit_link.attr('id', BANK_ACCOUNT['edit_id_prefix'] + account['pk']); edit_link.attr('href', account['edit_url']); edit_link.text(account['account']); // update delete link var delete_link = $('a[id^="' + BANK_ACCOUNT['delete_id_prefix'] + '"]', tbl_row); delete_link.attr('id', BANK_ACCOUNT['delete_id_prefix'] + account['pk']); delete_link.attr('href', account['delete_url']); // update bank name var bank = $('span[id^="' + BANK_ACCOUNT['bank_id_prefix'] + '"]', tbl_row); bank.attr('id', BANK_ACCOUNT['bank_id_prefix'] + account['pk']); bank.text(account['name']); // clear account type if needed if (was_cloned && i >= 2) $('td[class="account-type"]', tbl_row).text(''); $(tbl_row).show(); // show that row } } }