table/utils/structure
Functions
- adjustLastColumnIndex( table, dimensions = { dimensions.firstColumn, dimensions.firstRow, dimensions.lastColumn, dimensions.lastRow } ) → numberinternal- module:table/utils/structure~adjustLastColumnIndex- Returns adjusted last column index if selection covers part of a column with empty slots (spanned by other cells). The - dimensions.lastColumnis equal to last column index but selection might be bigger.- This happens only on rectangular selection so we analyze a case like this: - 0 1 2 3 +---+---+---+---+ | a | +---+---+---+---+ | b | c | d | +---+---+---+---+ | e | f | +---+---+---+---+ | g | h | +---+---+---+---+ ^ last column, each cell has colspan = 2, so we need to return 3, not 2Copy code- Parameters- table : ModelElement
- dimensions : object
- Properties- dimensions.firstColumn : number
- dimensions.firstRow : number
- dimensions.lastColumn : number
- dimensions.lastRow : number
 
 - Returns- number
- Adjusted last column index. 
 
- adjustLastRowIndex( table, dimensions = { dimensions.firstColumn, dimensions.firstRow, dimensions.lastColumn, dimensions.lastRow } ) → numberinternal- module:table/utils/structure~adjustLastRowIndex- Returns adjusted last row index if selection covers part of a row with empty slots (spanned by other cells). The - dimensions.lastRowis equal to last row index but selection might be bigger.- This happens only on rectangular selection so we analyze a case like this: - +---+---+---+---+ 0 | a | b | c | d | + + +---+---+ 1 | | e | f | g | + +---+ +---+ 2 | | h | | i | <- last row, each cell has rowspan = 2, + + + + + so we need to return 3, not 2 3 | | | | | +---+---+---+---+Copy code- Parameters- table : ModelElement
- dimensions : object
- Properties- dimensions.firstColumn : number
- dimensions.firstRow : number
- dimensions.lastColumn : number
- dimensions.lastRow : number
 
 - Returns- number
- Adjusted last row index. 
 
- cropTableToDimensions( sourceTable, cropDimensions = { cropDimensions.endColumn, cropDimensions.endRow, cropDimensions.startColumn, cropDimensions.startRow }, writer ) → ModelElementinternal- module:table/utils/structure~cropTableToDimensions- Returns a cropped table according to given dimensions. - To return a cropped table that starts at first row and first column and end in third row and column: - const croppedTable = cropTableToDimensions( table, { startRow: 1, endRow: 3, startColumn: 1, endColumn: 3 }, writer );Copy code- Calling the code above for the table below: - 0 1 2 3 4 0 1 2 ┌───┬───┬───┬───┬───┐Copy code- 0 │ a │ b │ c │ d │ e │ ├───┴───┤ ├───┴───┤ ┌───┬───┬───┐ 1 │ f │ │ g │ │ │ │ g │ 0 ├───┬───┴───┼───┬───┤ will return: ├───┴───┼───┤ 2 │ h │ i │ j │ k │ │ i │ j │ 1 ├───┤ ├───┤ │ │ ├───┤ 3 │ l │ │ m │ │ │ │ m │ 2 ├───┼───┬───┤ ├───┤ └───────┴───┘ 4 │ n │ o │ p │ │ q │ └───┴───┴───┴───┴───┘ - Parameters- sourceTable : ModelElement
- cropDimensions : object
- Properties- cropDimensions.endColumn : number
- cropDimensions.endRow : number
- cropDimensions.startColumn : number
- cropDimensions.startRow : number
 
- writer : ModelWriter
 - Returns
- getHorizontallyOverlappingCells( table, overlapColumn ) → Array<TableSlot>internal- module:table/utils/structure~getHorizontallyOverlappingCells- Returns slot info of cells that starts before and overlaps a given column. - In a table below, passing - overlapColumn = 3- 0 1 2 3 4 ┌───────┬───────┬───┐ │ a │ b │ c │ │───┬───┴───────┼───┤ │ d │ e │ f │ ├───┼───┬───────┴───┤ │ g │ h │ i │ ├───┼───┼───┬───────┤ │ j │ k │ l │ m │ ├───┼───┴───┼───┬───┤ │ n │ o │ p │ q │ └───┴───────┴───┴───┘ ^ Overlap column to check - will return slot info for cells: "b", "e", "i". - Parameters- table : ModelElement
- The table to check. 
- overlapColumn : number
- The index of the column to check. 
 - Returns- Array<TableSlot>
 
