Adding Items in a Grid

I created a grid in SAIL. I have managed to add and delete rows and capture the values. One of the columns in my grid calculates the difference in days between two dates. I need to have a field called Summary of Total Days contain the total of all those differences. I created an integer field on my interface but am having difficulties making that calculation. This is the code I have in my add a row rule to calculate the difference:

a!integerField(
label: "Total Days" & ri!index,
value: todate(ri!items[ri!index].endDate)-todate(ri!items[ri!index].startDate),
saveInto: ri!items[ri!index].amount,
validations: {}
),

Is my saveInto statement at fault. I am trying to bring back the value back into my interface that calls it. I have attached a screen shot of the interface that the customer would see.

OriginalPostID-271614



  Discussion posts and replies are publicly visible

Parents
  • 0
    Certified Lead Developer
    Ok. In your example, the total field takes in an index variable, which doesn't make sense to me because I believe you want to total the differences for every record in the grid, not just at a specific index. If my assumption is correct, you would want your value in your integer field to be something like: "value: sum(apply(rule!getDifferences(start: _, end:_) merge(ri!items.startDate, ri!items.endDate)))" where rule!getDifference is a rule you create that returns "ri!endDate - ri!startDate". The apply will loop over every item in your array and will return a list of all the differences i.e. {3, 15, 20. 5}. When you wrap sum() arround this array, you will get the the sum of all the numbers in the array. Hope this helps!
Reply
  • 0
    Certified Lead Developer
    Ok. In your example, the total field takes in an index variable, which doesn't make sense to me because I believe you want to total the differences for every record in the grid, not just at a specific index. If my assumption is correct, you would want your value in your integer field to be something like: "value: sum(apply(rule!getDifferences(start: _, end:_) merge(ri!items.startDate, ri!items.endDate)))" where rule!getDifference is a rule you create that returns "ri!endDate - ri!startDate". The apply will loop over every item in your array and will return a list of all the differences i.e. {3, 15, 20. 5}. When you wrap sum() arround this array, you will get the the sum of all the numbers in the array. Hope this helps!
Children
No Data