I want to conditionally sum a value in a repeating section. I used https://wiki.roll20.net/RepeatingSum#Conditional_Sums_.28e.g._using_a_Checkbox.29 as a base but cannot get it to work
I want to conditionally sum a value in a repeating section. I used https://wiki.roll20.net/RepeatingSum#Conditional_Sums_.28e.g._using_a_Checkbox.29 as a base but cannot get it to work
on('change:repeating_armors remove:repeating_armors', function() {
repeatingSum("armor_total", "armors",["armorvalue","armorworn"]);
});
/* ===== PARAMETERS ==========
destinations = the name of the attribute that stores the total quantity
can be a single attribute, or an array: ['total_cost', 'total_weight']
If more than one, the matching fields must be in the same order.
section = name of repeating fieldset, without the repeating_
fields = the name of the attribute field to be summed
destination and fields both can be a single attribute: 'weight'
or an array of attributes: ['weight','number','equipped']
*/
const repeatingSum = (destinations, section, fields) => {
if (!Array.isArray(destinations)) destinations = [destinations.replace(/\s/g, '').split(',')];
if (!Array.isArray(fields)) fields = [fields.replace(/\s/g, '').split(',')];
getSectionIDs(`repeating_${section}`, idArray => {
const attrArray = idArray.reduce((m, id) => [...m, ...(fields.map(field => `repeating_${section}_${id}_${field}`))], []);
getAttrs([...attrArray], v => {
const getValue = (section, id, field) => v[`repeating_${section}_${id}_${field}`] === 'on' ? 1 : parseFloat(v[`repeating_${section}_${id}_${field}`]) || 0;
const commonMultipliers = (fields.length <= destinations.length) ? [] : fields.splice(destinations.length, fields.length - destinations.length);
const output = {};
destinations.forEach((destination, index) => {
output[destination] = idArray.reduce((total, id) => total + getValue(section, id, fields[index]) * commonMultipliers.reduce((subtotal, mult) => subtotal * getValue(section, id, mult), 1), 0);
});
console.log(output);
setAttrs(output);
});
});
};
Did you find a solution for this?
It looks to me like the HTML for your armorworn attribute is correct. Try it with value="1" instead.
PS: It's always best to post code as text, not a screenshot, so people can copy it and edit it when replying, to show you solutions easier.
Yeah, Roll20 is not the best forum and I had a hard time finding all this stuff again.
Due to no answer for a long time in this topic I recreated this issue in another sub-forum where the solution can be found:
https://app.roll20.net/forum/post/9992186/problem-with-sum-of-repeating-rows
I'm a bit puzzled by the pointer-events requirement, I don't shy why this necessary - unless its you way to block players editing the cell.
The easiest way is to replace disabled="true" with readonly, in the HTML - that stops players editing it.
For the record, disabled attributes cant be changed by sheet workers - that's why you cant use disabled.