I thought I’d post this just in case it was of any use to others.
The latest Great Wall release has fixed the behaviour of now() so that it re-calculates. This means that if you clear a time field with now() in the calculation field and then return to enter a new value it will populate the field with the current time. Previously I think it would return the time when the form was first loaded.
For our purposes (and as has been mentioned by others in this and other threads) we wanted to take time stamps at particular points in the survey. Using the latest fix and select_one fields we’ve come up with one way you can essentially check a box and record the time when it happened.
What we did:
1) Create a select_one field in the survey (labelled something like ‘Take time now’) which has a single choice value with a name of ‘0’ (it can be labelled something more user-friendly).
2) Create a time field that you want to be populated with the current time at the desired point.
3) For that time field, under the calculation column, put in; now()+int(${TakeTimeNow’}) – i.e. you’re effectively adding zero to the current time.
Now when the select-one is checked the time is recorded. If you un-check and re-check the box it will update the time at the re-check, so people can amend things if they accidentally selected it too soon.
There may well be other/neater ways of doing this, but it worked for us.
A big ‘thank you’ to everyone who worked on the latest release – the fixes are definitely appreciated here.