Skip to content
PalmaPlan — the wiki ← PalmaPlan

Analytics: the project's pivot table

A project's Analytics tab (address /s/:id/analyses, next to Schedule, Kanban and Agenda) counts up the schedule: how many working days per phase and per month, each person's workload, progress by block color, actions done by owner. Nothing is typed in there: everything is computed from the open schedule, and recomputed as soon as it changes — including when someone else edits it.

What a pivot table is

A table that crosses two ways of sorting the same things: for instance phases in rows, months in columns, and in each cell the working days of that phase in that month. At the end of each row, its total; at the bottom of each column, its own; in the corner, the grand total.

Three choices make it up, through drop-down lists — nothing to drag:

With nothing remembered, the tab opens on the working days of blocks, by phase and by month. A schedule with no block and no milestone says so, and offers Go to the schedule.

Dimensions

DimensionWhat it sorts by
PhaseThe row's phase (its group).
ActivityThe row itself. A summary activity does not add up its sub-activities: each row is a value of its own.
Level in the treeLevel 1, 2, 3… — how deep the row sits in the activity tree.
Column "…"The value of one of your text, status, traffic-light or symbol columns, on the row. A computed column (dates, duration, progress) or a hidden one is not offered.
PersonThe person linked to the row (Link to a member, in the row's menu) — or No person.
Block colorThe name the legend gives the block's color — its code, if the legend doesn't name it.
Block stateFinished, Doing, Upcoming, Late or Not tracked, judged on your screen's date.
Progress bandNot tracked, 0%, 1 to 49%, 50 to 99%, 100%.
Critical pathCritical or Not critical.
Week, Month, QuarterThe period a working day falls in. A block counts in every period it touches; a milestone, in the one of its date; an action, in the one of its block's last working day.
Action ownerThe member, AI agent or free-text name the action is assigned to — or No owner.
Action statusTo do, Doing, Done.

Measures

MeasureWhat it counts
Working days of blocksThe blocks' working days, on their row's calendar: the schedule's closures and the row's days off don't count. In hours on a schedule set to hours.
Workload (days per person)The working days of blocks on rows linked to a person, always in days.
Days of absence during workThe days a row's person is absent while one of their blocks is working. A half-day counts 0.5; a day of absence counts only once, even if two of their blocks work that day.
Number of blocksThe blocks.
Progress (weighted by duration)The progress of the blocks that carry one, a long block weighing more than a short one. Empty ("—") when no block in the cell is tracked.
Number of actionsThe blocks' actions, whatever their status.
Share of actions doneThe share of actions with the Done status. Empty with no action.
Number of activitiesThe schedule's rows, with or without blocks.
Number of milestonesThe milestones (icons) placed on rows.

Workload counts the row's person, not an action's owner: a block weighs on the person its row names, and a row linked to no one stays out of the workload. If the workload table stays empty, the screen says so — first link the rows to their members, as Absences: My absences, the Agenda, risks describes. Days of absence read the same link.

Totals are computed on the facts

Each cell, each total and the grand total are computed on what they cover, never by adding up cells. A block straddling October and November counts once in October, once in November, and only once in the total: in Number of blocks, a row's total can therefore be smaller than the sum of its cells. Progress or a share of actions done doesn't add up either: its total is re-weighted over all the blocks or all the actions of the row.

Combinations that don't cross

Each measure counts one kind of thing — working days, blocks, activities, actions or milestones —, and a dimension only makes sense for some:

In the lists, a dimension that doesn't cross stays visible, greyed out, with its reason in a few words, and a sentence under the choices sums them up. Changing the measure removes the dimension that has become impossible, and the screen says which one it removed and why — never an error screen.

Filters

Add a filter offers the same dimensions. Once one is chosen, each of its values becomes a checkbox: untick what you don't want counted. At least one value must stay ticked — otherwise, Remove the filter. With every value ticked, the filter restricts nothing. A filter keeps 500 values at most, and a text value longer than 198 characters can't be filtered on: the screen says so. If a filtered value no longer exists in the schedule, it is removed from the filter and the screen says so. Several filters add up.

Filtering a period truly restricts the count to that period: an October–November block filtered on November only counts its November days, and doesn't reappear in October.

The chart

Chart: None, Bars (side by side, one series per table column) or Stacked bars. A percentage doesn't stack — the sum of two shares makes no sense: with progress or the share of actions done, stacked bars are greyed out. With two dimensions in rows, the chart only shows the first. The table stays under the chart, with every value.

Opening the Schedule on a cell

A click on a cell — or on a total, or on a bar of the chart — opens the Schedule tab filtered on the rows it counts, their blocks highlighted. The Filter panel says so ("From the analyses: …") and removes that criterion in one gesture, like the others. A cell that covers no row says so instead of opening an empty schedule.

With the keyboard, the table is a single tab stop: the arrows move from cell to cell, Home and End go to the end of the row, Enter opens. On a phone, the table scrolls inside its frame, its first column frozen.

Exporting

The Export menu offers Table as CSV, Table as workbook (XLSX) and Chart as PNG (when a chart is shown). The files carry the schedule's name and today's date.

Your analysis, and the project views

This browser remembers your analysis, schedule by schedule: the measure, rows, columns, filters and chart are there when you come back. It's yours alone — another member, or you on another device, doesn't see it. If a column it used has gone from the schedule (deleted, hidden), it is removed and the screen says so.

To share an analysis, there are the project views, in the Views menu: named analyses, saved with the schedule. Every member opens them; only the owner and the administrators write them, and only they see the entries that allow it:

A schedule keeps fifty views at most. A view that can no longer be read (saved by a newer version, for instance) shows marked "unreadable" and doesn't open; the owner and administrators can replace it with the current analysis or delete it.

What a viewer sees

A viewer sees the schedule's figures and their own, not the other members' one by one: in Analyses, the Person and Action owner dimensions have only two values, You and Other members (AI agents and free-text names included), plus No person or No owner. Totals are the same as an administrator's, and every measure stays available; only the per-person detail is grouped. A filter keeps only those values, a project view broken down by person opens grouped, and the Other members cell does not open the Schedule on their rows: it says why. A viewer's AI assistant gets the same from get_pivot_table. This grouping only covers this data part: the Schedule still shows the viewer the rows and the members linked to them, and the Agenda shows absences. Contributors, administrators and the owner see names.

What an agent sees

An AI assistant connected over MCP gets the same table, computed by the same engine, with the get_pivot_table tool: a measure, dimensions in rows and columns, filters by label ("Anne", "November 2026"). It can answer "how many days of workload does Anne have in November?" that way. See Tools, resources and prompts reference.

What happens when you get it wrong

What this page doesn't cover