mixin

Grid

@Js
const mixin Grid

Two dimensional tabular data structure composed of Cols and Rows. Grids may be created by factory methods on Etc or using GridBuilder. See docHaystack.

methods col

Get a column by its name

addColMeta

Return a new grid with additional column meta-data

colNames

Convenience for cols mapped to Col.name

getSafe

Get a row by its index number or if index is out of bounds then return null

colToList

Get a column as a list of the cell values ordered by row

commit

Return a new Grid which is the result of applying the given diffs to this grid

replace

Replace every cell with the given from value with the to value

findAll

Return a new grid which finds matching the rows in this grid

colsToLocale

Return a new Grid wich each col name mapped to its localized tag name if the col does not already have a display string

keepCols

Return a new grid with all the columns removed except the given columns

renameCol

Return a new grid with the given column renamed

find

Find one matching row or return null if no matches

getRange

Return a new grid which is a slice of the rows in this grid

has

Return if this grid contains the given column name

join

Join two grids by column name

sortr

Return a new Grid which is a copy of this grid with the rows reverse sorted by the given comparator function

all

Return true if the function returns true for all of the rows in the grid

last

Get the last row or return null if grid is empty

setColMeta

Return new grid with column meta-data replaced by given meta

isErr

Return if this is an error grid - meta has "err" tag

addCol

Return a new grid with an additional column

sort

Return a new Grid which is a copy of this grid with the rows sorted by the given comparator function

each

Iterate the rows

flatMap

Return a new grid which maps each of the rows to zero or more new Dicts

renameCols

Return a new grid with multiple columns renamed

removeCol

Return a new grid with the given column removed

size

Get the number of rows in the grid

addCols

Return a new grid by adding the given grid as a new set of columns to this grid

meta

Meta-data for entire grid

sortColr

Sort the given column in reverse

unique

Return a new grid with only rows that define a unique key by the given key columns

addMeta

Return a new grid with additional grid level meta-data

sortDis

Sort using Etc.compareDis and Dict.dis

setMeta

Return a new grid with grid level meta-data replaced by given meta

sortCol

Convenience for sort which sorts the given column

get

Get a row by its index number

missing

Return if this grid does not contains the given column name

cols

Columns

map

Return a new grid which maps the rows to new Dict

removeCols

Return a new grid with all the given columns removed

colDisNames

Convenience for cols mapped to Col.dis

isEmpty

Convenience for size equal to zero

any

Return true if the function returns true for any of the rows in the grid

filter

Return a new grid which finds matching rows based on the given filter

findIndex

Find one matching row index or return null if no matches

isHisGrid

Return if this grid conforms to the history grid shape

mapToList

Map each row to a list of values

reorderCols

Return a new grid with the columns reordered

eachWhile

Iterate every row until the function returns non-null

first

Get the first row or return null if grid is empty

addCol Grid addCol(Str name, Obj? meta, |Row,Int->Obj?| f)

Return a new grid with an additional column. The cells of the column are created by calling the mapping function for each row. The meta may be any value accepted by Etc.makeDict

addColMeta Grid addColMeta(Obj col, Obj? meta)

Return a new grid with additional column meta-data. The new tags are merged according to Etc.dictMerge. The col parameter may be either a Col or column name. The meta may be any value accepted by Etc.makeDict. If column is not found then return this. Also see setColMeta.

addCols Grid addCols(Grid x)

Return a new grid by adding the given grid as a new set of columns to this grid. If the given grid contains duplicate column names, then they are given auto-generated unique names. If the given grid contains fewer rows then this grid, then the missing cells are filled with null.

addMeta Grid addMeta(Obj? meta)

Return a new grid with additional grid level meta-data. The new tags are merged according to Etc.dictMerge. The meta may be any value accepted by Etc.makeDict Also see setMeta.

all Bool all(|Row,Int->Bool| f)

Return true if the function returns true for all of the rows in the grid. If the grid is empty, return false.

any Bool any(|Row,Int->Bool| f)

Return true if the function returns true for any of the rows in the grid. If the grid is empty, return false.

col abstract Col? col(Str name, Bool checked)

Get a column by its name. If not resolved then return null or throw UnknownNameErr based on checked flag.

colDisNames Str[] colDisNames()

Convenience for cols mapped to Col.dis. The resulting list is safe for mutating.

colNames Str[] colNames()

Convenience for cols mapped to Col.name. The resulting list is safe for mutating.

colToList Obj?[] colToList(Obj col, Type listOf)

Get a column as a list of the cell values ordered by row.

cols abstract Col[] cols()

Columns

colsToLocale Grid colsToLocale()

Return a new Grid wich each col name mapped to its localized tag name if the col does not already have a display string. See Etc.tagToLocale and hx.doc.skyspark::Localization#tags.

commit Grid commit(Grid diffs)

Return a new Grid which is the result of applying the given diffs to this grid. The diffs must have the same number of rows as this grid. Any cells in the diffs with a None.val are removed from this grid, otherwise they are updated/added.

each abstract Void each(|Row,Int| f)

Iterate the rows

eachWhile abstract Obj? eachWhile(|Row,Int->Obj?| f)

Iterate every row until the function returns non-null. If function returns non-null, then break the iteration and return the resulting object. Return null if the function returns null for every item

filter Grid filter(Filter filter, HaystackContext? cx)

