Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Improve initial load of calculated expression #2522

Merged

Conversation

FikriMilano
Copy link
Collaborator

@FikriMilano FikriMilano commented Apr 23, 2024

IMPORTANT: All PRs must be linked to an issue (except for extremely trivial and straightforward changes).

Fixes #2519

Description
On initial load of forms:

  1. Iterate all items with calculated expression
  2. Evaluate the calculated expression
  3. Update the QR item answer

Alternative(s) considered
N/A

Type
Improvement

Screenshots (if applicable)

Checklist

  • I have read and acknowledged the Code of conduct.
  • I have read the Contributing page.
  • I have signed the Google Individual CLA, or I am covered by my company's Corporate CLA.
  • I have discussed my proposed solution with code owners in the linked issue(s) and we have agreed upon the general approach.
  • I have run ./gradlew spotlessApply and ./gradlew spotlessCheck to check my code follows the style guide of this project.
  • I have run ./gradlew check and ./gradlew connectedCheck to test my changes locally.
  • I have built and run the demo app(s) to verify my change fixes the issue and/or does not break the demo app(s).

@FikriMilano FikriMilano requested review from santosh-pingle and a team as code owners April 23, 2024 02:32
@FikriMilano FikriMilano requested a review from shelaghm April 23, 2024 02:32
Copy link
Collaborator

@MJ1998 MJ1998 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What if there is an item (maybe display item) which is dependent on the initial calculated expression ?

@FikriMilano FikriMilano requested a review from aditya-07 as a code owner July 9, 2024 11:08
@FikriMilano
Copy link
Collaborator Author

@jingtang10 @MJ1998 this is ready for review

@FikriMilano
Copy link
Collaborator Author

FikriMilano commented Jul 9, 2024

@MJ1998 hmm, I might not understand what you're trying to say. Could you elaborate? And some examples.

Display item can't really depend on other items unless the display item is using cqf expression, display item has no answer, so it cannot use calculated expression.

Copy link
Collaborator

@jingtang10 jingtang10 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is really great optimization! Thanks @FikriMilano!

This is not your code, but I've just noticed in the file ExpressionEvaluator.kt function evaluateCalculatedExpressions the use of updatedQuestionnaireResponseItemComponent is actually wrong. What should be passed as the %context should be the corresponding questionnaire response item of the questionnaire item with calculated expression that is affected. Can you please fix that in this PR? I think what you can do is to actually just pass a null value there and add a comment to say something like "to properly use %context we will need to find questionnaire item and questionnaire response item pairs etc.. but we won't do that now." You can then just simplify that function signature.

@FikriMilano
Copy link
Collaborator Author

@jingtang10 this is ready for review

Copy link
Collaborator

@jingtang10 jingtang10 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the PR @FikriMilano great job!

@jingtang10 jingtang10 enabled auto-merge (squash) July 15, 2024 11:08
@jingtang10 jingtang10 merged commit 7b24b62 into google:master Jul 15, 2024
6 checks passed
@jingtang10 jingtang10 deleted the 2519-improve-calculated-expression-initial-load branch July 15, 2024 13:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
Status: Complete
Development

Successfully merging this pull request may close these issues.

Improve initial load for calculated-expression
3 participants