Skip to content

Commit 75fc836

Browse files
committed
splitBill: both individual and total item prices
1 parent c1c3a01 commit 75fc836

1 file changed

Lines changed: 16 additions & 5 deletions

File tree

SplitBill/splitBill.html

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -306,6 +306,12 @@ <h3>Persons:</h3>
306306
fill(input);
307307
}
308308

309+
function changeItemPriceTotal(input, itemId) {
310+
const item = data.items.find(byId(itemId));
311+
item.price = parseFloat(input.value) / (item.amount == 0 ? 1 : item.amount);
312+
fill(input);
313+
}
314+
309315
function changeItemAmount(input, itemId) {
310316
data.items.find(byId(itemId)).amount = parseFloat(input.value);
311317
fill(input);
@@ -337,7 +343,7 @@ <h3>Persons:</h3>
337343

338344
function clearItem(itemId) {
339345
data.persons.forEach(person => {
340-
person.amounts[itemId] = 0
346+
person.amounts[itemId] = 0;
341347
});
342348
fill();
343349
}
@@ -384,11 +390,15 @@ <h3>Persons:</h3>
384390
document.getElementById("items").innerHTML = data.items.map(item => `<div id="id_${item.id}" class="block">
385391
<div class="flex">
386392
<input class="itemName selectable" type="text" value="" oninput="changeItemName(this, ${item.id})" onkeydown="selectNext(event, this)" />
387-
<span>Price:</span>
393+
<button onclick="deleteItem(${item.id})">X</button>
394+
</div>
395+
<div class="flex">
396+
<span>Price(1):</span>
388397
<input class="itemPrice selectable" type="number" oninput="changeItemPrice(this, ${item.id})" onkeydown="selectNext(event, this)" min="0" step="any" value="" />
389-
<span>Amount:</span>
398+
<span>Qty:</span>
390399
<input class="itemAmount selectable" type="number" oninput="changeItemAmount(this, ${item.id})" onkeydown="selectNext(event, this)" min="0" step="any" value="" />
391-
<button onclick="deleteItem(${item.id})">X</button>
400+
<span>Price:</span>
401+
<input class="itemPriceTotal selectable" type="number" oninput="changeItemPriceTotal(this, ${item.id})" onkeydown="selectNext(event, this)" min="0" step="any" value="" />
392402
</div>
393403
<hr>
394404
${data.persons.map(person=>`<div id="id_${item.id}_${person.id}" class="flex">
@@ -443,14 +453,15 @@ <h3>Persons:</h3>
443453
function fill(exclude) {
444454
// set data
445455
function set(element, value) {
446-
if (element != exclude) element.value = value;
456+
if (element != exclude) element.value = typeof value !== "number" ? value : Number(value.toFixed(6));
447457
}
448458

449459
data.items.forEach(item => {
450460
let parent = document.querySelector(`#id_${item.id}`);
451461
set(parent.querySelector(".itemName"), item.name);
452462
set(parent.querySelector(".itemPrice"), item.price);
453463
set(parent.querySelector(".itemAmount"), item.amount);
464+
set(parent.querySelector(".itemPriceTotal"), item.price * item.amount);
454465
data.persons.forEach(person => {
455466
let child = parent.querySelector(`#id_${item.id}_${person.id}`);
456467
set(child.querySelector(".personName"), person.name);

0 commit comments

Comments
 (0)