Expand my Community achievements bar.

Dive into Adobe Summit 2024! Explore curated list of AEM sessions & labs, register, connect with experts, ask questions, engage, and share insights. Don't miss the excitement.

How to do a partial sum of table rows in LiveCycle - Javascript

Avatar

Level 1

I have 4 rows (and 3 columns) in a table. The last row is the total. I need to sum only the first two rows, excluding the last one. The problem is they are all calculated values from different tables, how do I do it? I am new to Adobe LiveCycle and Javascript.

This is what I currently have:

var times = xfa.resolveNodes("Row2[*].Time"); this.rawValue = Calculate.SumRawValues(times);

I am trying something like this:

var times = xfa.resolveNodes("Row2[*].Time"); var timesFlushing = xfa.resolveNode("Row2[2].Time"); this.rawValue = Calculate.SumRawValues(times) - timesFlushing.value;

or something like this:

var times = xfa.resolveNodes("Row2[*].Time"); this.rawValue = Calculate.SumRawValues(times) - xfa.resolveNode("Row2[2].Time");

or even this:

this.rawValue = Row2.Time + xfa.resolveNode("Row2[1].Time")

Clearly I am new to this and none of these work. Help please??? Comments?

1 Reply

Avatar

Level 10

There is a difference between the methods resolveNode() and resolveNodes(), which is decribed here: resolveNode vs. resolveNodes

For you needs, the following script should to the trick.

var times = xfa.resolveNodes("Row2[*].Time"),

    sum = 0;

for (var i = 0, j = times.length; i < j; i += 1) {

    if (i !== (j - 1) ) {

          sum += times.item(i).rawValue;

    }

}

this.rawValue = sum;

Note: This script will only work, if every row on you table is named "Row2".