Group membership logic, V2

In the documentation for Group membership (https://farmos.org/model/logic/group/) it says:

A useful feature of Groups is that any Logs associated with the Group will also be associated with its member Assets.

I’m not finding this to be the case or not sure how to view the associated logs.

For example I have an animal asset that belongs to a sheep group. This group has 9 logs associated with it for movements. When I view the sheep asset that is part of the group and view her logs the group logs don’t show up here. I only see the logs that specifically list her as an asset and not the group.

The location of the specific animal is showing correct logic with reference to the group.

Am I misunderstanding something with the group logic or is this a bug?

3 Likes

Oops you’re right @BOTLFarm that’s a bit misleading the way it’s written right now.

The specific bit that is true in v2 (that wasn’t in v1) comes after that:

Notably, when the Group module is enabled, it overrides the Asset location logic to consider group membership. If the Asset is a member of a group, and the group has a movement Log that is more recent than any of the Asset’s own movement Logs, then the Asset’s location will be based on the group’s Log.

We should probably do two things:

  1. Update the text to be more clear.
  2. Make it easier to see group logs in member assets!
1 Like

I would love to see this! I feel like this may be some challenging logic to pull these logs together though. It would have to account for an asset that has potentially change group memberships many times and only pull the group logs when it actually was part of the group.

1 Like

Yea exactly. Although IIRC @paul121 started working on a custom Views handler for this earlier in the v2 process (or maybe I’m thinking of something else). In either case, the other challenge is a UI one I think: do we mix the group logs in with the individual’s logs? If a group is itself a member of another group, do we include that group’s logs as well? Do we flag them somehow? Allow them to be filtered out? Or do we just put them in their own dedicated tab?

Seems like a separate “Group logs” (or similar) tab would be the easiest to figure out. It would create a natural separation between individual and group logs, albeit requiring more clicks (and understanding the difference). It could also limit itself to only the current asset’s group. If you wanted to see the group’s group logs, you would go to that group asset and click the same tab, I imagine.

As far as usability I would prefer if the group logs were mixed in with the individual asset logs with an option to filter them in or out. Looking back chronologically through an assets history would give a clearer view on what happened to the asset. This is probably the hardest to do programing wise and I think a separate tab would work as well. Typically if I’m looking for a specific log I generally know if it happened to an individual or a group so changing tabs would be fine.

I’m not sure flagging the logs would add anything to either of these views. If the assets are still listed I think it is ease enough to look on that column and see if it is the asset you are viewing or the group log.

I have never put a group in another group so don’t really know how I would feel about listing nested group logs. I do put the same asset in multiple groups sometimes, i.e. sheep “Tess” is in group “sheep”, “small ruminants” and “sheep winter flock 2 (2021)”. So it would be nice to have the logs form all these groups listed when viewing her log.

Interested to see how others would like to see this implemented.

2 Likes

This would be my preference too, I think. Curious to hear from others - but it definitely feels like the most intuitive.

This is probably the hardest to do programing wise and I think a separate tab would work as well.

Yea that’s the catch. A separate tab avoids some of the complexity, but at the expense of user experience IMO.

If the assets are still listed I think it is ease enough to look on that column and see if it is the asset you are viewing or the group log.

Oh good point - the referenced asset would be visible in the list, so you could figure out which is which.

If we wanted an option to “filter out group logs” I suppose it could use this field for the SQL filter (eg: a checkbox that adds a WHERE clause to only show logs that reference the individual asset directly).

I have never put a group in another group so don’t really know how I would feel about listing nested group logs.

I’d have to think this through as well, but perhaps it would make sense to limit to only the first parent group, and not try to traverse up from there. That way, in order to see the logs of a group’s parent group, you would have to view the group asset itself, if that makes sense.

Interested to see how others would like to see this implemented.

+1 me too!

1 Like

With @paul121’s help (and a bit of Git forensics) we dug up the old branch that started work on this!

It is quite outdated, and has some other stuff in it that we don’t need anymore (this branch was for displaying “related logs” more generally, which we took a slightly different approach on, and also included a start on the group logs stuff)… but it’s something!

1 Like