Module: nmodule/webEditors/rc/wb/table/tree/TreeTableModel


new (require("nmodule/webEditors/rc/wb/table/tree/TreeTableModel"))(params)

API Status: Development

A TableModel backed by a TreeNode. Each Row in the table must also be
backed by a TreeNode.

You should not typically call this constructor directly - use the .make()
method instead.

Extends:
Parameters:
Name Type Description
params Object
Properties
Name Type Argument Description
node module:nmodule/webEditors/rc/wb/tree/TreeNode <optional>

the
root TreeNode backing this model

Example
//when deciding which columns to use in the model, remember that rows
//will return the actual values via getSubject(), so ordinary
//Columns/MgrColumns can be used. custom column types can call
//row.getTreeNode() if necessary.
TreeTableModel.make({
  columns: [
    new PropertyMgrColumn('prop1'),
    new PropertyMgrColumn('prop2')
  ]
});

//when inserting, values must be TreeNodes.
treeTableModel.insertRows(components.map(function (comp) {
  var node = new TreeNode('component:' + comp.getName());
  node.value = function () { return comp; };
  return node;
});

Methods


<static> make(params)

Create a new TreeTableModel instance.

Parameters:
Name Type Description
params Object
Properties
Name Type Description
node module:nmodule/webEditors/rc/wb/tree/TreeNode

the root
node backing this model

Returns:

promise to be resolved with the new TreeTableModel instance, containing
one row per child node of the root node passed in

Type
Promise.<module:nmodule/webEditors/rc/wb/table/tree/TreeTableModel>

collapse(row)

Get child nodes of the given Row's TreeNode and remove their
corresponding Rows.

Parameters:
Name Type Description
row module:nmodule/webEditors/rc/wb/table/tree/TreeNodeRow
Returns:

promise to be resolved with an array of the rows that were removed

Type
Promise.<Array.<module:nmodule/webEditors/rc/wb/table/model/Row>>

expand(row)

Get child nodes of the given Row's TreeNode and insert new Rows for
each one.

Parameters:
Name Type Description
row module:nmodule/webEditors/rc/wb/table/tree/TreeNodeRow
Returns:

promise to be resolved with an array of the inserted rows

Type
Promise.<Array.<module:nmodule/webEditors/rc/wb/table/tree/TreeNodeRow>>

getColumn(name)

Get the column in this model matching the given name.

Parameters:
Name Type Description
name String
Inherited From:
Returns:

the matching
column, or null if not found

Type
module:nmodule/webEditors/rc/wb/table/model/Column

getColumnIndex(column)

Get the index of the given column.

Parameters:
Name Type Description
column module:nmodule/webEditors/rc/wb/table/model/Column
Inherited From:
Returns:

the column's index, or -1 if not found

Type
number

getColumns( [flags])

Get the current set of columns, optionally filtered by flags.

Parameters:
Name Type Argument Description
flags Number <optional>

if given, only return columns that have these
flags.

Inherited From:
Returns:
Type
Array.<module:nmodule/webEditors/rc/wb/table/model/Column>

getDepth(row)

Get the depth of this Row's TreeNode from the TreeTableModel's root
node. A direct child of the root will have a depth of 0, etc.

Parameters:
Name Type Description
row module:nmodule/webEditors/rc/wb/table/model/Row
Returns:

the depth of the Row, or null if the depth could
not be determined (e.g. the Row is not actually contained in this model).

Type
number | null

getEditableColumns()

Return all columns with the EDITABLE flag set.

Inherited From:
Returns:
Type
Array.<module:nmodule/webEditors/rc/wb/table/model/Column>

getRootNode()

Get the root node backing this TreeTableModel.

Returns:
Type
module:nmodule/webEditors/rc/wb/tree/TreeNode

getRowIndex(row)

Get the index of the given row.

Parameters:
Name Type Description
row module:nmodule/webEditors/rc/wb/table/model/Row
Inherited From:
Returns:

the row's index, or -1 if not found

Type
number

getRows()

Get the current set of rows.

Inherited From:
Returns:
Type
Array.<module:nmodule/webEditors/rc/wb/table/model/Row>

getValueAt(x, y)

Ask the column at the given index for the value from the row at the
given index.

Parameters:
Name Type Description
x Number

column index

y Number

row index

Inherited From:
Returns:

promise to be resolved with the value

Type
Promise

insertColumns(toInsert [, index])

Add new columns to the model. Will trigger a columnsAdded tinyevent.

Parameters:
Name Type Argument Description
toInsert Array.<module:nmodule/webEditors/rc/wb/table/model/Column>
index Number <optional>

index to insert the columns; will append to the
end if omitted

Inherited From:
Returns:

promise to be resolved if the insert is
successful

Type
Promise

insertRows(toInsert [, index])

Add new rows to the model. If non-Row instances are given, they will be
converted to Rows using makeRow().

Will trigger a rowsAdded tinyevent.

Parameters:
Name Type Argument Description
toInsert Array.<(module:nmodule/webEditors/rc/wb/table/model/Row|*)>
index Number <optional>

index to insert the rows; will append to the
end if omitted

Inherited From:
Returns:

promise to be resolved if the insert is
successful

Type
Promise

isExpandable(row)

Return true if the Row's TreeNode might have child nodes.

Parameters:
Name Type Description
row module:nmodule/webEditors/rc/wb/table/tree/TreeNodeRow
Returns:
Type
boolean

isExpanded(row)

Return true if the given Row is marked as expanded.

Parameters:
Name Type Description
row module:nmodule/webEditors/rc/wb/table/model/Row
Returns:
Type
boolean

makeRow(subject)

Create a new Row instance with a TreeNode as the subject.

Parameters:
Name Type Description
subject module:nmodule/webEditors/rc/wb/tree/TreeNode
Overrides:
Returns:
Type
module:nmodule/webEditors/rc/wb/table/tree/TreeNodeRow

removeColumns(toRemove [, end])

Remove columns from the model. Will trigger a columnsRemoved tinyevent.

Parameters:
Name Type Argument Description
toRemove Array.<module:nmodule/webEditors/rc/wb/table/model/Column> | Number

the columns to remove; or, start index

end Number <optional>

end index

Inherited From:
Returns:

promise to be resolved if the remove is
successful

Type
Promise

removeRows(toRemove [, end])

Remove rows from the model. Will trigger a rowsRemoved tinyevent, with
parameters:

  • rowsRemoved: the rows that were removed
  • indices: the original indices of the rows that were removed

Note that rowsRemoved and indices will always be sorted by their
original index in the model's rows, regardless of the order of rows passed
to the removeRows function.

Parameters:
Name Type Argument Description
toRemove Array.<module:nmodule/webEditors/rc/wb/table/model/Row> | Number

the rows to remove; or, start index

end <optional>

end index

Inherited From:
Returns:

promise to be resolved if the remove is
successful

Type
Promise

sort(sortFunction)

Sort the table's rows according to the given sort function. Emits a
rowsReordered event.

Remember that Array#sort is synchronous, so if the sort needs to use
any data that is asynchronously retrieved, the async work must be performed
before the sort so that the sort function can work synchronously.

Parameters:
Name Type Description
sortFunction function

standard array sort function to receive
two Row instances

Inherited From:
Throws:

if a non-Function is given

Type
Error

toggle(row)

Collapse the row if it is expanded, and vice versa.

Parameters:
Name Type Description
row module:nmodule/webEditors/rc/wb/table/model/Row
Returns:
Type
Promise