Here is a problem I have been struggling with for a while...
Consider the following 2 input forms (don't worry, these are just mockups, not real screenshots). When the user opens the forms, all values are empty and the user is required to fill in these fields. As such:
In a second version of our application, we came up with a rather clever algorithm that calculates a default value for Field 3 and 4 on the second form. This is great to make a user's life easier: when he opens Form 2, instead of these fields being empty they are already filled in. The user can check these values, and accept or change the suggested values. In 99% of all cases, the default values will be spot on, in 1% of the cases, a user may want to deviate from the suggested values.
Now, the algorithm behind this is too hard to understand for a user, and too complex to explain, and also... a little bit of a secret. But here is the catch: it takes Field 1 and 2 as part of the input. So, here comes my problem: when the user accepts the default values in Form 2, but then returns to Form 1 and changes those values... what do we have to do with the values of Form 2? We don't know if the values of Field 3 and 4 are there because they where accepted as default, or entered by the user.
We came up with a few solutions ourselves, all of which I hate...
Nr1: add colors!
If a user overrides the defaults, it will be indicated with a special color. This way the user knows (hopefully) that from that point on, he can not return to the default calculated values. In other words: once you edit, you're on your own.
Nr2: add more fields!
The default calculations are added as read-only fields. Each time the form is opened those new default values are visible. It's up to the user to either fill in his own values, or copy-paste from the default values.
Nr3: add buttons!
The user can click the "default" button to automatically overwrite whatever the user has manually put into those fields.
I hate all of these solutions as they all seem to add complexity for the user rather than take it away. Is there a better solution to this problem? This seems like such a trivial problem that I cannot image I am the only one facing this. However I cannot find any good solution. Any help will be appreciated.