Time use roster: way one row can depend on value in previous row?

Background

There is a time use module that aims to capture the respondent’s time in 15-minute blocks over the past 24 hours.

  1. Capture when the respondent woke up
  2. Capture the activity in the wake time block: what it was and when it ended
  3. Capture the activity after the previous activity concluded
  4. Repeat until there are no more activity windows to complete.

Because examples are often more helpful–and I’ve probably explained badly–here’s my day yesterday filled in that fashion

1. Capture when the respondent woke up

Wake: 5:00

2. Capture the activity in the wake time block: what it was and when it ended

Time Activity Until
4:00
4:15
4:30
4:45
5:00 Self care 5:45
5:15
5:30
5:45
6:00
6:15
6:30
6:45
7:00
7:15
7:30
7:45
8:00
8:15
8:30
8:45
9:00
9:15
9:30
9:45
10:00

3. Capture the activity after the previous activity concluded

Time Activity Until
4:00
4:15
4:30
4:45
5:00 Self care 5:45
5:15
5:30
5:45 Drink coffee 6:00
6:00
6:15
6:30
6:45
7:00
7:15
7:30
7:45
8:00
8:15
8:30
8:45
9:00
9:15
9:30
9:45
10:00

4. Repeat until there are no more activity windows to complete.

A series that looks something like this:

Time Activity Until
4:00
4:15
4:30
4:45
5:00 Self care 5:45
5:15
5:30
5:45 Drink coffee
6:00 Commute 8:15
6:15
6:30
6:45
7:00
7:15
7:30
7:45
8:00
8:15
8:30
8:45
9:00
9:15
9:30
9:45
10:00
Time Activity Until
4:00
4:15
4:30
4:45
5:00 Self care 5:45
5:15
5:30
5:45 Drink coffee
6:00 Commute 8:15
6:15
6:30
6:45
7:00
7:15
7:30
7:45
8:00
8:15 Breakfast 8:45
8:30
8:45
9:00
9:15
9:30
9:45
10:00
Time Activity Until
4:00
4:15
4:30
4:45
5:00 Self care 5:45
5:15
5:30
5:45 Drink coffee
6:00 Commute 8:15
6:15
6:30
6:45
7:00
7:15
7:30
7:45
8:00
8:15 Breakfast 8:45
8:30
8:45 Work 12:00
9:00
9:15
9:30
9:45
10:00

Designer difficulties

Ideally, this time use module would be captured in a roster where each row corresponds to a 15-minute time block and where each row’s enablement depends on:

  • Wake time. This would be the first row enabled.
  • Completion time of last activity (i.e., the value of Until in the last non-empty row). For each row after the row corresponding to the wake time, enable the row if the last completed row’s Until value equals the current row’s start time.

However, I’m not seeing a way to do this. From what I understand (and have discovered during experimentation), this design runs into a circular reference problem. In particular:

  • Each row’s enablement depends on a variable (Until) found inside the roster.
  • The Until variable’s enablement, as a member of the roster row, depends on whether the roster row itself is enabled (which, in turn, depends on the value of Until, albeit from a different row)

Do you see a way to circumvent the circular reference problem while maintaining both the behavior outilined in Background and the design as a roster?

The general problem seems similar to the one posed here.

Interestingly enough, just a couple of weeks ago I had a meeting where colleagues from ILO were looking for a solution to a similar problem (though their methodology is more complex then your example).

As of now I saw no acceptable solution to this issue.

A while ago I have programmed a time allocation module and it accessible as public example “Time allocation”. Check if this approach would be suitable for your data collection.