d2coreui 23.0.28 → 23.0.30
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/components/grid/cell/cellControl.d.ts +8 -0
- package/components/grid/cell/cellControl.js +13 -0
- package/components/grid/cell/cellControl.js.map +1 -0
- package/components/grid/cell/dragListenerFeature.d.ts +6 -0
- package/components/grid/cell/dragListenerFeature.js +26 -0
- package/components/grid/cell/dragListenerFeature.js.map +1 -0
- package/components/grid/cell/rangeSelector.d.ts +75 -37
- package/components/grid/cell/rangeSelector.js +682 -280
- package/components/grid/cell/rangeSelector.js.map +1 -1
- package/components/grid/dataGrid.d.ts +2 -2
- package/components/grid/dataGrid.js +40 -42
- package/components/grid/dataGrid.js.map +1 -1
- package/components/grid/extendedDataGrid.js +1 -1
- package/components/grid/extendedDataGrid.js.map +1 -1
- package/package.json +3 -3
- package/style/index.less +0 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rangeSelector.js","sourceRoot":"","sources":["../../../../../components/grid/cell/rangeSelector.js"],"names":[],"mappings":"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","sourcesContent":["import {\r\n _areEqual,\r\n _exists,\r\n _includes, _isDomLayout,\r\n _last,\r\n _makeNull,\r\n _missing, _removeFromArray,\r\n _shallowCompare,\r\n AutoScrollService, BeanStub\r\n} from \"ag-grid-community\";\r\n\r\nexport class RangeSelector extends BeanStub {\r\n beanName = \"RangeSelector\";\r\n\r\n wireBeans(beans) {\r\n this.rowModel = beans.rowModel;\r\n this.dragService = beans.dragService;\r\n this.columnModel = beans.columnModel;\r\n this.visibleColsService = beans.visibleColsService;\r\n this.cellNavigationService = beans.cellNavigationService;\r\n this.pinnedRowModel = beans.pinnedRowModel;\r\n this.rowPositionUtils = beans.rowPositionUtils;\r\n this.cellPositionUtils = beans.cellPositionUtils;\r\n this.ctrlsService = beans.ctrlsService;\r\n this.valueService = beans.valueService;\r\n this.eventService = beans.eventService;\r\n this.mouseEventService = beans.mouseEventService;\r\n this.gridApi = beans.gridApi;\r\n this.eGridDiv = beans.eGridDiv;\r\n this.focusService = beans.focusService;\r\n this.gos = beans.gos;\r\n }\r\n\r\n postConstruct() {\r\n this.cellRanges = [];\r\n this.bodyScrollListener = this.onBodyScroll.bind(this);\r\n this.dragging = false;\r\n\r\n this.eventService.addEventListener(\"newColumnsLoaded\", () => this.removeAllCellRanges());\r\n this.eventService.addEventListener(\"columnPivotModeChanged\", () => this.removeAllCellRanges());\r\n this.eventService.addEventListener(\"columnRowGroupChanged\", () => this.removeAllCellRanges());\r\n this.eventService.addEventListener(\"columnPivotChanged\", () => this.removeAllCellRanges());\r\n this.eventService.addEventListener(\"columnGroupOpened\", this.refreshLastRangeStart.bind(this));\r\n this.eventService.addEventListener(\"columnMoved\", this.refreshLastRangeStart.bind(this));\r\n this.eventService.addEventListener(\"columnPinned\", this.refreshLastRangeStart.bind(this));\r\n this.eventService.addEventListener(\"columnVisible\", this.onColumnVisibleChange.bind(this));\r\n\r\n this.ctrlsService.whenReady(this,() => {\r\n const gridBodyCon = this.ctrlsService.getGridBodyCtrl();\r\n this.autoScrollService = new AutoScrollService({\r\n scrollContainer: gridBodyCon.getBodyViewportElement(),\r\n scrollAxis: 'xy',\r\n getVerticalPosition: () => gridBodyCon.getScrollFeature().getVScrollPosition().top,\r\n setVerticalPosition: (position) => gridBodyCon.getScrollFeature().setVerticalScrollPosition(position),\r\n getHorizontalPosition: () => gridBodyCon.getScrollFeature().getHScrollPosition().left,\r\n setHorizontalPosition: (position) => gridBodyCon.getScrollFeature().setHorizontalScrollPosition(position),\r\n shouldSkipVerticalScroll: () => !_isDomLayout(this.gos, 'normal'),\r\n shouldSkipHorizontalScroll: () => !gridBodyCon.getScrollFeature().isHorizontalScrollShowing()\r\n });\r\n });\r\n\r\n //intitialization of drag event handling\r\n // const eContainers = guiRoot.querySelectorAll(`[ref=\"eContainer\"]`);\r\n // for (const eContainer of eContainers) {\r\n const params = {\r\n eElement: this.eGridDiv,\r\n onDragStart: this.onDragStart.bind(this),\r\n onDragStop: this.onDragStop.bind(this),\r\n onDragging: this.onDragging.bind(this)\r\n };\r\n\r\n this.dragService.addDragSource(params);\r\n this.dragService.addDestroyFunc(() => this.dragService.removeDragSource(params));\r\n // }\r\n }\r\n\r\n cellPositionEquals(cellA, cellB) {\r\n const colsMatch = cellA.column === cellB.column;\r\n const floatingMatch = cellA.rowPinned === cellB.rowPinned;\r\n const indexMatch = cellA.rowIndex === cellB.rowIndex;\r\n return colsMatch && floatingMatch && indexMatch;\r\n }\r\n\r\n onColumnVisibleChange() {\r\n // first move start column in last cell range (i.e. series chart range)\r\n this.refreshLastRangeStart();\r\n\r\n // then check if the column visibility has changed in any cell range\r\n this.cellRanges.forEach(cellRange => {\r\n const beforeCols = cellRange.columns;\r\n\r\n // remove hidden cols from cell range\r\n cellRange.columns = cellRange.columns.filter(col => col.isVisible());\r\n\r\n const colsInRangeChanged = !_areEqual(beforeCols, cellRange.columns);\r\n if (colsInRangeChanged) {\r\n this.dispatchChangedEvent(false, true, cellRange.id);\r\n }\r\n });\r\n }\r\n\r\n refreshLastRangeStart() {\r\n const lastRange = _last(this.cellRanges);\r\n if (!lastRange) {\r\n return;\r\n }\r\n\r\n this.refreshRangeStart(lastRange);\r\n }\r\n\r\n isContiguousRange(cellRange) {\r\n const rangeColumns = cellRange.columns;\r\n\r\n if (!rangeColumns.length) {\r\n return false;\r\n }\r\n\r\n const allColumns = this.visibleColsService.getAllCols();\r\n const allPositions = rangeColumns.map(c => allColumns.indexOf(c)).sort((a, b) => a - b);\r\n\r\n return _last(allPositions) - allPositions[0] + 1 === rangeColumns.length;\r\n }\r\n\r\n getRangeStartRow(cellRange) {\r\n if (cellRange.startRow && cellRange.endRow) {\r\n return this.rowPositionUtils.before(cellRange.startRow, cellRange.endRow) ?\r\n cellRange.startRow : cellRange.endRow;\r\n }\r\n const rowPinned = this.pinnedRowModel.getPinnedTopRowCount() > 0 ? 'top' : null;\r\n return {rowIndex: 0, rowPinned};\r\n }\r\n\r\n getRangeEndRow(cellRange) {\r\n if (cellRange.startRow && cellRange.endRow) {\r\n return this.rowPositionUtils.before(cellRange.startRow, cellRange.endRow) ?\r\n cellRange.endRow : cellRange.startRow;\r\n }\r\n\r\n const pinnedBottomRowCount = this.pinnedRowModel.getPinnedBottomRowCount();\r\n const pinnedBottom = pinnedBottomRowCount > 0;\r\n\r\n if (pinnedBottom) {\r\n return {\r\n rowIndex: pinnedBottomRowCount - 1,\r\n rowPinned: 'bottom'\r\n };\r\n }\r\n\r\n return {\r\n rowIndex: this.rowModel.getRowCount() - 1,\r\n rowPinned: null\r\n };\r\n }\r\n\r\n setRangeToCell(cell, appendRange = false) {\r\n const columns = this.calculateColumnsBetween(cell.column, cell.column);\r\n if (!columns) {\r\n return;\r\n }\r\n this.removeAllCellRanges(true);\r\n const rowForCell = {\r\n rowIndex: cell.rowIndex,\r\n rowPinned: cell.rowPinned\r\n };\r\n\r\n // if there is already a range for this cell, then we reuse the same range, otherwise the user\r\n // can ctrl & click a cell many times and hit ctrl+c, which would result in the cell getting copied\r\n // many times to the clipboard.\r\n let cellRange;\r\n for (let i = 0; i < this.cellRanges.length; i++) {\r\n const range = this.cellRanges[i];\r\n const matches =\r\n // check cols are same\r\n (range.columns && range.columns.length === 1 && range.columns[0] === cell.column) &&\r\n // check rows are same\r\n this.rowPositionUtils.sameRow(rowForCell, range.startRow) &&\r\n this.rowPositionUtils.sameRow(rowForCell, range.endRow);\r\n if (matches) {\r\n cellRange = range;\r\n break;\r\n }\r\n }\r\n\r\n if (cellRange) {\r\n // we need it at the end of the list, as the dragStart picks the last created\r\n // range as the start point for the drag\r\n const atEndOfList = _last(this.cellRanges) === cellRange;\r\n\r\n if (!atEndOfList) {\r\n _removeFromArray(this.cellRanges, cellRange);\r\n this.cellRanges.push(cellRange);\r\n }\r\n } else {\r\n cellRange = {\r\n startRow: rowForCell,\r\n endRow: rowForCell,\r\n columns: columns,\r\n startColumn: cell.column\r\n };\r\n this.cellRanges.push(cellRange);\r\n }\r\n\r\n this.newestRangeStartCell = cell;\r\n this.onDragStop();\r\n this.dispatchChangedEvent(true, true, cellRange.id);\r\n }\r\n\r\n extendLatestRangeToCell(cellPosition) {\r\n if (this.isEmpty() || !this.newestRangeStartCell) {\r\n return;\r\n }\r\n const cellRange = _last(this.cellRanges);\r\n\r\n this.updateRangeEnd(cellRange, cellPosition);\r\n }\r\n\r\n updateRangeEnd(cellRange, cellPosition, silent) {\r\n silent = !!silent;\r\n const endColumn = cellPosition.column;\r\n const colsToAdd = this.calculateColumnsBetween(cellRange.startColumn, endColumn);\r\n if (!colsToAdd || this.isLastCellOfRange(cellRange, cellPosition)) {\r\n return;\r\n }\r\n\r\n cellRange.columns = colsToAdd;\r\n cellRange.endRow = {rowIndex: cellPosition.rowIndex, rowPinned: cellPosition.rowPinned};\r\n\r\n if (!silent) {\r\n this.dispatchChangedEvent(true, true, cellRange.id);\r\n }\r\n }\r\n\r\n refreshRangeStart(cellRange) {\r\n const {startColumn, columns} = cellRange;\r\n\r\n const moveColInCellRange = (colToMove, moveToFront) => {\r\n const otherCols = cellRange.columns.filter(col => col !== colToMove);\r\n if (colToMove) {\r\n cellRange.startColumn = colToMove;\r\n cellRange.columns = moveToFront ? [colToMove, ...otherCols] : [...otherCols, colToMove];\r\n } else {\r\n cellRange.columns = otherCols;\r\n }\r\n };\r\n\r\n const {left, right} = this.getRangeEdgeColumns(cellRange);\r\n const shouldMoveLeftCol = startColumn === columns[0] && startColumn !== left;\r\n if (shouldMoveLeftCol) {\r\n moveColInCellRange(left, true);\r\n return;\r\n }\r\n const shouldMoveRightCol = startColumn === _last(columns) && startColumn === right;\r\n if (shouldMoveRightCol) {\r\n moveColInCellRange(right, false);\r\n return;\r\n }\r\n }\r\n\r\n getRangeEdgeColumns(cellRange) {\r\n const allColumns = this.visibleColsService.getAllCols();\r\n const allIndices = cellRange.columns\r\n .map(c => allColumns.indexOf(c))\r\n .filter(i => i > -1)\r\n .sort((a, b) => a - b);\r\n\r\n return {\r\n left: allColumns[allIndices[0]],\r\n right: allColumns[_last(allIndices)]\r\n };\r\n }\r\n\r\n // returns true if successful, false if not successful\r\n extendLatestRangeInDirection(key) {\r\n if (this.isEmpty() || !this.newestRangeStartCell) {\r\n return;\r\n }\r\n\r\n const lastRange = _last(this.cellRanges);\r\n\r\n const startCell = this.newestRangeStartCell;\r\n\r\n const firstCol = lastRange.columns[0];\r\n const lastCol = _last(lastRange.columns);\r\n\r\n // find the cell that is at the furthest away corner from the starting cell\r\n const endCellIndex = lastRange.endRow.rowIndex;\r\n const endCellFloating = lastRange.endRow.rowPinned;\r\n const endCellColumn = startCell.column === firstCol ? lastCol : firstCol;\r\n\r\n const endCell = {column: endCellColumn, rowIndex: endCellIndex, rowPinned: endCellFloating};\r\n const newEndCell = this.cellNavigationService.getNextCellToFocus(key, endCell);\r\n\r\n // if user is at end of grid, so no cell to extend to, we return false\r\n if (!newEndCell) {\r\n return;\r\n }\r\n\r\n this.setCellRange({\r\n rowStartIndex: startCell.rowIndex,\r\n rowStartPinned: startCell.rowPinned,\r\n rowEndIndex: newEndCell.rowIndex,\r\n rowEndPinned: newEndCell.rowPinned,\r\n columnStart: startCell.column,\r\n columnEnd: newEndCell.column\r\n });\r\n\r\n return newEndCell;\r\n }\r\n\r\n setCellRange(params) {\r\n this.removeAllCellRanges(true);\r\n this.addCellRange(params);\r\n }\r\n\r\n setCellRanges(cellRanges) {\r\n if (_shallowCompare(this.cellRanges, cellRanges)) {\r\n return;\r\n }\r\n this.removeAllCellRanges(true);\r\n\r\n cellRanges.forEach(newRange => {\r\n if (newRange.columns && newRange.startRow) {\r\n this.newestRangeStartCell = {\r\n rowIndex: newRange.startRow.rowIndex,\r\n rowPinned: newRange.startRow.rowPinned,\r\n column: newRange.columns[0]\r\n };\r\n }\r\n this.cellRanges.push(newRange);\r\n });\r\n\r\n this.dispatchChangedEvent(false, true);\r\n }\r\n\r\n createCellRangeFromCellRangeParams(params) {\r\n let columns;\r\n if (params.columns) {\r\n columns = params.columns.map(c => this.columnModel.getColumnWithValidation(c)).filter(c => c);\r\n } else {\r\n const columnStart = this.columnModel.getColumnWithValidation(params.columnStart);\r\n const columnEnd = this.columnModel.getColumnWithValidation(params.columnEnd);\r\n if (!columnStart || !columnEnd) {\r\n return;\r\n }\r\n columns = this.calculateColumnsBetween(columnStart, columnEnd);\r\n }\r\n\r\n if (!columns) {\r\n return;\r\n }\r\n\r\n const startRow = params.rowStartIndex != null ? {\r\n rowIndex: params.rowStartIndex,\r\n rowPinned: params.rowStartPinned\r\n } : undefined;\r\n\r\n const endRow = params.rowEndIndex != null ? {\r\n rowIndex: params.rowEndIndex,\r\n rowPinned: params.rowEndPinned\r\n } : undefined;\r\n\r\n return {\r\n startRow: startRow,\r\n endRow: endRow,\r\n columns: columns,\r\n startColumn: columns[0]\r\n };\r\n }\r\n\r\n addCellRange(params) {\r\n const newRange = this.createCellRangeFromCellRangeParams(params);\r\n if (newRange) {\r\n this.cellRanges.push(newRange);\r\n this.dispatchChangedEvent(false, true, newRange.id);\r\n }\r\n }\r\n\r\n getCellRanges() {\r\n return this.cellRanges;\r\n }\r\n\r\n isEmpty() {\r\n return this.cellRanges.length === 0;\r\n }\r\n\r\n isMoreThanOneCell() {\r\n if (this.cellRanges.length === 0) {\r\n // no ranges, so not more than one cell\r\n return false;\r\n } else if (this.cellRanges.length > 1) {\r\n // many ranges, so more than one cell\r\n return true;\r\n }\r\n\r\n // only one range, return true if range has more than one\r\n const range = this.cellRanges[0];\r\n const startRow = this.getRangeStartRow(range);\r\n const endRow = this.getRangeEndRow(range);\r\n return startRow.rowPinned !== endRow.rowPinned ||\r\n startRow.rowIndex !== endRow.rowIndex ||\r\n range.columns.length !== 1;\r\n }\r\n\r\n removeAllCellRanges(silent) {\r\n if (this.isEmpty()) {\r\n return;\r\n }\r\n\r\n this.onDragStop();\r\n this.cellRanges.length = 0;\r\n\r\n if (!silent) {\r\n this.dispatchChangedEvent(false, true);\r\n }\r\n }\r\n\r\n// as the user is dragging outside of the panel, the div starts to scroll, which in turn\r\n// means we are selection more (or less) cells, but the mouse isn't moving, so we recalculate\r\n// the selection my mimicking a new mouse event\r\n onBodyScroll() {\r\n this.onDragging(this.lastMouseEvent);\r\n }\r\n\r\n isCellInAnyRange(cell) {\r\n return this.getCellRangeCount(cell) > 0;\r\n }\r\n\r\n isCellInSpecificRange(cell, range) {\r\n const columnInRange = range.columns !== null && _includes(range.columns, cell.column);\r\n const rowInRange = this.isRowInRange(cell.rowIndex, cell.rowPinned, range);\r\n return columnInRange && rowInRange;\r\n }\r\n\r\n isLastCellOfRange(cellRange, cell) {\r\n const {startRow, endRow} = cellRange;\r\n const lastRow = this.rowPositionUtils.before(startRow, endRow) ? endRow : startRow;\r\n const isLastRow = cell.rowIndex === lastRow.rowIndex && cell.rowPinned === lastRow.rowPinned;\r\n const rangeFirstIndexColumn = cellRange.columns[0];\r\n const rangeLastIndexColumn = _last(cellRange.columns);\r\n const lastRangeColumn = cellRange.startColumn === rangeFirstIndexColumn ? rangeLastIndexColumn : rangeFirstIndexColumn;\r\n const isLastColumn = cell.column === lastRangeColumn;\r\n return isLastColumn && isLastRow;\r\n }\r\n\r\n isBottomRightCell(cellRange, cell) {\r\n const allColumns = this.visibleColsService.getAllCols();\r\n const allPositions = cellRange.columns.map(c => allColumns.indexOf(c)).sort((a, b) => a - b);\r\n const {startRow, endRow} = cellRange;\r\n const lastRow = this.rowPositionUtils.before(startRow, endRow) ? endRow : startRow;\r\n\r\n const isRightColumn = allColumns.indexOf(cell.column) === _last(allPositions);\r\n const isLastRow = cell.rowIndex === lastRow.rowIndex && _makeNull(cell.rowPinned) === _makeNull(lastRow.rowPinned);\r\n\r\n return isRightColumn && isLastRow;\r\n }\r\n\r\n// returns the number of ranges this cell is in\r\n getCellRangeCount(cell) {\r\n if (this.isEmpty()) {\r\n return 0;\r\n }\r\n return this.cellRanges.filter(cellRange => this.isCellInSpecificRange(cell, cellRange)).length;\r\n }\r\n\r\n isRowInRange(rowIndex, floating, cellRange) {\r\n\r\n const firstRow = this.getRangeStartRow(cellRange);\r\n const lastRow = this.getRangeEndRow(cellRange);\r\n\r\n const thisRow = {rowIndex: rowIndex, rowPinned: floating};\r\n\r\n // compare rowPinned with == instead of === because it can be `null` or `undefined`\r\n const equalsFirstRow = thisRow.rowIndex === firstRow.rowIndex && thisRow.rowPinned == firstRow.rowPinned;\r\n const equalsLastRow = thisRow.rowIndex === lastRow.rowIndex && thisRow.rowPinned == lastRow.rowPinned;\r\n\r\n if (equalsFirstRow || equalsLastRow) {\r\n return true;\r\n }\r\n\r\n const afterFirstRow = !this.rowPositionUtils.before(thisRow, firstRow);\r\n const beforeLastRow = this.rowPositionUtils.before(thisRow, lastRow);\r\n return afterFirstRow && beforeLastRow;\r\n }\r\n\r\n getDraggingRange() {\r\n return this.draggingRange;\r\n }\r\n\r\n onDragStart(mouseEvent) {\r\n const {shiftKey} = mouseEvent;\r\n const mouseCell = this.mouseEventService.getCellPositionForEvent(mouseEvent);\r\n if (_missing(mouseCell)) {\r\n // if drag wasn't on cell, then do nothing, including do not set dragging=true,\r\n // (which them means onDragging and onDragStop do nothing)\r\n return;\r\n }\r\n\r\n if (!shiftKey || _exists(_last(this.cellRanges).type)) {\r\n this.removeAllCellRanges(true);\r\n }\r\n\r\n this.dragging = true;\r\n this.draggingCell = mouseCell;\r\n this.lastMouseEvent = mouseEvent;\r\n\r\n if (!shiftKey) {\r\n this.newestRangeStartCell = mouseCell;\r\n }\r\n\r\n // if we didn't clear the ranges, then dragging means the user clicked, and when the\r\n // user clicks it means a range of one cell was created. we need to extend this range\r\n // rather than creating another range. otherwise we end up with two distinct ranges\r\n // from a drag operation (one from click, and one from drag).\r\n if (this.cellRanges.length > 0) {\r\n this.draggingRange = _last(this.cellRanges);\r\n } else {\r\n const mouseRowPosition = {\r\n rowIndex: mouseCell.rowIndex,\r\n rowPinned: mouseCell.rowPinned\r\n };\r\n\r\n this.draggingRange = {\r\n startRow: mouseRowPosition,\r\n endRow: mouseRowPosition,\r\n columns: [mouseCell.column],\r\n startColumn: this.newestRangeStartCell.column\r\n };\r\n this.cellRanges.push(this.draggingRange);\r\n }\r\n\r\n this.ctrlsService.getGridBodyCtrl().addScrollEventListener(this.bodyScrollListener);\r\n\r\n this.dispatchChangedEvent(true, false, this.draggingRange.id);\r\n }\r\n\r\n onDragging(mouseEvent) {\r\n if (!this.dragging || !mouseEvent) {\r\n return;\r\n }\r\n this.lastMouseEvent = mouseEvent;\r\n\r\n const cellPosition = this.mouseEventService.getCellPositionForEvent(mouseEvent);\r\n\r\n const isMouseAndStartInPinned = (position) =>\r\n cellPosition && cellPosition.rowPinned === position && this.newestRangeStartCell.rowPinned === position;\r\n\r\n const skipVerticalScroll = isMouseAndStartInPinned('top') || isMouseAndStartInPinned('bottom');\r\n\r\n this.autoScrollService.check(mouseEvent, skipVerticalScroll);\r\n\r\n if (\r\n !cellPosition ||\r\n !this.draggingCell ||\r\n this.cellPositionEquals(this.draggingCell, cellPosition)\r\n ) {\r\n return;\r\n }\r\n\r\n const columns = this.calculateColumnsBetween(this.newestRangeStartCell.column, cellPosition.column);\r\n\r\n if (!columns) {\r\n return;\r\n }\r\n\r\n this.draggingCell = cellPosition;\r\n\r\n this.draggingRange.endRow = {\r\n rowIndex: cellPosition.rowIndex,\r\n rowPinned: cellPosition.rowPinned\r\n };\r\n this.draggingRange.columns = columns;\r\n\r\n this.dispatchChangedEvent(false, false, this.draggingRange.id);\r\n this.focusCell(cellPosition);\r\n }\r\n\r\n focusCell(cellPosition) {\r\n const cellFocused = this.focusService.isCellFocused(cellPosition);\r\n if (!cellFocused) {\r\n this.focusService.setFocusedCell(cellPosition.rowIndex, cellPosition.column, cellPosition.rowPinned, true);\r\n }\r\n }\r\n\r\n onDragStop() {\r\n if (!this.dragging) {\r\n return;\r\n }\r\n const {id} = this.draggingRange;\r\n this.autoScrollService.ensureCleared();\r\n\r\n this.ctrlsService.getGridBodyCtrl().removeScrollEventListener(this.bodyScrollListener);\r\n this.lastMouseEvent = null;\r\n this.dragging = false;\r\n this.draggingRange = undefined;\r\n this.draggingCell = undefined;\r\n\r\n this.dispatchChangedEvent(false, true, id);\r\n }\r\n\r\n dispatchChangedEvent(started, finished, id) {\r\n this.cellRanges.map((cellRange) => {\r\n let currentRow = this.getRangeStartRow(cellRange);\r\n const lastRow = this.getRangeEndRow(cellRange);\r\n const nodesToBeSelected = [];\r\n while (true) {\r\n const finishedAllRows = _missing(currentRow) || !currentRow || this.rowPositionUtils.before(lastRow, currentRow);\r\n if (finishedAllRows || !currentRow || !cellRange.columns) {\r\n break;\r\n }\r\n const rowNode = this.rowPositionUtils.getRowNode(currentRow);\r\n if (!rowNode) {\r\n break;\r\n }\r\n if (!rowNode.isSelected()) {\r\n rowNode.setSelected(true);\r\n }\r\n nodesToBeSelected.push(rowNode.data);\r\n currentRow = this.cellNavigationService.getRowBelow(currentRow);\r\n }\r\n this.gridApi.getSelectedNodes().forEach((node) => {\r\n if (!nodesToBeSelected.some(nodeToBeSelected => node.data === nodeToBeSelected)) {\r\n node.setSelected(false);\r\n }\r\n });\r\n });\r\n const eventCellSelection = {\r\n type: \"cellSelectionChanged\",\r\n started: started,\r\n finished: finished,\r\n id: id,\r\n };\r\n this.eventService.dispatchEvent(eventCellSelection);\r\n const eventRangeSelection = {\r\n type: \"rangeSelectionChanged\",\r\n started: started,\r\n finished: finished,\r\n id: id,\r\n };\r\n this.eventService.dispatchEvent(eventRangeSelection);\r\n }\r\n\r\n calculateColumnsBetween(columnFrom, columnTo) {\r\n const allColumns = this.visibleColsService.getAllCols();\r\n const isSameColumn = columnFrom === columnTo;\r\n const fromIndex = allColumns.indexOf(columnFrom);\r\n\r\n if (fromIndex < 0) {\r\n console.warn(`ag-Grid: column ${columnFrom.getId()} is not visible`);\r\n return undefined;\r\n }\r\n\r\n const toIndex = isSameColumn ? fromIndex : allColumns.indexOf(columnTo);\r\n\r\n if (toIndex < 0) {\r\n console.warn(`ag-Grid: column ${columnTo.getId()} is not visible`);\r\n return undefined;\r\n }\r\n\r\n if (isSameColumn) {\r\n return [columnFrom];\r\n }\r\n\r\n const firstIndex = Math.min(fromIndex, toIndex);\r\n const lastIndex = firstIndex === fromIndex ? toIndex : fromIndex;\r\n\r\n const columns = [];\r\n\r\n for (let i = firstIndex; i <= lastIndex; i++) {\r\n columns.push(allColumns[i]);\r\n }\r\n\r\n return columns;\r\n }\r\n}"]}
|
|
1
|
+
{"version":3,"file":"rangeSelector.js","sourceRoot":"","sources":["../../../../../components/grid/cell/rangeSelector.js"],"names":[],"mappings":"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","sourcesContent":["import {\r\n AutoScrollService,\r\n BeanStub,\r\n _areCellsEqual,\r\n _areEqual,\r\n _exists,\r\n _getAbsoluteRowIndex,\r\n _getCellCtrlForEventTarget,\r\n _getRowAbove,\r\n _getRowBelow,\r\n _getRowCtrlForEventTarget,\r\n _getRowNode,\r\n _getSuppressMultiRanges,\r\n _isDomLayout,\r\n _isRowBefore,\r\n _isSameRow,\r\n _isUsingNewCellSelectionAPI,\r\n _last,\r\n _makeNull,\r\n _missing,\r\n _warn,\r\n isRowNumberCol,\r\n _getRowSelectionMode,\r\n} from 'ag-grid-community';\r\n\r\nimport {DragListenerFeature} from './dragListenerFeature';\r\n\r\nconst SelectionMode = {\r\n NORMAL: 0,\r\n ALL_COLUMNS: 1,\r\n};\r\n\r\nexport class RangeSelector extends BeanStub {\r\n beanName = 'rangeSvc';\r\n\r\n constructor() {\r\n super();\r\n\r\n this.bodyScrollListener = this.onBodyScroll.bind(this);\r\n this.cellRanges = [];\r\n this.dragging = false;\r\n this.intersectionRange = false;\r\n }\r\n\r\n wireBeans(beans) {\r\n this.rowModel = beans.rowModel;\r\n this.dragSvc = beans.dragSvc;\r\n this.colModel = beans.colModel;\r\n this.visibleCols = beans.visibleCols;\r\n this.cellNavigation = beans.cellNavigation;\r\n this.ctrlsSvc = beans.ctrlsSvc;\r\n this.valueSvc = beans.valueSvc;\r\n this.gridApi = beans.gridApi;\r\n }\r\n\r\n postConstruct() {\r\n const onColumnsChanged = this.onColumnsChanged.bind(this);\r\n const removeAllCellRanges = () => this.removeAllCellRanges();\r\n const refreshLastRangeStart = this.refreshLastRangeStart.bind(this);\r\n this.addManagedEventListeners({\r\n newColumnsLoaded: onColumnsChanged,\r\n columnVisible: onColumnsChanged,\r\n columnValueChanged: onColumnsChanged,\r\n columnPivotModeChanged: removeAllCellRanges,\r\n columnRowGroupChanged: removeAllCellRanges,\r\n columnPivotChanged: removeAllCellRanges,\r\n columnGroupOpened: refreshLastRangeStart,\r\n columnMoved: refreshLastRangeStart,\r\n columnPinned: refreshLastRangeStart,\r\n });\r\n\r\n this.ctrlsSvc.whenReady(this, (p) => {\r\n const gridBodyCtrl = p.gridBodyCtrl;\r\n this.autoScrollService = new AutoScrollService({\r\n scrollContainer: gridBodyCtrl.eBodyViewport,\r\n scrollAxis: 'xy',\r\n getVerticalPosition: () => gridBodyCtrl.scrollFeature.getVScrollPosition().top,\r\n setVerticalPosition: (position) => gridBodyCtrl.scrollFeature.setVerticalScrollPosition(position),\r\n getHorizontalPosition: () => gridBodyCtrl.scrollFeature.getHScrollPosition().left,\r\n setHorizontalPosition: (position) => gridBodyCtrl.scrollFeature.setHorizontalScrollPosition(position),\r\n shouldSkipVerticalScroll: () => !_isDomLayout(this.gos, 'normal'),\r\n shouldSkipHorizontalScroll: () => !gridBodyCtrl.scrollFeature.isHorizontalScrollShowing(),\r\n });\r\n });\r\n }\r\n\r\n // Drag And Drop Target Methods\r\n onDragStart(mouseEvent) {\r\n const gos = this.gos;\r\n if (\r\n _getRowCtrlForEventTarget(gos, mouseEvent.target)?.isSuppressMouseEvent(mouseEvent)\r\n ) {\r\n return;\r\n }\r\n\r\n const {ctrlKey, metaKey, shiftKey} = mouseEvent;\r\n\r\n // ctrlKey for windows, metaKey for Apple\r\n const isMultiKey = ctrlKey || metaKey;\r\n const allowMulti = !_getSuppressMultiRanges(gos);\r\n const isMultiSelect = allowMulti ? isMultiKey : false;\r\n const extendRange = shiftKey && !!this.cellRanges?.length;\r\n\r\n if (!isMultiSelect && (!extendRange || _exists(_last(this.cellRanges).type))) {\r\n this.removeAllCellRanges(true);\r\n }\r\n\r\n // The browser changes the Event target of cached events when working with the ShadowDOM\r\n // so we need to retrieve the initial DragStartTarget.\r\n const startTarget = this.dragSvc.startTarget;\r\n\r\n if (startTarget) {\r\n this.updateValuesOnMove(startTarget);\r\n }\r\n\r\n if (!this.lastCellHovered) {\r\n return;\r\n }\r\n\r\n this.dragging = true;\r\n this.lastMouseEvent = mouseEvent;\r\n this.intersectionRange = isMultiSelect && this.getCellRangeCount(this.lastCellHovered) > 1;\r\n\r\n if (!extendRange) {\r\n this.setNewestRangeStartCell(this.lastCellHovered);\r\n }\r\n\r\n // if we didn't clear the ranges, then dragging means the user clicked, and when the\r\n // user clicks it means a range of one cell was created. we need to extend this range\r\n // rather than creating another range. otherwise we end up with two distinct ranges\r\n // from a drag operation (one from click, and one from drag).\r\n if (this.cellRanges.length > 0) {\r\n this.draggingRange = _last(this.cellRanges);\r\n } else {\r\n const mouseRowPosition = {\r\n rowIndex: this.lastCellHovered.rowIndex,\r\n rowPinned: this.lastCellHovered.rowPinned,\r\n };\r\n\r\n const columns = this.getColumnsFromModel([this.lastCellHovered.column]);\r\n\r\n if (!columns?.length) {\r\n return;\r\n }\r\n\r\n this.draggingRange = {\r\n startRow: mouseRowPosition,\r\n endRow: mouseRowPosition,\r\n columns,\r\n startColumn: this.newestRangeStartCell.column,\r\n };\r\n\r\n this.cellRanges.push(this.draggingRange);\r\n }\r\n\r\n this.ctrlsSvc\r\n .getGridBodyCtrl()\r\n .eBodyViewport.addEventListener('scroll', this.bodyScrollListener, {passive: true});\r\n\r\n this.dispatchChangedEvent(true, false, this.draggingRange.id);\r\n }\r\n\r\n onDragging(mouseEvent) {\r\n const {dragging, lastCellHovered, newestRangeStartCell, autoScrollService, cellHasChanged} = this;\r\n if (!dragging || !mouseEvent) {\r\n return;\r\n }\r\n\r\n this.updateValuesOnMove(mouseEvent.target);\r\n\r\n this.lastMouseEvent = mouseEvent;\r\n\r\n const isMouseAndStartInPinned = (position) =>\r\n lastCellHovered && lastCellHovered.rowPinned === position && newestRangeStartCell.rowPinned === position;\r\n\r\n const skipVerticalScroll = isMouseAndStartInPinned('top') || isMouseAndStartInPinned('bottom');\r\n\r\n autoScrollService.check(mouseEvent, skipVerticalScroll);\r\n\r\n if (!cellHasChanged || !lastCellHovered) {\r\n return;\r\n }\r\n\r\n const startColumn = newestRangeStartCell?.column;\r\n const currentColumn = lastCellHovered?.column;\r\n\r\n const columns = this.calculateColumnsBetween(startColumn, currentColumn);\r\n\r\n if (!columns) {\r\n return;\r\n }\r\n\r\n const {rowIndex, rowPinned} = lastCellHovered;\r\n\r\n this.draggingRange.endRow = {\r\n rowIndex,\r\n rowPinned,\r\n };\r\n\r\n this.draggingRange.columns = columns;\r\n this.dispatchChangedEvent(false, false, this.draggingRange.id);\r\n }\r\n\r\n onDragStop() {\r\n if (!this.dragging) {\r\n return;\r\n }\r\n\r\n const {id} = this.draggingRange;\r\n\r\n this.autoScrollService.ensureCleared();\r\n\r\n this.ctrlsSvc.getGridBodyCtrl().eBodyViewport.removeEventListener('scroll', this.bodyScrollListener);\r\n this.lastMouseEvent = null;\r\n this.dragging = false;\r\n this.draggingRange = undefined;\r\n this.lastCellHovered = undefined;\r\n\r\n if (this.intersectionRange) {\r\n this.intersectionRange = false;\r\n this.intersectLastRange();\r\n }\r\n\r\n this.dispatchChangedEvent(false, true, id);\r\n }\r\n\r\n // Called for both columns loaded & column visibility events\r\n onColumnsChanged() {\r\n // first move start column in last cell range (i.e. series chart range)\r\n this.refreshLastRangeStart();\r\n\r\n const allColumns = this.visibleCols.allCols;\r\n\r\n // check that the columns in each range still exist and are visible\r\n for (const cellRange of this.cellRanges) {\r\n const beforeCols = cellRange.columns;\r\n\r\n // remove hidden or removed cols from cell range\r\n cellRange.columns = cellRange.columns.filter(\r\n (col) => col.isVisible() && allColumns.indexOf(col) !== -1\r\n );\r\n\r\n const colsInRangeChanged = !_areEqual(beforeCols, cellRange.columns);\r\n\r\n if (colsInRangeChanged) {\r\n // notify users and other parts of grid (i.e. status panel) that range has changed\r\n this.dispatchChangedEvent(false, true, cellRange.id);\r\n }\r\n }\r\n // Remove empty cell ranges\r\n const countBefore = this.cellRanges.length;\r\n this.cellRanges = this.cellRanges.filter((range) => range.columns.length > 0);\r\n if (countBefore > this.cellRanges.length) {\r\n this.dispatchChangedEvent(false, true);\r\n }\r\n }\r\n\r\n refreshLastRangeStart() {\r\n const lastRange = _last(this.cellRanges);\r\n\r\n if (!lastRange) {\r\n return;\r\n }\r\n\r\n this.refreshRangeStart(lastRange);\r\n }\r\n\r\n isContiguousRange(cellRange) {\r\n const rangeColumns = cellRange.columns;\r\n\r\n if (!rangeColumns.length) {\r\n return false;\r\n }\r\n\r\n const allColumns = this.visibleCols.allCols;\r\n const allPositions = rangeColumns.map((c) => allColumns.indexOf(c)).sort((a, b) => a - b);\r\n\r\n return _last(allPositions) - allPositions[0] + 1 === rangeColumns.length;\r\n }\r\n\r\n getRangeStartRow(cellRange) {\r\n if (cellRange.startRow && cellRange.endRow) {\r\n return _isRowBefore(cellRange.startRow, cellRange.endRow) ? cellRange.startRow : cellRange.endRow;\r\n }\r\n\r\n const pinnedTopRowCount = this.beans.pinnedRowModel?.getPinnedTopRowCount() ?? 0;\r\n const rowPinned = pinnedTopRowCount > 0 ? 'top' : null;\r\n\r\n return {rowIndex: 0, rowPinned};\r\n }\r\n\r\n getRangeEndRow(cellRange) {\r\n if (cellRange.startRow && cellRange.endRow) {\r\n return _isRowBefore(cellRange.startRow, cellRange.endRow) ? cellRange.endRow : cellRange.startRow;\r\n }\r\n\r\n const pinnedBottomRowCount = this.beans.pinnedRowModel?.getPinnedBottomRowCount() ?? 0;\r\n const pinnedBottom = pinnedBottomRowCount > 0;\r\n\r\n if (pinnedBottom) {\r\n return {\r\n rowIndex: pinnedBottomRowCount - 1,\r\n rowPinned: 'bottom',\r\n };\r\n }\r\n\r\n return {\r\n rowIndex: this.rowModel.getRowCount() - 1,\r\n rowPinned: null,\r\n };\r\n }\r\n\r\n getRangeRowCount(cellRange) {\r\n const beans = this.beans;\r\n const start = this.getRangeStartRow(cellRange);\r\n const end = this.getRangeEndRow(cellRange);\r\n\r\n const startIndex = _getAbsoluteRowIndex(beans, start);\r\n const endIndex = _getAbsoluteRowIndex(beans, end);\r\n\r\n return endIndex - startIndex + 1;\r\n }\r\n\r\n setRangeToCell(cell, appendRange = false) {\r\n const {gos} = this;\r\n\r\n const isRowNumbersEnabled = gos.get('rowNumbers');\r\n const allColumnsRange = isRowNumberCol(cell.column);\r\n if (isRowNumbersEnabled) {\r\n this.setSelectionMode(allColumnsRange);\r\n }\r\n\r\n const columns = this.calculateColumnsBetween(cell.column, cell.column);\r\n\r\n if (!columns) {\r\n return;\r\n }\r\n\r\n const suppressMultiRangeSelections = _getSuppressMultiRanges(this.gos);\r\n\r\n // if not appending, then clear previous range selections\r\n if (suppressMultiRangeSelections || !appendRange || _missing(this.cellRanges)) {\r\n this.removeAllCellRanges(true);\r\n }\r\n\r\n const rowForCell = {\r\n rowIndex: cell.rowIndex,\r\n rowPinned: cell.rowPinned,\r\n };\r\n\r\n const cellRange = {\r\n startRow: rowForCell,\r\n endRow: rowForCell,\r\n columns,\r\n startColumn: cell.column,\r\n };\r\n\r\n this.cellRanges.push(cellRange);\r\n\r\n this.setNewestRangeStartCell(cell);\r\n this.onDragStop();\r\n this.dispatchChangedEvent(true, true);\r\n }\r\n\r\n getRangeLastColumn(cellRange) {\r\n const firstCol = cellRange.columns[0];\r\n const lastCol = _last(cellRange.columns);\r\n\r\n return (this.newestRangeStartCell?.column === firstCol ? lastCol : firstCol);\r\n }\r\n\r\n extendRangeRowCountBy(cellRange, targetCount) {\r\n const {beans} = this;\r\n const {startRow, endRow} = cellRange;\r\n\r\n if (!startRow || !endRow) {\r\n return;\r\n }\r\n\r\n let stepsMoved = 0;\r\n let currentRow;\r\n\r\n const isBottomUp = _isRowBefore(endRow, startRow);\r\n if (isBottomUp) {\r\n currentRow = startRow;\r\n } else {\r\n currentRow = endRow;\r\n }\r\n\r\n const stepFn = targetCount > 0 ? _getRowBelow : _getRowAbove;\r\n const stepCount = Math.abs(targetCount);\r\n\r\n while (stepsMoved < stepCount) {\r\n const nextRow = stepFn(beans, currentRow);\r\n if (!nextRow) {\r\n break;\r\n }\r\n currentRow = nextRow;\r\n stepsMoved++;\r\n }\r\n\r\n if (stepsMoved !== stepCount) {\r\n return; // Could not move the desired number of rows\r\n }\r\n\r\n const cellPosition = {\r\n ...currentRow,\r\n column: this.getRangeLastColumn(cellRange),\r\n };\r\n\r\n this.updateRangeRowBoundary({cellRange, boundary: isBottomUp ? 'start' : 'end', cellPosition});\r\n }\r\n\r\n extendRangeColumnCountBy(cellRange, delta) {\r\n const {columns, startColumn} = cellRange;\r\n\r\n if (delta === 0) {\r\n return;\r\n }\r\n\r\n const allColumns = this.getColumnsFromModel(); // ordered visible columns\r\n\r\n if (!allColumns) {\r\n return;\r\n }\r\n\r\n const lastColumn = _last(columns);\r\n const endColumn = startColumn === columns[0] ? lastColumn : columns[0];\r\n\r\n if (!lastColumn || !endColumn) {\r\n return;\r\n }\r\n\r\n let startIdx = allColumns.indexOf(startColumn);\r\n const endIdx = allColumns.indexOf(endColumn);\r\n const isRtlRange = endIdx < startIdx;\r\n\r\n if (isRtlRange) {\r\n // if we are anchoring to the left and the range is rtl\r\n // then we need to flip the start and end indices\r\n startIdx = endIdx;\r\n }\r\n\r\n const currentLength = columns.length;\r\n const targetLength = currentLength + delta;\r\n\r\n if (targetLength <= 0) {\r\n return; // can't shrink to 0 or less\r\n }\r\n\r\n const newColumns = [];\r\n\r\n for (let i = startIdx; i < startIdx + targetLength; i++) {\r\n const col = allColumns[i];\r\n if (!col) {\r\n break;\r\n }\r\n newColumns.push(col);\r\n }\r\n\r\n // Only update if length actually changed\r\n if (newColumns.length === targetLength) {\r\n if (isRtlRange) {\r\n // before we add changes to the range, the\r\n // new range start should receive focus\r\n const newColumnToFocus = _last(newColumns);\r\n cellRange.startColumn = newColumnToFocus;\r\n this.focusCellOnNewColumn(cellRange, newColumnToFocus);\r\n }\r\n cellRange.columns = newColumns;\r\n this.dispatchChangedEvent(true, true, cellRange.id);\r\n }\r\n }\r\n\r\n extendLatestRangeToCell(cellPosition) {\r\n if (this.isEmpty() || !this.newestRangeStartCell) {\r\n return;\r\n }\r\n\r\n const cellRange = _last(this.cellRanges);\r\n\r\n this.setSelectionMode(isRowNumberCol(cellPosition.column));\r\n this.updateRangeRowBoundary({cellRange, boundary: 'end', cellPosition});\r\n }\r\n\r\n updateRangeRowBoundary(params) {\r\n const {cellRange, boundary, cellPosition, silent = false} = params;\r\n const endColumn = cellPosition.column;\r\n const colsToAdd = this.calculateColumnsBetween(cellRange.startColumn, endColumn);\r\n\r\n if (!colsToAdd || this.isLastCellOfRange(cellRange, cellPosition)) {\r\n return;\r\n }\r\n\r\n if (boundary === 'start') {\r\n this.focusCellOnNewRow(cellRange, cellPosition);\r\n }\r\n\r\n cellRange.columns = colsToAdd;\r\n cellRange[boundary === 'start' ? 'startRow' : 'endRow'] = {\r\n rowIndex: cellPosition.rowIndex,\r\n rowPinned: cellPosition.rowPinned,\r\n };\r\n\r\n if (!silent) {\r\n this.dispatchChangedEvent(true, true, cellRange.id);\r\n }\r\n }\r\n\r\n getRangeEdgeColumns(cellRange) {\r\n const allColumns = this.visibleCols.allCols;\r\n const allIndices = cellRange.columns\r\n .map((c) => allColumns.indexOf(c))\r\n .filter((i) => i > -1)\r\n .sort((a, b) => a - b);\r\n\r\n return {\r\n left: allColumns[allIndices[0]],\r\n right: allColumns[_last(allIndices)],\r\n };\r\n }\r\n\r\n // returns true if successful, false if not successful\r\n extendLatestRangeInDirection(event) {\r\n if (this.isEmpty() || !this.newestRangeStartCell) {\r\n return;\r\n }\r\n\r\n const key = event.key;\r\n const ctrlKey = event.ctrlKey || event.metaKey;\r\n\r\n const lastRange = _last(this.cellRanges);\r\n const startCell = this.newestRangeStartCell;\r\n\r\n // find the cell that is at the furthest away corner from the starting cell\r\n const endCellIndex = lastRange.endRow.rowIndex;\r\n const endCellFloating = lastRange.endRow.rowPinned;\r\n const endCellColumn = this.getRangeLastColumn(lastRange);\r\n\r\n const endCell = {column: endCellColumn, rowIndex: endCellIndex, rowPinned: endCellFloating};\r\n const newEndCell = this.cellNavigation.getNextCellToFocus(key, endCell, ctrlKey);\r\n\r\n // if user is at end of grid, so no cell to extend to, we return false\r\n if (!newEndCell) {\r\n return;\r\n }\r\n\r\n this.setCellRange({\r\n rowStartIndex: startCell.rowIndex,\r\n rowStartPinned: startCell.rowPinned,\r\n rowEndIndex: newEndCell.rowIndex,\r\n rowEndPinned: newEndCell.rowPinned,\r\n columnStart: startCell.column,\r\n columnEnd: newEndCell.column,\r\n });\r\n\r\n return newEndCell;\r\n }\r\n\r\n setCellRange(params) {\r\n this.removeAllCellRanges(true);\r\n this.addCellRange(params);\r\n }\r\n\r\n setCellRanges(cellRanges) {\r\n if (_areEqual(this.cellRanges, cellRanges)) {\r\n return;\r\n }\r\n\r\n if (!this.verifyCellRanges(this.gos)) {\r\n return;\r\n }\r\n\r\n this.removeAllCellRanges(true);\r\n\r\n for (const cellRange of cellRanges) {\r\n if (cellRange.columns && cellRange.startRow) {\r\n const columns = this.getColumnsFromModel(cellRange.columns);\r\n if (!columns || columns.length === 0) {\r\n continue;\r\n }\r\n\r\n cellRange.columns = columns;\r\n\r\n const {startRow} = cellRange;\r\n\r\n this.setNewestRangeStartCell({\r\n rowIndex: startRow.rowIndex,\r\n rowPinned: startRow.rowPinned,\r\n column: cellRange.columns[0],\r\n });\r\n }\r\n\r\n this.cellRanges.push(cellRange);\r\n }\r\n\r\n this.dispatchChangedEvent(false, true);\r\n }\r\n\r\n clearCellRangeCellValues(params) {\r\n const {beans, valueSvc, eventSvc} = this;\r\n const {cellEventSource = 'rangeSvc', dispatchWrapperEvents, wrapperEventSource = 'deleteKey'} = params;\r\n\r\n let {cellRanges} = params;\r\n\r\n if (dispatchWrapperEvents) {\r\n eventSvc.dispatchEvent({\r\n type: 'cellSelectionDeleteStart',\r\n source: wrapperEventSource,\r\n });\r\n eventSvc.dispatchEvent({\r\n type: 'rangeDeleteStart',\r\n source: wrapperEventSource,\r\n });\r\n }\r\n\r\n if (!cellRanges) {\r\n cellRanges = this.cellRanges;\r\n }\r\n\r\n for (const cellRange of cellRanges) {\r\n this.forEachRowInRange(cellRange, (rowPosition) => {\r\n const rowNode = _getRowNode(beans, rowPosition);\r\n if (!rowNode) {\r\n return;\r\n }\r\n for (let i = 0; i < cellRange.columns.length; i++) {\r\n const column = this.getColumnFromModel(cellRange.columns[i]);\r\n if (!column?.isCellEditable(rowNode)) {\r\n continue;\r\n }\r\n const emptyValue = valueSvc.getDeleteValue(column, rowNode);\r\n rowNode.setDataValue(column, emptyValue, cellEventSource);\r\n }\r\n });\r\n }\r\n\r\n if (dispatchWrapperEvents) {\r\n eventSvc.dispatchEvent({\r\n type: 'cellSelectionDeleteEnd',\r\n source: wrapperEventSource,\r\n });\r\n eventSvc.dispatchEvent({\r\n type: 'rangeDeleteEnd',\r\n source: wrapperEventSource,\r\n });\r\n }\r\n }\r\n\r\n createCellRangeFromCellRangeParams(params) {\r\n return this.createPartialCellRangeFromRangeParams(params, false);\r\n }\r\n\r\n // Range service can't normally support a range without columns, but charts can\r\n createPartialCellRangeFromRangeParams(\r\n params,\r\n allowEmptyColumns\r\n ) {\r\n const {\r\n columns: paramColumns,\r\n columnStart,\r\n columnEnd,\r\n rowStartIndex,\r\n rowStartPinned,\r\n rowEndIndex,\r\n rowEndPinned,\r\n } = params;\r\n const columnInfo = this.getColumnsFromParams(\r\n paramColumns,\r\n columnStart,\r\n columnEnd\r\n );\r\n\r\n if (!columnInfo || (!allowEmptyColumns && columnInfo.columns.length === 0)) {\r\n return;\r\n }\r\n\r\n const {columns, startsOnTheRight} = columnInfo;\r\n\r\n const startRow = this.createRowPosition(rowStartIndex, rowStartPinned);\r\n const endRow = this.createRowPosition(rowEndIndex, rowEndPinned);\r\n\r\n return {\r\n startRow,\r\n endRow,\r\n columns,\r\n startColumn:\r\n this.getColumnFromModel(columnStart) ?? (startsOnTheRight ? _last(columns) : columns[0]),\r\n };\r\n }\r\n\r\n addCellRange(params) {\r\n const gos = this.gos;\r\n if (!this.verifyCellRanges(gos)) {\r\n return;\r\n }\r\n\r\n // when creating a new range via API we should reset the selection mode\r\n this.setSelectionMode(false);\r\n const newRange = this.createCellRangeFromCellRangeParams(params);\r\n\r\n if (newRange) {\r\n if (newRange.startRow) {\r\n this.setNewestRangeStartCell({\r\n rowIndex: newRange.startRow.rowIndex,\r\n rowPinned: newRange.startRow.rowPinned,\r\n column: newRange.startColumn,\r\n });\r\n }\r\n\r\n this.cellRanges.push(newRange);\r\n this.dispatchChangedEvent(false, true, newRange.id);\r\n }\r\n }\r\n\r\n getCellRanges() {\r\n return this.cellRanges;\r\n }\r\n\r\n isEmpty() {\r\n return this.cellRanges.length === 0;\r\n }\r\n\r\n isMoreThanOneCell() {\r\n const len = this.cellRanges.length;\r\n\r\n if (len === 0) {\r\n return false;\r\n }\r\n if (len > 1) {\r\n return true; // Assumes a cell range must contain at least one cell\r\n }\r\n\r\n // only one range, return true if range has more than one\r\n const range = this.cellRanges[0];\r\n const startRow = this.getRangeStartRow(range);\r\n const endRow = this.getRangeEndRow(range);\r\n\r\n return (\r\n startRow.rowPinned !== endRow.rowPinned ||\r\n startRow.rowIndex !== endRow.rowIndex ||\r\n range.columns.length !== 1\r\n );\r\n }\r\n\r\n areAllRangesAbleToMerge() {\r\n const rowToColumnMap = new Map();\r\n const len = this.cellRanges.length;\r\n\r\n if (len <= 1) {\r\n return true;\r\n }\r\n\r\n for (const range of this.cellRanges) {\r\n this.forEachRowInRange(range, (row) => {\r\n const rowName = `${row.rowPinned || 'normal'}_${row.rowIndex}`;\r\n const columns = rowToColumnMap.get(rowName);\r\n const currentRangeColIds = range.columns.map((col) => col.getId());\r\n if (columns) {\r\n const filteredColumns = currentRangeColIds.filter((col) => columns.indexOf(col) === -1);\r\n columns.push(...filteredColumns);\r\n } else {\r\n rowToColumnMap.set(rowName, currentRangeColIds);\r\n }\r\n });\r\n }\r\n\r\n let columnsString;\r\n\r\n for (const val of rowToColumnMap.values()) {\r\n const currentValString = val.sort().join();\r\n if (columnsString === undefined) {\r\n columnsString = currentValString;\r\n continue;\r\n }\r\n if (columnsString !== currentValString) {\r\n return false;\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n\r\n removeAllCellRanges(silent) {\r\n if (this.isEmpty()) {\r\n return;\r\n }\r\n\r\n this.onDragStop();\r\n this.cellRanges.length = 0;\r\n\r\n if (!silent) {\r\n this.dispatchChangedEvent(false, true);\r\n }\r\n }\r\n\r\n isCellInAnyRange(cell) {\r\n return this.getCellRangeCount(cell) > 0;\r\n }\r\n\r\n isCellInSpecificRange(cell, range) {\r\n const columnInRange = range.columns?.includes(cell.column);\r\n const rowInRange = this.isRowInRange(cell.rowIndex, cell.rowPinned, range);\r\n\r\n return columnInRange && rowInRange;\r\n }\r\n\r\n isBottomRightCell(cellRange, cell) {\r\n const allColumns = this.visibleCols.allCols;\r\n const allPositions = cellRange.columns.map((c) => allColumns.indexOf(c)).sort((a, b) => a - b);\r\n const {startRow, endRow} = cellRange;\r\n const lastRow = _isRowBefore(startRow, endRow) ? endRow : startRow;\r\n\r\n const isRightColumn = allColumns.indexOf(cell.column) === _last(allPositions);\r\n const isLastRow =\r\n cell.rowIndex === lastRow.rowIndex && _makeNull(cell.rowPinned) === _makeNull(lastRow.rowPinned);\r\n\r\n return isRightColumn && isLastRow;\r\n }\r\n\r\n // returns the number of ranges this cell is in\r\n getCellRangeCount(cell) {\r\n if (this.isEmpty()) {\r\n return 0;\r\n }\r\n\r\n return this.cellRanges.filter((cellRange) => this.isCellInSpecificRange(cell, cellRange)).length;\r\n }\r\n\r\n isRowInRange(rowIndex, rowPinned, cellRange) {\r\n const firstRow = this.getRangeStartRow(cellRange);\r\n const lastRow = this.getRangeEndRow(cellRange);\r\n const thisRow = {rowIndex, rowPinned: rowPinned || null};\r\n\r\n // compare rowPinned with == instead of === because it can be `null` or `undefined`\r\n const equalsFirstRow = thisRow.rowIndex === firstRow.rowIndex && thisRow.rowPinned == firstRow.rowPinned;\r\n const equalsLastRow = thisRow.rowIndex === lastRow.rowIndex && thisRow.rowPinned == lastRow.rowPinned;\r\n\r\n if (equalsFirstRow || equalsLastRow) {\r\n return true;\r\n }\r\n\r\n const afterFirstRow = !_isRowBefore(thisRow, firstRow);\r\n const beforeLastRow = _isRowBefore(thisRow, lastRow);\r\n\r\n return afterFirstRow && beforeLastRow;\r\n }\r\n\r\n intersectLastRange(fromMouseClick) {\r\n // when ranges are created due to a mouse click without drag (happens in cellMouseListener)\r\n // this method will be called with `fromMouseClick=true`.\r\n if (fromMouseClick && this.dragging) {\r\n return;\r\n }\r\n if (_getSuppressMultiRanges(this.gos)) {\r\n return;\r\n }\r\n if (this.isEmpty()) {\r\n return;\r\n }\r\n const lastRange = _last(this.cellRanges);\r\n const intersectionStartRow = this.getRangeStartRow(lastRange);\r\n const intersectionEndRow = this.getRangeEndRow(lastRange);\r\n\r\n const newRanges = [];\r\n\r\n for (const range of this.cellRanges.slice(0, -1)) {\r\n const startRow = this.getRangeStartRow(range);\r\n const endRow = this.getRangeEndRow(range);\r\n const cols = range.columns;\r\n const intersectCols = cols.filter((col) => lastRange.columns.indexOf(col) === -1);\r\n if (intersectCols.length === cols.length) {\r\n // No overlapping columns, retain previous range\r\n newRanges.push(range);\r\n continue;\r\n }\r\n if (_isRowBefore(intersectionEndRow, startRow) || _isRowBefore(endRow, intersectionStartRow)) {\r\n // No overlapping rows, retain previous range\r\n newRanges.push(range);\r\n continue;\r\n }\r\n const rangeCountBefore = newRanges.length;\r\n // Top\r\n if (_isRowBefore(startRow, intersectionStartRow)) {\r\n const top = {\r\n columns: [...cols],\r\n startColumn: lastRange.startColumn,\r\n startRow: {...startRow},\r\n endRow: _getRowAbove(this.beans, intersectionStartRow),\r\n };\r\n newRanges.push(top);\r\n }\r\n // Left & Right (not contiguous with columns)\r\n if (intersectCols.length > 0) {\r\n const middle = {\r\n columns: intersectCols,\r\n startColumn: intersectCols.includes(lastRange.startColumn)\r\n ? lastRange.startColumn\r\n : intersectCols[0],\r\n startRow: this.rowMax([{...intersectionStartRow}, {...startRow}]),\r\n endRow: this.rowMin([{...intersectionEndRow}, {...endRow}]),\r\n };\r\n newRanges.push(middle);\r\n }\r\n // Bottom\r\n if (_isRowBefore(intersectionEndRow, endRow)) {\r\n newRanges.push({\r\n columns: [...cols],\r\n startColumn: lastRange.startColumn,\r\n startRow: _getRowBelow(this.beans, intersectionEndRow),\r\n endRow: {...endRow},\r\n });\r\n }\r\n if (newRanges.length - rangeCountBefore === 1) {\r\n // Only one range result from the intersection.\r\n // Copy the source range's id, since essentially we just reduced it's size\r\n newRanges[newRanges.length - 1].id = range.id;\r\n }\r\n }\r\n this.cellRanges = newRanges;\r\n\r\n // when this is called because of a clickEvent and the ranges were changed\r\n // we need to force a dragEnd event to update the UI.\r\n if (fromMouseClick) {\r\n this.dispatchChangedEvent(false, true);\r\n }\r\n }\r\n\r\n createRangeHighlightFeature(compBean, column, headerComp) {\r\n }\r\n\r\n setSelectionMode(allColumns) {\r\n this.selectionMode = SelectionMode.ALL_COLUMNS;\r\n }\r\n\r\n refreshRangeStart(cellRange) {\r\n const {startColumn, columns} = cellRange;\r\n\r\n const moveColInCellRange = (colToMove, moveToFront) => {\r\n const otherCols = cellRange.columns.filter((col) => col !== colToMove);\r\n\r\n if (colToMove) {\r\n cellRange.startColumn = colToMove;\r\n cellRange.columns = moveToFront ? [colToMove, ...otherCols] : [...otherCols, colToMove];\r\n } else {\r\n cellRange.columns = otherCols;\r\n }\r\n };\r\n\r\n const {left, right} = this.getRangeEdgeColumns(cellRange);\r\n const shouldMoveLeftCol = startColumn === columns[0] && startColumn !== left;\r\n\r\n if (shouldMoveLeftCol) {\r\n moveColInCellRange(left, true);\r\n return;\r\n }\r\n\r\n const shouldMoveRightCol = startColumn === _last(columns) && startColumn === right;\r\n\r\n if (shouldMoveRightCol) {\r\n moveColInCellRange(right, false);\r\n }\r\n }\r\n\r\n setNewestRangeStartCell(position) {\r\n this.newestRangeStartCell = position;\r\n }\r\n\r\n getColumnsFromParams(\r\n columns,\r\n columnA,\r\n columnB\r\n ) {\r\n const noColsInfo = !columns && !columnA && !columnB;\r\n let processedColumns;\r\n let startsOnTheRight = false;\r\n\r\n if (noColsInfo || columns) {\r\n processedColumns = this.getColumnsFromModel(noColsInfo ? undefined : columns);\r\n } else if (columnA && columnB) {\r\n processedColumns = this.calculateColumnsBetween(columnA, columnB);\r\n\r\n if (processedColumns?.length) {\r\n startsOnTheRight = processedColumns[0] !== this.getColumnFromModel(columnA);\r\n }\r\n }\r\n\r\n return processedColumns\r\n ? {\r\n columns: processedColumns,\r\n startsOnTheRight,\r\n }\r\n : undefined;\r\n }\r\n\r\n createRowPosition(rowIndex, rowPinned) {\r\n return rowIndex != null ? {rowIndex, rowPinned} : undefined;\r\n }\r\n\r\n verifyCellRanges(gos) {\r\n const invalid = _isUsingNewCellSelectionAPI(gos) && _getSuppressMultiRanges(gos) && this.cellRanges.length > 1;\r\n if (invalid) {\r\n _warn(93);\r\n }\r\n\r\n return !invalid;\r\n }\r\n\r\n forEachRowInRange(cellRange, callback) {\r\n const topRow = this.getRangeStartRow(cellRange);\r\n const bottomRow = this.getRangeEndRow(cellRange);\r\n let currentRow = topRow;\r\n\r\n while (currentRow) {\r\n callback(currentRow);\r\n\r\n if (_isSameRow(currentRow, bottomRow)) {\r\n break;\r\n }\r\n currentRow = _getRowBelow(this.beans, currentRow);\r\n }\r\n }\r\n\r\n // as the user is dragging outside of the panel, the div starts to scroll, which in turn\r\n // means we are selection more (or less) cells, but the mouse isn't moving, so we recalculate\r\n // the selection my mimicking a new mouse event\r\n onBodyScroll() {\r\n if (this.dragging && this.lastMouseEvent) {\r\n this.onDragging(this.lastMouseEvent);\r\n }\r\n }\r\n\r\n isLastCellOfRange(cellRange, cell) {\r\n const {startRow, endRow} = cellRange;\r\n const lastRow = _isRowBefore(startRow, endRow) ? endRow : startRow;\r\n const isLastRow = cell.rowIndex === lastRow.rowIndex && cell.rowPinned === lastRow.rowPinned;\r\n const rangeFirstIndexColumn = cellRange.columns[0];\r\n const rangeLastIndexColumn = _last(cellRange.columns);\r\n const lastRangeColumn =\r\n cellRange.startColumn === rangeFirstIndexColumn ? rangeLastIndexColumn : rangeFirstIndexColumn;\r\n const isLastColumn = cell.column === lastRangeColumn;\r\n\r\n return isLastColumn && isLastRow;\r\n }\r\n\r\n rowMax(rows) {\r\n let max;\r\n for (const row of rows) {\r\n if (max === undefined || _isRowBefore(max, row)) {\r\n max = row;\r\n }\r\n }\r\n return max;\r\n }\r\n\r\n rowMin(rows) {\r\n let min;\r\n for (const row of rows) {\r\n if (min === undefined || _isRowBefore(row, min)) {\r\n min = row;\r\n }\r\n }\r\n return min;\r\n }\r\n\r\n updateValuesOnMove(eventTarget) {\r\n const cellCtrl = _getCellCtrlForEventTarget(this.gos, eventTarget);\r\n const cell = cellCtrl?.cellPosition;\r\n\r\n this.cellHasChanged = false;\r\n\r\n if (!cell || (this.lastCellHovered && _areCellsEqual(cell, this.lastCellHovered))) {\r\n return;\r\n }\r\n\r\n const editing = this.beans.editSvc?.isEditing(cellCtrl, {\r\n withOpenEditor: true,\r\n });\r\n\r\n if (editing) {\r\n this.dragSvc.cancelDrag(eventTarget);\r\n return;\r\n }\r\n\r\n if (this.lastCellHovered) {\r\n this.cellHasChanged = true;\r\n }\r\n\r\n this.lastCellHovered = cell;\r\n }\r\n\r\n shouldSkipCurrentColumn(currentColumn) {\r\n return isRowNumberCol(currentColumn);\r\n }\r\n\r\n dispatchChangedEvent(started, finished, id) {\r\n this.cellRanges.map((cellRange) => {\r\n let currentRow = this.getRangeStartRow(cellRange);\r\n const lastRow = this.getRangeEndRow(cellRange);\r\n const nodesToBeSelected = [];\r\n while (true) {\r\n const finishedAllRows = _missing(currentRow) || !currentRow || this.before(lastRow, currentRow);\r\n if (finishedAllRows || !currentRow || !cellRange.columns) {\r\n break;\r\n }\r\n const rowNode = _getRowNode(this.beans, currentRow);\r\n if (!rowNode) {\r\n break;\r\n }\r\n if (!rowNode.isSelected()) {\r\n rowNode.setSelected(true);\r\n }\r\n nodesToBeSelected.push(rowNode.data);\r\n currentRow = _getRowBelow(this.beans, currentRow);\r\n }\r\n this.gridApi.getSelectedNodes().forEach((node) => {\r\n if (!nodesToBeSelected.some(nodeToBeSelected => node.data === nodeToBeSelected)) {\r\n node.setSelected(false);\r\n }\r\n });\r\n });\r\n this.eventSvc.dispatchEvent({\r\n type: 'cellSelectionChanged',\r\n started,\r\n finished,\r\n id,\r\n });\r\n this.eventSvc.dispatchEvent({\r\n type: 'rangeSelectionChanged',\r\n started,\r\n finished,\r\n id,\r\n });\r\n }\r\n\r\n getColumnFromModel(col) {\r\n return typeof col === 'string' ? this.colModel.getCol(col) : col;\r\n }\r\n\r\n getColumnsFromModel(cols) {\r\n const {gos, visibleCols} = this;\r\n const isRowHeaderActive = gos.get('rowNumbers');\r\n\r\n cols = visibleCols.allCols;\r\n\r\n const columns = [];\r\n\r\n for (const col of cols) {\r\n const column = this.getColumnFromModel(col);\r\n if (!column || (isRowHeaderActive && this.shouldSkipCurrentColumn(column))) {\r\n continue;\r\n }\r\n columns.push(column);\r\n }\r\n\r\n return columns.length ? columns : undefined;\r\n }\r\n\r\n calculateColumnsBetween(columnA, columnB) {\r\n const allColumns = this.visibleCols.allCols;\r\n\r\n const fromColumn = this.getColumnFromModel(columnA);\r\n const toColumn = this.getColumnFromModel(columnB);\r\n\r\n const isSameColumn = fromColumn === toColumn;\r\n const fromIndex = allColumns.indexOf(fromColumn);\r\n\r\n if (fromIndex < 0) {\r\n _warn(178, {colId: fromColumn.getId()});\r\n return;\r\n }\r\n\r\n const toIndex = isSameColumn ? fromIndex : allColumns.indexOf(toColumn);\r\n\r\n if (toIndex < 0) {\r\n _warn(178, {colId: toColumn.getId()});\r\n return;\r\n }\r\n\r\n if (isSameColumn) {\r\n return this.getColumnsFromModel([fromColumn]);\r\n }\r\n\r\n const firstIndex = Math.min(fromIndex, toIndex);\r\n const lastIndex = firstIndex === fromIndex ? toIndex : fromIndex;\r\n const columns = [];\r\n\r\n for (let i = firstIndex; i <= lastIndex; i++) {\r\n columns.push(allColumns[i]);\r\n }\r\n\r\n return this.getColumnsFromModel(columns);\r\n }\r\n\r\n focusCellOnNewColumn(currentRange, column) {\r\n const {focusSvc} = this.beans;\r\n const focusedCell = focusSvc.getFocusedCell();\r\n\r\n if (!focusedCell) {\r\n return;\r\n }\r\n\r\n if (this.isCellInSpecificRange(focusedCell, currentRange)) {\r\n focusSvc.setFocusedCell({\r\n ...focusedCell,\r\n column,\r\n forceBrowserFocus: true,\r\n preventScrollOnBrowserFocus: true,\r\n });\r\n }\r\n }\r\n\r\n focusCellOnNewRow(currentRange, row) {\r\n const {focusSvc} = this.beans;\r\n const focusedCell = focusSvc.getFocusedCell();\r\n\r\n if (!focusedCell) {\r\n return;\r\n }\r\n\r\n if (this.isCellInSpecificRange(focusedCell, currentRange)) {\r\n focusSvc.setFocusedCell({\r\n ...row,\r\n column: focusedCell.column,\r\n forceBrowserFocus: true,\r\n preventScrollOnBrowserFocus: true,\r\n });\r\n }\r\n }\r\n\r\n // tests if this row selection is before the other row selection\r\n before(rowA, rowB) {\r\n switch (rowA.rowPinned) {\r\n case 'top':\r\n // we we are floating top, and other isn't, then we are always before\r\n if (rowB.rowPinned !== 'top') {\r\n return true;\r\n }\r\n break;\r\n case 'bottom':\r\n // if we are floating bottom, and the other isn't, then we are never before\r\n if (rowB.rowPinned !== 'bottom') {\r\n return false;\r\n }\r\n break;\r\n default:\r\n // if we are not floating, but the other one is floating...\r\n if (_exists(rowB.rowPinned)) {\r\n return rowB.rowPinned !== 'top';\r\n }\r\n break;\r\n }\r\n return rowA.rowIndex < rowB.rowIndex;\r\n }\r\n\r\n createDragListenerFeature(eContainer) {\r\n return new DragListenerFeature(eContainer);\r\n }\r\n\r\n createCellRangeFeature(beans, ctrl) {\r\n // return new CellRangeFeature(beans, ctrl);\r\n }\r\n}"]}
|
|
@@ -77,7 +77,7 @@ export interface DataGridProps extends Omit<GridOptions, "columnDefs" | "paginat
|
|
|
77
77
|
rowDataManualMode?: boolean;
|
|
78
78
|
onLoadData(callback: OnLoadDataCallback): void;
|
|
79
79
|
autofocus?: boolean;
|
|
80
|
-
onKeyPressed?(event: KeyboardEvent): void;
|
|
80
|
+
onKeyPressed?(event: KeyboardEvent, editing: boolean): void;
|
|
81
81
|
onEnter?: () => void;
|
|
82
82
|
selectedIds?: (number | string)[];
|
|
83
83
|
rowStyleRules: RowStyleRule[];
|
|
@@ -130,7 +130,6 @@ interface DataGridState {
|
|
|
130
130
|
rowHeight: number;
|
|
131
131
|
viewport: [number, number];
|
|
132
132
|
contextMenuVisible: boolean;
|
|
133
|
-
firstLoadDone: boolean;
|
|
134
133
|
loading: boolean;
|
|
135
134
|
columnTransferHeight: number;
|
|
136
135
|
pageOrientation: PageOrientation;
|
|
@@ -144,6 +143,7 @@ export default class DataGrid extends React.Component<DataGridProps, DataGridSta
|
|
|
144
143
|
};
|
|
145
144
|
rowStyleRules: RowStyleRule[];
|
|
146
145
|
};
|
|
146
|
+
firstLoadDone: boolean;
|
|
147
147
|
wildcardQuickFilter: WildcardQuickFilterEngine;
|
|
148
148
|
columnTypes: {
|
|
149
149
|
[key: string]: ColDef;
|
|
@@ -29,9 +29,9 @@ import NoRecordsOverlay from "d2coreui/components/grid/panel/noRecordsOverlay";
|
|
|
29
29
|
import at from "lodash/at";
|
|
30
30
|
import ColumnTransfer from "d2coreui/components/grid/config/columnTransfer";
|
|
31
31
|
import cloneDeep from "lodash/cloneDeep";
|
|
32
|
-
import escape from "lodash/escape";
|
|
33
32
|
import { RangeSelector } from "d2coreui/components/grid/cell/rangeSelector";
|
|
34
|
-
import {
|
|
33
|
+
import { CellControl } from "d2coreui/components/grid/cell/cellControl";
|
|
34
|
+
import { AllCommunityModule, ModuleRegistry, provideGlobalGridOptions } from "ag-grid-community";
|
|
35
35
|
import { LocaleHolder } from "d2core/i18n/localeHolder";
|
|
36
36
|
import tableDefaultRowStyleRules from "d2coreui/components/grid/cell/tableDefaultRowStyleRules";
|
|
37
37
|
import { ModalDialog } from "d2coreui/components/modal/modalDialog";
|
|
@@ -75,22 +75,19 @@ const gridFrameworkComponents = {
|
|
|
75
75
|
loadingOverlay: LoadingOverlay,
|
|
76
76
|
noRecordsOverlay: NoRecordsOverlay
|
|
77
77
|
};
|
|
78
|
-
const DataGridModule =
|
|
79
|
-
version: "
|
|
78
|
+
const DataGridModule = {
|
|
79
|
+
version: "34.3.1",
|
|
80
80
|
moduleName: `dataGridModule`,
|
|
81
|
-
beans: [RangeSelector, BeanAccessor],
|
|
81
|
+
beans: [RangeSelector, CellControl, BeanAccessor],
|
|
82
82
|
dependantModules: [],
|
|
83
|
-
});
|
|
84
|
-
ModuleRegistry.__register(DataGridModule, false, undefined);
|
|
85
|
-
CellCtrl.prototype.onPopupEditorClosed = function () {
|
|
86
|
-
if (!this.isEditing()) {
|
|
87
|
-
return;
|
|
88
|
-
}
|
|
89
|
-
this.stopEditingAndFocus(true);
|
|
90
83
|
};
|
|
84
|
+
ModuleRegistry.registerModules([AllCommunityModule, DataGridModule]);
|
|
91
85
|
function getRowId(item) {
|
|
92
86
|
return item.data.id + "";
|
|
93
87
|
}
|
|
88
|
+
provideGlobalGridOptions({
|
|
89
|
+
theme: "legacy"
|
|
90
|
+
});
|
|
94
91
|
const rowStyleRuleCompiledExpressions = {};
|
|
95
92
|
export const EXPORT_SEPARATOR = "\n";
|
|
96
93
|
var NavigationEventEnum;
|
|
@@ -101,6 +98,7 @@ var NavigationEventEnum;
|
|
|
101
98
|
class DataGrid extends React.Component {
|
|
102
99
|
constructor(props) {
|
|
103
100
|
super(props);
|
|
101
|
+
this.firstLoadDone = false;
|
|
104
102
|
this.lastPaginationEvent = null;
|
|
105
103
|
this.wrappingDiv = null;
|
|
106
104
|
this.state = {
|
|
@@ -115,7 +113,6 @@ class DataGrid extends React.Component {
|
|
|
115
113
|
rowHeight: calculateRowHeight(GRID_DEFAULT_FONT_SIZE, GRID_DEFAULT_ROW_HEIGHT_DELTA),
|
|
116
114
|
viewport: [0, 0],
|
|
117
115
|
contextMenuVisible: false,
|
|
118
|
-
firstLoadDone: false,
|
|
119
116
|
loading: false,
|
|
120
117
|
columnTransferHeight: 500,
|
|
121
118
|
pageOrientation: "PORTRAIT",
|
|
@@ -356,7 +353,9 @@ class DataGrid extends React.Component {
|
|
|
356
353
|
cellRenderer: (params) => {
|
|
357
354
|
const value = DataGrid.getCellValue(params);
|
|
358
355
|
if (value !== undefined) {
|
|
359
|
-
return React.createElement("span", { style: { whiteSpace: "pre" }, title:
|
|
356
|
+
return React.createElement("span", { style: { whiteSpace: "pre" }, title: value },
|
|
357
|
+
" ",
|
|
358
|
+
typeof value === "string" ? value.replace(/[\r\n]+/g, ' ') : value);
|
|
360
359
|
}
|
|
361
360
|
else {
|
|
362
361
|
return "";
|
|
@@ -603,9 +602,9 @@ class DataGrid extends React.Component {
|
|
|
603
602
|
if (this.props.paging.onPaginationChanged) {
|
|
604
603
|
this.props.paging.onPaginationChanged(currentPageSize, this.props.paging.pageSize);
|
|
605
604
|
}
|
|
606
|
-
if (!this.
|
|
605
|
+
if (!this.firstLoadDone) {
|
|
607
606
|
this.loadData();
|
|
608
|
-
this.
|
|
607
|
+
this.firstLoadDone = true;
|
|
609
608
|
}
|
|
610
609
|
}
|
|
611
610
|
this.setState({ pageSize: currentPageSize, recordsCount: recordsCount, pageIndex: currentPage });
|
|
@@ -650,7 +649,7 @@ class DataGrid extends React.Component {
|
|
|
650
649
|
else if (pageSize === 0) {
|
|
651
650
|
this.gridApi.updateGridOptions({ pagination: true, paginationAutoPageSize: true });
|
|
652
651
|
const rowHeight = (_c = (_b = (_a = gridApiWithPrivateAccess.beans.gos).getRowHeightAsNumber) === null || _b === void 0 ? void 0 : _b.call(_a)) !== null && _c !== void 0 ? _c : 1;
|
|
653
|
-
const bodyHeight = gridApiWithPrivateAccess.beans.
|
|
652
|
+
const bodyHeight = gridApiWithPrivateAccess.beans.ctrlsSvc.params.center.viewportSizeFeature.getBodyHeight();
|
|
654
653
|
let availablePageSize = 1000;
|
|
655
654
|
if (bodyHeight > 0) {
|
|
656
655
|
availablePageSize = Math.floor(bodyHeight / rowHeight);
|
|
@@ -710,7 +709,7 @@ class DataGrid extends React.Component {
|
|
|
710
709
|
this.gridApi.refreshHeader();
|
|
711
710
|
this.gridApi.redrawRows();
|
|
712
711
|
if (this.props.rowModelType === "infinite" && this.props.datasource) {
|
|
713
|
-
this.gridApi.
|
|
712
|
+
this.gridApi.setGridOption('rowHeight', rowHeight);
|
|
714
713
|
this.gridApi.updateGridOptions({ datasource: this.props.datasource });
|
|
715
714
|
}
|
|
716
715
|
}
|
|
@@ -846,7 +845,7 @@ class DataGrid extends React.Component {
|
|
|
846
845
|
var previousCell = params.previousCellPosition;
|
|
847
846
|
switch ((_a = params.event) === null || _a === void 0 ? void 0 : _a.code) {
|
|
848
847
|
case Key.ArrowDown:
|
|
849
|
-
if ((previousCell.rowIndex + 1) >= this.gridApi.
|
|
848
|
+
if ((previousCell.rowIndex + 1) >= this.gridApi.getDisplayedRowCount()) {
|
|
850
849
|
if (pageIndex < (totalPages - 1)) {
|
|
851
850
|
this.onGoToPage(pageIndex + 1);
|
|
852
851
|
return {
|
|
@@ -869,7 +868,7 @@ class DataGrid extends React.Component {
|
|
|
869
868
|
if (pageIndex > 0) {
|
|
870
869
|
this.onGoToPage(pageIndex - 1);
|
|
871
870
|
return {
|
|
872
|
-
rowIndex: this.gridApi.
|
|
871
|
+
rowIndex: this.gridApi.getDisplayedRowCount() - 1,
|
|
873
872
|
column: previousCell.column,
|
|
874
873
|
rowPinned: previousCell.rowPinned
|
|
875
874
|
};
|
|
@@ -906,7 +905,7 @@ class DataGrid extends React.Component {
|
|
|
906
905
|
if (params.event.code === Key.ArrowDown) {
|
|
907
906
|
indexToJump = focusedCell.rowIndex + 1;
|
|
908
907
|
columnToJump = focusedCell.column;
|
|
909
|
-
if (indexToJump >= this.gridApi.
|
|
908
|
+
if (indexToJump >= this.gridApi.getDisplayedRowCount()) {
|
|
910
909
|
if (pageIndex < (totalPages - 1)) {
|
|
911
910
|
this.onGoToPage(pageIndex + 1);
|
|
912
911
|
indexToJump = 0;
|
|
@@ -934,7 +933,7 @@ class DataGrid extends React.Component {
|
|
|
934
933
|
if (indexToJump < 0) {
|
|
935
934
|
if (pageIndex > 0) {
|
|
936
935
|
this.onGoToPage(pageIndex - 1);
|
|
937
|
-
indexToJump = this.gridApi.
|
|
936
|
+
indexToJump = this.gridApi.getDisplayedRowCount() - 1;
|
|
938
937
|
}
|
|
939
938
|
else {
|
|
940
939
|
indexToJump = focusedCell.rowIndex;
|
|
@@ -1107,7 +1106,7 @@ class DataGrid extends React.Component {
|
|
|
1107
1106
|
(_j = (_h = this.props).onEnter) === null || _j === void 0 ? void 0 : _j.call(_h);
|
|
1108
1107
|
break;
|
|
1109
1108
|
}
|
|
1110
|
-
(_l = (_k = this.props).onKeyPressed) === null || _l === void 0 ? void 0 : _l.call(_k, params.event);
|
|
1109
|
+
(_l = (_k = this.props).onKeyPressed) === null || _l === void 0 ? void 0 : _l.call(_k, params.event, params.editing);
|
|
1111
1110
|
return false;
|
|
1112
1111
|
}
|
|
1113
1112
|
getValue(column, row, doNotReplaceNewline) {
|
|
@@ -1140,7 +1139,6 @@ class DataGrid extends React.Component {
|
|
|
1140
1139
|
if (!this.gridApi) {
|
|
1141
1140
|
return [];
|
|
1142
1141
|
}
|
|
1143
|
-
const model = this.gridApi.getModel();
|
|
1144
1142
|
const tableContent = [];
|
|
1145
1143
|
const columns = this.gridApi.getAllDisplayedColumns().map((column) => {
|
|
1146
1144
|
const columnTypes = column.getColDef().type;
|
|
@@ -1157,7 +1155,7 @@ class DataGrid extends React.Component {
|
|
|
1157
1155
|
tableContent.push(columns.map((column) => { var _a; return (_a = column.displayName) !== null && _a !== void 0 ? _a : ""; }));
|
|
1158
1156
|
let rowCount;
|
|
1159
1157
|
let tableNodes = [];
|
|
1160
|
-
if (
|
|
1158
|
+
if (this.gridApi.getGridOption('rowModelType') === "clientSide") {
|
|
1161
1159
|
if (props.onlySelectedNodes) {
|
|
1162
1160
|
rowCount = 0;
|
|
1163
1161
|
this.gridApi.forEachNodeAfterFilterAndSort((node) => {
|
|
@@ -1168,7 +1166,7 @@ class DataGrid extends React.Component {
|
|
|
1168
1166
|
});
|
|
1169
1167
|
}
|
|
1170
1168
|
else {
|
|
1171
|
-
rowCount =
|
|
1169
|
+
rowCount = this.gridApi.getDisplayedRowCount();
|
|
1172
1170
|
this.gridApi.forEachNodeAfterFilterAndSort((node) => {
|
|
1173
1171
|
tableNodes.push(node);
|
|
1174
1172
|
});
|
|
@@ -1184,7 +1182,7 @@ class DataGrid extends React.Component {
|
|
|
1184
1182
|
tableNodes.sort((a, b) => { var _a, _b; return ((_a = a.rowIndex) !== null && _a !== void 0 ? _a : 0) > ((_b = b.rowIndex) !== null && _b !== void 0 ? _b : 0) ? 1 : (a.rowIndex === b.rowIndex) ? 0 : -1; });
|
|
1185
1183
|
}
|
|
1186
1184
|
else {
|
|
1187
|
-
const virtualRowCount =
|
|
1185
|
+
const virtualRowCount = this.gridApi.getDisplayedRowCount();
|
|
1188
1186
|
rowCount = virtualRowCount ? virtualRowCount : 0;
|
|
1189
1187
|
}
|
|
1190
1188
|
}
|
|
@@ -1193,7 +1191,7 @@ class DataGrid extends React.Component {
|
|
|
1193
1191
|
if (percentStep < 100) {
|
|
1194
1192
|
percentStep = 100;
|
|
1195
1193
|
}
|
|
1196
|
-
if (
|
|
1194
|
+
if (this.gridApi.getGridOption('rowModelType') === "clientSide" || props.onlySelectedNodes) {
|
|
1197
1195
|
for (let index = 0; index < tableNodes.length; index++) {
|
|
1198
1196
|
const record = [];
|
|
1199
1197
|
columns.forEach((column) => {
|
|
@@ -1214,7 +1212,7 @@ class DataGrid extends React.Component {
|
|
|
1214
1212
|
do {
|
|
1215
1213
|
record = [];
|
|
1216
1214
|
do {
|
|
1217
|
-
row =
|
|
1215
|
+
row = this.gridApi.getDisplayedRowAtIndex(index);
|
|
1218
1216
|
if (!row || !row.data) {
|
|
1219
1217
|
await TimeUtils.sleep(100);
|
|
1220
1218
|
}
|
|
@@ -1572,8 +1570,8 @@ class DataGrid extends React.Component {
|
|
|
1572
1570
|
return adaptedColumnDefs;
|
|
1573
1571
|
}
|
|
1574
1572
|
render() {
|
|
1575
|
-
var _a, _b, _c, _d
|
|
1576
|
-
const
|
|
1573
|
+
var _a, _b, _c, _d;
|
|
1574
|
+
const _e = this.props, { onGridReady, columnDefs, disableColumnDefsPreprocessing, onColumnsChanged, paging, onPaginationChanged, onViewportChanged, selectedIds, search, toolbar, filter, onFilterChanged, onFilterModified, onCellFocused, onSortChanged, components, tableConfigVisible, onTableConfigVisible, noRecordsOverlayRenderer, loadingOverlayRenderer, onRowDataUpdated, rowStyleRules, onChangeRowStyleRules, defaultShowMilliseconds, onShowMilliseconds, defaultHideYear, onShowYear, suppressLoadingOverlay, defaultColDef, headerHeight, rowData, rowDataManualMode, gridRef, quickFilterParser, quickFilterMatcher, rowSelection, contextMenu, settingsMenu, exportMenu, panelStyle, tablePanelStyle, onColumnDefsAdapted, tableOverlayRenderer, onKeyPressed } = _e, passedProperties = __rest(_e, ["onGridReady", "columnDefs", "disableColumnDefsPreprocessing", "onColumnsChanged", "paging", "onPaginationChanged", "onViewportChanged", "selectedIds", "search", "toolbar", "filter", "onFilterChanged", "onFilterModified", "onCellFocused", "onSortChanged", "components", "tableConfigVisible", "onTableConfigVisible", "noRecordsOverlayRenderer", "loadingOverlayRenderer", "onRowDataUpdated", "rowStyleRules", "onChangeRowStyleRules", "defaultShowMilliseconds", "onShowMilliseconds", "defaultHideYear", "onShowYear", "suppressLoadingOverlay", "defaultColDef", "headerHeight", "rowData", "rowDataManualMode", "gridRef", "quickFilterParser", "quickFilterMatcher", "rowSelection", "contextMenu", "settingsMenu", "exportMenu", "panelStyle", "tablePanelStyle", "onColumnDefsAdapted", "tableOverlayRenderer", "onKeyPressed"]);
|
|
1577
1575
|
let key;
|
|
1578
1576
|
let paginationPageSize = undefined;
|
|
1579
1577
|
if (paging.pageSize > 0) {
|
|
@@ -1594,25 +1592,25 @@ class DataGrid extends React.Component {
|
|
|
1594
1592
|
const adaptedColumnDefs = this.getAdaptedColumnDefs(columnDefs, floatingFilterEnabled, !!disableColumnDefsPreprocessing);
|
|
1595
1593
|
const customComponents = this.getCustomComponents(components);
|
|
1596
1594
|
const debugMode = process.env.NODE_ENV === 'development';
|
|
1597
|
-
const
|
|
1595
|
+
const bodyStyle = {
|
|
1598
1596
|
display: "flex",
|
|
1599
1597
|
flexFlow: "column",
|
|
1600
1598
|
height: "100%",
|
|
1601
1599
|
width: "100%",
|
|
1602
1600
|
paddingBottom: 8,
|
|
1603
1601
|
};
|
|
1604
|
-
if (
|
|
1605
|
-
Object.assign(
|
|
1602
|
+
if (panelStyle) {
|
|
1603
|
+
Object.assign(bodyStyle, panelStyle);
|
|
1606
1604
|
}
|
|
1607
|
-
const
|
|
1608
|
-
if (
|
|
1609
|
-
Object.assign(
|
|
1605
|
+
const tPanelStyle = { flex: "1 1 auto", marginTop: 16, overflow: "auto" };
|
|
1606
|
+
if (tablePanelStyle) {
|
|
1607
|
+
Object.assign(tPanelStyle, tablePanelStyle);
|
|
1610
1608
|
}
|
|
1611
1609
|
const headerFilterRowHeight = calculateRowHeight(this.state.fontSize, GRID_DEFAULT_ROW_HEIGHT_DELTA + 2);
|
|
1612
1610
|
return (React.createElement(React.Fragment, null,
|
|
1613
|
-
React.createElement(Card, { size: "small", bordered: false, style: { height: "100%" }, styles: { body:
|
|
1611
|
+
React.createElement(Card, { size: "small", bordered: false, style: { height: "100%" }, styles: { body: bodyStyle } },
|
|
1614
1612
|
React.createElement("div", { style: { display: "flex" } }, this.renderNavigationPanel()),
|
|
1615
|
-
React.createElement("div", { style:
|
|
1613
|
+
React.createElement("div", { style: tPanelStyle },
|
|
1616
1614
|
React.createElement(Dropdown, { trigger: ["contextMenu"], getPopupContainer: () => {
|
|
1617
1615
|
var _a, _b;
|
|
1618
1616
|
const parentNode = ((_b = (_a = ReactDOM.findDOMNode(this)) === null || _a === void 0 ? void 0 : _a.parentNode) !== null && _b !== void 0 ? _b : document.body);
|
|
@@ -1637,13 +1635,13 @@ class DataGrid extends React.Component {
|
|
|
1637
1635
|
React.createElement("div", { className: "ag-theme-balham", style: { width: "100%", height: "100%" }, ref: (wrapingDiv) => {
|
|
1638
1636
|
this.wrappingDiv = wrapingDiv;
|
|
1639
1637
|
} },
|
|
1640
|
-
React.createElement(AgGridReact, Object.assign({ key: key, debug: debugMode, ref: gridRef, paginationPageSize: paginationPageSize, maxConcurrentDatasourceRequests: this.props.rowModelType === "infinite" ? 1 : undefined, onGridReady: this.onGridReady, onPaginationChanged: this.onPaginationChanged, onFilterModified: this.onFilterModified, onFilterChanged: this.onFilterChanged, onSortChanged: this.onSortChanged, defaultColDef: this.getDefaultColDefinition(defaultColDef), columnDefs: adaptedColumnDefs, rowData: !rowDataManualMode ? rowData : undefined }, passedProperties, { onCellFocused: this.onCellFocused, suppressPaginationPanel: true, getRowId: getRowId, maintainColumnOrder: true, components: customComponents, columnTypes: this.columnTypes, onColumnVisible: this.onColumnsChanged, onColumnPinned: this.onColumnsChanged, onColumnResized: this.onColumnsChanged, onColumnMoved: this.onColumnsChanged, onCellMouseDown: this.onCellMouseDown, navigateToNextCell: this.navigateToNextCell, onViewportChanged: this.onViewportChanged, onCellContextMenu: this.onCellContextMenu, loadingOverlayComponent: 'loadingOverlay', noRowsOverlayComponent: 'noRecordsOverlay', onRowDataUpdated: this.onRowDataUpdated, context: this.table_context, rowHeight: this.state.rowHeight, getRowStyle: this._getRowStyle, getRowHeight: this._getRowHeight, headerHeight: headerHeight !== undefined ? headerHeight : headerFilterRowHeight, floatingFiltersHeight: headerFilterRowHeight, suppressLoadingOverlay: this.props.loadingOverlayRenderer ? true : this.props.suppressLoadingOverlay, quickFilterParser: this.wildcardQuickFilter.quickFilterParser, quickFilterMatcher: this.wildcardQuickFilter.quickFilterMatcher })),
|
|
1638
|
+
React.createElement(AgGridReact, Object.assign({ key: key, debug: debugMode, ref: gridRef, paginationPageSize: paginationPageSize, maxConcurrentDatasourceRequests: this.props.rowModelType === "infinite" ? 1 : undefined, onGridReady: this.onGridReady, onPaginationChanged: this.onPaginationChanged, onFilterModified: this.onFilterModified, onFilterChanged: this.onFilterChanged, onSortChanged: this.onSortChanged, defaultColDef: this.getDefaultColDefinition(defaultColDef), columnDefs: adaptedColumnDefs, rowData: !rowDataManualMode ? rowData : undefined }, passedProperties, { onCellFocused: this.onCellFocused, cellSelection: rowSelection === "multiple" || (rowSelection === null || rowSelection === void 0 ? void 0 : rowSelection.mode) === "multiRow", rowSelection: rowSelection, suppressPaginationPanel: true, getRowId: getRowId, maintainColumnOrder: true, components: customComponents, columnTypes: this.columnTypes, onColumnVisible: this.onColumnsChanged, onColumnPinned: this.onColumnsChanged, onColumnResized: this.onColumnsChanged, onColumnMoved: this.onColumnsChanged, onCellMouseDown: this.onCellMouseDown, navigateToNextCell: this.navigateToNextCell, onViewportChanged: this.onViewportChanged, onCellContextMenu: this.onCellContextMenu, loadingOverlayComponent: 'loadingOverlay', noRowsOverlayComponent: 'noRecordsOverlay', onRowDataUpdated: this.onRowDataUpdated, context: this.table_context, rowHeight: this.state.rowHeight, getRowStyle: this._getRowStyle, getRowHeight: this._getRowHeight, headerHeight: headerHeight !== undefined ? headerHeight : headerFilterRowHeight, floatingFiltersHeight: headerFilterRowHeight, suppressLoadingOverlay: this.props.loadingOverlayRenderer ? true : this.props.suppressLoadingOverlay, quickFilterParser: this.wildcardQuickFilter.quickFilterParser, quickFilterMatcher: this.wildcardQuickFilter.quickFilterMatcher })),
|
|
1641
1639
|
this.state.loading && this.props.loadingOverlayRenderer &&
|
|
1642
1640
|
React.createElement("div", { className: "ag-overlay", "aria-hidden": "true", ref: "overlayWrapper" },
|
|
1643
1641
|
React.createElement("div", { className: "ag-overlay-panel" },
|
|
1644
1642
|
React.createElement("div", { className: "ag-overlay-wrapper ag-layout-normal ag-overlay-loading-wrapper" },
|
|
1645
|
-
React.createElement("div", { className: "ag-react-container" }, (_d = (_c = this.props).loadingOverlayRenderer) === null || _d === void 0 ? void 0 : _d.call(_c))))))),
|
|
1646
|
-
|
|
1643
|
+
React.createElement("div", { className: "ag-react-container" }, (_d = (_c = this.props).loadingOverlayRenderer) === null || _d === void 0 ? void 0 : _d.call(_c))))))), tableOverlayRenderer === null || tableOverlayRenderer === void 0 ? void 0 :
|
|
1644
|
+
tableOverlayRenderer())),
|
|
1647
1645
|
!!this.gridApi && !!this.gridApi && this.state.pageSize !== null &&
|
|
1648
1646
|
React.createElement(DataGridEditor, { dataGrid: this, gridApi: this.gridApi, columnDefinitions: columnDefs, columnModel: this.state.columnModel, visible: !!this.props.tableConfigVisible, onTableConfigVisible: this.showTableConfiguration, paginationPageSize: paging.pageSize, paginationDefaultPageSize: paging.defaultPageSize, currentPageSize: this.state.pageSize, showMilliseconds: !!this.props.showMilliseconds, defaultShowMilliseconds: !!this.props.defaultShowMilliseconds, showYear: !this.props.hideYear, defaultShowYear: !this.props.defaultHideYear, rowStyleRules: this.props.rowStyleRules, defaultRowStyleRules: this.props.defaultRowStyleRules, onChangeRowStyleRules: onChangeRowStyleRules }),
|
|
1649
1647
|
!!this.gridApi && React.createElement(ModalDialog, { mode: "OK_CANCEL", open: this.state.columnsConfigVisible, initialWidth: 700, initialHeight: this.state.columnTransferHeight, title: React.createElement("span", null,
|