@kanunilabs/pivotgrid / PivotController
Class: PivotController<TRow>
Framework-agnostic pivot grid controller.
Orchestrates field management, engine computation (via Web Worker), state persistence, export, and event emission. Consumed by React/Angular adapters.
Type Parameters
TRow
TRow
Shape of source data rows.
Constructors
Constructor
new PivotController<
TRow>(options):PivotController<TRow>
Parameters
options
PivotControllerOptions<TRow>
Returns
PivotController<TRow>
Properties
getSnapshot
getSnapshot: () =>
PivotControllerState<TRow>
Returns
PivotControllerState<TRow>
subscribe
subscribe: (
listener) => () =>void
Parameters
listener
PivotStateListener
Returns
() => void
Methods
applyFilter()
applyFilter(
fieldId,selectedValues,filterType):void
Parameters
fieldId
string
selectedValues
Set<any>
filterType
"include" | "exclude"
Returns
void
calculateDropIntent()
calculateDropIntent(
pointerX,pointerY,itemRect,previousIntent,isLastItem,orientation):DropIntent
Parameters
pointerX
number
pointerY
number
itemRect
height
number
left
number
top
number
width
number
previousIntent
DropIntent
isLastItem
boolean
orientation
"horizontal" | "vertical"
Returns
DropIntent
cancelImport()
cancelImport():
void
Cancel an in-flight import started by importFile/importFiles/importFromUrl.
Returns
void
cancelImportPreview()
cancelImportPreview():
void
Discard a pending previewed import without applying it.
Returns
void
changeFieldArea()
changeFieldArea(
fieldId,area):void
Parameters
fieldId
string
area
Returns
void
clearAllSorting()
clearAllSorting():
void
Returns
void
clearFilter()
clearFilter(
fieldId):void
Parameters
fieldId
string
Returns
void
closeImportStatus()
closeImportStatus():
void
Returns
void
collapseAll()
collapseAll():
void
Returns
void
collapseColPaths()
collapseColPaths(
paths):void
Parameters
paths
string[]
Returns
void
collapsePaths()
collapsePaths(
paths):void
Parameters
paths
string[]
Returns
void
commitDrag()
commitDrag(
fieldId,overId):Promise<void>
Parameters
fieldId
string
overId
string | null
Returns
Promise<void>
commitImport()
commitImport(
plan,labels):void
Commit a previewed import using the reviewed column plan (include/exclude, caption + type overrides). Columns whose type changed are re-coerced.
Parameters
plan
PivotImportField & object[] | undefined
labels
PivotImportLabels
Returns
void
deleteField()
deleteField(
fieldId):void
Parameters
fieldId
string
Returns
void
deleteReport()
deleteReport(
id):void
Parameters
id
string
Returns
void
dispose()
dispose():
void
Returns
void
expandAll()
expandAll():
void
Returns
void
expandColPaths()
expandColPaths(
paths):void
Parameters
paths
string[]
Returns
void
expandPaths()
expandPaths(
paths):void
Parameters
paths
string[]
Returns
void
exportData()
exportData(
format,options?):Promise<void>
Parameters
format
string
options?
Returns
Promise<void>
getAreaFields()
getAreaFields(
area):PivotField<TRow,PivotCellTemplate,any>[]
Parameters
area
Returns
PivotField<TRow, PivotCellTemplate, any>[]
getCell()
getCell(
rowPath,colPath):PivotCell<any> |null
Parameters
rowPath
string[]
colPath
string[]
Returns
PivotCell<any> | null
getEngineResult()
getEngineResult():
PivotEngineResult|null
Returns
PivotEngineResult | null
getRawData()
getRawData():
TRow[]
Returns
TRow[]
getState()
getState():
PivotControllerState<TRow>
Returns
PivotControllerState<TRow>
importData()
importData(
rows,labels):Promise<void>
Import an already-materialized array of rows (e.g. an API response).
Parameters
rows
any[]
labels
PivotImportLabels
Returns
Promise<void>
importFile()
importFile(
file,labels):Promise<void>
Import a single uploaded file (worker-streamed for CSV/JSON/XML).
Parameters
file
File
labels
PivotImportLabels
Returns
Promise<void>
importFiles()
importFiles(
files,labels):Promise<void>
Import one or more files at once, appending their rows (union fields).
Parameters
files
FileList | File[]
labels
PivotImportLabels
Returns
Promise<void>
importFromUrl()
importFromUrl(
url,labels,fetchInit?):Promise<void>
Import data fetched from a URL / backend API endpoint.
Parameters
url
string
labels
PivotImportLabels
fetchInit?
RequestInit
Returns
Promise<void>
importText()
importText(
text,labels):Promise<void>
Import delimited text pasted from the clipboard (auto-detects CSV/TSV).
Parameters
text
string
labels
PivotImportLabels
Returns
Promise<void>
isEnterpriseEdition()
isEnterpriseEdition():
boolean
Returns
boolean
loadReport()
loadReport(
id):void
Parameters
id
string
Returns
void
moveField()
moveField(
fieldId,direction):void
Parameters
fieldId
string
direction
"start" | "end" | "left" | "right"
Returns
void
on()
on<
K>(eventName,handler): () =>void
Type Parameters
K
K extends keyof PivotControllerEvents<TRow>
Parameters
eventName
K
handler
(payload) => void
Returns
() => void
refreshEngine()
refreshEngine():
void
Returns
void
removeField()
removeField(
fieldId):void
Parameters
fieldId
string
Returns
void
resetDrag()
resetDrag():
void
Returns
void
resolveCellClick()
resolveCellClick(
event):CellClickEvent<TRow>
Parameters
event
CellClickEvent<TRow>
Returns
CellClickEvent<TRow>
saveReport()
saveReport(
name,isDefault):void
Parameters
name
string
isDefault
boolean
Returns
void
setColumnWidths()
setColumnWidths(
widths):void
Parameters
widths
Record<string, number>
Returns
void
setDefaultReport()
setDefaultReport(
id):void
Parameters
id
string
Returns
void
setDragActive()
setDragActive(
activeId):void
Parameters
activeId
string | null
Returns
void
setDragIntent()
setDragIntent(
targetId,targetArea,intent):void
Parameters
targetId
string | null
targetArea
string | null
intent
DropIntent
Returns
void
setEnterpriseEdition()
setEnterpriseEdition(
on):void
Which edition is driving this controller. Set by the React adapter from the
flag EnterprisePivotGrid passes; Community never turns it on.
The engine keeps the capability either way — the pipeline is one piece and an edition boundary that tried to cut through it would be a fork, not a gate. What the flag decides is what the controller AGREES to do.
This mirrors DataGridController.setEnterpriseEdition deliberately: the two
products should not have two different answers to the same question.
Parameters
on
boolean
Returns
void
setExpandedColPaths()
setExpandedColPaths(
paths):void
Parameters
paths
string[]
Returns
void
setExpandedPaths()
setExpandedPaths(
paths):void
Parameters
paths
string[]
Returns
void
setFields()
setFields(
fields):void
Parameters
fields
PivotField<TRow, PivotCellTemplate, any>[]
Returns
void
setLayout()
setLayout(
updates):void
Parameters
updates
Partial<PivotLayoutState>
Returns
void
setSelectionStats()
setSelectionStats(
selectionStats):void
Parameters
selectionStats
PivotSelectionStats | null
Returns
void
showFields()
showFields(
fieldIds):void
Take several fields out of the chooser in ONE commit.
The routing rule is the field chooser's checkbox rule — a number is a measure, anything else describes a row — and it lives here so the vanilla chooser, the React chooser and the Angular one cannot drift on it.
Parameters
fieldIds
string[]
Returns
void
showImportStatus()
showImportStatus(
status,title,messages):void
Show a terminal import status message (e.g. clipboard empty / permission denied).
Parameters
status
"success" | "error" | "warning"
title
string
messages
string[]
Returns
void
sortField()
sortField(
fieldId,direction):void
Parameters
fieldId
string
direction
"asc" | "desc" | undefined
Returns
void
sortFieldBySummary()
sortFieldBySummary(
rowFieldId,summaryFieldId,colPath):void
Parameters
rowFieldId
string
summaryFieldId
string
colPath
string
Returns
void
toggleColExpanded()
toggleColExpanded(
path):void
Parameters
path
string
Returns
void
toggleExpanded()
toggleExpanded(
path):void
Parameters
path
string
Returns
void
updateCurrentReport()
updateCurrentReport():
void
Returns
void
updateField()
updateField(
updatedField):void
Parameters
updatedField
PivotField<TRow>
Returns
void
updateOptions()
updateOptions(
options):void
Parameters
options
Partial<PivotControllerOptions<TRow>>
Returns
void