import {fill_chart} from "./chart_functions.js"; import {register_dropdowns} from "./dropdowns.js"; import {open_new_transaction_pane, close_new_transaction_pane} from "./new_transactions.js"; function debounce(func, delay) { let timeoutId; return function (...args) { clearTimeout(timeoutId); timeoutId = setTimeout(() => { func.apply(this, args); }, delay); }; } /* * Change highlighted navbar element * @param {MouseEvent} */ function switch_nav(event) { console.log(`It is a: ${event}`); var active_anchor = document.querySelector("nav a.active"); active_anchor.classList.remove("active"); var clicked = event.target; clicked.classList.add("active"); } /** @type {boolean} */ var drafts_is_open = false; /* * toggle the new transaction pane */ function toggle_drafts() { if (drafts_is_open) { close_new_transaction_pane(); drafts_is_open = false; } else { open_new_transaction_pane(); drafts_is_open = true; } } const open_drafts = debounce(toggle_drafts); function register_nav_links() { var navAnchors = document.querySelectorAll("nav a"); navAnchors.forEach(function (a_el) { a_el.removeEventListener("click", switch_nav); a_el.addEventListener("click", switch_nav); }); } function register_handlers() { register_nav_links(); //fill_charts(); register_dropdowns(); document.querySelector("#open-draft").addEventListener("click", open_drafts); close_new_transaction_pane(); } function load_in_table() { var rows = Array.from(document.querySelectorAll(".row_awaiting_processing")); rows.sort((a, b) => b.dataset.rcntTransactionRowPos - a.dataset.rcntTransactionRowPos); const processElement = (element, index) => { element.classList.remove('row_awaiting_processing'); setTimeout(() => { if (index < rows.length - 1) { processElement(rows[index + 1], index + 1); } }, 25); }; processElement(rows[0], 0); } const trigger_table_animation = debounce(load_in_table, 100); const trigger_reset_handlers = debounce(register_handlers, 200); export {trigger_reset_handlers, trigger_table_animation, fill_chart};