- getVerticallyOverlappingCells( table, overlapRow, startRow ) → Array<TableSlot>internal- module:table/utils/structure~getVerticallyOverlappingCells- Returns slot info of cells that starts above and overlaps a given row. - In a table below, passing - overlapRow = 3- ┌───┬───┬───┬───┬───┐Copy code- 0 │ a │ b │ c │ d │ e │ │ ├───┼───┼───┼───┤ 1 │ │ f │ g │ h │ i │ ├───┤ ├───┼───┤ │ 2 │ j │ │ k │ l │ │ │ │ │ ├───┼───┤ 3 │ │ │ │ m │ n │ <- overlap row to check ├───┼───┤ │ ├───│ 4 │ o │ p │ │ │ q │ └───┴───┴───┴───┴───┘ - will return slot info for cells: "j", "f", "k". - Parameters- table : ModelElement
- The table to check. 
- overlapRow : number
- The index of the row to check. 
- startRow : number
- row to start analysis. Use it when it is known that the cells above that row will not overlap. Default value is 0. - Defaults to - 0
 - Returns- Array<TableSlot>
 
- removeEmptyColumns( table, tableUtils ) → booleaninternal- module:table/utils/structure~removeEmptyColumns- Removes columns that have no cells anchored. - In table below: - +----+----+----+----+----+----+----+ | 00 | 01 | 03 | 04 | 06 | +----+----+----+----+ +----+ | 10 | 11 | 13 | | 16 | +----+----+----+----+----+----+----+ | 20 | 21 | 23 | 24 | 26 | +----+----+----+----+----+----+----+ ^--- empty ---^Copy code- Will remove columns 2 and 5. - Note: This is a low-level helper method for clearing invalid model state when doing table modifications. To remove a column from a table use - TableUtils.removeColumns().- Parameters- table : ModelElement
- tableUtils : TableUtils
 - Returns- boolean
- True if removed some columns. 
 
- removeEmptyRows( table, tableUtils ) → booleaninternal- module:table/utils/structure~removeEmptyRows- Removes rows that have no cells anchored. - In table below: - +----+----+----+ | 00 | 01 | 02 | +----+----+----+ | 10 | 11 | 12 | + + + + | | | | <-- empty +----+----+----+ | 30 | 31 | 32 | +----+----+----+ | 40 | 42 | + + + | | | <-- empty +----+----+----+ | 60 | 61 | 62 | +----+----+----+Copy code- Will remove rows 2 and 5. - Note: This is a low-level helper method for clearing invalid model state when doing table modifications. To remove a row from a table use - TableUtils.removeRows().- Parameters- table : ModelElement
- tableUtils : TableUtils
 - Returns- boolean
- True if removed some rows. 
 
- removeEmptyRowsColumns( table, tableUtils ) → voidinternal- module:table/utils/structure~removeEmptyRowsColumns- Removes rows and columns that have no cells anchored. - In table below: - +----+----+----+----+ | 00 | 02 | +----+----+ + | 10 | | +----+----+----+----+ | 20 | 22 | 23 | + + + + | | | | <-- empty row +----+----+----+----+ ^--- empty columnCopy code- Will remove row 3 and column 1. - Note: This is a low-level helper method for clearing invalid model state when doing table modifications. To remove a rows from a table use - TableUtils.removeRows()and- TableUtils.removeColumns()to remove a column.- Parameters- table : ModelElement
- tableUtils : TableUtils
 - Returns- void
 
- splitHorizontally( tableCell, splitRow, writer ) → null | ModelElementinternal- module:table/utils/structure~splitHorizontally- Splits the table cell horizontally. - Parameters- tableCell : ModelElement
- splitRow : number
- writer : ModelWriter
 - Returns- null | ModelElement
- Created table cell, if any were created. 
 
- splitVertically( tableCell, columnIndex, splitColumn, writer ) → ModelElementinternal- module:table/utils/structure~splitVertically- Splits the table cell vertically. - Parameters- tableCell : ModelElement
- columnIndex : number
- The table cell column index. 
- splitColumn : number
- The index of column to split cell on. 
- writer : ModelWriter
 - Returns- ModelElement
- Created table cell. 
 
- trimTableCellIfNeeded( tableCell, cellRow, cellColumn, limitRow, limitColumn, writer ) → voidinternal- module:table/utils/structure~trimTableCellIfNeeded- Adjusts table cell dimensions to not exceed limit row and column. - If table cell width (or height) covers a column (or row) that is after a limit column (or row) this method will trim "colspan" (or "rowspan") attribute so the table cell will fit in a defined limits. - Parameters- tableCell : ModelElement
- cellRow : number
- cellColumn : number
- limitRow : number
- limitColumn : number
- writer : ModelWriter
 - Returns- void