Hi, I’ve the following code and everything is working for this well. But when I change the dropdown value then the sum of arro(arr) function repeats the double value. Could anyone helps me out?
import wixData from 'wix-data';
import wixUsers from 'wix-users';
import wixSearch from 'wix-search';
import { local } from 'wix-storage';
import wixWindow from 'wix-window';
$w.onReady(() => {
var arr = [];
interestsum(arr);
$w("#totalsumdisplay").html = "<p style='font-size: 25px; font-style: avenir; text-align: right; color: black;'>Calculating...</p>";
$w('#dataset1').onReady(() => {
$w("#repeater1").onItemReady(($item, itemData, index) => {
mysum2();
var getting = parseFloat($item("#text19").text);
if ($item("#text20").text === "Debit") {
var value = (-1 * getting);
$item("#text19").html = "<p style='font-size: 18px; font-style: avenir; text-align: right; color: red;'>" + value.toLocaleString('en-IN', {
maximumFractionDigits: 2,
style: 'currency',
currency: 'INR'
}); + "</p>";
} else {
var value = getting;
$item("#text19").html = "<p style='font-size: 18px; font-style: avenir; text-align: right; color: green;'>" + value.toLocaleString('en-IN', {
maximumFractionDigits: 2,
style: 'currency',
currency: 'INR'
}); + "</p>";
}
})
})
$w('#dropdown1').onChange(() => {
//$w('#dataset1').setFilter(wixData.filter().eq("_owner", wixUsers.currentUser.id).eq("expenseFor", $w('#dropdown1').value));
arro(arr);
mysum2();
});
$w('#dropdown2').onChange(() => {
//$w('#dataset1').setFilter(wixData.filter().eq("_owner", wixUsers.currentUser.id).eq("type", $w('#dropdown2').value));
arro(arr);
mysum2();
});
$w('#resetfilter').onClick(() => {
mysum2();
$w("#dropdown1").value = "";
$w("#dropdown2").value = "";
arro(arr);
})
});
function interestsum(arr) {
$w('#dataset1').onReady(() => {
$w("#repeater1").onItemReady(($item, itemData, index) => {
$item('#datePicker1').value = (itemData.date);
var a = (itemData.date);
var b = new Date()
$item('#datePicker2').value = b;
$item('#days').text = (a-b).toString();
var principal = (itemData.amount);
let user = wixUsers.currentUser;
let userId = user.id;
if (wixUsers.currentUser.loggedIn) {
wixData.query("transfirm").eq("_owner", wixUsers.currentUser.id).eq("name", $item('#rate').value)
.find()
.then((results) => {
let queryItems = results.items;
queryItems.forEach((item, idx) => {
for (idx = 0; idx <= queryItems.length; idx++) {
if ($item('#text18').text === item.name) {
$item('#rate').text = item.rateofinterest;
var rate = parseFloat($item('#rate').text);
if ($item('#text20').text === "Debit") {
var myrate = rate * (-1);
} else {
var myrate = parseFloat(rate);
}
}
}
var days = parseFloat($item('#days').text);
if (!isNaN(rate)) {
var interest = parseFloat((principal * myrate * days) / 36000);
if (interest >= 0) {
var creobj = ($item('#text44').text);
$item('#interest').html = interest.toString();
var obj = { type: "Credit", principal: principal, days: days, interest: interest, expfo: creobj };
arr.push(obj);
} else {
var debobj = ($item('#text44').text);
$item('#interest').html = interest.toString();
var obj = { type: "Debit", principal: principal, days: days, interest: interest, expfo: debobj };
arr.push(obj);
}
arro(arr);
}
})
})
}
})
})
}
function arro(arr) {
if ($w('#dropdown1').value === "" && $w('#dropdown2').value === ""){
var originarray = arr;
var myarr = originarray;
var ragg = myarr.reduce((ao, co) => ao + co.interest, 0);
console.log(ragg);
$w('#text43').text = ragg.toString();
}
else if ($w('#dropdown1').value !== "" && $w('#dropdown2').value === ""){
var originarray = arr;
var myarr = originarray;
let doo = myarr.filter(function (currentElement) {
if (!isNaN(currentElement.interest)){
return currentElement.expfo === $w('#dropdown1').value; }
});
console.log(doo);
var ragg = doo.reduce((ao, co) => ao + co.interest, 0);
console.log(ragg);
$w('#text43').text = ragg.toString();
}
else if ($w('#dropdown1').value === "" && $w('#dropdown2').value !== ""){
var originarray = arr;
var myarr = originarray;
let doo = myarr.filter(function (currentElement) {
if (!isNaN(currentElement.interest)){
return currentElement.type === $w('#dropdown2').value; }
});
console.log(doo);
var ragg = doo.reduce((ao, co) => ao + co.interest, 0);
console.log(ragg);
$w('#text43').text = ragg.toString();
}
else {
var originarray = arr;
var myarr = originarray;
let doo = myarr.filter(function (currentElement) {
if (!isNaN(currentElement.interest)){
return currentElement.type === $w('#dropdown2').value && currentElement.expfo === $w('#dropdown1').value;
}});
console.log(doo);
var ragg = doo.reduce((ao, co) => ao + co.interest, 0);
console.log(ragg);
$w('#text43').text = ragg.toString();
}
}
function mysum2(arr) {
$w("#dataset1").getItems(0, 10000)
.then(r => {
const items = r.items;
var sumdebit = items.filter(({ type }) => type === 'Debit')
.reduce((a, c) => a + c.amount, 0);
sumdebit = (-1 * sumdebit);
var sumcredit = items.filter(({ type }) => type === 'Credit')
.reduce((a, c) => a + c.amount, 0);
var total = sumdebit + sumcredit;
if (total > 0) {
$w('#totalsumdisplay').html = "<p style='font-size: 25px; font-style: avenir; text-align: right; color: green;'>" + total.toLocaleString('en-IN', {
maximumFractionDigits: 2,
style: 'currency',
currency: 'INR'
}); + "</p>";
} else {
$w('#totalsumdisplay').html = "<p style='font-size: 25px; font-style: avenir; text-align: right; color: red;'>" + total.toLocaleString('en-IN', {
maximumFractionDigits: 2,
style: 'currency',
currency: 'INR'
}); + "</p>";
}
}) // then brackets
// repeater brackets
} // function my sum brackets