Interface: StoredEntry<TProps>
Defined in: model/stored-entry.ts:18
The values one row stores at one moment (ADR 0017). Entry (entry.ts) is the other half of
the pair: it answers questions about a row now — read(key), children(), hasChildren.
This type answers none of them, and that is deliberate. A pass may hold a row no
store holds — the Rollup's own effective tree is one — so the questions belong to the pass, and
every pass that hands a StoredEntry hands the answers beside it: an Aggregator reads
ctx.read(key), ctx.children(row), ctx.descendants(row), ctx.leaves(row) and
ctx.hasChildren(row), a compute Field reads ComputeContext the same way (#466).
It is not a second concept. It is one row, with no questions attached.
An app author meets it in DatasetOptions.aggregators, in a Field's compute, and on
ChangeSet.added[].entity / .removed[].entity.
Type Parameters
TProps
TProps = Record<string, unknown>
Properties
end?
optionalend?:Instant
Defined in: model/stored-entry.ts:41
Exclusive — see plans/01 §5. Omitted iff this Entry does not span (ADR 0012); see start.
id
id:
EntryId
Defined in: model/stored-entry.ts:19
locked?
optionallocked?:boolean
Defined in: model/stored-entry.ts:36
A locked Entry refuses a gesture on every cell but this one (ADR 0038). undefined and
false both read as unlocked; a user sets it through the locked grid column, and app code sets it too.
name?
optionalname?:string
Defined in: model/stored-entry.ts:33
What this row is called, or undefined when no author gave it one (#421 C5). Not a required
field: a row with no name still stores, still spans, still draws — core defaults nothing off
it beyond the Grid's name column and the default bar label reading the same Field.
parentId?
optionalparentId?:EntryId
Defined in: model/stored-entry.ts:22
Hierarchy; roots have none. An Entry has no stored classification (ADR 0013): it derives when
it has children, and Entry.hasChildren is what answers that.
props
props:
Readonly<Partial<TProps>>
Defined in: model/stored-entry.ts:47
Consumer-owned. A Field key is the whole address (ADR 0011): { key: 'cost' } reads and writes
entry.props.cost, and nothing declares a source. Always present — ingest fills {}, so no
reader carries a "no props" branch. Partial<TProps> because a required key on TProps is
still one a stored record may lack: add({ id, name }) reaches that state on its own, with no
write to refuse it.
siblingIndex
siblingIndex:
number
Defined in: model/stored-entry.ts:29
This Entry's rank among its siblings — an ordinary integer index, always present, never
negative (ADR 0034). List position carries the value at construction and at load; after
that, an explicit write moves an entry and the write's own group renumbers around it. Read it
with entry.read('siblingIndex'), the same way parentId has no dedicated Entry member
either. HierarchySource never reads this key — a source answers before an entry's index
exists (UnplacedEntry, data/hierarchy-source.ts).
start?
optionalstart?:Instant
Defined in: model/stored-entry.ts:39
Omitted iff this Entry does not span (ADR 0012). Present with end if and only if this Entry
draws a bar.