@omegagrid/grid-core 0.9.38 → 0.9.40
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/calculations/functions/math.d.ts +1 -1
- package/dist/constants.js +1 -1
- package/dist/constants.js.map +1 -1
- package/dist/model/cellModel.js +2 -2
- package/dist/model/cellModel.js.map +1 -1
- package/dist/model/columnModel.d.ts +3 -0
- package/dist/model/columnModel.d.ts.map +1 -1
- package/dist/model/columnModel.js +8 -0
- package/dist/model/columnModel.js.map +1 -1
- package/dist/model/filterModel.d.ts +10 -3
- package/dist/model/filterModel.d.ts.map +1 -1
- package/dist/model/filterModel.js +40 -13
- package/dist/model/filterModel.js.map +1 -1
- package/dist/model/gridModel.d.ts +2 -0
- package/dist/model/gridModel.d.ts.map +1 -1
- package/dist/model/gridModel.js +6 -0
- package/dist/model/gridModel.js.map +1 -1
- package/dist/model/options.d.ts +16 -2
- package/dist/model/options.d.ts.map +1 -1
- package/dist/model/options.js.map +1 -1
- package/dist/model/sortingModel.d.ts +3 -3
- package/dist/model/sortingModel.d.ts.map +1 -1
- package/dist/model/sortingModel.js +2 -2
- package/dist/model/sortingModel.js.map +1 -1
- package/package.json +3 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gridModel.js","sourceRoot":"","sources":["../../src/model/gridModel.ts"],"names":[],"mappings":"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","sourcesContent":["import { Matrix, tree, CustomProperties, Location, Model } from \"@omegagrid/core\";\nimport { log } from \"@omegagrid/core\";\nimport { CellValueType, ShiftOptions, SpillOptions, SpillResult, TabOptions } from \"../types\";\nimport { CalculationModel } from \"./calculationModel\";\nimport { CellRange } from \"../common/range\";\nimport { ConditionalFormats, ConditionalFormatSource } from \"./conditionalFormats\";\nimport { Sparklines, SparklineSource } from \"../sparklines/sparklines\";\nimport { CellModel, CellSource } from \"./cellModel\";\nimport { ColumnModel, ColumnHeaderModel, ColumnSource } from \"./columnModel\";\nimport { GroupModel } from \"./groupModel\";\nimport { CommentModel, CommentSource } from \"./commentModel\";\nimport { IterableAxisRange, IterableRange } from \"./iterableRange\";\nimport { NameSource, NamingModel } from \"./namingModel\";\nimport { initOptions, Options, OptionSource } from \"./options\";\nimport { RowModel, RowSource } from \"./rowModel\";\nimport { Style } from \"./style\";\nimport { StyleModel } from \"./styleModel\";\nimport { TableTheme, applyCellTheme, applyRowTheme, applyTheme } from \"./tableTheme\";\nimport { SortingModel } from \"./sortingModel\";\nimport { Merge, Merges } from \"./merges\";\n\n\n/** Source object type for grid */\nexport type GridSource = {\n\t/** grid index with group (readonly) */\n\tindex?: number,\n\t/** sheet name */\n\tname?: string,\n\t/** row array */\n\trows?: RowSource[],\n\t/** column array */\n\tcolumns?: ColumnSource[],\n\t/** cell array */\n\tcells?: CellSource[],\n\t/** grid options */\n\toptions?: OptionSource,\n\t/** sprakline definitions */\n\tsparklines?: SparklineSource[],\n\t/** conditional format definitions */\n\trules?: ConditionalFormatSource,\n\t/** comment array */\n\tcomments?: CommentSource[],\n\t/** style array */\n\tstyles?: Style[],\n\t/** renge names */\n\tnames?: NameSource[],\n\t/** custom properties */\n\tprops?: CustomProperties,\n\t/** tab settings used when grid is within group */\n\ttab?: TabOptions,\n\t/** table theme */\n\ttheme?: TableTheme,\n\t/** additional properties */\n\t[key: string]: unknown\n};\n\nconst DEFAULT_SOURCE_KEYS = [\n\t'index', 'name', 'rows', 'columns', 'cells', 'options', 'sparklines',\n\t'rules', 'comments', 'styles', 'names', 'props', 'tab', 'theme'\n];\n\nexport type Viewport = {\n\trows: RowModel[];\n\tcolumns: ColumnModel[];\n};\n\nexport class GridModel implements Model<GridSource> {\n\t\n\tindex: number;\n\tname: string;\n\ttab: TabOptions;\n\trows: RowModel[];\n\tvisibleRows: RowModel[];\n\trowRoot: RowModel;\n\tcolRoot: ColumnModel;\n\tcolumns: ColumnModel[];\n\tvisibleColumns: ColumnModel[];\n\tvisibleColumnIndex: Record<number, number>;\n\totherSourceData: Record<string, unknown>;\n\totherModels: Record<string, Set<Model>> = {};\n\tautofitColumns: Set<number> = new Set();\n\tautofitRows: Set<number> = new Set();\n\n\treadonly merges = new Merges(this);\n\treadonly styles = new StyleModel(this);\n\treadonly comments = new CommentModel(this);\n\treadonly calculations = new CalculationModel(this);\n\treadonly names = new NamingModel(this);\n\treadonly sorting = new SortingModel(this);\n\treadonly sparklines = new Sparklines(this);\n\treadonly conditionalFormats = new ConditionalFormats(this);\n\n\tprivate _mergedHeaders: (Merge & {h: ColumnHeaderModel})[];\n\tget mergedHeaders() { return this._mergedHeaders }\n\t\n\tprivate _filter = false\n\tget hasFilter() { return this._filter }\n\t\n\tprivate _maxRowLevel = 0;\n\tget hasRowTree() { return this._maxRowLevel > 0 }\n\tget hasRowTreeEnabled() { return this.hasRowTree && this.options.rowTree.enabled }\n\tget maxRowLevel() { return this._maxRowLevel }\n\t\n\tprivate _maxColumnLevel = 0;\n\tget hasColumnTree() { return this._maxColumnLevel > 0 }\n\tget hasColumnTreeEnabled() { return this.hasColumnTree && this.options.columnTree.enabled }\n\tget maxColumnLevel() { return this._maxColumnLevel }\n\t\n\tprivate _headerCount = 0;\n\tprivate _headerHeights: number[];\n\tget headerCount() { return this._headerCount }\n\tget columnHeaderCount() { return this.headerCount + (this.hasColumnTreeEnabled ? 1 : 0) + (this.hasFilter ? 1 : 0) }\n\n\tprivate _viewport: Viewport;\n\tprivate _levelBasedRowTree = true;\n\tprivate _levelBasedColTree = true;\n\n\tprotected _properties: CustomProperties;\n\tget properties() { return this._properties }\n\tset properties(v: CustomProperties) { this._properties = v }\n\n\tprotected _theme: TableTheme;\n\tget theme() { return this._theme }\n\tset theme(v: TableTheme) { this._theme = v }\n\n\tpublic readonly logger: log.Logger;\n\tpublic options: Options;\n\tpublic group: GroupModel;\n\n\tconstructor(source: GridSource, options?: Options, logger?: log.Logger) {\n\t\tthis.logger = logger;\n\t\tthis.options = options ?? initOptions(source.options);\n\t\tthis.populate(source);\n\t}\n\n\tgetConnectedModel(name: string) {\n\t\treturn this.group ? this.group.get(name) : null;\n\t}\n\n\tgetModelByRange(range: CellRange) {\n\t\treturn range.sheet ? this.getConnectedModel(range.sheet) : this;\n\t}\n\n\tgetCellByA1(a1: string) {\n\t\treturn this.getCellByRange(CellRange.fromA1(a1));\n\t}\n\n\tgetCellByRange(r: CellRange) {\n\t\treturn this.getCellByCoords(r.r1, r.c1);\n\t}\n\n\tgetCellByCoords(r: number, c: number) {\n\t\treturn this.rows[r]?.cell(c);\n\t}\n\n\tcell(coord1: string|number|CellRange, coord2?: number) {\n\t\tif (!isNaN(coord1 as number)) return this.getCellByCoords(coord1 as number, coord2 || 0);\n\t\tif (coord1 instanceof CellRange) return this.getCellByRange(coord1);\n\t\tif (typeof coord1 === 'string') return this.getCellByA1(coord1);\n\t\treturn null;\n\t}\n\n\tcreateRows(source: RowSource[], root = new RowModel(this, {l: -1}), indexOffset = 0) : [RowModel, RowModel[], number, boolean] {\n\t\tlet hasRowLevelBasedTree = false;\n\t\tlet hasRowParentBasedTree = false;\n\t\tthis.autofitRows.clear();\n\n\t\tconst rows = source.map((rowSource, r) => {\n\t\t\tif (!rowSource) rowSource = {};\n\t\t\tif (!isNaN(rowSource.l)) hasRowLevelBasedTree = true;\n\t\t\tif (rowSource.p != null) hasRowParentBasedTree = true;\n\t\t\tif (rowSource.h == 'auto') this.autofitRows.add(r);\n\t\t\tconst rowModel = new RowModel(this, rowSource);\n\t\t\trowModel.origIndex = r + indexOffset;\n\t\t\tif (rowModel.name) this.names.set(rowModel.name, CellRange.fullRow(r));\n\t\t\treturn rowModel;\n\t\t});\n\t\t\n\t\tlet maxRowLevel = -1;\n\t\tif (hasRowLevelBasedTree) maxRowLevel = tree.buildLevelBasedTree(rows, root, {\n\t\t\treverse: this.options.rowTree.reversed\n\t\t});\n\t\telse if (hasRowParentBasedTree) maxRowLevel = tree.buildParentBasedTree(rows, root);\n\t\telse root.children = rows;\n\n\t\tif (!hasRowParentBasedTree) hasRowLevelBasedTree = true; // default to level based tree\n\t\treturn [root, rows, maxRowLevel, hasRowLevelBasedTree];\n\t}\n\n\tinsertRowData(parent: RowModel, offset: number, source: RowSource[]) {\n\t\tconst res = this.createRows(source, new RowModel(this, {l: parent.level}), offset);\n\t\tthis._maxRowLevel = Math.max(this._maxRowLevel, res[2]);\n\t\tparent.insertChildren(res[0].children, offset);\n\t\tthis.indexRowsByTree();\n\t\tif (this.theme) {\n\t\t\tconst newRows = res[1];\n\t\t\tapplyRowTheme(this.theme, this, newRows);\n\t\t\tapplyCellTheme(this.theme, this, new CellRange(0, newRows[0].index, Infinity, newRows[newRows.length - 1].index));\n\t\t}\n\t}\n\n\tapplyTheme(theme: TableTheme, invalidateCellStyles?: boolean) {\n\t\tif (invalidateCellStyles) {\n\t\t\tfor (const cell of this.getInitializedCellIterator()) {\n\t\t\t\tcell.invalidateStyle();\n\t\t\t}\n\t\t}\n\t\tapplyTheme(theme, this);\n\t}\n\n\tpopulate(source: GridSource) {\n\t\tthis.index = source.index;\n\t\tthis.name = source.name ?? this.name;\n\t\tthis.tab = source.tab;\n\t\t\n\t\tlet hasColLevelBasedTree = false;\n\t\tlet hasColParentBasedTree = false;\n\n\t\tif (!source.columns) source.columns = new Array(this.options.columns).fill({});\n\t\tif (!source.rows) source.rows = new Array(this.options.rows).fill({});\n\n\t\t// styles\n\t\tif (source.styles) this.styles.populate(source.styles);\n\t\t\n\t\t// columns\n\t\tthis.autofitColumns.clear();\n\t\tthis.columns = source.columns.map((columnSource, c) => {\n\t\t\tif (!columnSource) columnSource = {};\n\t\t\tif (columnSource.l > 0) hasColLevelBasedTree = true;\n\t\t\tif (columnSource.p != null) hasColParentBasedTree = true;\n\t\t\tif (columnSource.w == 'auto') this.autofitColumns.add(c);\n\t\t\tconst colModel = new ColumnModel(this, columnSource);\n\t\t\tthis._filter = colModel.hasFilter || this._filter;\n\t\t\tif (colModel.name) this.names.set(colModel.name, CellRange.fullColumn(c));\n\t\t\treturn colModel;\n\t\t});\n \n\t\tthis._levelBasedColTree = hasColLevelBasedTree;\n\t\tthis._maxColumnLevel = -1;\n\t\tthis.colRoot = new ColumnModel(this, {l: -1});\n\t\tif (hasColLevelBasedTree) this._maxColumnLevel = tree.buildLevelBasedTree(this.columns, this.colRoot, {\n\t\t\treverse: this.options.columnTree.reversed\n\t\t});\n\t\telse if (hasColParentBasedTree) this._maxColumnLevel = tree.buildParentBasedTree(this.columns, this.colRoot);\n\t\telse this.colRoot.children = this.columns;\n\t\t\n\t\tif (!hasColParentBasedTree) this._levelBasedColTree = true; // default to level based tree\n\n\t\tthis.indexColumns();\n\t\tthis.indexVisibleColumns();\n\n\t\t// rows\n\t\t[this.rowRoot, this.rows, this._maxRowLevel, this._levelBasedRowTree] = this.createRows(source.rows);\n\t\tthis.indexRows();\n\t\tthis.indexVisibleRows();\n\t\tif (this.options.pageSize && this.options.pageSize <= this.rows.length) this.rowRoot.count = Infinity;\n\n\t\t// cells\n\t\tthis.merges.clear();\n\t\tsource.comments = source.comments || [];\n\t\tsource.cells?.forEach((cellSource, i) => {\n\t\t\tconst cell = this.rows[cellSource.r] ? this.rows[cellSource.r].cell(cellSource.c, cellSource) : null;\n\t\t\tif (!cell) {\n\t\t\t\tthis.logger?.error(`invalid cell definition (index ${i}): ${JSON.stringify(cellSource)}`);\n\t\t\t} else if (cellSource.cs > 1 || cellSource.rs > 1) {\n\t\t\t\tthis.merges.add({r: cell.r, c: cell.c, rs: cellSource.rs || 1, cs: cellSource.cs || 1});\n\t\t\t}\n\n\t\t\tif (cell && cellSource.comment) {\n\t\t\t\tsource.comments.push(Object.assign(cellSource.comment, {c: cellSource.c, r: cellSource.r}));\n\t\t\t}\n\t\t});\n\t\t\n\t\t// sparklines\n\t\tif (source.sparklines) {\n\t\t\ttry {\n\t\t\t\tthis.sparklines.populate(source.sparklines);\n\t\t\t} catch (error) {\n\t\t\t\tlog.getLogger().error(`Sparkline init error: ${error}`);\n\t\t\t}\n\t\t}\n\n\t\t// names\n\t\tif (source.names) {\n\t\t\ttry {\n\t\t\t\tthis.names.populate(source.names);\n\t\t\t} catch (error) {\n\t\t\t\tlog.getLogger().error(`Named range init error: ${error}`);\n\t\t\t}\n\t\t}\n\n\t\t// conditional formats\n\t\tif (source.rules) {\n\t\t\ttry {\n\t\t\t\tthis.conditionalFormats.populate(source.rules);\n\t\t\t} catch (error) {\n\t\t\t\tlog.getLogger().error(`Conditional formats init error: ${error}`);\n\t\t\t}\n\t\t}\n\n\t\t// theme\n\t\tif (source.theme) {\n\t\t\ttry {\n\t\t\t\tthis.applyTheme(source.theme);\n\t\t\t\tthis._theme = source.theme;\n\t\t\t} catch (error) {\n\t\t\t\tlog.getLogger().error(`Theme init error: ${error}`);\n\t\t\t}\n\t\t}\n\t\t\n\t\t// comments\n\t\tif (source.comments) {\n\t\t\ttry {\n\t\t\t\tthis.comments.populate(source.comments);\n\t\t\t} catch (error) {\n\t\t\t\tlog.getLogger().error(`Comment init error: ${error}`);\n\t\t\t}\n\t\t}\n\t\t\n\t\t// custom properties\n\t\tthis._properties = source.props;\n\n\t\t// additional properties\n\t\tthis.otherSourceData = {};\n\t\tconst defaultKeys = new Set(DEFAULT_SOURCE_KEYS);\n\t\tconst keys = Object.keys(source).filter(k => !defaultKeys.has(k));\n\t\tkeys.forEach(k => this.otherSourceData[k] = source[k]);\n\n\t\t// default sort\n\t\tif (this.options.sorting?.defaultSettings) {\n\t\t\tthis.sorting.settings = this.options.sorting.defaultSettings;\n\t\t}\n\n\t\tthis.calcHeaderHeights();\n\t}\n\n\tgetSourceData() {\n\t\tconst data = {\n\t\t\tindex: this.index,\n\t\t\tname: this.name,\n\t\t\ttab: this.tab,\n\t\t\tcolumns: this.columns.map(col => col.getSourceData()),\n\t\t\trows: this.rows.map(row => row.getSourceData()),\n\t\t\tstyles: this.styles.getSourceData(),\n\t\t\trules: this.conditionalFormats.getSourceData(),\n\t\t\tsparklines: this.sparklines.getSourceData(),\n\t\t\tnames: this.names.getSourceData(),\n\t\t\toptions: this.options,\n\t\t} as GridSource;\n\n\t\tif (this._properties) data.props = this._properties;\n\n\t\tconst cells = [];\n\t\tlet cellData: CellSource;\n\t\tfor (let r = 0; r < this.rows.length; r++) {\n\t\t\tfor (let c = 0; c < this.columns.length; c++) {\n\t\t\t\tcellData = this.rows[r].cell(c).getSourceData();\n\t\t\t\tif (Object.keys(cellData).length > 0) {\n\t\t\t\t\tcellData.r = r;\n\t\t\t\t\tcellData.c = c;\n\t\t\t\t\tcells.push(cellData);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (cells.length > 0) data.cells = cells;\n\t\t\n\t\tconst styles = [] as Style[];\n\t\tthis.styles.clean();\n\t\tthis.styles.map.forEach(style => styles.push(style));\n\t\tif (styles.length > 0) data.styles = styles;\n\n\t\tconst otherModelKeys = new Set([\n\t\t\t...Object.keys(this.otherModels ?? {}),\n\t\t\t...Object.keys(this.otherSourceData ?? {})\n\t\t]);\n\t\totherModelKeys.forEach(k => data[k] = this.otherModels[k] \n\t\t\t? Array.from(this.otherModels[k]).map(m => m.getSourceData())\n\t\t\t: this.otherSourceData[k]\n\t\t);\n\n\t\treturn data;\n\t}\n\n\tcalcHeaderHeights() {\n\t\tthis._headerCount = 0;\n\t\tthis._headerHeights = [];\n\t\tthis.columns.forEach((column) => {\n\t\t\tthis._headerCount = column.header ? column.header.length : this._headerCount;\n\t\t\tif (this._headerHeights.length < this._headerCount) {\n\t\t\t\tthis._headerHeights.push(...Array(this._headerCount - this._headerHeights.length).fill(0));\n\t\t\t}\n\n\t\t\tcolumn.header?.forEach((h: ColumnHeaderModel, r) => {\n\t\t\t\tif (r >= this._headerHeights.length) {\n\t\t\t\t\tthis._headerHeights.push(0);\n\t\t\t\t}\n\t\t\t\tthis._headerHeights[r] = Math.max(this._headerHeights[r], h.height ?? 0);\n\t\t\t});\n\t\t});\n\t}\n\n\tindexRows() {\n\t\tthis.visibleRows = [];\n\t\tthis.rows.forEach((row, r) => {\n\t\t\trow.index = r;\n\t\t\tif (!row.isLoaded) row.collapsed = true;\n\t\t\tif (!row.hidden && row.filterState != tree.FilterState.Filtered) {\n\t\t\t\trow.visibleIndex = this.visibleRows.length;\n\t\t\t\tthis.visibleRows.push(row);\n\t\t\t}\n\t\t});\n\t}\n\n\tindexVisibleRows() {\n\t\tthis.visibleRows = [];\n\t\tlet r = 0;\n\t\tif (this._levelBasedRowTree) {\n\t\t\tthis.rowRoot.walkVisible((node: RowModel) => {\n\t\t\t\tnode.visibleIndex = r++;\n\t\t\t\tthis.visibleRows.push(node)\n\t\t\t});\n\n\t\t\t// reverse order of row index\n\t\t\tif (this.options.rowTree.reversed) {\n\t\t\t\tconst reversedVisibleRows = new Array(this.visibleRows.length);\n\t\t\t\tthis.visibleRows.forEach((row, i) => {\n\t\t\t\t\tr = this.visibleRows.length - i - 1;\n\t\t\t\t\trow.visibleIndex = r;\n\t\t\t\t\treversedVisibleRows[r] = row;\n\t\t\t\t});\n\t\t\t\tthis.visibleRows = reversedVisibleRows;\n\t\t\t}\n\t\t} else {\n\t\t\t// in parent based node rows do not have to respect tree order\n\t\t\tthis.rowRoot.walkVisible((node: RowModel) => this.visibleRows[node.index] = node);\n\t\t\tthis.visibleRows = this.visibleRows.filter(row => {\n\t\t\t\tif (row) {\n\t\t\t\t\trow.visibleIndex = r++;\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t});\n\t\t}\n\t}\n\n\tindexRowsByTree() {\n\t\tthis.rows = [];\n\t\tlet r = 0;\n\t\tthis.rowRoot.walk((row: RowModel) => {\n\t\t\trow.index = r++;\n\t\t\tthis.rows.push(row);\n\t\t});\n\t\tif (this.options.rowTree.reversed) this.rows.reverse();\n\t\tthis.indexVisibleRows();\n\t}\n\n\tindexColumns() {\n\t\tthis.visibleColumns = [];\n\t\tthis.columns.forEach((column, c) => {\n\t\t\tcolumn.index = c;\n\t\t\tif (!column.hidden) this.visibleColumns.push(column);\n\t\t});\n\t}\n\n\tindexVisibleColumns() {\n\t\tthis.visibleColumns = [];\n\t\tthis.visibleColumnIndex = {};\n\t\tlet c = 0;\n\t\tthis.colRoot.walkVisible((node: ColumnModel) => {\n\t\t\tnode.visibleIndex = c;\n\t\t\tthis.visibleColumnIndex[node.index] = c++;\n\t\t\tthis.visibleColumns.push(node);\n\t\t});\n\n\t\t// reverse order of column index\n\t\tif (this.options.columnTree.reversed) {\n\t\t\tthis.visibleColumnIndex = {};\n\t\t\tconst reversedVisibleColumns = new Array(this.visibleColumns.length);\n\t\t\tthis.visibleColumns.forEach((column, i) => {\n\t\t\t\tc = this.visibleColumns.length - i - 1;\n\t\t\t\tcolumn.visibleIndex = c;\n\t\t\t\tthis.visibleColumnIndex[column.index] = c;\n\t\t\t\treversedVisibleColumns[c] = column;\n\t\t\t});\n\t\t\tthis.visibleColumns = reversedVisibleColumns;\n\t\t}\n\n\t\tthis.indexHeaders();\n\t}\n\n\tindexHeaders() {\n\t\tthis._mergedHeaders = [];\n\t\tthis._headerCount = 0;\n\t\tthis.colRoot.walkVisible((column: ColumnModel) => {\n\t\t\tthis._headerCount = Math.max(column.header ? column.header.length : 0, this._headerCount);\n\t\t\tcolumn.mergedHeaders.forEach(h => this._mergedHeaders.push({\n\t\t\t\th: h,\n\t\t\t\tc: column.index,\n\t\t\t\tr: h.r,\n\t\t\t\tcs: column.calculateRealColspan(h.cs ?? 1),\n\t\t\t\trs: h.rs ?? 1\n\t\t\t}));\n\t\t});\n\n\t\t// hidden header cells\n\t\tthis._mergedHeaders.forEach(h => {\n\t\t\tif (h.h.hidden) return;\n\t\t\t\n\t\t\tfor (let c = h.c; c < h.c + h.cs; c++) {\n\t\t\t\tfor (let r = h.r; r < h.r + h.rs; r++) {\n\t\t\t\t\tif ((r > h.r || c > h.c) && this.columns[c] && this.columns[c].header[r]) {\n\t\t\t\t\t\tthis.columns[c].header[r].hidden = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\tthis.calcHeaderHeights();\n\t}\n\n\tremoveHeader(r: number) {\n\t\tthis.columns.forEach(column => {\n\t\t\tif (r < column.header.length) column.header.splice(r, 1);\n\t\t});\n\t\tthis.indexHeaders();\n\t}\n\n\tclearRows = () : RowModel[] => {\n\t\tthis.rowRoot.clearChildren();\n\t\tthis.rows = [];\n\t\treturn this.rows;\n\t}\n\t\n\tclearColumns = () : ColumnModel[] => this.columns = [];\n\n\tclear() {\n\t\tthis.clearRows();\n\t\tthis.clearColumns();\n\t\tthis.resetViewport();\n\t}\n\n\tresetViewport() {\n\t\tthis._viewport = null;\n\t\treturn this;\n\t}\n\n\tgetViewport(\n\t\toffset: {c: number, r: number}, \n\t\tviewportSize: {w: number, h: number}, \n\t\tfreeze: {t: number, l: number, b: number, r: number},\n\t) : Viewport {\n\t\tconst viewportRows: RowModel[] = [];\n\t\tconst viewportColumns: ColumnModel[] = [];\n\n\t\tlet row: RowModel;\n\t\tlet remainingHeight = viewportSize.h;\n\t\tlet r = 0;\n\t\t// top rows\n\t\tfor (r = 0; r < freeze.t; r++) {\n\t\t\trow = this.visibleRows[r];\n\t\t\tremainingHeight -= row.height;\n\t\t\tviewportRows.push(row);\n\t\t}\n\n\t\t// bottom rows\n\t\tfor (r = this.visibleRows.length - freeze.b; r < this.visibleRows.length; r++) {\n\t\t\trow = this.visibleRows[r];\n\t\t\tremainingHeight -= row.height;\n\t\t}\n\n\t\t// center rows\n\t\tr = freeze.t + offset.r;\n\t\twhile (remainingHeight > 0 && r < this.visibleRows.length) {\n\t\t\trow = this.visibleRows[r++];\n\t\t\tremainingHeight -= row.height;\n\t\t\tviewportRows.push(row);\n\t\t}\n\n\t\t// bottom rows again\n\t\tfor (r = this.visibleRows.length - freeze.b; r < this.visibleRows.length; r++) {\n\t\t\tviewportRows.push(this.visibleRows[r]);\n\t\t}\n\n\t\tlet column: ColumnModel;\n\t\tlet remainingWidth = viewportSize.w;\n\t\tlet c = 0;\n\n\t\t// left columns\n\t\tfor (c = 0; c < freeze.l; c++) {\n\t\t\tcolumn = this.visibleColumns[c];\n\t\t\tremainingWidth -= column.width;\n\t\t\tviewportColumns.push(column);\n\t\t}\n\n\t\t// right columns\n\t\tfor (c = this.visibleColumns.length - freeze.r; c < this.visibleColumns.length; c++) {\n\t\t\tcolumn = this.visibleColumns[c];\n\t\t\tremainingWidth -= column.width;\n\t\t}\n\n\t\t// center columns\n\t\tc = freeze.l + offset.c;\n\t\twhile (remainingWidth > 0 && c < this.visibleColumns.length) {\n\t\t\tcolumn = this.visibleColumns[c++];\n\t\t\tremainingWidth -= column.width;\n\t\t\tviewportColumns.push(column);\n\t\t}\n\n\t\t// right columns again\n\t\tfor (c = this.visibleColumns.length - freeze.r; c < this.visibleColumns.length; c++) {\n\t\t\tviewportColumns.push(this.visibleColumns[c]);\n\t\t}\n\n\t\treturn (this._viewport = {rows: viewportRows, columns: viewportColumns});\n\t}\n\n\tcalculateViewport() {\n\t\treturn this._viewport ? this.calculations.calculateViewport(this._viewport) : [];\n\t}\n\n\tgetValuesInRange(range: CellRange, formattedValues = false) {\n\t\trange = range.intersect(this.gridRange);\n\t\tif (!range) return [];\n\t\tconst {columns, rows} = range.size;\n\t\tconst values: Matrix<unknown> = new Array(rows);\n\t\tlet i = 0, j = 0;\n\t\tlet row: RowModel;\n\t\tfor (let r = range.r1; r <= range.r2; r++) {\n\t\t\tvalues[i] = new Array(columns);\n\t\t\tj = 0;\n\t\t\trow = this.rows[r];\n\t\t\tfor (let c = range.c1; c <= range.c2; c++) {\n\t\t\t\tvalues[i][j++] = formattedValues ? row.cell(c).formattedValue : row.cell(c).value;\n\t\t\t}\n\t\t\t++i;\n\t\t}\n\n\t\treturn values;\n\t}\n\n\tsetRowExpandLevel(level: number) {\n\t\tthis.rows.forEach(row => {\n\t\t\trow.collapsed = (!row.isLoaded && !row.isPartialyLoaded) || row.level >= level;\n\t\t\tif (row.level <= level) row.hidden = false; // remove hidden flag for visible rows\n\t\t});\n\t\tthis.indexVisibleRows();\n\t}\n\t\n\tsetColumnExpandLevel(level: number) {\n\t\tthis.columns.forEach(column => column.collapsed = column.level >= level);\n\t\tthis.indexVisibleColumns();\n\t}\n\n\tgetViewportRange() {\n\t\treturn this._viewport ? new CellRange(\n\t\t\tthis._viewport.columns[0].index,\n\t\t\tthis._viewport.rows[0].index,\n\t\t\tthis._viewport.columns[this._viewport.columns.length - 1].index,\n\t\t\tthis._viewport.rows[this._viewport.rows.length - 1].index,\n\t\t) : null;\n\t}\n\n\tget gridRange() {\n\t\treturn new CellRange(0, 0, this.columns.length - 1, this.rows.length - 1);\n\t}\n\n\tgetRangeIterator(range: CellRange, withinViewport = false) {\n\t\treturn new IterableRange(this, withinViewport && this._viewport \n\t\t\t? range.intersect(this.getViewportRange()) \n\t\t\t: range.intersect(this.gridRange)\n\t\t);\n\t}\n\n\tgetInitializedCellIterator() {\n\t\treturn new IterableRange(this, this.gridRange, true);\n\t}\n\n\tgetRowIterator(range: CellRange, withinViewport = false) {\n\t\trange = withinViewport && this._viewport \n\t\t\t? range.intersect(this.getViewportRange())\n\t\t\t: range.intersect(this.gridRange);\n\t\treturn new IterableAxisRange<RowModel>(this, range, 'rows');\n\t}\n\n\tgetColumnIterator(range: CellRange, withinViewport = false) {\n\t\trange = withinViewport && this._viewport\n\t\t\t? range.intersect(this.getViewportRange())\n\t\t\t: range.intersect(this.gridRange);\n\t\treturn new IterableAxisRange<ColumnModel>(this, range, 'columns');\n\t}\n\n\tgetCellArray(range: CellRange) {\n\t\tconst cells: CellModel[] = [];\n\t\tfor (const cell of this.getRangeIterator(range)) {\n\t\t\tcells.push(cell);\n\t\t}\n\t\treturn cells;\n\t}\n\n\ttransformRangeToMatrix<T>(range: CellRange, transform: (cell: CellModel) => T): Matrix<T> {\n\t\tlet row: RowModel, cell: CellModel, rowValues: T[];\n\t\trange = range.intersect(this.gridRange);\n\t\tconst cells: Matrix<T> = [];\n\t\tfor (let r = range.r1; r <= range.r2; r++) {\n\t\t\trow = this.rows[r];\n\t\t\tif (!row) continue;\n\t\t\trowValues = [];\n\t\t\tfor (let c = range.c1; c <= range.c2; c++) {\n\t\t\t\tcell = row.cell(c);\n\t\t\t\tif (cell) rowValues.push(transform(cell));\n\t\t\t}\t\n\t\t\tcells.push(rowValues);\n\t\t}\n\t\treturn cells;\n\t}\n\n\tgetCellMatrix(range: CellRange) {\n\t\treturn this.getModelByRange(range)?.transformRangeToMatrix(range, c => c);\n\t}\n\n\tgetValueMatrix(range: CellRange) {\n\t\treturn this.getModelByRange(range)?.transformRangeToMatrix(range, c => c.value);\n\t}\n\n\tshift(options: ShiftOptions) {\n\t\toptions.sheet = this.name;\n\t\tthis.merges.shift(options);\n\t\tthis.calculations.shift(options);\n\t\tthis.names.shift(options);\n\t\tthis.comments.shift(options);\n\t\tthis.sparklines.shift(options);\n\t}\n\n\tclearCalculations(all = false) {\n\t\tif (all && this.group) this.group.models.forEach(m => m.calculations.refresh());\n\t\telse this.calculations.refresh();\n\t}\n\n\trefreshSparklines() {\n\t\tthis.sparklines.updateRangeMaps();\n\t\tfor (const cell of this.getInitializedCellIterator()) {\n\t\t\tcell.invalidateStyle();\n\t\t}\n\t}\n\n\tclearCalculatedStyles() {\n\t\tthis.conditionalFormats.refresh();\n\t\tconst cells = [] as CellModel[];\n\t\tfor (const cell of this.getInitializedCellIterator()) {\n\t\t\tcells.push(cell);\n\t\t\tcell.invalidateStyle();\n\t\t}\n\t}\n\n\tinsertColumns(index: number, count: number, after = false) {\n\t\tconst parent = this.columns[Math.min(this.columns.length - 1, index)].parent;\n\t\tif (after) ++index;\n\t\tthis.shift({index: index, offset: count, direction: 'right'});\n\t\tfor (let r = 0; r < this.rows.length; r++) this.rows[r].insertColumns(index, count, false);\n\t\tconst newColumns = (new Array(count)).fill(null).map(() => new ColumnModel(this));\n\t\tthis.columns.splice(index, 0, ...newColumns);\n\t\tif (this.maxColumnLevel > 0) parent.insertChildren(newColumns, index - (parent.index || -1) - 1);\n\t\tthis.indexColumns();\n\t\tthis.clearCalculations(true);\n\t\treturn newColumns;\n\t}\n\n\tdeleteColumns(index: number, count: number) {\n\t\tconst parent = this.columns[index].parent;\n\t\tthis.shift({index: index, offset: count, direction: 'left'});\n\t\tconst deletedCells: CellModel[][] = [];\n\t\tfor (let r = 0; r < this.rows.length; r++)\n\t\t\tdeletedCells.push(this.rows[r].deleteColumns(index, count, false));\n\t\t// const deletedColumns: [ColumnModel, CellModel[]][] = this.columns.splice(index, count)\n\t\t// \t.map((column, i) => [column, deletedCells[i]]);\n\t\tconst deletedColumns = this.columns.splice(index, count);\n\t\tparent?.deleteChildren(deletedColumns);\n\t\tthis.indexColumns();\n\t\tthis.clearCalculations(true);\n\t\treturn deletedColumns;\n\t}\n\n\tinsertRows(index: number, rows: number|RowModel[], after = false) {\n\t\tconst parentIndex = Math.min(this.rows.length - 1, index);\n\t\tconst parent = parentIndex < 0 ? this.rowRoot : this.rows[parentIndex].parent;\n\t\tif (after) ++index;\n\t\tconst count = isNaN(rows as number) ? (rows as RowModel[]).length : rows as number;\n\t\tthis.shift({index: index, offset: count, direction: 'down'});\n\t\tconst newRows = isNaN(rows as number) ? (rows as RowModel[]) : (new Array(count)).fill(null).map(() => new RowModel(this));\n\t\tthis.rows.splice(index, 0, ...newRows);\n\t\tif (this.maxRowLevel > 0) parent.insertChildren(newRows, index - (parent.index || -1) - 1);\n\t\tthis.indexRows();\n\t\tif (this.theme) {\n\t\t\tapplyRowTheme(this.theme, this, newRows);\n\t\t\tapplyCellTheme(this.theme, this, new CellRange(0, newRows[0].index, Infinity, newRows[newRows.length - 1].index));\n\t\t}\n\t\tthis.clearCalculations(true);\n\t\treturn newRows;\n\t}\n\n\tdeleteRows(index: number, count: number) {\n\t\tconst parent = this.rows[index].parent;\n\t\tthis.shift({index: index, offset: count, direction: 'up'});\n\t\tconst deletedRows = this.rows.splice(index, count);\n\t\tparent?.deleteChildren(deletedRows);\n\t\tthis.indexRows();\n\t\tthis.clearCalculations(true);\n\t\treturn deletedRows;\n\t}\n\n\tmoveRows(index: number, count: number, targetIndex: number) {\n\t\tconst movingRows = this.rows.splice(index, count);\n\t\tthis.rows.splice(targetIndex, 0, ...movingRows);\n\t\tthis.shift({index: index, offset: targetIndex - index, direction: 'down', maxIndex: index + count - 1});\n\t\tthis.indexRows();\n\t\tthis.clearCalculations(true);\n\t\treturn movingRows;\n\t}\n\n\tmoveColumns(index: number, count: number, targetIndex: number) {\n\t\tconst movingColumns = this.columns.splice(index, count);\n\t\tthis.columns.splice(targetIndex, 0, ...movingColumns);\n\t\tthis.shift({index: index, offset: targetIndex - index, direction: 'right', maxIndex: index + count - 1});\n\t\tthis.indexColumns();\n\t\tthis.clearCalculations(true);\n\t\treturn movingColumns;\n\t}\n\n\tspillValues(opt: SpillOptions): SpillResult {\n\t\tconst {cell, values, displayValues, propertyCell} = opt;\n\t\tconst cells: CellModel[] = [];\n\t\tconst oldValues: CellValueType[] = [];\n\t\tconst empty = values.length === 0 || values[0].length === 0;\n\t\tlet row: RowModel, spillCell: CellModel;\n\n\t\tconst range = empty ? null : new CellRange(\n\t\t\tcell.c, cell.r,\n\t\t\tcell.c + values[0].length - 1,\n\t\t\tcell.r + values.length - 1\n\t\t)\n\n\t\tif (cell.spillRange) {\n\t\t\t// clear values from previous evaluations not contained in the new spill range\n\t\t\tthis.getRangeIterator(cell.spillRange, true).forEach(c => {\n\t\t\t\tif (cell != c && !range?.contains(c.range)) c.clearSpilledValue();\n\t\t\t});\n\t\t}\n\n\t\tcell.spillRange = range;\n\t\tif (empty) return {cells, oldValues, range: null};\n\n\t\tfor (let r = range.r1; r <= range.r2; r++) {\n\t\t\trow = this.rows[r];\n\t\t\tif (!row) continue;\n\t\t\tconst r2 = r - range.r1;\n\t\t\tfor (let c = range.c1; c <= range.c2; c++) {\n\t\t\t\tconst c2 = c - range.c1;\n\t\t\t\tspillCell = row.cell(c);\n\t\t\t\tif (spillCell.editable) {\n\t\t\t\t\toldValues.push(spillCell.value2 as CellValueType);\n\t\t\t\t\tspillCell.spillValue(values[r2][c2], cell);\n\t\t\t\t\tif (propertyCell) {\n\t\t\t\t\t\tspillCell.format = propertyCell.format;\n\t\t\t\t\t\tspillCell.type = propertyCell.type;\n\t\t\t\t\t}\n\t\t\t\t\tif (displayValues && displayValues[r2][c2] != null) spillCell.displayValue = displayValues[r2][c2];\n\t\t\t\t\tcells.push(spillCell);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn {cells, oldValues, range};\n\t}\n\n\tgetCellByName(name: string, contextRange: CellRange, searchGroup = true): CellModel {\n\t\tconst cell = this.names.getCellByName(name, contextRange);\n\t\tif (cell) return cell;\n\t\telse if (this.group && searchGroup) return this.group.getCellByName(name, contextRange);\n\t\treturn null;\n\t}\n\n\tgetRangeByName(name: string, searchGroup = true): CellRange {\n\t\tconst range = this.names.getRangeByName(name);\n\t\tif (range) return range;\n\t\telse if (this.group && searchGroup) return this.group.getRangeByName(name);\n\t\treturn null;\n\t}\n\n\tgetValueMatrixByName(name: string, searchGroup = true): Matrix<unknown> {\n\t\tconst matrix = this.names.getRangeByName(name);\n\t\tif (matrix) return this.getValueMatrix(matrix);\n\t\telse if (this.group && searchGroup) return this.group.getValueMatrixByName(name);\n\t\treturn null;\n\t}\n\n\trebuildRowTree() {\n\t\tconst buildFunction = this._levelBasedRowTree ? tree.buildLevelBasedTree : tree.buildParentBasedTree;\n\t\tthis._maxRowLevel = buildFunction(this.rows, this.rowRoot, {\n\t\t\treverse: this.options.rowTree.reversed\n\t\t});\n\t\tthis.indexRowsByTree();\n\t}\n\n\trebuildColumnTree() {\n\t\tconst buildFunction = this._levelBasedColTree ? tree.buildLevelBasedTree : tree.buildParentBasedTree;\n\t\tthis._maxColumnLevel = buildFunction(this.columns, this.colRoot, {\n\t\t\treverse: this.options.columnTree.reversed\n\t\t});\n\t\tthis.indexColumns();\n\t}\n\n\tcalculateCellOffset(cell: CellRange) : Location {\n\t\tlet x = 0, y = 0;\n\t\tfor (let c = 0; c < cell.c1; c++) {\n\t\t\tif (!this.columns[c]) break;\n\t\t\tx += this.columns[c].width;\n\t\t}\n\t\tfor (let r = 0; r < cell.r1; r++) {\n\t\t\tif (!this.rows[r]) break;\n\t\t\ty += this.rows[r].height;\n\t\t}\n\t\treturn { x, y };\n\t}\n\n}"]}
|
|
1
|
+
{"version":3,"file":"gridModel.js","sourceRoot":"","sources":["../../src/model/gridModel.ts"],"names":[],"mappings":"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","sourcesContent":["import { Matrix, tree, CustomProperties, Location, Model } from \"@omegagrid/core\";\nimport { log } from \"@omegagrid/core\";\nimport { CellValueType, ShiftOptions, SpillOptions, SpillResult, TabOptions } from \"../types\";\nimport { CalculationModel } from \"./calculationModel\";\nimport { CellRange } from \"../common/range\";\nimport { ConditionalFormats, ConditionalFormatSource } from \"./conditionalFormats\";\nimport { Sparklines, SparklineSource } from \"../sparklines/sparklines\";\nimport { CellModel, CellSource } from \"./cellModel\";\nimport { ColumnModel, ColumnHeaderModel, ColumnSource } from \"./columnModel\";\nimport { GroupModel } from \"./groupModel\";\nimport { CommentModel, CommentSource } from \"./commentModel\";\nimport { IterableAxisRange, IterableRange } from \"./iterableRange\";\nimport { NameSource, NamingModel } from \"./namingModel\";\nimport { initOptions, Options, OptionSource } from \"./options\";\nimport { RowModel, RowSource } from \"./rowModel\";\nimport { Style } from \"./style\";\nimport { StyleModel } from \"./styleModel\";\nimport { TableTheme, applyCellTheme, applyRowTheme, applyTheme } from \"./tableTheme\";\nimport { SortingModel } from \"./sortingModel\";\nimport { Merge, Merges } from \"./merges\";\nimport { FilterModel } from \"./filterModel\";\n\n\n/** Source object type for grid */\nexport type GridSource = {\n\t/** grid index with group (readonly) */\n\tindex?: number,\n\t/** sheet name */\n\tname?: string,\n\t/** row array */\n\trows?: RowSource[],\n\t/** column array */\n\tcolumns?: ColumnSource[],\n\t/** cell array */\n\tcells?: CellSource[],\n\t/** grid options */\n\toptions?: OptionSource,\n\t/** sprakline definitions */\n\tsparklines?: SparklineSource[],\n\t/** conditional format definitions */\n\trules?: ConditionalFormatSource,\n\t/** comment array */\n\tcomments?: CommentSource[],\n\t/** style array */\n\tstyles?: Style[],\n\t/** renge names */\n\tnames?: NameSource[],\n\t/** custom properties */\n\tprops?: CustomProperties,\n\t/** tab settings used when grid is within group */\n\ttab?: TabOptions,\n\t/** table theme */\n\ttheme?: TableTheme,\n\t/** additional properties */\n\t[key: string]: unknown\n};\n\nconst DEFAULT_SOURCE_KEYS = [\n\t'index', 'name', 'rows', 'columns', 'cells', 'options', 'sparklines',\n\t'rules', 'comments', 'styles', 'names', 'props', 'tab', 'theme'\n];\n\nexport type Viewport = {\n\trows: RowModel[];\n\tcolumns: ColumnModel[];\n};\n\nexport class GridModel implements Model<GridSource> {\n\t\n\tindex: number;\n\tname: string;\n\ttab: TabOptions;\n\trows: RowModel[];\n\tvisibleRows: RowModel[];\n\trowRoot: RowModel;\n\tcolRoot: ColumnModel;\n\tcolumns: ColumnModel[];\n\tvisibleColumns: ColumnModel[];\n\tvisibleColumnIndex: Record<number, number>;\n\totherSourceData: Record<string, unknown>;\n\totherModels: Record<string, Set<Model>> = {};\n\tautofitColumns: Set<number> = new Set();\n\tautofitRows: Set<number> = new Set();\n\n\treadonly merges = new Merges(this);\n\treadonly styles = new StyleModel(this);\n\treadonly comments = new CommentModel(this);\n\treadonly calculations = new CalculationModel(this);\n\treadonly names = new NamingModel(this);\n\treadonly sorting = new SortingModel(this);\n\treadonly filter = new FilterModel(this);\n\treadonly sparklines = new Sparklines(this);\n\treadonly conditionalFormats = new ConditionalFormats(this);\n\n\tprivate _mergedHeaders: (Merge & {h: ColumnHeaderModel})[];\n\tget mergedHeaders() { return this._mergedHeaders }\n\t\n\tprivate _filter = false\n\tget hasFilter() { return this._filter }\n\t\n\tprivate _maxRowLevel = 0;\n\tget hasRowTree() { return this._maxRowLevel > 0 }\n\tget hasRowTreeEnabled() { return this.hasRowTree && this.options.rowTree.enabled }\n\tget maxRowLevel() { return this._maxRowLevel }\n\t\n\tprivate _maxColumnLevel = 0;\n\tget hasColumnTree() { return this._maxColumnLevel > 0 }\n\tget hasColumnTreeEnabled() { return this.hasColumnTree && this.options.columnTree.enabled }\n\tget maxColumnLevel() { return this._maxColumnLevel }\n\t\n\tprivate _headerCount = 0;\n\tprivate _headerHeights: number[];\n\tget headerCount() { return this._headerCount }\n\tget columnHeaderCount() { return this.headerCount + (this.hasColumnTreeEnabled ? 1 : 0) + (this.hasFilter ? 1 : 0) }\n\n\tprivate _viewport: Viewport;\n\tprivate _levelBasedRowTree = true;\n\tprivate _levelBasedColTree = true;\n\n\tprotected _properties: CustomProperties;\n\tget properties() { return this._properties }\n\tset properties(v: CustomProperties) { this._properties = v }\n\n\tprotected _theme: TableTheme;\n\tget theme() { return this._theme }\n\tset theme(v: TableTheme) { this._theme = v }\n\n\tpublic readonly logger: log.Logger;\n\tpublic options: Options;\n\tpublic group: GroupModel;\n\n\tconstructor(source: GridSource, options?: Options, logger?: log.Logger) {\n\t\tthis.logger = logger;\n\t\tthis.options = options ?? initOptions(source.options);\n\t\tthis.populate(source);\n\t}\n\n\tgetConnectedModel(name: string) {\n\t\treturn this.group ? this.group.get(name) : null;\n\t}\n\n\tgetModelByRange(range: CellRange) {\n\t\treturn range.sheet ? this.getConnectedModel(range.sheet) : this;\n\t}\n\n\tgetCellByA1(a1: string) {\n\t\treturn this.getCellByRange(CellRange.fromA1(a1));\n\t}\n\n\tgetCellByRange(r: CellRange) {\n\t\treturn this.getCellByCoords(r.r1, r.c1);\n\t}\n\n\tgetCellByCoords(r: number, c: number) {\n\t\treturn this.rows[r]?.cell(c);\n\t}\n\n\tcell(coord1: string|number|CellRange, coord2?: number) {\n\t\tif (!isNaN(coord1 as number)) return this.getCellByCoords(coord1 as number, coord2 || 0);\n\t\tif (coord1 instanceof CellRange) return this.getCellByRange(coord1);\n\t\tif (typeof coord1 === 'string') return this.getCellByA1(coord1);\n\t\treturn null;\n\t}\n\n\tcreateRows(source: RowSource[], root = new RowModel(this, {l: -1}), indexOffset = 0) : [RowModel, RowModel[], number, boolean] {\n\t\tlet hasRowLevelBasedTree = false;\n\t\tlet hasRowParentBasedTree = false;\n\t\tthis.autofitRows.clear();\n\n\t\tconst rows = source.map((rowSource, r) => {\n\t\t\tif (!rowSource) rowSource = {};\n\t\t\tif (!isNaN(rowSource.l)) hasRowLevelBasedTree = true;\n\t\t\tif (rowSource.p != null) hasRowParentBasedTree = true;\n\t\t\tif (rowSource.h == 'auto') this.autofitRows.add(r);\n\t\t\tconst rowModel = new RowModel(this, rowSource);\n\t\t\trowModel.origIndex = r + indexOffset;\n\t\t\tif (rowModel.name) this.names.set(rowModel.name, CellRange.fullRow(r));\n\t\t\treturn rowModel;\n\t\t});\n\t\t\n\t\tlet maxRowLevel = -1;\n\t\tif (hasRowLevelBasedTree) maxRowLevel = tree.buildLevelBasedTree(rows, root, {\n\t\t\treverse: this.options.rowTree.reversed\n\t\t});\n\t\telse if (hasRowParentBasedTree) maxRowLevel = tree.buildParentBasedTree(rows, root);\n\t\telse root.children = rows;\n\n\t\tif (!hasRowParentBasedTree) hasRowLevelBasedTree = true; // default to level based tree\n\t\treturn [root, rows, maxRowLevel, hasRowLevelBasedTree];\n\t}\n\n\tinsertRowData(parent: RowModel, offset: number, source: RowSource[]) {\n\t\tconst res = this.createRows(source, new RowModel(this, {l: parent.level}), offset);\n\t\tthis._maxRowLevel = Math.max(this._maxRowLevel, res[2]);\n\t\tparent.insertChildren(res[0].children, offset);\n\t\tthis.indexRowsByTree();\n\t\tif (this.theme) {\n\t\t\tconst newRows = res[1];\n\t\t\tapplyRowTheme(this.theme, this, newRows);\n\t\t\tapplyCellTheme(this.theme, this, new CellRange(0, newRows[0].index, Infinity, newRows[newRows.length - 1].index));\n\t\t}\n\t}\n\n\tapplyTheme(theme: TableTheme, invalidateCellStyles?: boolean) {\n\t\tif (invalidateCellStyles) {\n\t\t\tfor (const cell of this.getInitializedCellIterator()) {\n\t\t\t\tcell.invalidateStyle();\n\t\t\t}\n\t\t}\n\t\tapplyTheme(theme, this);\n\t}\n\n\tpopulate(source: GridSource) {\n\t\tthis.index = source.index;\n\t\tthis.name = source.name ?? this.name;\n\t\tthis.tab = source.tab;\n\t\t\n\t\tlet hasColLevelBasedTree = false;\n\t\tlet hasColParentBasedTree = false;\n\n\t\tif (!source.columns) source.columns = new Array(this.options.columns).fill({});\n\t\tif (!source.rows) source.rows = new Array(this.options.rows).fill({});\n\n\t\t// styles\n\t\tif (source.styles) this.styles.populate(source.styles);\n\t\t\n\t\t// columns\n\t\tthis.autofitColumns.clear();\n\t\tthis.columns = source.columns.map((columnSource, c) => {\n\t\t\tif (!columnSource) columnSource = {};\n\t\t\tif (columnSource.l > 0) hasColLevelBasedTree = true;\n\t\t\tif (columnSource.p != null) hasColParentBasedTree = true;\n\t\t\tif (columnSource.w == 'auto') this.autofitColumns.add(c);\n\t\t\tconst colModel = new ColumnModel(this, columnSource);\n\t\t\tthis._filter = colModel.hasFilter || this._filter;\n\t\t\tif (colModel.name) this.names.set(colModel.name, CellRange.fullColumn(c));\n\t\t\treturn colModel;\n\t\t});\n \n\t\tthis._levelBasedColTree = hasColLevelBasedTree;\n\t\tthis._maxColumnLevel = -1;\n\t\tthis.colRoot = new ColumnModel(this, {l: -1});\n\t\tif (hasColLevelBasedTree) this._maxColumnLevel = tree.buildLevelBasedTree(this.columns, this.colRoot, {\n\t\t\treverse: this.options.columnTree.reversed\n\t\t});\n\t\telse if (hasColParentBasedTree) this._maxColumnLevel = tree.buildParentBasedTree(this.columns, this.colRoot);\n\t\telse this.colRoot.children = this.columns;\n\t\t\n\t\tif (!hasColParentBasedTree) this._levelBasedColTree = true; // default to level based tree\n\n\t\tthis.indexColumns();\n\t\tthis.indexVisibleColumns();\n\n\t\t// rows\n\t\t[this.rowRoot, this.rows, this._maxRowLevel, this._levelBasedRowTree] = this.createRows(source.rows);\n\t\tthis.indexRows();\n\t\tthis.indexVisibleRows();\n\t\tif (this.options.pageSize && this.options.pageSize <= this.rows.length) this.rowRoot.count = Infinity;\n\n\t\t// cells\n\t\tthis.merges.clear();\n\t\tsource.comments = source.comments || [];\n\t\tsource.cells?.forEach((cellSource, i) => {\n\t\t\tconst cell = this.rows[cellSource.r] ? this.rows[cellSource.r].cell(cellSource.c, cellSource) : null;\n\t\t\tif (!cell) {\n\t\t\t\tthis.logger?.error(`invalid cell definition (index ${i}): ${JSON.stringify(cellSource)}`);\n\t\t\t} else if (cellSource.cs > 1 || cellSource.rs > 1) {\n\t\t\t\tthis.merges.add({r: cell.r, c: cell.c, rs: cellSource.rs || 1, cs: cellSource.cs || 1});\n\t\t\t}\n\n\t\t\tif (cell && cellSource.comment) {\n\t\t\t\tsource.comments.push(Object.assign(cellSource.comment, {c: cellSource.c, r: cellSource.r}));\n\t\t\t}\n\t\t});\n\t\t\n\t\t// sparklines\n\t\tif (source.sparklines) {\n\t\t\ttry {\n\t\t\t\tthis.sparklines.populate(source.sparklines);\n\t\t\t} catch (error) {\n\t\t\t\tlog.getLogger().error(`Sparkline init error: ${error}`);\n\t\t\t}\n\t\t}\n\n\t\t// names\n\t\tif (source.names) {\n\t\t\ttry {\n\t\t\t\tthis.names.populate(source.names);\n\t\t\t} catch (error) {\n\t\t\t\tlog.getLogger().error(`Named range init error: ${error}`);\n\t\t\t}\n\t\t}\n\n\t\t// conditional formats\n\t\tif (source.rules) {\n\t\t\ttry {\n\t\t\t\tthis.conditionalFormats.populate(source.rules);\n\t\t\t} catch (error) {\n\t\t\t\tlog.getLogger().error(`Conditional formats init error: ${error}`);\n\t\t\t}\n\t\t}\n\n\t\t// theme\n\t\tif (source.theme) {\n\t\t\ttry {\n\t\t\t\tthis.applyTheme(source.theme);\n\t\t\t\tthis._theme = source.theme;\n\t\t\t} catch (error) {\n\t\t\t\tlog.getLogger().error(`Theme init error: ${error}`);\n\t\t\t}\n\t\t}\n\t\t\n\t\t// comments\n\t\tif (source.comments) {\n\t\t\ttry {\n\t\t\t\tthis.comments.populate(source.comments);\n\t\t\t} catch (error) {\n\t\t\t\tlog.getLogger().error(`Comment init error: ${error}`);\n\t\t\t}\n\t\t}\n\t\t\n\t\t// custom properties\n\t\tthis._properties = source.props;\n\n\t\t// additional properties\n\t\tthis.otherSourceData = {};\n\t\tconst defaultKeys = new Set(DEFAULT_SOURCE_KEYS);\n\t\tconst keys = Object.keys(source).filter(k => !defaultKeys.has(k));\n\t\tkeys.forEach(k => this.otherSourceData[k] = source[k]);\n\n\t\t// default sort\n\t\tif (this.options.sorting?.defaultSettings) {\n\t\t\tthis.sorting.settings = this.options.sorting.defaultSettings;\n\t\t}\n\n\t\t// default filter\n\t\tif (this.options.filters?.defaultSettings) {\n\t\t\tthis.filter.settings = this.options.filters.defaultSettings;\n\t\t}\n\n\t\tthis.calcHeaderHeights();\n\t}\n\n\tgetSourceData() {\n\t\tconst data = {\n\t\t\tindex: this.index,\n\t\t\tname: this.name,\n\t\t\ttab: this.tab,\n\t\t\tcolumns: this.columns.map(col => col.getSourceData()),\n\t\t\trows: this.rows.map(row => row.getSourceData()),\n\t\t\tstyles: this.styles.getSourceData(),\n\t\t\trules: this.conditionalFormats.getSourceData(),\n\t\t\tsparklines: this.sparklines.getSourceData(),\n\t\t\tnames: this.names.getSourceData(),\n\t\t\toptions: this.options,\n\t\t} as GridSource;\n\n\t\tif (this._properties) data.props = this._properties;\n\n\t\tconst cells = [];\n\t\tlet cellData: CellSource;\n\t\tfor (let r = 0; r < this.rows.length; r++) {\n\t\t\tfor (let c = 0; c < this.columns.length; c++) {\n\t\t\t\tcellData = this.rows[r].cell(c).getSourceData();\n\t\t\t\tif (Object.keys(cellData).length > 0) {\n\t\t\t\t\tcellData.r = r;\n\t\t\t\t\tcellData.c = c;\n\t\t\t\t\tcells.push(cellData);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (cells.length > 0) data.cells = cells;\n\t\t\n\t\tconst styles = [] as Style[];\n\t\tthis.styles.clean();\n\t\tthis.styles.map.forEach(style => styles.push(style));\n\t\tif (styles.length > 0) data.styles = styles;\n\n\t\tconst otherModelKeys = new Set([\n\t\t\t...Object.keys(this.otherModels ?? {}),\n\t\t\t...Object.keys(this.otherSourceData ?? {})\n\t\t]);\n\t\totherModelKeys.forEach(k => data[k] = this.otherModels[k] \n\t\t\t? Array.from(this.otherModels[k]).map(m => m.getSourceData())\n\t\t\t: this.otherSourceData[k]\n\t\t);\n\n\t\treturn data;\n\t}\n\n\tcalcHeaderHeights() {\n\t\tthis._headerCount = 0;\n\t\tthis._headerHeights = [];\n\t\tthis.columns.forEach((column) => {\n\t\t\tthis._headerCount = column.header ? column.header.length : this._headerCount;\n\t\t\tif (this._headerHeights.length < this._headerCount) {\n\t\t\t\tthis._headerHeights.push(...Array(this._headerCount - this._headerHeights.length).fill(0));\n\t\t\t}\n\n\t\t\tcolumn.header?.forEach((h: ColumnHeaderModel, r) => {\n\t\t\t\tif (r >= this._headerHeights.length) {\n\t\t\t\t\tthis._headerHeights.push(0);\n\t\t\t\t}\n\t\t\t\tthis._headerHeights[r] = Math.max(this._headerHeights[r], h.height ?? 0);\n\t\t\t});\n\t\t});\n\t}\n\n\tindexRows() {\n\t\tthis.visibleRows = [];\n\t\tthis.rows.forEach((row, r) => {\n\t\t\trow.index = r;\n\t\t\tif (!row.isLoaded) row.collapsed = true;\n\t\t\tif (!row.hidden && row.filterState != tree.FilterState.Filtered) {\n\t\t\t\trow.visibleIndex = this.visibleRows.length;\n\t\t\t\tthis.visibleRows.push(row);\n\t\t\t}\n\t\t});\n\t}\n\n\tindexVisibleRows() {\n\t\tthis.visibleRows = [];\n\t\tlet r = 0;\n\t\tif (this._levelBasedRowTree) {\n\t\t\tthis.rowRoot.walkVisible((node: RowModel) => {\n\t\t\t\tnode.visibleIndex = r++;\n\t\t\t\tthis.visibleRows.push(node)\n\t\t\t});\n\n\t\t\t// reverse order of row index\n\t\t\tif (this.options.rowTree.reversed) {\n\t\t\t\tconst reversedVisibleRows = new Array(this.visibleRows.length);\n\t\t\t\tthis.visibleRows.forEach((row, i) => {\n\t\t\t\t\tr = this.visibleRows.length - i - 1;\n\t\t\t\t\trow.visibleIndex = r;\n\t\t\t\t\treversedVisibleRows[r] = row;\n\t\t\t\t});\n\t\t\t\tthis.visibleRows = reversedVisibleRows;\n\t\t\t}\n\t\t} else {\n\t\t\t// in parent based node rows do not have to respect tree order\n\t\t\tthis.rowRoot.walkVisible((node: RowModel) => this.visibleRows[node.index] = node);\n\t\t\tthis.visibleRows = this.visibleRows.filter(row => {\n\t\t\t\tif (row) {\n\t\t\t\t\trow.visibleIndex = r++;\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t});\n\t\t}\n\t}\n\n\tindexRowsByTree() {\n\t\tthis.rows = [];\n\t\tlet r = 0;\n\t\tthis.rowRoot.walk((row: RowModel) => {\n\t\t\trow.index = r++;\n\t\t\tthis.rows.push(row);\n\t\t});\n\t\tif (this.options.rowTree.reversed) this.rows.reverse();\n\t\tthis.indexVisibleRows();\n\t}\n\n\tindexColumns() {\n\t\tthis.visibleColumns = [];\n\t\tthis.columns.forEach((column, c) => {\n\t\t\tcolumn.index = c;\n\t\t\tif (!column.hidden) this.visibleColumns.push(column);\n\t\t});\n\t}\n\n\tindexVisibleColumns() {\n\t\tthis.visibleColumns = [];\n\t\tthis.visibleColumnIndex = {};\n\t\tlet c = 0;\n\t\tthis.colRoot.walkVisible((node: ColumnModel) => {\n\t\t\tnode.visibleIndex = c;\n\t\t\tthis.visibleColumnIndex[node.index] = c++;\n\t\t\tthis.visibleColumns.push(node);\n\t\t});\n\n\t\t// reverse order of column index\n\t\tif (this.options.columnTree.reversed) {\n\t\t\tthis.visibleColumnIndex = {};\n\t\t\tconst reversedVisibleColumns = new Array(this.visibleColumns.length);\n\t\t\tthis.visibleColumns.forEach((column, i) => {\n\t\t\t\tc = this.visibleColumns.length - i - 1;\n\t\t\t\tcolumn.visibleIndex = c;\n\t\t\t\tthis.visibleColumnIndex[column.index] = c;\n\t\t\t\treversedVisibleColumns[c] = column;\n\t\t\t});\n\t\t\tthis.visibleColumns = reversedVisibleColumns;\n\t\t}\n\n\t\tthis.indexHeaders();\n\t}\n\n\tindexHeaders() {\n\t\tthis._mergedHeaders = [];\n\t\tthis._headerCount = 0;\n\t\tthis.colRoot.walkVisible((column: ColumnModel) => {\n\t\t\tthis._headerCount = Math.max(column.header ? column.header.length : 0, this._headerCount);\n\t\t\tcolumn.mergedHeaders.forEach(h => this._mergedHeaders.push({\n\t\t\t\th: h,\n\t\t\t\tc: column.index,\n\t\t\t\tr: h.r,\n\t\t\t\tcs: column.calculateRealColspan(h.cs ?? 1),\n\t\t\t\trs: h.rs ?? 1\n\t\t\t}));\n\t\t});\n\n\t\t// hidden header cells\n\t\tthis._mergedHeaders.forEach(h => {\n\t\t\tif (h.h.hidden) return;\n\t\t\t\n\t\t\tfor (let c = h.c; c < h.c + h.cs; c++) {\n\t\t\t\tfor (let r = h.r; r < h.r + h.rs; r++) {\n\t\t\t\t\tif ((r > h.r || c > h.c) && this.columns[c] && this.columns[c].header[r]) {\n\t\t\t\t\t\tthis.columns[c].header[r].hidden = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\tthis.calcHeaderHeights();\n\t}\n\n\tremoveHeader(r: number) {\n\t\tthis.columns.forEach(column => {\n\t\t\tif (r < column.header.length) column.header.splice(r, 1);\n\t\t});\n\t\tthis.indexHeaders();\n\t}\n\n\tclearRows = () : RowModel[] => {\n\t\tthis.rowRoot.clearChildren();\n\t\tthis.rows = [];\n\t\treturn this.rows;\n\t}\n\t\n\tclearColumns = () : ColumnModel[] => this.columns = [];\n\n\tclear() {\n\t\tthis.clearRows();\n\t\tthis.clearColumns();\n\t\tthis.resetViewport();\n\t}\n\n\tresetViewport() {\n\t\tthis._viewport = null;\n\t\treturn this;\n\t}\n\n\tgetViewport(\n\t\toffset: {c: number, r: number}, \n\t\tviewportSize: {w: number, h: number}, \n\t\tfreeze: {t: number, l: number, b: number, r: number},\n\t) : Viewport {\n\t\tconst viewportRows: RowModel[] = [];\n\t\tconst viewportColumns: ColumnModel[] = [];\n\n\t\tlet row: RowModel;\n\t\tlet remainingHeight = viewportSize.h;\n\t\tlet r = 0;\n\t\t// top rows\n\t\tfor (r = 0; r < freeze.t; r++) {\n\t\t\trow = this.visibleRows[r];\n\t\t\tremainingHeight -= row.height;\n\t\t\tviewportRows.push(row);\n\t\t}\n\n\t\t// bottom rows\n\t\tfor (r = this.visibleRows.length - freeze.b; r < this.visibleRows.length; r++) {\n\t\t\trow = this.visibleRows[r];\n\t\t\tremainingHeight -= row.height;\n\t\t}\n\n\t\t// center rows\n\t\tr = freeze.t + offset.r;\n\t\twhile (remainingHeight > 0 && r < this.visibleRows.length) {\n\t\t\trow = this.visibleRows[r++];\n\t\t\tremainingHeight -= row.height;\n\t\t\tviewportRows.push(row);\n\t\t}\n\n\t\t// bottom rows again\n\t\tfor (r = this.visibleRows.length - freeze.b; r < this.visibleRows.length; r++) {\n\t\t\tviewportRows.push(this.visibleRows[r]);\n\t\t}\n\n\t\tlet column: ColumnModel;\n\t\tlet remainingWidth = viewportSize.w;\n\t\tlet c = 0;\n\n\t\t// left columns\n\t\tfor (c = 0; c < freeze.l; c++) {\n\t\t\tcolumn = this.visibleColumns[c];\n\t\t\tremainingWidth -= column.width;\n\t\t\tviewportColumns.push(column);\n\t\t}\n\n\t\t// right columns\n\t\tfor (c = this.visibleColumns.length - freeze.r; c < this.visibleColumns.length; c++) {\n\t\t\tcolumn = this.visibleColumns[c];\n\t\t\tremainingWidth -= column.width;\n\t\t}\n\n\t\t// center columns\n\t\tc = freeze.l + offset.c;\n\t\twhile (remainingWidth > 0 && c < this.visibleColumns.length) {\n\t\t\tcolumn = this.visibleColumns[c++];\n\t\t\tremainingWidth -= column.width;\n\t\t\tviewportColumns.push(column);\n\t\t}\n\n\t\t// right columns again\n\t\tfor (c = this.visibleColumns.length - freeze.r; c < this.visibleColumns.length; c++) {\n\t\t\tviewportColumns.push(this.visibleColumns[c]);\n\t\t}\n\n\t\treturn (this._viewport = {rows: viewportRows, columns: viewportColumns});\n\t}\n\n\tcalculateViewport() {\n\t\treturn this._viewport ? this.calculations.calculateViewport(this._viewport) : [];\n\t}\n\n\tgetValuesInRange(range: CellRange, formattedValues = false) {\n\t\trange = range.intersect(this.gridRange);\n\t\tif (!range) return [];\n\t\tconst {columns, rows} = range.size;\n\t\tconst values: Matrix<unknown> = new Array(rows);\n\t\tlet i = 0, j = 0;\n\t\tlet row: RowModel;\n\t\tfor (let r = range.r1; r <= range.r2; r++) {\n\t\t\tvalues[i] = new Array(columns);\n\t\t\tj = 0;\n\t\t\trow = this.rows[r];\n\t\t\tfor (let c = range.c1; c <= range.c2; c++) {\n\t\t\t\tvalues[i][j++] = formattedValues ? row.cell(c).formattedValue : row.cell(c).value;\n\t\t\t}\n\t\t\t++i;\n\t\t}\n\n\t\treturn values;\n\t}\n\n\tsetRowExpandLevel(level: number) {\n\t\tthis.rows.forEach(row => {\n\t\t\trow.collapsed = (!row.isLoaded && !row.isPartialyLoaded) || row.level >= level;\n\t\t\tif (row.level <= level) row.hidden = false; // remove hidden flag for visible rows\n\t\t});\n\t\tthis.indexVisibleRows();\n\t}\n\t\n\tsetColumnExpandLevel(level: number) {\n\t\tthis.columns.forEach(column => column.collapsed = column.level >= level);\n\t\tthis.indexVisibleColumns();\n\t}\n\n\tgetViewportRange() {\n\t\treturn this._viewport ? new CellRange(\n\t\t\tthis._viewport.columns[0].index,\n\t\t\tthis._viewport.rows[0].index,\n\t\t\tthis._viewport.columns[this._viewport.columns.length - 1].index,\n\t\t\tthis._viewport.rows[this._viewport.rows.length - 1].index,\n\t\t) : null;\n\t}\n\n\tget gridRange() {\n\t\treturn new CellRange(0, 0, this.columns.length - 1, this.rows.length - 1);\n\t}\n\n\tgetRangeIterator(range: CellRange, withinViewport = false) {\n\t\treturn new IterableRange(this, withinViewport && this._viewport \n\t\t\t? range.intersect(this.getViewportRange()) \n\t\t\t: range.intersect(this.gridRange)\n\t\t);\n\t}\n\n\tgetInitializedCellIterator() {\n\t\treturn new IterableRange(this, this.gridRange, true);\n\t}\n\n\tgetRowIterator(range: CellRange, withinViewport = false) {\n\t\trange = withinViewport && this._viewport \n\t\t\t? range.intersect(this.getViewportRange())\n\t\t\t: range.intersect(this.gridRange);\n\t\treturn new IterableAxisRange<RowModel>(this, range, 'rows');\n\t}\n\n\tgetColumnIterator(range: CellRange, withinViewport = false) {\n\t\trange = withinViewport && this._viewport\n\t\t\t? range.intersect(this.getViewportRange())\n\t\t\t: range.intersect(this.gridRange);\n\t\treturn new IterableAxisRange<ColumnModel>(this, range, 'columns');\n\t}\n\n\tgetCellArray(range: CellRange) {\n\t\tconst cells: CellModel[] = [];\n\t\tfor (const cell of this.getRangeIterator(range)) {\n\t\t\tcells.push(cell);\n\t\t}\n\t\treturn cells;\n\t}\n\n\ttransformRangeToMatrix<T>(range: CellRange, transform: (cell: CellModel) => T): Matrix<T> {\n\t\tlet row: RowModel, cell: CellModel, rowValues: T[];\n\t\trange = range.intersect(this.gridRange);\n\t\tconst cells: Matrix<T> = [];\n\t\tfor (let r = range.r1; r <= range.r2; r++) {\n\t\t\trow = this.rows[r];\n\t\t\tif (!row) continue;\n\t\t\trowValues = [];\n\t\t\tfor (let c = range.c1; c <= range.c2; c++) {\n\t\t\t\tcell = row.cell(c);\n\t\t\t\tif (cell) rowValues.push(transform(cell));\n\t\t\t}\t\n\t\t\tcells.push(rowValues);\n\t\t}\n\t\treturn cells;\n\t}\n\n\tgetCellMatrix(range: CellRange) {\n\t\treturn this.getModelByRange(range)?.transformRangeToMatrix(range, c => c);\n\t}\n\n\tgetValueMatrix(range: CellRange) {\n\t\treturn this.getModelByRange(range)?.transformRangeToMatrix(range, c => c.value);\n\t}\n\n\tshift(options: ShiftOptions) {\n\t\toptions.sheet = this.name;\n\t\tthis.merges.shift(options);\n\t\tthis.calculations.shift(options);\n\t\tthis.names.shift(options);\n\t\tthis.comments.shift(options);\n\t\tthis.sparklines.shift(options);\n\t}\n\n\tclearCalculations(all = false) {\n\t\tif (all && this.group) this.group.models.forEach(m => m.calculations.refresh());\n\t\telse this.calculations.refresh();\n\t}\n\n\trefreshSparklines() {\n\t\tthis.sparklines.updateRangeMaps();\n\t\tfor (const cell of this.getInitializedCellIterator()) {\n\t\t\tcell.invalidateStyle();\n\t\t}\n\t}\n\n\tclearCalculatedStyles() {\n\t\tthis.conditionalFormats.refresh();\n\t\tconst cells = [] as CellModel[];\n\t\tfor (const cell of this.getInitializedCellIterator()) {\n\t\t\tcells.push(cell);\n\t\t\tcell.invalidateStyle();\n\t\t}\n\t}\n\n\tinsertColumns(index: number, count: number, after = false) {\n\t\tconst parent = this.columns[Math.min(this.columns.length - 1, index)].parent;\n\t\tif (after) ++index;\n\t\tthis.shift({index: index, offset: count, direction: 'right'});\n\t\tfor (let r = 0; r < this.rows.length; r++) this.rows[r].insertColumns(index, count, false);\n\t\tconst newColumns = (new Array(count)).fill(null).map(() => new ColumnModel(this));\n\t\tthis.columns.splice(index, 0, ...newColumns);\n\t\tif (this.maxColumnLevel > 0) parent.insertChildren(newColumns, index - (parent.index || -1) - 1);\n\t\tthis.indexColumns();\n\t\tthis.clearCalculations(true);\n\t\treturn newColumns;\n\t}\n\n\tdeleteColumns(index: number, count: number) {\n\t\tconst parent = this.columns[index].parent;\n\t\tthis.shift({index: index, offset: count, direction: 'left'});\n\t\tconst deletedCells: CellModel[][] = [];\n\t\tfor (let r = 0; r < this.rows.length; r++)\n\t\t\tdeletedCells.push(this.rows[r].deleteColumns(index, count, false));\n\t\t// const deletedColumns: [ColumnModel, CellModel[]][] = this.columns.splice(index, count)\n\t\t// \t.map((column, i) => [column, deletedCells[i]]);\n\t\tconst deletedColumns = this.columns.splice(index, count);\n\t\tparent?.deleteChildren(deletedColumns);\n\t\tthis.indexColumns();\n\t\tthis.clearCalculations(true);\n\t\treturn deletedColumns;\n\t}\n\n\tinsertRows(index: number, rows: number|RowModel[], after = false) {\n\t\tconst parentIndex = Math.min(this.rows.length - 1, index);\n\t\tconst parent = parentIndex < 0 ? this.rowRoot : this.rows[parentIndex].parent;\n\t\tif (after) ++index;\n\t\tconst count = isNaN(rows as number) ? (rows as RowModel[]).length : rows as number;\n\t\tthis.shift({index: index, offset: count, direction: 'down'});\n\t\tconst newRows = isNaN(rows as number) ? (rows as RowModel[]) : (new Array(count)).fill(null).map(() => new RowModel(this));\n\t\tthis.rows.splice(index, 0, ...newRows);\n\t\tif (this.maxRowLevel > 0) parent.insertChildren(newRows, index - (parent.index || -1) - 1);\n\t\tthis.indexRows();\n\t\tif (this.theme) {\n\t\t\tapplyRowTheme(this.theme, this, newRows);\n\t\t\tapplyCellTheme(this.theme, this, new CellRange(0, newRows[0].index, Infinity, newRows[newRows.length - 1].index));\n\t\t}\n\t\tthis.clearCalculations(true);\n\t\treturn newRows;\n\t}\n\n\tdeleteRows(index: number, count: number) {\n\t\tconst parent = this.rows[index].parent;\n\t\tthis.shift({index: index, offset: count, direction: 'up'});\n\t\tconst deletedRows = this.rows.splice(index, count);\n\t\tparent?.deleteChildren(deletedRows);\n\t\tthis.indexRows();\n\t\tthis.clearCalculations(true);\n\t\treturn deletedRows;\n\t}\n\n\tmoveRows(index: number, count: number, targetIndex: number) {\n\t\tconst movingRows = this.rows.splice(index, count);\n\t\tthis.rows.splice(targetIndex, 0, ...movingRows);\n\t\tthis.shift({index: index, offset: targetIndex - index, direction: 'down', maxIndex: index + count - 1});\n\t\tthis.indexRows();\n\t\tthis.clearCalculations(true);\n\t\treturn movingRows;\n\t}\n\n\tmoveColumns(index: number, count: number, targetIndex: number) {\n\t\tconst movingColumns = this.columns.splice(index, count);\n\t\tthis.columns.splice(targetIndex, 0, ...movingColumns);\n\t\tthis.shift({index: index, offset: targetIndex - index, direction: 'right', maxIndex: index + count - 1});\n\t\tthis.indexColumns();\n\t\tthis.clearCalculations(true);\n\t\treturn movingColumns;\n\t}\n\n\tspillValues(opt: SpillOptions): SpillResult {\n\t\tconst {cell, values, displayValues, propertyCell} = opt;\n\t\tconst cells: CellModel[] = [];\n\t\tconst oldValues: CellValueType[] = [];\n\t\tconst empty = values.length === 0 || values[0].length === 0;\n\t\tlet row: RowModel, spillCell: CellModel;\n\n\t\tconst range = empty ? null : new CellRange(\n\t\t\tcell.c, cell.r,\n\t\t\tcell.c + values[0].length - 1,\n\t\t\tcell.r + values.length - 1\n\t\t)\n\n\t\tif (cell.spillRange) {\n\t\t\t// clear values from previous evaluations not contained in the new spill range\n\t\t\tthis.getRangeIterator(cell.spillRange, true).forEach(c => {\n\t\t\t\tif (cell != c && !range?.contains(c.range)) c.clearSpilledValue();\n\t\t\t});\n\t\t}\n\n\t\tcell.spillRange = range;\n\t\tif (empty) return {cells, oldValues, range: null};\n\n\t\tfor (let r = range.r1; r <= range.r2; r++) {\n\t\t\trow = this.rows[r];\n\t\t\tif (!row) continue;\n\t\t\tconst r2 = r - range.r1;\n\t\t\tfor (let c = range.c1; c <= range.c2; c++) {\n\t\t\t\tconst c2 = c - range.c1;\n\t\t\t\tspillCell = row.cell(c);\n\t\t\t\tif (spillCell.editable) {\n\t\t\t\t\toldValues.push(spillCell.value2 as CellValueType);\n\t\t\t\t\tspillCell.spillValue(values[r2][c2], cell);\n\t\t\t\t\tif (propertyCell) {\n\t\t\t\t\t\tspillCell.format = propertyCell.format;\n\t\t\t\t\t\tspillCell.type = propertyCell.type;\n\t\t\t\t\t}\n\t\t\t\t\tif (displayValues && displayValues[r2][c2] != null) spillCell.displayValue = displayValues[r2][c2];\n\t\t\t\t\tcells.push(spillCell);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn {cells, oldValues, range};\n\t}\n\n\tgetCellByName(name: string, contextRange: CellRange, searchGroup = true): CellModel {\n\t\tconst cell = this.names.getCellByName(name, contextRange);\n\t\tif (cell) return cell;\n\t\telse if (this.group && searchGroup) return this.group.getCellByName(name, contextRange);\n\t\treturn null;\n\t}\n\n\tgetRangeByName(name: string, searchGroup = true): CellRange {\n\t\tconst range = this.names.getRangeByName(name);\n\t\tif (range) return range;\n\t\telse if (this.group && searchGroup) return this.group.getRangeByName(name);\n\t\treturn null;\n\t}\n\n\tgetValueMatrixByName(name: string, searchGroup = true): Matrix<unknown> {\n\t\tconst matrix = this.names.getRangeByName(name);\n\t\tif (matrix) return this.getValueMatrix(matrix);\n\t\telse if (this.group && searchGroup) return this.group.getValueMatrixByName(name);\n\t\treturn null;\n\t}\n\n\trebuildRowTree() {\n\t\tconst buildFunction = this._levelBasedRowTree ? tree.buildLevelBasedTree : tree.buildParentBasedTree;\n\t\tthis._maxRowLevel = buildFunction(this.rows, this.rowRoot, {\n\t\t\treverse: this.options.rowTree.reversed\n\t\t});\n\t\tthis.indexRowsByTree();\n\t}\n\n\trebuildColumnTree() {\n\t\tconst buildFunction = this._levelBasedColTree ? tree.buildLevelBasedTree : tree.buildParentBasedTree;\n\t\tthis._maxColumnLevel = buildFunction(this.columns, this.colRoot, {\n\t\t\treverse: this.options.columnTree.reversed\n\t\t});\n\t\tthis.indexColumns();\n\t}\n\n\tcalculateCellOffset(cell: CellRange) : Location {\n\t\tlet x = 0, y = 0;\n\t\tfor (let c = 0; c < cell.c1; c++) {\n\t\t\tif (!this.columns[c]) break;\n\t\t\tx += this.columns[c].width;\n\t\t}\n\t\tfor (let r = 0; r < cell.r1; r++) {\n\t\t\tif (!this.rows[r]) break;\n\t\t\ty += this.rows[r].height;\n\t\t}\n\t\treturn { x, y };\n\t}\n\n}"]}
|
package/dist/model/options.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { numbers, CommonOptions, dates, MenuItem, paper } from "@omegagrid/core";
|
|
2
|
-
import { CellValidation, CellValidationSource, Renderer } from "../types";
|
|
3
|
-
import { CommentOptions, SortSettings } from "../model";
|
|
2
|
+
import { CellValidation, CellValidationSource, Renderer, StyleSource } from "../types";
|
|
3
|
+
import { CommentOptions, FilterSettings, SortSettings } from "../model";
|
|
4
4
|
import { ElementModel } from "./elementModel";
|
|
5
5
|
import { CellModel, CellSource } from "./cellModel";
|
|
6
6
|
import { RowModel } from "./rowModel";
|
|
@@ -65,6 +65,8 @@ export type FilterOptions = {
|
|
|
65
65
|
includeParents?: boolean;
|
|
66
66
|
/** the children of the matched rows will be included in the results */
|
|
67
67
|
includeChildren?: boolean;
|
|
68
|
+
/** initial filter settings */
|
|
69
|
+
defaultSettings?: FilterSettings[];
|
|
68
70
|
};
|
|
69
71
|
export type SelectingOptions = {
|
|
70
72
|
enabled?: boolean;
|
|
@@ -91,6 +93,11 @@ export type ClipboardOptions = {
|
|
|
91
93
|
* rewrite_append = rewrite when columns are availible, otherwise insert new columns
|
|
92
94
|
*/
|
|
93
95
|
columnPasteMode?: PasteMode;
|
|
96
|
+
/**
|
|
97
|
+
* Skips hidden rows when pasting data.
|
|
98
|
+
* Values are pasted into nearest visible row.
|
|
99
|
+
*/
|
|
100
|
+
skipHiddenRows?: boolean;
|
|
94
101
|
};
|
|
95
102
|
export type PrintOptions = {
|
|
96
103
|
/** idexes of rows, after which page break will be inserted */
|
|
@@ -115,6 +122,9 @@ export type PrintOptions = {
|
|
|
115
122
|
footer: number;
|
|
116
123
|
};
|
|
117
124
|
};
|
|
125
|
+
export type HeaderOptions = {
|
|
126
|
+
style?: StyleSource;
|
|
127
|
+
};
|
|
118
128
|
export type Options = {
|
|
119
129
|
viewMode?: ViewMode;
|
|
120
130
|
/** default number of rows */
|
|
@@ -123,6 +133,8 @@ export type Options = {
|
|
|
123
133
|
columns?: number;
|
|
124
134
|
/** readOnly cells */
|
|
125
135
|
readOnly?: boolean;
|
|
136
|
+
/** header options */
|
|
137
|
+
headers?: HeaderOptions;
|
|
126
138
|
/** render column with row numbers */
|
|
127
139
|
rowNumbers?: boolean;
|
|
128
140
|
/** render column with row numbers */
|
|
@@ -232,6 +244,8 @@ export type Options = {
|
|
|
232
244
|
print?: PrintOptions;
|
|
233
245
|
/** grid zoom factor */
|
|
234
246
|
zoom?: number;
|
|
247
|
+
/** hides the outer border of the grid (right and top) */
|
|
248
|
+
hideOuterBorder?: boolean;
|
|
235
249
|
} & CommonOptions;
|
|
236
250
|
export type OptionSource = Omit<Options, 'rowTree' | 'columnTree' | 'filters' | 'cellValidation'> & {
|
|
237
251
|
rowTree?: boolean | TreeOptions;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../src/model/options.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAqB,aAAa,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACpG,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../src/model/options.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"options.js","sourceRoot":"","sources":["../../src/model/options.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,iBAAiB,EAAiB,KAAK,EAAmB,MAAM,iBAAiB,CAAC;AAGpG,OAAO,SAAS,EAAE,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACvF,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAMxC,OAAO,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AAoUxD,MAAM,UAAU,WAAW,CAAC,OAA+B,EAAE,cAA4B,IAAI;IAC5F,MAAM,GAAG,GAAG,KAAK,CAAC,SAAS,CAAe,EAAE,EAAE,SAAS,CAAC,eAAe,EAAE,WAAW,EAAE,iBAAiB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC;IAE/H,IAAI,GAAG,CAAC,YAAY,EAAE,CAAC;QACtB,GAAG,CAAC,eAAe,GAAG,OAAO,CAAC,kBAAkB,CAAC,GAAG,CAAC,YAAY,EAAE,GAAG,CAAC,YAAY,CAAC,CAAC;IACtF,CAAC;SAAM,IAAI,CAAC,GAAG,CAAC,eAAe,EAAE,CAAC;QACjC,GAAG,CAAC,eAAe,GAAG,OAAO,CAAC,kBAAkB,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IACpE,CAAC;IAED,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC;QACpB,GAAG,CAAC,aAAa,GAAG,KAAK,CAAC,gBAAgB,CAAC,GAAG,CAAC,YAAY,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC;IAC9E,CAAC;SAAM,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;QAC/B,GAAG,CAAC,aAAa,GAAG,KAAK,CAAC,gBAAgB,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IAC9D,CAAC;IAED,IAAI,GAAG,CAAC,aAAa,EAAE,CAAC;QACvB,GAAG,CAAC,OAAO,GAAG,GAAG,CAAC,OAAO,IAAI,EAAC,OAAO,EAAE,IAAI,EAAC,CAAC;IAC9C,CAAC;IAED,IAAI,OAAO,GAAG,CAAC,OAAO,KAAK,SAAS;QAAE,GAAG,CAAC,OAAO,GAAG,EAAC,OAAO,EAAE,GAAG,CAAC,OAAO,EAAC,CAAC;IAC3E,GAAG,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,sBAAsB,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;IAErE,IAAI,OAAO,GAAG,CAAC,OAAO,KAAK,SAAS;QAAE,GAAG,CAAC,OAAO,GAAG,EAAC,OAAO,EAAE,GAAG,CAAC,OAAO,EAAC,CAAC;IAC3E,GAAG,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,oBAAoB,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;IAEnE,IAAI,OAAO,GAAG,CAAC,UAAU,KAAK,SAAS;QAAE,GAAG,CAAC,UAAU,GAAG,EAAC,OAAO,EAAE,GAAG,CAAC,UAAU,EAAC,CAAC;IACpF,GAAG,CAAC,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,oBAAoB,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC;IAEzE,IAAI,GAAG,CAAC,cAAc;QAAE,GAAG,CAAC,cAAc,GAAG,uBAAuB,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAEzF,OAAO,GAAc,CAAC;AACvB,CAAC","sourcesContent":["import { numbers, initCommonOptions, CommonOptions, dates, MenuItem, paper } from \"@omegagrid/core\";\nimport { CellValidation, CellValidationSource, Renderer } from \"../types\";\nimport { CommentOptions, SortSettings } from \"../model\";\nimport constants, { DEFAULT_FILTER_OPTIONS, DEFAULT_TREE_OPTIONS } from \"../constants\";\nimport { utils } from \"@omegagrid/core\";\nimport { ElementModel } from \"./elementModel\";\nimport { CellModel, CellSource } from \"./cellModel\";\nimport { RowModel } from \"./rowModel\";\nimport { ColumnModel } from \"./columnModel\";\nimport { CellAddress, RangeAddress } from \"../common\";\nimport { normalizeCellValidation } from \"./validations\";\n\nexport type ViewMode = 'grid' | 'singleObject';\n\nexport type EditingOptions = {\n\t/** enable inserting new rows */\n\trowInsertion?: boolean,\n\n\t/** enable deleting rows */\n\trowDeletion?: boolean,\n\n\t/** enable editing row outline levels */\n\trowOutline?: boolean,\n\n\t/** enable inserting new columns */\n\tcolInsertion?: boolean,\n\n\t/** enable deleting columns */\n\tcolDeletion?: boolean,\n\n\t/** enable editing column outline levels */\n\tcolOutline?: boolean,\n\n\t/** use calendar editor for date cells */\n\tdateCalendarEditor?: boolean,\n\n};\n\nexport type ScrollingOptions = {\n\t/** maximum proximity of cursor to scrollbar to be visible */\n\tscrollbarVisibilityTreshold?: number,\n\n\t/** enable vertical overscroll */\n\tverticalOverscroll?: boolean,\n\n\t/** enable horizontal overscroll */\n\thorizontalOverscroll?: boolean,\n};\n\nexport type GridMenuItem<T extends ElementModel> = MenuItem & {\n\thidden?: (model: T) => boolean,\n}\n\nexport type MenuOptionsItem<T extends ElementModel> = {\n\titems: GridMenuItem<T>[],\n\thidden?: (model: T) => boolean,\n\treplace?: boolean\n};\n\nexport type MenuOptions = {\n\tcell: MenuOptionsItem<CellModel>,\n\trow: MenuOptionsItem<RowModel>,\n\tcolumn: MenuOptionsItem<ColumnModel>,\n};\n\nexport type EventOptions = {\n\t/** grid click event options */\n\tclick: {\n\t\t/** maximum mouse move path length, after click event is allowed */\n\t\tmouseMoveTreshold: number\n\t}\n};\n\nexport type SortingOptions = {\n\t/** column sorting enabled */\n\tenabled?: boolean,\n\t\n\t/** maximum number of columns that can be sorted */\n\tmaxColumns?: number,\n\t\n\t/** initial sorting settings */\n\tdefaultSettings?: SortSettings[]\n};\n\nexport type FilterOptions = {\n\tenabled?: boolean;\n\t/** the parents of the matched rows will be included in the results */\n\tincludeParents?: boolean;\n\t/** the children of the matched rows will be included in the results */\n\tincludeChildren?: boolean;\n}\n\nexport type SelectingOptions = {\n\tenabled?: boolean;\n\tmultiSelect?: boolean;\n}\n\n\nexport type TreeOptions = {\n\tenabled?: boolean;\n\treversed?: boolean;\n}\n\nexport type PasteMode = 'insert'|'rewrite'|'rewrite_append';\n\nexport type ClipboardOptions = {\n\tpasteProps: (keyof CellSource)[]|'all';\n\n\t/**\n\t * paste mode for rows, \n\t * \tinsert = always insert new rows\n\t * \trewrite = rewrite when rows are availible\n\t * \trewrite_append = rewrite when rows are availible, otherwise insert new rows; default\n\t */\n\trowPasteMode?: PasteMode;\n\n\t/**\n\t * paste mode for columns, \n\t * \tinsert = always insert new columns\n\t * \trewrite = rewrite when columns are availible; default\n\t * \trewrite_append = rewrite when columns are availible, otherwise insert new columns\n\t */\n\tcolumnPasteMode?: PasteMode;\n}\n\nexport type PrintOptions = {\n\t/** idexes of rows, after which page break will be inserted */\n\trowBreaks?: number[];\n\n\t/** range of rows to repeat at the top of each page, eg: \"1:20\" */\n\trowTitles?: RangeAddress;\n\n\t/** print scale, 50 = 50% */\n\tscale?: number;\n\n\t/** print page orientation */\n\torientation?: 'landscape'|'portrait';\n\n\t/** print quality */\n\tdpi?: number;\n\n\t/** print paper size */\n\tpaper?: paper.PaperType|paper.PaperSize;\n\n\t/** page margin settings */\n\tmargins?: {\n\t\ttop: number,\n\t\tbottom: number,\n\t\tleft: number,\n\t\tright: number,\n\t\theader: number,\n\t\tfooter: number\n\t}\n}\n\nexport type Options = {\n\tviewMode?: ViewMode,\n\n\t/** default number of rows */\n\trows?: number;\n\n\t/** default number of columns */\n\tcolumns?: number;\n\n\t/** readOnly cells */\n\treadOnly?: boolean;\n\n\t/** render column with row numbers */\n\trowNumbers?: boolean;\n\n\t/** render column with row numbers */\n\trowResize?: boolean;\n\n\t/** default row priority */\n\trowPriority?: number;\n\n\t/** render column with row tree outline */\n\trowTree?: TreeOptions;\n\n\t/** render header row with column letters */\n\tcolLetters?: boolean;\n\n\t/** render row with column tree outline */\n\tcolumnTree?: TreeOptions;\n\n\t/** default column priority */\n\tcolumnPriority?: number;\n\n\t/** render column with row numbers */\n\tcolumnResize?: boolean;\n\n\t/** render tree buttons in column header labels */\n\tcolumnHeaderTreeButtons?: boolean;\n\n\t/** number of freezed rows on the top */\n\tfreezeTop?: number;\n\t\n\t/** number of freezed columns on the left */\n\tfreezeLeft?: number;\n\n\t/** number of freezed columns on the right, not implemented yet */\n\tfreezeRight?: number;\n\n\t/** number of freezed rows on the bottom, not implemented yet */\n\tfreezeBottom?: number;\n\n\t/** default font size */\n\tfontSize?: number;\n\n\t/** default row height */\n\trowHeight?: number;\n\n\t/** remove row hidden property after its parent is expanded */\n\tunhideRowAfterExpand?: boolean;\n\n\t/** default column width */\n\tcolumnWidth?: number;\n\n\t/** remove column hidden property after its parent is expanded */\n\tunhideColumnAfterExpand?: boolean;\n\n\t/** style source are native css styles */\n\tcssStyles?: boolean;\n\n\t/** cell border visibility */\n\tgrid?: boolean,\n\t\n\t/** column filter options */\n\tfilters?: FilterOptions,\n\n\t/** default number format */\n\tnumberFormat?: string,\n\t\n\t/** tries to repair invalid number/date formats */\n\tfixNumberFormat?: boolean,\n\n\t/** shows click indicator even in cells without value */\n\temptyClickable?: boolean,\n\n\t/** custom number formatter function */\n\tnumberFormatter?: numbers.NumberFormatterFunction,\n\n\t/** custom date formatter function */\n\tdateFormatter?: dates.DateFormatterFunction,\n\t\n\t/** enables default cell editing */\n\teditable?: boolean,\n\n\t/** enables default cell commenting */\n\tcommentable?: boolean,\n\n\t/** enables autofill function */\n\tautofill?: boolean,\n\n\t/** number of rows on one page for dynamic row fetching */\n\tpageSize?: number,\n\n\t/** enables command window */\n\tcommandWindow?: boolean,\n\n\t/** enables undo/redo */\n\tundoRedo?: boolean,\n\n\t/** location of cell with level buttons */\n\tlevelButtonCell?: {c: number, r: number},\n\n\t/** shows placeholder if grid is empty */\n\temptyPlaceholder?: boolean,\n\n\t/** custom cell renderer applied after default renderers */\n\tafterRenderer?: Renderer,\n\n\t/** factor of cell indentation */\n\tcellIndentFactor?: number,\n\n\t/** factor of level indentation */\n\tlevelIndentFactor?: number,\n\n\t/** menu options */\n\tmenus?: MenuOptions,\n\n\t/** editing options */\n\tediting?: EditingOptions,\n\n\t/** selecting options */\n\tselecting?: SelectingOptions,\n\n\t/** comment options */\n\tcomments?: CommentOptions,\n\t\n\t/** scrolling options */\n\tscrolling?: ScrollingOptions,\n\n\t/** event options */\n\tevents?: EventOptions,\n\t\n\t/** max number of sorted columns, deprecated */\n\tmaxSortingColumns?: number;\n\n\t/** enabled column sorting, deprecated */\n\tcolumnSorting?: boolean,\n\n\t/** column sorting options */\n\tsorting?: SortingOptions,\n\n\t/** clipboard options */\n\tclipboard?: ClipboardOptions,\n\n\t/** default cell validation rules */\n\tcellValidation?: CellValidation,\n\n\t/** first cell in viewport */\n\tfirstCell?: CellAddress,\n\n\t/** cell element caching */\n\tcellCache?: boolean,\n\n\t/** use single cell model instance for all grid cells */\n\tsingleCellModel?: boolean,\n\n\t/** options for raw html export/print */\n\tprint?: PrintOptions,\n\n\t/** grid zoom factor */\n\tzoom?: number,\n} & CommonOptions;\n\nexport type OptionSource = Omit<Options, 'rowTree'|'columnTree'|'filters'|'cellValidation'> & {\n\trowTree?: boolean|TreeOptions;\n\tcolumnTree?: boolean|TreeOptions;\n\tfilters?: boolean|FilterOptions;\n\tcellValidation?: CellValidationSource;\n}\n\nexport function initOptions(options?: Partial<OptionSource>, origOptions: OptionSource = null): Options {\n\tconst opt = utils.mergeDeep<OptionSource>({}, constants.DEFAULT_OPTIONS, origOptions, initCommonOptions(options, origOptions));\n\t\n\tif (opt.numberFormat) {\n\t\topt.numberFormatter = numbers.getNumberFormatter(opt.formatLocale, opt.numberFormat);\n\t} else if (!opt.numberFormatter) {\n\t\topt.numberFormatter = numbers.getNumberFormatter(opt.formatLocale);\n\t}\n\n\tif (opt.dateFormat) {\n\t\topt.dateFormatter = dates.getDateFormatter(opt.formatLocale, opt.dateFormat);\n\t} else if (!opt.dateFormatter) {\n\t\topt.dateFormatter = dates.getDateFormatter(opt.formatLocale);\n\t}\n\n\tif (opt.columnSorting) {\n\t\topt.sorting = opt.sorting || {enabled: true};\n\t}\n\t\n\tif (typeof opt.filters === 'boolean') opt.filters = {enabled: opt.filters};\n\topt.filters = Object.assign({}, DEFAULT_FILTER_OPTIONS, opt.filters);\n\n\tif (typeof opt.rowTree === 'boolean') opt.rowTree = {enabled: opt.rowTree};\n\topt.rowTree = Object.assign({}, DEFAULT_TREE_OPTIONS, opt.rowTree);\n\n\tif (typeof opt.columnTree === 'boolean') opt.columnTree = {enabled: opt.columnTree};\n\topt.columnTree = Object.assign({}, DEFAULT_TREE_OPTIONS, opt.columnTree);\n\n\tif (opt.cellValidation) opt.cellValidation = normalizeCellValidation(opt.cellValidation);\n\n\treturn opt as Options;\n}"]}
|
|
1
|
+
{"version":3,"file":"options.js","sourceRoot":"","sources":["../../src/model/options.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,iBAAiB,EAAiB,KAAK,EAAmB,MAAM,iBAAiB,CAAC;AAGpG,OAAO,SAAS,EAAE,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACvF,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAMxC,OAAO,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AAsVxD,MAAM,UAAU,WAAW,CAAC,OAA+B,EAAE,cAA4B,IAAI;IAC5F,MAAM,GAAG,GAAG,KAAK,CAAC,SAAS,CAAe,EAAE,EAAE,SAAS,CAAC,eAAe,EAAE,WAAW,EAAE,iBAAiB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC;IAE/H,IAAI,GAAG,CAAC,YAAY,EAAE,CAAC;QACtB,GAAG,CAAC,eAAe,GAAG,OAAO,CAAC,kBAAkB,CAAC,GAAG,CAAC,YAAY,EAAE,GAAG,CAAC,YAAY,CAAC,CAAC;IACtF,CAAC;SAAM,IAAI,CAAC,GAAG,CAAC,eAAe,EAAE,CAAC;QACjC,GAAG,CAAC,eAAe,GAAG,OAAO,CAAC,kBAAkB,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IACpE,CAAC;IAED,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC;QACpB,GAAG,CAAC,aAAa,GAAG,KAAK,CAAC,gBAAgB,CAAC,GAAG,CAAC,YAAY,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC;IAC9E,CAAC;SAAM,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;QAC/B,GAAG,CAAC,aAAa,GAAG,KAAK,CAAC,gBAAgB,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IAC9D,CAAC;IAED,IAAI,GAAG,CAAC,aAAa,EAAE,CAAC;QACvB,GAAG,CAAC,OAAO,GAAG,GAAG,CAAC,OAAO,IAAI,EAAC,OAAO,EAAE,IAAI,EAAC,CAAC;IAC9C,CAAC;IAED,IAAI,OAAO,GAAG,CAAC,OAAO,KAAK,SAAS;QAAE,GAAG,CAAC,OAAO,GAAG,EAAC,OAAO,EAAE,GAAG,CAAC,OAAO,EAAC,CAAC;IAC3E,GAAG,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,sBAAsB,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;IAErE,IAAI,OAAO,GAAG,CAAC,OAAO,KAAK,SAAS;QAAE,GAAG,CAAC,OAAO,GAAG,EAAC,OAAO,EAAE,GAAG,CAAC,OAAO,EAAC,CAAC;IAC3E,GAAG,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,oBAAoB,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;IAEnE,IAAI,OAAO,GAAG,CAAC,UAAU,KAAK,SAAS;QAAE,GAAG,CAAC,UAAU,GAAG,EAAC,OAAO,EAAE,GAAG,CAAC,UAAU,EAAC,CAAC;IACpF,GAAG,CAAC,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,oBAAoB,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC;IAEzE,IAAI,GAAG,CAAC,cAAc;QAAE,GAAG,CAAC,cAAc,GAAG,uBAAuB,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAEzF,OAAO,GAAc,CAAC;AACvB,CAAC","sourcesContent":["import { numbers, initCommonOptions, CommonOptions, dates, MenuItem, paper } from \"@omegagrid/core\";\nimport { CellValidation, CellValidationSource, Renderer, StyleSource } from \"../types\";\nimport { CommentOptions, FilterSettings, SortSettings } from \"../model\";\nimport constants, { DEFAULT_FILTER_OPTIONS, DEFAULT_TREE_OPTIONS } from \"../constants\";\nimport { utils } from \"@omegagrid/core\";\nimport { ElementModel } from \"./elementModel\";\nimport { CellModel, CellSource } from \"./cellModel\";\nimport { RowModel } from \"./rowModel\";\nimport { ColumnModel } from \"./columnModel\";\nimport { CellAddress, RangeAddress } from \"../common\";\nimport { normalizeCellValidation } from \"./validations\";\n\nexport type ViewMode = 'grid' | 'singleObject';\n\nexport type EditingOptions = {\n\t/** enable inserting new rows */\n\trowInsertion?: boolean,\n\n\t/** enable deleting rows */\n\trowDeletion?: boolean,\n\n\t/** enable editing row outline levels */\n\trowOutline?: boolean,\n\n\t/** enable inserting new columns */\n\tcolInsertion?: boolean,\n\n\t/** enable deleting columns */\n\tcolDeletion?: boolean,\n\n\t/** enable editing column outline levels */\n\tcolOutline?: boolean,\n\n\t/** use calendar editor for date cells */\n\tdateCalendarEditor?: boolean,\n\n};\n\nexport type ScrollingOptions = {\n\t/** maximum proximity of cursor to scrollbar to be visible */\n\tscrollbarVisibilityTreshold?: number,\n\n\t/** enable vertical overscroll */\n\tverticalOverscroll?: boolean,\n\n\t/** enable horizontal overscroll */\n\thorizontalOverscroll?: boolean,\n};\n\nexport type GridMenuItem<T extends ElementModel> = MenuItem & {\n\thidden?: (model: T) => boolean,\n}\n\nexport type MenuOptionsItem<T extends ElementModel> = {\n\titems: GridMenuItem<T>[],\n\thidden?: (model: T) => boolean,\n\treplace?: boolean\n};\n\nexport type MenuOptions = {\n\tcell: MenuOptionsItem<CellModel>,\n\trow: MenuOptionsItem<RowModel>,\n\tcolumn: MenuOptionsItem<ColumnModel>,\n};\n\nexport type EventOptions = {\n\t/** grid click event options */\n\tclick: {\n\t\t/** maximum mouse move path length, after click event is allowed */\n\t\tmouseMoveTreshold: number\n\t}\n};\n\nexport type SortingOptions = {\n\t/** column sorting enabled */\n\tenabled?: boolean,\n\t\n\t/** maximum number of columns that can be sorted */\n\tmaxColumns?: number,\n\t\n\t/** initial sorting settings */\n\tdefaultSettings?: SortSettings[]\n};\n\nexport type FilterOptions = {\n\tenabled?: boolean;\n\t/** the parents of the matched rows will be included in the results */\n\tincludeParents?: boolean;\n\t/** the children of the matched rows will be included in the results */\n\tincludeChildren?: boolean;\n\t/** initial filter settings */\n\tdefaultSettings?: FilterSettings[]\n}\n\nexport type SelectingOptions = {\n\tenabled?: boolean;\n\tmultiSelect?: boolean;\n}\n\n\nexport type TreeOptions = {\n\tenabled?: boolean;\n\treversed?: boolean;\n}\n\nexport type PasteMode = 'insert'|'rewrite'|'rewrite_append';\n\nexport type ClipboardOptions = {\n\tpasteProps: (keyof CellSource)[]|'all';\n\n\t/**\n\t * paste mode for rows, \n\t * \tinsert = always insert new rows\n\t * \trewrite = rewrite when rows are availible\n\t * \trewrite_append = rewrite when rows are availible, otherwise insert new rows; default\n\t */\n\trowPasteMode?: PasteMode;\n\n\t/**\n\t * paste mode for columns, \n\t * \tinsert = always insert new columns\n\t * \trewrite = rewrite when columns are availible; default\n\t * \trewrite_append = rewrite when columns are availible, otherwise insert new columns\n\t */\n\tcolumnPasteMode?: PasteMode;\n\n\t/**\n\t * Skips hidden rows when pasting data.\n\t * Values are pasted into nearest visible row.\n\t */\n\tskipHiddenRows?: boolean;\n}\n\nexport type PrintOptions = {\n\t/** idexes of rows, after which page break will be inserted */\n\trowBreaks?: number[];\n\n\t/** range of rows to repeat at the top of each page, eg: \"1:20\" */\n\trowTitles?: RangeAddress;\n\n\t/** print scale, 50 = 50% */\n\tscale?: number;\n\n\t/** print page orientation */\n\torientation?: 'landscape'|'portrait';\n\n\t/** print quality */\n\tdpi?: number;\n\n\t/** print paper size */\n\tpaper?: paper.PaperType|paper.PaperSize;\n\n\t/** page margin settings */\n\tmargins?: {\n\t\ttop: number,\n\t\tbottom: number,\n\t\tleft: number,\n\t\tright: number,\n\t\theader: number,\n\t\tfooter: number\n\t}\n}\n\nexport type HeaderOptions = {\n\tstyle?: StyleSource;\n}\n\nexport type Options = {\n\tviewMode?: ViewMode,\n\n\t/** default number of rows */\n\trows?: number;\n\n\t/** default number of columns */\n\tcolumns?: number;\n\n\t/** readOnly cells */\n\treadOnly?: boolean;\n\n\t/** header options */\n\theaders?: HeaderOptions;\n\n\t/** render column with row numbers */\n\trowNumbers?: boolean;\n\n\t/** render column with row numbers */\n\trowResize?: boolean;\n\n\t/** default row priority */\n\trowPriority?: number;\n\n\t/** render column with row tree outline */\n\trowTree?: TreeOptions;\n\n\t/** render header row with column letters */\n\tcolLetters?: boolean;\n\n\t/** render row with column tree outline */\n\tcolumnTree?: TreeOptions;\n\n\t/** default column priority */\n\tcolumnPriority?: number;\n\n\t/** render column with row numbers */\n\tcolumnResize?: boolean;\n\n\t/** render tree buttons in column header labels */\n\tcolumnHeaderTreeButtons?: boolean;\n\n\t/** number of freezed rows on the top */\n\tfreezeTop?: number;\n\t\n\t/** number of freezed columns on the left */\n\tfreezeLeft?: number;\n\n\t/** number of freezed columns on the right, not implemented yet */\n\tfreezeRight?: number;\n\n\t/** number of freezed rows on the bottom, not implemented yet */\n\tfreezeBottom?: number;\n\n\t/** default font size */\n\tfontSize?: number;\n\n\t/** default row height */\n\trowHeight?: number;\n\n\t/** remove row hidden property after its parent is expanded */\n\tunhideRowAfterExpand?: boolean;\n\n\t/** default column width */\n\tcolumnWidth?: number;\n\n\t/** remove column hidden property after its parent is expanded */\n\tunhideColumnAfterExpand?: boolean;\n\n\t/** style source are native css styles */\n\tcssStyles?: boolean;\n\n\t/** cell border visibility */\n\tgrid?: boolean,\n\t\n\t/** column filter options */\n\tfilters?: FilterOptions,\n\n\t/** default number format */\n\tnumberFormat?: string,\n\t\n\t/** tries to repair invalid number/date formats */\n\tfixNumberFormat?: boolean,\n\n\t/** shows click indicator even in cells without value */\n\temptyClickable?: boolean,\n\n\t/** custom number formatter function */\n\tnumberFormatter?: numbers.NumberFormatterFunction,\n\n\t/** custom date formatter function */\n\tdateFormatter?: dates.DateFormatterFunction,\n\t\n\t/** enables default cell editing */\n\teditable?: boolean,\n\n\t/** enables default cell commenting */\n\tcommentable?: boolean,\n\n\t/** enables autofill function */\n\tautofill?: boolean,\n\n\t/** number of rows on one page for dynamic row fetching */\n\tpageSize?: number,\n\n\t/** enables command window */\n\tcommandWindow?: boolean,\n\n\t/** enables undo/redo */\n\tundoRedo?: boolean,\n\n\t/** location of cell with level buttons */\n\tlevelButtonCell?: {c: number, r: number},\n\n\t/** shows placeholder if grid is empty */\n\temptyPlaceholder?: boolean,\n\n\t/** custom cell renderer applied after default renderers */\n\tafterRenderer?: Renderer,\n\n\t/** factor of cell indentation */\n\tcellIndentFactor?: number,\n\n\t/** factor of level indentation */\n\tlevelIndentFactor?: number,\n\n\t/** menu options */\n\tmenus?: MenuOptions,\n\n\t/** editing options */\n\tediting?: EditingOptions,\n\n\t/** selecting options */\n\tselecting?: SelectingOptions,\n\n\t/** comment options */\n\tcomments?: CommentOptions,\n\t\n\t/** scrolling options */\n\tscrolling?: ScrollingOptions,\n\n\t/** event options */\n\tevents?: EventOptions,\n\t\n\t/** max number of sorted columns, deprecated */\n\tmaxSortingColumns?: number;\n\n\t/** enabled column sorting, deprecated */\n\tcolumnSorting?: boolean,\n\n\t/** column sorting options */\n\tsorting?: SortingOptions,\n\n\t/** clipboard options */\n\tclipboard?: ClipboardOptions,\n\n\t/** default cell validation rules */\n\tcellValidation?: CellValidation,\n\n\t/** first cell in viewport */\n\tfirstCell?: CellAddress,\n\n\t/** cell element caching */\n\tcellCache?: boolean,\n\n\t/** use single cell model instance for all grid cells */\n\tsingleCellModel?: boolean,\n\n\t/** options for raw html export/print */\n\tprint?: PrintOptions,\n\n\t/** grid zoom factor */\n\tzoom?: number,\n\n\t/** hides the outer border of the grid (right and top) */\n\thideOuterBorder?: boolean,\n} & CommonOptions;\n\nexport type OptionSource = Omit<Options, 'rowTree'|'columnTree'|'filters'|'cellValidation'> & {\n\trowTree?: boolean|TreeOptions;\n\tcolumnTree?: boolean|TreeOptions;\n\tfilters?: boolean|FilterOptions;\n\tcellValidation?: CellValidationSource;\n}\n\nexport function initOptions(options?: Partial<OptionSource>, origOptions: OptionSource = null): Options {\n\tconst opt = utils.mergeDeep<OptionSource>({}, constants.DEFAULT_OPTIONS, origOptions, initCommonOptions(options, origOptions));\n\t\n\tif (opt.numberFormat) {\n\t\topt.numberFormatter = numbers.getNumberFormatter(opt.formatLocale, opt.numberFormat);\n\t} else if (!opt.numberFormatter) {\n\t\topt.numberFormatter = numbers.getNumberFormatter(opt.formatLocale);\n\t}\n\n\tif (opt.dateFormat) {\n\t\topt.dateFormatter = dates.getDateFormatter(opt.formatLocale, opt.dateFormat);\n\t} else if (!opt.dateFormatter) {\n\t\topt.dateFormatter = dates.getDateFormatter(opt.formatLocale);\n\t}\n\n\tif (opt.columnSorting) {\n\t\topt.sorting = opt.sorting || {enabled: true};\n\t}\n\t\n\tif (typeof opt.filters === 'boolean') opt.filters = {enabled: opt.filters};\n\topt.filters = Object.assign({}, DEFAULT_FILTER_OPTIONS, opt.filters);\n\n\tif (typeof opt.rowTree === 'boolean') opt.rowTree = {enabled: opt.rowTree};\n\topt.rowTree = Object.assign({}, DEFAULT_TREE_OPTIONS, opt.rowTree);\n\n\tif (typeof opt.columnTree === 'boolean') opt.columnTree = {enabled: opt.columnTree};\n\topt.columnTree = Object.assign({}, DEFAULT_TREE_OPTIONS, opt.columnTree);\n\n\tif (opt.cellValidation) opt.cellValidation = normalizeCellValidation(opt.cellValidation);\n\n\treturn opt as Options;\n}"]}
|
|
@@ -15,9 +15,9 @@ export declare class SortingModel {
|
|
|
15
15
|
readonly model: GridModel;
|
|
16
16
|
private colMap;
|
|
17
17
|
private _settings;
|
|
18
|
-
get settings(): SortSettings[];
|
|
19
|
-
set settings(v: SortSettings[]);
|
|
20
|
-
constructor(model: GridModel, _settings?: SortSettings[]);
|
|
18
|
+
get settings(): SortSettings[] | null;
|
|
19
|
+
set settings(v: SortSettings[] | null);
|
|
20
|
+
constructor(model: GridModel, _settings?: SortSettings[] | null);
|
|
21
21
|
/**
|
|
22
22
|
* Get sorting settings for specified column
|
|
23
23
|
* @param c column index
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sortingModel.d.ts","sourceRoot":"","sources":["../../src/model/sortingModel.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAGxC,oBAAY,SAAS;IACpB,GAAG,IAAI;IACP,IAAI,KAAK;CACT;AAED,MAAM,MAAM,YAAY,GAAG;IAC1B,CAAC,EAAE,MAAM,CAAC;IACV,GAAG,EAAE,SAAS,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAA;CACd,CAAC;AAgCF;;GAEG;AACH,qBAAa,YAAY;aAiBP,KAAK,EAAE,SAAS;IAfjC,OAAO,CAAC,MAAM,CAA6B;IAC3C,OAAO,CAAC,SAAS,CAAsB;IAEvC,IAAI,QAAQ,IACI,YAAY,EAAE,
|
|
1
|
+
{"version":3,"file":"sortingModel.d.ts","sourceRoot":"","sources":["../../src/model/sortingModel.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAGxC,oBAAY,SAAS;IACpB,GAAG,IAAI;IACP,IAAI,KAAK;CACT;AAED,MAAM,MAAM,YAAY,GAAG;IAC1B,CAAC,EAAE,MAAM,CAAC;IACV,GAAG,EAAE,SAAS,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAA;CACd,CAAC;AAgCF;;GAEG;AACH,qBAAa,YAAY;aAiBP,KAAK,EAAE,SAAS;IAfjC,OAAO,CAAC,MAAM,CAA6B;IAC3C,OAAO,CAAC,SAAS,CAAsB;IAEvC,IAAI,QAAQ,IACI,YAAY,EAAE,GAAC,IAAI,CADK;IACxC,IAAI,QAAQ,CAAC,CAAC,EAAE,YAAY,EAAE,GAAC,IAAI,EAQlC;gBAGgB,KAAK,EAAE,SAAS,EAChC,SAAS,GAAE,YAAY,EAAE,GAAC,IAAW;IAKtC;;;OAGG;IACH,GAAG,CAAC,CAAC,EAAE,MAAM;IAIb;;;;;OAKG;IACH,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,GAAE,SAAgB,EAAE,MAAM,UAAQ,GAAG,YAAY;IAuCpE;;OAEG;IACH,SAAS;IAuCT;;OAEG;IACH,SAAS;IAOT;;OAEG;IACH,WAAW;CAIX"}
|
|
@@ -37,7 +37,7 @@ const origComparer = (a, b) => a.origIndex - b.origIndex;
|
|
|
37
37
|
export class SortingModel {
|
|
38
38
|
get settings() { return this._settings; }
|
|
39
39
|
set settings(v) {
|
|
40
|
-
this._settings = v;
|
|
40
|
+
this._settings = v || [];
|
|
41
41
|
this.colMap.clear();
|
|
42
42
|
if (this.settings.length > 0) {
|
|
43
43
|
this.settings.forEach((s, i) => this.colMap.set(s.c, i));
|
|
@@ -45,7 +45,7 @@ export class SortingModel {
|
|
|
45
45
|
log.getLogger().info(`sorting applied: ${JSON.stringify(this.settings)}`);
|
|
46
46
|
}
|
|
47
47
|
}
|
|
48
|
-
constructor(model, _settings =
|
|
48
|
+
constructor(model, _settings = null) {
|
|
49
49
|
this.model = model;
|
|
50
50
|
this.colMap = new Map();
|
|
51
51
|
this._settings = [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sortingModel.js","sourceRoot":"","sources":["../../src/model/sortingModel.ts"],"names":[],"mappings":"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","sourcesContent":["import { UIValueType, log } from \"@omegagrid/core\";\nimport { AditionalUIValueType, Comparer } from \"../types\";\nimport { CellModel } from \"./cellModel\";\nimport { GridModel } from \"./gridModel\";\nimport { RowModel } from \"./rowModel\";\n\nexport enum SortOrder {\n\tAsc = 1,\n\tDesc = -1\n}\n\nexport type SortSettings = {\n\tc: number,\n\tord: SortOrder,\n\tindex?: number\n};\n\nconst ascComparers: Record<UIValueType|AditionalUIValueType, Comparer> = {\n\t'g': (a: CellModel, b: CellModel) => a.value == b.value ? 0 : (a.value > b.value ? 1 : -1),\n\t't': (a: CellModel, b: CellModel) => (a.value as string || '').toString().localeCompare((b.value as string || '').toString()),\n\t's': (a: CellModel, b: CellModel) => a.value == b.value ? 0 : (a.value > b.value ? 1 : -1),\n\t'm': (a: CellModel, b: CellModel) => a.value == b.value ? 0 : (a.value > b.value ? 1 : -1),\n\t'n': (a: CellModel, b: CellModel) => (a.value as number) - (b.value as number),\n\t'd': (a: CellModel, b: CellModel) => (a.value instanceof Date ? a.value.getTime() : 0) - (b.value instanceof Date ? b.value.getTime() : 0),\n\t'tm': (a: CellModel, b: CellModel) => (a.value instanceof Date ? a.value.getTime() : 0) - (b.value instanceof Date ? b.value.getTime() : 0),\n\t'dt': (a: CellModel, b: CellModel) => (a.value instanceof Date ? a.value.getTime() : 0) - (b.value instanceof Date ? b.value.getTime() : 0),\n\t'b': (a: CellModel, b: CellModel) => (a.value as number) - (b.value as number),\n\t'h': (a: CellModel, b: CellModel) => ((a.value as string) || '').localeCompare(b.value as string),\n\t'a': () => 0\n};\n\nconst descComparers: Record<UIValueType|AditionalUIValueType, Comparer> = {\n\t'g': (b: CellModel, a: CellModel) => a.value == b.value ? 0 : (a.value > b.value ? 1 : -1),\n\t't': (b: CellModel, a: CellModel) => (a.value as string || '').toString().localeCompare((b.value as string || '').toString()),\n\t's': (b: CellModel, a: CellModel) => a.value == b.value ? 0 : (a.value > b.value ? 1 : -1),\n\t'm': (b: CellModel, a: CellModel) => a.value == b.value ? 0 : (a.value > b.value ? 1 : -1),\n\t'n': (b: CellModel, a: CellModel) => (a.value as number) - (b.value as number),\n\t'd': (b: CellModel, a: CellModel) => (a.value instanceof Date ? a.value.getTime() : 0) - (b.value instanceof Date ? b.value.getTime() : 0),\n\t'tm': (b: CellModel, a: CellModel) => (a.value instanceof Date ? a.value.getTime() : 0) - (b.value instanceof Date ? b.value.getTime() : 0),\n\t'dt': (b: CellModel, a: CellModel) => (a.value instanceof Date ? a.value.getTime() : 0) - (b.value instanceof Date ? b.value.getTime() : 0),\n\t'b': (b: CellModel, a: CellModel) => (a.value as number) - (b.value as number),\n\t'h': (b: CellModel, a: CellModel) => ((a.value as string) || '').localeCompare(b.value as string),\n\t'a': () => 0\n};\n\nconst origComparer = (a: RowModel, b: RowModel) => a.origIndex - b.origIndex;\n\n/**\n * Class for sorting rows by columns sort settings\n */\nexport class SortingModel {\n\n\tprivate colMap = new Map<number, number>();\n\tprivate _settings: SortSettings[] = [];\n\n\tget settings() { return this._settings }\n\tset settings(v: SortSettings[]) {\n\t\tthis._settings = v;\n\t\tthis.colMap.clear();\n\t\tif (this.settings.length > 0) {\n\t\t\tthis.settings.forEach((s, i) => this.colMap.set(s.c, i));\n\t\t\tthis.applySort();\n\t\t\tlog.getLogger().info(`sorting applied: ${JSON.stringify(this.settings)}`);\n\t\t}\n\t}\n\t\n\tconstructor(\n\t\tpublic readonly model: GridModel,\n\t\t_settings: SortSettings[] = []\n\t) {\n\t\tthis.settings = _settings;\n\t}\n\n\t/**\n\t * Get sorting settings for specified column\n\t * @param c column index\n\t */\n\tget(c: number) {\n\t\treturn this.colMap.has(c) ? this.settings[this.colMap.get(c)] : null;\n\t}\n\n\t/**\n\t * Add sorting settings for specified column\n\t * @param c column index\n\t * @param ord sorting order\n\t * @param custom if true, sorting will not be automaticaly applied\n\t */\n\tsort(c: number, ord: SortOrder = null, custom = false): SortSettings {\n\t\tlet sortSetting: SortSettings = this.get(c);\n\t\tif (sortSetting && sortSetting.ord == SortOrder.Desc && ord === null) {\n\t\t\tthis.settings.splice(this.colMap.get(c), 1);\n\t\t\tsortSetting = null;\n\t\t} else if (sortSetting) {\n\t\t\tsortSetting.ord = SortOrder.Desc;\n\t\t\tthis.settings.splice(this.colMap.get(c), 1);\n\t\t} else {\n\t\t\tsortSetting = {c: c, ord: SortOrder.Asc};\n\t\t}\n\t\t\n\t\tif (sortSetting) {\n\t\t\tif (ord !== null) sortSetting.ord = ord;\n\t\t\tthis.colMap.set(c, 0);\n\t\t\tthis.settings.unshift(sortSetting);\n\t\t}\n\t\t\n\t\tif (this.settings.length > this.model.options.maxSortingColumns) {\n\t\t\tthis.settings.pop();\n\t\t}\n\n\t\tthis.colMap.clear();\n\t\tthis.settings.forEach((s, i) => {\n\t\t\ts.index = i;\n\t\t\tthis.colMap.set(s.c, i);\n\t\t});\n\n\t\tif (!custom) {\n\t\t\tif (this.settings.length > 0) {\n\t\t\t\tthis.applySort();\n\t\t\t} else {\n\t\t\t\tthis.resetSort();\n\t\t\t}\n\t\t}\n\n\t\treturn sortSetting;\n\t}\n\n\t/**\n\t * Apply current sorting settings to rows\n\t */\n\tapplySort() {\n\t\tconst m = this.model;\n\t\tconst cellComparers = this.settings.map(s => {\n\t\t\tconst column = m.columns[s.c];\n\t\t\tif (!column) {\n\t\t\t\tlog.getLogger().warn(`Column sorting: Column with index ${s.c} not found`);\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\t\n\t\t\tif (column.comparer) return s.ord == SortOrder.Asc \n\t\t\t\t? column.comparer\n\t\t\t\t: (a: CellModel, b: CellModel) => -column.comparer(a, b);\n\n\t\t\treturn s.ord == SortOrder.Asc\n\t\t\t\t? ascComparers[column.type ?? 't']\n\t\t\t\t: descComparers[column.type ?? 't'];\n\t\t}).filter(c => c);\n\n\t\tconst len = cellComparers.length;\n\t\tlet ord: number, i: number, c: number;\n\n\t\tconst rowComparer = (a: RowModel, b: RowModel) => {\n\t\t\tif (a.sortable === false || b.sortable === false) {\n\t\t\t\t// if sorting for one of the rows is disabled, use original index for comparison\n\t\t\t\treturn a.origIndex - b.origIndex;\n\t\t\t}\n\n\t\t\tfor (i = 0; i < len; i++) {\n\t\t\t\tc = this.settings[i].c;\n\t\t\t\tord = cellComparers[i](a.cell(c), b.cell(c));\n\t\t\t\tif (ord != 0) return ord;\n\t\t\t}\n\t\t\treturn 0;\n\t\t};\n\n\t\tm.rowRoot.sort(rowComparer);\n\t\tm.indexRowsByTree();\n\t}\n\n\t/**\n\t * Reset row order to default state\n\t */\n\tresetSort() {\n\t\tthis.settings = [];\n\t\tthis.colMap.clear();\n\t\tthis.model.rowRoot.sort(origComparer);\n\t\tthis.model.indexRowsByTree();\n\t}\n\n\t/**\n\t * Use current sorting settings as default row order\n\t */\n\tpersistSort() {\n\t\tthis.model.rows.forEach((r, i) => r.origIndex = i);\n\t}\n\n}"]}
|
|
1
|
+
{"version":3,"file":"sortingModel.js","sourceRoot":"","sources":["../../src/model/sortingModel.ts"],"names":[],"mappings":"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","sourcesContent":["import { UIValueType, log } from \"@omegagrid/core\";\nimport { AditionalUIValueType, Comparer } from \"../types\";\nimport { CellModel } from \"./cellModel\";\nimport { GridModel } from \"./gridModel\";\nimport { RowModel } from \"./rowModel\";\n\nexport enum SortOrder {\n\tAsc = 1,\n\tDesc = -1\n}\n\nexport type SortSettings = {\n\tc: number,\n\tord: SortOrder,\n\tindex?: number\n};\n\nconst ascComparers: Record<UIValueType|AditionalUIValueType, Comparer> = {\n\t'g': (a: CellModel, b: CellModel) => a.value == b.value ? 0 : (a.value > b.value ? 1 : -1),\n\t't': (a: CellModel, b: CellModel) => (a.value as string || '').toString().localeCompare((b.value as string || '').toString()),\n\t's': (a: CellModel, b: CellModel) => a.value == b.value ? 0 : (a.value > b.value ? 1 : -1),\n\t'm': (a: CellModel, b: CellModel) => a.value == b.value ? 0 : (a.value > b.value ? 1 : -1),\n\t'n': (a: CellModel, b: CellModel) => (a.value as number) - (b.value as number),\n\t'd': (a: CellModel, b: CellModel) => (a.value instanceof Date ? a.value.getTime() : 0) - (b.value instanceof Date ? b.value.getTime() : 0),\n\t'tm': (a: CellModel, b: CellModel) => (a.value instanceof Date ? a.value.getTime() : 0) - (b.value instanceof Date ? b.value.getTime() : 0),\n\t'dt': (a: CellModel, b: CellModel) => (a.value instanceof Date ? a.value.getTime() : 0) - (b.value instanceof Date ? b.value.getTime() : 0),\n\t'b': (a: CellModel, b: CellModel) => (a.value as number) - (b.value as number),\n\t'h': (a: CellModel, b: CellModel) => ((a.value as string) || '').localeCompare(b.value as string),\n\t'a': () => 0\n};\n\nconst descComparers: Record<UIValueType|AditionalUIValueType, Comparer> = {\n\t'g': (b: CellModel, a: CellModel) => a.value == b.value ? 0 : (a.value > b.value ? 1 : -1),\n\t't': (b: CellModel, a: CellModel) => (a.value as string || '').toString().localeCompare((b.value as string || '').toString()),\n\t's': (b: CellModel, a: CellModel) => a.value == b.value ? 0 : (a.value > b.value ? 1 : -1),\n\t'm': (b: CellModel, a: CellModel) => a.value == b.value ? 0 : (a.value > b.value ? 1 : -1),\n\t'n': (b: CellModel, a: CellModel) => (a.value as number) - (b.value as number),\n\t'd': (b: CellModel, a: CellModel) => (a.value instanceof Date ? a.value.getTime() : 0) - (b.value instanceof Date ? b.value.getTime() : 0),\n\t'tm': (b: CellModel, a: CellModel) => (a.value instanceof Date ? a.value.getTime() : 0) - (b.value instanceof Date ? b.value.getTime() : 0),\n\t'dt': (b: CellModel, a: CellModel) => (a.value instanceof Date ? a.value.getTime() : 0) - (b.value instanceof Date ? b.value.getTime() : 0),\n\t'b': (b: CellModel, a: CellModel) => (a.value as number) - (b.value as number),\n\t'h': (b: CellModel, a: CellModel) => ((a.value as string) || '').localeCompare(b.value as string),\n\t'a': () => 0\n};\n\nconst origComparer = (a: RowModel, b: RowModel) => a.origIndex - b.origIndex;\n\n/**\n * Class for sorting rows by columns sort settings\n */\nexport class SortingModel {\n\n\tprivate colMap = new Map<number, number>();\n\tprivate _settings: SortSettings[] = [];\n\n\tget settings() { return this._settings }\n\tset settings(v: SortSettings[]|null) {\n\t\tthis._settings = v || [];\n\t\tthis.colMap.clear();\n\t\tif (this.settings.length > 0) {\n\t\t\tthis.settings.forEach((s, i) => this.colMap.set(s.c, i));\n\t\t\tthis.applySort();\n\t\t\tlog.getLogger().info(`sorting applied: ${JSON.stringify(this.settings)}`);\n\t\t}\n\t}\n\t\n\tconstructor(\n\t\tpublic readonly model: GridModel,\n\t\t_settings: SortSettings[]|null = null\n\t) {\n\t\tthis.settings = _settings;\n\t}\n\n\t/**\n\t * Get sorting settings for specified column\n\t * @param c column index\n\t */\n\tget(c: number) {\n\t\treturn this.colMap.has(c) ? this.settings[this.colMap.get(c)] : null;\n\t}\n\n\t/**\n\t * Add sorting settings for specified column\n\t * @param c column index\n\t * @param ord sorting order\n\t * @param custom if true, sorting will not be automaticaly applied\n\t */\n\tsort(c: number, ord: SortOrder = null, custom = false): SortSettings {\n\t\tlet sortSetting: SortSettings = this.get(c);\n\t\tif (sortSetting && sortSetting.ord == SortOrder.Desc && ord === null) {\n\t\t\tthis.settings.splice(this.colMap.get(c), 1);\n\t\t\tsortSetting = null;\n\t\t} else if (sortSetting) {\n\t\t\tsortSetting.ord = SortOrder.Desc;\n\t\t\tthis.settings.splice(this.colMap.get(c), 1);\n\t\t} else {\n\t\t\tsortSetting = {c: c, ord: SortOrder.Asc};\n\t\t}\n\t\t\n\t\tif (sortSetting) {\n\t\t\tif (ord !== null) sortSetting.ord = ord;\n\t\t\tthis.colMap.set(c, 0);\n\t\t\tthis.settings.unshift(sortSetting);\n\t\t}\n\t\t\n\t\tif (this.settings.length > this.model.options.maxSortingColumns) {\n\t\t\tthis.settings.pop();\n\t\t}\n\n\t\tthis.colMap.clear();\n\t\tthis.settings.forEach((s, i) => {\n\t\t\ts.index = i;\n\t\t\tthis.colMap.set(s.c, i);\n\t\t});\n\n\t\tif (!custom) {\n\t\t\tif (this.settings.length > 0) {\n\t\t\t\tthis.applySort();\n\t\t\t} else {\n\t\t\t\tthis.resetSort();\n\t\t\t}\n\t\t}\n\n\t\treturn sortSetting;\n\t}\n\n\t/**\n\t * Apply current sorting settings to rows\n\t */\n\tapplySort() {\n\t\tconst m = this.model;\n\t\tconst cellComparers = this.settings.map(s => {\n\t\t\tconst column = m.columns[s.c];\n\t\t\tif (!column) {\n\t\t\t\tlog.getLogger().warn(`Column sorting: Column with index ${s.c} not found`);\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\t\n\t\t\tif (column.comparer) return s.ord == SortOrder.Asc \n\t\t\t\t? column.comparer\n\t\t\t\t: (a: CellModel, b: CellModel) => -column.comparer(a, b);\n\n\t\t\treturn s.ord == SortOrder.Asc\n\t\t\t\t? ascComparers[column.type ?? 't']\n\t\t\t\t: descComparers[column.type ?? 't'];\n\t\t}).filter(c => c);\n\n\t\tconst len = cellComparers.length;\n\t\tlet ord: number, i: number, c: number;\n\n\t\tconst rowComparer = (a: RowModel, b: RowModel) => {\n\t\t\tif (a.sortable === false || b.sortable === false) {\n\t\t\t\t// if sorting for one of the rows is disabled, use original index for comparison\n\t\t\t\treturn a.origIndex - b.origIndex;\n\t\t\t}\n\n\t\t\tfor (i = 0; i < len; i++) {\n\t\t\t\tc = this.settings[i].c;\n\t\t\t\tord = cellComparers[i](a.cell(c), b.cell(c));\n\t\t\t\tif (ord != 0) return ord;\n\t\t\t}\n\t\t\treturn 0;\n\t\t};\n\n\t\tm.rowRoot.sort(rowComparer);\n\t\tm.indexRowsByTree();\n\t}\n\n\t/**\n\t * Reset row order to default state\n\t */\n\tresetSort() {\n\t\tthis.settings = [];\n\t\tthis.colMap.clear();\n\t\tthis.model.rowRoot.sort(origComparer);\n\t\tthis.model.indexRowsByTree();\n\t}\n\n\t/**\n\t * Use current sorting settings as default row order\n\t */\n\tpersistSort() {\n\t\tthis.model.rows.forEach((r, i) => r.origIndex = i);\n\t}\n\n}"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@omegagrid/grid-core",
|
|
3
|
-
"version": "0.9.
|
|
3
|
+
"version": "0.9.40",
|
|
4
4
|
"license": "UNLICENSED",
|
|
5
5
|
"description": "Grid model, no ui components",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -28,8 +28,8 @@
|
|
|
28
28
|
"generate-functions-docs": "node ./scripts/generate-functions-docs.cjs"
|
|
29
29
|
},
|
|
30
30
|
"dependencies": {
|
|
31
|
-
"@omegagrid/core": "^0.9.
|
|
32
|
-
"@omegagrid/localize": "^0.9.
|
|
31
|
+
"@omegagrid/core": "^0.9.40",
|
|
32
|
+
"@omegagrid/localize": "^0.9.40",
|
|
33
33
|
"@stdlib/stats": "^0.0.13",
|
|
34
34
|
"color": "^4.2.3",
|
|
35
35
|
"date-fns": "^3.2.0",
|