Tenho uma lista e no campo #input1 tem o total de valores. soma certinho do jeito que o Matheus me ensinou. Só que agora apliquei um filtro através do #dropdown1 e o total sai zero.
veja o codigo que apliquei, e por favor onde eu altero para que sai o valo total após aplicar o filtro.
//funcao de soma
const funcaoCalculo = (total, item) => item.credDeb + total;
$w.onReady(function () {
//espera que os dados sejam carregados
$w('#dataset2').onReady( async () => {
//pega todos items do dataset
const data = await $w('#dataset2').getItems(0, $w('#dataset2').getTotalCount())
//calcula o total
const total = data.items.reduce(funcaoCalculo, 0);
//atulizado o valor total
$w('#input1').value = total
$w('#input1').value = currency(total)
});
});
//declara a função no código
function currency(valor, unit = 'R$') {
const options = { style: 'currency', currency: 'BRL' }
return new Intl.NumberFormat('pt-BR', options).format(valor)
}
Matheus. mais uma vez muito obrigado. como não funcionou. optei por fazer uma separação mes a mes das somas, no proprio dataset. exemplo: quero saber o periodo mes de maio, determinei no proprio banco que o filtro é o mes de maio. funcionou. futuramente voltarei a te incomodar para fazer de uma vez só. por enquanto to tocando assim e está funcionando. estou com outras demandas, que inclusive voce esta me ajudando em outros tópicos que postei anteriomente.
Obrigado.
DESCUPLA MATHEUS. MAS NÃO FUNCIONOU.
desculpe Matheus não entendi. vc pode ajustar aqui por favor.
function somarTotal() { //pega todos items do dataset const data = await $w("#dataset2").getItems( 0, $w("#dataset2").getTotalCount() ); //calcula o total const total = data.items.reduce(funcaoCalculo, 0); //atulizado o valor total $w("#input1").value = total; $w("#input1").value = currency(total); } //declara a função no código function currency(valor, unit = "R$") { const options = { style: "currency", currency: "BRL" }; return new Intl.NumberFormat("pt-BR", options).format(valor); }
Oi @almirferrer
Você pode isolar a parte do código que faz a soma em um a função e chamar quando o dropdown for atualizado. Veja o exemplo
//funcao de soma const funcaoCalculo = (total, item) => item.credDeb + total; $w.onReady(function() { $w("#dropdown1").onChange(() => { somarTotal() }) //espera que os dados sejam carregados $w("#dataset2").onReady(async () => { somarTotal() }); }); async function somarTotal() { //pega todos items do dataset const data = await $w("#dataset2").getItems( 0, $w("#dataset2").getTotalCount() ); //calcula o total const total = data.items.reduce(funcaoCalculo, 0); //atulizado o valor total $w("#input1").value = total; $w("#input1").value = currency(total); } //declara a função no código function currency(valor, unit = "R$") { const options = { style: "currency", currency: "BRL" }; return new Intl.NumberFormat("pt-BR", options).format(valor); }