One level of the maintenance explorer: the groups below where the reader has got to, with what became of each group's…
One level of the maintenance explorer: the groups below where the reader has got to, with what became of each group’s planned maintenance rounds.
p_by is the view the explorer opened in. SITE goes from sites to the locations inside each, a level at a time; PLAN from maintenance plans to the assets each covers; CATEGORY from asset categories to the categories under them; TEAM from teams to the people in each. p_filter is the path walked so far, in the keys api.maintenance_drilldown_rows takes, and decides the level; a path that has reached the rounds themselves returns no rows. Each row’s filter is that path with the row’s own key added, to pass back for the next level or to list its rounds, and can_drill is false where the next level is the rounds. A location or category with rounds against itself as well as below it has its own row, with is_self true. A group with no value (no team, no asset) has a null group_id; under a plan, that row is the plan’s rounds against places. group_code is the plan or asset number.
The six outcome counts (on time, late, overdue, upcoming, skipped, covered) add up to total_count. deferred_count is the rounds whose date was moved, whatever became of them. PM compliance is compliance_on_time_count over compliance_due_count. Counts are of the rounds the caller can already see.

