-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathrenderer.js
82 lines (74 loc) · 3.01 KB
/
renderer.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
document.addEventListener("DOMContentLoaded", () => {
const nameInput = document.getElementById("name-input");
const amountInput = document.getElementById("amount-input");
const typeInput = document.getElementById("type-input");
const addBillButton = document.getElementById("add-bill");
const billList = document.getElementById("bill-list");
const totalIncome = document.getElementById("total-income");
const totalExpenses = document.getElementById("total-expenses");
const netBalance = document.getElementById("net-balance");
// Load bills on startup
loadBills();
// Add bill
addBillButton.addEventListener("click", async () => {
const name = nameInput.value.trim();
const amount = parseFloat(amountInput.value.trim());
const type = typeInput.value;
if (name && !isNaN(amount)) {
await window.electronAPI.addBill(name, amount, type);
nameInput.value = "";
amountInput.value = "";
loadBills();
} else {
alert("Please enter valid name and amount.");
}
});
// Load bills and calculate totals
async function loadBills() {
const bills = await window.electronAPI.getBills();
billList.innerHTML = "";
let totalIncomeAmount = 0;
let totalExpensesAmount = 0;
bills.forEach((bill) => {
const li = document.createElement("li");
li.innerHTML = `
<span>${bill.name} - $${bill.amount.toFixed(2)} (${bill.type})</span>
<div>
<button class="edit-btn" data-id="${bill.id}">Edit</button>
<button class="delete-btn" data-id="${bill.id}">Delete</button>
</div>
`;
billList.appendChild(li);
if (bill.type === "income") {
totalIncomeAmount += bill.amount;
} else {
totalExpensesAmount += bill.amount;
}
});
// Display totals
totalIncome.textContent = totalIncomeAmount.toFixed(2);
totalExpenses.textContent = totalExpensesAmount.toFixed(2);
netBalance.textContent = (totalIncomeAmount - totalExpensesAmount).toFixed(2);
// Add event listeners for edit and delete buttons
document.querySelectorAll(".edit-btn").forEach((button) => {
button.addEventListener("click", async (event) => {
const id = Number(event.target.getAttribute("data-id"));
const newName = prompt("Enter new name:");
const newAmount = parseFloat(prompt("Enter new amount:"));
if (newName && !isNaN(newAmount)) {
await window.electronAPI.editBill(id, newName, newAmount);
loadBills();
} else {
alert("Please enter valid name and amount.");
}
});
});
document.querySelectorAll(".delete-btn").forEach((button) => {
button.addEventListener("click", async (event) => {
const id = Number(event.target.getAttribute("data-id"));
await window.electronAPI.deleteBill(id);
loadBills();
});
});
}
});