Repository navigation
Expand file tree
/
Copy pathscript.js
More file actions
99 lines (82 loc) · 3 KB
/
Copy pathscript.js
File metadata and controls
99 lines (82 loc) · 3 KB
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
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
const balance = document.querySelector("#balance");
const inc_amt = document.querySelector("#inc-amt");
const exp_amt = document.querySelector("#exp-amt");
const trans = document.querySelector("#trans");
const form = document.querySelector("#form");
const description = document.querySelector("#desc");
const amount = document.querySelector("#amount");
/*
const dummyData = [
{ id: 1, description: "Flower", amount: -20},
{ id: 2, description: "Salary", amount: 35000},
{ id: 3, description: "Book", amount: 10},
{ id: 4, description: "Camera", amount: -150},
{ id: 5, description: "Pertrol", amount: -250},
];
let transactions = dummyData
*/
const localStorgeTrans=JSON.parse(localStorage.getItem("trans"));
let transactions = localStorage.getItem("trans")!==null?localStorgeTrans:[];
function loadTransactionDetails(transaction) {
const sign = transaction.amount < 0 ? "-":"+";
const item = document.createElement("li");
item.classList.add(transaction.amount< 0 ? "exp" : "inc");
item.innerHTML= `
${transaction.description}
<span>${sign} ${Math.abs(transaction.amount)}</span>
<button class="btn-del" onclick="removeTrans(${transaction.id})">x</button>
`;
trans.appendChild(item);
//console.log(transaction);
}
function removeTrans(id) {
if(confirm("Are you sure you want to delete Transaction?")) {
transactions=transactions.filter((transaction) => transaction.id != id);
config();
updateLocalStorage();
}else{
return;
}
}
function updateAmount(){
const amounts = transactions.map((transaction)=>transaction.amount);
const total = amounts.reduce((acc,item)=>(acc+=item),0).toFixed(2);
balance.innerHTML=`₹ ${total}`;
const income = amounts.filter((item) => item > 0).reduce((acc,item) => (acc+=item), 0).toFixed(2);
inc_amt.innerHTML=`₹ ${income}`;
const expense = amounts.filter((item) => item < 0).reduce((acc,item) => (acc+=item), 0).toFixed(2);
exp_amt.innerHTML=`₹ ${Math.abs(expense)}`;
}
function config() {
trans.innerHTML = "";
transactions.forEach(loadTransactionDetails);
updateAmount();
}
function addTransaction(e) {
e.preventDefault();
if(description.value.trim()==""||amount.value.trim()==""){
alert("please Enter Description and Amount");
}else{
const transaction={
id: uniqueId(),
description:description.value,
amount:+amount.value,
};
transactions.push(transaction);
loadTransactionDetails(transaction);
description.value = "";
amount.value = "";
updateAmount();
updateLocalStorage();
}
}
function uniqueId(){
return Math.floor(Math.random() * 100000000);
}
form.addEventListener("submit",addTransaction);
window.addEventListener("load",function() {
config();
});
function updateLocalStorage(){
localStorage.setItem("trans",JSON.stringify(transactions));
}