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

Clamp records to time range when filtering by time #119

Open
wants to merge 3 commits into
base: dev
Choose a base branch
from

Conversation

preethamrn
Copy link
Contributor

I think there should be a feature to clamp time records to the filtered time range instead of including the full record length. This way, it's possible to get statistics for that specific time range (eg. Activity Durations) instead of displaying the full activity.

Scenarios in which this is useful:
Let's say I have a Work record that typically goes from 900-1700. On one day, the record goes from 900-1900.
If I filter the time range from 1700-2200 then I will see this 10 hour Work record even though I'm more interested in the time range after work and would expect to only see 2 hours of Work.

There are a handful of changes in this pull request:

  1. Return RecordBase? instead of Boolean in the filter methods. This allows us to make changes to the records returned.
  2. Update the selectedByTimeOfDay method to clamp records to the filtered time range and potentially output multiple records for records that span multiple days.
  3. Use mapNotNull and flatten instead of filter in order to convert the List<List?> to List

@preethamrn
Copy link
Contributor Author

I'm planning on fixing the failing tests but would like to hear opinions on how to best implement and integrate this feature before making too many more changes.

@Razeeman
Copy link
Owner

Hello! This would be a useful feature indeed.

Clamping probably shouldn't be implemented in RecordFilterInteractor because it's purpose is to filter records and not change them. For example this interactor is used to get records that are going to be changed in Data Edit screen, and it would break the logic if the records are not original.

I think it would make more sense to create another interactor what would perform clamping and use it on filtered records there it is necessary.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants