d2coreui 21.0.9 → 21.0.12

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.
Files changed (44) hide show
  1. package/components/color/colorPicker.d.ts +20 -0
  2. package/components/color/colorPicker.js +54 -0
  3. package/components/color/colorPicker.js.map +1 -0
  4. package/components/color/colorUtils.d.ts +2 -0
  5. package/components/color/colorUtils.js +29 -0
  6. package/components/color/colorUtils.js.map +1 -1
  7. package/components/date/dateRangeInput.d.ts +13 -1
  8. package/components/date/dateRangeInput.js +100 -9
  9. package/components/date/dateRangeInput.js.map +1 -1
  10. package/components/date/dateRangeInputAdvancedPanel.d.ts +26 -0
  11. package/components/date/dateRangeInputAdvancedPanel.js +116 -0
  12. package/components/date/dateRangeInputAdvancedPanel.js.map +1 -0
  13. package/components/date/dateRangeInputConfirm.d.ts +11 -1
  14. package/components/date/dateRangeInputConfirm.js +67 -27
  15. package/components/date/dateRangeInputConfirm.js.map +1 -1
  16. package/components/date/dateTimeInput.d.ts +2 -0
  17. package/components/date/dateTimeInput.js +6 -5
  18. package/components/date/dateTimeInput.js.map +1 -1
  19. package/components/grid/cell/simpleStatusTextCellEditor.d.ts +1 -0
  20. package/components/grid/cell/simpleStatusTextCellEditor.js +17 -10
  21. package/components/grid/cell/simpleStatusTextCellEditor.js.map +1 -1
  22. package/components/grid/config/rowStylePicker.d.ts +1 -5
  23. package/components/grid/config/rowStylePicker.js +14 -70
  24. package/components/grid/config/rowStylePicker.js.map +1 -1
  25. package/components/grid/dataGrid.d.ts +1 -1
  26. package/components/grid/dataGrid.js +101 -122
  27. package/components/grid/dataGrid.js.map +1 -1
  28. package/components/grid/extendedDataGrid.d.ts +3 -1
  29. package/components/grid/extendedDataGrid.js +38 -7
  30. package/components/grid/extendedDataGrid.js.map +1 -1
  31. package/components/input/maskedInput.d.ts +3 -3
  32. package/components/scrollTo/scrollTo.d.ts +1 -0
  33. package/components/scrollTo/scrollTo.js +13 -0
  34. package/components/scrollTo/scrollTo.js.map +1 -1
  35. package/i18n/components.sk.json +17 -0
  36. package/package.json +4 -3
  37. package/style/flexLayout/flexLayout.scss +95 -1
  38. package/style/flexLayout/flexLayoutBase.scss +152 -151
  39. package/style/flexLayout/new/_base.scss +616 -0
  40. package/style/flexLayout/new/flexLayoutBase.scss +622 -0
  41. package/style/flexLayout/new/light.scss +107 -0
  42. package/style/flexLayout/old/_base.scss +551 -0
  43. package/style/flexLayout/old/light.scss +16 -0
  44. package/style/index.less +5 -0
@@ -1 +1 @@
1
- {"version":3,"file":"dataGrid.js","sourceRoot":"","sources":["../../../../components/grid/dataGrid.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, {ReactElement} from \"react\";\r\n\r\nimport {\r\n ColumnWidthOutlined,\r\n ControlOutlined,\r\n DownloadOutlined,\r\n FileSearchOutlined,\r\n LoadingOutlined,\r\n ReloadOutlined,\r\n SearchOutlined,\r\n SettingOutlined,\r\n TableOutlined\r\n} from \"@ant-design/icons\";\r\n\r\nimport {Button, Card, Dropdown, Empty, Input, Menu} from \"antd\";\r\nimport {AgGridReact} from \"ag-grid-react\";\r\nimport 'ag-grid-community/dist/styles/ag-grid.css';\r\nimport 'ag-grid-community/dist/styles/ag-theme-balham.css';\r\nimport 'd2coreui/style/ag-grid/aggrid-adaptations.css'\r\nimport TextColumnFilter from \"d2coreui/components/grid/filter/textColumnFilter\"\r\nimport CustomColumnFilter from \"d2coreui/components/grid/filter/customColumnFilter\"\r\nimport SimpleHeader from \"d2coreui/components/grid/header/simpleHeader\"\r\nimport DataGridEditor from \"d2coreui/components/grid/config/dataGridEditor\";\r\nimport i18n from \"d2core/i18n/i18n\";\r\nimport AutoCompleteInput from \"d2coreui/components/input/autoCompleteInput\";\r\nimport TablePagination from \"d2coreui/components/grid/panel/tablePagination\";\r\nimport isEqual from \"lodash/isEqual\"\r\nimport ContextMenu, {ContextMenuProps} from \"d2coreui/components/grid/export/contextMenu\";\r\nimport LoadingOverlay from \"d2coreui/components/grid/panel/loadingOverlay\";\r\nimport NoRecordsOverlay from \"d2coreui/components/grid/panel/noRecordsOverlay\";\r\nimport at from \"lodash/at\"\r\nimport ColumnTransfer from \"d2coreui/components/grid/config/columnTransfer\";\r\nimport cloneDeep from \"lodash/cloneDeep\"\r\nimport {RangeSelector} from \"d2coreui/components/grid/cell/rangeSelector\"\r\nimport {WildcardQuickFilter} from \"d2coreui/components/grid/cell/wildcardQuickFilter\";\r\nimport {\r\n CellClassParams,\r\n CellContextMenuEvent,\r\n CellFocusedEvent,\r\n CellMouseDownEvent,\r\n CellPosition,\r\n ColDef,\r\n ColDefUtil,\r\n Column,\r\n ColumnApi,\r\n ColumnEvent,\r\n ColumnState,\r\n FilterChangedEvent,\r\n FilterModifiedEvent,\r\n GetQuickFilterTextParams,\r\n GridApi,\r\n GridOptions,\r\n GridReadyEvent,\r\n ICellRendererParams,\r\n IRowModel,\r\n NavigateToNextCellParams,\r\n PaginationChangedEvent,\r\n RowClassParams,\r\n RowDataUpdatedEvent,\r\n RowNode,\r\n RowStyle,\r\n SortChangedEvent,\r\n SuppressKeyboardEventParams,\r\n ValueFormatterParams,\r\n ValueGetterParams,\r\n ViewportChangedEvent\r\n} from \"ag-grid-community\";\r\nimport {LocaleHolder} from \"d2core/i18n/localeHolder\";\r\nimport tableDefaultRowStyleRules, {\r\n GRID_DEFAULT_FONT_SIZE,\r\n GridRowStyle,\r\n RowStyleRule\r\n} from \"d2coreui/components/grid/cell/tableDefaultRowStyleRules\";\r\nimport {ModalDialog, ModalDialogMode} from \"d2coreui/components/modal/modalDialog\";\r\nimport debounce from \"lodash/debounce\";\r\nimport {Key} from \"ts-key-enum\";\r\nimport {ClipboardUtils} from \"d2coreui/components/clipboard/clipboardUtils\";\r\nimport ProgressPopup from \"d2coreui/components/grid/export/progressPopup\";\r\nimport TimeUtils from \"d2core/utils/timeUtils\";\r\nimport KeyboardUtils from \"d2coreui/components/keyboard/keyboardUtils\";\r\nimport NumberCellEditor from \"d2coreui/components/grid/cell/numberCellEditor\";\r\nimport TextCellEditor from \"d2coreui/components/grid/cell/textCellEditor\";\r\nimport StatusTextCellEditor from \"d2coreui/components/grid/cell/statusTextCellEditor\";\r\nimport DateCellEditor from \"d2coreui/components/grid/cell/dateCellEditor\";\r\nimport memoizeOne from \"memoize-one\";\r\nimport SimpleStatusTextCellEditor from \"d2coreui/components/grid/cell/simpleStatusTextCellEditor\";\r\nimport DurationCellEditor from \"d2coreui/components/grid/cell/durationCellEditor\";\r\nimport CustomEnumCellEditor from \"d2coreui/components/grid/cell/customEnumCellEditor\";\r\nimport HexaValueCellEditor from \"d2coreui/components/grid/cell/hexaValueCellEditor\";\r\nimport HexaOctetStringCellEditor from \"d2coreui/components/grid/cell/hexaOctetStringCellEditor\";\r\nimport ReactDOM from \"react-dom\";\r\nimport {D2000UnixTimeNullValue, unixTimeToMoment} from \"d2core/types/unixTime\";\r\nimport {compileExpression} from \"filtrex\";\r\n\r\nconst gridFrameworkComponents = {\r\n customColumnFilter: CustomColumnFilter,\r\n textColumnFilter: TextColumnFilter,\r\n numberCellEditor: NumberCellEditor,\r\n textCellEditor: TextCellEditor,\r\n simpleStatusTextCellEditor: SimpleStatusTextCellEditor,\r\n statusTextCellEditor: StatusTextCellEditor,\r\n dateCellEditor: DateCellEditor,\r\n durationCellEditor: DurationCellEditor,\r\n customEnumCellEditor: CustomEnumCellEditor,\r\n hexaValueCellEditor: HexaValueCellEditor,\r\n hexaOctetStringCellEditor: HexaOctetStringCellEditor,\r\n simpleHeader: SimpleHeader,\r\n loadingOverlay: LoadingOverlay,\r\n noRecordsOverlay: NoRecordsOverlay\r\n};\r\n\r\nconst ROW_HEIGHT_DELTA_FROM_FONT_SIZE = 16;\r\n\r\nfunction getRowNodeId(item: { id: number | string }): string {\r\n return item.id + \"\";\r\n}\r\n\r\nconst rowStyleRuleCompiledExpressions: { [key: string]: (parameters: any) => any } = {};\r\n\r\n/**\r\n * Special separator for part of the column which should be exported\r\n */\r\nexport const EXPORT_SEPARATOR = \"\\n\";\r\n\r\nexport type MenuElement = JSX.Element;\r\n\r\nconst enum NavigationEventEnum {\r\n KEYBOARD,\r\n MOUSE\r\n}\r\n\r\n/**\r\n * Extended viewport change event\r\n */\r\nexport interface DataGridViewportChangedEvent extends ViewportChangedEvent {\r\n // delta number of rows table moved during paging/scrolling of the table\r\n // negative number when paged/scrolled backwards to first record, positive number when paged/scrolled forwards to last record\r\n rowsScrollingDelta: number\r\n}\r\n\r\nexport type SortMode = \"asc\" | \"desc\"\r\n\r\n/**\r\n * Represents sorting definition for one column\r\n */\r\nexport interface SortItem {\r\n colId: string;\r\n sort: SortMode;\r\n}\r\n\r\ninterface ColumnInfo {\r\n column: Column,\r\n displayName: string,\r\n isDateField: boolean\r\n isDateTimeField: boolean\r\n}\r\n\r\nexport type FilterRenderer = (value: string, changeValue: (newValue: string) => void, onSearch: () => void) => React.ReactNode\r\n\r\n/*\r\n * Extended table column definition\r\n */\r\nexport interface DataGridColDef extends Omit<ColDef, \"cellStyle\"> {\r\n // localized name of group of columns to which column belongs to\r\n group: string\r\n // context of column definition\r\n context?: any\r\n\r\n // override of ag-grid api with undefined styles\r\n cellStyle?: { [cssProperty: string]: string | number | null } | ((cellClassParams: CellClassParams) => { [cssProperty: string]: string | number | null } | undefined);\r\n\r\n\r\n // custom filter render method\r\n renderFilter?: FilterRenderer\r\n}\r\n// prevent logging warning logs of unknown column definition attributes\r\nColDefUtil.FRAMEWORK_PROPERTIES.push(\"group\", \"context\", \"cellStyle\", \"renderFilter\");\r\n\r\nexport interface DataGridFilterProps {\r\n // flag if floating filters (beneath column headers) are visible\r\n columnSearchVisible?: boolean\r\n // visibility handler for floating filters\r\n onColumnSearchVisible?: (visible: boolean) => void\r\n\r\n // returns floating filters (beneath column headers) current model (essential when filters should be pre-filled when shown from e.g. searchbox)\r\n getFilterModel?(): any\r\n\r\n // floating filter changed event (e.g. when pressing enter in floating filter textbox)\r\n onFilterChanged?(event: FilterChangedEvent): void;\r\n\r\n // floating filter modify event (e.g. when modifying value in floating filter textbox)\r\n onFilterModified?(event: FilterModifiedEvent): void;\r\n\r\n // method called when enter is pressed in the floating filter\r\n onFilterConfirmed?(): void\r\n}\r\n\r\nexport interface DataGridSearchProps {\r\n // placeholder to show in search field when no value is entered\r\n placeholder?: string\r\n // current search string\r\n searchString?: string\r\n // current search history available for search field popup\r\n searchHistory?: string[]\r\n // custom search button class name\r\n searchButtonClassName?: string\r\n // search button disabled\r\n searchButtonDisabled?: boolean\r\n // hide searchbox\r\n hidden?: boolean\r\n\r\n // custom search field renderer\r\n searchRenderer?(): React.ReactNode\r\n\r\n // disable searchbox\r\n inputReadonly?: boolean\r\n\r\n // formatting showed strings in search and history\r\n stringFormatter?(rawString: string): string\r\n\r\n // search field value changed\r\n onChange?(searchString: string): void\r\n\r\n // called when new search is invoked by pressing search button or enter in the search field\r\n onSearch?(): void\r\n}\r\n\r\n// callback called when data are loaded from backend\r\nexport type OnLoadDataCallback = (totalRecords: number) => void\r\n\r\n/**\r\n * Data Grid properties, differences to AgGrid:\r\n * columnDefinitions (columnDefs) does not support column groups for now\r\n * paginationPageSize for defining size of page is not available, use paging.pageSize instead\r\n */\r\nexport interface DataGridProps extends Omit<GridOptions, \"columnDefs\" | \"paginationPageSize\" | \"getRowStyle\" | \"cellStyle\"> {\r\n // linking grid options (used for aligned grids feature: https://www.ag-grid.com/javascript-grid-aligned-grids/)\r\n gridOptions?: GridOptions\r\n // column definitions\r\n columnDefs: DataGridColDef[]\r\n // for aligned grids functionality\r\n disableColumnDefsPreprocessing?: boolean\r\n\r\n // realColumnDefs building handler\r\n onColumnDefsAdapted?(columnDefs: ColDef[]): void\r\n\r\n // shows table configuration panel\r\n tableConfigVisible?: boolean,\r\n // shows column configuration panel\r\n columnsConfigVisible?: boolean,\r\n // style of panel surrounding datagrid\r\n panelStyle?: React.CSSProperties,\r\n // style of panel surrounding table part\r\n tablePanelStyle?: React.CSSProperties,\r\n // floating filter configuration\r\n filter?: DataGridFilterProps\r\n // search bar configuration\r\n search?: DataGridSearchProps\r\n // table paging configuration\r\n paging: {\r\n /* current size of table page:\r\n - value -1 means no paging at all (scrollbar only)\r\n - value 0 means automatic paging (page size automatically adjusted based on available height for table)\r\n - value >0 defines statically defined page size (number of rows) for the table\r\n */\r\n pageSize: number,\r\n // default size used when configuration is reverted\r\n defaultPageSize?: number,\r\n /**\r\n * Page size change handler\r\n * @param currentPageSize - current page size represents number rows available\r\n * @param definedPageSize -\r\n */\r\n onPaginationChanged?: (currentPageSize: number | null, definedPageSize: number) => void;\r\n }\r\n\r\n // load data handler - called by grid always when it needs data\r\n onLoadData(callback: OnLoadDataCallback): void\r\n\r\n // automatic focus to first cell of selected row after loading of data is complete\r\n autofocus?: boolean\r\n\r\n // handler for keys pressed in data grid\r\n onKeyPressed?(event: KeyboardEvent): void\r\n\r\n // enter handler\r\n onEnter?: () => void;\r\n\r\n // ids of currently selected rows\r\n selectedIds?: (number | string)[]\r\n\r\n // rules for styling table rows\r\n rowStyleRules: RowStyleRule[]\r\n\r\n // default rules for styling table rows, used when configuration is reverted\r\n defaultRowStyleRules?: RowStyleRule[]\r\n\r\n // row styles change handler\r\n onChangeRowStyleRules?(rowStyleRules: RowStyleRule[]): void\r\n\r\n // extra buttons rendered before the search bar\r\n toolbar?: {\r\n // custom renderer for the whole toolbar panel\r\n renderToolbar?(originalSearchBar: ReactElement): ReactElement\r\n\r\n // extra buttons rendered in toolbar\r\n toolbarButtons?: ReactElement\r\n\r\n // hide records count\r\n hideRecordCount?: boolean\r\n }\r\n\r\n // row height change handler (height is changed from table configuration screen)\r\n onRowHeightChanged?(rowHeight: number): void\r\n\r\n // columns state change handler\r\n onColumnsChanged?(columnModel: ColumnState[], event: ColumnEvent): void\r\n\r\n // table configuration panel visibility change handler\r\n onTableConfigVisible?(visible: boolean): void\r\n\r\n // column configuration panel visibility change handler\r\n onColumnsConfigVisible?(visible: boolean): void\r\n\r\n // customized renderer for displaying loading progress\r\n loadingOverlayRenderer?(): ReactElement | null\r\n\r\n // customized renderer for displaying no records information\r\n noRecordsOverlayRenderer?(): ReactElement | null\r\n\r\n // customized renderer for displaying data over table\r\n tableOverlayRenderer?(): ReactElement | null\r\n\r\n showMilliseconds?: boolean\r\n\r\n defaultShowMilliseconds?: boolean\r\n\r\n onShowMilliseconds?(show: boolean, callback: () => void): void\r\n\r\n hideYear?: boolean\r\n\r\n defaultHideYear?: boolean\r\n\r\n onShowYear?(show: boolean, callback: () => void): void\r\n\r\n // export menu configuration\r\n exportMenu?: {\r\n // overides export menu rendering\r\n renderer?(menuElements: MenuElement[]): MenuElement[]\r\n // handler for custom export menu items click\r\n onClick?(key: string): void\r\n }\r\n\r\n // settings menu configuration\r\n settingsMenu?: {\r\n // overides setting menu rendering\r\n renderer?(menuElements: MenuElement[]): MenuElement[]\r\n // handler for custom settings menu items click\r\n onClick?(key: string): void\r\n }\r\n\r\n // context menu configuration (right click on the table rows)\r\n contextMenu?: {\r\n // overides context menu rendering\r\n renderer?(menuElements: MenuElement[]): MenuElement[]\r\n // handler for custom context menu items click\r\n onClick?(key: string): void\r\n }\r\n\r\n // override of ag-grid api with undefined styles\r\n getRowStyle?(params: any): GridRowStyle | undefined\r\n}\r\n\r\ninterface DataGridState {\r\n pageIndex: number\r\n pageSize: number | null\r\n recordsCount?: number\r\n columnModel: ColumnState[]\r\n sortModel: SortItem[]\r\n tableConfigVisible: boolean\r\n columnsConfigVisible: boolean\r\n rowHeight: number\r\n // interval of record's indexes currently shown (first record has index 1)\r\n viewport: [number, number]\r\n contextMenuVisible: boolean\r\n firstLoadDone: boolean\r\n loading: boolean\r\n columnTransferHeight: number\r\n}\r\n\r\n\r\nexport default class DataGrid extends React.Component<DataGridProps, DataGridState> {\r\n public static defaultProps = {\r\n paging: {\r\n pageSize: 0,\r\n defaultPageSize: 0\r\n },\r\n rowStyleRules: tableDefaultRowStyleRules()\r\n };\r\n\r\n wildcardQuickFilter: WildcardQuickFilter;\r\n columnTypes: { [key: string]: ColDef };\r\n gridApi?: GridApi;\r\n gridColumnApi?: ColumnApi;\r\n // deep copy of columns state before opening editation of columns and its order\r\n // used in \"cancel changes\" functionality\r\n columnModelBeforeEdit?: ColumnState[];\r\n indexToJump: number | null;\r\n columnToJump: Column | null;\r\n lastCellFocus?: CellFocusedEvent;\r\n lastNavigationEvent?: NavigationEventEnum;\r\n table_context: any;\r\n private wrappingDiv: HTMLDivElement | null = null;\r\n\r\n constructor(props: Readonly<DataGridProps>) {\r\n super(props);\r\n this.state = {\r\n pageIndex: 0,\r\n pageSize: null,\r\n recordsCount: undefined,\r\n columnModel: [],\r\n sortModel: [],\r\n tableConfigVisible: !!this.props.tableConfigVisible,\r\n columnsConfigVisible: !!this.props.columnsConfigVisible,\r\n rowHeight: 28,\r\n viewport: [0, 0],\r\n contextMenuVisible: false,\r\n firstLoadDone: false,\r\n loading: false,\r\n columnTransferHeight: 500\r\n };\r\n this.indexToJump = null;\r\n this.columnToJump = null;\r\n\r\n this.onGridReady = this.onGridReady.bind(this);\r\n this.onPaginationChanged = this.onPaginationChanged.bind(this);\r\n this.onViewportChanged = this.onViewportChanged.bind(this);\r\n this.onCellContextMenu = this.onCellContextMenu.bind(this);\r\n this.onCellFocused = this.onCellFocused.bind(this);\r\n this.onCellMouseDown = this.onCellMouseDown.bind(this);\r\n this.setFocusedCellDebounced = debounce(this.setFocusedCellDebounced.bind(this), 200);\r\n this.noRecordsOverlayRenderer = this.noRecordsOverlayRenderer.bind(this);\r\n this.loadingOverlayRenderer = this.loadingOverlayRenderer.bind(this);\r\n this.changePagination = this.changePagination.bind(this);\r\n this.onColumnsChanged = this.onColumnsChanged.bind(this);\r\n this.onFilterModified = this.onFilterModified.bind(this);\r\n this.onFilterChanged = this.onFilterChanged.bind(this);\r\n this.onFilterConfirmed = this.onFilterConfirmed.bind(this);\r\n this.onSortChanged = this.onSortChanged.bind(this);\r\n this.showTableConfiguration = this.showTableConfiguration.bind(this);\r\n this.showColumnsConfig = this.showColumnsConfig.bind(this);\r\n this.navigateToNextCell = this.navigateToNextCell.bind(this);\r\n this.suppressKeyboardEvent = this.suppressKeyboardEvent.bind(this);\r\n this.onRowDataUpdated = this.onRowDataUpdated.bind(this);\r\n this._getRowStyle = this._getRowStyle.bind(this);\r\n this._getRowHeight = this._getRowHeight.bind(this);\r\n this._getCellStyle = this._getCellStyle.bind(this);\r\n this.textCustomComparator = this.textCustomComparator.bind(this);\r\n this.getExportContent = this.getExportContent.bind(this);\r\n this.getDefaultColDefinition = memoizeOne(this.getDefaultColDefinition.bind(this));\r\n this.getAdaptedColumnDefs = memoizeOne(this.getAdaptedColumnDefs.bind(this));\r\n this.getCustomFrameworkComponents = memoizeOne(this.getCustomFrameworkComponents.bind(this));\r\n\r\n this.table_context = {\r\n loadingOverlayRenderer: this.loadingOverlayRenderer,\r\n noRecordsOverlayRenderer: this.noRecordsOverlayRenderer,\r\n onFilterConfirmed: this.onFilterConfirmed,\r\n fontSize: this.state.rowHeight - ROW_HEIGHT_DELTA_FROM_FONT_SIZE,\r\n lineHeight: this.state.rowHeight - 2\r\n };\r\n this.wildcardQuickFilter = new WildcardQuickFilter();\r\n\r\n this.columnTypes = {\r\n \"localizedArrayColumn\": {\r\n cellRenderer: (props: any): string => {\r\n const value = DataGrid.getFieldValue(props) as string[];\r\n if (value) {\r\n return value.map((s) => i18n(s)).join(\",\");\r\n } else {\r\n return \"\";\r\n }\r\n },\r\n filterParams: {\r\n textCustomComparator: this.textCustomComparator\r\n },\r\n filterValueGetter: function (params: ValueGetterParams): string | null {\r\n if (params.colDef.field) {\r\n const value = DataGrid.getFieldValue(params) as string[];\r\n if (value) {\r\n return value.map((s) => i18n(s)).join(\",\");\r\n }\r\n }\r\n return null;\r\n },\r\n getQuickFilterText: function (params: GetQuickFilterTextParams): string {\r\n if (params.colDef.field) {\r\n const value = DataGrid.getFieldValue(params) as string[];\r\n if (value || (value as unknown as number) === 0) {\r\n return value.map((s) => i18n(s)).join(\",\");\r\n }\r\n }\r\n return \"\";\r\n }\r\n },\r\n \"numberColumn\": {\r\n cellRenderer: (props: any): string => {\r\n const value = DataGrid.getFieldValue(props) as number;\r\n if (value || value === 0) {\r\n return LocaleHolder.formatNumber(value);\r\n } else {\r\n return \"\";\r\n }\r\n },\r\n filterParams: {\r\n textCustomComparator: this.textCustomComparator\r\n },\r\n filterValueGetter: function (params: ValueGetterParams): string | null {\r\n if (params.colDef.field) {\r\n const value = DataGrid.getFieldValue(params) as number;\r\n if (value || value === 0) {\r\n return LocaleHolder.formatNumber(value);\r\n } else {\r\n return \"\";\r\n }\r\n }\r\n return null;\r\n },\r\n getQuickFilterText: function (params: GetQuickFilterTextParams): string {\r\n if (params.colDef.field) {\r\n const value = DataGrid.getFieldValue(params) as number;\r\n if (value || value === 0) {\r\n return LocaleHolder.formatNumber(value);\r\n } else {\r\n return \"\";\r\n }\r\n }\r\n return \"\";\r\n }\r\n },\r\n \"dateColumn\": {\r\n cellRenderer: (props: any): string => {\r\n const value = DataGrid.getFieldValue(props) as number;\r\n if (value) {\r\n if (value === D2000UnixTimeNullValue) {\r\n return \"---\";\r\n }\r\n let tooltipValue: string;\r\n tooltipValue = unixTimeToMoment(value).format(LocaleHolder.getDateTimeFormat(true, true, true));\r\n return `<span title=\"${tooltipValue}\">${unixTimeToMoment(value).format(LocaleHolder.getDateFormat(!this.props.hideYear))}</span>`\r\n } else {\r\n return \"---\";\r\n }\r\n },\r\n valueFormatter: (props: ValueFormatterParams): string => {\r\n if (props.colDef.field) {\r\n const value = DataGrid.getFieldValue(props) as number;\r\n if (value) {\r\n return unixTimeToMoment(value).format(LocaleHolder.getDateFormat(!this.props.hideYear));\r\n }\r\n }\r\n return \"---\";\r\n },\r\n filterParams: {\r\n textCustomComparator: this.textCustomComparator\r\n },\r\n filterValueGetter: (params: ValueGetterParams): string | null => {\r\n if (params.colDef.field) {\r\n const value = DataGrid.getFieldValue(params);\r\n if (value) {\r\n return unixTimeToMoment(value).format(LocaleHolder.getDateFormat(!this.props.hideYear));\r\n }\r\n }\r\n return null;\r\n },\r\n getQuickFilterText: (params: GetQuickFilterTextParams): string => {\r\n if (params.colDef.field) {\r\n const value = DataGrid.getFieldValue(params);\r\n if (value) {\r\n return unixTimeToMoment(value).format(LocaleHolder.getDateFormat(!this.props.hideYear));\r\n }\r\n }\r\n return \"\";\r\n }\r\n },\r\n \"dateTimeColumn\": {\r\n cellRenderer: (props: ICellRendererParams): string => {\r\n if (props.colDef?.field) {\r\n const value = DataGrid.getFieldValue(props) as number;\r\n if (value) {\r\n if (value === D2000UnixTimeNullValue) {\r\n return \"---\";\r\n }\r\n let tooltipValue: string;\r\n tooltipValue = unixTimeToMoment(value).format(LocaleHolder.getDateTimeFormat(true, true, true));\r\n return `<span title=\"${tooltipValue}\">${unixTimeToMoment(value).format(LocaleHolder.getDateTimeFormat(!this.props.hideYear, true, this.props.showMilliseconds))}</span>`;\r\n }\r\n }\r\n return \"---\";\r\n },\r\n valueFormatter: (props: ValueFormatterParams): string => {\r\n if (props.colDef.field) {\r\n const value = DataGrid.getFieldValue(props) as number;\r\n if (value) {\r\n return unixTimeToMoment(value).format(LocaleHolder.getDateTimeFormat(!this.props.hideYear, true, this.props.showMilliseconds));\r\n }\r\n }\r\n return \"---\";\r\n },\r\n filterParams: {\r\n textCustomComparator: this.textCustomComparator\r\n },\r\n filterValueGetter: (params: ValueGetterParams): string | null => {\r\n if (params.colDef.field) {\r\n const value = DataGrid.getFieldValue(params) as number;\r\n if (value) {\r\n return unixTimeToMoment(value).format(LocaleHolder.getDateTimeFormat(!this.props.hideYear, true, this.props.showMilliseconds));\r\n }\r\n }\r\n return null;\r\n },\r\n getQuickFilterText: (params: GetQuickFilterTextParams): string => {\r\n if (params.colDef.field) {\r\n const value = DataGrid.getFieldValue(params);\r\n if (value) {\r\n return unixTimeToMoment(value).format(LocaleHolder.getDateTimeFormat(!this.props.hideYear, true, this.props.showMilliseconds));\r\n }\r\n }\r\n return \"\";\r\n }\r\n },\r\n \"fromNowDateTimeColumn\": {\r\n cellRenderer: (props: any): string => {\r\n const value = DataGrid.getFieldValue(props) as number;\r\n if (value) {\r\n let tooltipValue: string;\r\n tooltipValue = unixTimeToMoment(value).format(LocaleHolder.getDateTimeFormat(true, true, true));\r\n return `<span title=\"${tooltipValue}\">${unixTimeToMoment(value).fromNow()}</span>`;\r\n } else {\r\n return \"---\";\r\n }\r\n },\r\n valueFormatter: (props: ValueFormatterParams): string => {\r\n if (props.colDef.field) {\r\n const value = DataGrid.getFieldValue(props) as number;\r\n if (value) {\r\n return unixTimeToMoment(value).format(LocaleHolder.getDateTimeFormat(!this.props.hideYear, true, this.props.showMilliseconds));\r\n }\r\n }\r\n return \"---\";\r\n },\r\n filterParams: {\r\n textCustomComparator: this.textCustomComparator\r\n },\r\n filterValueGetter: (params: ValueGetterParams): string | null => {\r\n if (params.colDef.field) {\r\n const value = DataGrid.getFieldValue(params);\r\n if (value) {\r\n return unixTimeToMoment(value).format(LocaleHolder.getDateTimeFormat(!this.props.hideYear, true, this.props.showMilliseconds));\r\n }\r\n }\r\n return null;\r\n },\r\n getQuickFilterText: (params: GetQuickFilterTextParams): string => {\r\n if (params.colDef.field) {\r\n const value = DataGrid.getFieldValue(params);\r\n if (value) {\r\n return unixTimeToMoment(value).format(LocaleHolder.getDateTimeFormat(!this.props.hideYear, true, this.props.showMilliseconds));\r\n }\r\n }\r\n return \"\";\r\n }\r\n },\r\n \"textColumnFilter\": {\r\n filter: \"agTextColumnFilter\",\r\n floatingFilter: true,\r\n floatingFilterComponent: \"textColumnFilter\",\r\n filterParams: {\r\n textCustomComparator: this.textCustomComparator\r\n },\r\n floatingFilterComponentParams: {\r\n suppressFilterButton: true,\r\n },\r\n },\r\n \"textColumnServerFilter\": {\r\n filter: \"agTextColumnFilter\",\r\n floatingFilter: true,\r\n floatingFilterComponent: \"textColumnFilter\",\r\n filterParams: {\r\n buttons: ['apply'],\r\n textCustomComparator: this.textCustomComparator\r\n },\r\n floatingFilterComponentParams: {\r\n suppressFilterButton: true,\r\n },\r\n },\r\n \"customColumnServerFilter\": {\r\n filter: \"agTextColumnFilter\",\r\n floatingFilter: true,\r\n floatingFilterComponent: \"customColumnFilter\",\r\n filterParams: {\r\n buttons: ['apply'],\r\n textCustomComparator: this.textCustomComparator\r\n },\r\n floatingFilterComponentParams: {\r\n suppressFilterButton: true,\r\n },\r\n },\r\n \"alignRight\": {}\r\n };\r\n }\r\n\r\n private static getFieldValue(props: ICellRendererParams | ValueFormatterParams | GetQuickFilterTextParams | ValueGetterParams): any {\r\n switch (typeof props.colDef?.valueGetter) {\r\n case \"undefined\":\r\n if (props.colDef?.field) {\r\n return at(props.data, props.colDef.field)[0];\r\n } else {\r\n return \"---\";\r\n }\r\n case \"string\":\r\n return props.colDef.valueGetter;\r\n case \"function\":\r\n try {\r\n return props.colDef.valueGetter(props as ValueGetterParams);\r\n } catch (e) {\r\n if (props.colDef.field) {\r\n return at(props.data, props.colDef.field)[0];\r\n } else {\r\n return \"---\";\r\n }\r\n }\r\n default:\r\n return \"---\";\r\n }\r\n }\r\n\r\n textCustomComparator(filter: string, value: any, filterText: string) {\r\n const filterTextLowerCase = filterText.toLowerCase();\r\n const valueLowerCase = value.toString().toLowerCase();\r\n switch (filter) {\r\n case 'contains':\r\n if (filterTextLowerCase.indexOf(\"*\") >= 0 || filterTextLowerCase.indexOf(\"?\") >= 0) {\r\n const wildcardFilterRegExp = this.wildcardQuickFilter.getWildcardFilterRegExp(filterTextLowerCase);\r\n if (wildcardFilterRegExp) {\r\n return wildcardFilterRegExp.test(valueLowerCase);\r\n } else {\r\n return valueLowerCase.indexOf(filterTextLowerCase) >= 0;\r\n }\r\n } else {\r\n return valueLowerCase.indexOf(filterTextLowerCase) >= 0;\r\n }\r\n case 'notContains':\r\n return valueLowerCase.indexOf(filterTextLowerCase) === -1;\r\n case 'equals':\r\n return valueLowerCase === filterTextLowerCase;\r\n case 'notEqual':\r\n // noinspection EqualityComparisonWithCoercionJS\r\n return valueLowerCase != filterTextLowerCase;\r\n case 'startsWith':\r\n return valueLowerCase.indexOf(filterTextLowerCase) === 0;\r\n case 'endsWith':\r\n var index = valueLowerCase.lastIndexOf(filterTextLowerCase);\r\n return index >= 0 && index === (valueLowerCase.length - filterTextLowerCase.length);\r\n default:\r\n // should never happen\r\n console.warn('invalid filter type ' + filter);\r\n return false;\r\n }\r\n }\r\n\r\n componentDidUpdate(prevProps: DataGridProps) {\r\n if (!this.gridApi) {\r\n return;\r\n }\r\n if (this.props.filter && prevProps.filter && this.props.filter.columnSearchVisible !== prevProps.filter.columnSearchVisible) {\r\n setTimeout(() => {\r\n if (this.gridApi) {\r\n this.gridApi.refreshHeader();\r\n if (this.props.filter && !this.props.filter.columnSearchVisible) {\r\n this.gridApi.setFilterModel(null);\r\n this.gridApi.onFilterChanged();\r\n }\r\n }\r\n }, 0);\r\n }\r\n // functionality when all data are loaded to table\r\n if (this.props.rowData && this.props.rowData !== prevProps.rowData) {\r\n // keep filter model when data are changed\r\n if (this.props.filter && this.props.filter.getFilterModel) {\r\n this.gridApi.setFilterModel(this.props.filter.getFilterModel());\r\n this.gridApi.onFilterChanged();\r\n }\r\n // keep sorting model when data are changed\r\n this.setSortModel(this.state.sortModel);\r\n this.gridApi.refreshClientSideRowModel(\"group\");\r\n this.gridApi.redrawRows();\r\n\r\n // keep selected rows when data are changed and rows are still present\r\n const selectedObjectsVisibleInGrid = this.props.rowData.filter((object) => {\r\n return this.props.selectedIds ? this.props.selectedIds.indexOf(object.id) >= 0 : false;\r\n });\r\n if (selectedObjectsVisibleInGrid.length > 0) {\r\n selectedObjectsVisibleInGrid.forEach((object) => {\r\n const rowNode = this.gridApi ? this.gridApi.getRowNode(object.id + \"\") : null;\r\n if (rowNode && !rowNode.isSelected()) {\r\n rowNode.setSelected(true, true);\r\n }\r\n });\r\n } else {\r\n this.gridApi.deselectAll();\r\n }\r\n }\r\n // functionality when chunks of data are dynamically loaded from server\r\n if (this.props.datasource && this.props.datasource !== prevProps.datasource) {\r\n // resets grid data\r\n this.gridApi.setDatasource(this.props.datasource);\r\n }\r\n this.updateRowHeight();\r\n }\r\n\r\n public setColumnState(columnModel: ColumnState[]) {\r\n const columnStates: ColumnState[] = [];\r\n if (columnModel) {\r\n columnModel.forEach((item: ColumnState) => {\r\n const columnState = {...item};\r\n item.sortIndex = undefined;\r\n item.sort = undefined\r\n columnStates.push(columnState);\r\n });\r\n }\r\n this.gridColumnApi?.applyColumnState({state: columnStates, defaultState: {sort: null}, applyOrder: true});\r\n }\r\n\r\n public setSortModel(sortModel: SortItem[]) {\r\n const columnState: ColumnState[] = [];\r\n if (sortModel) {\r\n sortModel.forEach((item: any, index: number) => {\r\n columnState.push({\r\n colId: item.colId,\r\n sort: item.sort,\r\n sortIndex: index\r\n });\r\n });\r\n }\r\n this.gridColumnApi?.applyColumnState({state: columnState, defaultState: {sort: null}, applyOrder: true});\r\n }\r\n\r\n public getSortModel(): SortItem[] {\r\n const columnState = this.gridColumnApi?.getColumnState() ?? [];\r\n const filteredStates = columnState?.filter(item => item.sort != null);\r\n const indexes: { [colId: string]: number; } = {};\r\n filteredStates.forEach((state) => {\r\n if (state.colId) {\r\n indexes[state.colId] = state.sortIndex as number;\r\n }\r\n });\r\n const res = filteredStates.map(s => {\r\n return {colId: s.colId, sort: s.sort} as SortItem;\r\n });\r\n res.sort((a: any, b: any) => indexes[a.colId] - indexes[b.colId]);\r\n return res;\r\n\r\n }\r\n\r\n updateRowHeight() {\r\n let rowHeight = this.calculateRowHeight(this.props.rowStyleRules);\r\n if (rowHeight && rowHeight !== this.state.rowHeight) {\r\n this.changeRowHeight(rowHeight);\r\n }\r\n }\r\n\r\n calculateRowHeight(rowStyleRules?: RowStyleRule[]): number | undefined {\r\n let rowHeight;\r\n if (rowStyleRules) {\r\n for (let i = 0; i < rowStyleRules.length; i++) {\r\n if (rowStyleRules[i].key === \"table-font-size\") {\r\n const currentFontSize = rowStyleRules[i].style.fontSize;\r\n if (typeof currentFontSize === \"number\") {\r\n rowHeight = (currentFontSize ? currentFontSize : GRID_DEFAULT_FONT_SIZE) + ROW_HEIGHT_DELTA_FROM_FONT_SIZE;\r\n } else {\r\n rowHeight = GRID_DEFAULT_FONT_SIZE + ROW_HEIGHT_DELTA_FROM_FONT_SIZE;\r\n }\r\n }\r\n }\r\n }\r\n return rowHeight;\r\n }\r\n\r\n /**\r\n * Handling setting table gridEditor\r\n */\r\n static getDerivedStateFromProps(props: DataGridProps, state: DataGridState) {\r\n const newState: Partial<DataGridState> = {};\r\n if (props.tableConfigVisible === true || props.tableConfigVisible === false) {\r\n if (props.tableConfigVisible !== state.tableConfigVisible) {\r\n newState.tableConfigVisible = props.tableConfigVisible;\r\n }\r\n }\r\n return newState;\r\n }\r\n\r\n onGridReady(gridReadyEvent: GridReadyEvent): void {\r\n const gridApi = gridReadyEvent.api;\r\n const gridColumnApi = gridReadyEvent.columnApi;\r\n if (!this.gridApi || this.gridApi !== gridApi) {\r\n // row selection plugin hook\r\n const rangeSelector = new RangeSelector(this.wrappingDiv);\r\n rangeSelector.init(gridApi, gridColumnApi);\r\n // altered quick filter hook for supporting wildcard matching\r\n this.wildcardQuickFilter.adaptFilterEngine(gridApi);\r\n this.gridApi = gridApi;\r\n this.gridColumnApi = gridColumnApi;\r\n if (this.props.onGridReady) {\r\n this.props.onGridReady(gridReadyEvent);\r\n }\r\n this.setState({\r\n sortModel: this.getSortModel(),\r\n columnModel: this.gridColumnApi.getColumnState(),\r\n });\r\n this.updateRowHeight();\r\n }\r\n }\r\n\r\n onPaginationChanged(event: PaginationChangedEvent) {\r\n if (!this.gridApi) {\r\n this.onGridReady({type: \"gridReady\", api: event.api, columnApi: event.columnApi});\r\n }\r\n if (this.gridApi) {\r\n const currentPage = this.gridApi.paginationGetCurrentPage();\r\n const currentPageSize = this.gridApi.paginationGetPageSize();\r\n let recordsCount = this.props.paging.pageSize >= 0 ? (this.gridApi.paginationIsLastPageFound() ? this.gridApi.paginationGetRowCount() : 0) : this.gridApi.getDisplayedRowCount();\r\n // process only when onGridReady passed\r\n if (this.state.pageSize !== currentPageSize) {\r\n if (this.props.paging.onPaginationChanged) {\r\n this.props.paging.onPaginationChanged(currentPageSize, this.props.paging.pageSize);\r\n }\r\n if (!this.state.firstLoadDone) {\r\n this.loadData();\r\n this.setState({firstLoadDone: true});\r\n }\r\n }\r\n this.setState({pageSize: currentPageSize, recordsCount: recordsCount, pageIndex: currentPage});\r\n if (this.indexToJump !== null && this.columnToJump !== null) {\r\n this.gridApi.setFocusedCell(this.indexToJump, this.columnToJump);\r\n this.indexToJump = null;\r\n }\r\n }\r\n if (this.props.onPaginationChanged) {\r\n this.props.onPaginationChanged(event);\r\n }\r\n }\r\n\r\n onViewportChanged(event: ViewportChangedEvent) {\r\n const dataGridEvent = event as DataGridViewportChangedEvent;\r\n // calculation of the flag that last record is shown\r\n const rowsScrollingDelta = this.state.viewport[1] ? event.lastRow + 1 - this.state.viewport[1] : event.lastRow + 1;\r\n dataGridEvent.rowsScrollingDelta = rowsScrollingDelta;\r\n this.setState({viewport: [event.firstRow + 1, event.lastRow + 1]});\r\n if (this.props.onViewportChanged) {\r\n this.props.onViewportChanged(event);\r\n }\r\n }\r\n\r\n changePagination(pageSize: number): void {\r\n if (!this.gridApi) {\r\n return;\r\n }\r\n const gridApiWithPrivateAccess = this.gridApi as any;\r\n if (pageSize > 0) {\r\n gridApiWithPrivateAccess.gridOptionsWrapper.setProperty('pagination', true);\r\n gridApiWithPrivateAccess.gridOptionsWrapper.setProperty('paginationAutoPageSize', false);\r\n this.gridApi.paginationSetPageSize(pageSize);\r\n if (this.props.paging.onPaginationChanged) {\r\n this.props.paging.onPaginationChanged(pageSize, pageSize);\r\n }\r\n } else if (pageSize === 0) {\r\n gridApiWithPrivateAccess.gridOptionsWrapper.setProperty('pagination', true);\r\n gridApiWithPrivateAccess.gridOptionsWrapper.setProperty('paginationAutoPageSize', true);\r\n // handling AG-Grid bug caused by different previous pageSize state\r\n const rowHeight = gridApiWithPrivateAccess.gridOptionsWrapper.getRowHeightAsNumber();\r\n // const rowHeight = this.state.rowHeight;\r\n const bodyHeight = gridApiWithPrivateAccess.ctrlsService.centerRowContainerCtrl.viewportSizeFeature.getBodyHeight();\r\n let availablePageSize = 1000;\r\n if (bodyHeight > 0) {\r\n availablePageSize = Math.floor(bodyHeight / rowHeight);\r\n }\r\n if (this.props.paging.pageSize > availablePageSize) {\r\n this.gridApi.paginationSetPageSize(1);\r\n } else {\r\n // special hack to remove setting page size\r\n this.gridApi.paginationSetPageSize(null as unknown as number);\r\n }\r\n if (this.props.paging && this.props.paging.onPaginationChanged) {\r\n this.props.paging.onPaginationChanged(this.state.pageSize, 0);\r\n }\r\n } else {\r\n gridApiWithPrivateAccess.gridOptionsWrapper.setProperty('pagination', false);\r\n gridApiWithPrivateAccess.gridOptionsWrapper.setProperty('paginationAutoPageSize', false);\r\n if (this.props.paging && this.props.paging.onPaginationChanged) {\r\n this.props.paging.onPaginationChanged(this.state.pageSize, -1);\r\n }\r\n }\r\n }\r\n\r\n showMilliseconds(showMilis: boolean) {\r\n this.props.onShowMilliseconds?.(showMilis, () => {\r\n if (!this.gridApi) {\r\n return;\r\n }\r\n if (!this.props.rowModelType || this.props.rowModelType === \"clientSide\") {\r\n // table is shown\r\n this.gridApi.refreshClientSideRowModel(\"group\");\r\n }\r\n this.gridApi.redrawRows();\r\n });\r\n }\r\n\r\n showYear(showYear: boolean) {\r\n this.props.onShowYear?.(showYear, () => {\r\n if (!this.gridApi) {\r\n return;\r\n }\r\n if (!this.props.rowModelType || this.props.rowModelType === \"clientSide\") {\r\n // table is shown\r\n this.gridApi.refreshClientSideRowModel(\"group\");\r\n }\r\n this.gridApi.redrawRows();\r\n });\r\n }\r\n\r\n changeRowHeight(rowHeight: number) {\r\n this.setState({rowHeight: rowHeight}, () => {\r\n if (this.gridApi) {\r\n if (this.props.headerHeight === undefined) {\r\n this.gridApi.setHeaderHeight(rowHeight + 4);\r\n }\r\n if (this.props.floatingFiltersHeight === undefined) {\r\n this.gridApi.setFloatingFiltersHeight(rowHeight + 4);\r\n }\r\n (this.gridApi as any).gridOptionsWrapper.setProperty('rowHeight', rowHeight);\r\n this.gridApi.resetRowHeights();\r\n this.gridApi.refreshHeader();\r\n this.gridApi.redrawRows();\r\n if (this.props.rowModelType === \"infinite\" && this.props.datasource) {\r\n // redraws all server side loaded table data\r\n this.gridApi.setDatasource(this.props.datasource)\r\n }\r\n }\r\n if (this.props.onRowHeightChanged) {\r\n this.props.onRowHeightChanged(rowHeight);\r\n }\r\n });\r\n }\r\n\r\n onGoToPage(pageIndex: number) {\r\n if (this.gridApi) {\r\n this.gridApi.paginationGoToPage(pageIndex);\r\n }\r\n }\r\n\r\n loadData(callback?: () => void) {\r\n if (!this.gridApi) {\r\n return;\r\n }\r\n this.setState({loading: true});\r\n if (!this.props.loadingOverlayRenderer) {\r\n this.gridApi.showLoadingOverlay();\r\n }\r\n this.props.onLoadData((totalRecords) => {\r\n if (!this.gridApi) {\r\n return;\r\n }\r\n this.gridApi.hideOverlay();\r\n this.setState({loading: false});\r\n if (callback) {\r\n callback();\r\n }\r\n if (totalRecords === 0) {\r\n setTimeout(() => {\r\n if (!this.isActive()) {\r\n return;\r\n }\r\n this.gridApi?.showNoRowsOverlay();\r\n }, 400);\r\n }\r\n if (this.props.autofocus) {\r\n setTimeout(() => {\r\n if (!this.isActive()) {\r\n return;\r\n }\r\n const columnModel = this.gridColumnApi?.getColumnState();\r\n let columnIdToFocus = columnModel?.[0]?.colId || \"name\";\r\n const selectedNodes = this.gridApi?.getSelectedNodes();\r\n const selectedRowIndex: number = (selectedNodes && selectedNodes.length > 0 && selectedNodes[selectedNodes.length - 1].rowIndex) || 0;\r\n this.gridApi?.setFocusedCell(selectedRowIndex, columnIdToFocus);\r\n }, 200);\r\n }\r\n });\r\n }\r\n\r\n isActive(): boolean {\r\n return !!this.gridApi && !(this.gridApi as any).destroyCalled;\r\n }\r\n\r\n onColumnsChanged(event: ColumnEvent) {\r\n const columnModel = event.columnApi.getColumnState();\r\n if (this.props.onColumnsChanged) {\r\n this.props.onColumnsChanged(columnModel, event);\r\n }\r\n this.setState({columnModel: columnModel});\r\n }\r\n\r\n setColumnSearchVisible(visible: boolean) {\r\n if (this.gridApi && this.props.filter && this.props.filter.getFilterModel) {\r\n this.gridApi.setFilterModel(this.props.filter.getFilterModel());\r\n }\r\n if (this.props.filter && this.props.filter.onColumnSearchVisible) {\r\n this.props.filter.onColumnSearchVisible(visible);\r\n }\r\n }\r\n\r\n private onFilterModified(event: FilterModifiedEvent) {\r\n if (this.props.filter && this.props.filter.onFilterModified) {\r\n this.props.filter.onFilterModified(event);\r\n }\r\n }\r\n\r\n private onFilterChanged(event: FilterChangedEvent) {\r\n if (this.props.filter && this.props.filter.onFilterChanged) {\r\n this.props.filter.onFilterChanged(event);\r\n }\r\n }\r\n\r\n private onFilterConfirmed() {\r\n if (this.props.filter && this.props.filter.onFilterConfirmed) {\r\n this.props.filter.onFilterConfirmed();\r\n }\r\n }\r\n\r\n private onSortChanged(event: SortChangedEvent) {\r\n if (this.props.onSortChanged && this.gridApi) {\r\n const currentSortModel = this.getSortModel() as SortItem[];\r\n if (!isEqual(this.state.sortModel, currentSortModel)) {\r\n // propagate only changes to sorting\r\n this.setState({sortModel: currentSortModel}, () => {\r\n if (this.props.onSortChanged) {\r\n this.props.onSortChanged(event);\r\n }\r\n });\r\n }\r\n }\r\n }\r\n\r\n showTableConfiguration(show: boolean) {\r\n if (this.props.onTableConfigVisible) {\r\n this.props.onTableConfigVisible(show);\r\n }\r\n this.setState({tableConfigVisible: show}, () => {\r\n if (this.gridApi && !this.state.tableConfigVisible) {\r\n // redrawing rows after closing table configuration panel, probably not required any more,\r\n // because config panel and table is shown simultaneously\r\n if (!this.props.rowModelType || this.props.rowModelType === \"clientSide\") {\r\n // table is shown\r\n this.gridApi.refreshClientSideRowModel(\"group\");\r\n }\r\n this.gridApi.redrawRows();\r\n }\r\n });\r\n }\r\n\r\n showColumnsConfig(show: boolean) {\r\n if (this.props.onColumnsConfigVisible) {\r\n this.props.onColumnsConfigVisible(show);\r\n }\r\n this.columnModelBeforeEdit = cloneDeep(this.state.columnModel);\r\n this.setState({columnsConfigVisible: show});\r\n }\r\n\r\n private navigateToNextCell(params: NavigateToNextCellParams): CellPosition {\r\n this.lastNavigationEvent = NavigationEventEnum.KEYBOARD;\r\n var suggestedNextCell = params.nextCellPosition;\r\n if (!this.gridApi) {\r\n return suggestedNextCell ?? params.previousCellPosition;\r\n }\r\n const pageIndex = this.gridApi.paginationGetCurrentPage();\r\n const totalPages = this.gridApi.paginationGetTotalPages();\r\n var previousCell = params.previousCellPosition;\r\n switch (params.event?.code) {\r\n case Key.ArrowDown:\r\n if ((previousCell.rowIndex + 1) >= this.gridApi.getModel().getRowCount()) {\r\n if (pageIndex < (totalPages - 1)) {\r\n this.onGoToPage(pageIndex + 1);\r\n return {\r\n rowIndex: 0,\r\n column: previousCell.column,\r\n rowPinned: previousCell.rowPinned\r\n };\r\n } else {\r\n return {\r\n rowIndex: previousCell.rowIndex,\r\n column: previousCell.column,\r\n rowPinned: previousCell.rowPinned\r\n };\r\n }\r\n\r\n }\r\n break;\r\n case Key.ArrowUp:\r\n if ((previousCell.rowIndex - 1) < 0) {\r\n if (pageIndex > 0) {\r\n this.onGoToPage(pageIndex - 1);\r\n return {\r\n rowIndex: this.gridApi.getModel().getRowCount() - 1,\r\n column: previousCell.column,\r\n rowPinned: previousCell.rowPinned\r\n };\r\n } else {\r\n return {\r\n rowIndex: previousCell.rowIndex,\r\n column: previousCell.column,\r\n rowPinned: previousCell.rowPinned\r\n };\r\n }\r\n }\r\n break;\r\n }\r\n return suggestedNextCell ?? params.previousCellPosition;\r\n }\r\n\r\n private suppressKeyboardEvent(params: SuppressKeyboardEventParams): boolean {\r\n if (!this.gridApi) {\r\n return false;\r\n }\r\n const pageIndex = this.gridApi.paginationGetCurrentPage();\r\n const totalPages = this.gridApi.paginationGetTotalPages();\r\n switch (params.event.code) {\r\n case Key.ArrowDown:\r\n case Key.ArrowUp:\r\n case Key.ArrowLeft:\r\n case Key.ArrowRight:\r\n if (params.editing && params.event.altKey) {\r\n const focusedCell = this.gridApi.getFocusedCell();\r\n if (focusedCell) {\r\n let indexToJump: number;\r\n let columnToJump: Column;\r\n if (params.event.code === Key.ArrowDown) {\r\n indexToJump = focusedCell.rowIndex + 1;\r\n columnToJump = focusedCell.column;\r\n if (indexToJump >= this.gridApi.getModel().getRowCount()) {\r\n if (pageIndex < (totalPages - 1)) {\r\n this.onGoToPage(pageIndex + 1);\r\n indexToJump = 0\r\n } else {\r\n indexToJump = focusedCell.rowIndex;\r\n }\r\n }\r\n this.lastNavigationEvent = NavigationEventEnum.KEYBOARD;\r\n this.indexToJump = indexToJump;\r\n this.columnToJump = columnToJump;\r\n setTimeout(() => {\r\n this.gridApi?.startEditingCell({\r\n rowIndex: indexToJump,\r\n colKey: columnToJump,\r\n keyPress: 13 /*Enter*/\r\n });\r\n }, 0);\r\n return true;\r\n } else if (params.event.code === Key.ArrowUp) {\r\n indexToJump = focusedCell.rowIndex - 1;\r\n columnToJump = focusedCell.column;\r\n if (indexToJump < 0) {\r\n if (pageIndex > 0) {\r\n this.onGoToPage(pageIndex - 1);\r\n indexToJump = this.gridApi.getModel().getRowCount() - 1;\r\n } else {\r\n indexToJump = focusedCell.rowIndex;\r\n }\r\n }\r\n this.lastNavigationEvent = NavigationEventEnum.KEYBOARD;\r\n this.indexToJump = indexToJump;\r\n this.columnToJump = columnToJump;\r\n setTimeout(() => {\r\n this.gridApi?.startEditingCell({\r\n rowIndex: indexToJump,\r\n colKey: columnToJump,\r\n keyPress: 13 /*Enter*/\r\n });\r\n }, 0);\r\n return true;\r\n } else if (params.event.code === Key.ArrowLeft) {\r\n this.gridApi.tabToPreviousCell();\r\n break;\r\n } else /*Key.ArrowRight*/ {\r\n this.gridApi.tabToNextCell();\r\n break;\r\n }\r\n }\r\n }\r\n break;\r\n case Key.PageDown:\r\n this.lastNavigationEvent = NavigationEventEnum.KEYBOARD;\r\n if (pageIndex < (totalPages - 1)) {\r\n this.gridApi.paginationGoToNextPage();\r\n const focusedCell = this.gridApi.getFocusedCell();\r\n if (focusedCell) {\r\n this.indexToJump = Math.min(focusedCell.rowIndex + this.gridApi.paginationGetPageSize(), this.gridApi.paginationGetRowCount());\r\n this.columnToJump = focusedCell.column;\r\n return true;\r\n }\r\n }\r\n break;\r\n case Key.PageUp:\r\n this.lastNavigationEvent = NavigationEventEnum.KEYBOARD;\r\n if (pageIndex > 0) {\r\n this.gridApi.paginationGoToPreviousPage();\r\n const focusedCell = this.gridApi.getFocusedCell();\r\n if (focusedCell) {\r\n this.indexToJump = Math.max(focusedCell.rowIndex - this.gridApi.paginationGetPageSize(), 0);\r\n this.columnToJump = focusedCell.column;\r\n return true;\r\n }\r\n }\r\n break;\r\n case Key.End:\r\n this.lastNavigationEvent = NavigationEventEnum.KEYBOARD;\r\n if (pageIndex < (totalPages - 1)) {\r\n this.gridApi.paginationGoToLastPage();\r\n const focusedCell = this.gridApi.getFocusedCell();\r\n if (focusedCell) {\r\n this.indexToJump = this.gridApi.paginationGetRowCount() - 1;\r\n this.columnToJump = focusedCell.column;\r\n return true;\r\n }\r\n }\r\n break;\r\n case Key.Home:\r\n this.lastNavigationEvent = NavigationEventEnum.KEYBOARD;\r\n if (pageIndex > 0) {\r\n this.gridApi.paginationGoToFirstPage();\r\n const focusedCell = this.gridApi.getFocusedCell();\r\n if (focusedCell) {\r\n this.indexToJump = 0;\r\n this.columnToJump = focusedCell.column;\r\n return true;\r\n }\r\n }\r\n break;\r\n case \"KeyA\":\r\n if (params.event.ctrlKey && !params.editing) {\r\n var firstRow = this.gridApi.getFirstDisplayedRow();\r\n var lastRow = this.gridApi.getLastDisplayedRow();\r\n this.gridApi.deselectAll();\r\n if (this.props.rowModelType === \"infinite\") {\r\n for (let i = firstRow; i <= lastRow; i++) {\r\n this.gridApi.getDisplayedRowAtIndex(i)?.setSelected(true);\r\n }\r\n } else {\r\n this.gridApi.forEachNodeAfterFilter(function (node, index) {\r\n if (index >= firstRow && index <= lastRow) {\r\n node.setSelected(true);\r\n }\r\n });\r\n }\r\n }\r\n break;\r\n case \"KeyI\":\r\n if (params.event.ctrlKey) {\r\n const focusedCell = this.gridApi.getFocusedCell();\r\n const column = this.gridColumnApi?.getColumn(\"objectId\") ?? this.gridColumnApi?.getColumn(\"id\");\r\n if (focusedCell && column) {\r\n const displayedRowAtIndex = this.gridApi.getDisplayedRowAtIndex(focusedCell.rowIndex);\r\n if (displayedRowAtIndex) {\r\n ClipboardUtils.copyToClipboard(this.getValue(column, displayedRowAtIndex));\r\n }\r\n this.gridApi.setFocusedCell(focusedCell.rowIndex, focusedCell.column.getId());\r\n }\r\n }\r\n break;\r\n case \"KeyB\":\r\n if (params.event.ctrlKey) {\r\n const focusedCell = this.gridApi.getFocusedCell();\r\n const column = this.gridColumnApi?.getColumn(\"objectName\") ?? this.gridColumnApi?.getColumn(\"name\");\r\n if (focusedCell && column) {\r\n const displayedRowAtIndex1 = this.gridApi.getDisplayedRowAtIndex(focusedCell.rowIndex);\r\n if (displayedRowAtIndex1) {\r\n ClipboardUtils.copyToClipboard(this.getValue(column, displayedRowAtIndex1));\r\n }\r\n this.gridApi.setFocusedCell(focusedCell.rowIndex, focusedCell.column.getId());\r\n }\r\n }\r\n break;\r\n case \"KeyC\":\r\n if (params.event.ctrlKey && !params.editing) {\r\n const focusedCell = this.gridApi.getFocusedCell();\r\n if (focusedCell) {\r\n const displayedRowAtIndex2 = this.gridApi.getDisplayedRowAtIndex(focusedCell.rowIndex);\r\n if (displayedRowAtIndex2) {\r\n ClipboardUtils.copyToClipboard(this.getValue(focusedCell.column, displayedRowAtIndex2));\r\n }\r\n this.gridApi.setFocusedCell(focusedCell.rowIndex, focusedCell.column.getId());\r\n }\r\n }\r\n break;\r\n case Key.Enter:\r\n this.props.onEnter?.();\r\n break;\r\n }\r\n this.props.onKeyPressed?.(params.event);\r\n return false;\r\n }\r\n\r\n getValue(column: Column, row: RowNode): string {\r\n let formattedValue = this.gridApi?.getValue(column, row);\r\n if (formattedValue && typeof formattedValue === \"string\" && formattedValue.indexOf(EXPORT_SEPARATOR) > 0) {\r\n formattedValue = formattedValue.substring(0, formattedValue.indexOf(EXPORT_SEPARATOR));\r\n }\r\n const valueFormatter = column.getColDef().valueFormatter;\r\n if (valueFormatter) {\r\n const params: ValueFormatterParams = {\r\n data: row.data,\r\n node: row,\r\n column: column,\r\n colDef: column.getColDef(),\r\n api: this.gridApi as GridApi,\r\n columnApi: (this.gridApi as any).gridOptionsWrapper.columnApi,\r\n context: (this.gridApi as any).gridOptionsWrapper.getContext(),\r\n value: formattedValue\r\n };\r\n if (typeof valueFormatter === 'function') {\r\n formattedValue = valueFormatter?.(params);\r\n } else if (typeof valueFormatter === 'string') {\r\n formattedValue = at(row.data, valueFormatter)[0];\r\n }\r\n }\r\n return formattedValue;\r\n }\r\n\r\n async getExportContent(progressPopup: ProgressPopup, props: ContextMenuProps): Promise<string[][]> {\r\n if (!this.gridApi) {\r\n return [];\r\n }\r\n const model: IRowModel = this.gridApi.getModel();\r\n const tableContent: string[][] = [];\r\n const columns: ColumnInfo[] = (this.gridApi as any).columnModel.getAllDisplayedColumns().map((column: Column) => {\r\n const columnTypes = column.getColDef().type;\r\n return {\r\n column: column,\r\n displayName: column.getColDef().headerName,\r\n isDateField: columnTypes && columnTypes.indexOf(\"dateColumn\") >= 0,\r\n isDateTimeField: columnTypes && columnTypes.indexOf(\"dateTimeColumn\") >= 0\r\n };\r\n });\r\n if (columns.length === 0) {\r\n return tableContent;\r\n }\r\n tableContent.push(columns.map((column) => column.displayName));\r\n\r\n let rowCount: number;\r\n let tableNodes: RowNode[] = [];\r\n if (model.getType() === \"clientSide\") {\r\n if (props.onlySelectedNodes) {\r\n rowCount = 0;\r\n this.gridApi.forEachNodeAfterFilterAndSort((node) => {\r\n if (node.isSelected()) {\r\n tableNodes.push(node);\r\n rowCount++;\r\n }\r\n });\r\n } else {\r\n rowCount = model.getRowCount();\r\n this.gridApi.forEachNodeAfterFilterAndSort((node) => {\r\n tableNodes.push(node);\r\n });\r\n }\r\n } else {\r\n if (props.onlySelectedNodes) {\r\n const selectedNodes = this.gridApi.getSelectedNodes();\r\n rowCount = selectedNodes.length;\r\n selectedNodes.forEach((node) => {\r\n tableNodes.push(node);\r\n });\r\n tableNodes.sort((a, b) => (a.rowIndex ?? 0) > (b.rowIndex ?? 0) ? 1 : (a.rowIndex === b.rowIndex) ? 0 : -1);\r\n } else {\r\n const virtualRowCount = model.getRowCount();\r\n rowCount = virtualRowCount ? virtualRowCount : 0;\r\n }\r\n }\r\n progressPopup.setRecordCount(rowCount);\r\n\r\n let percentStep = Math.floor(rowCount / 100);\r\n if (percentStep < 100) {\r\n percentStep = 100;\r\n }\r\n\r\n if (model.getType() === \"clientSide\" || props.onlySelectedNodes) {\r\n for (let index = 0; index < tableNodes.length; index++) {\r\n const record: string[] = [];\r\n columns.forEach((column) => {\r\n let value = this.getValue(column.column, tableNodes[index]);\r\n record.push(value);\r\n });\r\n tableContent.push(record);\r\n if (index % percentStep === 0) {\r\n progressPopup.update(Math.floor(index / rowCount * 100) - 1);\r\n await TimeUtils.sleep(100);\r\n }\r\n }\r\n } else {\r\n for (let index = 0; index < rowCount; index++) {\r\n let row: RowNode | undefined = undefined;\r\n let record: any[] = [];\r\n do {\r\n record = [];\r\n do {\r\n row = model.getRow(index);\r\n if (!row) {\r\n await TimeUtils.sleep(100);\r\n }\r\n } while (!row);\r\n columns.forEach((column) => {\r\n record.push(this.getValue(column.column, row as RowNode));\r\n });\r\n if (record.filter((cell) => !!cell).length === 0) {\r\n await TimeUtils.sleep(100);\r\n }\r\n } while (record.filter((cell) => !!cell).length === 0);\r\n tableContent.push(record);\r\n if (index % percentStep === 0) {\r\n // noinspection ES6MissingAwait\r\n progressPopup.update(Math.floor(index / rowCount * 100) - 1);\r\n await TimeUtils.sleep(100);\r\n }\r\n }\r\n }\r\n // noinspection ES6MissingAwait\r\n progressPopup.update(99);\r\n await TimeUtils.sleep(300);\r\n return tableContent;\r\n }\r\n\r\n onCellFocused(event: CellFocusedEvent) {\r\n const row: RowNode | undefined = event.rowIndex !== null ? this.gridApi?.getDisplayedRowAtIndex(event.rowIndex) : undefined;\r\n if (row) {\r\n if (this.lastNavigationEvent === NavigationEventEnum.KEYBOARD && KeyboardUtils.isKeyPressed(Key.Shift) && this.lastCellFocus && this.lastCellFocus.rowIndex !== event.rowIndex) {\r\n // focusing new row with SHIFT key pressed\r\n if (!row.isSelected()) {\r\n // add to selection\r\n row.setSelected(true, false);\r\n } else if (this.lastCellFocus?.rowIndex !== null) {\r\n const lastFocusedRow: RowNode | undefined = this.gridApi?.getDisplayedRowAtIndex(this.lastCellFocus.rowIndex);\r\n if (lastFocusedRow?.isSelected()) {\r\n lastFocusedRow.setSelected(false, false);\r\n }\r\n }\r\n } else if (!row.isSelected() && !KeyboardUtils.isKeyPressed(Key.Control) && !KeyboardUtils.isKeyPressed(Key.Shift)) {\r\n row.setSelected(true, true);\r\n }\r\n }\r\n this.props.onCellFocused?.(event);\r\n this.lastCellFocus = event;\r\n }\r\n\r\n onCellMouseDown(e: CellMouseDownEvent) {\r\n this.lastNavigationEvent = NavigationEventEnum.MOUSE;\r\n // always focus clicked cell (also when using shift key)\r\n if (e.rowIndex !== null) {\r\n this.setFocusedCellDebounced(e.rowIndex, e.column, e.rowPinned !== null ? e.rowPinned : undefined);\r\n }\r\n this.props.onCellMouseDown?.(e);\r\n }\r\n\r\n setFocusedCellDebounced(rowIndex: number, column: string | Column, rowPinned: string | undefined) {\r\n this.gridApi?.setFocusedCell(rowIndex, column, rowPinned);\r\n }\r\n\r\n private onCellContextMenu(event: CellContextMenuEvent) {\r\n this.setState({contextMenuVisible: !!event});\r\n if (event.node) {\r\n if (!event.node.isSelected()) {\r\n event.node.setSelected(true, true, false);\r\n }\r\n }\r\n }\r\n\r\n private loadingOverlayRenderer(): ReactElement {\r\n if (this.props.loadingOverlayRenderer) {\r\n const loadingOverlay = this.props.loadingOverlayRenderer();\r\n if (loadingOverlay) {\r\n return loadingOverlay;\r\n }\r\n }\r\n return <div><LoadingOutlined style={{fontSize: 40, color: \"#1890ff\"}}/></div>;\r\n }\r\n\r\n private noRecordsOverlayRenderer(): ReactElement {\r\n if (this.props.noRecordsOverlayRenderer) {\r\n const noRecordsOverlay = this.props.noRecordsOverlayRenderer();\r\n if (noRecordsOverlay) {\r\n return noRecordsOverlay;\r\n }\r\n }\r\n return (\r\n <Empty description={i18n(\"No records found.\")} imageStyle={{height: \"8vh\"}}>\r\n <Button type=\"primary\" onClick={() => {\r\n if (this.props.search && this.props.search.onSearch) {\r\n this.props.search.onSearch();\r\n }\r\n }}>\r\n <SearchOutlined/> {i18n(\"Search\")}\r\n </Button>\r\n </Empty>\r\n );\r\n }\r\n\r\n private onRowDataUpdated(event: RowDataUpdatedEvent) {\r\n if (!this.gridApi) {\r\n return;\r\n }\r\n const currentPage = this.gridApi.paginationGetCurrentPage();\r\n const recordsCount = this.props.paging.pageSize >= 0 ? (this.gridApi.paginationIsLastPageFound() ? this.gridApi.paginationGetRowCount() : 0) : this.gridApi.getDisplayedRowCount();\r\n this.setState({recordsCount: recordsCount, pageIndex: currentPage});\r\n if (this.props.onRowDataUpdated) {\r\n this.props.onRowDataUpdated(event);\r\n }\r\n }\r\n\r\n private static EMPTY_STYLE: RowStyle = {}\r\n\r\n _getRowStyle(params: RowClassParams): RowStyle {\r\n const rowStyleRules = this.props.rowStyleRules;\r\n if (rowStyleRules) {\r\n const style: any = {};\r\n rowStyleRules.forEach((rowStyleRule) => {\r\n if (rowStyleRule.expression) {\r\n if (!rowStyleRuleCompiledExpressions[rowStyleRule.expression]) {\r\n rowStyleRuleCompiledExpressions[rowStyleRule.expression] = compileExpression(rowStyleRule.expression);\r\n }\r\n if (rowStyleRuleCompiledExpressions[rowStyleRule.expression](params.node.data)) {\r\n Object.assign(style, rowStyleRule.style);\r\n }\r\n } else {\r\n Object.assign(style, rowStyleRule.style);\r\n }\r\n });\r\n if (!style.color) {\r\n style.color = null;\r\n } else if (typeof style.color === \"object\") {\r\n style.color = `rgba(${style.color.r},${style.color.g},${style.color.b},${style.color.a})`;\r\n }\r\n if (!style.backgroundColor) {\r\n style.backgroundColor = \"inherit\";\r\n } else if (typeof style.backgroundColor === \"object\") {\r\n style.backgroundColor = `rgba(${style.backgroundColor.r},${style.backgroundColor.g},${style.backgroundColor.b},${style.backgroundColor.a})`;\r\n }\r\n if (!style.fontWeight) {\r\n style.fontWeight = \"inherit\";\r\n }\r\n if (style.fontSize) {\r\n const lineHeight = style.fontSize + ROW_HEIGHT_DELTA_FROM_FONT_SIZE - 2;\r\n style.fontSize = style.fontSize + \"px\";\r\n style.lineHeight = lineHeight + \"px\";\r\n } else {\r\n style.fontSize = \"inherit\";\r\n }\r\n if (this.props.getRowStyle) {\r\n const rowStyle = this.props.getRowStyle(params);\r\n if (rowStyle) {\r\n return Object.assign(style, rowStyle) as RowStyle;\r\n }\r\n }\r\n return style as RowStyle;\r\n }\r\n return DataGrid.EMPTY_STYLE;\r\n }\r\n\r\n _getRowHeight(): number {\r\n return this.state.rowHeight;\r\n }\r\n\r\n _getCellStyle(params: { colDef: ColDef }) {\r\n const fontSize = this.state.rowHeight - ROW_HEIGHT_DELTA_FROM_FONT_SIZE;\r\n const cellStyles: { [key: string]: any } = {\"font-size\": fontSize + \"px\"};\r\n if (params.colDef.type && params.colDef.type.indexOf(\"alignRight\") >= 0) {\r\n cellStyles[\"text-align\"] = \"right\";\r\n }\r\n if (params.colDef.cellRendererParams?.originalCellStyle) {\r\n const originalCellStylesOrHandler = params.colDef.cellRendererParams.originalCellStyle as {} | ((params: any) => {});\r\n if (typeof originalCellStylesOrHandler === \"object\") {\r\n Object.assign(cellStyles, originalCellStylesOrHandler);\r\n } else if (typeof originalCellStylesOrHandler === \"function\") {\r\n const originalCellStyles = originalCellStylesOrHandler(params);\r\n if (originalCellStyles) {\r\n Object.assign(cellStyles, originalCellStyles);\r\n }\r\n }\r\n }\r\n return cellStyles;\r\n }\r\n\r\n getDefaultColDefinition(colDef: ColDef | undefined): ColDef {\r\n if (colDef) {\r\n return {...colDef, suppressKeyboardEvent: this.suppressKeyboardEvent} as ColDef;\r\n } else {\r\n return {suppressKeyboardEvent: this.suppressKeyboardEvent} as ColDef;\r\n }\r\n }\r\n\r\n private getCustomFrameworkComponents(frameworkComponents: any) {\r\n let customFrameworkComponents = gridFrameworkComponents;\r\n if (frameworkComponents) {\r\n customFrameworkComponents = Object.assign(gridFrameworkComponents, frameworkComponents);\r\n }\r\n return customFrameworkComponents;\r\n }\r\n\r\n renderNavigationPanel(): ReactElement {\r\n return (\r\n <React.Fragment>\r\n {this.props.toolbar && this.props.toolbar.renderToolbar ? this.props.toolbar.renderToolbar(this.renderToolBarWithSearch()) : this.renderToolBarWithSearch()}\r\n {this.props.paging.pageSize >= 0 &&\r\n <TablePagination\r\n disabled={this.state.loading}\r\n current={this.state.pageIndex ? this.state.pageIndex + 1 : 1}\r\n pageSize={this.state.pageSize ? this.state.pageSize : 20}\r\n total={this.state.recordsCount}\r\n size=\"default\"\r\n showLessItems\r\n showTotal={(total, range) => `${range[0]}-${range[1]} ${i18n('of')} ${total}`}\r\n style={{\r\n flex: \"0 1 auto\",\r\n textAlign: \"right\",\r\n whiteSpace: \"nowrap\",\r\n marginLeft: \"24px\"\r\n }}\r\n onChange={(selectedPage, _) => {\r\n this.onGoToPage(selectedPage - 1);\r\n }}/>}\r\n {this.props.paging.pageSize < 0 && this.state.recordsCount && !this.props.toolbar?.hideRecordCount ?\r\n <span className=\"ant-pagination-total-text\" style={{\r\n flex: \"0 1 auto\",\r\n textAlign: \"right\",\r\n whiteSpace: \"nowrap\",\r\n marginLeft: \"24px\"\r\n }}>{`${this.state.viewport[0]}-${this.state.viewport[1]} ${i18n('of')} ${this.state.recordsCount}`}</span>\r\n : undefined}\r\n </React.Fragment>\r\n );\r\n }\r\n\r\n renderToolBarWithSearch(): ReactElement {\r\n return (\r\n <Input.Group key=\"filter-panel\" compact size=\"default\"\r\n style={{whiteSpace: \"nowrap\", flexGrow: 1, display: \"flex\"}}>\r\n {this.props.toolbar?.toolbarButtons}\r\n <Dropdown trigger={[\"click\"]} overlay={\r\n <ContextMenu showMilliseconds={!!this.props.showMilliseconds}\r\n showYear={!this.props.hideYear}\r\n renderer={this.props.exportMenu?.renderer}\r\n onClick={this.props.exportMenu?.onClick}\r\n getExportContent={this.getExportContent}\r\n />}\r\n disabled={this.state.loading}>\r\n <Button title={i18n(\"Export\")}>\r\n <DownloadOutlined/>\r\n </Button>\r\n </Dropdown>\r\n\r\n <Dropdown trigger={[\"click\"]}\r\n overlay={this.renderSettingsMenu()}>\r\n <Button\r\n title={i18n(\"Extended table features\")}\r\n disabled={this.state.loading}>\r\n <TableOutlined/>\r\n </Button>\r\n </Dropdown>\r\n {!this.props.search?.hidden && !this.props.search?.searchRenderer && <AutoCompleteInput\r\n style={{minWidth: 100, flexGrow: 1}}\r\n placeholder={this.props.search ? this.props.search.placeholder : undefined}\r\n stringFormatter={this.props.search ? this.props.search.stringFormatter : undefined}\r\n value={this.props.search ? this.props.search.searchString : undefined}\r\n inputReadonly={this.props.search ? this.props.search.inputReadonly : undefined}\r\n options={this.props.search ? this.props.search.searchHistory : undefined}\r\n onChange={this.props.search ? this.props.search.onChange : undefined}\r\n onSearch={this.props.search ? this.props.search.onSearch : undefined}\r\n disabled={this.state.loading || (this.props.filter && this.props.filter.columnSearchVisible)}\r\n />}\r\n {this.props.search?.searchRenderer?.()}\r\n <Button title={this.props.search?.hidden ? i18n(\"Refresh\") : i18n(\"Search\")}\r\n className={\"search-btn \" + (this.props.search && this.props.search.searchButtonClassName ? this.props.search.searchButtonClassName : \"\")}\r\n disabled={this.props.search?.searchButtonDisabled}\r\n type=\"primary\"\r\n onClick={() => {\r\n if (this.props.search && this.props.search.onSearch) {\r\n this.props.search.onSearch();\r\n }\r\n }}>\r\n {this.state.loading ? <LoadingOutlined/> : (this.props.search?.hidden ? <ReloadOutlined/> :\r\n <SearchOutlined/>)}\r\n </Button>\r\n </Input.Group>\r\n );\r\n }\r\n\r\n renderSettingsMenu(): ReactElement {\r\n let menuItems: MenuElement[] = [\r\n <Menu.Item key=\"columnFilter\"\r\n icon={<FileSearchOutlined/>}\r\n className={this.props.filter && this.props.filter.columnSearchVisible ? \"ant-dropdown-menu-item-selected\" : \"\"}\r\n title={i18n(\"Turn on/off column filter\")}>\r\n {i18n(\"Column Filter\")}\r\n </Menu.Item>,\r\n <Menu.Item key=\"autosizeAllColumns\" icon={<ColumnWidthOutlined/>}>\r\n {i18n(\"Autosize All Columns\")}\r\n </Menu.Item>,\r\n <Menu.Item key=\"columnsConfig\" icon={<ControlOutlined/>}>\r\n {i18n(\"Columns Configuration\")}\r\n </Menu.Item>,\r\n <Menu.Divider key=\"columnsAndAdvancedConfigDivider\"/>,\r\n <Menu.Item key=\"advancedConfig\" icon={<SettingOutlined/>}>\r\n {i18n(\"Advanced Settings\")}\r\n </Menu.Item>\r\n ];\r\n\r\n if (this.props.settingsMenu?.renderer) {\r\n menuItems = this.props.settingsMenu.renderer(menuItems);\r\n }\r\n\r\n return <Menu onClick={({key}) => {\r\n switch (key) {\r\n case \"columnFilter\":\r\n const visible = !(this.props.filter && this.props.filter.columnSearchVisible);\r\n this.setColumnSearchVisible(visible);\r\n break;\r\n case \"autosizeAllColumns\":\r\n this.gridColumnApi?.autoSizeAllColumns();\r\n break;\r\n case \"columnsConfig\":\r\n this.showColumnsConfig(true);\r\n break;\r\n case \"advancedConfig\":\r\n this.showTableConfiguration(true);\r\n break;\r\n default:\r\n if (this.props.settingsMenu?.onClick) {\r\n this.props.settingsMenu.onClick(key + \"\");\r\n }\r\n }\r\n }}>\r\n {menuItems}\r\n </Menu>;\r\n }\r\n\r\n private renderContextMenu(): ReactElement {\r\n return <ContextMenu onlySelectedNodes={true}\r\n showMilliseconds={!!this.props.showMilliseconds}\r\n showYear={!this.props.hideYear}\r\n renderer={this.props.contextMenu?.renderer}\r\n onClick={this.props.contextMenu?.onClick}\r\n getExportContent={this.getExportContent}\r\n />;\r\n }\r\n\r\n private getAdaptedColumnDefs(columnDefs: DataGridColDef[], floatingFilterEnabled: boolean | undefined, disableColumnDefsPreprocessing: boolean) {\r\n if (columnDefs.length === 0) {\r\n return undefined;\r\n }\r\n if (disableColumnDefsPreprocessing) {\r\n return columnDefs;\r\n }\r\n const adaptedColumnDefs = columnDefs ? columnDefs.map((columnDef) => {\r\n const {group, floatingFilter, hide, ...rest} = columnDef as DataGridColDef;\r\n let floatingFilterEnabledForColumn = !!floatingFilter;\r\n if (typeof columnDef.type === \"string\") {\r\n if (!!(this.columnTypes[columnDef.type]?.floatingFilter)) {\r\n floatingFilterEnabledForColumn = true;\r\n }\r\n } else {\r\n columnDef.type?.forEach((type) => {\r\n if (!!(this.columnTypes[type]?.floatingFilter)) {\r\n floatingFilterEnabledForColumn = true;\r\n }\r\n });\r\n\r\n }\r\n return {\r\n ...rest,\r\n floatingFilter: floatingFilterEnabledForColumn && floatingFilterEnabled,\r\n resizable: true,\r\n headerComponent: \"simpleHeader\",\r\n headerComponentParams: {\r\n onColumnsConfigVisible: this.showColumnsConfig\r\n },\r\n hide: hide === undefined ? rest.initialHide : hide,\r\n cellStyle: this._getCellStyle,\r\n cellRendererParams: columnDef.cellStyle ? {originalCellStyle: columnDef.cellStyle} : undefined\r\n };\r\n }) : undefined;\r\n if (adaptedColumnDefs) {\r\n setTimeout(() => {\r\n this.props.onColumnDefsAdapted?.(adaptedColumnDefs);\r\n }, 0);\r\n }\r\n return adaptedColumnDefs;\r\n }\r\n\r\n render() {\r\n const {\r\n onGridReady,\r\n columnDefs, disableColumnDefsPreprocessing, onColumnsChanged,\r\n paging, onPaginationChanged, onViewportChanged,\r\n selectedIds,\r\n search, toolbar,\r\n filter, onFilterChanged, onFilterModified, onCellFocused,\r\n onSortChanged, frameworkComponents,\r\n tableConfigVisible, onTableConfigVisible,\r\n noRecordsOverlayRenderer, loadingOverlayRenderer, onRowDataUpdated,\r\n rowStyleRules, onChangeRowStyleRules,\r\n defaultShowMilliseconds, onShowMilliseconds, defaultHideYear, onShowYear,\r\n suppressLoadingOverlay, defaultColDef, headerHeight,\r\n ...passedProperties\r\n } = this.props;\r\n let key: string;\r\n let paginationPageSize: number | undefined = undefined;\r\n if (paging.pageSize > 0) {\r\n paginationPageSize = paging.pageSize;\r\n passedProperties.pagination = true;\r\n key = \"paginated-table\";\r\n } else if (paging.pageSize === 0) {\r\n passedProperties.paginationAutoPageSize = true;\r\n passedProperties.pagination = true;\r\n key = \"paginated-table\";\r\n } else {\r\n // pagination is disabled\r\n passedProperties.pagination = false;\r\n key = \"non-paginated-table\";\r\n }\r\n\r\n // nejde\r\n const floatingFilterEnabled = !!filter && !!filter.columnSearchVisible;\r\n const adaptedColumnDefs = this.getAdaptedColumnDefs(columnDefs, floatingFilterEnabled, !!disableColumnDefsPreprocessing);\r\n\r\n const customFrameworkComponents = this.getCustomFrameworkComponents(frameworkComponents);\r\n const debugMode = process.env.NODE_ENV === 'development';\r\n const panelStyle = {\r\n display: \"flex\",\r\n flexFlow: \"column\",\r\n height: \"100%\",\r\n width: \"100%\",\r\n paddingBottom: 8,\r\n };\r\n if (this.props.panelStyle) {\r\n Object.assign(panelStyle, this.props.panelStyle);\r\n }\r\n const tablePanelStyle = {flex: \"1 1 auto\", marginTop: 16, overflow: \"auto\"};\r\n if (this.props.tablePanelStyle) {\r\n Object.assign(tablePanelStyle, this.props.tablePanelStyle);\r\n }\r\n\r\n return (\r\n <React.Fragment>\r\n <Card size=\"small\" bordered={false}\r\n style={{height: \"100%\"}}\r\n bodyStyle={panelStyle}>\r\n <div style={{display: \"flex\"}}>\r\n {this.renderNavigationPanel()}\r\n </div>\r\n <div style={tablePanelStyle}>\r\n <Dropdown trigger={[\"contextMenu\"]}\r\n getPopupContainer={() => {\r\n // very nasty trick how remove error of ResizeObservers infinite cycling - because popover (with dynamic size) is placed in in resizable panel\r\n return (ReactDOM.findDOMNode(this)?.parentNode ?? document.body) as HTMLElement;\r\n }}\r\n overlay={this.renderContextMenu()}\r\n overlayStyle={!this.state.contextMenuVisible ? {display: \"none\"} : undefined}\r\n onVisibleChange={(visible) => {\r\n if (!visible) {\r\n this.setState({contextMenuVisible: false});\r\n }\r\n }}\r\n >\r\n <div className=\"ag-theme-balham\" style={{width: \"100%\", height: \"100%\"}}\r\n ref={(wrapingDiv) => {\r\n this.wrappingDiv = wrapingDiv;\r\n }}>\r\n <AgGridReact\r\n key={key}\r\n debug={debugMode}\r\n paginationPageSize={paginationPageSize}\r\n maxConcurrentDatasourceRequests={this.props.rowModelType === \"infinite\" ? 1 : undefined}\r\n onGridReady={this.onGridReady}\r\n onPaginationChanged={this.onPaginationChanged}\r\n onFilterModified={this.onFilterModified}\r\n onFilterChanged={this.onFilterChanged}\r\n onSortChanged={this.onSortChanged}\r\n defaultColDef={this.getDefaultColDefinition(defaultColDef)}\r\n columnDefs={adaptedColumnDefs as ColDef[]}\r\n {...passedProperties}\r\n onCellFocused={this.onCellFocused}\r\n suppressPaginationPanel={true}\r\n getRowNodeId={getRowNodeId}\r\n frameworkComponents={customFrameworkComponents}\r\n columnTypes={this.columnTypes}\r\n onColumnVisible={this.onColumnsChanged}\r\n onColumnPinned={this.onColumnsChanged}\r\n onColumnResized={this.onColumnsChanged}\r\n onColumnMoved={this.onColumnsChanged}\r\n onCellMouseDown={this.onCellMouseDown}\r\n navigateToNextCell={this.navigateToNextCell}\r\n onViewportChanged={this.onViewportChanged}\r\n onCellContextMenu={this.onCellContextMenu}\r\n loadingOverlayComponent='loadingOverlay'\r\n noRowsOverlayComponent='noRecordsOverlay'\r\n onRowDataUpdated={this.onRowDataUpdated}\r\n context={this.table_context}\r\n rowHeight={this.state.rowHeight}\r\n getRowStyle={this._getRowStyle}\r\n getRowHeight={this._getRowHeight}\r\n headerHeight={headerHeight !== undefined ? headerHeight : this.state.rowHeight + 4}\r\n floatingFiltersHeight={this.state.rowHeight + 4}\r\n suppressLoadingOverlay={this.props.loadingOverlayRenderer ? true : this.props.suppressLoadingOverlay}\r\n >\r\n </AgGridReact>\r\n {this.state.loading && this.props.loadingOverlayRenderer &&\r\n <div className=\"ag-overlay\" aria-hidden=\"true\" ref=\"overlayWrapper\">\r\n <div className=\"ag-overlay-panel\">\r\n <div className=\"ag-overlay-wrapper ag-layout-normal ag-overlay-loading-wrapper\">\r\n <div className=\"ag-react-container\">\r\n {this.props.loadingOverlayRenderer?.()}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n </Dropdown>\r\n {this.props.tableOverlayRenderer?.()}\r\n </div>\r\n </Card>\r\n\r\n {!!this.gridApi && !!this.gridColumnApi && this.state.pageSize !== null &&\r\n <DataGridEditor dataGrid={this}\r\n gridApi={this.gridApi}\r\n gridColumnApi={this.gridColumnApi}\r\n columnDefinitions={columnDefs}\r\n columnModel={this.state.columnModel}\r\n visible={!!this.props.tableConfigVisible}\r\n onTableConfigVisible={this.showTableConfiguration}\r\n paginationPageSize={paging.pageSize}\r\n paginationDefaultPageSize={paging.defaultPageSize}\r\n currentPageSize={this.state.pageSize}\r\n showMilliseconds={!!this.props.showMilliseconds}\r\n defaultShowMilliseconds={!!this.props.defaultShowMilliseconds}\r\n showYear={!this.props.hideYear}\r\n defaultShowYear={!this.props.defaultHideYear}\r\n rowStyleRules={this.props.rowStyleRules}\r\n defaultRowStyleRules={this.props.defaultRowStyleRules}\r\n onChangeRowStyleRules={onChangeRowStyleRules}\r\n />}\r\n\r\n\r\n {!!this.gridApi && !!this.gridColumnApi && <ModalDialog\r\n mode={ModalDialogMode.OK_CANCEL}\r\n visible={this.state.columnsConfigVisible}\r\n initialWidth={700}\r\n initialHeight={this.state.columnTransferHeight}\r\n title={<span><ControlOutlined style={{\r\n color: \"#faad14\",\r\n fontSize: 22,\r\n marginRight: 16\r\n }}/>{i18n(\"Columns Configuration\")}</span>}\r\n cancelText={i18n(\"Cancel\")}\r\n onCancel={() => {\r\n if (this.gridColumnApi && this.columnModelBeforeEdit) {\r\n this.gridColumnApi.applyColumnState({state: this.columnModelBeforeEdit, applyOrder: true});\r\n delete this.columnModelBeforeEdit;\r\n this.showColumnsConfig(false);\r\n }\r\n }}\r\n onOk={() => {\r\n delete this.columnModelBeforeEdit;\r\n this.showColumnsConfig(false);\r\n }}\r\n onResize={({height}) => {\r\n this.setState({columnTransferHeight: height});\r\n }}\r\n zIndex={100}\r\n >\r\n <ColumnTransfer\r\n columnDefinitions={columnDefs as ColDef[]}\r\n columnModel={this.state.columnModel}\r\n gridApi={this.gridApi}\r\n gridColumnApi={this.gridColumnApi}\r\n height={this.state.columnTransferHeight - 154}\r\n />\r\n </ModalDialog>}\r\n\r\n </React.Fragment>\r\n );\r\n }\r\n}"]}
1
+ {"version":3,"file":"dataGrid.js","sourceRoot":"","sources":["../../../../components/grid/dataGrid.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, {ReactElement} from \"react\";\r\n\r\nimport {\r\n ColumnWidthOutlined,\r\n ControlOutlined,\r\n DownloadOutlined,\r\n FileSearchOutlined,\r\n LoadingOutlined,\r\n ReloadOutlined,\r\n SearchOutlined,\r\n SettingOutlined,\r\n TableOutlined\r\n} from \"@ant-design/icons\";\r\n\r\nimport {Button, Card, Dropdown, Empty, Input, Menu} from \"antd\";\r\nimport {AgGridReact} from \"ag-grid-react\";\r\nimport 'ag-grid-community/dist/styles/ag-grid.css';\r\nimport 'ag-grid-community/dist/styles/ag-theme-balham.css';\r\nimport 'd2coreui/style/ag-grid/aggrid-adaptations.css'\r\nimport TextColumnFilter from \"d2coreui/components/grid/filter/textColumnFilter\"\r\nimport CustomColumnFilter from \"d2coreui/components/grid/filter/customColumnFilter\"\r\nimport SimpleHeader from \"d2coreui/components/grid/header/simpleHeader\"\r\nimport DataGridEditor from \"d2coreui/components/grid/config/dataGridEditor\";\r\nimport i18n from \"d2core/i18n/i18n\";\r\nimport AutoCompleteInput from \"d2coreui/components/input/autoCompleteInput\";\r\nimport TablePagination from \"d2coreui/components/grid/panel/tablePagination\";\r\nimport isEqual from \"lodash/isEqual\"\r\nimport ContextMenu, {ContextMenuProps} from \"d2coreui/components/grid/export/contextMenu\";\r\nimport LoadingOverlay from \"d2coreui/components/grid/panel/loadingOverlay\";\r\nimport NoRecordsOverlay from \"d2coreui/components/grid/panel/noRecordsOverlay\";\r\nimport at from \"lodash/at\"\r\nimport ColumnTransfer from \"d2coreui/components/grid/config/columnTransfer\";\r\nimport cloneDeep from \"lodash/cloneDeep\";\r\nimport escape from \"lodash/escape\";\r\nimport {RangeSelector} from \"d2coreui/components/grid/cell/rangeSelector\"\r\nimport {WildcardQuickFilter} from \"d2coreui/components/grid/cell/wildcardQuickFilter\";\r\nimport {\r\n CellClassParams,\r\n CellContextMenuEvent,\r\n CellFocusedEvent,\r\n CellMouseDownEvent,\r\n CellPosition,\r\n ColDef,\r\n ColDefUtil,\r\n Column,\r\n ColumnApi,\r\n ColumnEvent,\r\n ColumnState,\r\n FilterChangedEvent,\r\n FilterModifiedEvent,\r\n GetQuickFilterTextParams,\r\n GridApi,\r\n GridOptions,\r\n GridReadyEvent,\r\n ICellRendererParams,\r\n IRowModel,\r\n NavigateToNextCellParams,\r\n PaginationChangedEvent,\r\n RowClassParams,\r\n RowDataUpdatedEvent,\r\n RowNode,\r\n RowStyle,\r\n SortChangedEvent,\r\n SuppressKeyboardEventParams,\r\n ValueFormatterParams,\r\n ValueGetterParams,\r\n ViewportChangedEvent\r\n} from \"ag-grid-community\";\r\nimport {LocaleHolder} from \"d2core/i18n/localeHolder\";\r\nimport tableDefaultRowStyleRules, {\r\n GRID_DEFAULT_FONT_SIZE,\r\n GridRowStyle,\r\n RowStyleRule\r\n} from \"d2coreui/components/grid/cell/tableDefaultRowStyleRules\";\r\nimport {ModalDialog, ModalDialogMode} from \"d2coreui/components/modal/modalDialog\";\r\nimport debounce from \"lodash/debounce\";\r\nimport {Key} from \"ts-key-enum\";\r\nimport {ClipboardUtils} from \"d2coreui/components/clipboard/clipboardUtils\";\r\nimport ProgressPopup from \"d2coreui/components/grid/export/progressPopup\";\r\nimport TimeUtils from \"d2core/utils/timeUtils\";\r\nimport KeyboardUtils from \"d2coreui/components/keyboard/keyboardUtils\";\r\nimport NumberCellEditor from \"d2coreui/components/grid/cell/numberCellEditor\";\r\nimport TextCellEditor from \"d2coreui/components/grid/cell/textCellEditor\";\r\nimport StatusTextCellEditor from \"d2coreui/components/grid/cell/statusTextCellEditor\";\r\nimport DateCellEditor from \"d2coreui/components/grid/cell/dateCellEditor\";\r\nimport memoizeOne from \"memoize-one\";\r\nimport SimpleStatusTextCellEditor from \"d2coreui/components/grid/cell/simpleStatusTextCellEditor\";\r\nimport DurationCellEditor from \"d2coreui/components/grid/cell/durationCellEditor\";\r\nimport CustomEnumCellEditor from \"d2coreui/components/grid/cell/customEnumCellEditor\";\r\nimport HexaValueCellEditor from \"d2coreui/components/grid/cell/hexaValueCellEditor\";\r\nimport HexaOctetStringCellEditor from \"d2coreui/components/grid/cell/hexaOctetStringCellEditor\";\r\nimport ReactDOM from \"react-dom\";\r\nimport {D2000UnixTimeNullValue, unixTimeToMoment} from \"d2core/types/unixTime\";\r\nimport {compileExpression} from \"filtrex\";\r\n\r\nconst gridFrameworkComponents = {\r\n customColumnFilter: CustomColumnFilter,\r\n textColumnFilter: TextColumnFilter,\r\n numberCellEditor: NumberCellEditor,\r\n textCellEditor: TextCellEditor,\r\n simpleStatusTextCellEditor: SimpleStatusTextCellEditor,\r\n statusTextCellEditor: StatusTextCellEditor,\r\n dateCellEditor: DateCellEditor,\r\n durationCellEditor: DurationCellEditor,\r\n customEnumCellEditor: CustomEnumCellEditor,\r\n hexaValueCellEditor: HexaValueCellEditor,\r\n hexaOctetStringCellEditor: HexaOctetStringCellEditor,\r\n simpleHeader: SimpleHeader,\r\n loadingOverlay: LoadingOverlay,\r\n noRecordsOverlay: NoRecordsOverlay\r\n};\r\n\r\nconst ROW_HEIGHT_DELTA_FROM_FONT_SIZE = 16;\r\n\r\nfunction getRowNodeId(item: { id: number | string }): string {\r\n return item.id + \"\";\r\n}\r\n\r\nconst rowStyleRuleCompiledExpressions: { [key: string]: (parameters: any) => any } = {};\r\n\r\n/**\r\n * Special separator for part of the column which should be exported\r\n */\r\nexport const EXPORT_SEPARATOR = \"\\n\";\r\n\r\nexport type MenuElement = JSX.Element;\r\n\r\nconst enum NavigationEventEnum {\r\n KEYBOARD,\r\n MOUSE\r\n}\r\n\r\n/**\r\n * Extended viewport change event\r\n */\r\nexport interface DataGridViewportChangedEvent extends ViewportChangedEvent {\r\n // delta number of rows table moved during paging/scrolling of the table\r\n // negative number when paged/scrolled backwards to first record, positive number when paged/scrolled forwards to last record\r\n rowsScrollingDelta: number\r\n}\r\n\r\nexport type SortMode = \"asc\" | \"desc\"\r\n\r\n/**\r\n * Represents sorting definition for one column\r\n */\r\nexport interface SortItem {\r\n colId: string;\r\n sort: SortMode;\r\n}\r\n\r\ninterface ColumnInfo {\r\n column: Column,\r\n displayName: string,\r\n isDateField: boolean\r\n isDateTimeField: boolean\r\n}\r\n\r\nexport type FilterRenderer = (value: string, changeValue: (newValue: string) => void, onSearch: () => void) => React.ReactNode\r\n\r\n/*\r\n * Extended table column definition\r\n */\r\nexport interface DataGridColDef extends Omit<ColDef, \"cellStyle\"> {\r\n // localized name of group of columns to which column belongs to\r\n group: string\r\n // context of column definition\r\n context?: any\r\n\r\n // override of ag-grid api with undefined styles\r\n cellStyle?: { [cssProperty: string]: string | number | null } | ((cellClassParams: CellClassParams) => { [cssProperty: string]: string | number | null } | undefined);\r\n\r\n\r\n // custom filter render method\r\n renderFilter?: FilterRenderer\r\n}\r\n// prevent logging warning logs of unknown column definition attributes\r\nColDefUtil.FRAMEWORK_PROPERTIES.push(\"group\", \"context\", \"cellStyle\", \"renderFilter\");\r\n\r\nexport interface DataGridFilterProps {\r\n // flag if floating filters (beneath column headers) are visible\r\n columnSearchVisible?: boolean\r\n // visibility handler for floating filters\r\n onColumnSearchVisible?: (visible: boolean) => void\r\n\r\n // returns floating filters (beneath column headers) current model (essential when filters should be pre-filled when shown from e.g. searchbox)\r\n getFilterModel?(): any\r\n\r\n // floating filter changed event (e.g. when pressing enter in floating filter textbox)\r\n onFilterChanged?(event: FilterChangedEvent): void;\r\n\r\n // floating filter modify event (e.g. when modifying value in floating filter textbox)\r\n onFilterModified?(event: FilterModifiedEvent): void;\r\n\r\n // method called when enter is pressed in the floating filter\r\n onFilterConfirmed?(): void\r\n}\r\n\r\nexport interface DataGridSearchProps {\r\n // placeholder to show in search field when no value is entered\r\n placeholder?: string\r\n // current search string\r\n searchString?: string\r\n // current search history available for search field popup\r\n searchHistory?: string[]\r\n // custom search button class name\r\n searchButtonClassName?: string\r\n // search button disabled\r\n searchButtonDisabled?: boolean\r\n // hide searchbox\r\n hidden?: boolean\r\n\r\n // custom search field renderer\r\n searchRenderer?(): React.ReactNode\r\n\r\n // disable searchbox\r\n inputReadonly?: boolean\r\n\r\n // formatting showed strings in search and history\r\n stringFormatter?(rawString: string): string\r\n\r\n // search field value changed\r\n onChange?(searchString: string): void\r\n\r\n // called when new search is invoked by pressing search button or enter in the search field\r\n onSearch?(): void\r\n}\r\n\r\n// callback called when data are loaded from backend\r\nexport type OnLoadDataCallback = (totalRecords: number) => void\r\n\r\n/**\r\n * Data Grid properties, differences to AgGrid:\r\n * columnDefinitions (columnDefs) does not support column groups for now\r\n * paginationPageSize for defining size of page is not available, use paging.pageSize instead\r\n */\r\nexport interface DataGridProps extends Omit<GridOptions, \"columnDefs\" | \"paginationPageSize\" | \"getRowStyle\" | \"cellStyle\"> {\r\n // linking grid options (used for aligned grids feature: https://www.ag-grid.com/javascript-grid-aligned-grids/)\r\n gridOptions?: GridOptions\r\n // column definitions\r\n columnDefs: DataGridColDef[]\r\n // for aligned grids functionality\r\n disableColumnDefsPreprocessing?: boolean\r\n\r\n // realColumnDefs building handler\r\n onColumnDefsAdapted?(columnDefs: ColDef[]): void\r\n\r\n // shows table configuration panel\r\n tableConfigVisible?: boolean,\r\n // shows column configuration panel\r\n columnsConfigVisible?: boolean,\r\n // style of panel surrounding datagrid\r\n panelStyle?: React.CSSProperties,\r\n // style of panel surrounding table part\r\n tablePanelStyle?: React.CSSProperties,\r\n // floating filter configuration\r\n filter?: DataGridFilterProps\r\n // search bar configuration\r\n search?: DataGridSearchProps\r\n // table paging configuration\r\n paging: {\r\n /* current size of table page:\r\n - value -1 means no paging at all (scrollbar only)\r\n - value 0 means automatic paging (page size automatically adjusted based on available height for table)\r\n - value >0 defines statically defined page size (number of rows) for the table\r\n */\r\n pageSize: number,\r\n // default size used when configuration is reverted\r\n defaultPageSize?: number,\r\n /**\r\n * Page size change handler\r\n * @param currentPageSize - current page size represents number rows available\r\n * @param definedPageSize -\r\n */\r\n onPaginationChanged?: (currentPageSize: number | null, definedPageSize: number) => void;\r\n }\r\n\r\n // load data handler - called by grid always when it needs data\r\n onLoadData(callback: OnLoadDataCallback): void\r\n\r\n // automatic focus to first cell of selected row after loading of data is complete\r\n autofocus?: boolean\r\n\r\n // handler for keys pressed in data grid\r\n onKeyPressed?(event: KeyboardEvent): void\r\n\r\n // enter handler\r\n onEnter?: () => void;\r\n\r\n // ids of currently selected rows\r\n selectedIds?: (number | string)[]\r\n\r\n // rules for styling table rows\r\n rowStyleRules: RowStyleRule[]\r\n\r\n // default rules for styling table rows, used when configuration is reverted\r\n defaultRowStyleRules?: RowStyleRule[]\r\n\r\n // row styles change handler\r\n onChangeRowStyleRules?(rowStyleRules: RowStyleRule[]): void\r\n\r\n // extra buttons rendered before the search bar\r\n toolbar?: {\r\n // custom renderer for the whole toolbar panel\r\n renderToolbar?(originalSearchBar: ReactElement): ReactElement\r\n\r\n // extra buttons rendered in toolbar\r\n toolbarButtons?: ReactElement\r\n\r\n // hide records count\r\n hideRecordCount?: boolean\r\n }\r\n\r\n // row height change handler (height is changed from table configuration screen)\r\n onRowHeightChanged?(rowHeight: number): void\r\n\r\n // columns state change handler\r\n onColumnsChanged?(columnModel: ColumnState[], event: ColumnEvent): void\r\n\r\n // table configuration panel visibility change handler\r\n onTableConfigVisible?(visible: boolean): void\r\n\r\n // column configuration panel visibility change handler\r\n onColumnsConfigVisible?(visible: boolean): void\r\n\r\n // customized renderer for displaying loading progress\r\n loadingOverlayRenderer?(): ReactElement | null\r\n\r\n // customized renderer for displaying no records information\r\n noRecordsOverlayRenderer?(): ReactElement | null\r\n\r\n // customized renderer for displaying data over table\r\n tableOverlayRenderer?(): ReactElement | null\r\n\r\n showMilliseconds?: boolean\r\n\r\n defaultShowMilliseconds?: boolean\r\n\r\n onShowMilliseconds?(show: boolean, callback: () => void): void\r\n\r\n hideYear?: boolean\r\n\r\n defaultHideYear?: boolean\r\n\r\n onShowYear?(show: boolean, callback: () => void): void\r\n\r\n // export menu configuration\r\n exportMenu?: {\r\n // overides export menu rendering\r\n renderer?(menuElements: MenuElement[]): MenuElement[]\r\n // handler for custom export menu items click\r\n onClick?(key: string): void\r\n }\r\n\r\n // settings menu configuration\r\n settingsMenu?: {\r\n // overides setting menu rendering\r\n renderer?(menuElements: MenuElement[]): MenuElement[]\r\n // handler for custom settings menu items click\r\n onClick?(key: string): void\r\n }\r\n\r\n // context menu configuration (right click on the table rows)\r\n contextMenu?: {\r\n // overides context menu rendering\r\n renderer?(menuElements: MenuElement[]): MenuElement[]\r\n // handler for custom context menu items click\r\n onClick?(key: string): void\r\n }\r\n\r\n // override of ag-grid api with undefined styles\r\n getRowStyle?(params: any): GridRowStyle | undefined\r\n}\r\n\r\ninterface DataGridState {\r\n pageIndex: number\r\n pageSize: number | null\r\n recordsCount?: number\r\n columnModel: ColumnState[]\r\n sortModel: SortItem[]\r\n tableConfigVisible: boolean\r\n columnsConfigVisible: boolean\r\n rowHeight: number\r\n // interval of record's indexes currently shown (first record has index 1)\r\n viewport: [number, number]\r\n contextMenuVisible: boolean\r\n firstLoadDone: boolean\r\n loading: boolean\r\n columnTransferHeight: number\r\n}\r\n\r\n\r\nexport default class DataGrid extends React.Component<DataGridProps, DataGridState> {\r\n public static defaultProps = {\r\n paging: {\r\n pageSize: 0,\r\n defaultPageSize: 0\r\n },\r\n rowStyleRules: tableDefaultRowStyleRules()\r\n };\r\n\r\n wildcardQuickFilter: WildcardQuickFilter;\r\n columnTypes: { [key: string]: ColDef };\r\n gridApi?: GridApi;\r\n gridColumnApi?: ColumnApi;\r\n // deep copy of columns state before opening editation of columns and its order\r\n // used in \"cancel changes\" functionality\r\n columnModelBeforeEdit?: ColumnState[];\r\n indexToJump: number | null;\r\n columnToJump: Column | null;\r\n lastCellFocus?: CellFocusedEvent;\r\n lastNavigationEvent?: NavigationEventEnum;\r\n table_context: any;\r\n private wrappingDiv: HTMLDivElement | null = null;\r\n\r\n constructor(props: Readonly<DataGridProps>) {\r\n super(props);\r\n this.state = {\r\n pageIndex: 0,\r\n pageSize: null,\r\n recordsCount: undefined,\r\n columnModel: [],\r\n sortModel: [],\r\n tableConfigVisible: !!this.props.tableConfigVisible,\r\n columnsConfigVisible: !!this.props.columnsConfigVisible,\r\n rowHeight: 28,\r\n viewport: [0, 0],\r\n contextMenuVisible: false,\r\n firstLoadDone: false,\r\n loading: false,\r\n columnTransferHeight: 500\r\n };\r\n this.indexToJump = null;\r\n this.columnToJump = null;\r\n\r\n this.onGridReady = this.onGridReady.bind(this);\r\n this.onPaginationChanged = this.onPaginationChanged.bind(this);\r\n this.onViewportChanged = this.onViewportChanged.bind(this);\r\n this.onCellContextMenu = this.onCellContextMenu.bind(this);\r\n this.onCellFocused = this.onCellFocused.bind(this);\r\n this.onCellMouseDown = this.onCellMouseDown.bind(this);\r\n this.setFocusedCellDebounced = debounce(this.setFocusedCellDebounced.bind(this), 200);\r\n this.noRecordsOverlayRenderer = this.noRecordsOverlayRenderer.bind(this);\r\n this.loadingOverlayRenderer = this.loadingOverlayRenderer.bind(this);\r\n this.changePagination = this.changePagination.bind(this);\r\n this.onColumnsChanged = this.onColumnsChanged.bind(this);\r\n this.onFilterModified = this.onFilterModified.bind(this);\r\n this.onFilterChanged = this.onFilterChanged.bind(this);\r\n this.onFilterConfirmed = this.onFilterConfirmed.bind(this);\r\n this.onSortChanged = this.onSortChanged.bind(this);\r\n this.showTableConfiguration = this.showTableConfiguration.bind(this);\r\n this.showColumnsConfig = this.showColumnsConfig.bind(this);\r\n this.navigateToNextCell = this.navigateToNextCell.bind(this);\r\n this.suppressKeyboardEvent = this.suppressKeyboardEvent.bind(this);\r\n this.onRowDataUpdated = this.onRowDataUpdated.bind(this);\r\n this._getRowStyle = this._getRowStyle.bind(this);\r\n this._getRowHeight = this._getRowHeight.bind(this);\r\n this._getCellStyle = this._getCellStyle.bind(this);\r\n this.textCustomComparator = this.textCustomComparator.bind(this);\r\n this.getExportContent = this.getExportContent.bind(this);\r\n this.getDefaultColDefinition = memoizeOne(this.getDefaultColDefinition.bind(this));\r\n this.getAdaptedColumnDefs = memoizeOne(this.getAdaptedColumnDefs.bind(this));\r\n this.getCustomFrameworkComponents = memoizeOne(this.getCustomFrameworkComponents.bind(this));\r\n\r\n this.table_context = {\r\n loadingOverlayRenderer: this.loadingOverlayRenderer,\r\n noRecordsOverlayRenderer: this.noRecordsOverlayRenderer,\r\n onFilterConfirmed: this.onFilterConfirmed,\r\n fontSize: this.state.rowHeight - ROW_HEIGHT_DELTA_FROM_FONT_SIZE,\r\n lineHeight: this.state.rowHeight - 2\r\n };\r\n this.wildcardQuickFilter = new WildcardQuickFilter();\r\n\r\n this.columnTypes = {\r\n \"localizedArrayColumn\": {\r\n cellRenderer: (params: ICellRendererParams): string => {\r\n const value = DataGrid.getCellValue<string[]>(params);\r\n if (value) {\r\n return value.map((s) => i18n(s)).join(\",\");\r\n } else {\r\n return \"\";\r\n }\r\n },\r\n filterParams: {\r\n textCustomComparator: this.textCustomComparator\r\n },\r\n filterValueGetter: function (params: ValueGetterParams): string | null {\r\n const value = DataGrid.getCellValue<string[]>(params);\r\n if (value) {\r\n return value.map((s) => i18n(s)).join(\",\");\r\n }\r\n return null;\r\n },\r\n getQuickFilterText: function (params: GetQuickFilterTextParams): string {\r\n const value = DataGrid.getCellValue<string[]>(params);\r\n if (value) {\r\n return value.map((s) => i18n(s)).join(\",\");\r\n }\r\n return \"\";\r\n }\r\n },\r\n \"numberColumn\": {\r\n cellRenderer: (params: ICellRendererParams): string => {\r\n const value = DataGrid.getCellValue<number>(params);\r\n if (value || value === 0) {\r\n return LocaleHolder.formatNumber(value);\r\n } else {\r\n return \"\";\r\n }\r\n },\r\n filterParams: {\r\n textCustomComparator: this.textCustomComparator\r\n },\r\n filterValueGetter: function (params: ValueGetterParams): string | null {\r\n const value = DataGrid.getCellValue<number>(params);\r\n if (value || value === 0) {\r\n return LocaleHolder.formatNumber(value);\r\n } else {\r\n return \"\";\r\n }\r\n },\r\n getQuickFilterText: function (params: GetQuickFilterTextParams): string {\r\n const value = DataGrid.getCellValue<number>(params);\r\n if (value || value === 0) {\r\n return LocaleHolder.formatNumber(value);\r\n } else {\r\n return \"\";\r\n }\r\n }\r\n },\r\n \"dateColumn\": {\r\n cellRenderer: (params: ICellRendererParams): string => {\r\n const value = DataGrid.getCellValue<number>(params);\r\n if (value) {\r\n if (value === D2000UnixTimeNullValue) {\r\n return \"---\";\r\n }\r\n let tooltipValue: string;\r\n tooltipValue = unixTimeToMoment(value).format(LocaleHolder.getDateTimeFormat(true, true, true));\r\n return `<span title=\"${tooltipValue}\">${unixTimeToMoment(value).format(LocaleHolder.getDateFormat(!this.props.hideYear))}</span>`\r\n } else {\r\n return \"---\";\r\n }\r\n },\r\n valueFormatter: (params: ValueFormatterParams): string => {\r\n const value = DataGrid.getCellValue<number>(params);\r\n if (value) {\r\n return unixTimeToMoment(value).format(LocaleHolder.getDateFormat(!this.props.hideYear));\r\n }\r\n return \"---\";\r\n },\r\n filterParams: {\r\n textCustomComparator: this.textCustomComparator\r\n },\r\n filterValueGetter: (params: ValueGetterParams): string | null => {\r\n const value = DataGrid.getCellValue<number>(params);\r\n if (value) {\r\n return unixTimeToMoment(value).format(LocaleHolder.getDateFormat(!this.props.hideYear));\r\n }\r\n return null;\r\n },\r\n getQuickFilterText: (params: GetQuickFilterTextParams): string => {\r\n const value = DataGrid.getCellValue<number>(params);\r\n if (value) {\r\n return unixTimeToMoment(value).format(LocaleHolder.getDateFormat(!this.props.hideYear));\r\n }\r\n return \"\";\r\n }\r\n },\r\n \"dateTimeColumn\": {\r\n cellRenderer: (params: ICellRendererParams): string => {\r\n const value = DataGrid.getCellValue<number>(params);\r\n if (value) {\r\n if (value === D2000UnixTimeNullValue) {\r\n return \"---\";\r\n }\r\n let tooltipValue: string;\r\n tooltipValue = unixTimeToMoment(value).format(LocaleHolder.getDateTimeFormat(true, true, true));\r\n return `<span title=\"${tooltipValue}\">${unixTimeToMoment(value).format(LocaleHolder.getDateTimeFormat(!this.props.hideYear, true, this.props.showMilliseconds))}</span>`;\r\n } else {\r\n return \"---\";\r\n }\r\n },\r\n valueFormatter: (params: ValueFormatterParams): string => {\r\n const value = DataGrid.getCellValue<number>(params);\r\n if (value) {\r\n return unixTimeToMoment(value).format(LocaleHolder.getDateTimeFormat(!this.props.hideYear, true, this.props.showMilliseconds));\r\n }\r\n return \"---\";\r\n },\r\n filterParams: {\r\n textCustomComparator: this.textCustomComparator\r\n },\r\n filterValueGetter: (params: ValueGetterParams): string | null => {\r\n const value = DataGrid.getCellValue<number>(params);\r\n if (value) {\r\n return unixTimeToMoment(value).format(LocaleHolder.getDateTimeFormat(!this.props.hideYear, true, this.props.showMilliseconds));\r\n }\r\n return null;\r\n },\r\n getQuickFilterText: (params: GetQuickFilterTextParams): string => {\r\n const value = DataGrid.getCellValue<number>(params);\r\n if (value) {\r\n return unixTimeToMoment(value).format(LocaleHolder.getDateTimeFormat(!this.props.hideYear, true, this.props.showMilliseconds));\r\n }\r\n return \"\";\r\n }\r\n },\r\n \"fromNowDateTimeColumn\": {\r\n cellRenderer: (params: ICellRendererParams): string => {\r\n const value = DataGrid.getCellValue<number>(params);\r\n if (value) {\r\n let tooltipValue: string;\r\n tooltipValue = unixTimeToMoment(value).format(LocaleHolder.getDateTimeFormat(true, true, true));\r\n return `<span title=\"${tooltipValue}\">${unixTimeToMoment(value).fromNow()}</span>`;\r\n } else {\r\n return \"---\";\r\n }\r\n },\r\n valueFormatter: (params: ValueFormatterParams): string => {\r\n const value = DataGrid.getCellValue<number>(params);\r\n if (value) {\r\n return unixTimeToMoment(value).format(LocaleHolder.getDateTimeFormat(!this.props.hideYear, true, this.props.showMilliseconds));\r\n }\r\n return \"---\";\r\n },\r\n filterParams: {\r\n textCustomComparator: this.textCustomComparator\r\n },\r\n filterValueGetter: (params: ValueGetterParams): string | null => {\r\n const value = DataGrid.getCellValue<number>(params);\r\n if (value) {\r\n return unixTimeToMoment(value).format(LocaleHolder.getDateTimeFormat(!this.props.hideYear, true, this.props.showMilliseconds));\r\n }\r\n return null;\r\n },\r\n getQuickFilterText: (params: GetQuickFilterTextParams): string => {\r\n const value = DataGrid.getCellValue<number>(params);\r\n if (value) {\r\n return unixTimeToMoment(value).format(LocaleHolder.getDateTimeFormat(!this.props.hideYear, true, this.props.showMilliseconds));\r\n }\r\n return \"\";\r\n }\r\n },\r\n \"escapedValueColumn\": {\r\n cellRenderer: (params: ICellRendererParams): string => {\r\n const value = DataGrid.getCellValue<any>(params);\r\n if (value) {\r\n const text = typeof value === \"string\" ? escape(value.replace(/[\\r\\n]+/g, ' ')) : value;\r\n return `<span style=\"white-space: pre\" title=\"${text}\">${text}</span>`;\r\n } else {\r\n return \"\";\r\n }\r\n },\r\n valueFormatter: (params: ValueFormatterParams): string => {\r\n const value = DataGrid.getCellValue<any>(params);\r\n if (value) {\r\n return typeof value === \"string\" ? value.replace(/[\\r\\n]+/g, ' ') : value;\r\n } else {\r\n return \"\";\r\n }\r\n }\r\n },\r\n \"textColumnFilter\": {\r\n filter: \"agTextColumnFilter\",\r\n floatingFilter: true,\r\n floatingFilterComponent: \"textColumnFilter\",\r\n filterParams: {\r\n textCustomComparator: this.textCustomComparator\r\n },\r\n floatingFilterComponentParams: {\r\n suppressFilterButton: true,\r\n },\r\n },\r\n \"textColumnServerFilter\": {\r\n filter: \"agTextColumnFilter\",\r\n floatingFilter: true,\r\n floatingFilterComponent: \"textColumnFilter\",\r\n filterParams: {\r\n buttons: ['apply'],\r\n textCustomComparator: this.textCustomComparator\r\n },\r\n floatingFilterComponentParams: {\r\n suppressFilterButton: true,\r\n },\r\n },\r\n \"customColumnServerFilter\": {\r\n filter: \"agTextColumnFilter\",\r\n floatingFilter: true,\r\n floatingFilterComponent: \"customColumnFilter\",\r\n filterParams: {\r\n buttons: ['apply'],\r\n textCustomComparator: this.textCustomComparator\r\n },\r\n floatingFilterComponentParams: {\r\n suppressFilterButton: true,\r\n },\r\n },\r\n \"alignRight\": {}\r\n };\r\n }\r\n\r\n private static getCellValue<V>(props: any): V | undefined {\r\n if (props) {\r\n if (props.colDef.field && typeof props.getValue === \"function\") {\r\n return props.getValue(props.colDef.field);\r\n }\r\n if (props.data && props.colDef && props.colDef.field) {\r\n return at<V>(props.data, props.colDef.field)[0];\r\n }\r\n if (props.value !== undefined) {\r\n return props.value;\r\n }\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n textCustomComparator(filter: string, value: any, filterText: string) {\r\n const filterTextLowerCase = filterText.toLowerCase();\r\n const valueLowerCase = value.toString().toLowerCase();\r\n switch (filter) {\r\n case 'contains':\r\n if (filterTextLowerCase.indexOf(\"*\") >= 0 || filterTextLowerCase.indexOf(\"?\") >= 0) {\r\n const wildcardFilterRegExp = this.wildcardQuickFilter.getWildcardFilterRegExp(filterTextLowerCase);\r\n if (wildcardFilterRegExp) {\r\n return wildcardFilterRegExp.test(valueLowerCase);\r\n } else {\r\n return valueLowerCase.indexOf(filterTextLowerCase) >= 0;\r\n }\r\n } else {\r\n return valueLowerCase.indexOf(filterTextLowerCase) >= 0;\r\n }\r\n case 'notContains':\r\n return valueLowerCase.indexOf(filterTextLowerCase) === -1;\r\n case 'equals':\r\n return valueLowerCase === filterTextLowerCase;\r\n case 'notEqual':\r\n // noinspection EqualityComparisonWithCoercionJS\r\n return valueLowerCase != filterTextLowerCase;\r\n case 'startsWith':\r\n return valueLowerCase.indexOf(filterTextLowerCase) === 0;\r\n case 'endsWith':\r\n var index = valueLowerCase.lastIndexOf(filterTextLowerCase);\r\n return index >= 0 && index === (valueLowerCase.length - filterTextLowerCase.length);\r\n default:\r\n // should never happen\r\n console.warn('invalid filter type ' + filter);\r\n return false;\r\n }\r\n }\r\n\r\n componentDidUpdate(prevProps: DataGridProps) {\r\n if (!this.gridApi) {\r\n return;\r\n }\r\n if (this.props.filter && prevProps.filter && this.props.filter.columnSearchVisible !== prevProps.filter.columnSearchVisible) {\r\n setTimeout(() => {\r\n if (this.gridApi) {\r\n this.gridApi.refreshHeader();\r\n if (this.props.filter && !this.props.filter.columnSearchVisible) {\r\n this.gridApi.setFilterModel(null);\r\n this.gridApi.onFilterChanged();\r\n }\r\n }\r\n }, 0);\r\n }\r\n // functionality when all data are loaded to table\r\n if (this.props.rowData && this.props.rowData !== prevProps.rowData) {\r\n // keep filter model when data are changed\r\n if (this.props.filter && this.props.filter.getFilterModel) {\r\n this.gridApi.setFilterModel(this.props.filter.getFilterModel());\r\n this.gridApi.onFilterChanged();\r\n }\r\n // keep sorting model when data are changed\r\n this.setSortModel(this.state.sortModel);\r\n this.gridApi.refreshClientSideRowModel(\"group\");\r\n this.gridApi.redrawRows();\r\n\r\n // keep selected rows when data are changed and rows are still present\r\n const selectedObjectsVisibleInGrid = this.props.rowData.filter((object) => {\r\n return this.props.selectedIds ? this.props.selectedIds.indexOf(object.id) >= 0 : false;\r\n });\r\n if (selectedObjectsVisibleInGrid.length > 0) {\r\n selectedObjectsVisibleInGrid.forEach((object) => {\r\n const rowNode = this.gridApi ? this.gridApi.getRowNode(object.id + \"\") : null;\r\n if (rowNode && !rowNode.isSelected()) {\r\n rowNode.setSelected(true, true);\r\n }\r\n });\r\n } else {\r\n this.gridApi.deselectAll();\r\n }\r\n }\r\n // functionality when chunks of data are dynamically loaded from server\r\n if (this.props.datasource && this.props.datasource !== prevProps.datasource) {\r\n // resets grid data\r\n this.gridApi.setDatasource(this.props.datasource);\r\n }\r\n this.updateRowHeight();\r\n }\r\n\r\n public setColumnState(columnModel: ColumnState[]) {\r\n const columnStates: ColumnState[] = [];\r\n if (columnModel) {\r\n columnModel.forEach((item: ColumnState) => {\r\n const columnState = {...item};\r\n item.sortIndex = undefined;\r\n item.sort = undefined\r\n columnStates.push(columnState);\r\n });\r\n }\r\n this.gridColumnApi?.applyColumnState({state: columnStates, defaultState: {sort: null}, applyOrder: true});\r\n }\r\n\r\n public setSortModel(sortModel: SortItem[]) {\r\n const columnState: ColumnState[] = [];\r\n if (sortModel) {\r\n sortModel.forEach((item: any, index: number) => {\r\n columnState.push({\r\n colId: item.colId,\r\n sort: item.sort,\r\n sortIndex: index\r\n });\r\n });\r\n }\r\n this.gridColumnApi?.applyColumnState({state: columnState, defaultState: {sort: null}, applyOrder: true});\r\n }\r\n\r\n public getSortModel(): SortItem[] {\r\n const columnState = this.gridColumnApi?.getColumnState() ?? [];\r\n const filteredStates = columnState?.filter(item => item.sort != null);\r\n const indexes: { [colId: string]: number; } = {};\r\n filteredStates.forEach((state) => {\r\n if (state.colId) {\r\n indexes[state.colId] = state.sortIndex as number;\r\n }\r\n });\r\n const res = filteredStates.map(s => {\r\n return {colId: s.colId, sort: s.sort} as SortItem;\r\n });\r\n res.sort((a: any, b: any) => indexes[a.colId] - indexes[b.colId]);\r\n return res;\r\n\r\n }\r\n\r\n updateRowHeight() {\r\n let rowHeight = this.calculateRowHeight(this.props.rowStyleRules);\r\n if (rowHeight && rowHeight !== this.state.rowHeight) {\r\n this.changeRowHeight(rowHeight);\r\n }\r\n }\r\n\r\n calculateRowHeight(rowStyleRules?: RowStyleRule[]): number | undefined {\r\n let rowHeight;\r\n if (rowStyleRules) {\r\n for (let i = 0; i < rowStyleRules.length; i++) {\r\n if (rowStyleRules[i].key === \"table-font-size\") {\r\n const currentFontSize = rowStyleRules[i].style.fontSize;\r\n if (typeof currentFontSize === \"number\") {\r\n rowHeight = (currentFontSize ? currentFontSize : GRID_DEFAULT_FONT_SIZE) + ROW_HEIGHT_DELTA_FROM_FONT_SIZE;\r\n } else {\r\n rowHeight = GRID_DEFAULT_FONT_SIZE + ROW_HEIGHT_DELTA_FROM_FONT_SIZE;\r\n }\r\n }\r\n }\r\n }\r\n return rowHeight;\r\n }\r\n\r\n /**\r\n * Handling setting table gridEditor\r\n */\r\n static getDerivedStateFromProps(props: DataGridProps, state: DataGridState) {\r\n const newState: Partial<DataGridState> = {};\r\n if (props.tableConfigVisible === true || props.tableConfigVisible === false) {\r\n if (props.tableConfigVisible !== state.tableConfigVisible) {\r\n newState.tableConfigVisible = props.tableConfigVisible;\r\n }\r\n }\r\n return newState;\r\n }\r\n\r\n onGridReady(gridReadyEvent: GridReadyEvent): void {\r\n const gridApi = gridReadyEvent.api;\r\n const gridColumnApi = gridReadyEvent.columnApi;\r\n if (!this.gridApi || this.gridApi !== gridApi) {\r\n // row selection plugin hook\r\n const rangeSelector = new RangeSelector(this.wrappingDiv);\r\n rangeSelector.init(gridApi, gridColumnApi);\r\n // altered quick filter hook for supporting wildcard matching\r\n this.wildcardQuickFilter.adaptFilterEngine(gridApi);\r\n this.gridApi = gridApi;\r\n this.gridColumnApi = gridColumnApi;\r\n if (this.props.onGridReady) {\r\n this.props.onGridReady(gridReadyEvent);\r\n }\r\n this.setState({\r\n sortModel: this.getSortModel(),\r\n columnModel: this.gridColumnApi.getColumnState(),\r\n });\r\n this.updateRowHeight();\r\n }\r\n }\r\n\r\n onPaginationChanged(event: PaginationChangedEvent) {\r\n if (!this.gridApi) {\r\n this.onGridReady({type: \"gridReady\", api: event.api, columnApi: event.columnApi});\r\n }\r\n if (this.gridApi) {\r\n const currentPage = this.gridApi.paginationGetCurrentPage();\r\n const currentPageSize = this.gridApi.paginationGetPageSize();\r\n let recordsCount = this.props.paging.pageSize >= 0 ? (this.gridApi.paginationIsLastPageFound() ? this.gridApi.paginationGetRowCount() : 0) : this.gridApi.getDisplayedRowCount();\r\n // process only when onGridReady passed\r\n if (this.state.pageSize !== currentPageSize) {\r\n if (this.props.paging.onPaginationChanged) {\r\n this.props.paging.onPaginationChanged(currentPageSize, this.props.paging.pageSize);\r\n }\r\n if (!this.state.firstLoadDone) {\r\n this.loadData();\r\n this.setState({firstLoadDone: true});\r\n }\r\n }\r\n this.setState({pageSize: currentPageSize, recordsCount: recordsCount, pageIndex: currentPage});\r\n if (this.indexToJump !== null && this.columnToJump !== null) {\r\n this.gridApi.setFocusedCell(this.indexToJump, this.columnToJump);\r\n this.indexToJump = null;\r\n }\r\n }\r\n if (this.props.onPaginationChanged) {\r\n this.props.onPaginationChanged(event);\r\n }\r\n }\r\n\r\n onViewportChanged(event: ViewportChangedEvent) {\r\n const dataGridEvent = event as DataGridViewportChangedEvent;\r\n // calculation of the flag that last record is shown\r\n const rowsScrollingDelta = this.state.viewport[1] ? event.lastRow + 1 - this.state.viewport[1] : event.lastRow + 1;\r\n dataGridEvent.rowsScrollingDelta = rowsScrollingDelta;\r\n this.setState({viewport: [event.firstRow + 1, event.lastRow + 1]});\r\n if (this.props.onViewportChanged) {\r\n this.props.onViewportChanged(event);\r\n }\r\n }\r\n\r\n changePagination(pageSize: number): void {\r\n if (!this.gridApi) {\r\n return;\r\n }\r\n const gridApiWithPrivateAccess = this.gridApi as any;\r\n if (pageSize > 0) {\r\n gridApiWithPrivateAccess.gridOptionsWrapper.setProperty('pagination', true);\r\n gridApiWithPrivateAccess.gridOptionsWrapper.setProperty('paginationAutoPageSize', false);\r\n this.gridApi.paginationSetPageSize(pageSize);\r\n if (this.props.paging.onPaginationChanged) {\r\n this.props.paging.onPaginationChanged(pageSize, pageSize);\r\n }\r\n } else if (pageSize === 0) {\r\n gridApiWithPrivateAccess.gridOptionsWrapper.setProperty('pagination', true);\r\n gridApiWithPrivateAccess.gridOptionsWrapper.setProperty('paginationAutoPageSize', true);\r\n // handling AG-Grid bug caused by different previous pageSize state\r\n const rowHeight = gridApiWithPrivateAccess.gridOptionsWrapper.getRowHeightAsNumber();\r\n // const rowHeight = this.state.rowHeight;\r\n const bodyHeight = gridApiWithPrivateAccess.ctrlsService.centerRowContainerCtrl.viewportSizeFeature.getBodyHeight();\r\n let availablePageSize = 1000;\r\n if (bodyHeight > 0) {\r\n availablePageSize = Math.floor(bodyHeight / rowHeight);\r\n }\r\n if (this.props.paging.pageSize > availablePageSize) {\r\n this.gridApi.paginationSetPageSize(1);\r\n } else {\r\n // special hack to remove setting page size\r\n this.gridApi.paginationSetPageSize(null as unknown as number);\r\n }\r\n if (this.props.paging && this.props.paging.onPaginationChanged) {\r\n this.props.paging.onPaginationChanged(this.state.pageSize, 0);\r\n }\r\n } else {\r\n gridApiWithPrivateAccess.gridOptionsWrapper.setProperty('pagination', false);\r\n gridApiWithPrivateAccess.gridOptionsWrapper.setProperty('paginationAutoPageSize', false);\r\n if (this.props.paging && this.props.paging.onPaginationChanged) {\r\n this.props.paging.onPaginationChanged(this.state.pageSize, -1);\r\n }\r\n }\r\n }\r\n\r\n showMilliseconds(showMilis: boolean) {\r\n this.props.onShowMilliseconds?.(showMilis, () => {\r\n if (!this.gridApi) {\r\n return;\r\n }\r\n if (!this.props.rowModelType || this.props.rowModelType === \"clientSide\") {\r\n // table is shown\r\n this.gridApi.refreshClientSideRowModel(\"group\");\r\n }\r\n this.gridApi.redrawRows();\r\n });\r\n }\r\n\r\n showYear(showYear: boolean) {\r\n this.props.onShowYear?.(showYear, () => {\r\n if (!this.gridApi) {\r\n return;\r\n }\r\n if (!this.props.rowModelType || this.props.rowModelType === \"clientSide\") {\r\n // table is shown\r\n this.gridApi.refreshClientSideRowModel(\"group\");\r\n }\r\n this.gridApi.redrawRows();\r\n });\r\n }\r\n\r\n changeRowHeight(rowHeight: number) {\r\n this.setState({rowHeight: rowHeight}, () => {\r\n if (this.gridApi) {\r\n if (this.props.headerHeight === undefined) {\r\n this.gridApi.setHeaderHeight(rowHeight + 4);\r\n }\r\n if (this.props.floatingFiltersHeight === undefined) {\r\n this.gridApi.setFloatingFiltersHeight(rowHeight + 4);\r\n }\r\n (this.gridApi as any).gridOptionsWrapper.setProperty('rowHeight', rowHeight);\r\n this.gridApi.resetRowHeights();\r\n this.gridApi.refreshHeader();\r\n this.gridApi.redrawRows();\r\n if (this.props.rowModelType === \"infinite\" && this.props.datasource) {\r\n // redraws all server side loaded table data\r\n this.gridApi.setDatasource(this.props.datasource)\r\n }\r\n }\r\n if (this.props.onRowHeightChanged) {\r\n this.props.onRowHeightChanged(rowHeight);\r\n }\r\n });\r\n }\r\n\r\n onGoToPage(pageIndex: number) {\r\n if (this.gridApi) {\r\n this.gridApi.paginationGoToPage(pageIndex);\r\n }\r\n }\r\n\r\n loadData(callback?: () => void) {\r\n if (!this.gridApi) {\r\n return;\r\n }\r\n this.setState({loading: true});\r\n if (!this.props.loadingOverlayRenderer) {\r\n this.gridApi.showLoadingOverlay();\r\n }\r\n this.props.onLoadData((totalRecords) => {\r\n if (!this.gridApi) {\r\n return;\r\n }\r\n this.gridApi.hideOverlay();\r\n this.setState({loading: false});\r\n if (callback) {\r\n callback();\r\n }\r\n if (totalRecords === 0) {\r\n setTimeout(() => {\r\n if (!this.isActive()) {\r\n return;\r\n }\r\n this.gridApi?.showNoRowsOverlay();\r\n }, 400);\r\n }\r\n if (this.props.autofocus) {\r\n setTimeout(() => {\r\n if (!this.isActive()) {\r\n return;\r\n }\r\n const columnModel = this.gridColumnApi?.getColumnState();\r\n let columnIdToFocus = columnModel?.[0]?.colId || \"name\";\r\n const selectedNodes = this.gridApi?.getSelectedNodes();\r\n const selectedRowIndex: number = (selectedNodes && selectedNodes.length > 0 && selectedNodes[selectedNodes.length - 1].rowIndex) || 0;\r\n this.gridApi?.setFocusedCell(selectedRowIndex, columnIdToFocus);\r\n }, 200);\r\n }\r\n });\r\n }\r\n\r\n isActive(): boolean {\r\n return !!this.gridApi && !(this.gridApi as any).destroyCalled;\r\n }\r\n\r\n onColumnsChanged(event: ColumnEvent) {\r\n const columnModel = event.columnApi.getColumnState();\r\n if (this.props.onColumnsChanged) {\r\n this.props.onColumnsChanged(columnModel, event);\r\n }\r\n this.setState({columnModel: columnModel});\r\n }\r\n\r\n setColumnSearchVisible(visible: boolean) {\r\n if (this.gridApi && this.props.filter && this.props.filter.getFilterModel) {\r\n this.gridApi.setFilterModel(this.props.filter.getFilterModel());\r\n }\r\n if (this.props.filter && this.props.filter.onColumnSearchVisible) {\r\n this.props.filter.onColumnSearchVisible(visible);\r\n }\r\n }\r\n\r\n private onFilterModified(event: FilterModifiedEvent) {\r\n if (this.props.filter && this.props.filter.onFilterModified) {\r\n this.props.filter.onFilterModified(event);\r\n }\r\n }\r\n\r\n private onFilterChanged(event: FilterChangedEvent) {\r\n if (this.props.filter && this.props.filter.onFilterChanged) {\r\n this.props.filter.onFilterChanged(event);\r\n }\r\n }\r\n\r\n private onFilterConfirmed() {\r\n if (this.props.filter && this.props.filter.onFilterConfirmed) {\r\n this.props.filter.onFilterConfirmed();\r\n }\r\n }\r\n\r\n private onSortChanged(event: SortChangedEvent) {\r\n if (this.props.onSortChanged && this.gridApi) {\r\n const currentSortModel = this.getSortModel() as SortItem[];\r\n if (!isEqual(this.state.sortModel, currentSortModel)) {\r\n // propagate only changes to sorting\r\n this.setState({sortModel: currentSortModel}, () => {\r\n if (this.props.onSortChanged) {\r\n this.props.onSortChanged(event);\r\n }\r\n });\r\n }\r\n }\r\n }\r\n\r\n showTableConfiguration(show: boolean) {\r\n if (this.props.onTableConfigVisible) {\r\n this.props.onTableConfigVisible(show);\r\n }\r\n this.setState({tableConfigVisible: show}, () => {\r\n if (this.gridApi && !this.state.tableConfigVisible) {\r\n // redrawing rows after closing table configuration panel, probably not required any more,\r\n // because config panel and table is shown simultaneously\r\n if (!this.props.rowModelType || this.props.rowModelType === \"clientSide\") {\r\n // table is shown\r\n this.gridApi.refreshClientSideRowModel(\"group\");\r\n }\r\n this.gridApi.redrawRows();\r\n }\r\n });\r\n }\r\n\r\n showColumnsConfig(show: boolean) {\r\n if (this.props.onColumnsConfigVisible) {\r\n this.props.onColumnsConfigVisible(show);\r\n }\r\n this.columnModelBeforeEdit = cloneDeep(this.state.columnModel);\r\n this.setState({columnsConfigVisible: show});\r\n }\r\n\r\n private navigateToNextCell(params: NavigateToNextCellParams): CellPosition {\r\n this.lastNavigationEvent = NavigationEventEnum.KEYBOARD;\r\n var suggestedNextCell = params.nextCellPosition;\r\n if (!this.gridApi) {\r\n return suggestedNextCell ?? params.previousCellPosition;\r\n }\r\n const pageIndex = this.gridApi.paginationGetCurrentPage();\r\n const totalPages = this.gridApi.paginationGetTotalPages();\r\n var previousCell = params.previousCellPosition;\r\n switch (params.event?.code) {\r\n case Key.ArrowDown:\r\n if ((previousCell.rowIndex + 1) >= this.gridApi.getModel().getRowCount()) {\r\n if (pageIndex < (totalPages - 1)) {\r\n this.onGoToPage(pageIndex + 1);\r\n return {\r\n rowIndex: 0,\r\n column: previousCell.column,\r\n rowPinned: previousCell.rowPinned\r\n };\r\n } else {\r\n return {\r\n rowIndex: previousCell.rowIndex,\r\n column: previousCell.column,\r\n rowPinned: previousCell.rowPinned\r\n };\r\n }\r\n\r\n }\r\n break;\r\n case Key.ArrowUp:\r\n if ((previousCell.rowIndex - 1) < 0) {\r\n if (pageIndex > 0) {\r\n this.onGoToPage(pageIndex - 1);\r\n return {\r\n rowIndex: this.gridApi.getModel().getRowCount() - 1,\r\n column: previousCell.column,\r\n rowPinned: previousCell.rowPinned\r\n };\r\n } else {\r\n return {\r\n rowIndex: previousCell.rowIndex,\r\n column: previousCell.column,\r\n rowPinned: previousCell.rowPinned\r\n };\r\n }\r\n }\r\n break;\r\n }\r\n return suggestedNextCell ?? params.previousCellPosition;\r\n }\r\n\r\n private suppressKeyboardEvent(params: SuppressKeyboardEventParams): boolean {\r\n if (!this.gridApi) {\r\n return false;\r\n }\r\n const pageIndex = this.gridApi.paginationGetCurrentPage();\r\n const totalPages = this.gridApi.paginationGetTotalPages();\r\n switch (params.event.code) {\r\n case Key.ArrowDown:\r\n case Key.ArrowUp:\r\n case Key.ArrowLeft:\r\n case Key.ArrowRight:\r\n if (params.editing && params.event.altKey) {\r\n const focusedCell = this.gridApi.getFocusedCell();\r\n if (focusedCell) {\r\n let indexToJump: number;\r\n let columnToJump: Column;\r\n if (params.event.code === Key.ArrowDown) {\r\n indexToJump = focusedCell.rowIndex + 1;\r\n columnToJump = focusedCell.column;\r\n if (indexToJump >= this.gridApi.getModel().getRowCount()) {\r\n if (pageIndex < (totalPages - 1)) {\r\n this.onGoToPage(pageIndex + 1);\r\n indexToJump = 0\r\n } else {\r\n indexToJump = focusedCell.rowIndex;\r\n }\r\n }\r\n this.lastNavigationEvent = NavigationEventEnum.KEYBOARD;\r\n this.indexToJump = indexToJump;\r\n this.columnToJump = columnToJump;\r\n setTimeout(() => {\r\n this.gridApi?.startEditingCell({\r\n rowIndex: indexToJump,\r\n colKey: columnToJump,\r\n keyPress: 13 /*Enter*/\r\n });\r\n }, 0);\r\n return true;\r\n } else if (params.event.code === Key.ArrowUp) {\r\n indexToJump = focusedCell.rowIndex - 1;\r\n columnToJump = focusedCell.column;\r\n if (indexToJump < 0) {\r\n if (pageIndex > 0) {\r\n this.onGoToPage(pageIndex - 1);\r\n indexToJump = this.gridApi.getModel().getRowCount() - 1;\r\n } else {\r\n indexToJump = focusedCell.rowIndex;\r\n }\r\n }\r\n this.lastNavigationEvent = NavigationEventEnum.KEYBOARD;\r\n this.indexToJump = indexToJump;\r\n this.columnToJump = columnToJump;\r\n setTimeout(() => {\r\n this.gridApi?.startEditingCell({\r\n rowIndex: indexToJump,\r\n colKey: columnToJump,\r\n keyPress: 13 /*Enter*/\r\n });\r\n }, 0);\r\n return true;\r\n } else if (params.event.code === Key.ArrowLeft) {\r\n this.gridApi.tabToPreviousCell();\r\n break;\r\n } else /*Key.ArrowRight*/ {\r\n this.gridApi.tabToNextCell();\r\n break;\r\n }\r\n }\r\n }\r\n break;\r\n case Key.PageDown:\r\n this.lastNavigationEvent = NavigationEventEnum.KEYBOARD;\r\n if (pageIndex < (totalPages - 1)) {\r\n this.gridApi.paginationGoToNextPage();\r\n const focusedCell = this.gridApi.getFocusedCell();\r\n if (focusedCell) {\r\n this.indexToJump = Math.min(focusedCell.rowIndex + this.gridApi.paginationGetPageSize(), this.gridApi.paginationGetRowCount());\r\n this.columnToJump = focusedCell.column;\r\n return true;\r\n }\r\n }\r\n break;\r\n case Key.PageUp:\r\n this.lastNavigationEvent = NavigationEventEnum.KEYBOARD;\r\n if (pageIndex > 0) {\r\n this.gridApi.paginationGoToPreviousPage();\r\n const focusedCell = this.gridApi.getFocusedCell();\r\n if (focusedCell) {\r\n this.indexToJump = Math.max(focusedCell.rowIndex - this.gridApi.paginationGetPageSize(), 0);\r\n this.columnToJump = focusedCell.column;\r\n return true;\r\n }\r\n }\r\n break;\r\n case Key.End:\r\n this.lastNavigationEvent = NavigationEventEnum.KEYBOARD;\r\n if (pageIndex < (totalPages - 1)) {\r\n this.gridApi.paginationGoToLastPage();\r\n const focusedCell = this.gridApi.getFocusedCell();\r\n if (focusedCell) {\r\n this.indexToJump = this.gridApi.paginationGetRowCount() - 1;\r\n this.columnToJump = focusedCell.column;\r\n return true;\r\n }\r\n }\r\n break;\r\n case Key.Home:\r\n this.lastNavigationEvent = NavigationEventEnum.KEYBOARD;\r\n if (pageIndex > 0) {\r\n this.gridApi.paginationGoToFirstPage();\r\n const focusedCell = this.gridApi.getFocusedCell();\r\n if (focusedCell) {\r\n this.indexToJump = 0;\r\n this.columnToJump = focusedCell.column;\r\n return true;\r\n }\r\n }\r\n break;\r\n case \"KeyA\":\r\n if (params.event.ctrlKey && !params.editing) {\r\n var firstRow = this.gridApi.getFirstDisplayedRow();\r\n var lastRow = this.gridApi.getLastDisplayedRow();\r\n this.gridApi.deselectAll();\r\n if (this.props.rowModelType === \"infinite\") {\r\n for (let i = firstRow; i <= lastRow; i++) {\r\n this.gridApi.getDisplayedRowAtIndex(i)?.setSelected(true);\r\n }\r\n } else {\r\n this.gridApi.forEachNodeAfterFilter(function (node, index) {\r\n if (index >= firstRow && index <= lastRow) {\r\n node.setSelected(true);\r\n }\r\n });\r\n }\r\n }\r\n break;\r\n case \"KeyI\":\r\n if (params.event.ctrlKey) {\r\n const focusedCell = this.gridApi.getFocusedCell();\r\n const column = this.gridColumnApi?.getColumn(\"objectId\") ?? this.gridColumnApi?.getColumn(\"id\");\r\n if (focusedCell && column) {\r\n const displayedRowAtIndex = this.gridApi.getDisplayedRowAtIndex(focusedCell.rowIndex);\r\n if (displayedRowAtIndex) {\r\n ClipboardUtils.copyToClipboard(this.getValue(column, displayedRowAtIndex));\r\n }\r\n this.gridApi.setFocusedCell(focusedCell.rowIndex, focusedCell.column.getId());\r\n }\r\n }\r\n break;\r\n case \"KeyB\":\r\n if (params.event.ctrlKey) {\r\n const focusedCell = this.gridApi.getFocusedCell();\r\n const column = this.gridColumnApi?.getColumn(\"objectName\") ?? this.gridColumnApi?.getColumn(\"name\");\r\n if (focusedCell && column) {\r\n const displayedRowAtIndex1 = this.gridApi.getDisplayedRowAtIndex(focusedCell.rowIndex);\r\n if (displayedRowAtIndex1) {\r\n ClipboardUtils.copyToClipboard(this.getValue(column, displayedRowAtIndex1));\r\n }\r\n this.gridApi.setFocusedCell(focusedCell.rowIndex, focusedCell.column.getId());\r\n }\r\n }\r\n break;\r\n case \"KeyC\":\r\n if (params.event.ctrlKey && !params.editing) {\r\n const focusedCell = this.gridApi.getFocusedCell();\r\n if (focusedCell) {\r\n const displayedRowAtIndex2 = this.gridApi.getDisplayedRowAtIndex(focusedCell.rowIndex);\r\n if (displayedRowAtIndex2) {\r\n ClipboardUtils.copyToClipboard(this.getValue(focusedCell.column, displayedRowAtIndex2));\r\n }\r\n this.gridApi.setFocusedCell(focusedCell.rowIndex, focusedCell.column.getId());\r\n }\r\n }\r\n break;\r\n case Key.Enter:\r\n this.props.onEnter?.();\r\n break;\r\n }\r\n this.props.onKeyPressed?.(params.event);\r\n return false;\r\n }\r\n\r\n getValue(column: Column, row: RowNode): string {\r\n let formattedValue = this.gridApi?.getValue(column, row);\r\n if (formattedValue && typeof formattedValue === \"string\" && formattedValue.indexOf(EXPORT_SEPARATOR) > 0) {\r\n formattedValue = formattedValue.substring(0, formattedValue.indexOf(EXPORT_SEPARATOR));\r\n }\r\n const valueFormatter = column.getColDef().valueFormatter;\r\n if (valueFormatter) {\r\n const params: ValueFormatterParams = {\r\n data: row.data,\r\n node: row,\r\n column: column,\r\n colDef: column.getColDef(),\r\n api: this.gridApi as GridApi,\r\n columnApi: (this.gridApi as any).gridOptionsWrapper.columnApi,\r\n context: (this.gridApi as any).gridOptionsWrapper.getContext(),\r\n value: formattedValue\r\n };\r\n if (typeof valueFormatter === 'function') {\r\n formattedValue = valueFormatter?.(params);\r\n } else if (typeof valueFormatter === 'string') {\r\n formattedValue = at(row.data, valueFormatter)[0];\r\n }\r\n }\r\n return formattedValue;\r\n }\r\n\r\n async getExportContent(progressPopup: ProgressPopup, props: ContextMenuProps): Promise<string[][]> {\r\n if (!this.gridApi) {\r\n return [];\r\n }\r\n const model: IRowModel = this.gridApi.getModel();\r\n const tableContent: string[][] = [];\r\n const columns: ColumnInfo[] = (this.gridApi as any).columnModel.getAllDisplayedColumns().map((column: Column) => {\r\n const columnTypes = column.getColDef().type;\r\n return {\r\n column: column,\r\n displayName: column.getColDef().headerName,\r\n isDateField: columnTypes && columnTypes.indexOf(\"dateColumn\") >= 0,\r\n isDateTimeField: columnTypes && columnTypes.indexOf(\"dateTimeColumn\") >= 0\r\n };\r\n });\r\n if (columns.length === 0) {\r\n return tableContent;\r\n }\r\n tableContent.push(columns.map((column) => column.displayName));\r\n\r\n let rowCount: number;\r\n let tableNodes: RowNode[] = [];\r\n if (model.getType() === \"clientSide\") {\r\n if (props.onlySelectedNodes) {\r\n rowCount = 0;\r\n this.gridApi.forEachNodeAfterFilterAndSort((node) => {\r\n if (node.isSelected()) {\r\n tableNodes.push(node);\r\n rowCount++;\r\n }\r\n });\r\n } else {\r\n rowCount = model.getRowCount();\r\n this.gridApi.forEachNodeAfterFilterAndSort((node) => {\r\n tableNodes.push(node);\r\n });\r\n }\r\n } else {\r\n if (props.onlySelectedNodes) {\r\n const selectedNodes = this.gridApi.getSelectedNodes();\r\n rowCount = selectedNodes.length;\r\n selectedNodes.forEach((node) => {\r\n tableNodes.push(node);\r\n });\r\n tableNodes.sort((a, b) => (a.rowIndex ?? 0) > (b.rowIndex ?? 0) ? 1 : (a.rowIndex === b.rowIndex) ? 0 : -1);\r\n } else {\r\n const virtualRowCount = model.getRowCount();\r\n rowCount = virtualRowCount ? virtualRowCount : 0;\r\n }\r\n }\r\n progressPopup.setRecordCount(rowCount);\r\n\r\n let percentStep = Math.floor(rowCount / 100);\r\n if (percentStep < 100) {\r\n percentStep = 100;\r\n }\r\n\r\n if (model.getType() === \"clientSide\" || props.onlySelectedNodes) {\r\n for (let index = 0; index < tableNodes.length; index++) {\r\n const record: string[] = [];\r\n columns.forEach((column) => {\r\n let value = this.getValue(column.column, tableNodes[index]);\r\n record.push(value);\r\n });\r\n tableContent.push(record);\r\n if (index % percentStep === 0) {\r\n progressPopup.update(Math.floor(index / rowCount * 100) - 1);\r\n await TimeUtils.sleep(100);\r\n }\r\n }\r\n } else {\r\n for (let index = 0; index < rowCount; index++) {\r\n let row: RowNode | undefined = undefined;\r\n let record: any[] = [];\r\n do {\r\n record = [];\r\n do {\r\n row = model.getRow(index);\r\n if (!row) {\r\n await TimeUtils.sleep(100);\r\n }\r\n } while (!row);\r\n columns.forEach((column) => {\r\n record.push(this.getValue(column.column, row as RowNode));\r\n });\r\n if (record.filter((cell) => !!cell).length === 0) {\r\n await TimeUtils.sleep(100);\r\n }\r\n } while (record.filter((cell) => !!cell).length === 0);\r\n tableContent.push(record);\r\n if (index % percentStep === 0) {\r\n // noinspection ES6MissingAwait\r\n progressPopup.update(Math.floor(index / rowCount * 100) - 1);\r\n await TimeUtils.sleep(100);\r\n }\r\n }\r\n }\r\n // noinspection ES6MissingAwait\r\n progressPopup.update(99);\r\n await TimeUtils.sleep(300);\r\n return tableContent;\r\n }\r\n\r\n onCellFocused(event: CellFocusedEvent) {\r\n const row: RowNode | undefined = event.rowIndex !== null ? this.gridApi?.getDisplayedRowAtIndex(event.rowIndex) : undefined;\r\n if (row) {\r\n if (this.lastNavigationEvent === NavigationEventEnum.KEYBOARD && KeyboardUtils.isKeyPressed(Key.Shift) && this.lastCellFocus && this.lastCellFocus.rowIndex !== event.rowIndex) {\r\n // focusing new row with SHIFT key pressed\r\n if (!row.isSelected()) {\r\n // add to selection\r\n row.setSelected(true, false);\r\n } else if (this.lastCellFocus?.rowIndex !== null) {\r\n const lastFocusedRow: RowNode | undefined = this.gridApi?.getDisplayedRowAtIndex(this.lastCellFocus.rowIndex);\r\n if (lastFocusedRow?.isSelected()) {\r\n lastFocusedRow.setSelected(false, false);\r\n }\r\n }\r\n } else if (!row.isSelected() && !KeyboardUtils.isKeyPressed(Key.Control) && !KeyboardUtils.isKeyPressed(Key.Shift)) {\r\n row.setSelected(true, true);\r\n }\r\n }\r\n this.props.onCellFocused?.(event);\r\n this.lastCellFocus = event;\r\n }\r\n\r\n onCellMouseDown(e: CellMouseDownEvent) {\r\n this.lastNavigationEvent = NavigationEventEnum.MOUSE;\r\n // always focus clicked cell (also when using shift key)\r\n if (e.rowIndex !== null) {\r\n this.setFocusedCellDebounced(e.rowIndex, e.column, e.rowPinned !== null ? e.rowPinned : undefined);\r\n }\r\n this.props.onCellMouseDown?.(e);\r\n }\r\n\r\n setFocusedCellDebounced(rowIndex: number, column: string | Column, rowPinned: string | undefined) {\r\n this.gridApi?.setFocusedCell(rowIndex, column, rowPinned);\r\n }\r\n\r\n private onCellContextMenu(event: CellContextMenuEvent) {\r\n this.setState({contextMenuVisible: !!event});\r\n if (event.node) {\r\n if (!event.node.isSelected()) {\r\n event.node.setSelected(true, true, false);\r\n }\r\n }\r\n }\r\n\r\n private loadingOverlayRenderer(): ReactElement {\r\n if (this.props.loadingOverlayRenderer) {\r\n const loadingOverlay = this.props.loadingOverlayRenderer();\r\n if (loadingOverlay) {\r\n return loadingOverlay;\r\n }\r\n }\r\n return <div><LoadingOutlined style={{fontSize: 40, color: \"#1890ff\"}}/></div>;\r\n }\r\n\r\n private noRecordsOverlayRenderer(): ReactElement {\r\n if (this.props.noRecordsOverlayRenderer) {\r\n const noRecordsOverlay = this.props.noRecordsOverlayRenderer();\r\n if (noRecordsOverlay) {\r\n return noRecordsOverlay;\r\n }\r\n }\r\n return (\r\n <Empty description={i18n(\"No records found.\")} imageStyle={{height: \"8vh\"}}>\r\n <Button type=\"primary\" onClick={() => {\r\n if (this.props.search && this.props.search.onSearch) {\r\n this.props.search.onSearch();\r\n }\r\n }}>\r\n <SearchOutlined/> {i18n(\"Search\")}\r\n </Button>\r\n </Empty>\r\n );\r\n }\r\n\r\n private onRowDataUpdated(event: RowDataUpdatedEvent) {\r\n if (!this.gridApi) {\r\n return;\r\n }\r\n const currentPage = this.gridApi.paginationGetCurrentPage();\r\n const recordsCount = this.props.paging.pageSize >= 0 ? (this.gridApi.paginationIsLastPageFound() ? this.gridApi.paginationGetRowCount() : 0) : this.gridApi.getDisplayedRowCount();\r\n this.setState({recordsCount: recordsCount, pageIndex: currentPage});\r\n if (this.props.onRowDataUpdated) {\r\n this.props.onRowDataUpdated(event);\r\n }\r\n }\r\n\r\n private static EMPTY_STYLE: RowStyle = {}\r\n\r\n _getRowStyle(params: RowClassParams): RowStyle {\r\n const rowStyleRules = this.props.rowStyleRules;\r\n if (rowStyleRules) {\r\n const style: any = {};\r\n rowStyleRules.forEach((rowStyleRule) => {\r\n if (rowStyleRule.expression) {\r\n if (!rowStyleRuleCompiledExpressions[rowStyleRule.expression]) {\r\n rowStyleRuleCompiledExpressions[rowStyleRule.expression] = compileExpression(rowStyleRule.expression);\r\n }\r\n if (rowStyleRuleCompiledExpressions[rowStyleRule.expression](params.node.data)) {\r\n Object.assign(style, rowStyleRule.style);\r\n }\r\n } else {\r\n Object.assign(style, rowStyleRule.style);\r\n }\r\n });\r\n if (!style.color) {\r\n style.color = null;\r\n } else if (typeof style.color === \"object\") {\r\n style.color = `rgba(${style.color.r},${style.color.g},${style.color.b},${style.color.a})`;\r\n }\r\n if (!style.backgroundColor) {\r\n style.backgroundColor = \"inherit\";\r\n } else if (typeof style.backgroundColor === \"object\") {\r\n style.backgroundColor = `rgba(${style.backgroundColor.r},${style.backgroundColor.g},${style.backgroundColor.b},${style.backgroundColor.a})`;\r\n }\r\n if (!style.fontWeight) {\r\n style.fontWeight = \"inherit\";\r\n }\r\n if (style.fontSize) {\r\n const lineHeight = style.fontSize + ROW_HEIGHT_DELTA_FROM_FONT_SIZE - 2;\r\n style.fontSize = style.fontSize + \"px\";\r\n style.lineHeight = lineHeight + \"px\";\r\n } else {\r\n style.fontSize = \"inherit\";\r\n }\r\n if (this.props.getRowStyle) {\r\n const rowStyle = this.props.getRowStyle(params);\r\n if (rowStyle) {\r\n return Object.assign(style, rowStyle) as RowStyle;\r\n }\r\n }\r\n return style as RowStyle;\r\n }\r\n return DataGrid.EMPTY_STYLE;\r\n }\r\n\r\n _getRowHeight(): number {\r\n return this.state.rowHeight;\r\n }\r\n\r\n _getCellStyle(params: { colDef: ColDef }) {\r\n const fontSize = this.state.rowHeight - ROW_HEIGHT_DELTA_FROM_FONT_SIZE;\r\n const cellStyles: { [key: string]: any } = {\"font-size\": fontSize + \"px\"};\r\n if (params.colDef.type && params.colDef.type.indexOf(\"alignRight\") >= 0) {\r\n cellStyles[\"text-align\"] = \"right\";\r\n }\r\n if (params.colDef.cellRendererParams?.originalCellStyle) {\r\n const originalCellStylesOrHandler = params.colDef.cellRendererParams.originalCellStyle as {} | ((params: any) => {});\r\n if (typeof originalCellStylesOrHandler === \"object\") {\r\n Object.assign(cellStyles, originalCellStylesOrHandler);\r\n } else if (typeof originalCellStylesOrHandler === \"function\") {\r\n const originalCellStyles = originalCellStylesOrHandler(params);\r\n if (originalCellStyles) {\r\n Object.assign(cellStyles, originalCellStyles);\r\n }\r\n }\r\n }\r\n return cellStyles;\r\n }\r\n\r\n getDefaultColDefinition(colDef: ColDef | undefined): ColDef {\r\n if (colDef) {\r\n return {...colDef, suppressKeyboardEvent: this.suppressKeyboardEvent} as ColDef;\r\n } else {\r\n return {suppressKeyboardEvent: this.suppressKeyboardEvent} as ColDef;\r\n }\r\n }\r\n\r\n private getCustomFrameworkComponents(frameworkComponents: any) {\r\n let customFrameworkComponents = gridFrameworkComponents;\r\n if (frameworkComponents) {\r\n customFrameworkComponents = Object.assign(gridFrameworkComponents, frameworkComponents);\r\n }\r\n return customFrameworkComponents;\r\n }\r\n\r\n renderNavigationPanel(): ReactElement {\r\n return (\r\n <React.Fragment>\r\n {this.props.toolbar && this.props.toolbar.renderToolbar ? this.props.toolbar.renderToolbar(this.renderToolBarWithSearch()) : this.renderToolBarWithSearch()}\r\n {this.props.paging.pageSize >= 0 &&\r\n <TablePagination\r\n disabled={this.state.loading}\r\n current={this.state.pageIndex ? this.state.pageIndex + 1 : 1}\r\n pageSize={this.state.pageSize ? this.state.pageSize : 20}\r\n total={this.state.recordsCount}\r\n size=\"default\"\r\n showLessItems\r\n showTotal={(total, range) => `${range[0]}-${range[1]} ${i18n('of')} ${total}`}\r\n style={{\r\n flex: \"0 1 auto\",\r\n textAlign: \"right\",\r\n whiteSpace: \"nowrap\",\r\n marginLeft: \"24px\"\r\n }}\r\n onChange={(selectedPage, _) => {\r\n this.onGoToPage(selectedPage - 1);\r\n }}/>}\r\n {this.props.paging.pageSize < 0 && this.state.recordsCount && !this.props.toolbar?.hideRecordCount ?\r\n <span className=\"ant-pagination-total-text\" style={{\r\n flex: \"0 1 auto\",\r\n textAlign: \"right\",\r\n whiteSpace: \"nowrap\",\r\n marginLeft: \"24px\"\r\n }}>{`${this.state.viewport[0]}-${this.state.viewport[1]} ${i18n('of')} ${this.state.recordsCount}`}</span>\r\n : undefined}\r\n </React.Fragment>\r\n );\r\n }\r\n\r\n renderToolBarWithSearch(): ReactElement {\r\n return (\r\n <Input.Group key=\"filter-panel\" compact size=\"default\"\r\n style={{whiteSpace: \"nowrap\", flexGrow: 1, display: \"flex\"}}>\r\n {this.props.toolbar?.toolbarButtons}\r\n <Dropdown trigger={[\"click\"]} overlay={\r\n <ContextMenu showMilliseconds={!!this.props.showMilliseconds}\r\n showYear={!this.props.hideYear}\r\n renderer={this.props.exportMenu?.renderer}\r\n onClick={this.props.exportMenu?.onClick}\r\n getExportContent={this.getExportContent}\r\n />}\r\n disabled={this.state.loading}>\r\n <Button title={i18n(\"Export\")}>\r\n <DownloadOutlined/>\r\n </Button>\r\n </Dropdown>\r\n\r\n <Dropdown trigger={[\"click\"]}\r\n overlay={this.renderSettingsMenu()}>\r\n <Button\r\n title={i18n(\"Extended table features\")}\r\n disabled={this.state.loading}>\r\n <TableOutlined/>\r\n </Button>\r\n </Dropdown>\r\n {!this.props.search?.hidden && !this.props.search?.searchRenderer && <AutoCompleteInput\r\n style={{minWidth: 100, flexGrow: 1}}\r\n placeholder={this.props.search ? this.props.search.placeholder : undefined}\r\n stringFormatter={this.props.search ? this.props.search.stringFormatter : undefined}\r\n value={this.props.search ? this.props.search.searchString : undefined}\r\n inputReadonly={this.props.search ? this.props.search.inputReadonly : undefined}\r\n options={this.props.search ? this.props.search.searchHistory : undefined}\r\n onChange={this.props.search ? this.props.search.onChange : undefined}\r\n onSearch={this.props.search ? this.props.search.onSearch : undefined}\r\n disabled={this.state.loading || (this.props.filter && this.props.filter.columnSearchVisible)}\r\n />}\r\n {this.props.search?.searchRenderer?.()}\r\n <Button title={this.props.search?.hidden ? i18n(\"Refresh\") : i18n(\"Search\")}\r\n className={\"search-btn \" + (this.props.search && this.props.search.searchButtonClassName ? this.props.search.searchButtonClassName : \"\")}\r\n disabled={this.props.search?.searchButtonDisabled}\r\n type=\"primary\"\r\n onClick={() => {\r\n if (this.props.search && this.props.search.onSearch) {\r\n this.props.search.onSearch();\r\n }\r\n }}>\r\n {this.state.loading ? <LoadingOutlined/> : (this.props.search?.hidden ? <ReloadOutlined/> :\r\n <SearchOutlined/>)}\r\n </Button>\r\n </Input.Group>\r\n );\r\n }\r\n\r\n renderSettingsMenu(): ReactElement {\r\n let menuItems: MenuElement[] = [\r\n <Menu.Item key=\"columnFilter\"\r\n icon={<FileSearchOutlined/>}\r\n className={this.props.filter && this.props.filter.columnSearchVisible ? \"ant-dropdown-menu-item-selected\" : \"\"}\r\n title={i18n(\"Turn on/off column filter\")}>\r\n {i18n(\"Column Filter\")}\r\n </Menu.Item>,\r\n <Menu.Item key=\"autosizeAllColumns\" icon={<ColumnWidthOutlined/>}>\r\n {i18n(\"Autosize All Columns\")}\r\n </Menu.Item>,\r\n <Menu.Item key=\"columnsConfig\" icon={<ControlOutlined/>}>\r\n {i18n(\"Columns Configuration\")}\r\n </Menu.Item>,\r\n <Menu.Divider key=\"columnsAndAdvancedConfigDivider\"/>,\r\n <Menu.Item key=\"advancedConfig\" icon={<SettingOutlined/>}>\r\n {i18n(\"Advanced Settings\")}\r\n </Menu.Item>\r\n ];\r\n\r\n if (this.props.settingsMenu?.renderer) {\r\n menuItems = this.props.settingsMenu.renderer(menuItems);\r\n }\r\n\r\n return <Menu onClick={({key}) => {\r\n switch (key) {\r\n case \"columnFilter\":\r\n const visible = !(this.props.filter && this.props.filter.columnSearchVisible);\r\n this.setColumnSearchVisible(visible);\r\n break;\r\n case \"autosizeAllColumns\":\r\n this.gridColumnApi?.autoSizeAllColumns();\r\n break;\r\n case \"columnsConfig\":\r\n this.showColumnsConfig(true);\r\n break;\r\n case \"advancedConfig\":\r\n this.showTableConfiguration(true);\r\n break;\r\n default:\r\n if (this.props.settingsMenu?.onClick) {\r\n this.props.settingsMenu.onClick(key + \"\");\r\n }\r\n }\r\n }}>\r\n {menuItems}\r\n </Menu>;\r\n }\r\n\r\n private renderContextMenu(): ReactElement {\r\n return <ContextMenu onlySelectedNodes={true}\r\n showMilliseconds={!!this.props.showMilliseconds}\r\n showYear={!this.props.hideYear}\r\n renderer={this.props.contextMenu?.renderer}\r\n onClick={this.props.contextMenu?.onClick}\r\n getExportContent={this.getExportContent}\r\n />;\r\n }\r\n\r\n private getAdaptedColumnDefs(columnDefs: DataGridColDef[], floatingFilterEnabled: boolean | undefined, disableColumnDefsPreprocessing: boolean) {\r\n if (columnDefs.length === 0) {\r\n return undefined;\r\n }\r\n if (disableColumnDefsPreprocessing) {\r\n return columnDefs;\r\n }\r\n const adaptedColumnDefs = columnDefs ? columnDefs.map((columnDef) => {\r\n const {group, floatingFilter, hide, ...rest} = columnDef as DataGridColDef;\r\n let floatingFilterEnabledForColumn = !!floatingFilter;\r\n if (typeof columnDef.type === \"string\") {\r\n if (!!(this.columnTypes[columnDef.type]?.floatingFilter)) {\r\n floatingFilterEnabledForColumn = true;\r\n }\r\n } else {\r\n columnDef.type?.forEach((type) => {\r\n if (!!(this.columnTypes[type]?.floatingFilter)) {\r\n floatingFilterEnabledForColumn = true;\r\n }\r\n });\r\n\r\n }\r\n return {\r\n ...rest,\r\n floatingFilter: floatingFilterEnabledForColumn && floatingFilterEnabled,\r\n resizable: true,\r\n headerComponent: \"simpleHeader\",\r\n headerComponentParams: {\r\n onColumnsConfigVisible: this.showColumnsConfig\r\n },\r\n hide: hide === undefined ? rest.initialHide : hide,\r\n cellStyle: this._getCellStyle,\r\n cellRendererParams: columnDef.cellStyle ? {originalCellStyle: columnDef.cellStyle} : undefined\r\n };\r\n }) : undefined;\r\n if (adaptedColumnDefs) {\r\n setTimeout(() => {\r\n this.props.onColumnDefsAdapted?.(adaptedColumnDefs);\r\n }, 0);\r\n }\r\n return adaptedColumnDefs;\r\n }\r\n\r\n render() {\r\n const {\r\n onGridReady,\r\n columnDefs, disableColumnDefsPreprocessing, onColumnsChanged,\r\n paging, onPaginationChanged, onViewportChanged,\r\n selectedIds,\r\n search, toolbar,\r\n filter, onFilterChanged, onFilterModified, onCellFocused,\r\n onSortChanged, frameworkComponents,\r\n tableConfigVisible, onTableConfigVisible,\r\n noRecordsOverlayRenderer, loadingOverlayRenderer, onRowDataUpdated,\r\n rowStyleRules, onChangeRowStyleRules,\r\n defaultShowMilliseconds, onShowMilliseconds, defaultHideYear, onShowYear,\r\n suppressLoadingOverlay, defaultColDef, headerHeight,\r\n ...passedProperties\r\n } = this.props;\r\n let key: string;\r\n let paginationPageSize: number | undefined = undefined;\r\n if (paging.pageSize > 0) {\r\n paginationPageSize = paging.pageSize;\r\n passedProperties.pagination = true;\r\n key = \"paginated-table\";\r\n } else if (paging.pageSize === 0) {\r\n passedProperties.paginationAutoPageSize = true;\r\n passedProperties.pagination = true;\r\n key = \"paginated-table\";\r\n } else {\r\n // pagination is disabled\r\n passedProperties.pagination = false;\r\n key = \"non-paginated-table\";\r\n }\r\n\r\n // nejde\r\n const floatingFilterEnabled = !!filter && !!filter.columnSearchVisible;\r\n const adaptedColumnDefs = this.getAdaptedColumnDefs(columnDefs, floatingFilterEnabled, !!disableColumnDefsPreprocessing);\r\n\r\n const customFrameworkComponents = this.getCustomFrameworkComponents(frameworkComponents);\r\n const debugMode = process.env.NODE_ENV === 'development';\r\n const panelStyle = {\r\n display: \"flex\",\r\n flexFlow: \"column\",\r\n height: \"100%\",\r\n width: \"100%\",\r\n paddingBottom: 8,\r\n };\r\n if (this.props.panelStyle) {\r\n Object.assign(panelStyle, this.props.panelStyle);\r\n }\r\n const tablePanelStyle = {flex: \"1 1 auto\", marginTop: 16, overflow: \"auto\"};\r\n if (this.props.tablePanelStyle) {\r\n Object.assign(tablePanelStyle, this.props.tablePanelStyle);\r\n }\r\n\r\n return (\r\n <React.Fragment>\r\n <Card size=\"small\" bordered={false}\r\n style={{height: \"100%\"}}\r\n bodyStyle={panelStyle}>\r\n <div style={{display: \"flex\"}}>\r\n {this.renderNavigationPanel()}\r\n </div>\r\n <div style={tablePanelStyle}>\r\n <Dropdown trigger={[\"contextMenu\"]}\r\n getPopupContainer={() => {\r\n // very nasty trick how remove error of ResizeObservers infinite cycling - because popover (with dynamic size) is placed in in resizable panel\r\n return (ReactDOM.findDOMNode(this)?.parentNode ?? document.body) as HTMLElement;\r\n }}\r\n overlay={this.renderContextMenu()}\r\n overlayStyle={!this.state.contextMenuVisible ? {display: \"none\"} : undefined}\r\n onVisibleChange={(visible) => {\r\n if (!visible) {\r\n this.setState({contextMenuVisible: false});\r\n }\r\n }}\r\n >\r\n <div className=\"ag-theme-balham\" style={{width: \"100%\", height: \"100%\"}}\r\n ref={(wrapingDiv) => {\r\n this.wrappingDiv = wrapingDiv;\r\n }}>\r\n <AgGridReact\r\n key={key}\r\n debug={debugMode}\r\n paginationPageSize={paginationPageSize}\r\n maxConcurrentDatasourceRequests={this.props.rowModelType === \"infinite\" ? 1 : undefined}\r\n onGridReady={this.onGridReady}\r\n onPaginationChanged={this.onPaginationChanged}\r\n onFilterModified={this.onFilterModified}\r\n onFilterChanged={this.onFilterChanged}\r\n onSortChanged={this.onSortChanged}\r\n defaultColDef={this.getDefaultColDefinition(defaultColDef)}\r\n columnDefs={adaptedColumnDefs as ColDef[]}\r\n {...passedProperties}\r\n onCellFocused={this.onCellFocused}\r\n suppressPaginationPanel={true}\r\n getRowNodeId={getRowNodeId}\r\n frameworkComponents={customFrameworkComponents}\r\n columnTypes={this.columnTypes}\r\n onColumnVisible={this.onColumnsChanged}\r\n onColumnPinned={this.onColumnsChanged}\r\n onColumnResized={this.onColumnsChanged}\r\n onColumnMoved={this.onColumnsChanged}\r\n onCellMouseDown={this.onCellMouseDown}\r\n navigateToNextCell={this.navigateToNextCell}\r\n onViewportChanged={this.onViewportChanged}\r\n onCellContextMenu={this.onCellContextMenu}\r\n loadingOverlayComponent='loadingOverlay'\r\n noRowsOverlayComponent='noRecordsOverlay'\r\n onRowDataUpdated={this.onRowDataUpdated}\r\n context={this.table_context}\r\n rowHeight={this.state.rowHeight}\r\n getRowStyle={this._getRowStyle}\r\n getRowHeight={this._getRowHeight}\r\n headerHeight={headerHeight !== undefined ? headerHeight : this.state.rowHeight + 4}\r\n floatingFiltersHeight={this.state.rowHeight + 4}\r\n suppressLoadingOverlay={this.props.loadingOverlayRenderer ? true : this.props.suppressLoadingOverlay}\r\n >\r\n </AgGridReact>\r\n {this.state.loading && this.props.loadingOverlayRenderer &&\r\n <div className=\"ag-overlay\" aria-hidden=\"true\" ref=\"overlayWrapper\">\r\n <div className=\"ag-overlay-panel\">\r\n <div className=\"ag-overlay-wrapper ag-layout-normal ag-overlay-loading-wrapper\">\r\n <div className=\"ag-react-container\">\r\n {this.props.loadingOverlayRenderer?.()}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n </Dropdown>\r\n {this.props.tableOverlayRenderer?.()}\r\n </div>\r\n </Card>\r\n\r\n {!!this.gridApi && !!this.gridColumnApi && this.state.pageSize !== null &&\r\n <DataGridEditor dataGrid={this}\r\n gridApi={this.gridApi}\r\n gridColumnApi={this.gridColumnApi}\r\n columnDefinitions={columnDefs}\r\n columnModel={this.state.columnModel}\r\n visible={!!this.props.tableConfigVisible}\r\n onTableConfigVisible={this.showTableConfiguration}\r\n paginationPageSize={paging.pageSize}\r\n paginationDefaultPageSize={paging.defaultPageSize}\r\n currentPageSize={this.state.pageSize}\r\n showMilliseconds={!!this.props.showMilliseconds}\r\n defaultShowMilliseconds={!!this.props.defaultShowMilliseconds}\r\n showYear={!this.props.hideYear}\r\n defaultShowYear={!this.props.defaultHideYear}\r\n rowStyleRules={this.props.rowStyleRules}\r\n defaultRowStyleRules={this.props.defaultRowStyleRules}\r\n onChangeRowStyleRules={onChangeRowStyleRules}\r\n />}\r\n\r\n\r\n {!!this.gridApi && !!this.gridColumnApi && <ModalDialog\r\n mode={ModalDialogMode.OK_CANCEL}\r\n visible={this.state.columnsConfigVisible}\r\n initialWidth={700}\r\n initialHeight={this.state.columnTransferHeight}\r\n title={<span><ControlOutlined style={{\r\n color: \"#faad14\",\r\n fontSize: 22,\r\n marginRight: 16\r\n }}/>{i18n(\"Columns Configuration\")}</span>}\r\n cancelText={i18n(\"Cancel\")}\r\n onCancel={() => {\r\n if (this.gridColumnApi && this.columnModelBeforeEdit) {\r\n this.gridColumnApi.applyColumnState({state: this.columnModelBeforeEdit, applyOrder: true});\r\n delete this.columnModelBeforeEdit;\r\n this.showColumnsConfig(false);\r\n }\r\n }}\r\n onOk={() => {\r\n delete this.columnModelBeforeEdit;\r\n this.showColumnsConfig(false);\r\n }}\r\n onResize={({height}) => {\r\n this.setState({columnTransferHeight: height});\r\n }}\r\n zIndex={100}\r\n >\r\n <ColumnTransfer\r\n columnDefinitions={columnDefs as ColDef[]}\r\n columnModel={this.state.columnModel}\r\n gridApi={this.gridApi}\r\n gridColumnApi={this.gridColumnApi}\r\n height={this.state.columnTransferHeight - 154}\r\n />\r\n </ModalDialog>}\r\n\r\n </React.Fragment>\r\n );\r\n }\r\n}"]}