Return a new grid which finds matching rows based on the given filter. Also see findAll.

find Row? find(|Row,Int->Bool| f)

Find one matching row or return null if no matches. Also see findIndex and findAll.

findAll Grid findAll(|Row,Int->Bool| f)

Return a new grid which finds matching the rows in this grid. The has the same meta and column definitions. Also see find and filter.

findIndex Int? findIndex(|Row,Int->Bool| f)

Find one matching row index or return null if no matches. Also see find.

first abstract Row? first()

Get the first row or return null if grid is empty.

flatMap Grid flatMap(|Row,Int->Obj?| f)

Return a new grid which maps each of the rows to zero or more new Dicts. The grid meta and existing column meta are maintained. New columns have empty meta.

get @Operator
abstract Row get(Int index)

Get a row by its index number. Throw UnsupportedErr is the grid doesn't support indexed based row access.

getRange @Operator
Grid getRange(Range r)

Return a new grid which is a slice of the rows in this grid. Negative indexes may be used to access from the end of the grid. The has the same meta and column definitions.

getSafe abstract Row? getSafe(Int index)

Get a row by its index number or if index is out of bounds then return null. Throw UnsupportedErr is the grid doesn't support indexed based row access.

has Bool has(Str name)

Return if this grid contains the given column name.

isEmpty Bool isEmpty()

Convenience for size equal to zero.

isErr Bool isErr()

Return if this is an error grid - meta has "err" tag.

isHisGrid Bool isHisGrid()

Return if this grid conforms to the history grid shape:

  • has at least two columns
  • first column is named "ts"
  • has meta hisStart and hisEnd DateTime values

This method does not check timezones or the ts cells.

join Grid join(Grid that, Obj joinCol)

Join two grids by column name. The joinCol parameter may be a Col or col name. Current implementation requires:

  • grids cannot have conflicting col names (other than join col)
  • each row in both grids must have a unique value for join col
  • grid level meta is merged
  • join column meta is merged

keepCols Grid keepCols(Obj[] toKeep)

Return a new grid with all the columns removed except the given columns. The toKeep columns can be Col instances or column names. Columns not found are silently ignored.

last virtual Row? last()

Get the last row or return null if grid is empty. Throw UnsupportedErr is the grid doesn't support indexed based row access.

map Grid map(|Row,Int->Obj?| f)

Return a new grid which maps the rows to new Dict. The grid meta and existing column meta are maintained. New columns have empty meta. If the mapping function returns null, then the row is removed.

mapToList Obj?[] mapToList(|Row,Int->Obj?| f)

Map each row to a list of values.

meta abstract Dict meta()

Meta-data for entire grid

missing Bool missing(Str name)

Return if this grid does not contains the given column name.

removeCol Grid removeCol(Obj col)

Return a new grid with the given column removed. The col parameter may be either a Col or column name. If column doesn't exist return this grid.

removeCols Grid removeCols(Obj[] toRemove)

Return a new grid with all the given columns removed. The toRemove columns can be Col instances or column names. Columns not found are silently ignored.

renameCol Grid renameCol(Obj oldCol, Str newName)

Return a new grid with the given column renamed. The oldCol parameter may be a Col or col name.

renameCols Grid renameCols(Obj:Str oldToNew)

Return a new grid with multiple columns renamed. The given map is keyed old column names and maps to new column names. Any column names not found are ignored.

reorderCols Grid reorderCols(Obj[] cols)

Return a new grid with the columns reordered. The given list of names represents the new order and must contain the same current Col instances or column names. Any column names not found are ignored.

replace Grid replace(Obj? from, Obj? to)

Replace every cell with the given from value with the to value. The resulting grid has the same grid and col meta. Replacement comparison is by via Fantom equality via == operator, so it will only replace scalar values or null.

setColMeta Grid setColMeta(Obj col, Obj? meta)

Return new grid with column meta-data replaced by given meta. The col parameter may be either a Col or column name. The meta may be any value accepted by Etc.makeDict If column is not found then return this. Also see addColMeta.

setMeta Grid setMeta(Obj? meta)

Return a new grid with grid level meta-data replaced by given meta. The meta may be any value accepted by Etc.makeDict. Also see addMeta.

size abstract Int size()

Get the number of rows in the grid. Throw UnsupportedErr if the grid doesn't support a size.

sort Grid sort(|Row,Row->Int| f)

Return a new Grid which is a copy of this grid with the rows sorted by the given comparator function.

sortCol Grid sortCol(Obj col)

Convenience for sort which sorts the given column. The col parameter can be a Col or a str name. The sorting algorithm used is the same one used by the table UI based on the localized display string. If column is not found then return this.

sortColr Grid sortColr(Obj col)

Sort the given column in reverse. See sortCol

sortDis Grid sortDis()

Sort using Etc.compareDis and Dict.dis.

sortr Grid sortr(|Row,Row->Int| f)

Return a new Grid which is a copy of this grid with the rows reverse sorted by the given comparator function.

unique Grid unique(Obj[] keyCols)

Return a new grid with only rows that define a unique key by the given key columns. If multiple rows have the same key cells, then the first row is returned and subsequent rows are removed. The keyCols can be Col instances or column names.

Haxall 4.0.5 ∙ 24-Feb-2026 14:33 EST