d2coreui 21.0.27 → 21.0.29
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.
|
@@ -47,6 +47,7 @@ export default class DateTimeInput extends React.Component {
|
|
|
47
47
|
time: undefined,
|
|
48
48
|
length: 0
|
|
49
49
|
},
|
|
50
|
+
popupCalendarVisible: false,
|
|
50
51
|
calendarSelectedDate: (_d = (_b = (_a = props.defaultSelectedDate) === null || _a === void 0 ? void 0 : _a.clone()) !== null && _b !== void 0 ? _b : (_c = props.value) === null || _c === void 0 ? void 0 : _c.clone()) !== null && _d !== void 0 ? _d : moment().startOf('day'),
|
|
51
52
|
focused: false,
|
|
52
53
|
};
|
|
@@ -232,7 +233,7 @@ export default class DateTimeInput extends React.Component {
|
|
|
232
233
|
newValue = newValue.year(value.year()).month(value.month()).date(value.date());
|
|
233
234
|
(_d = (_c = this.props).onChange) === null || _d === void 0 ? void 0 : _d.call(_c, newValue);
|
|
234
235
|
}
|
|
235
|
-
this.setState({ calendarSelectedDate: value });
|
|
236
|
+
this.setState({ calendarSelectedDate: value, popupCalendarVisible: false });
|
|
236
237
|
} })));
|
|
237
238
|
}
|
|
238
239
|
renderInput() {
|
|
@@ -332,8 +333,9 @@ export default class DateTimeInput extends React.Component {
|
|
|
332
333
|
return this.renderInput();
|
|
333
334
|
}
|
|
334
335
|
else {
|
|
335
|
-
return (React.createElement(Tooltip, { color: "white", trigger: this.props.disabled ? [] : ["contextMenu"], getPopupContainer: this.props.getPopupContainer, overlayInnerStyle: { maxHeight: "100vh", overflowY: "auto", overflowX: "hidden", width: 266 }, onVisibleChange: (visible) => {
|
|
336
|
+
return (React.createElement(Tooltip, { color: "white", trigger: this.props.disabled ? [] : ["contextMenu"], getPopupContainer: this.props.getPopupContainer, overlayInnerStyle: { maxHeight: "100vh", overflowY: "auto", overflowX: "hidden", width: 266 }, visible: this.state.popupCalendarVisible, onVisibleChange: (visible) => {
|
|
336
337
|
var _a, _b, _c, _d;
|
|
338
|
+
this.setState({ popupCalendarVisible: visible });
|
|
337
339
|
if (visible) {
|
|
338
340
|
this.setState({ calendarSelectedDate: (_d = (_b = (_a = this.props.defaultSelectedDate) === null || _a === void 0 ? void 0 : _a.clone()) !== null && _b !== void 0 ? _b : (_c = this.props.value) === null || _c === void 0 ? void 0 : _c.clone()) !== null && _d !== void 0 ? _d : moment().startOf("day") });
|
|
339
341
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dateTimeInput.js","sourceRoot":"","sources":["../../../../components/date/dateTimeInput.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, {HTMLAttributes, RefObject} from \"react\";\nimport MaskedInput from \"../input/maskedInput\";\nimport padStart from 'lodash/padStart';\nimport isEqual from 'lodash/isEqual';\nimport debounce from 'lodash/debounce';\nimport moment, {Moment} from \"moment\";\nimport {CalendarOutlined} from \"@ant-design/icons\";\nimport {Button, Calendar, Select, Tooltip} from \"antd\";\nimport {Key} from \"ts-key-enum\";\nimport {D2000UnixTimeNullValue} from \"d2core/types/unixTimeUtils\";\n\n\ninterface DateTimeInputProps extends Omit<HTMLAttributes<HTMLDivElement>, \"onChange\"> {\n mask: string\n value: Moment | null\n onChange?: (time: Moment | null) => void\n onInvalidValue?: (inputString: string) => void\n // allows to set no (null) date by datepicker\n allowClear?: boolean\n disabled?: boolean\n // disable only input component - useful when calendar popup is opened\n inputDisabled?: boolean\n minDateTime?: Moment\n maxDateTime?: Moment\n\n bordered?: boolean\n hidePopup?: boolean\n renderAsCalendar?: boolean\n autoFocus?: boolean\n\n // special methods for rendering date range\n defaultSelectedDate?: Moment\n markedDateInterval?: [Moment, Moment]\n onDateItemMouseDown?: (date: Moment) => void\n onDateItemMouseUp?: (date: Moment) => void\n onDateItemMouseOver?: (date: Moment) => void\n\n inputStyle?: React.CSSProperties\n getPopupContainer?: (triggerNode: HTMLElement) => HTMLElement;\n\n ignoreKeyStrokes?: boolean\n}\n\ninterface DateTimeInputState {\n valid: boolean\n currentPos: number | null\n currentInfo: MaskResult\n\n calendarSelectedDate: Moment\n focused: boolean\n}\n\ninterface MaskResult {\n time: Moment | undefined\n info: InfoEntry | undefined\n length: number\n}\n\ninterface InfoEntry {\n key: string | string[]\n min: number\n max: number\n unit: moment.unitOfTime.Base\n}\n\nconst DATE_TIME_DATA_MAP: InfoEntry[] = [\n {key: \"SSS\", min: 0, max: 999, unit: \"ms\"},\n {key: \"ss\", min: 0, max: 59, unit: \"s\"},\n {key: \"mm\", min: 0, max: 59, unit: \"m\"},\n {key: \"HH\", min: 0, max: 23, unit: \"h\"},\n {key: [\"YYYY\", \"YY\"], min: 1970, max: 9999, unit: \"y\"},\n {key: \"MM\", min: 1, max: 12, unit: \"M\"},\n {key: \"DD\", min: 1, max: 31, unit: \"d\"},\n];\n\nconst MIN_TIME = moment.unix(0);\nconst MAX_TIME = moment().add(1000, \"year\");\n\nexport function allowDatesBeforeEpoch() {\n DATE_TIME_DATA_MAP[4].min = 1902;\n}\n\nexport default class DateTimeInput extends React.Component<DateTimeInputProps, DateTimeInputState> {\n private inputRef: RefObject<MaskedInput> = React.createRef();\n private today: Moment = moment();\n\n constructor(props: Readonly<DateTimeInputProps>) {\n super(props);\n this.state = {\n valid: (!!props.value && props.value.isValid()) || (!!props.allowClear && props.value === null),\n currentPos: null,\n currentInfo: {\n info: undefined,\n time: undefined,\n length: 0\n },\n calendarSelectedDate: props.defaultSelectedDate?.clone() ?? props.value?.clone() ?? moment().startOf('day'),\n focused: false,\n };\n\n this.recalc = this.recalc.bind(this);\n this.increment = this.increment.bind(this);\n this.decrement = this.decrement.bind(this);\n this.onItemMouseOver = debounce(this.onItemMouseOver.bind(this), 100, {maxWait: 100});\n }\n\n componentDidUpdate(prevProps: Readonly<DateTimeInputProps>, _prevState: Readonly<DateTimeInputState>, _snapshot?: any): void {\n if (!isEqual(prevProps, this.props) && this.inputRef.current !== null) {\n this.inputRef.current.input.selectionStart = this.state.currentPos;\n this.inputRef.current.input.selectionEnd = this.state.currentPos;\n if (prevProps.value !== this.props.value) {\n this.setState({valid: (!!this.props.value && this.props.value.isValid()) || (!!this.props.allowClear && this.props.value === null)});\n }\n }\n }\n\n get input() {\n return this.inputRef.current?.input;\n }\n\n focus() {\n this.inputRef.current?.focus();\n }\n\n recalc(): void {\n if (this.inputRef.current !== null) {\n this.setState({\n currentInfo: DateTimeInput.parseDateTimeFormat(this.inputRef.current.input.value, this.props.mask, this.inputRef.current.input.selectionStart),\n currentPos: this.inputRef.current.input.selectionStart,\n });\n }\n }\n\n private increment(): void {\n if (this.state.currentInfo.info !== undefined && !!this.props.value && DateTimeInput.isValid(this.state.currentInfo, this.props.value, 1)) {\n const unit = this.state.currentInfo.info.unit;\n this.incrementDate(unit);\n }\n\n this.inputRef.current?.focus();\n }\n\n private incrementDate(unit: moment.unitOfTime.Base) {\n if (!!this.props.value) {\n this.props.value.add(1, unit);\n if (!!this.props.maxDateTime && this.props.value.isAfter(this.props.maxDateTime)) {\n this.props.onChange?.(this.props.maxDateTime?.clone());\n } else {\n this.props.onChange?.(this.props.value.clone());\n }\n }\n }\n\n private decrement(): void {\n if (this.state.currentInfo.info !== undefined && !!this.props.value && DateTimeInput.isValid(this.state.currentInfo, this.props.value, -1)) {\n const unit = this.state.currentInfo.info.unit;\n this.decrementDate(unit);\n }\n\n this.inputRef.current?.focus();\n }\n\n private decrementDate(unit: moment.unitOfTime.Base) {\n if (!!this.props.value) {\n this.props.value.subtract(1, unit);\n if (!!this.props.minDateTime && this.props.value.isBefore(this.props.minDateTime)) {\n this.props.onChange?.(this.props.minDateTime?.clone());\n } else {\n this.props.onChange?.(this.props.value.clone());\n }\n }\n }\n\n onItemMouseOver(itemDate: Moment) {\n this.props.onDateItemMouseOver?.(itemDate);\n }\n\n private renderCalendarNavigation(value: Moment) {\n const start = 0;\n const end = 12;\n const monthOptions = [];\n\n const current = value.clone();\n const localeData = value.localeData();\n const months = [];\n for (let i = 0; i < 12; i++) {\n current.month(i);\n months.push(localeData.months(current));\n }\n\n for (let index = start; index < end; index++) {\n monthOptions.push(\n <Select.Option className=\"month-item\" key={`${index}`} value={`${index}`}>\n {months[index]}\n </Select.Option>,\n );\n }\n const month = value.month();\n\n const year = value.year();\n const options = [];\n for (let i = year - 4; i <= year + 2; i += 1) {\n options.push(\n <Select.Option key={i} value={i} className=\"year-item\">\n {i}\n </Select.Option>,\n );\n }\n return (\n <div style={{paddingBottom: 8}}>\n <div style={{float: \"left\", paddingBottom: 8, width: 140, display: \"flex\"}}>\n <Button style={{width: 10, padding: 0}} size=\"small\" type=\"text\" tabIndex={-1}\n disabled={!DateTimeInput.checkDateValueValidity(this.state.calendarSelectedDate, -1, \"month\")}\n onClick={() => {\n this.state.calendarSelectedDate.subtract(1, \"month\");\n this.setState({calendarSelectedDate: this.state.calendarSelectedDate});\n }}\n className=\"ant-picker-header-prev-btn\"><span\n className=\"ant-picker-prev-icon\"/></Button>\n <Select\n style={{flex: \"1 1 auto\"}}\n size=\"small\"\n dropdownMatchSelectWidth={false}\n dropdownStyle={{zIndex: 2070}}\n getPopupContainer={this.props.getPopupContainer}\n value={String(month)}\n onChange={selectedMonth => {\n const newValue = this.state.calendarSelectedDate.clone();\n newValue.month(parseInt(selectedMonth, 10));\n this.setState({calendarSelectedDate: newValue});\n }}\n >\n {monthOptions}\n </Select>\n <Button style={{width: 10, padding: 0}} size=\"small\" type=\"text\" tabIndex={-1}\n className=\"ant-picker-header-next-btn\"\n onClick={() => {\n this.state.calendarSelectedDate.add(1, \"month\");\n this.setState({calendarSelectedDate: this.state.calendarSelectedDate});\n }}>\n <span className=\"ant-picker-next-icon\"/>\n </Button>\n </div>\n <div style={{float: \"right\", paddingBottom: 8, width: 110}}>\n <Button style={{width: 12, padding: 0}} size=\"small\" type=\"text\" tabIndex={-1}\n className=\"ant-picker-header-prev-btn\"\n onClick={() => {\n this.state.calendarSelectedDate.subtract(1, \"year\");\n this.setState({calendarSelectedDate: this.state.calendarSelectedDate});\n }}>\n <span className=\"ant-picker-prev-icon\"/>\n </Button>\n <Select\n size=\"small\"\n style={{width: 84}}\n dropdownMatchSelectWidth={false}\n dropdownStyle={{zIndex: 2070}}\n getPopupContainer={this.props.getPopupContainer}\n onChange={newYear => {\n const newValue = this.state.calendarSelectedDate.clone().year(parseInt(newYear, 10));\n this.setState({calendarSelectedDate: newValue});\n }}\n value={String(year)}\n >\n {options}\n </Select>\n <Button style={{width: 12, padding: 0}} size=\"small\" type=\"text\" tabIndex={-1}\n className=\"ant-picker-header-next-btn\"\n onClick={() => {\n this.state.calendarSelectedDate.add(1, \"year\");\n this.setState({calendarSelectedDate: this.state.calendarSelectedDate});\n }}>\n <span className=\"ant-picker-next-icon\"/>\n </Button>\n </div>\n </div>\n );\n }\n\n renderCalendar(): React.ReactElement {\n return (<div\n onKeyDown={!this.props.ignoreKeyStrokes ? (e) => {\n if (e.key === Key.Enter) {\n var tagName = (e.target as any)?.tagName?.toLowerCase();\n if (tagName !== \"input\") {\n this.props.onChange?.(this.state.calendarSelectedDate);\n }\n }\n } : undefined}\n onMouseOver={(e) => {\n if (e.target instanceof HTMLTableCellElement) {\n const date = moment(e.target.title, \"YYYY-MM-DD\");\n this.onItemMouseOver(date);\n }\n }}>\n <Calendar\n fullscreen={false}\n style={this.props.renderAsCalendar ? this.props.style : undefined}\n dateFullCellRender={((date: Moment) => {\n let className = date.isSame(this.today, \"date\") ? 'ant-picker-cell-inner ant-picker-calendar-date ant-picker-calendar-date-today' : 'ant-picker-cell-inner ant-picker-calendar-date';\n const markedDateInterval = this.props.markedDateInterval;\n if (markedDateInterval && (markedDateInterval[0].isBefore(date) || markedDateInterval[0].isSame(date, \"millisecond\")) &&\n (markedDateInterval[1].isAfter(date) || markedDateInterval[1].isSame(date, \"millisecond\"))) {\n className += \" date-picker-item-marked\";\n } else if (date.isSame(this.props.value, \"date\")) {\n className += \" date-picker-item-marked\";\n }\n return (\n <div className={className} style={{userSelect: \"none\"}}\n onKeyDown={(e) => {\n if (e.key === Key.Enter) {\n let newValue = this.props.value?.clone() ?? moment().startOf(\"day\");\n newValue = newValue.year(date.year()).month(date.month()).date(date.date());\n this.props.onChange?.(date);\n }\n }}\n onMouseDown={() => {\n let newValue = this.props.value?.clone() ?? moment().startOf(\"day\");\n newValue = newValue.year(date.year()).month(date.month()).date(date.date());\n this.props.onDateItemMouseDown?.(newValue);\n }}\n onMouseUp={() => {\n let newValue = this.props.value?.clone() ?? moment().startOf(\"day\");\n newValue = newValue.year(date.year()).month(date.month()).date(date.date());\n this.props.onDateItemMouseUp?.(newValue);\n }}\n >\n <div className={`ant-picker-calendar-date-value`}>\n {padStart(\"\" + date.date(), 2, '0')}\n </div>\n <div className={`ant-picker-calendar-date-content`}>\n </div>\n </div>\n );\n })}\n headerRender={({value}) => {\n return this.renderCalendarNavigation(value);\n }}\n value={this.state.calendarSelectedDate}\n validRange={[this.props.minDateTime ?? MIN_TIME, this.props.maxDateTime ?? MAX_TIME]}\n onSelect={(value) => {\n if (window.event instanceof MouseEvent) {\n let newValue = this.props.value?.clone() ?? moment().startOf(\"day\");\n newValue = newValue.year(value.year()).month(value.month()).date(value.date());\n this.props.onChange?.(newValue);\n }\n this.setState({calendarSelectedDate: value});\n }}\n />\n </div>\n );\n }\n\n renderInput() {\n const {\n mask,\n value,\n onChange,\n onInvalidValue,\n style,\n disabled,\n inputDisabled,\n bordered,\n hidePopup,\n renderAsCalendar,\n allowClear,\n minDateTime,\n maxDateTime,\n onDateItemMouseDown,\n onDateItemMouseOver,\n onDateItemMouseUp,\n markedDateInterval,\n inputStyle,\n getPopupContainer,\n autoFocus,\n className,\n ...props\n } = this.props;\n\n const isUpDisabled = disabled || this.state.currentInfo.info === undefined || !DateTimeInput.isValid(this.state.currentInfo, this.props.value, 1);\n const isDownDisabled = disabled || this.state.currentInfo.info === undefined || !DateTimeInput.isValid(this.state.currentInfo, this.props.value, -1);\n const unix: number | undefined = value?.valueOf();\n let divClassName = \"custom-date-time-picker\";\n if (disabled || inputDisabled) {\n divClassName += \" ant-input-number disabled ant-input-disabled readonly\";\n } else {\n divClassName += \" ant-input-number\";\n }\n if (bordered === false) {\n divClassName += \" ant-input-borderless\";\n }\n\n const maskedInputStyle = {color: this.state.valid ? \"inherit\" : \"red\", border: \"none\"};\n if (inputStyle) {\n Object.assign(maskedInputStyle, inputStyle);\n }\n\n return (\n <div style={bordered === false ? {...style, border: 0} : style} {...props} className={(className ? className + \" \" : \"\") + divClassName}>\n <div className=\"ant-input-number-input-wrap\"\n onKeyDown={(event) => {\n if (event.keyCode === 38) { // up\n this.increment();\n event.preventDefault();\n event.stopPropagation();\n } else if (event.keyCode === 40) { // down\n this.decrement();\n event.preventDefault();\n event.stopPropagation();\n }\n }}>\n <MaskedInput mask={this.props.mask.replace(/[a-zA-Z]/g, '1')}\n bordered={bordered}\n ref={this.inputRef}\n style={maskedInputStyle}\n value={(this.state.focused || unix !== D2000UnixTimeNullValue * 1000) ? (value?.locale(\"locale.d2000\").format(this.props.mask) ?? \"\") : \"\"}\n placeholder={(!this.state.focused && unix === D2000UnixTimeNullValue * 1000) ? \"Null Time\" : undefined}\n onFocus={(event => {\n event.target.selectionStart = event.target.selectionEnd = this.state.currentPos;\n this.setState({focused: true});\n })}\n onBlur={() => {\n this.setState({focused: false});\n }}\n autoFocus={autoFocus}\n disabled={disabled || inputDisabled}\n onWheel={(event) => {\n if (event.deltaY > 0) {\n if (!isDownDisabled) {\n this.decrement();\n }\n }\n if (event.deltaY < 0) {\n if (!isUpDisabled) {\n this.increment();\n }\n }\n }}\n onMouseUp={this.recalc}\n onKeyUp={this.recalc}\n onChange={(event) => {\n const inputString = event.target.value;\n const value: MaskResult = DateTimeInput.parseDateTimeFormat(inputString, this.props.mask, event.target.selectionStart);\n if (value.time !== undefined) {\n if (this.props.minDateTime !== undefined && value.time.isBefore(this.props.minDateTime)) {\n value.time = this.props.minDateTime.clone();\n }\n\n if (this.props.maxDateTime !== undefined && value.time.isAfter(this.props.maxDateTime)) {\n value.time = this.props.maxDateTime.clone();\n }\n onChange?.(value.time.clone());\n } else if (!!this.props.allowClear && !inputString) {\n onChange?.(null);\n } else {\n onInvalidValue?.(inputString);\n }\n this.setState({\n valid: (value.time !== undefined && value.time.isValid()) || (!!this.props.allowClear && !inputString),\n currentInfo: value\n })\n }}/>\n </div>\n {!hidePopup && !renderAsCalendar && <div className={\"ant-input-number-handler-wrap\"}\n style={{\n width: 28,\n opacity: 1,\n height: \"100%\",\n textAlign: \"center\",\n cursor: \"pointer\",\n background: \"transparent\",\n border: bordered === false ? 0 : undefined\n }}\n onClick={(event) => {\n if (document.createEvent) {\n var ev = document.createEvent('HTMLEvents');\n ev.initEvent('contextmenu', true, false);\n event.target.dispatchEvent(ev);\n }\n }}\n >\n <CalendarOutlined style={{color: \"rgba(0,0,0,0.65)\", verticalAlign: \"middle\", marginTop: 2}}/>\n </div>}\n </div>\n );\n }\n\n render(): any {\n if (this.props.renderAsCalendar) {\n return this.renderCalendar();\n } else if (this.props.hidePopup) {\n return this.renderInput();\n } else {\n return (\n <Tooltip color={\"white\"} trigger={this.props.disabled ? [] : [\"contextMenu\"]}\n getPopupContainer={this.props.getPopupContainer}\n overlayInnerStyle={{maxHeight: \"100vh\", overflowY: \"auto\", overflowX: \"hidden\", width: 266}}\n onVisibleChange={(visible) => {\n if (visible) {\n this.setState({calendarSelectedDate: this.props.defaultSelectedDate?.clone() ?? this.props.value?.clone() ?? moment().startOf(\"day\")})\n }\n }}\n title={this.renderCalendar()}>\n {this.renderInput()}\n </Tooltip>\n );\n }\n }\n\n private static isValid(info: MaskResult, value: Moment | null, offset: number): boolean {\n const unit = info.info?.unit;\n return this.checkDateValueValidity(value, offset, unit);\n }\n\n private static checkDateValueValidity(value: moment.Moment | null, offset: number, unit: moment.unitOfTime.Base | undefined) {\n if (value === null) {\n return false;\n }\n let v = value.clone().add(offset, unit);\n return v.isValid() && v.isSameOrAfter(moment(0));\n }\n\n private static parseDateTimeFormat(value: string, mask: string, cursorPos: number | null): MaskResult {\n let result: MaskResult = {\n time: moment(0).startOf(\"day\"),\n info: undefined,\n length: 0,\n };\n\n for (let v of DATE_TIME_DATA_MAP) {\n let index: number = -1;\n let length: number = 0;\n\n if (Array.isArray(v.key)) {\n for (let x of v.key) {\n index = mask.indexOf(x);\n\n if (index !== -1) {\n length = x.length;\n break;\n }\n }\n } else {\n index = mask.indexOf(v.key);\n length = v.key.length;\n }\n\n if (index !== -1) {\n let val: number = Number(value.substring(index, index + length));\n\n if (!isNaN(val) && val >= v.min && val <= v.max) {\n if (v.unit === \"M\") {\n val--; // 0-11\n }\n\n if (v.unit === \"d\") {\n result.time?.set('D', val);\n } else {\n result.time?.set(v.unit, val);\n }\n } else {\n result.time = undefined;\n result.info = undefined;\n result.length = 0;\n break;\n }\n\n if (cursorPos !== null && cursorPos >= index && cursorPos <= index + length) {\n result.info = v;\n result.length = length;\n }\n }\n }\n\n return result;\n }\n}"]}
|
|
1
|
+
{"version":3,"file":"dateTimeInput.js","sourceRoot":"","sources":["../../../../components/date/dateTimeInput.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, {HTMLAttributes, RefObject} from \"react\";\nimport MaskedInput from \"../input/maskedInput\";\nimport padStart from 'lodash/padStart';\nimport isEqual from 'lodash/isEqual';\nimport debounce from 'lodash/debounce';\nimport moment, {Moment} from \"moment\";\nimport {CalendarOutlined} from \"@ant-design/icons\";\nimport {Button, Calendar, Select, Tooltip} from \"antd\";\nimport {Key} from \"ts-key-enum\";\nimport {D2000UnixTimeNullValue} from \"d2core/types/unixTimeUtils\";\n\n\ninterface DateTimeInputProps extends Omit<HTMLAttributes<HTMLDivElement>, \"onChange\"> {\n mask: string\n value: Moment | null\n onChange?: (time: Moment | null) => void\n onInvalidValue?: (inputString: string) => void\n // allows to set no (null) date by datepicker\n allowClear?: boolean\n disabled?: boolean\n // disable only input component - useful when calendar popup is opened\n inputDisabled?: boolean\n minDateTime?: Moment\n maxDateTime?: Moment\n\n bordered?: boolean\n hidePopup?: boolean\n renderAsCalendar?: boolean\n autoFocus?: boolean\n\n // special methods for rendering date range\n defaultSelectedDate?: Moment\n markedDateInterval?: [Moment, Moment]\n onDateItemMouseDown?: (date: Moment) => void\n onDateItemMouseUp?: (date: Moment) => void\n onDateItemMouseOver?: (date: Moment) => void\n\n inputStyle?: React.CSSProperties\n getPopupContainer?: (triggerNode: HTMLElement) => HTMLElement;\n\n ignoreKeyStrokes?: boolean\n}\n\ninterface DateTimeInputState {\n valid: boolean\n currentPos: number | null\n currentInfo: MaskResult\n popupCalendarVisible: boolean\n\n calendarSelectedDate: Moment\n focused: boolean\n}\n\ninterface MaskResult {\n time: Moment | undefined\n info: InfoEntry | undefined\n length: number\n}\n\ninterface InfoEntry {\n key: string | string[]\n min: number\n max: number\n unit: moment.unitOfTime.Base\n}\n\nconst DATE_TIME_DATA_MAP: InfoEntry[] = [\n {key: \"SSS\", min: 0, max: 999, unit: \"ms\"},\n {key: \"ss\", min: 0, max: 59, unit: \"s\"},\n {key: \"mm\", min: 0, max: 59, unit: \"m\"},\n {key: \"HH\", min: 0, max: 23, unit: \"h\"},\n {key: [\"YYYY\", \"YY\"], min: 1970, max: 9999, unit: \"y\"},\n {key: \"MM\", min: 1, max: 12, unit: \"M\"},\n {key: \"DD\", min: 1, max: 31, unit: \"d\"},\n];\n\nconst MIN_TIME = moment.unix(0);\nconst MAX_TIME = moment().add(1000, \"year\");\n\nexport function allowDatesBeforeEpoch() {\n DATE_TIME_DATA_MAP[4].min = 1902;\n}\n\nexport default class DateTimeInput extends React.Component<DateTimeInputProps, DateTimeInputState> {\n private inputRef: RefObject<MaskedInput> = React.createRef();\n private today: Moment = moment();\n\n constructor(props: Readonly<DateTimeInputProps>) {\n super(props);\n this.state = {\n valid: (!!props.value && props.value.isValid()) || (!!props.allowClear && props.value === null),\n currentPos: null,\n currentInfo: {\n info: undefined,\n time: undefined,\n length: 0\n },\n popupCalendarVisible: false,\n calendarSelectedDate: props.defaultSelectedDate?.clone() ?? props.value?.clone() ?? moment().startOf('day'),\n focused: false,\n };\n\n this.recalc = this.recalc.bind(this);\n this.increment = this.increment.bind(this);\n this.decrement = this.decrement.bind(this);\n this.onItemMouseOver = debounce(this.onItemMouseOver.bind(this), 100, {maxWait: 100});\n }\n\n componentDidUpdate(prevProps: Readonly<DateTimeInputProps>, _prevState: Readonly<DateTimeInputState>, _snapshot?: any): void {\n if (!isEqual(prevProps, this.props) && this.inputRef.current !== null) {\n this.inputRef.current.input.selectionStart = this.state.currentPos;\n this.inputRef.current.input.selectionEnd = this.state.currentPos;\n if (prevProps.value !== this.props.value) {\n this.setState({valid: (!!this.props.value && this.props.value.isValid()) || (!!this.props.allowClear && this.props.value === null)});\n }\n }\n }\n\n get input() {\n return this.inputRef.current?.input;\n }\n\n focus() {\n this.inputRef.current?.focus();\n }\n\n recalc(): void {\n if (this.inputRef.current !== null) {\n this.setState({\n currentInfo: DateTimeInput.parseDateTimeFormat(this.inputRef.current.input.value, this.props.mask, this.inputRef.current.input.selectionStart),\n currentPos: this.inputRef.current.input.selectionStart,\n });\n }\n }\n\n private increment(): void {\n if (this.state.currentInfo.info !== undefined && !!this.props.value && DateTimeInput.isValid(this.state.currentInfo, this.props.value, 1)) {\n const unit = this.state.currentInfo.info.unit;\n this.incrementDate(unit);\n }\n\n this.inputRef.current?.focus();\n }\n\n private incrementDate(unit: moment.unitOfTime.Base) {\n if (!!this.props.value) {\n this.props.value.add(1, unit);\n if (!!this.props.maxDateTime && this.props.value.isAfter(this.props.maxDateTime)) {\n this.props.onChange?.(this.props.maxDateTime?.clone());\n } else {\n this.props.onChange?.(this.props.value.clone());\n }\n }\n }\n\n private decrement(): void {\n if (this.state.currentInfo.info !== undefined && !!this.props.value && DateTimeInput.isValid(this.state.currentInfo, this.props.value, -1)) {\n const unit = this.state.currentInfo.info.unit;\n this.decrementDate(unit);\n }\n\n this.inputRef.current?.focus();\n }\n\n private decrementDate(unit: moment.unitOfTime.Base) {\n if (!!this.props.value) {\n this.props.value.subtract(1, unit);\n if (!!this.props.minDateTime && this.props.value.isBefore(this.props.minDateTime)) {\n this.props.onChange?.(this.props.minDateTime?.clone());\n } else {\n this.props.onChange?.(this.props.value.clone());\n }\n }\n }\n\n onItemMouseOver(itemDate: Moment) {\n this.props.onDateItemMouseOver?.(itemDate);\n }\n\n private renderCalendarNavigation(value: Moment) {\n const start = 0;\n const end = 12;\n const monthOptions = [];\n\n const current = value.clone();\n const localeData = value.localeData();\n const months = [];\n for (let i = 0; i < 12; i++) {\n current.month(i);\n months.push(localeData.months(current));\n }\n\n for (let index = start; index < end; index++) {\n monthOptions.push(\n <Select.Option className=\"month-item\" key={`${index}`} value={`${index}`}>\n {months[index]}\n </Select.Option>,\n );\n }\n const month = value.month();\n\n const year = value.year();\n const options = [];\n for (let i = year - 4; i <= year + 2; i += 1) {\n options.push(\n <Select.Option key={i} value={i} className=\"year-item\">\n {i}\n </Select.Option>,\n );\n }\n return (\n <div style={{paddingBottom: 8}}>\n <div style={{float: \"left\", paddingBottom: 8, width: 140, display: \"flex\"}}>\n <Button style={{width: 10, padding: 0}} size=\"small\" type=\"text\" tabIndex={-1}\n disabled={!DateTimeInput.checkDateValueValidity(this.state.calendarSelectedDate, -1, \"month\")}\n onClick={() => {\n this.state.calendarSelectedDate.subtract(1, \"month\");\n this.setState({calendarSelectedDate: this.state.calendarSelectedDate});\n }}\n className=\"ant-picker-header-prev-btn\"><span\n className=\"ant-picker-prev-icon\"/></Button>\n <Select\n style={{flex: \"1 1 auto\"}}\n size=\"small\"\n dropdownMatchSelectWidth={false}\n dropdownStyle={{zIndex: 2070}}\n getPopupContainer={this.props.getPopupContainer}\n value={String(month)}\n onChange={selectedMonth => {\n const newValue = this.state.calendarSelectedDate.clone();\n newValue.month(parseInt(selectedMonth, 10));\n this.setState({calendarSelectedDate: newValue});\n }}\n >\n {monthOptions}\n </Select>\n <Button style={{width: 10, padding: 0}} size=\"small\" type=\"text\" tabIndex={-1}\n className=\"ant-picker-header-next-btn\"\n onClick={() => {\n this.state.calendarSelectedDate.add(1, \"month\");\n this.setState({calendarSelectedDate: this.state.calendarSelectedDate});\n }}>\n <span className=\"ant-picker-next-icon\"/>\n </Button>\n </div>\n <div style={{float: \"right\", paddingBottom: 8, width: 110}}>\n <Button style={{width: 12, padding: 0}} size=\"small\" type=\"text\" tabIndex={-1}\n className=\"ant-picker-header-prev-btn\"\n onClick={() => {\n this.state.calendarSelectedDate.subtract(1, \"year\");\n this.setState({calendarSelectedDate: this.state.calendarSelectedDate});\n }}>\n <span className=\"ant-picker-prev-icon\"/>\n </Button>\n <Select\n size=\"small\"\n style={{width: 84}}\n dropdownMatchSelectWidth={false}\n dropdownStyle={{zIndex: 2070}}\n getPopupContainer={this.props.getPopupContainer}\n onChange={newYear => {\n const newValue = this.state.calendarSelectedDate.clone().year(parseInt(newYear, 10));\n this.setState({calendarSelectedDate: newValue});\n }}\n value={String(year)}\n >\n {options}\n </Select>\n <Button style={{width: 12, padding: 0}} size=\"small\" type=\"text\" tabIndex={-1}\n className=\"ant-picker-header-next-btn\"\n onClick={() => {\n this.state.calendarSelectedDate.add(1, \"year\");\n this.setState({calendarSelectedDate: this.state.calendarSelectedDate});\n }}>\n <span className=\"ant-picker-next-icon\"/>\n </Button>\n </div>\n </div>\n );\n }\n\n renderCalendar(): React.ReactElement {\n return (<div\n onKeyDown={!this.props.ignoreKeyStrokes ? (e) => {\n if (e.key === Key.Enter) {\n var tagName = (e.target as any)?.tagName?.toLowerCase();\n if (tagName !== \"input\") {\n this.props.onChange?.(this.state.calendarSelectedDate);\n }\n }\n } : undefined}\n onMouseOver={(e) => {\n if (e.target instanceof HTMLTableCellElement) {\n const date = moment(e.target.title, \"YYYY-MM-DD\");\n this.onItemMouseOver(date);\n }\n }}>\n <Calendar\n fullscreen={false}\n style={this.props.renderAsCalendar ? this.props.style : undefined}\n dateFullCellRender={((date: Moment) => {\n let className = date.isSame(this.today, \"date\") ? 'ant-picker-cell-inner ant-picker-calendar-date ant-picker-calendar-date-today' : 'ant-picker-cell-inner ant-picker-calendar-date';\n const markedDateInterval = this.props.markedDateInterval;\n if (markedDateInterval && (markedDateInterval[0].isBefore(date) || markedDateInterval[0].isSame(date, \"millisecond\")) &&\n (markedDateInterval[1].isAfter(date) || markedDateInterval[1].isSame(date, \"millisecond\"))) {\n className += \" date-picker-item-marked\";\n } else if (date.isSame(this.props.value, \"date\")) {\n className += \" date-picker-item-marked\";\n }\n return (\n <div className={className} style={{userSelect: \"none\"}}\n onKeyDown={(e) => {\n if (e.key === Key.Enter) {\n let newValue = this.props.value?.clone() ?? moment().startOf(\"day\");\n newValue = newValue.year(date.year()).month(date.month()).date(date.date());\n this.props.onChange?.(date);\n }\n }}\n onMouseDown={() => {\n let newValue = this.props.value?.clone() ?? moment().startOf(\"day\");\n newValue = newValue.year(date.year()).month(date.month()).date(date.date());\n this.props.onDateItemMouseDown?.(newValue);\n }}\n onMouseUp={() => {\n let newValue = this.props.value?.clone() ?? moment().startOf(\"day\");\n newValue = newValue.year(date.year()).month(date.month()).date(date.date());\n this.props.onDateItemMouseUp?.(newValue);\n }}\n >\n <div className={`ant-picker-calendar-date-value`}>\n {padStart(\"\" + date.date(), 2, '0')}\n </div>\n <div className={`ant-picker-calendar-date-content`}>\n </div>\n </div>\n );\n })}\n headerRender={({value}) => {\n return this.renderCalendarNavigation(value);\n }}\n value={this.state.calendarSelectedDate}\n validRange={[this.props.minDateTime ?? MIN_TIME, this.props.maxDateTime ?? MAX_TIME]}\n onSelect={(value) => {\n if (window.event instanceof MouseEvent) {\n let newValue = this.props.value?.clone() ?? moment().startOf(\"day\");\n newValue = newValue.year(value.year()).month(value.month()).date(value.date());\n this.props.onChange?.(newValue);\n }\n this.setState({calendarSelectedDate: value, popupCalendarVisible: false});\n }}\n />\n </div>\n );\n }\n\n renderInput() {\n const {\n mask,\n value,\n onChange,\n onInvalidValue,\n style,\n disabled,\n inputDisabled,\n bordered,\n hidePopup,\n renderAsCalendar,\n allowClear,\n minDateTime,\n maxDateTime,\n onDateItemMouseDown,\n onDateItemMouseOver,\n onDateItemMouseUp,\n markedDateInterval,\n inputStyle,\n getPopupContainer,\n autoFocus,\n className,\n ...props\n } = this.props;\n\n const isUpDisabled = disabled || this.state.currentInfo.info === undefined || !DateTimeInput.isValid(this.state.currentInfo, this.props.value, 1);\n const isDownDisabled = disabled || this.state.currentInfo.info === undefined || !DateTimeInput.isValid(this.state.currentInfo, this.props.value, -1);\n const unix: number | undefined = value?.valueOf();\n let divClassName = \"custom-date-time-picker\";\n if (disabled || inputDisabled) {\n divClassName += \" ant-input-number disabled ant-input-disabled readonly\";\n } else {\n divClassName += \" ant-input-number\";\n }\n if (bordered === false) {\n divClassName += \" ant-input-borderless\";\n }\n\n const maskedInputStyle = {color: this.state.valid ? \"inherit\" : \"red\", border: \"none\"};\n if (inputStyle) {\n Object.assign(maskedInputStyle, inputStyle);\n }\n\n return (\n <div style={bordered === false ? {...style, border: 0} : style} {...props} className={(className ? className + \" \" : \"\") + divClassName}>\n <div className=\"ant-input-number-input-wrap\"\n onKeyDown={(event) => {\n if (event.keyCode === 38) { // up\n this.increment();\n event.preventDefault();\n event.stopPropagation();\n } else if (event.keyCode === 40) { // down\n this.decrement();\n event.preventDefault();\n event.stopPropagation();\n }\n }}>\n <MaskedInput mask={this.props.mask.replace(/[a-zA-Z]/g, '1')}\n bordered={bordered}\n ref={this.inputRef}\n style={maskedInputStyle}\n value={(this.state.focused || unix !== D2000UnixTimeNullValue * 1000) ? (value?.locale(\"locale.d2000\").format(this.props.mask) ?? \"\") : \"\"}\n placeholder={(!this.state.focused && unix === D2000UnixTimeNullValue * 1000) ? \"Null Time\" : undefined}\n onFocus={(event => {\n event.target.selectionStart = event.target.selectionEnd = this.state.currentPos;\n this.setState({focused: true});\n })}\n onBlur={() => {\n this.setState({focused: false});\n }}\n autoFocus={autoFocus}\n disabled={disabled || inputDisabled}\n onWheel={(event) => {\n if (event.deltaY > 0) {\n if (!isDownDisabled) {\n this.decrement();\n }\n }\n if (event.deltaY < 0) {\n if (!isUpDisabled) {\n this.increment();\n }\n }\n }}\n onMouseUp={this.recalc}\n onKeyUp={this.recalc}\n onChange={(event) => {\n const inputString = event.target.value;\n const value: MaskResult = DateTimeInput.parseDateTimeFormat(inputString, this.props.mask, event.target.selectionStart);\n if (value.time !== undefined) {\n if (this.props.minDateTime !== undefined && value.time.isBefore(this.props.minDateTime)) {\n value.time = this.props.minDateTime.clone();\n }\n\n if (this.props.maxDateTime !== undefined && value.time.isAfter(this.props.maxDateTime)) {\n value.time = this.props.maxDateTime.clone();\n }\n onChange?.(value.time.clone());\n } else if (!!this.props.allowClear && !inputString) {\n onChange?.(null);\n } else {\n onInvalidValue?.(inputString);\n }\n this.setState({\n valid: (value.time !== undefined && value.time.isValid()) || (!!this.props.allowClear && !inputString),\n currentInfo: value\n })\n }}/>\n </div>\n {!hidePopup && !renderAsCalendar && <div className={\"ant-input-number-handler-wrap\"}\n style={{\n width: 28,\n opacity: 1,\n height: \"100%\",\n textAlign: \"center\",\n cursor: \"pointer\",\n background: \"transparent\",\n border: bordered === false ? 0 : undefined\n }}\n onClick={(event) => {\n if (document.createEvent) {\n var ev = document.createEvent('HTMLEvents');\n ev.initEvent('contextmenu', true, false);\n event.target.dispatchEvent(ev);\n }\n }}\n >\n <CalendarOutlined style={{color: \"rgba(0,0,0,0.65)\", verticalAlign: \"middle\", marginTop: 2}}/>\n </div>}\n </div>\n );\n }\n\n render(): any {\n if (this.props.renderAsCalendar) {\n return this.renderCalendar();\n } else if (this.props.hidePopup) {\n return this.renderInput();\n } else {\n return (\n <Tooltip color={\"white\"} trigger={this.props.disabled ? [] : [\"contextMenu\"]}\n getPopupContainer={this.props.getPopupContainer}\n overlayInnerStyle={{maxHeight: \"100vh\", overflowY: \"auto\", overflowX: \"hidden\", width: 266}}\n visible={this.state.popupCalendarVisible}\n onVisibleChange={(visible) => {\n this.setState({popupCalendarVisible: visible});\n if (visible) {\n this.setState({calendarSelectedDate: this.props.defaultSelectedDate?.clone() ?? this.props.value?.clone() ?? moment().startOf(\"day\")})\n }\n }}\n title={this.renderCalendar()}>\n {this.renderInput()}\n </Tooltip>\n );\n }\n }\n\n private static isValid(info: MaskResult, value: Moment | null, offset: number): boolean {\n const unit = info.info?.unit;\n return this.checkDateValueValidity(value, offset, unit);\n }\n\n private static checkDateValueValidity(value: moment.Moment | null, offset: number, unit: moment.unitOfTime.Base | undefined) {\n if (value === null) {\n return false;\n }\n let v = value.clone().add(offset, unit);\n return v.isValid() && v.isSameOrAfter(moment(0));\n }\n\n private static parseDateTimeFormat(value: string, mask: string, cursorPos: number | null): MaskResult {\n let result: MaskResult = {\n time: moment(0).startOf(\"day\"),\n info: undefined,\n length: 0,\n };\n\n for (let v of DATE_TIME_DATA_MAP) {\n let index: number = -1;\n let length: number = 0;\n\n if (Array.isArray(v.key)) {\n for (let x of v.key) {\n index = mask.indexOf(x);\n\n if (index !== -1) {\n length = x.length;\n break;\n }\n }\n } else {\n index = mask.indexOf(v.key);\n length = v.key.length;\n }\n\n if (index !== -1) {\n let val: number = Number(value.substring(index, index + length));\n\n if (!isNaN(val) && val >= v.min && val <= v.max) {\n if (v.unit === \"M\") {\n val--; // 0-11\n }\n\n if (v.unit === \"d\") {\n result.time?.set('D', val);\n } else {\n result.time?.set(v.unit, val);\n }\n } else {\n result.time = undefined;\n result.info = undefined;\n result.length = 0;\n break;\n }\n\n if (cursorPos !== null && cursorPos >= index && cursorPos <= index + length) {\n result.info = v;\n result.length = length;\n }\n }\n }\n\n return result;\n }\n}"]}
|
|
@@ -1144,10 +1144,10 @@ export default class DataGrid extends React.Component {
|
|
|
1144
1144
|
record = [];
|
|
1145
1145
|
do {
|
|
1146
1146
|
row = model.getRow(index);
|
|
1147
|
-
if (!row) {
|
|
1147
|
+
if (!row || !row.data) {
|
|
1148
1148
|
await TimeUtils.sleep(100);
|
|
1149
1149
|
}
|
|
1150
|
-
} while (!row);
|
|
1150
|
+
} while (!row || !row.data);
|
|
1151
1151
|
columns.forEach((column) => {
|
|
1152
1152
|
record.push(this.getValue(column.column, row));
|
|
1153
1153
|
});
|
|
@@ -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\";\n\nimport {\n ColumnWidthOutlined,\n ControlOutlined,\n DownloadOutlined,\n FileSearchOutlined,\n LoadingOutlined,\n ReloadOutlined,\n SearchOutlined,\n SettingOutlined,\n TableOutlined\n} from \"@ant-design/icons\";\n\nimport {Button, Card, Dropdown, Empty, Input, Menu} from \"antd\";\nimport {AgGridReact} from \"ag-grid-react\";\nimport 'ag-grid-community/dist/styles/ag-grid.css';\nimport 'ag-grid-community/dist/styles/ag-theme-balham.css';\nimport 'd2coreui/style/ag-grid/aggrid-adaptations.css'\nimport TextColumnFilter from \"d2coreui/components/grid/filter/textColumnFilter\"\nimport CustomColumnFilter from \"d2coreui/components/grid/filter/customColumnFilter\"\nimport SimpleHeader from \"d2coreui/components/grid/header/simpleHeader\"\nimport DataGridEditor from \"d2coreui/components/grid/config/dataGridEditor\";\nimport i18n from \"d2core/i18n/i18n\";\nimport AutoCompleteInput from \"d2coreui/components/input/autoCompleteInput\";\nimport isEqual from \"lodash/isEqual\"\nimport ContextMenu, {ContextMenuProps} from \"d2coreui/components/grid/export/contextMenu\";\nimport LoadingOverlay from \"d2coreui/components/grid/panel/loadingOverlay\";\nimport NoRecordsOverlay from \"d2coreui/components/grid/panel/noRecordsOverlay\";\nimport at from \"lodash/at\"\nimport ColumnTransfer from \"d2coreui/components/grid/config/columnTransfer\";\nimport cloneDeep from \"lodash/cloneDeep\";\nimport escape from \"lodash/escape\";\nimport {RangeSelector} from \"d2coreui/components/grid/cell/rangeSelector\"\nimport {WildcardQuickFilter} from \"d2coreui/components/grid/cell/wildcardQuickFilter\";\nimport {\n CellClassParams,\n CellContextMenuEvent,\n CellFocusedEvent,\n CellMouseDownEvent,\n CellPosition,\n ColDef,\n ColDefUtil,\n Column,\n ColumnApi,\n ColumnEvent,\n ColumnState,\n FilterChangedEvent,\n FilterModifiedEvent,\n GetQuickFilterTextParams,\n GridApi,\n GridOptions,\n GridReadyEvent,\n ICellRendererParams,\n IRowModel,\n NavigateToNextCellParams,\n PaginationChangedEvent,\n RowClassParams,\n RowDataUpdatedEvent,\n RowNode,\n RowStyle,\n SortChangedEvent,\n SuppressKeyboardEventParams,\n ValueFormatterParams,\n ValueGetterParams,\n ViewportChangedEvent\n} from \"ag-grid-community\";\nimport {LocaleHolder} from \"d2core/i18n/localeHolder\";\nimport tableDefaultRowStyleRules, {\n GRID_DEFAULT_FONT_SIZE,\n GridRowStyle,\n RowStyleRule\n} from \"d2coreui/components/grid/cell/tableDefaultRowStyleRules\";\nimport {ModalDialog, ModalDialogMode} from \"d2coreui/components/modal/modalDialog\";\nimport debounce from \"lodash/debounce\";\nimport {Key} from \"ts-key-enum\";\nimport {ClipboardUtils} from \"d2coreui/components/clipboard/clipboardUtils\";\nimport ProgressPopup from \"d2coreui/components/grid/export/progressPopup\";\nimport TimeUtils from \"d2core/utils/timeUtils\";\nimport KeyboardUtils from \"d2coreui/components/keyboard/keyboardUtils\";\nimport NumberCellEditor from \"d2coreui/components/grid/cell/numberCellEditor\";\nimport TextCellEditor from \"d2coreui/components/grid/cell/textCellEditor\";\nimport StatusTextCellEditor from \"d2coreui/components/grid/cell/statusTextCellEditor\";\nimport DateCellEditor from \"d2coreui/components/grid/cell/dateCellEditor\";\nimport memoizeOne from \"memoize-one\";\nimport SimpleStatusTextCellEditor from \"d2coreui/components/grid/cell/simpleStatusTextCellEditor\";\nimport DurationCellEditor from \"d2coreui/components/grid/cell/durationCellEditor\";\nimport CustomEnumCellEditor from \"d2coreui/components/grid/cell/customEnumCellEditor\";\nimport HexaValueCellEditor from \"d2coreui/components/grid/cell/hexaValueCellEditor\";\nimport HexaOctetStringCellEditor from \"d2coreui/components/grid/cell/hexaOctetStringCellEditor\";\nimport ReactDOM from \"react-dom\";\nimport {D2000UnixTimeNullValue, unixTimeToMoment} from \"d2core/types/unixTimeUtils\";\nimport {compileExpression} from \"filtrex\";\nimport DataGridPagination from \"./panel/dataGridPagination\";\n\nconst gridFrameworkComponents = {\n customColumnFilter: CustomColumnFilter,\n textColumnFilter: TextColumnFilter,\n numberCellEditor: NumberCellEditor,\n textCellEditor: TextCellEditor,\n simpleStatusTextCellEditor: SimpleStatusTextCellEditor,\n statusTextCellEditor: StatusTextCellEditor,\n dateCellEditor: DateCellEditor,\n durationCellEditor: DurationCellEditor,\n customEnumCellEditor: CustomEnumCellEditor,\n hexaValueCellEditor: HexaValueCellEditor,\n hexaOctetStringCellEditor: HexaOctetStringCellEditor,\n simpleHeader: SimpleHeader,\n loadingOverlay: LoadingOverlay,\n noRecordsOverlay: NoRecordsOverlay\n};\n\nconst ROW_HEIGHT_DELTA_FROM_FONT_SIZE = 16;\n\nfunction getRowNodeId(item: { id: number | string }): string {\n return item.id + \"\";\n}\n\nconst rowStyleRuleCompiledExpressions: { [key: string]: (parameters: any) => any } = {};\n\n/**\n * Special separator for part of the column which should be exported\n */\nexport const EXPORT_SEPARATOR = \"\\n\";\n\nexport type MenuElement = JSX.Element;\n\nconst enum NavigationEventEnum {\n KEYBOARD,\n MOUSE\n}\n\n/**\n * Extended viewport change event\n */\nexport interface DataGridViewportChangedEvent extends ViewportChangedEvent {\n // delta number of rows table moved during paging/scrolling of the table\n // negative number when paged/scrolled backwards to first record, positive number when paged/scrolled forwards to last record\n rowsScrollingDelta: number\n}\n\nexport type SortMode = \"asc\" | \"desc\"\n\n/**\n * Represents sorting definition for one column\n */\nexport interface SortItem {\n colId: string;\n sort: SortMode;\n}\n\ninterface ColumnInfo {\n column: Column,\n displayName: string,\n isDateField: boolean\n isDateTimeField: boolean\n}\n\nexport type FilterRenderer = (value: string, changeValue: (newValue: string) => void, onSearch: () => void) => React.ReactNode\n\n/*\n * Extended table column definition\n */\nexport interface DataGridColDef extends Omit<ColDef, \"cellStyle\"> {\n // localized name of group of columns to which column belongs to\n group: string\n // context of column definition\n context?: any\n\n // override of ag-grid api with undefined styles\n cellStyle?: { [cssProperty: string]: string | number | null } | ((cellClassParams: CellClassParams) => { [cssProperty: string]: string | number | null } | undefined);\n\n\n // custom filter render method\n renderFilter?: FilterRenderer\n}\n\n// prevent logging warning logs of unknown column definition attributes\nColDefUtil.FRAMEWORK_PROPERTIES.push(\"group\", \"context\", \"cellStyle\", \"renderFilter\");\n\nexport interface DataGridFilterProps {\n // flag if floating filters (beneath column headers) are visible\n columnSearchVisible?: boolean\n // visibility handler for floating filters\n onColumnSearchVisible?: (visible: boolean) => void\n\n // returns floating filters (beneath column headers) current model (essential when filters should be pre-filled when shown from e.g. searchbox)\n getFilterModel?(): any\n\n // floating filter changed event (e.g. when pressing enter in floating filter textbox)\n onFilterChanged?(event: FilterChangedEvent): void;\n\n // floating filter modify event (e.g. when modifying value in floating filter textbox)\n onFilterModified?(event: FilterModifiedEvent): void;\n\n // method called when enter is pressed in the floating filter\n onFilterConfirmed?(): void\n}\n\nexport interface DataGridSearchProps {\n // placeholder to show in search field when no value is entered\n placeholder?: string\n // current search string\n searchString?: string\n // current search history available for search field popup\n searchHistory?: string[]\n // custom search button class name\n searchButtonClassName?: string\n // search button disabled\n searchButtonDisabled?: boolean\n // hide searchbox\n hidden?: boolean\n\n // custom search field renderer\n searchRenderer?(): React.ReactNode\n\n // disable searchbox\n inputReadonly?: boolean\n\n // formatting showed strings in search and history\n stringFormatter?(rawString: string): string\n\n // search field value changed\n onChange?(searchString: string): void\n\n // called when new search is invoked by pressing search button or enter in the search field\n onSearch?(): void\n}\n\n// callback called when data are loaded from backend\nexport type OnLoadDataCallback = (totalRecords: number) => void\n\n/**\n * Data Grid properties, differences to AgGrid:\n * columnDefinitions (columnDefs) does not support column groups for now\n * paginationPageSize for defining size of page is not available, use paging.pageSize instead\n */\nexport interface DataGridProps extends Omit<GridOptions, \"columnDefs\" | \"paginationPageSize\" | \"getRowStyle\" | \"cellStyle\"> {\n // linking grid options (used for aligned grids feature: https://www.ag-grid.com/javascript-grid-aligned-grids/)\n gridOptions?: GridOptions\n // column definitions\n columnDefs: DataGridColDef[]\n // for aligned grids functionality\n disableColumnDefsPreprocessing?: boolean\n\n // realColumnDefs building handler\n onColumnDefsAdapted?(columnDefs: ColDef[]): void\n\n // shows table configuration panel\n tableConfigVisible?: boolean,\n // shows column configuration panel\n columnsConfigVisible?: boolean,\n // style of panel surrounding datagrid\n panelStyle?: React.CSSProperties,\n // style of panel surrounding table part\n tablePanelStyle?: React.CSSProperties,\n // floating filter configuration\n filter?: DataGridFilterProps\n // search bar configuration\n search?: DataGridSearchProps\n // table paging configuration\n paging: {\n /* current size of table page:\n - value -1 means no paging at all (scrollbar only)\n - value 0 means automatic paging (page size automatically adjusted based on available height for table)\n - value >0 defines statically defined page size (number of rows) for the table\n */\n pageSize: number,\n // default size used when configuration is reverted\n defaultPageSize?: number,\n /**\n * Page size change handler\n * @param currentPageSize - current page size represents number rows available\n * @param definedPageSize -\n */\n onPaginationChanged?: (currentPageSize: number | null, definedPageSize: number) => void;\n }\n\n // load data handler - called by grid always when it needs data\n onLoadData(callback: OnLoadDataCallback): void\n\n // automatic focus to first cell of selected row after loading of data is complete\n autofocus?: boolean\n\n // handler for keys pressed in data grid\n onKeyPressed?(event: KeyboardEvent): void\n\n // enter handler\n onEnter?: () => void;\n\n // ids of currently selected rows\n selectedIds?: (number | string)[]\n\n // rules for styling table rows\n rowStyleRules: RowStyleRule[]\n\n // default rules for styling table rows, used when configuration is reverted\n defaultRowStyleRules?: RowStyleRule[]\n\n // row styles change handler\n onChangeRowStyleRules?(rowStyleRules: RowStyleRule[]): void\n\n // extra buttons rendered before the search bar\n toolbar?: {\n // custom renderer for the whole toolbar panel\n renderToolbar?(originalSearchBar: ReactElement): ReactElement\n\n // extra buttons rendered in toolbar\n toolbarButtons?: ReactElement\n\n // hide records count\n hideRecordCount?: boolean\n }\n\n // row height change handler (height is changed from table configuration screen)\n onRowHeightChanged?(rowHeight: number): void\n\n // columns state change handler\n onColumnsChanged?(columnModel: ColumnState[], event: ColumnEvent): void\n\n // table configuration panel visibility change handler\n onTableConfigVisible?(visible: boolean): void\n\n // column configuration panel visibility change handler\n onColumnsConfigVisible?(visible: boolean): void\n\n // customized renderer for displaying loading progress\n loadingOverlayRenderer?(): ReactElement | null\n\n // customized renderer for displaying no records information\n noRecordsOverlayRenderer?(): ReactElement | null\n\n // customized renderer for displaying data over table\n tableOverlayRenderer?(): ReactElement | null\n\n showMilliseconds?: boolean\n\n defaultShowMilliseconds?: boolean\n\n onShowMilliseconds?(show: boolean, callback: () => void): void\n\n hideYear?: boolean\n\n defaultHideYear?: boolean\n\n onShowYear?(show: boolean, callback: () => void): void\n\n // export menu configuration\n exportMenu?: {\n // overides export menu rendering\n renderer?(menuElements: MenuElement[]): MenuElement[]\n // handler for custom export menu items click\n onClick?(key: string): void\n }\n\n // settings menu configuration\n settingsMenu?: {\n // overides setting menu rendering\n renderer?(menuElements: MenuElement[]): MenuElement[]\n // handler for custom settings menu items click\n onClick?(key: string): void\n }\n\n // context menu configuration (right click on the table rows)\n contextMenu?: {\n // overides context menu rendering\n renderer?(menuElements: MenuElement[]): MenuElement[]\n // handler for custom context menu items click\n onClick?(key: string): void\n }\n\n // override of ag-grid api with undefined styles\n getRowStyle?(params: any): GridRowStyle | undefined\n}\n\ninterface DataGridState {\n pageIndex: number\n pageSize: number | null\n recordsCount?: number\n columnModel: ColumnState[]\n sortModel: SortItem[]\n tableConfigVisible: boolean\n columnsConfigVisible: boolean\n rowHeight: number\n // interval of record's indexes currently shown (first record has index 1)\n viewport: [number, number]\n contextMenuVisible: boolean\n firstLoadDone: boolean\n loading: boolean\n columnTransferHeight: number\n}\n\n\nexport default class DataGrid extends React.Component<DataGridProps, DataGridState> {\n public static defaultProps = {\n paging: {\n pageSize: 0,\n defaultPageSize: 0\n },\n rowStyleRules: tableDefaultRowStyleRules()\n };\n\n wildcardQuickFilter: WildcardQuickFilter;\n columnTypes: { [key: string]: ColDef };\n gridApi?: GridApi;\n gridColumnApi?: ColumnApi;\n // deep copy of columns state before opening editation of columns and its order\n // used in \"cancel changes\" functionality\n columnModelBeforeEdit?: ColumnState[];\n indexToJump: number | null;\n columnToJump: Column | null;\n lastCellFocus?: CellFocusedEvent;\n lastNavigationEvent?: NavigationEventEnum;\n table_context: any;\n private wrappingDiv: HTMLDivElement | null = null;\n\n constructor(props: Readonly<DataGridProps>) {\n super(props);\n this.state = {\n pageIndex: 0,\n pageSize: null,\n recordsCount: undefined,\n columnModel: [],\n sortModel: [],\n tableConfigVisible: !!this.props.tableConfigVisible,\n columnsConfigVisible: !!this.props.columnsConfigVisible,\n rowHeight: 28,\n viewport: [0, 0],\n contextMenuVisible: false,\n firstLoadDone: false,\n loading: false,\n columnTransferHeight: 500\n };\n this.indexToJump = null;\n this.columnToJump = null;\n\n this.onGridReady = this.onGridReady.bind(this);\n this.onPaginationChanged = this.onPaginationChanged.bind(this);\n this.onViewportChanged = this.onViewportChanged.bind(this);\n this.onCellContextMenu = this.onCellContextMenu.bind(this);\n this.onCellFocused = this.onCellFocused.bind(this);\n this.onCellMouseDown = this.onCellMouseDown.bind(this);\n this.setFocusedCellDebounced = debounce(this.setFocusedCellDebounced.bind(this), 200);\n this.noRecordsOverlayRenderer = this.noRecordsOverlayRenderer.bind(this);\n this.loadingOverlayRenderer = this.loadingOverlayRenderer.bind(this);\n this.changePagination = this.changePagination.bind(this);\n this.onColumnsChanged = this.onColumnsChanged.bind(this);\n this.onFilterModified = this.onFilterModified.bind(this);\n this.onFilterChanged = this.onFilterChanged.bind(this);\n this.onFilterConfirmed = this.onFilterConfirmed.bind(this);\n this.onSortChanged = this.onSortChanged.bind(this);\n this.showTableConfiguration = this.showTableConfiguration.bind(this);\n this.showColumnsConfig = this.showColumnsConfig.bind(this);\n this.navigateToNextCell = this.navigateToNextCell.bind(this);\n this.suppressKeyboardEvent = this.suppressKeyboardEvent.bind(this);\n this.onRowDataUpdated = this.onRowDataUpdated.bind(this);\n this._getRowStyle = this._getRowStyle.bind(this);\n this._getRowHeight = this._getRowHeight.bind(this);\n this._getCellStyle = this._getCellStyle.bind(this);\n this.textCustomComparator = this.textCustomComparator.bind(this);\n this.getExportContent = this.getExportContent.bind(this);\n this.getDefaultColDefinition = memoizeOne(this.getDefaultColDefinition.bind(this));\n this.getAdaptedColumnDefs = memoizeOne(this.getAdaptedColumnDefs.bind(this));\n this.getCustomFrameworkComponents = memoizeOne(this.getCustomFrameworkComponents.bind(this));\n\n this.table_context = {\n loadingOverlayRenderer: this.loadingOverlayRenderer,\n noRecordsOverlayRenderer: this.noRecordsOverlayRenderer,\n onFilterConfirmed: this.onFilterConfirmed,\n fontSize: this.state.rowHeight - ROW_HEIGHT_DELTA_FROM_FONT_SIZE,\n lineHeight: this.state.rowHeight - 2\n };\n this.wildcardQuickFilter = new WildcardQuickFilter();\n\n this.columnTypes = {\n \"localizedArrayColumn\": {\n cellRenderer: (params: ICellRendererParams): string => {\n const value = DataGrid.getCellValue<string[]>(params);\n if (value !== undefined) {\n return value.map((s) => i18n(s)).join(\",\");\n } else {\n return \"\";\n }\n },\n filterParams: {\n textCustomComparator: this.textCustomComparator\n },\n filterValueGetter: function (params: ValueGetterParams): string | null {\n const value = DataGrid.getCellValue<string[]>(params);\n if (value !== undefined) {\n return value.map((s) => i18n(s)).join(\",\");\n }\n return null;\n },\n getQuickFilterText: function (params: GetQuickFilterTextParams): string {\n const value = DataGrid.getCellValue<string[]>(params);\n if (value !== undefined) {\n return value.map((s) => i18n(s)).join(\",\");\n }\n return \"\";\n }\n },\n \"numberColumn\": {\n cellRenderer: (params: ICellRendererParams): string => {\n const value = DataGrid.getCellValue<number>(params);\n if (value !== undefined && value !== null) {\n return LocaleHolder.formatNumber(value);\n } else {\n return \"\";\n }\n },\n filterParams: {\n textCustomComparator: this.textCustomComparator\n },\n filterValueGetter: function (params: ValueGetterParams): string | null {\n const value = DataGrid.getCellValue<number>(params);\n if (value) {\n return LocaleHolder.formatNumber(value);\n } else {\n return \"\";\n }\n },\n getQuickFilterText: function (params: GetQuickFilterTextParams): string {\n const value = DataGrid.getCellValue<number>(params);\n if (value !== undefined) {\n return LocaleHolder.formatNumber(value);\n } else {\n return \"\";\n }\n }\n },\n \"dateColumn\": {\n cellRenderer: (params: ICellRendererParams): string => {\n const value = DataGrid.getCellValue<number>(params);\n if (value !== undefined) {\n if (value === D2000UnixTimeNullValue) {\n return \"---\";\n }\n let tooltipValue: string;\n tooltipValue = unixTimeToMoment(value).format(LocaleHolder.getDateTimeFormat(true, true, true));\n return `<span title=\"${tooltipValue}\">${unixTimeToMoment(value).format(LocaleHolder.getDateFormat(!this.props.hideYear))}</span>`\n } else {\n return \"---\";\n }\n },\n valueFormatter: (params: ValueFormatterParams): string => {\n const value = DataGrid.getCellValue<number>(params);\n if (value !== undefined) {\n return unixTimeToMoment(value).format(LocaleHolder.getDateFormat(!this.props.hideYear));\n }\n return \"---\";\n },\n filterParams: {\n textCustomComparator: this.textCustomComparator\n },\n filterValueGetter: (params: ValueGetterParams): string | null => {\n const value = DataGrid.getCellValue<number>(params);\n if (value !== undefined) {\n return unixTimeToMoment(value).format(LocaleHolder.getDateFormat(!this.props.hideYear));\n }\n return null;\n },\n getQuickFilterText: (params: GetQuickFilterTextParams): string => {\n const value = DataGrid.getCellValue<number>(params);\n if (value !== undefined) {\n return unixTimeToMoment(value).format(LocaleHolder.getDateFormat(!this.props.hideYear));\n }\n return \"\";\n }\n },\n \"dateTimeColumn\": {\n cellRenderer: (params: ICellRendererParams): string => {\n const value = DataGrid.getCellValue<number>(params);\n if (value) {\n if (value === D2000UnixTimeNullValue) {\n return \"Null Time\";\n }\n let tooltipValue: string;\n tooltipValue = unixTimeToMoment(value).format(LocaleHolder.getDateTimeFormat(true, true, true));\n return `<span title=\"${tooltipValue}\">${unixTimeToMoment(value).format(LocaleHolder.getDateTimeFormat(!this.props.hideYear, true, this.props.showMilliseconds))}</span>`;\n } else {\n return \"---\";\n }\n },\n valueFormatter: (params: ValueFormatterParams): string => {\n const value = DataGrid.getCellValue<number>(params);\n if (value !== undefined) {\n return unixTimeToMoment(value).format(LocaleHolder.getDateTimeFormat(!this.props.hideYear, true, this.props.showMilliseconds));\n }\n return \"---\";\n },\n filterParams: {\n textCustomComparator: this.textCustomComparator\n },\n filterValueGetter: (params: ValueGetterParams): string | null => {\n const value = DataGrid.getCellValue<number>(params);\n if (value !== undefined) {\n return unixTimeToMoment(value).format(LocaleHolder.getDateTimeFormat(!this.props.hideYear, true, this.props.showMilliseconds));\n }\n return null;\n },\n getQuickFilterText: (params: GetQuickFilterTextParams): string => {\n const value = DataGrid.getCellValue<number>(params);\n if (value !== undefined) {\n return unixTimeToMoment(value).format(LocaleHolder.getDateTimeFormat(!this.props.hideYear, true, this.props.showMilliseconds));\n }\n return \"\";\n }\n },\n \"fromNowDateTimeColumn\": {\n cellRenderer: (params: ICellRendererParams): string => {\n const value = DataGrid.getCellValue<number>(params);\n if (value !== undefined) {\n let tooltipValue: string;\n tooltipValue = unixTimeToMoment(value).format(LocaleHolder.getDateTimeFormat(true, true, true));\n return `<span title=\"${tooltipValue}\">${unixTimeToMoment(value).fromNow()}</span>`;\n } else {\n return \"---\";\n }\n },\n valueFormatter: (params: ValueFormatterParams): string => {\n const value = DataGrid.getCellValue<number>(params);\n if (value !== undefined) {\n return unixTimeToMoment(value).format(LocaleHolder.getDateTimeFormat(!this.props.hideYear, true, this.props.showMilliseconds));\n }\n return \"---\";\n },\n filterParams: {\n textCustomComparator: this.textCustomComparator\n },\n filterValueGetter: (params: ValueGetterParams): string | null => {\n const value = DataGrid.getCellValue<number>(params);\n if (value !== undefined) {\n return unixTimeToMoment(value).format(LocaleHolder.getDateTimeFormat(!this.props.hideYear, true, this.props.showMilliseconds));\n }\n return null;\n },\n getQuickFilterText: (params: GetQuickFilterTextParams): string => {\n const value = DataGrid.getCellValue<number>(params);\n if (value !== undefined) {\n return unixTimeToMoment(value).format(LocaleHolder.getDateTimeFormat(!this.props.hideYear, true, this.props.showMilliseconds));\n }\n return \"\";\n }\n },\n \"escapedValueColumn\": {\n cellRenderer: (params: ICellRendererParams): string => {\n const value = DataGrid.getCellValue<any>(params);\n if (value !== undefined) {\n return `<span style=\"white-space: pre\" title=\"${escape(value)}\">${typeof value === \"string\" ? escape(value.replace(/[\\r\\n]+/g, ' ')) : value}</span>`;\n } else {\n return \"\";\n }\n },\n valueFormatter: (params: ValueFormatterParams): string => {\n const value = DataGrid.getCellValue<any>(params);\n if (value !== undefined) {\n return typeof value === \"string\" ? value.replace(/[\\r\\n]+/g, ' ') : value;\n } else {\n return \"\";\n }\n }\n },\n \"textColumnFilter\": {\n filter: \"agTextColumnFilter\",\n floatingFilter: true,\n floatingFilterComponent: \"textColumnFilter\",\n filterParams: {\n textCustomComparator: this.textCustomComparator\n },\n floatingFilterComponentParams: {\n suppressFilterButton: true,\n },\n },\n \"textColumnServerFilter\": {\n filter: \"agTextColumnFilter\",\n floatingFilter: true,\n floatingFilterComponent: \"textColumnFilter\",\n filterParams: {\n buttons: ['apply'],\n textCustomComparator: this.textCustomComparator\n },\n floatingFilterComponentParams: {\n suppressFilterButton: true,\n },\n },\n \"customColumnServerFilter\": {\n filter: \"agTextColumnFilter\",\n floatingFilter: true,\n floatingFilterComponent: \"customColumnFilter\",\n filterParams: {\n buttons: ['apply'],\n textCustomComparator: this.textCustomComparator\n },\n floatingFilterComponentParams: {\n suppressFilterButton: true,\n },\n },\n \"alignRight\": {}\n };\n }\n\n private static getCellValue<V>(props: any): V | undefined {\n if (props) {\n if (props.colDef.field && typeof props.getValue === \"function\") {\n return props.getValue(props.colDef.field);\n }\n if (props.data && props.colDef && props.colDef.field) {\n return at<V>(props.data, props.colDef.field)[0];\n }\n if (props.value !== undefined) {\n return props.value;\n }\n }\n\n return undefined;\n }\n\n textCustomComparator(filter: string, value: any, filterText: string) {\n const filterTextLowerCase = filterText.toLowerCase();\n const valueLowerCase = value.toString().toLowerCase();\n switch (filter) {\n case 'contains':\n if (filterTextLowerCase.indexOf(\"*\") >= 0 || filterTextLowerCase.indexOf(\"?\") >= 0) {\n const wildcardFilterRegExp = this.wildcardQuickFilter.getWildcardFilterRegExp(filterTextLowerCase);\n if (wildcardFilterRegExp) {\n return wildcardFilterRegExp.test(valueLowerCase);\n } else {\n return valueLowerCase.indexOf(filterTextLowerCase) >= 0;\n }\n } else {\n return valueLowerCase.indexOf(filterTextLowerCase) >= 0;\n }\n case 'notContains':\n return valueLowerCase.indexOf(filterTextLowerCase) === -1;\n case 'equals':\n return valueLowerCase === filterTextLowerCase;\n case 'notEqual':\n // noinspection EqualityComparisonWithCoercionJS\n return valueLowerCase != filterTextLowerCase;\n case 'startsWith':\n return valueLowerCase.indexOf(filterTextLowerCase) === 0;\n case 'endsWith':\n var index = valueLowerCase.lastIndexOf(filterTextLowerCase);\n return index >= 0 && index === (valueLowerCase.length - filterTextLowerCase.length);\n default:\n // should never happen\n console.warn('invalid filter type ' + filter);\n return false;\n }\n }\n\n componentDidUpdate(prevProps: DataGridProps) {\n if (!this.gridApi) {\n return;\n }\n if (this.props.filter && prevProps.filter && this.props.filter.columnSearchVisible !== prevProps.filter.columnSearchVisible) {\n setTimeout(() => {\n if (this.gridApi) {\n this.gridApi.refreshHeader();\n if (this.props.filter && !this.props.filter.columnSearchVisible) {\n this.gridApi.setFilterModel(null);\n this.gridApi.onFilterChanged();\n }\n }\n }, 0);\n }\n // functionality when all data are loaded to table\n if (this.props.rowData && this.props.rowData !== prevProps.rowData) {\n // keep filter model when data are changed\n if (this.props.filter && this.props.filter.getFilterModel) {\n this.gridApi.setFilterModel(this.props.filter.getFilterModel());\n this.gridApi.onFilterChanged();\n }\n // keep sorting model when data are changed\n this.setSortModel(this.state.sortModel);\n this.gridApi.refreshClientSideRowModel(\"group\");\n this.gridApi.redrawRows();\n\n // keep selected rows when data are changed and rows are still present\n const selectedObjectsVisibleInGrid = this.props.rowData.filter((object) => {\n return this.props.selectedIds ? this.props.selectedIds.indexOf(object.id) >= 0 : false;\n });\n if (selectedObjectsVisibleInGrid.length > 0) {\n selectedObjectsVisibleInGrid.forEach((object) => {\n const rowNode = this.gridApi ? this.gridApi.getRowNode(object.id + \"\") : null;\n if (rowNode && !rowNode.isSelected()) {\n rowNode.setSelected(true, true);\n }\n });\n } else {\n this.gridApi.deselectAll();\n }\n }\n // functionality when chunks of data are dynamically loaded from server\n if (this.props.datasource && this.props.datasource !== prevProps.datasource) {\n // resets grid data\n this.gridApi.setDatasource(this.props.datasource);\n }\n this.updateRowHeight();\n }\n\n public setColumnState(columnModel: ColumnState[]) {\n const columnStates: ColumnState[] = [];\n if (columnModel) {\n columnModel.forEach((item: ColumnState) => {\n const columnState = {...item};\n item.sortIndex = undefined;\n item.sort = undefined\n columnStates.push(columnState);\n });\n }\n this.gridColumnApi?.applyColumnState({state: columnStates, defaultState: {sort: null}, applyOrder: true});\n }\n\n public setSortModel(sortModel: SortItem[]) {\n const columnState: ColumnState[] = [];\n if (sortModel) {\n sortModel.forEach((item: any, index: number) => {\n columnState.push({\n colId: item.colId,\n sort: item.sort,\n sortIndex: index\n });\n });\n }\n this.gridColumnApi?.applyColumnState({state: columnState, defaultState: {sort: null}, applyOrder: true});\n }\n\n public getSortModel(): SortItem[] {\n const columnState = this.gridColumnApi?.getColumnState() ?? [];\n const filteredStates = columnState?.filter(item => item.sort != null);\n const indexes: { [colId: string]: number; } = {};\n filteredStates.forEach((state) => {\n if (state.colId) {\n indexes[state.colId] = state.sortIndex as number;\n }\n });\n const res = filteredStates.map(s => {\n return {colId: s.colId, sort: s.sort} as SortItem;\n });\n res.sort((a: any, b: any) => indexes[a.colId] - indexes[b.colId]);\n return res;\n\n }\n\n updateRowHeight() {\n let rowHeight = this.calculateRowHeight(this.props.rowStyleRules);\n if (rowHeight && rowHeight !== this.state.rowHeight) {\n this.changeRowHeight(rowHeight);\n }\n }\n\n calculateRowHeight(rowStyleRules?: RowStyleRule[]): number | undefined {\n let rowHeight;\n if (rowStyleRules) {\n for (let i = 0; i < rowStyleRules.length; i++) {\n if (rowStyleRules[i].key === \"table-font-size\") {\n const currentFontSize = rowStyleRules[i].style.fontSize;\n if (typeof currentFontSize === \"number\") {\n rowHeight = (currentFontSize ? currentFontSize : GRID_DEFAULT_FONT_SIZE) + ROW_HEIGHT_DELTA_FROM_FONT_SIZE;\n } else {\n rowHeight = GRID_DEFAULT_FONT_SIZE + ROW_HEIGHT_DELTA_FROM_FONT_SIZE;\n }\n }\n }\n }\n return rowHeight;\n }\n\n /**\n * Handling setting table gridEditor\n */\n static getDerivedStateFromProps(props: DataGridProps, state: DataGridState) {\n const newState: Partial<DataGridState> = {};\n if (props.tableConfigVisible === true || props.tableConfigVisible === false) {\n if (props.tableConfigVisible !== state.tableConfigVisible) {\n newState.tableConfigVisible = props.tableConfigVisible;\n }\n }\n return newState;\n }\n\n onGridReady(gridReadyEvent: GridReadyEvent): void {\n const gridApi = gridReadyEvent.api;\n const gridColumnApi = gridReadyEvent.columnApi;\n if (!this.gridApi || this.gridApi !== gridApi) {\n // row selection plugin hook\n const rangeSelector = new RangeSelector(this.wrappingDiv);\n rangeSelector.init(gridApi, gridColumnApi);\n // altered quick filter hook for supporting wildcard matching\n this.wildcardQuickFilter.adaptFilterEngine(gridApi);\n this.gridApi = gridApi;\n this.gridColumnApi = gridColumnApi;\n if (this.props.onGridReady) {\n this.props.onGridReady(gridReadyEvent);\n }\n this.setState({\n sortModel: this.getSortModel(),\n columnModel: this.gridColumnApi.getColumnState(),\n });\n this.updateRowHeight();\n }\n }\n\n onPaginationChanged(event: PaginationChangedEvent) {\n if (!this.gridApi) {\n this.onGridReady({type: \"gridReady\", api: event.api, columnApi: event.columnApi});\n }\n if (this.gridApi) {\n const currentPage = this.gridApi.paginationGetCurrentPage();\n const currentPageSize = this.gridApi.paginationGetPageSize();\n let recordsCount = this.props.paging.pageSize >= 0 ? (this.gridApi.paginationIsLastPageFound() ? this.gridApi.paginationGetRowCount() : 0) : this.gridApi.getDisplayedRowCount();\n // process only when onGridReady passed\n if (this.state.pageSize !== currentPageSize) {\n if (this.props.paging.onPaginationChanged) {\n this.props.paging.onPaginationChanged(currentPageSize, this.props.paging.pageSize);\n }\n if (!this.state.firstLoadDone) {\n this.loadData();\n this.setState({firstLoadDone: true});\n }\n }\n this.setState({pageSize: currentPageSize, recordsCount: recordsCount, pageIndex: currentPage});\n if (this.indexToJump !== null && this.columnToJump !== null) {\n this.gridApi.setFocusedCell(this.indexToJump, this.columnToJump);\n this.indexToJump = null;\n }\n }\n if (this.props.onPaginationChanged) {\n this.props.onPaginationChanged(event);\n }\n }\n\n onViewportChanged(event: ViewportChangedEvent) {\n const dataGridEvent = event as DataGridViewportChangedEvent;\n // calculation of the flag that last record is shown\n const rowsScrollingDelta = this.state.viewport[1] ? event.lastRow + 1 - this.state.viewport[1] : event.lastRow + 1;\n dataGridEvent.rowsScrollingDelta = rowsScrollingDelta;\n this.setState({viewport: [event.firstRow + 1, event.lastRow + 1]});\n if (this.props.onViewportChanged) {\n this.props.onViewportChanged(event);\n }\n }\n\n changePagination(pageSize: number): void {\n if (!this.gridApi) {\n return;\n }\n const gridApiWithPrivateAccess = this.gridApi as any;\n if (pageSize > 0) {\n gridApiWithPrivateAccess.gridOptionsWrapper.setProperty('pagination', true);\n gridApiWithPrivateAccess.gridOptionsWrapper.setProperty('paginationAutoPageSize', false);\n this.gridApi.paginationSetPageSize(pageSize);\n if (this.props.paging.onPaginationChanged) {\n this.props.paging.onPaginationChanged(pageSize, pageSize);\n }\n } else if (pageSize === 0) {\n gridApiWithPrivateAccess.gridOptionsWrapper.setProperty('pagination', true);\n gridApiWithPrivateAccess.gridOptionsWrapper.setProperty('paginationAutoPageSize', true);\n // handling AG-Grid bug caused by different previous pageSize state\n const rowHeight = gridApiWithPrivateAccess.gridOptionsWrapper.getRowHeightAsNumber();\n // const rowHeight = this.state.rowHeight;\n const bodyHeight = gridApiWithPrivateAccess.ctrlsService.centerRowContainerCtrl.viewportSizeFeature.getBodyHeight();\n let availablePageSize = 1000;\n if (bodyHeight > 0) {\n availablePageSize = Math.floor(bodyHeight / rowHeight);\n }\n if (this.props.paging.pageSize > availablePageSize) {\n this.gridApi.paginationSetPageSize(1);\n } else {\n // special hack to remove setting page size\n this.gridApi.paginationSetPageSize(null as unknown as number);\n }\n if (this.props.paging && this.props.paging.onPaginationChanged) {\n this.props.paging.onPaginationChanged(this.state.pageSize, 0);\n }\n } else {\n gridApiWithPrivateAccess.gridOptionsWrapper.setProperty('pagination', false);\n gridApiWithPrivateAccess.gridOptionsWrapper.setProperty('paginationAutoPageSize', false);\n if (this.props.paging && this.props.paging.onPaginationChanged) {\n this.props.paging.onPaginationChanged(this.state.pageSize, -1);\n }\n }\n }\n\n showMilliseconds(showMilis: boolean) {\n this.props.onShowMilliseconds?.(showMilis, () => {\n if (!this.gridApi) {\n return;\n }\n if (!this.props.rowModelType || this.props.rowModelType === \"clientSide\") {\n // table is shown\n this.gridApi.refreshClientSideRowModel(\"group\");\n }\n this.gridApi.redrawRows();\n });\n }\n\n showYear(showYear: boolean) {\n this.props.onShowYear?.(showYear, () => {\n if (!this.gridApi) {\n return;\n }\n if (!this.props.rowModelType || this.props.rowModelType === \"clientSide\") {\n // table is shown\n this.gridApi.refreshClientSideRowModel(\"group\");\n }\n this.gridApi.redrawRows();\n });\n }\n\n changeRowHeight(rowHeight: number) {\n this.setState({rowHeight: rowHeight}, () => {\n if (this.gridApi) {\n if (this.props.headerHeight === undefined) {\n this.gridApi.setHeaderHeight(rowHeight + 4);\n }\n if (this.props.floatingFiltersHeight === undefined) {\n this.gridApi.setFloatingFiltersHeight(rowHeight + 4);\n }\n (this.gridApi as any).gridOptionsWrapper.setProperty('rowHeight', rowHeight);\n this.gridApi.resetRowHeights();\n this.gridApi.refreshHeader();\n this.gridApi.redrawRows();\n if (this.props.rowModelType === \"infinite\" && this.props.datasource) {\n // redraws all server side loaded table data\n this.gridApi.setDatasource(this.props.datasource)\n }\n }\n if (this.props.onRowHeightChanged) {\n this.props.onRowHeightChanged(rowHeight);\n }\n });\n }\n\n onGoToPage(pageIndex: number) {\n if (this.gridApi) {\n this.gridApi.paginationGoToPage(pageIndex);\n }\n }\n\n loadData(callback?: () => void) {\n if (!this.gridApi) {\n return;\n }\n this.setState({loading: true});\n if (!this.props.loadingOverlayRenderer) {\n this.gridApi.showLoadingOverlay();\n }\n this.props.onLoadData((totalRecords) => {\n if (!this.gridApi) {\n return;\n }\n this.gridApi.hideOverlay();\n this.setState({loading: false});\n if (callback) {\n callback();\n }\n if (totalRecords === 0) {\n setTimeout(() => {\n if (!this.isActive()) {\n return;\n }\n this.gridApi?.showNoRowsOverlay();\n }, 400);\n }\n if (this.props.autofocus) {\n this.focus();\n }\n });\n }\n\n public focus() {\n setTimeout(() => {\n if (!this.isActive()) {\n return;\n }\n const columnModel = this.gridColumnApi?.getColumnState();\n let columnIdToFocus = columnModel?.[0]?.colId || \"name\";\n const selectedNodes = this.gridApi?.getSelectedNodes();\n const selectedRowIndex: number = (selectedNodes && selectedNodes.length > 0 && selectedNodes[selectedNodes.length - 1].rowIndex) || 0;\n this.gridApi?.setFocusedCell(selectedRowIndex, columnIdToFocus);\n }, 200);\n }\n\n isActive(): boolean {\n return !!this.gridApi && !(this.gridApi as any).destroyCalled;\n }\n\n onColumnsChanged(event: ColumnEvent) {\n const columnModel = event.columnApi.getColumnState();\n if (this.props.onColumnsChanged) {\n this.props.onColumnsChanged(columnModel, event);\n }\n this.setState({columnModel: columnModel});\n }\n\n setColumnSearchVisible(visible: boolean) {\n if (this.gridApi && this.props.filter && this.props.filter.getFilterModel) {\n this.gridApi.setFilterModel(this.props.filter.getFilterModel());\n }\n if (this.props.filter && this.props.filter.onColumnSearchVisible) {\n this.props.filter.onColumnSearchVisible(visible);\n }\n }\n\n private onFilterModified(event: FilterModifiedEvent) {\n if (this.props.filter && this.props.filter.onFilterModified) {\n this.props.filter.onFilterModified(event);\n }\n }\n\n private onFilterChanged(event: FilterChangedEvent) {\n if (this.props.filter && this.props.filter.onFilterChanged) {\n this.props.filter.onFilterChanged(event);\n }\n }\n\n private onFilterConfirmed() {\n if (this.props.filter && this.props.filter.onFilterConfirmed) {\n this.props.filter.onFilterConfirmed();\n }\n }\n\n private onSortChanged(event: SortChangedEvent) {\n if (this.props.onSortChanged && this.gridApi) {\n const currentSortModel = this.getSortModel() as SortItem[];\n if (!isEqual(this.state.sortModel, currentSortModel)) {\n // propagate only changes to sorting\n this.setState({sortModel: currentSortModel}, () => {\n if (this.props.onSortChanged) {\n this.props.onSortChanged(event);\n }\n });\n }\n }\n }\n\n showTableConfiguration(show: boolean) {\n if (this.props.onTableConfigVisible) {\n this.props.onTableConfigVisible(show);\n }\n this.setState({tableConfigVisible: show}, () => {\n if (this.gridApi && !this.state.tableConfigVisible) {\n // redrawing rows after closing table configuration panel, probably not required any more,\n // because config panel and table is shown simultaneously\n if (!this.props.rowModelType || this.props.rowModelType === \"clientSide\") {\n // table is shown\n this.gridApi.refreshClientSideRowModel(\"group\");\n }\n this.gridApi.redrawRows();\n }\n });\n }\n\n showColumnsConfig(show: boolean) {\n if (this.props.onColumnsConfigVisible) {\n this.props.onColumnsConfigVisible(show);\n }\n this.columnModelBeforeEdit = cloneDeep(this.state.columnModel);\n this.setState({columnsConfigVisible: show});\n }\n\n private navigateToNextCell(params: NavigateToNextCellParams): CellPosition {\n this.lastNavigationEvent = NavigationEventEnum.KEYBOARD;\n var suggestedNextCell = params.nextCellPosition;\n if (!this.gridApi) {\n return suggestedNextCell ?? params.previousCellPosition;\n }\n const pageIndex = this.gridApi.paginationGetCurrentPage();\n const totalPages = this.gridApi.paginationGetTotalPages();\n var previousCell = params.previousCellPosition;\n switch (params.event?.code) {\n case Key.ArrowDown:\n if ((previousCell.rowIndex + 1) >= this.gridApi.getModel().getRowCount()) {\n if (pageIndex < (totalPages - 1)) {\n this.onGoToPage(pageIndex + 1);\n return {\n rowIndex: 0,\n column: previousCell.column,\n rowPinned: previousCell.rowPinned\n };\n } else {\n return {\n rowIndex: previousCell.rowIndex,\n column: previousCell.column,\n rowPinned: previousCell.rowPinned\n };\n }\n\n }\n break;\n case Key.ArrowUp:\n if ((previousCell.rowIndex - 1) < 0) {\n if (pageIndex > 0) {\n this.onGoToPage(pageIndex - 1);\n return {\n rowIndex: this.gridApi.getModel().getRowCount() - 1,\n column: previousCell.column,\n rowPinned: previousCell.rowPinned\n };\n } else {\n return {\n rowIndex: previousCell.rowIndex,\n column: previousCell.column,\n rowPinned: previousCell.rowPinned\n };\n }\n }\n break;\n }\n return suggestedNextCell ?? params.previousCellPosition;\n }\n\n private suppressKeyboardEvent(params: SuppressKeyboardEventParams): boolean {\n if (!this.gridApi) {\n return false;\n }\n const pageIndex = this.gridApi.paginationGetCurrentPage();\n const totalPages = this.gridApi.paginationGetTotalPages();\n switch (params.event.code) {\n case Key.ArrowDown:\n case Key.ArrowUp:\n case Key.ArrowLeft:\n case Key.ArrowRight:\n if (params.editing && params.event.altKey) {\n const focusedCell = this.gridApi.getFocusedCell();\n if (focusedCell) {\n let indexToJump: number;\n let columnToJump: Column;\n if (params.event.code === Key.ArrowDown) {\n indexToJump = focusedCell.rowIndex + 1;\n columnToJump = focusedCell.column;\n if (indexToJump >= this.gridApi.getModel().getRowCount()) {\n if (pageIndex < (totalPages - 1)) {\n this.onGoToPage(pageIndex + 1);\n indexToJump = 0\n } else {\n indexToJump = focusedCell.rowIndex;\n }\n }\n this.lastNavigationEvent = NavigationEventEnum.KEYBOARD;\n this.indexToJump = indexToJump;\n this.columnToJump = columnToJump;\n setTimeout(() => {\n this.gridApi?.startEditingCell({\n rowIndex: indexToJump,\n colKey: columnToJump,\n keyPress: 13 /*Enter*/\n });\n }, 0);\n return true;\n } else if (params.event.code === Key.ArrowUp) {\n indexToJump = focusedCell.rowIndex - 1;\n columnToJump = focusedCell.column;\n if (indexToJump < 0) {\n if (pageIndex > 0) {\n this.onGoToPage(pageIndex - 1);\n indexToJump = this.gridApi.getModel().getRowCount() - 1;\n } else {\n indexToJump = focusedCell.rowIndex;\n }\n }\n this.lastNavigationEvent = NavigationEventEnum.KEYBOARD;\n this.indexToJump = indexToJump;\n this.columnToJump = columnToJump;\n setTimeout(() => {\n this.gridApi?.startEditingCell({\n rowIndex: indexToJump,\n colKey: columnToJump,\n keyPress: 13 /*Enter*/\n });\n }, 0);\n return true;\n } else if (params.event.code === Key.ArrowLeft) {\n this.gridApi.tabToPreviousCell();\n break;\n } else /*Key.ArrowRight*/ {\n this.gridApi.tabToNextCell();\n break;\n }\n }\n }\n break;\n case Key.PageDown:\n this.lastNavigationEvent = NavigationEventEnum.KEYBOARD;\n if (pageIndex < (totalPages - 1)) {\n this.gridApi.paginationGoToNextPage();\n const focusedCell = this.gridApi.getFocusedCell();\n if (focusedCell) {\n this.indexToJump = Math.min(focusedCell.rowIndex + this.gridApi.paginationGetPageSize(), this.gridApi.paginationGetRowCount());\n this.columnToJump = focusedCell.column;\n return true;\n }\n }\n break;\n case Key.PageUp:\n this.lastNavigationEvent = NavigationEventEnum.KEYBOARD;\n if (pageIndex > 0) {\n this.gridApi.paginationGoToPreviousPage();\n const focusedCell = this.gridApi.getFocusedCell();\n if (focusedCell) {\n this.indexToJump = Math.max(focusedCell.rowIndex - this.gridApi.paginationGetPageSize(), 0);\n this.columnToJump = focusedCell.column;\n return true;\n }\n }\n break;\n case Key.End:\n this.lastNavigationEvent = NavigationEventEnum.KEYBOARD;\n if (pageIndex < (totalPages - 1)) {\n this.gridApi.paginationGoToLastPage();\n const focusedCell = this.gridApi.getFocusedCell();\n if (focusedCell) {\n this.indexToJump = this.gridApi.paginationGetRowCount() - 1;\n this.columnToJump = focusedCell.column;\n return true;\n }\n }\n break;\n case Key.Home:\n this.lastNavigationEvent = NavigationEventEnum.KEYBOARD;\n if (pageIndex > 0) {\n this.gridApi.paginationGoToFirstPage();\n const focusedCell = this.gridApi.getFocusedCell();\n if (focusedCell) {\n this.indexToJump = 0;\n this.columnToJump = focusedCell.column;\n return true;\n }\n }\n break;\n case \"KeyA\":\n if (params.event.ctrlKey && !params.editing) {\n var firstRow = this.gridApi.getFirstDisplayedRow();\n var lastRow = this.gridApi.getLastDisplayedRow();\n this.gridApi.deselectAll();\n if (this.props.rowModelType === \"infinite\") {\n for (let i = firstRow; i <= lastRow; i++) {\n this.gridApi.getDisplayedRowAtIndex(i)?.setSelected(true);\n }\n } else {\n this.gridApi.forEachNodeAfterFilter(function (node, index) {\n if (index >= firstRow && index <= lastRow) {\n node.setSelected(true);\n }\n });\n }\n }\n break;\n case \"KeyI\":\n if (params.event.ctrlKey) {\n const focusedCell = this.gridApi.getFocusedCell();\n const column = this.gridColumnApi?.getColumn(\"objectId\") ?? this.gridColumnApi?.getColumn(\"id\");\n if (focusedCell && column) {\n const displayedRowAtIndex = this.gridApi.getDisplayedRowAtIndex(focusedCell.rowIndex);\n if (displayedRowAtIndex) {\n ClipboardUtils.copyToClipboard(this.getValue(column, displayedRowAtIndex));\n }\n this.gridApi.setFocusedCell(focusedCell.rowIndex, focusedCell.column.getId());\n }\n }\n break;\n case \"KeyB\":\n if (params.event.ctrlKey) {\n const focusedCell = this.gridApi.getFocusedCell();\n const column = this.gridColumnApi?.getColumn(\"objectName\") ?? this.gridColumnApi?.getColumn(\"name\");\n if (focusedCell && column) {\n const displayedRowAtIndex1 = this.gridApi.getDisplayedRowAtIndex(focusedCell.rowIndex);\n if (displayedRowAtIndex1) {\n ClipboardUtils.copyToClipboard(this.getValue(column, displayedRowAtIndex1));\n }\n this.gridApi.setFocusedCell(focusedCell.rowIndex, focusedCell.column.getId());\n }\n }\n break;\n case \"KeyC\":\n if (params.event.ctrlKey && !params.editing) {\n const focusedCell = this.gridApi.getFocusedCell();\n if (focusedCell) {\n const displayedRowAtIndex2 = this.gridApi.getDisplayedRowAtIndex(focusedCell.rowIndex);\n if (displayedRowAtIndex2) {\n ClipboardUtils.copyToClipboard(this.getValue(focusedCell.column, displayedRowAtIndex2, true));\n }\n this.gridApi.setFocusedCell(focusedCell.rowIndex, focusedCell.column.getId());\n }\n }\n break;\n case Key.Enter:\n this.props.onEnter?.();\n break;\n }\n this.props.onKeyPressed?.(params.event);\n return false;\n }\n\n getValue(column: Column, row: RowNode, doNotReplaceNewline?: boolean): string {\n let formattedValue = this.gridApi?.getValue(column, row);\n if (formattedValue && typeof formattedValue === \"string\" && formattedValue.indexOf(EXPORT_SEPARATOR) > 0 && !doNotReplaceNewline) {\n formattedValue = formattedValue.replace(/[\\n\\r]+/, ' ');\n }\n const valueFormatter = column.getColDef().valueFormatter;\n if (valueFormatter) {\n const params: ValueFormatterParams = {\n data: row.data,\n node: row,\n column: column,\n colDef: column.getColDef(),\n api: this.gridApi as GridApi,\n columnApi: (this.gridApi as any).gridOptionsWrapper.columnApi,\n context: (this.gridApi as any).gridOptionsWrapper.getContext(),\n value: formattedValue\n };\n if (typeof valueFormatter === 'function') {\n formattedValue = valueFormatter?.(params);\n } else if (typeof valueFormatter === 'string') {\n formattedValue = at(row.data, valueFormatter)[0];\n }\n }\n return formattedValue;\n }\n\n async getExportContent(progressPopup: ProgressPopup | null, props: ContextMenuProps): Promise<string[][]> {\n if (!this.gridApi) {\n return [];\n }\n const model: IRowModel = this.gridApi.getModel();\n const tableContent: string[][] = [];\n const columns: ColumnInfo[] = (this.gridApi as any).columnModel.getAllDisplayedColumns().map((column: Column) => {\n const columnTypes = column.getColDef().type;\n return {\n column: column,\n displayName: column.getColDef().headerName,\n isDateField: columnTypes && columnTypes.indexOf(\"dateColumn\") >= 0,\n isDateTimeField: columnTypes && columnTypes.indexOf(\"dateTimeColumn\") >= 0\n };\n });\n if (columns.length === 0) {\n return tableContent;\n }\n tableContent.push(columns.map((column) => column.displayName));\n\n let rowCount: number;\n let tableNodes: RowNode[] = [];\n if (model.getType() === \"clientSide\") {\n if (props.onlySelectedNodes) {\n rowCount = 0;\n this.gridApi.forEachNodeAfterFilterAndSort((node) => {\n if (node.isSelected()) {\n tableNodes.push(node);\n rowCount++;\n }\n });\n } else {\n rowCount = model.getRowCount();\n this.gridApi.forEachNodeAfterFilterAndSort((node) => {\n tableNodes.push(node);\n });\n }\n } else {\n if (props.onlySelectedNodes) {\n const selectedNodes = this.gridApi.getSelectedNodes();\n rowCount = selectedNodes.length;\n selectedNodes.forEach((node) => {\n tableNodes.push(node);\n });\n tableNodes.sort((a, b) => (a.rowIndex ?? 0) > (b.rowIndex ?? 0) ? 1 : (a.rowIndex === b.rowIndex) ? 0 : -1);\n } else {\n const virtualRowCount = model.getRowCount();\n rowCount = virtualRowCount ? virtualRowCount : 0;\n }\n }\n progressPopup?.setRecordCount(rowCount);\n\n let percentStep = Math.floor(rowCount / 100);\n if (percentStep < 100) {\n percentStep = 100;\n }\n\n if (model.getType() === \"clientSide\" || props.onlySelectedNodes) {\n for (let index = 0; index < tableNodes.length; index++) {\n const record: string[] = [];\n columns.forEach((column) => {\n let value = this.getValue(column.column, tableNodes[index]);\n record.push(value);\n });\n tableContent.push(record);\n if (index % percentStep === 0) {\n progressPopup?.update(Math.floor(index / rowCount * 100) - 1);\n await TimeUtils.sleep(100);\n }\n }\n } else {\n for (let index = 0; index < rowCount; index++) {\n let row: RowNode | undefined = undefined;\n let record: any[] = [];\n do {\n record = [];\n do {\n row = model.getRow(index);\n if (!row) {\n await TimeUtils.sleep(100);\n }\n } while (!row);\n columns.forEach((column) => {\n record.push(this.getValue(column.column, row as RowNode));\n });\n if (record.filter((cell) => !!cell).length === 0) {\n await TimeUtils.sleep(100);\n }\n } while (record.filter((cell) => !!cell).length === 0);\n tableContent.push(record);\n if (index % percentStep === 0) {\n // noinspection ES6MissingAwait\n progressPopup?.update(Math.floor(index / rowCount * 100) - 1);\n await TimeUtils.sleep(100);\n }\n }\n }\n // noinspection ES6MissingAwait\n progressPopup?.update(99);\n await TimeUtils.sleep(300);\n return tableContent;\n }\n\n onCellFocused(event: CellFocusedEvent) {\n const row: RowNode | undefined = event.rowIndex !== null ? this.gridApi?.getDisplayedRowAtIndex(event.rowIndex) : undefined;\n if (row) {\n if (this.lastNavigationEvent === NavigationEventEnum.KEYBOARD && KeyboardUtils.isKeyPressed(Key.Shift) && this.lastCellFocus && this.lastCellFocus.rowIndex !== event.rowIndex) {\n // focusing new row with SHIFT key pressed\n if (!row.isSelected()) {\n // add to selection\n row.setSelected(true, false);\n } else if (this.lastCellFocus?.rowIndex !== null) {\n const lastFocusedRow: RowNode | undefined = this.gridApi?.getDisplayedRowAtIndex(this.lastCellFocus.rowIndex);\n if (lastFocusedRow?.isSelected()) {\n lastFocusedRow.setSelected(false, false);\n }\n }\n } else if (!row.isSelected() && !KeyboardUtils.isKeyPressed(Key.Control) && !KeyboardUtils.isKeyPressed(Key.Shift)) {\n row.setSelected(true, true);\n }\n }\n this.props.onCellFocused?.(event);\n this.lastCellFocus = event;\n }\n\n onCellMouseDown(e: CellMouseDownEvent) {\n this.lastNavigationEvent = NavigationEventEnum.MOUSE;\n // always focus clicked cell (also when using shift key)\n if (e.rowIndex !== null) {\n this.setFocusedCellDebounced(e.rowIndex, e.column, e.rowPinned !== null ? e.rowPinned : undefined);\n }\n this.props.onCellMouseDown?.(e);\n }\n\n setFocusedCellDebounced(rowIndex: number, column: string | Column, rowPinned: string | undefined) {\n this.gridApi?.setFocusedCell(rowIndex, column, rowPinned);\n }\n\n private onCellContextMenu(event: CellContextMenuEvent) {\n this.setState({contextMenuVisible: !!event});\n if (event.node) {\n if (!event.node.isSelected()) {\n event.node.setSelected(true, true, false);\n }\n }\n }\n\n private loadingOverlayRenderer(): ReactElement {\n if (this.props.loadingOverlayRenderer) {\n const loadingOverlay = this.props.loadingOverlayRenderer();\n if (loadingOverlay) {\n return loadingOverlay;\n }\n }\n return <div><LoadingOutlined style={{fontSize: 40, color: \"#1890ff\"}}/></div>;\n }\n\n private noRecordsOverlayRenderer(): ReactElement {\n if (this.props.noRecordsOverlayRenderer) {\n const noRecordsOverlay = this.props.noRecordsOverlayRenderer();\n if (noRecordsOverlay) {\n return noRecordsOverlay;\n }\n }\n return (\n <Empty description={i18n(\"No records found.\")} imageStyle={{height: \"8vh\"}}>\n <Button type=\"primary\" onClick={() => {\n if (this.props.search && this.props.search.onSearch) {\n this.props.search.onSearch();\n }\n }}>\n <SearchOutlined/> {i18n(\"Search\")}\n </Button>\n </Empty>\n );\n }\n\n private onRowDataUpdated(event: RowDataUpdatedEvent) {\n if (!this.gridApi) {\n return;\n }\n const currentPage = this.gridApi.paginationGetCurrentPage();\n const recordsCount = this.props.paging.pageSize >= 0 ? (this.gridApi.paginationIsLastPageFound() ? this.gridApi.paginationGetRowCount() : 0) : this.gridApi.getDisplayedRowCount();\n this.setState({recordsCount: recordsCount, pageIndex: currentPage});\n if (this.props.onRowDataUpdated) {\n this.props.onRowDataUpdated(event);\n }\n }\n\n private static EMPTY_STYLE: RowStyle = {}\n\n _getRowStyle(params: RowClassParams): RowStyle {\n const rowStyleRules = this.props.rowStyleRules;\n if (rowStyleRules) {\n const style: any = {};\n rowStyleRules.forEach((rowStyleRule) => {\n if (rowStyleRule.expression) {\n if (!rowStyleRuleCompiledExpressions[rowStyleRule.expression]) {\n rowStyleRuleCompiledExpressions[rowStyleRule.expression] = compileExpression(rowStyleRule.expression);\n }\n if (rowStyleRuleCompiledExpressions[rowStyleRule.expression](params.node.data)) {\n Object.assign(style, rowStyleRule.style);\n }\n } else {\n Object.assign(style, rowStyleRule.style);\n }\n });\n if (!style.color) {\n style.color = null;\n } else if (typeof style.color === \"object\") {\n style.color = `rgba(${style.color.r},${style.color.g},${style.color.b},${style.color.a})`;\n }\n if (!style.backgroundColor) {\n style.backgroundColor = \"inherit\";\n } else if (typeof style.backgroundColor === \"object\") {\n style.backgroundColor = `rgba(${style.backgroundColor.r},${style.backgroundColor.g},${style.backgroundColor.b},${style.backgroundColor.a})`;\n }\n if (!style.fontWeight) {\n style.fontWeight = \"inherit\";\n }\n if (style.fontSize) {\n const lineHeight = style.fontSize + ROW_HEIGHT_DELTA_FROM_FONT_SIZE - 2;\n style.fontSize = style.fontSize + \"px\";\n style.lineHeight = lineHeight + \"px\";\n } else {\n style.fontSize = \"inherit\";\n }\n if (this.props.getRowStyle) {\n const rowStyle = this.props.getRowStyle(params);\n if (rowStyle) {\n return Object.assign(style, rowStyle) as RowStyle;\n }\n }\n return style as RowStyle;\n }\n return DataGrid.EMPTY_STYLE;\n }\n\n _getRowHeight(): number {\n return this.state.rowHeight;\n }\n\n _getCellStyle(params: { colDef: ColDef }) {\n const fontSize = this.state.rowHeight - ROW_HEIGHT_DELTA_FROM_FONT_SIZE;\n const cellStyles: { [key: string]: any } = {\"font-size\": fontSize + \"px\"};\n if (params.colDef.type && params.colDef.type.indexOf(\"alignRight\") >= 0) {\n cellStyles[\"text-align\"] = \"right\";\n }\n if (params.colDef.cellRendererParams?.originalCellStyle) {\n const originalCellStylesOrHandler = params.colDef.cellRendererParams.originalCellStyle as {} | ((params: any) => {});\n if (typeof originalCellStylesOrHandler === \"object\") {\n Object.assign(cellStyles, originalCellStylesOrHandler);\n } else if (typeof originalCellStylesOrHandler === \"function\") {\n const originalCellStyles = originalCellStylesOrHandler(params);\n if (originalCellStyles) {\n Object.assign(cellStyles, originalCellStyles);\n }\n }\n }\n return cellStyles;\n }\n\n getDefaultColDefinition(colDef: ColDef | undefined): ColDef {\n if (colDef) {\n return {...colDef, suppressKeyboardEvent: this.suppressKeyboardEvent} as ColDef;\n } else {\n return {suppressKeyboardEvent: this.suppressKeyboardEvent} as ColDef;\n }\n }\n\n private getCustomFrameworkComponents(frameworkComponents: any) {\n let customFrameworkComponents = gridFrameworkComponents;\n if (frameworkComponents) {\n customFrameworkComponents = Object.assign(gridFrameworkComponents, frameworkComponents);\n }\n return customFrameworkComponents;\n }\n\n renderNavigationPanel(): ReactElement {\n return (\n <React.Fragment>\n {this.props.toolbar && this.props.toolbar.renderToolbar ? this.props.toolbar.renderToolbar(this.renderToolBarWithSearch()) : this.renderToolBarWithSearch()}\n {this.props.paging.pageSize >= 0 &&\n <DataGridPagination\n disabled={this.state.loading}\n current={this.state.pageIndex ? this.state.pageIndex + 1 : 1}\n pageSize={this.state.pageSize ? this.state.pageSize : 20}\n total={this.state.recordsCount ?? 1}\n onGoToPage={page => {\n this.onGoToPage(page - 1);\n }}\n />}\n {this.props.paging.pageSize < 0 && this.state.recordsCount && !this.props.toolbar?.hideRecordCount ?\n <span className=\"ant-pagination-total-text\" style={{\n flex: \"0 1 auto\",\n textAlign: \"right\",\n whiteSpace: \"nowrap\",\n marginLeft: \"24px\"\n }}>{`${this.state.viewport[0]}-${this.state.viewport[1]} ${i18n('of')} ${this.state.recordsCount}`}</span>\n : undefined}\n </React.Fragment>\n );\n }\n\n renderToolBarWithSearch(): ReactElement {\n return (\n <Input.Group key=\"filter-panel\" compact size=\"default\"\n style={{whiteSpace: \"nowrap\", flexGrow: 1, display: \"flex\"}}>\n {this.props.toolbar?.toolbarButtons}\n <Dropdown trigger={[\"click\"]} overlay={\n <ContextMenu showMilliseconds={!!this.props.showMilliseconds}\n showYear={!this.props.hideYear}\n renderer={this.props.exportMenu?.renderer}\n onClick={this.props.exportMenu?.onClick}\n getExportContent={this.getExportContent}\n />}\n disabled={this.state.loading}>\n <Button title={i18n(\"Export\")}>\n <DownloadOutlined/>\n </Button>\n </Dropdown>\n\n <Dropdown trigger={[\"click\"]}\n overlay={this.renderSettingsMenu()}>\n <Button\n title={i18n(\"Extended table features\")}\n disabled={this.state.loading}>\n <TableOutlined/>\n </Button>\n </Dropdown>\n {!this.props.search?.hidden && !this.props.search?.searchRenderer && <AutoCompleteInput\n style={{minWidth: 100, flexGrow: 1}}\n placeholder={this.props.search ? this.props.search.placeholder : undefined}\n stringFormatter={this.props.search ? this.props.search.stringFormatter : undefined}\n value={this.props.search ? this.props.search.searchString : undefined}\n inputReadonly={this.props.search ? this.props.search.inputReadonly : undefined}\n options={this.props.search ? this.props.search.searchHistory : undefined}\n onChange={this.props.search ? this.props.search.onChange : undefined}\n onSearch={this.props.search ? this.props.search.onSearch : undefined}\n disabled={this.state.loading || (this.props.filter && this.props.filter.columnSearchVisible)}\n />}\n {this.props.search?.searchRenderer?.()}\n <Button title={this.props.search?.hidden ? i18n(\"Refresh\") : i18n(\"Search\")}\n className={\"search-btn \" + (this.props.search && this.props.search.searchButtonClassName ? this.props.search.searchButtonClassName : \"\")}\n disabled={this.props.search?.searchButtonDisabled}\n type=\"primary\"\n onClick={() => {\n if (this.props.search && this.props.search.onSearch) {\n this.props.search.onSearch();\n }\n }}>\n {this.state.loading ? <LoadingOutlined/> : (this.props.search?.hidden ? <ReloadOutlined/> :\n <SearchOutlined/>)}\n </Button>\n </Input.Group>\n );\n }\n\n renderSettingsMenu(): ReactElement {\n let menuItems: MenuElement[] = [\n <Menu.Item key=\"columnFilter\"\n icon={<FileSearchOutlined/>}\n className={this.props.filter && this.props.filter.columnSearchVisible ? \"ant-dropdown-menu-item-selected\" : \"\"}\n title={i18n(\"Turn on/off column filter\")}>\n {i18n(\"Column Filter\")}\n </Menu.Item>,\n <Menu.Item key=\"autosizeAllColumns\" icon={<ColumnWidthOutlined/>}>\n {i18n(\"Autosize All Columns\")}\n </Menu.Item>,\n <Menu.Item key=\"columnsConfig\" icon={<ControlOutlined/>}>\n {i18n(\"Columns Configuration\")}\n </Menu.Item>,\n <Menu.Divider key=\"columnsAndAdvancedConfigDivider\"/>,\n <Menu.Item key=\"advancedConfig\" icon={<SettingOutlined/>}>\n {i18n(\"Advanced Settings\")}\n </Menu.Item>\n ];\n\n if (this.props.settingsMenu?.renderer) {\n menuItems = this.props.settingsMenu.renderer(menuItems);\n }\n\n return <Menu onClick={({key}) => {\n switch (key) {\n case \"columnFilter\":\n const visible = !(this.props.filter && this.props.filter.columnSearchVisible);\n this.setColumnSearchVisible(visible);\n break;\n case \"autosizeAllColumns\":\n this.gridColumnApi?.autoSizeAllColumns();\n break;\n case \"columnsConfig\":\n this.showColumnsConfig(true);\n break;\n case \"advancedConfig\":\n this.showTableConfiguration(true);\n break;\n default:\n if (this.props.settingsMenu?.onClick) {\n this.props.settingsMenu.onClick(key + \"\");\n }\n }\n }}>\n {menuItems}\n </Menu>;\n }\n\n private renderContextMenu(): ReactElement {\n return <ContextMenu onlySelectedNodes={true}\n showMilliseconds={!!this.props.showMilliseconds}\n showYear={!this.props.hideYear}\n renderer={this.props.contextMenu?.renderer}\n onClick={this.props.contextMenu?.onClick}\n getExportContent={this.getExportContent}\n hideNotificationOnClipboardCopy\n />;\n }\n\n private getAdaptedColumnDefs(columnDefs: DataGridColDef[], floatingFilterEnabled: boolean | undefined, disableColumnDefsPreprocessing: boolean) {\n if (columnDefs.length === 0) {\n return undefined;\n }\n if (disableColumnDefsPreprocessing) {\n return columnDefs;\n }\n const adaptedColumnDefs = columnDefs ? columnDefs.map((columnDef) => {\n const {group, floatingFilter, hide, ...rest} = columnDef as DataGridColDef;\n let floatingFilterEnabledForColumn = !!floatingFilter;\n if (typeof columnDef.type === \"string\") {\n if (!!(this.columnTypes[columnDef.type]?.floatingFilter)) {\n floatingFilterEnabledForColumn = true;\n }\n } else {\n columnDef.type?.forEach((type) => {\n if (!!(this.columnTypes[type]?.floatingFilter)) {\n floatingFilterEnabledForColumn = true;\n }\n });\n\n }\n return {\n ...rest,\n floatingFilter: floatingFilterEnabledForColumn && floatingFilterEnabled,\n resizable: true,\n headerComponent: \"simpleHeader\",\n headerComponentParams: {\n onColumnsConfigVisible: this.showColumnsConfig\n },\n hide: hide === undefined ? rest.initialHide : hide,\n cellStyle: this._getCellStyle,\n cellRendererParams: columnDef.cellStyle ? {originalCellStyle: columnDef.cellStyle} : undefined\n };\n }) : undefined;\n if (adaptedColumnDefs) {\n setTimeout(() => {\n this.props.onColumnDefsAdapted?.(adaptedColumnDefs);\n }, 0);\n }\n return adaptedColumnDefs;\n }\n\n render() {\n const {\n onGridReady,\n columnDefs, disableColumnDefsPreprocessing, onColumnsChanged,\n paging, onPaginationChanged, onViewportChanged,\n selectedIds,\n search, toolbar,\n filter, onFilterChanged, onFilterModified, onCellFocused,\n onSortChanged, frameworkComponents,\n tableConfigVisible, onTableConfigVisible,\n noRecordsOverlayRenderer, loadingOverlayRenderer, onRowDataUpdated,\n rowStyleRules, onChangeRowStyleRules,\n defaultShowMilliseconds, onShowMilliseconds, defaultHideYear, onShowYear,\n suppressLoadingOverlay, defaultColDef, headerHeight,\n ...passedProperties\n } = this.props;\n let key: string;\n let paginationPageSize: number | undefined = undefined;\n if (paging.pageSize > 0) {\n paginationPageSize = paging.pageSize;\n passedProperties.pagination = true;\n key = \"paginated-table\";\n } else if (paging.pageSize === 0) {\n passedProperties.paginationAutoPageSize = true;\n passedProperties.pagination = true;\n key = \"paginated-table\";\n } else {\n // pagination is disabled\n passedProperties.pagination = false;\n key = \"non-paginated-table\";\n }\n\n // nejde\n const floatingFilterEnabled = !!filter && !!filter.columnSearchVisible;\n const adaptedColumnDefs = this.getAdaptedColumnDefs(columnDefs, floatingFilterEnabled, !!disableColumnDefsPreprocessing);\n\n const customFrameworkComponents = this.getCustomFrameworkComponents(frameworkComponents);\n const debugMode = process.env.NODE_ENV === 'development';\n const panelStyle = {\n display: \"flex\",\n flexFlow: \"column\",\n height: \"100%\",\n width: \"100%\",\n paddingBottom: 8,\n };\n if (this.props.panelStyle) {\n Object.assign(panelStyle, this.props.panelStyle);\n }\n const tablePanelStyle = {flex: \"1 1 auto\", marginTop: 16, overflow: \"auto\"};\n if (this.props.tablePanelStyle) {\n Object.assign(tablePanelStyle, this.props.tablePanelStyle);\n }\n\n return (\n <React.Fragment>\n <Card size=\"small\" bordered={false}\n style={{height: \"100%\"}}\n bodyStyle={panelStyle}>\n <div style={{display: \"flex\"}}>\n {this.renderNavigationPanel()}\n </div>\n <div style={tablePanelStyle}>\n <Dropdown trigger={[\"contextMenu\"]}\n getPopupContainer={() => {\n // very nasty trick how remove error of ResizeObservers infinite cycling - because popover (with dynamic size) is placed in in resizable panel\n return (ReactDOM.findDOMNode(this)?.parentNode ?? document.body) as HTMLElement;\n }}\n overlay={this.renderContextMenu()}\n overlayStyle={!this.state.contextMenuVisible ? {display: \"none\"} : undefined}\n onVisibleChange={(visible) => {\n if (!visible) {\n this.setState({contextMenuVisible: false});\n }\n }}\n >\n <div className=\"ag-theme-balham\" style={{width: \"100%\", height: \"100%\"}}\n ref={(wrapingDiv) => {\n this.wrappingDiv = wrapingDiv;\n }}>\n <AgGridReact\n key={key}\n debug={debugMode}\n paginationPageSize={paginationPageSize}\n maxConcurrentDatasourceRequests={this.props.rowModelType === \"infinite\" ? 1 : undefined}\n onGridReady={this.onGridReady}\n onPaginationChanged={this.onPaginationChanged}\n onFilterModified={this.onFilterModified}\n onFilterChanged={this.onFilterChanged}\n onSortChanged={this.onSortChanged}\n defaultColDef={this.getDefaultColDefinition(defaultColDef)}\n columnDefs={adaptedColumnDefs as ColDef[]}\n {...passedProperties}\n onCellFocused={this.onCellFocused}\n suppressPaginationPanel={true}\n getRowNodeId={getRowNodeId}\n frameworkComponents={customFrameworkComponents}\n columnTypes={this.columnTypes}\n onColumnVisible={this.onColumnsChanged}\n onColumnPinned={this.onColumnsChanged}\n onColumnResized={this.onColumnsChanged}\n onColumnMoved={this.onColumnsChanged}\n onCellMouseDown={this.onCellMouseDown}\n navigateToNextCell={this.navigateToNextCell}\n onViewportChanged={this.onViewportChanged}\n onCellContextMenu={this.onCellContextMenu}\n loadingOverlayComponent='loadingOverlay'\n noRowsOverlayComponent='noRecordsOverlay'\n onRowDataUpdated={this.onRowDataUpdated}\n context={this.table_context}\n rowHeight={this.state.rowHeight}\n getRowStyle={this._getRowStyle}\n getRowHeight={this._getRowHeight}\n headerHeight={headerHeight !== undefined ? headerHeight : this.state.rowHeight + 4}\n floatingFiltersHeight={this.state.rowHeight + 4}\n suppressLoadingOverlay={this.props.loadingOverlayRenderer ? true : this.props.suppressLoadingOverlay}\n >\n </AgGridReact>\n {this.state.loading && this.props.loadingOverlayRenderer &&\n <div className=\"ag-overlay\" aria-hidden=\"true\" ref=\"overlayWrapper\">\n <div className=\"ag-overlay-panel\">\n <div\n className=\"ag-overlay-wrapper ag-layout-normal ag-overlay-loading-wrapper\">\n <div className=\"ag-react-container\">\n {this.props.loadingOverlayRenderer?.()}\n </div>\n </div>\n </div>\n </div>\n }\n </div>\n </Dropdown>\n {this.props.tableOverlayRenderer?.()}\n </div>\n </Card>\n\n {!!this.gridApi && !!this.gridColumnApi && this.state.pageSize !== null &&\n <DataGridEditor dataGrid={this}\n gridApi={this.gridApi}\n gridColumnApi={this.gridColumnApi}\n columnDefinitions={columnDefs}\n columnModel={this.state.columnModel}\n visible={!!this.props.tableConfigVisible}\n onTableConfigVisible={this.showTableConfiguration}\n paginationPageSize={paging.pageSize}\n paginationDefaultPageSize={paging.defaultPageSize}\n currentPageSize={this.state.pageSize}\n showMilliseconds={!!this.props.showMilliseconds}\n defaultShowMilliseconds={!!this.props.defaultShowMilliseconds}\n showYear={!this.props.hideYear}\n defaultShowYear={!this.props.defaultHideYear}\n rowStyleRules={this.props.rowStyleRules}\n defaultRowStyleRules={this.props.defaultRowStyleRules}\n onChangeRowStyleRules={onChangeRowStyleRules}\n />}\n\n\n {!!this.gridApi && !!this.gridColumnApi && <ModalDialog\n mode={ModalDialogMode.OK_CANCEL}\n visible={this.state.columnsConfigVisible}\n initialWidth={700}\n initialHeight={this.state.columnTransferHeight}\n title={<span><ControlOutlined style={{\n color: \"#faad14\",\n fontSize: 22,\n marginRight: 16\n }}/>{i18n(\"Columns Configuration\")}</span>}\n cancelText={i18n(\"Cancel\")}\n onCancel={() => {\n if (this.gridColumnApi && this.columnModelBeforeEdit) {\n this.gridColumnApi.applyColumnState({state: this.columnModelBeforeEdit, applyOrder: true});\n delete this.columnModelBeforeEdit;\n this.showColumnsConfig(false);\n }\n }}\n onOk={() => {\n delete this.columnModelBeforeEdit;\n this.showColumnsConfig(false);\n }}\n onResize={({height}) => {\n this.setState({columnTransferHeight: height});\n }}\n zIndex={100}\n >\n <ColumnTransfer\n columnDefinitions={columnDefs as ColDef[]}\n columnModel={this.state.columnModel}\n gridApi={this.gridApi}\n gridColumnApi={this.gridColumnApi}\n height={this.state.columnTransferHeight - 154}\n />\n </ModalDialog>}\n\n </React.Fragment>\n );\n }\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\";\n\nimport {\n ColumnWidthOutlined,\n ControlOutlined,\n DownloadOutlined,\n FileSearchOutlined,\n LoadingOutlined,\n ReloadOutlined,\n SearchOutlined,\n SettingOutlined,\n TableOutlined\n} from \"@ant-design/icons\";\n\nimport {Button, Card, Dropdown, Empty, Input, Menu} from \"antd\";\nimport {AgGridReact} from \"ag-grid-react\";\nimport 'ag-grid-community/dist/styles/ag-grid.css';\nimport 'ag-grid-community/dist/styles/ag-theme-balham.css';\nimport 'd2coreui/style/ag-grid/aggrid-adaptations.css'\nimport TextColumnFilter from \"d2coreui/components/grid/filter/textColumnFilter\"\nimport CustomColumnFilter from \"d2coreui/components/grid/filter/customColumnFilter\"\nimport SimpleHeader from \"d2coreui/components/grid/header/simpleHeader\"\nimport DataGridEditor from \"d2coreui/components/grid/config/dataGridEditor\";\nimport i18n from \"d2core/i18n/i18n\";\nimport AutoCompleteInput from \"d2coreui/components/input/autoCompleteInput\";\nimport isEqual from \"lodash/isEqual\"\nimport ContextMenu, {ContextMenuProps} from \"d2coreui/components/grid/export/contextMenu\";\nimport LoadingOverlay from \"d2coreui/components/grid/panel/loadingOverlay\";\nimport NoRecordsOverlay from \"d2coreui/components/grid/panel/noRecordsOverlay\";\nimport at from \"lodash/at\"\nimport ColumnTransfer from \"d2coreui/components/grid/config/columnTransfer\";\nimport cloneDeep from \"lodash/cloneDeep\";\nimport escape from \"lodash/escape\";\nimport {RangeSelector} from \"d2coreui/components/grid/cell/rangeSelector\"\nimport {WildcardQuickFilter} from \"d2coreui/components/grid/cell/wildcardQuickFilter\";\nimport {\n CellClassParams,\n CellContextMenuEvent,\n CellFocusedEvent,\n CellMouseDownEvent,\n CellPosition,\n ColDef,\n ColDefUtil,\n Column,\n ColumnApi,\n ColumnEvent,\n ColumnState,\n FilterChangedEvent,\n FilterModifiedEvent,\n GetQuickFilterTextParams,\n GridApi,\n GridOptions,\n GridReadyEvent,\n ICellRendererParams,\n IRowModel,\n NavigateToNextCellParams,\n PaginationChangedEvent,\n RowClassParams,\n RowDataUpdatedEvent,\n RowNode,\n RowStyle,\n SortChangedEvent,\n SuppressKeyboardEventParams,\n ValueFormatterParams,\n ValueGetterParams,\n ViewportChangedEvent\n} from \"ag-grid-community\";\nimport {LocaleHolder} from \"d2core/i18n/localeHolder\";\nimport tableDefaultRowStyleRules, {\n GRID_DEFAULT_FONT_SIZE,\n GridRowStyle,\n RowStyleRule\n} from \"d2coreui/components/grid/cell/tableDefaultRowStyleRules\";\nimport {ModalDialog, ModalDialogMode} from \"d2coreui/components/modal/modalDialog\";\nimport debounce from \"lodash/debounce\";\nimport {Key} from \"ts-key-enum\";\nimport {ClipboardUtils} from \"d2coreui/components/clipboard/clipboardUtils\";\nimport ProgressPopup from \"d2coreui/components/grid/export/progressPopup\";\nimport TimeUtils from \"d2core/utils/timeUtils\";\nimport KeyboardUtils from \"d2coreui/components/keyboard/keyboardUtils\";\nimport NumberCellEditor from \"d2coreui/components/grid/cell/numberCellEditor\";\nimport TextCellEditor from \"d2coreui/components/grid/cell/textCellEditor\";\nimport StatusTextCellEditor from \"d2coreui/components/grid/cell/statusTextCellEditor\";\nimport DateCellEditor from \"d2coreui/components/grid/cell/dateCellEditor\";\nimport memoizeOne from \"memoize-one\";\nimport SimpleStatusTextCellEditor from \"d2coreui/components/grid/cell/simpleStatusTextCellEditor\";\nimport DurationCellEditor from \"d2coreui/components/grid/cell/durationCellEditor\";\nimport CustomEnumCellEditor from \"d2coreui/components/grid/cell/customEnumCellEditor\";\nimport HexaValueCellEditor from \"d2coreui/components/grid/cell/hexaValueCellEditor\";\nimport HexaOctetStringCellEditor from \"d2coreui/components/grid/cell/hexaOctetStringCellEditor\";\nimport ReactDOM from \"react-dom\";\nimport {D2000UnixTimeNullValue, unixTimeToMoment} from \"d2core/types/unixTimeUtils\";\nimport {compileExpression} from \"filtrex\";\nimport DataGridPagination from \"./panel/dataGridPagination\";\n\nconst gridFrameworkComponents = {\n customColumnFilter: CustomColumnFilter,\n textColumnFilter: TextColumnFilter,\n numberCellEditor: NumberCellEditor,\n textCellEditor: TextCellEditor,\n simpleStatusTextCellEditor: SimpleStatusTextCellEditor,\n statusTextCellEditor: StatusTextCellEditor,\n dateCellEditor: DateCellEditor,\n durationCellEditor: DurationCellEditor,\n customEnumCellEditor: CustomEnumCellEditor,\n hexaValueCellEditor: HexaValueCellEditor,\n hexaOctetStringCellEditor: HexaOctetStringCellEditor,\n simpleHeader: SimpleHeader,\n loadingOverlay: LoadingOverlay,\n noRecordsOverlay: NoRecordsOverlay\n};\n\nconst ROW_HEIGHT_DELTA_FROM_FONT_SIZE = 16;\n\nfunction getRowNodeId(item: { id: number | string }): string {\n return item.id + \"\";\n}\n\nconst rowStyleRuleCompiledExpressions: { [key: string]: (parameters: any) => any } = {};\n\n/**\n * Special separator for part of the column which should be exported\n */\nexport const EXPORT_SEPARATOR = \"\\n\";\n\nexport type MenuElement = JSX.Element;\n\nconst enum NavigationEventEnum {\n KEYBOARD,\n MOUSE\n}\n\n/**\n * Extended viewport change event\n */\nexport interface DataGridViewportChangedEvent extends ViewportChangedEvent {\n // delta number of rows table moved during paging/scrolling of the table\n // negative number when paged/scrolled backwards to first record, positive number when paged/scrolled forwards to last record\n rowsScrollingDelta: number\n}\n\nexport type SortMode = \"asc\" | \"desc\"\n\n/**\n * Represents sorting definition for one column\n */\nexport interface SortItem {\n colId: string;\n sort: SortMode;\n}\n\ninterface ColumnInfo {\n column: Column,\n displayName: string,\n isDateField: boolean\n isDateTimeField: boolean\n}\n\nexport type FilterRenderer = (value: string, changeValue: (newValue: string) => void, onSearch: () => void) => React.ReactNode\n\n/*\n * Extended table column definition\n */\nexport interface DataGridColDef extends Omit<ColDef, \"cellStyle\"> {\n // localized name of group of columns to which column belongs to\n group: string\n // context of column definition\n context?: any\n\n // override of ag-grid api with undefined styles\n cellStyle?: { [cssProperty: string]: string | number | null } | ((cellClassParams: CellClassParams) => { [cssProperty: string]: string | number | null } | undefined);\n\n\n // custom filter render method\n renderFilter?: FilterRenderer\n}\n\n// prevent logging warning logs of unknown column definition attributes\nColDefUtil.FRAMEWORK_PROPERTIES.push(\"group\", \"context\", \"cellStyle\", \"renderFilter\");\n\nexport interface DataGridFilterProps {\n // flag if floating filters (beneath column headers) are visible\n columnSearchVisible?: boolean\n // visibility handler for floating filters\n onColumnSearchVisible?: (visible: boolean) => void\n\n // returns floating filters (beneath column headers) current model (essential when filters should be pre-filled when shown from e.g. searchbox)\n getFilterModel?(): any\n\n // floating filter changed event (e.g. when pressing enter in floating filter textbox)\n onFilterChanged?(event: FilterChangedEvent): void;\n\n // floating filter modify event (e.g. when modifying value in floating filter textbox)\n onFilterModified?(event: FilterModifiedEvent): void;\n\n // method called when enter is pressed in the floating filter\n onFilterConfirmed?(): void\n}\n\nexport interface DataGridSearchProps {\n // placeholder to show in search field when no value is entered\n placeholder?: string\n // current search string\n searchString?: string\n // current search history available for search field popup\n searchHistory?: string[]\n // custom search button class name\n searchButtonClassName?: string\n // search button disabled\n searchButtonDisabled?: boolean\n // hide searchbox\n hidden?: boolean\n\n // custom search field renderer\n searchRenderer?(): React.ReactNode\n\n // disable searchbox\n inputReadonly?: boolean\n\n // formatting showed strings in search and history\n stringFormatter?(rawString: string): string\n\n // search field value changed\n onChange?(searchString: string): void\n\n // called when new search is invoked by pressing search button or enter in the search field\n onSearch?(): void\n}\n\n// callback called when data are loaded from backend\nexport type OnLoadDataCallback = (totalRecords: number) => void\n\n/**\n * Data Grid properties, differences to AgGrid:\n * columnDefinitions (columnDefs) does not support column groups for now\n * paginationPageSize for defining size of page is not available, use paging.pageSize instead\n */\nexport interface DataGridProps extends Omit<GridOptions, \"columnDefs\" | \"paginationPageSize\" | \"getRowStyle\" | \"cellStyle\"> {\n // linking grid options (used for aligned grids feature: https://www.ag-grid.com/javascript-grid-aligned-grids/)\n gridOptions?: GridOptions\n // column definitions\n columnDefs: DataGridColDef[]\n // for aligned grids functionality\n disableColumnDefsPreprocessing?: boolean\n\n // realColumnDefs building handler\n onColumnDefsAdapted?(columnDefs: ColDef[]): void\n\n // shows table configuration panel\n tableConfigVisible?: boolean,\n // shows column configuration panel\n columnsConfigVisible?: boolean,\n // style of panel surrounding datagrid\n panelStyle?: React.CSSProperties,\n // style of panel surrounding table part\n tablePanelStyle?: React.CSSProperties,\n // floating filter configuration\n filter?: DataGridFilterProps\n // search bar configuration\n search?: DataGridSearchProps\n // table paging configuration\n paging: {\n /* current size of table page:\n - value -1 means no paging at all (scrollbar only)\n - value 0 means automatic paging (page size automatically adjusted based on available height for table)\n - value >0 defines statically defined page size (number of rows) for the table\n */\n pageSize: number,\n // default size used when configuration is reverted\n defaultPageSize?: number,\n /**\n * Page size change handler\n * @param currentPageSize - current page size represents number rows available\n * @param definedPageSize -\n */\n onPaginationChanged?: (currentPageSize: number | null, definedPageSize: number) => void;\n }\n\n // load data handler - called by grid always when it needs data\n onLoadData(callback: OnLoadDataCallback): void\n\n // automatic focus to first cell of selected row after loading of data is complete\n autofocus?: boolean\n\n // handler for keys pressed in data grid\n onKeyPressed?(event: KeyboardEvent): void\n\n // enter handler\n onEnter?: () => void;\n\n // ids of currently selected rows\n selectedIds?: (number | string)[]\n\n // rules for styling table rows\n rowStyleRules: RowStyleRule[]\n\n // default rules for styling table rows, used when configuration is reverted\n defaultRowStyleRules?: RowStyleRule[]\n\n // row styles change handler\n onChangeRowStyleRules?(rowStyleRules: RowStyleRule[]): void\n\n // extra buttons rendered before the search bar\n toolbar?: {\n // custom renderer for the whole toolbar panel\n renderToolbar?(originalSearchBar: ReactElement): ReactElement\n\n // extra buttons rendered in toolbar\n toolbarButtons?: ReactElement\n\n // hide records count\n hideRecordCount?: boolean\n }\n\n // row height change handler (height is changed from table configuration screen)\n onRowHeightChanged?(rowHeight: number): void\n\n // columns state change handler\n onColumnsChanged?(columnModel: ColumnState[], event: ColumnEvent): void\n\n // table configuration panel visibility change handler\n onTableConfigVisible?(visible: boolean): void\n\n // column configuration panel visibility change handler\n onColumnsConfigVisible?(visible: boolean): void\n\n // customized renderer for displaying loading progress\n loadingOverlayRenderer?(): ReactElement | null\n\n // customized renderer for displaying no records information\n noRecordsOverlayRenderer?(): ReactElement | null\n\n // customized renderer for displaying data over table\n tableOverlayRenderer?(): ReactElement | null\n\n showMilliseconds?: boolean\n\n defaultShowMilliseconds?: boolean\n\n onShowMilliseconds?(show: boolean, callback: () => void): void\n\n hideYear?: boolean\n\n defaultHideYear?: boolean\n\n onShowYear?(show: boolean, callback: () => void): void\n\n // export menu configuration\n exportMenu?: {\n // overides export menu rendering\n renderer?(menuElements: MenuElement[]): MenuElement[]\n // handler for custom export menu items click\n onClick?(key: string): void\n }\n\n // settings menu configuration\n settingsMenu?: {\n // overides setting menu rendering\n renderer?(menuElements: MenuElement[]): MenuElement[]\n // handler for custom settings menu items click\n onClick?(key: string): void\n }\n\n // context menu configuration (right click on the table rows)\n contextMenu?: {\n // overides context menu rendering\n renderer?(menuElements: MenuElement[]): MenuElement[]\n // handler for custom context menu items click\n onClick?(key: string): void\n }\n\n // override of ag-grid api with undefined styles\n getRowStyle?(params: any): GridRowStyle | undefined\n}\n\ninterface DataGridState {\n pageIndex: number\n pageSize: number | null\n recordsCount?: number\n columnModel: ColumnState[]\n sortModel: SortItem[]\n tableConfigVisible: boolean\n columnsConfigVisible: boolean\n rowHeight: number\n // interval of record's indexes currently shown (first record has index 1)\n viewport: [number, number]\n contextMenuVisible: boolean\n firstLoadDone: boolean\n loading: boolean\n columnTransferHeight: number\n}\n\n\nexport default class DataGrid extends React.Component<DataGridProps, DataGridState> {\n public static defaultProps = {\n paging: {\n pageSize: 0,\n defaultPageSize: 0\n },\n rowStyleRules: tableDefaultRowStyleRules()\n };\n\n wildcardQuickFilter: WildcardQuickFilter;\n columnTypes: { [key: string]: ColDef };\n gridApi?: GridApi;\n gridColumnApi?: ColumnApi;\n // deep copy of columns state before opening editation of columns and its order\n // used in \"cancel changes\" functionality\n columnModelBeforeEdit?: ColumnState[];\n indexToJump: number | null;\n columnToJump: Column | null;\n lastCellFocus?: CellFocusedEvent;\n lastNavigationEvent?: NavigationEventEnum;\n table_context: any;\n private wrappingDiv: HTMLDivElement | null = null;\n\n constructor(props: Readonly<DataGridProps>) {\n super(props);\n this.state = {\n pageIndex: 0,\n pageSize: null,\n recordsCount: undefined,\n columnModel: [],\n sortModel: [],\n tableConfigVisible: !!this.props.tableConfigVisible,\n columnsConfigVisible: !!this.props.columnsConfigVisible,\n rowHeight: 28,\n viewport: [0, 0],\n contextMenuVisible: false,\n firstLoadDone: false,\n loading: false,\n columnTransferHeight: 500\n };\n this.indexToJump = null;\n this.columnToJump = null;\n\n this.onGridReady = this.onGridReady.bind(this);\n this.onPaginationChanged = this.onPaginationChanged.bind(this);\n this.onViewportChanged = this.onViewportChanged.bind(this);\n this.onCellContextMenu = this.onCellContextMenu.bind(this);\n this.onCellFocused = this.onCellFocused.bind(this);\n this.onCellMouseDown = this.onCellMouseDown.bind(this);\n this.setFocusedCellDebounced = debounce(this.setFocusedCellDebounced.bind(this), 200);\n this.noRecordsOverlayRenderer = this.noRecordsOverlayRenderer.bind(this);\n this.loadingOverlayRenderer = this.loadingOverlayRenderer.bind(this);\n this.changePagination = this.changePagination.bind(this);\n this.onColumnsChanged = this.onColumnsChanged.bind(this);\n this.onFilterModified = this.onFilterModified.bind(this);\n this.onFilterChanged = this.onFilterChanged.bind(this);\n this.onFilterConfirmed = this.onFilterConfirmed.bind(this);\n this.onSortChanged = this.onSortChanged.bind(this);\n this.showTableConfiguration = this.showTableConfiguration.bind(this);\n this.showColumnsConfig = this.showColumnsConfig.bind(this);\n this.navigateToNextCell = this.navigateToNextCell.bind(this);\n this.suppressKeyboardEvent = this.suppressKeyboardEvent.bind(this);\n this.onRowDataUpdated = this.onRowDataUpdated.bind(this);\n this._getRowStyle = this._getRowStyle.bind(this);\n this._getRowHeight = this._getRowHeight.bind(this);\n this._getCellStyle = this._getCellStyle.bind(this);\n this.textCustomComparator = this.textCustomComparator.bind(this);\n this.getExportContent = this.getExportContent.bind(this);\n this.getDefaultColDefinition = memoizeOne(this.getDefaultColDefinition.bind(this));\n this.getAdaptedColumnDefs = memoizeOne(this.getAdaptedColumnDefs.bind(this));\n this.getCustomFrameworkComponents = memoizeOne(this.getCustomFrameworkComponents.bind(this));\n\n this.table_context = {\n loadingOverlayRenderer: this.loadingOverlayRenderer,\n noRecordsOverlayRenderer: this.noRecordsOverlayRenderer,\n onFilterConfirmed: this.onFilterConfirmed,\n fontSize: this.state.rowHeight - ROW_HEIGHT_DELTA_FROM_FONT_SIZE,\n lineHeight: this.state.rowHeight - 2\n };\n this.wildcardQuickFilter = new WildcardQuickFilter();\n\n this.columnTypes = {\n \"localizedArrayColumn\": {\n cellRenderer: (params: ICellRendererParams): string => {\n const value = DataGrid.getCellValue<string[]>(params);\n if (value !== undefined) {\n return value.map((s) => i18n(s)).join(\",\");\n } else {\n return \"\";\n }\n },\n filterParams: {\n textCustomComparator: this.textCustomComparator\n },\n filterValueGetter: function (params: ValueGetterParams): string | null {\n const value = DataGrid.getCellValue<string[]>(params);\n if (value !== undefined) {\n return value.map((s) => i18n(s)).join(\",\");\n }\n return null;\n },\n getQuickFilterText: function (params: GetQuickFilterTextParams): string {\n const value = DataGrid.getCellValue<string[]>(params);\n if (value !== undefined) {\n return value.map((s) => i18n(s)).join(\",\");\n }\n return \"\";\n }\n },\n \"numberColumn\": {\n cellRenderer: (params: ICellRendererParams): string => {\n const value = DataGrid.getCellValue<number>(params);\n if (value !== undefined && value !== null) {\n return LocaleHolder.formatNumber(value);\n } else {\n return \"\";\n }\n },\n filterParams: {\n textCustomComparator: this.textCustomComparator\n },\n filterValueGetter: function (params: ValueGetterParams): string | null {\n const value = DataGrid.getCellValue<number>(params);\n if (value) {\n return LocaleHolder.formatNumber(value);\n } else {\n return \"\";\n }\n },\n getQuickFilterText: function (params: GetQuickFilterTextParams): string {\n const value = DataGrid.getCellValue<number>(params);\n if (value !== undefined) {\n return LocaleHolder.formatNumber(value);\n } else {\n return \"\";\n }\n }\n },\n \"dateColumn\": {\n cellRenderer: (params: ICellRendererParams): string => {\n const value = DataGrid.getCellValue<number>(params);\n if (value !== undefined) {\n if (value === D2000UnixTimeNullValue) {\n return \"---\";\n }\n let tooltipValue: string;\n tooltipValue = unixTimeToMoment(value).format(LocaleHolder.getDateTimeFormat(true, true, true));\n return `<span title=\"${tooltipValue}\">${unixTimeToMoment(value).format(LocaleHolder.getDateFormat(!this.props.hideYear))}</span>`\n } else {\n return \"---\";\n }\n },\n valueFormatter: (params: ValueFormatterParams): string => {\n const value = DataGrid.getCellValue<number>(params);\n if (value !== undefined) {\n return unixTimeToMoment(value).format(LocaleHolder.getDateFormat(!this.props.hideYear));\n }\n return \"---\";\n },\n filterParams: {\n textCustomComparator: this.textCustomComparator\n },\n filterValueGetter: (params: ValueGetterParams): string | null => {\n const value = DataGrid.getCellValue<number>(params);\n if (value !== undefined) {\n return unixTimeToMoment(value).format(LocaleHolder.getDateFormat(!this.props.hideYear));\n }\n return null;\n },\n getQuickFilterText: (params: GetQuickFilterTextParams): string => {\n const value = DataGrid.getCellValue<number>(params);\n if (value !== undefined) {\n return unixTimeToMoment(value).format(LocaleHolder.getDateFormat(!this.props.hideYear));\n }\n return \"\";\n }\n },\n \"dateTimeColumn\": {\n cellRenderer: (params: ICellRendererParams): string => {\n const value = DataGrid.getCellValue<number>(params);\n if (value) {\n if (value === D2000UnixTimeNullValue) {\n return \"Null Time\";\n }\n let tooltipValue: string;\n tooltipValue = unixTimeToMoment(value).format(LocaleHolder.getDateTimeFormat(true, true, true));\n return `<span title=\"${tooltipValue}\">${unixTimeToMoment(value).format(LocaleHolder.getDateTimeFormat(!this.props.hideYear, true, this.props.showMilliseconds))}</span>`;\n } else {\n return \"---\";\n }\n },\n valueFormatter: (params: ValueFormatterParams): string => {\n const value = DataGrid.getCellValue<number>(params);\n if (value !== undefined) {\n return unixTimeToMoment(value).format(LocaleHolder.getDateTimeFormat(!this.props.hideYear, true, this.props.showMilliseconds));\n }\n return \"---\";\n },\n filterParams: {\n textCustomComparator: this.textCustomComparator\n },\n filterValueGetter: (params: ValueGetterParams): string | null => {\n const value = DataGrid.getCellValue<number>(params);\n if (value !== undefined) {\n return unixTimeToMoment(value).format(LocaleHolder.getDateTimeFormat(!this.props.hideYear, true, this.props.showMilliseconds));\n }\n return null;\n },\n getQuickFilterText: (params: GetQuickFilterTextParams): string => {\n const value = DataGrid.getCellValue<number>(params);\n if (value !== undefined) {\n return unixTimeToMoment(value).format(LocaleHolder.getDateTimeFormat(!this.props.hideYear, true, this.props.showMilliseconds));\n }\n return \"\";\n }\n },\n \"fromNowDateTimeColumn\": {\n cellRenderer: (params: ICellRendererParams): string => {\n const value = DataGrid.getCellValue<number>(params);\n if (value !== undefined) {\n let tooltipValue: string;\n tooltipValue = unixTimeToMoment(value).format(LocaleHolder.getDateTimeFormat(true, true, true));\n return `<span title=\"${tooltipValue}\">${unixTimeToMoment(value).fromNow()}</span>`;\n } else {\n return \"---\";\n }\n },\n valueFormatter: (params: ValueFormatterParams): string => {\n const value = DataGrid.getCellValue<number>(params);\n if (value !== undefined) {\n return unixTimeToMoment(value).format(LocaleHolder.getDateTimeFormat(!this.props.hideYear, true, this.props.showMilliseconds));\n }\n return \"---\";\n },\n filterParams: {\n textCustomComparator: this.textCustomComparator\n },\n filterValueGetter: (params: ValueGetterParams): string | null => {\n const value = DataGrid.getCellValue<number>(params);\n if (value !== undefined) {\n return unixTimeToMoment(value).format(LocaleHolder.getDateTimeFormat(!this.props.hideYear, true, this.props.showMilliseconds));\n }\n return null;\n },\n getQuickFilterText: (params: GetQuickFilterTextParams): string => {\n const value = DataGrid.getCellValue<number>(params);\n if (value !== undefined) {\n return unixTimeToMoment(value).format(LocaleHolder.getDateTimeFormat(!this.props.hideYear, true, this.props.showMilliseconds));\n }\n return \"\";\n }\n },\n \"escapedValueColumn\": {\n cellRenderer: (params: ICellRendererParams): string => {\n const value = DataGrid.getCellValue<any>(params);\n if (value !== undefined) {\n return `<span style=\"white-space: pre\" title=\"${escape(value)}\">${typeof value === \"string\" ? escape(value.replace(/[\\r\\n]+/g, ' ')) : value}</span>`;\n } else {\n return \"\";\n }\n },\n valueFormatter: (params: ValueFormatterParams): string => {\n const value = DataGrid.getCellValue<any>(params);\n if (value !== undefined) {\n return typeof value === \"string\" ? value.replace(/[\\r\\n]+/g, ' ') : value;\n } else {\n return \"\";\n }\n }\n },\n \"textColumnFilter\": {\n filter: \"agTextColumnFilter\",\n floatingFilter: true,\n floatingFilterComponent: \"textColumnFilter\",\n filterParams: {\n textCustomComparator: this.textCustomComparator\n },\n floatingFilterComponentParams: {\n suppressFilterButton: true,\n },\n },\n \"textColumnServerFilter\": {\n filter: \"agTextColumnFilter\",\n floatingFilter: true,\n floatingFilterComponent: \"textColumnFilter\",\n filterParams: {\n buttons: ['apply'],\n textCustomComparator: this.textCustomComparator\n },\n floatingFilterComponentParams: {\n suppressFilterButton: true,\n },\n },\n \"customColumnServerFilter\": {\n filter: \"agTextColumnFilter\",\n floatingFilter: true,\n floatingFilterComponent: \"customColumnFilter\",\n filterParams: {\n buttons: ['apply'],\n textCustomComparator: this.textCustomComparator\n },\n floatingFilterComponentParams: {\n suppressFilterButton: true,\n },\n },\n \"alignRight\": {}\n };\n }\n\n private static getCellValue<V>(props: any): V | undefined {\n if (props) {\n if (props.colDef.field && typeof props.getValue === \"function\") {\n return props.getValue(props.colDef.field);\n }\n if (props.data && props.colDef && props.colDef.field) {\n return at<V>(props.data, props.colDef.field)[0];\n }\n if (props.value !== undefined) {\n return props.value;\n }\n }\n\n return undefined;\n }\n\n textCustomComparator(filter: string, value: any, filterText: string) {\n const filterTextLowerCase = filterText.toLowerCase();\n const valueLowerCase = value.toString().toLowerCase();\n switch (filter) {\n case 'contains':\n if (filterTextLowerCase.indexOf(\"*\") >= 0 || filterTextLowerCase.indexOf(\"?\") >= 0) {\n const wildcardFilterRegExp = this.wildcardQuickFilter.getWildcardFilterRegExp(filterTextLowerCase);\n if (wildcardFilterRegExp) {\n return wildcardFilterRegExp.test(valueLowerCase);\n } else {\n return valueLowerCase.indexOf(filterTextLowerCase) >= 0;\n }\n } else {\n return valueLowerCase.indexOf(filterTextLowerCase) >= 0;\n }\n case 'notContains':\n return valueLowerCase.indexOf(filterTextLowerCase) === -1;\n case 'equals':\n return valueLowerCase === filterTextLowerCase;\n case 'notEqual':\n // noinspection EqualityComparisonWithCoercionJS\n return valueLowerCase != filterTextLowerCase;\n case 'startsWith':\n return valueLowerCase.indexOf(filterTextLowerCase) === 0;\n case 'endsWith':\n var index = valueLowerCase.lastIndexOf(filterTextLowerCase);\n return index >= 0 && index === (valueLowerCase.length - filterTextLowerCase.length);\n default:\n // should never happen\n console.warn('invalid filter type ' + filter);\n return false;\n }\n }\n\n componentDidUpdate(prevProps: DataGridProps) {\n if (!this.gridApi) {\n return;\n }\n if (this.props.filter && prevProps.filter && this.props.filter.columnSearchVisible !== prevProps.filter.columnSearchVisible) {\n setTimeout(() => {\n if (this.gridApi) {\n this.gridApi.refreshHeader();\n if (this.props.filter && !this.props.filter.columnSearchVisible) {\n this.gridApi.setFilterModel(null);\n this.gridApi.onFilterChanged();\n }\n }\n }, 0);\n }\n // functionality when all data are loaded to table\n if (this.props.rowData && this.props.rowData !== prevProps.rowData) {\n // keep filter model when data are changed\n if (this.props.filter && this.props.filter.getFilterModel) {\n this.gridApi.setFilterModel(this.props.filter.getFilterModel());\n this.gridApi.onFilterChanged();\n }\n // keep sorting model when data are changed\n this.setSortModel(this.state.sortModel);\n this.gridApi.refreshClientSideRowModel(\"group\");\n this.gridApi.redrawRows();\n\n // keep selected rows when data are changed and rows are still present\n const selectedObjectsVisibleInGrid = this.props.rowData.filter((object) => {\n return this.props.selectedIds ? this.props.selectedIds.indexOf(object.id) >= 0 : false;\n });\n if (selectedObjectsVisibleInGrid.length > 0) {\n selectedObjectsVisibleInGrid.forEach((object) => {\n const rowNode = this.gridApi ? this.gridApi.getRowNode(object.id + \"\") : null;\n if (rowNode && !rowNode.isSelected()) {\n rowNode.setSelected(true, true);\n }\n });\n } else {\n this.gridApi.deselectAll();\n }\n }\n // functionality when chunks of data are dynamically loaded from server\n if (this.props.datasource && this.props.datasource !== prevProps.datasource) {\n // resets grid data\n this.gridApi.setDatasource(this.props.datasource);\n }\n this.updateRowHeight();\n }\n\n public setColumnState(columnModel: ColumnState[]) {\n const columnStates: ColumnState[] = [];\n if (columnModel) {\n columnModel.forEach((item: ColumnState) => {\n const columnState = {...item};\n item.sortIndex = undefined;\n item.sort = undefined\n columnStates.push(columnState);\n });\n }\n this.gridColumnApi?.applyColumnState({state: columnStates, defaultState: {sort: null}, applyOrder: true});\n }\n\n public setSortModel(sortModel: SortItem[]) {\n const columnState: ColumnState[] = [];\n if (sortModel) {\n sortModel.forEach((item: any, index: number) => {\n columnState.push({\n colId: item.colId,\n sort: item.sort,\n sortIndex: index\n });\n });\n }\n this.gridColumnApi?.applyColumnState({state: columnState, defaultState: {sort: null}, applyOrder: true});\n }\n\n public getSortModel(): SortItem[] {\n const columnState = this.gridColumnApi?.getColumnState() ?? [];\n const filteredStates = columnState?.filter(item => item.sort != null);\n const indexes: { [colId: string]: number; } = {};\n filteredStates.forEach((state) => {\n if (state.colId) {\n indexes[state.colId] = state.sortIndex as number;\n }\n });\n const res = filteredStates.map(s => {\n return {colId: s.colId, sort: s.sort} as SortItem;\n });\n res.sort((a: any, b: any) => indexes[a.colId] - indexes[b.colId]);\n return res;\n\n }\n\n updateRowHeight() {\n let rowHeight = this.calculateRowHeight(this.props.rowStyleRules);\n if (rowHeight && rowHeight !== this.state.rowHeight) {\n this.changeRowHeight(rowHeight);\n }\n }\n\n calculateRowHeight(rowStyleRules?: RowStyleRule[]): number | undefined {\n let rowHeight;\n if (rowStyleRules) {\n for (let i = 0; i < rowStyleRules.length; i++) {\n if (rowStyleRules[i].key === \"table-font-size\") {\n const currentFontSize = rowStyleRules[i].style.fontSize;\n if (typeof currentFontSize === \"number\") {\n rowHeight = (currentFontSize ? currentFontSize : GRID_DEFAULT_FONT_SIZE) + ROW_HEIGHT_DELTA_FROM_FONT_SIZE;\n } else {\n rowHeight = GRID_DEFAULT_FONT_SIZE + ROW_HEIGHT_DELTA_FROM_FONT_SIZE;\n }\n }\n }\n }\n return rowHeight;\n }\n\n /**\n * Handling setting table gridEditor\n */\n static getDerivedStateFromProps(props: DataGridProps, state: DataGridState) {\n const newState: Partial<DataGridState> = {};\n if (props.tableConfigVisible === true || props.tableConfigVisible === false) {\n if (props.tableConfigVisible !== state.tableConfigVisible) {\n newState.tableConfigVisible = props.tableConfigVisible;\n }\n }\n return newState;\n }\n\n onGridReady(gridReadyEvent: GridReadyEvent): void {\n const gridApi = gridReadyEvent.api;\n const gridColumnApi = gridReadyEvent.columnApi;\n if (!this.gridApi || this.gridApi !== gridApi) {\n // row selection plugin hook\n const rangeSelector = new RangeSelector(this.wrappingDiv);\n rangeSelector.init(gridApi, gridColumnApi);\n // altered quick filter hook for supporting wildcard matching\n this.wildcardQuickFilter.adaptFilterEngine(gridApi);\n this.gridApi = gridApi;\n this.gridColumnApi = gridColumnApi;\n if (this.props.onGridReady) {\n this.props.onGridReady(gridReadyEvent);\n }\n this.setState({\n sortModel: this.getSortModel(),\n columnModel: this.gridColumnApi.getColumnState(),\n });\n this.updateRowHeight();\n }\n }\n\n onPaginationChanged(event: PaginationChangedEvent) {\n if (!this.gridApi) {\n this.onGridReady({type: \"gridReady\", api: event.api, columnApi: event.columnApi});\n }\n if (this.gridApi) {\n const currentPage = this.gridApi.paginationGetCurrentPage();\n const currentPageSize = this.gridApi.paginationGetPageSize();\n let recordsCount = this.props.paging.pageSize >= 0 ? (this.gridApi.paginationIsLastPageFound() ? this.gridApi.paginationGetRowCount() : 0) : this.gridApi.getDisplayedRowCount();\n // process only when onGridReady passed\n if (this.state.pageSize !== currentPageSize) {\n if (this.props.paging.onPaginationChanged) {\n this.props.paging.onPaginationChanged(currentPageSize, this.props.paging.pageSize);\n }\n if (!this.state.firstLoadDone) {\n this.loadData();\n this.setState({firstLoadDone: true});\n }\n }\n this.setState({pageSize: currentPageSize, recordsCount: recordsCount, pageIndex: currentPage});\n if (this.indexToJump !== null && this.columnToJump !== null) {\n this.gridApi.setFocusedCell(this.indexToJump, this.columnToJump);\n this.indexToJump = null;\n }\n }\n if (this.props.onPaginationChanged) {\n this.props.onPaginationChanged(event);\n }\n }\n\n onViewportChanged(event: ViewportChangedEvent) {\n const dataGridEvent = event as DataGridViewportChangedEvent;\n // calculation of the flag that last record is shown\n const rowsScrollingDelta = this.state.viewport[1] ? event.lastRow + 1 - this.state.viewport[1] : event.lastRow + 1;\n dataGridEvent.rowsScrollingDelta = rowsScrollingDelta;\n this.setState({viewport: [event.firstRow + 1, event.lastRow + 1]});\n if (this.props.onViewportChanged) {\n this.props.onViewportChanged(event);\n }\n }\n\n changePagination(pageSize: number): void {\n if (!this.gridApi) {\n return;\n }\n const gridApiWithPrivateAccess = this.gridApi as any;\n if (pageSize > 0) {\n gridApiWithPrivateAccess.gridOptionsWrapper.setProperty('pagination', true);\n gridApiWithPrivateAccess.gridOptionsWrapper.setProperty('paginationAutoPageSize', false);\n this.gridApi.paginationSetPageSize(pageSize);\n if (this.props.paging.onPaginationChanged) {\n this.props.paging.onPaginationChanged(pageSize, pageSize);\n }\n } else if (pageSize === 0) {\n gridApiWithPrivateAccess.gridOptionsWrapper.setProperty('pagination', true);\n gridApiWithPrivateAccess.gridOptionsWrapper.setProperty('paginationAutoPageSize', true);\n // handling AG-Grid bug caused by different previous pageSize state\n const rowHeight = gridApiWithPrivateAccess.gridOptionsWrapper.getRowHeightAsNumber();\n // const rowHeight = this.state.rowHeight;\n const bodyHeight = gridApiWithPrivateAccess.ctrlsService.centerRowContainerCtrl.viewportSizeFeature.getBodyHeight();\n let availablePageSize = 1000;\n if (bodyHeight > 0) {\n availablePageSize = Math.floor(bodyHeight / rowHeight);\n }\n if (this.props.paging.pageSize > availablePageSize) {\n this.gridApi.paginationSetPageSize(1);\n } else {\n // special hack to remove setting page size\n this.gridApi.paginationSetPageSize(null as unknown as number);\n }\n if (this.props.paging && this.props.paging.onPaginationChanged) {\n this.props.paging.onPaginationChanged(this.state.pageSize, 0);\n }\n } else {\n gridApiWithPrivateAccess.gridOptionsWrapper.setProperty('pagination', false);\n gridApiWithPrivateAccess.gridOptionsWrapper.setProperty('paginationAutoPageSize', false);\n if (this.props.paging && this.props.paging.onPaginationChanged) {\n this.props.paging.onPaginationChanged(this.state.pageSize, -1);\n }\n }\n }\n\n showMilliseconds(showMilis: boolean) {\n this.props.onShowMilliseconds?.(showMilis, () => {\n if (!this.gridApi) {\n return;\n }\n if (!this.props.rowModelType || this.props.rowModelType === \"clientSide\") {\n // table is shown\n this.gridApi.refreshClientSideRowModel(\"group\");\n }\n this.gridApi.redrawRows();\n });\n }\n\n showYear(showYear: boolean) {\n this.props.onShowYear?.(showYear, () => {\n if (!this.gridApi) {\n return;\n }\n if (!this.props.rowModelType || this.props.rowModelType === \"clientSide\") {\n // table is shown\n this.gridApi.refreshClientSideRowModel(\"group\");\n }\n this.gridApi.redrawRows();\n });\n }\n\n changeRowHeight(rowHeight: number) {\n this.setState({rowHeight: rowHeight}, () => {\n if (this.gridApi) {\n if (this.props.headerHeight === undefined) {\n this.gridApi.setHeaderHeight(rowHeight + 4);\n }\n if (this.props.floatingFiltersHeight === undefined) {\n this.gridApi.setFloatingFiltersHeight(rowHeight + 4);\n }\n (this.gridApi as any).gridOptionsWrapper.setProperty('rowHeight', rowHeight);\n this.gridApi.resetRowHeights();\n this.gridApi.refreshHeader();\n this.gridApi.redrawRows();\n if (this.props.rowModelType === \"infinite\" && this.props.datasource) {\n // redraws all server side loaded table data\n this.gridApi.setDatasource(this.props.datasource)\n }\n }\n if (this.props.onRowHeightChanged) {\n this.props.onRowHeightChanged(rowHeight);\n }\n });\n }\n\n onGoToPage(pageIndex: number) {\n if (this.gridApi) {\n this.gridApi.paginationGoToPage(pageIndex);\n }\n }\n\n loadData(callback?: () => void) {\n if (!this.gridApi) {\n return;\n }\n this.setState({loading: true});\n if (!this.props.loadingOverlayRenderer) {\n this.gridApi.showLoadingOverlay();\n }\n this.props.onLoadData((totalRecords) => {\n if (!this.gridApi) {\n return;\n }\n this.gridApi.hideOverlay();\n this.setState({loading: false});\n if (callback) {\n callback();\n }\n if (totalRecords === 0) {\n setTimeout(() => {\n if (!this.isActive()) {\n return;\n }\n this.gridApi?.showNoRowsOverlay();\n }, 400);\n }\n if (this.props.autofocus) {\n this.focus();\n }\n });\n }\n\n public focus() {\n setTimeout(() => {\n if (!this.isActive()) {\n return;\n }\n const columnModel = this.gridColumnApi?.getColumnState();\n let columnIdToFocus = columnModel?.[0]?.colId || \"name\";\n const selectedNodes = this.gridApi?.getSelectedNodes();\n const selectedRowIndex: number = (selectedNodes && selectedNodes.length > 0 && selectedNodes[selectedNodes.length - 1].rowIndex) || 0;\n this.gridApi?.setFocusedCell(selectedRowIndex, columnIdToFocus);\n }, 200);\n }\n\n isActive(): boolean {\n return !!this.gridApi && !(this.gridApi as any).destroyCalled;\n }\n\n onColumnsChanged(event: ColumnEvent) {\n const columnModel = event.columnApi.getColumnState();\n if (this.props.onColumnsChanged) {\n this.props.onColumnsChanged(columnModel, event);\n }\n this.setState({columnModel: columnModel});\n }\n\n setColumnSearchVisible(visible: boolean) {\n if (this.gridApi && this.props.filter && this.props.filter.getFilterModel) {\n this.gridApi.setFilterModel(this.props.filter.getFilterModel());\n }\n if (this.props.filter && this.props.filter.onColumnSearchVisible) {\n this.props.filter.onColumnSearchVisible(visible);\n }\n }\n\n private onFilterModified(event: FilterModifiedEvent) {\n if (this.props.filter && this.props.filter.onFilterModified) {\n this.props.filter.onFilterModified(event);\n }\n }\n\n private onFilterChanged(event: FilterChangedEvent) {\n if (this.props.filter && this.props.filter.onFilterChanged) {\n this.props.filter.onFilterChanged(event);\n }\n }\n\n private onFilterConfirmed() {\n if (this.props.filter && this.props.filter.onFilterConfirmed) {\n this.props.filter.onFilterConfirmed();\n }\n }\n\n private onSortChanged(event: SortChangedEvent) {\n if (this.props.onSortChanged && this.gridApi) {\n const currentSortModel = this.getSortModel() as SortItem[];\n if (!isEqual(this.state.sortModel, currentSortModel)) {\n // propagate only changes to sorting\n this.setState({sortModel: currentSortModel}, () => {\n if (this.props.onSortChanged) {\n this.props.onSortChanged(event);\n }\n });\n }\n }\n }\n\n showTableConfiguration(show: boolean) {\n if (this.props.onTableConfigVisible) {\n this.props.onTableConfigVisible(show);\n }\n this.setState({tableConfigVisible: show}, () => {\n if (this.gridApi && !this.state.tableConfigVisible) {\n // redrawing rows after closing table configuration panel, probably not required any more,\n // because config panel and table is shown simultaneously\n if (!this.props.rowModelType || this.props.rowModelType === \"clientSide\") {\n // table is shown\n this.gridApi.refreshClientSideRowModel(\"group\");\n }\n this.gridApi.redrawRows();\n }\n });\n }\n\n showColumnsConfig(show: boolean) {\n if (this.props.onColumnsConfigVisible) {\n this.props.onColumnsConfigVisible(show);\n }\n this.columnModelBeforeEdit = cloneDeep(this.state.columnModel);\n this.setState({columnsConfigVisible: show});\n }\n\n private navigateToNextCell(params: NavigateToNextCellParams): CellPosition {\n this.lastNavigationEvent = NavigationEventEnum.KEYBOARD;\n var suggestedNextCell = params.nextCellPosition;\n if (!this.gridApi) {\n return suggestedNextCell ?? params.previousCellPosition;\n }\n const pageIndex = this.gridApi.paginationGetCurrentPage();\n const totalPages = this.gridApi.paginationGetTotalPages();\n var previousCell = params.previousCellPosition;\n switch (params.event?.code) {\n case Key.ArrowDown:\n if ((previousCell.rowIndex + 1) >= this.gridApi.getModel().getRowCount()) {\n if (pageIndex < (totalPages - 1)) {\n this.onGoToPage(pageIndex + 1);\n return {\n rowIndex: 0,\n column: previousCell.column,\n rowPinned: previousCell.rowPinned\n };\n } else {\n return {\n rowIndex: previousCell.rowIndex,\n column: previousCell.column,\n rowPinned: previousCell.rowPinned\n };\n }\n\n }\n break;\n case Key.ArrowUp:\n if ((previousCell.rowIndex - 1) < 0) {\n if (pageIndex > 0) {\n this.onGoToPage(pageIndex - 1);\n return {\n rowIndex: this.gridApi.getModel().getRowCount() - 1,\n column: previousCell.column,\n rowPinned: previousCell.rowPinned\n };\n } else {\n return {\n rowIndex: previousCell.rowIndex,\n column: previousCell.column,\n rowPinned: previousCell.rowPinned\n };\n }\n }\n break;\n }\n return suggestedNextCell ?? params.previousCellPosition;\n }\n\n private suppressKeyboardEvent(params: SuppressKeyboardEventParams): boolean {\n if (!this.gridApi) {\n return false;\n }\n const pageIndex = this.gridApi.paginationGetCurrentPage();\n const totalPages = this.gridApi.paginationGetTotalPages();\n switch (params.event.code) {\n case Key.ArrowDown:\n case Key.ArrowUp:\n case Key.ArrowLeft:\n case Key.ArrowRight:\n if (params.editing && params.event.altKey) {\n const focusedCell = this.gridApi.getFocusedCell();\n if (focusedCell) {\n let indexToJump: number;\n let columnToJump: Column;\n if (params.event.code === Key.ArrowDown) {\n indexToJump = focusedCell.rowIndex + 1;\n columnToJump = focusedCell.column;\n if (indexToJump >= this.gridApi.getModel().getRowCount()) {\n if (pageIndex < (totalPages - 1)) {\n this.onGoToPage(pageIndex + 1);\n indexToJump = 0\n } else {\n indexToJump = focusedCell.rowIndex;\n }\n }\n this.lastNavigationEvent = NavigationEventEnum.KEYBOARD;\n this.indexToJump = indexToJump;\n this.columnToJump = columnToJump;\n setTimeout(() => {\n this.gridApi?.startEditingCell({\n rowIndex: indexToJump,\n colKey: columnToJump,\n keyPress: 13 /*Enter*/\n });\n }, 0);\n return true;\n } else if (params.event.code === Key.ArrowUp) {\n indexToJump = focusedCell.rowIndex - 1;\n columnToJump = focusedCell.column;\n if (indexToJump < 0) {\n if (pageIndex > 0) {\n this.onGoToPage(pageIndex - 1);\n indexToJump = this.gridApi.getModel().getRowCount() - 1;\n } else {\n indexToJump = focusedCell.rowIndex;\n }\n }\n this.lastNavigationEvent = NavigationEventEnum.KEYBOARD;\n this.indexToJump = indexToJump;\n this.columnToJump = columnToJump;\n setTimeout(() => {\n this.gridApi?.startEditingCell({\n rowIndex: indexToJump,\n colKey: columnToJump,\n keyPress: 13 /*Enter*/\n });\n }, 0);\n return true;\n } else if (params.event.code === Key.ArrowLeft) {\n this.gridApi.tabToPreviousCell();\n break;\n } else /*Key.ArrowRight*/ {\n this.gridApi.tabToNextCell();\n break;\n }\n }\n }\n break;\n case Key.PageDown:\n this.lastNavigationEvent = NavigationEventEnum.KEYBOARD;\n if (pageIndex < (totalPages - 1)) {\n this.gridApi.paginationGoToNextPage();\n const focusedCell = this.gridApi.getFocusedCell();\n if (focusedCell) {\n this.indexToJump = Math.min(focusedCell.rowIndex + this.gridApi.paginationGetPageSize(), this.gridApi.paginationGetRowCount());\n this.columnToJump = focusedCell.column;\n return true;\n }\n }\n break;\n case Key.PageUp:\n this.lastNavigationEvent = NavigationEventEnum.KEYBOARD;\n if (pageIndex > 0) {\n this.gridApi.paginationGoToPreviousPage();\n const focusedCell = this.gridApi.getFocusedCell();\n if (focusedCell) {\n this.indexToJump = Math.max(focusedCell.rowIndex - this.gridApi.paginationGetPageSize(), 0);\n this.columnToJump = focusedCell.column;\n return true;\n }\n }\n break;\n case Key.End:\n this.lastNavigationEvent = NavigationEventEnum.KEYBOARD;\n if (pageIndex < (totalPages - 1)) {\n this.gridApi.paginationGoToLastPage();\n const focusedCell = this.gridApi.getFocusedCell();\n if (focusedCell) {\n this.indexToJump = this.gridApi.paginationGetRowCount() - 1;\n this.columnToJump = focusedCell.column;\n return true;\n }\n }\n break;\n case Key.Home:\n this.lastNavigationEvent = NavigationEventEnum.KEYBOARD;\n if (pageIndex > 0) {\n this.gridApi.paginationGoToFirstPage();\n const focusedCell = this.gridApi.getFocusedCell();\n if (focusedCell) {\n this.indexToJump = 0;\n this.columnToJump = focusedCell.column;\n return true;\n }\n }\n break;\n case \"KeyA\":\n if (params.event.ctrlKey && !params.editing) {\n var firstRow = this.gridApi.getFirstDisplayedRow();\n var lastRow = this.gridApi.getLastDisplayedRow();\n this.gridApi.deselectAll();\n if (this.props.rowModelType === \"infinite\") {\n for (let i = firstRow; i <= lastRow; i++) {\n this.gridApi.getDisplayedRowAtIndex(i)?.setSelected(true);\n }\n } else {\n this.gridApi.forEachNodeAfterFilter(function (node, index) {\n if (index >= firstRow && index <= lastRow) {\n node.setSelected(true);\n }\n });\n }\n }\n break;\n case \"KeyI\":\n if (params.event.ctrlKey) {\n const focusedCell = this.gridApi.getFocusedCell();\n const column = this.gridColumnApi?.getColumn(\"objectId\") ?? this.gridColumnApi?.getColumn(\"id\");\n if (focusedCell && column) {\n const displayedRowAtIndex = this.gridApi.getDisplayedRowAtIndex(focusedCell.rowIndex);\n if (displayedRowAtIndex) {\n ClipboardUtils.copyToClipboard(this.getValue(column, displayedRowAtIndex));\n }\n this.gridApi.setFocusedCell(focusedCell.rowIndex, focusedCell.column.getId());\n }\n }\n break;\n case \"KeyB\":\n if (params.event.ctrlKey) {\n const focusedCell = this.gridApi.getFocusedCell();\n const column = this.gridColumnApi?.getColumn(\"objectName\") ?? this.gridColumnApi?.getColumn(\"name\");\n if (focusedCell && column) {\n const displayedRowAtIndex1 = this.gridApi.getDisplayedRowAtIndex(focusedCell.rowIndex);\n if (displayedRowAtIndex1) {\n ClipboardUtils.copyToClipboard(this.getValue(column, displayedRowAtIndex1));\n }\n this.gridApi.setFocusedCell(focusedCell.rowIndex, focusedCell.column.getId());\n }\n }\n break;\n case \"KeyC\":\n if (params.event.ctrlKey && !params.editing) {\n const focusedCell = this.gridApi.getFocusedCell();\n if (focusedCell) {\n const displayedRowAtIndex2 = this.gridApi.getDisplayedRowAtIndex(focusedCell.rowIndex);\n if (displayedRowAtIndex2) {\n ClipboardUtils.copyToClipboard(this.getValue(focusedCell.column, displayedRowAtIndex2, true));\n }\n this.gridApi.setFocusedCell(focusedCell.rowIndex, focusedCell.column.getId());\n }\n }\n break;\n case Key.Enter:\n this.props.onEnter?.();\n break;\n }\n this.props.onKeyPressed?.(params.event);\n return false;\n }\n\n getValue(column: Column, row: RowNode, doNotReplaceNewline?: boolean): string {\n let formattedValue = this.gridApi?.getValue(column, row);\n if (formattedValue && typeof formattedValue === \"string\" && formattedValue.indexOf(EXPORT_SEPARATOR) > 0 && !doNotReplaceNewline) {\n formattedValue = formattedValue.replace(/[\\n\\r]+/, ' ');\n }\n const valueFormatter = column.getColDef().valueFormatter;\n if (valueFormatter) {\n const params: ValueFormatterParams = {\n data: row.data,\n node: row,\n column: column,\n colDef: column.getColDef(),\n api: this.gridApi as GridApi,\n columnApi: (this.gridApi as any).gridOptionsWrapper.columnApi,\n context: (this.gridApi as any).gridOptionsWrapper.getContext(),\n value: formattedValue\n };\n if (typeof valueFormatter === 'function') {\n formattedValue = valueFormatter?.(params);\n } else if (typeof valueFormatter === 'string') {\n formattedValue = at(row.data, valueFormatter)[0];\n }\n }\n return formattedValue;\n }\n\n async getExportContent(progressPopup: ProgressPopup | null, props: ContextMenuProps): Promise<string[][]> {\n if (!this.gridApi) {\n return [];\n }\n const model: IRowModel = this.gridApi.getModel();\n const tableContent: string[][] = [];\n const columns: ColumnInfo[] = (this.gridApi as any).columnModel.getAllDisplayedColumns().map((column: Column) => {\n const columnTypes = column.getColDef().type;\n return {\n column: column,\n displayName: column.getColDef().headerName,\n isDateField: columnTypes && columnTypes.indexOf(\"dateColumn\") >= 0,\n isDateTimeField: columnTypes && columnTypes.indexOf(\"dateTimeColumn\") >= 0\n };\n });\n if (columns.length === 0) {\n return tableContent;\n }\n tableContent.push(columns.map((column) => column.displayName));\n\n let rowCount: number;\n let tableNodes: RowNode[] = [];\n if (model.getType() === \"clientSide\") {\n if (props.onlySelectedNodes) {\n rowCount = 0;\n this.gridApi.forEachNodeAfterFilterAndSort((node) => {\n if (node.isSelected()) {\n tableNodes.push(node);\n rowCount++;\n }\n });\n } else {\n rowCount = model.getRowCount();\n this.gridApi.forEachNodeAfterFilterAndSort((node) => {\n tableNodes.push(node);\n });\n }\n } else {\n if (props.onlySelectedNodes) {\n const selectedNodes = this.gridApi.getSelectedNodes();\n rowCount = selectedNodes.length;\n selectedNodes.forEach((node) => {\n tableNodes.push(node);\n });\n tableNodes.sort((a, b) => (a.rowIndex ?? 0) > (b.rowIndex ?? 0) ? 1 : (a.rowIndex === b.rowIndex) ? 0 : -1);\n } else {\n const virtualRowCount = model.getRowCount();\n rowCount = virtualRowCount ? virtualRowCount : 0;\n }\n }\n progressPopup?.setRecordCount(rowCount);\n\n let percentStep = Math.floor(rowCount / 100);\n if (percentStep < 100) {\n percentStep = 100;\n }\n\n if (model.getType() === \"clientSide\" || props.onlySelectedNodes) {\n for (let index = 0; index < tableNodes.length; index++) {\n const record: string[] = [];\n columns.forEach((column) => {\n let value = this.getValue(column.column, tableNodes[index]);\n record.push(value);\n });\n tableContent.push(record);\n if (index % percentStep === 0) {\n progressPopup?.update(Math.floor(index / rowCount * 100) - 1);\n await TimeUtils.sleep(100);\n }\n }\n } else {\n for (let index = 0; index < rowCount; index++) {\n let row: RowNode | undefined = undefined;\n let record: any[] = [];\n do {\n record = [];\n do {\n row = model.getRow(index);\n if (!row || !row.data) {\n await TimeUtils.sleep(100);\n }\n } while (!row || !row.data);\n columns.forEach((column) => {\n record.push(this.getValue(column.column, row as RowNode));\n });\n if (record.filter((cell) => !!cell).length === 0) {\n await TimeUtils.sleep(100);\n }\n } while (record.filter((cell) => !!cell).length === 0);\n tableContent.push(record);\n if (index % percentStep === 0) {\n // noinspection ES6MissingAwait\n progressPopup?.update(Math.floor(index / rowCount * 100) - 1);\n await TimeUtils.sleep(100);\n }\n }\n }\n // noinspection ES6MissingAwait\n progressPopup?.update(99);\n await TimeUtils.sleep(300);\n return tableContent;\n }\n\n onCellFocused(event: CellFocusedEvent) {\n const row: RowNode | undefined = event.rowIndex !== null ? this.gridApi?.getDisplayedRowAtIndex(event.rowIndex) : undefined;\n if (row) {\n if (this.lastNavigationEvent === NavigationEventEnum.KEYBOARD && KeyboardUtils.isKeyPressed(Key.Shift) && this.lastCellFocus && this.lastCellFocus.rowIndex !== event.rowIndex) {\n // focusing new row with SHIFT key pressed\n if (!row.isSelected()) {\n // add to selection\n row.setSelected(true, false);\n } else if (this.lastCellFocus?.rowIndex !== null) {\n const lastFocusedRow: RowNode | undefined = this.gridApi?.getDisplayedRowAtIndex(this.lastCellFocus.rowIndex);\n if (lastFocusedRow?.isSelected()) {\n lastFocusedRow.setSelected(false, false);\n }\n }\n } else if (!row.isSelected() && !KeyboardUtils.isKeyPressed(Key.Control) && !KeyboardUtils.isKeyPressed(Key.Shift)) {\n row.setSelected(true, true);\n }\n }\n this.props.onCellFocused?.(event);\n this.lastCellFocus = event;\n }\n\n onCellMouseDown(e: CellMouseDownEvent) {\n this.lastNavigationEvent = NavigationEventEnum.MOUSE;\n // always focus clicked cell (also when using shift key)\n if (e.rowIndex !== null) {\n this.setFocusedCellDebounced(e.rowIndex, e.column, e.rowPinned !== null ? e.rowPinned : undefined);\n }\n this.props.onCellMouseDown?.(e);\n }\n\n setFocusedCellDebounced(rowIndex: number, column: string | Column, rowPinned: string | undefined) {\n this.gridApi?.setFocusedCell(rowIndex, column, rowPinned);\n }\n\n private onCellContextMenu(event: CellContextMenuEvent) {\n this.setState({contextMenuVisible: !!event});\n if (event.node) {\n if (!event.node.isSelected()) {\n event.node.setSelected(true, true, false);\n }\n }\n }\n\n private loadingOverlayRenderer(): ReactElement {\n if (this.props.loadingOverlayRenderer) {\n const loadingOverlay = this.props.loadingOverlayRenderer();\n if (loadingOverlay) {\n return loadingOverlay;\n }\n }\n return <div><LoadingOutlined style={{fontSize: 40, color: \"#1890ff\"}}/></div>;\n }\n\n private noRecordsOverlayRenderer(): ReactElement {\n if (this.props.noRecordsOverlayRenderer) {\n const noRecordsOverlay = this.props.noRecordsOverlayRenderer();\n if (noRecordsOverlay) {\n return noRecordsOverlay;\n }\n }\n return (\n <Empty description={i18n(\"No records found.\")} imageStyle={{height: \"8vh\"}}>\n <Button type=\"primary\" onClick={() => {\n if (this.props.search && this.props.search.onSearch) {\n this.props.search.onSearch();\n }\n }}>\n <SearchOutlined/> {i18n(\"Search\")}\n </Button>\n </Empty>\n );\n }\n\n private onRowDataUpdated(event: RowDataUpdatedEvent) {\n if (!this.gridApi) {\n return;\n }\n const currentPage = this.gridApi.paginationGetCurrentPage();\n const recordsCount = this.props.paging.pageSize >= 0 ? (this.gridApi.paginationIsLastPageFound() ? this.gridApi.paginationGetRowCount() : 0) : this.gridApi.getDisplayedRowCount();\n this.setState({recordsCount: recordsCount, pageIndex: currentPage});\n if (this.props.onRowDataUpdated) {\n this.props.onRowDataUpdated(event);\n }\n }\n\n private static EMPTY_STYLE: RowStyle = {}\n\n _getRowStyle(params: RowClassParams): RowStyle {\n const rowStyleRules = this.props.rowStyleRules;\n if (rowStyleRules) {\n const style: any = {};\n rowStyleRules.forEach((rowStyleRule) => {\n if (rowStyleRule.expression) {\n if (!rowStyleRuleCompiledExpressions[rowStyleRule.expression]) {\n rowStyleRuleCompiledExpressions[rowStyleRule.expression] = compileExpression(rowStyleRule.expression);\n }\n if (rowStyleRuleCompiledExpressions[rowStyleRule.expression](params.node.data)) {\n Object.assign(style, rowStyleRule.style);\n }\n } else {\n Object.assign(style, rowStyleRule.style);\n }\n });\n if (!style.color) {\n style.color = null;\n } else if (typeof style.color === \"object\") {\n style.color = `rgba(${style.color.r},${style.color.g},${style.color.b},${style.color.a})`;\n }\n if (!style.backgroundColor) {\n style.backgroundColor = \"inherit\";\n } else if (typeof style.backgroundColor === \"object\") {\n style.backgroundColor = `rgba(${style.backgroundColor.r},${style.backgroundColor.g},${style.backgroundColor.b},${style.backgroundColor.a})`;\n }\n if (!style.fontWeight) {\n style.fontWeight = \"inherit\";\n }\n if (style.fontSize) {\n const lineHeight = style.fontSize + ROW_HEIGHT_DELTA_FROM_FONT_SIZE - 2;\n style.fontSize = style.fontSize + \"px\";\n style.lineHeight = lineHeight + \"px\";\n } else {\n style.fontSize = \"inherit\";\n }\n if (this.props.getRowStyle) {\n const rowStyle = this.props.getRowStyle(params);\n if (rowStyle) {\n return Object.assign(style, rowStyle) as RowStyle;\n }\n }\n return style as RowStyle;\n }\n return DataGrid.EMPTY_STYLE;\n }\n\n _getRowHeight(): number {\n return this.state.rowHeight;\n }\n\n _getCellStyle(params: { colDef: ColDef }) {\n const fontSize = this.state.rowHeight - ROW_HEIGHT_DELTA_FROM_FONT_SIZE;\n const cellStyles: { [key: string]: any } = {\"font-size\": fontSize + \"px\"};\n if (params.colDef.type && params.colDef.type.indexOf(\"alignRight\") >= 0) {\n cellStyles[\"text-align\"] = \"right\";\n }\n if (params.colDef.cellRendererParams?.originalCellStyle) {\n const originalCellStylesOrHandler = params.colDef.cellRendererParams.originalCellStyle as {} | ((params: any) => {});\n if (typeof originalCellStylesOrHandler === \"object\") {\n Object.assign(cellStyles, originalCellStylesOrHandler);\n } else if (typeof originalCellStylesOrHandler === \"function\") {\n const originalCellStyles = originalCellStylesOrHandler(params);\n if (originalCellStyles) {\n Object.assign(cellStyles, originalCellStyles);\n }\n }\n }\n return cellStyles;\n }\n\n getDefaultColDefinition(colDef: ColDef | undefined): ColDef {\n if (colDef) {\n return {...colDef, suppressKeyboardEvent: this.suppressKeyboardEvent} as ColDef;\n } else {\n return {suppressKeyboardEvent: this.suppressKeyboardEvent} as ColDef;\n }\n }\n\n private getCustomFrameworkComponents(frameworkComponents: any) {\n let customFrameworkComponents = gridFrameworkComponents;\n if (frameworkComponents) {\n customFrameworkComponents = Object.assign(gridFrameworkComponents, frameworkComponents);\n }\n return customFrameworkComponents;\n }\n\n renderNavigationPanel(): ReactElement {\n return (\n <React.Fragment>\n {this.props.toolbar && this.props.toolbar.renderToolbar ? this.props.toolbar.renderToolbar(this.renderToolBarWithSearch()) : this.renderToolBarWithSearch()}\n {this.props.paging.pageSize >= 0 &&\n <DataGridPagination\n disabled={this.state.loading}\n current={this.state.pageIndex ? this.state.pageIndex + 1 : 1}\n pageSize={this.state.pageSize ? this.state.pageSize : 20}\n total={this.state.recordsCount ?? 1}\n onGoToPage={page => {\n this.onGoToPage(page - 1);\n }}\n />}\n {this.props.paging.pageSize < 0 && this.state.recordsCount && !this.props.toolbar?.hideRecordCount ?\n <span className=\"ant-pagination-total-text\" style={{\n flex: \"0 1 auto\",\n textAlign: \"right\",\n whiteSpace: \"nowrap\",\n marginLeft: \"24px\"\n }}>{`${this.state.viewport[0]}-${this.state.viewport[1]} ${i18n('of')} ${this.state.recordsCount}`}</span>\n : undefined}\n </React.Fragment>\n );\n }\n\n renderToolBarWithSearch(): ReactElement {\n return (\n <Input.Group key=\"filter-panel\" compact size=\"default\"\n style={{whiteSpace: \"nowrap\", flexGrow: 1, display: \"flex\"}}>\n {this.props.toolbar?.toolbarButtons}\n <Dropdown trigger={[\"click\"]} overlay={\n <ContextMenu showMilliseconds={!!this.props.showMilliseconds}\n showYear={!this.props.hideYear}\n renderer={this.props.exportMenu?.renderer}\n onClick={this.props.exportMenu?.onClick}\n getExportContent={this.getExportContent}\n />}\n disabled={this.state.loading}>\n <Button title={i18n(\"Export\")}>\n <DownloadOutlined/>\n </Button>\n </Dropdown>\n\n <Dropdown trigger={[\"click\"]}\n overlay={this.renderSettingsMenu()}>\n <Button\n title={i18n(\"Extended table features\")}\n disabled={this.state.loading}>\n <TableOutlined/>\n </Button>\n </Dropdown>\n {!this.props.search?.hidden && !this.props.search?.searchRenderer && <AutoCompleteInput\n style={{minWidth: 100, flexGrow: 1}}\n placeholder={this.props.search ? this.props.search.placeholder : undefined}\n stringFormatter={this.props.search ? this.props.search.stringFormatter : undefined}\n value={this.props.search ? this.props.search.searchString : undefined}\n inputReadonly={this.props.search ? this.props.search.inputReadonly : undefined}\n options={this.props.search ? this.props.search.searchHistory : undefined}\n onChange={this.props.search ? this.props.search.onChange : undefined}\n onSearch={this.props.search ? this.props.search.onSearch : undefined}\n disabled={this.state.loading || (this.props.filter && this.props.filter.columnSearchVisible)}\n />}\n {this.props.search?.searchRenderer?.()}\n <Button title={this.props.search?.hidden ? i18n(\"Refresh\") : i18n(\"Search\")}\n className={\"search-btn \" + (this.props.search && this.props.search.searchButtonClassName ? this.props.search.searchButtonClassName : \"\")}\n disabled={this.props.search?.searchButtonDisabled}\n type=\"primary\"\n onClick={() => {\n if (this.props.search && this.props.search.onSearch) {\n this.props.search.onSearch();\n }\n }}>\n {this.state.loading ? <LoadingOutlined/> : (this.props.search?.hidden ? <ReloadOutlined/> :\n <SearchOutlined/>)}\n </Button>\n </Input.Group>\n );\n }\n\n renderSettingsMenu(): ReactElement {\n let menuItems: MenuElement[] = [\n <Menu.Item key=\"columnFilter\"\n icon={<FileSearchOutlined/>}\n className={this.props.filter && this.props.filter.columnSearchVisible ? \"ant-dropdown-menu-item-selected\" : \"\"}\n title={i18n(\"Turn on/off column filter\")}>\n {i18n(\"Column Filter\")}\n </Menu.Item>,\n <Menu.Item key=\"autosizeAllColumns\" icon={<ColumnWidthOutlined/>}>\n {i18n(\"Autosize All Columns\")}\n </Menu.Item>,\n <Menu.Item key=\"columnsConfig\" icon={<ControlOutlined/>}>\n {i18n(\"Columns Configuration\")}\n </Menu.Item>,\n <Menu.Divider key=\"columnsAndAdvancedConfigDivider\"/>,\n <Menu.Item key=\"advancedConfig\" icon={<SettingOutlined/>}>\n {i18n(\"Advanced Settings\")}\n </Menu.Item>\n ];\n\n if (this.props.settingsMenu?.renderer) {\n menuItems = this.props.settingsMenu.renderer(menuItems);\n }\n\n return <Menu onClick={({key}) => {\n switch (key) {\n case \"columnFilter\":\n const visible = !(this.props.filter && this.props.filter.columnSearchVisible);\n this.setColumnSearchVisible(visible);\n break;\n case \"autosizeAllColumns\":\n this.gridColumnApi?.autoSizeAllColumns();\n break;\n case \"columnsConfig\":\n this.showColumnsConfig(true);\n break;\n case \"advancedConfig\":\n this.showTableConfiguration(true);\n break;\n default:\n if (this.props.settingsMenu?.onClick) {\n this.props.settingsMenu.onClick(key + \"\");\n }\n }\n }}>\n {menuItems}\n </Menu>;\n }\n\n private renderContextMenu(): ReactElement {\n return <ContextMenu onlySelectedNodes={true}\n showMilliseconds={!!this.props.showMilliseconds}\n showYear={!this.props.hideYear}\n renderer={this.props.contextMenu?.renderer}\n onClick={this.props.contextMenu?.onClick}\n getExportContent={this.getExportContent}\n hideNotificationOnClipboardCopy\n />;\n }\n\n private getAdaptedColumnDefs(columnDefs: DataGridColDef[], floatingFilterEnabled: boolean | undefined, disableColumnDefsPreprocessing: boolean) {\n if (columnDefs.length === 0) {\n return undefined;\n }\n if (disableColumnDefsPreprocessing) {\n return columnDefs;\n }\n const adaptedColumnDefs = columnDefs ? columnDefs.map((columnDef) => {\n const {group, floatingFilter, hide, ...rest} = columnDef as DataGridColDef;\n let floatingFilterEnabledForColumn = !!floatingFilter;\n if (typeof columnDef.type === \"string\") {\n if (!!(this.columnTypes[columnDef.type]?.floatingFilter)) {\n floatingFilterEnabledForColumn = true;\n }\n } else {\n columnDef.type?.forEach((type) => {\n if (!!(this.columnTypes[type]?.floatingFilter)) {\n floatingFilterEnabledForColumn = true;\n }\n });\n\n }\n return {\n ...rest,\n floatingFilter: floatingFilterEnabledForColumn && floatingFilterEnabled,\n resizable: true,\n headerComponent: \"simpleHeader\",\n headerComponentParams: {\n onColumnsConfigVisible: this.showColumnsConfig\n },\n hide: hide === undefined ? rest.initialHide : hide,\n cellStyle: this._getCellStyle,\n cellRendererParams: columnDef.cellStyle ? {originalCellStyle: columnDef.cellStyle} : undefined\n };\n }) : undefined;\n if (adaptedColumnDefs) {\n setTimeout(() => {\n this.props.onColumnDefsAdapted?.(adaptedColumnDefs);\n }, 0);\n }\n return adaptedColumnDefs;\n }\n\n render() {\n const {\n onGridReady,\n columnDefs, disableColumnDefsPreprocessing, onColumnsChanged,\n paging, onPaginationChanged, onViewportChanged,\n selectedIds,\n search, toolbar,\n filter, onFilterChanged, onFilterModified, onCellFocused,\n onSortChanged, frameworkComponents,\n tableConfigVisible, onTableConfigVisible,\n noRecordsOverlayRenderer, loadingOverlayRenderer, onRowDataUpdated,\n rowStyleRules, onChangeRowStyleRules,\n defaultShowMilliseconds, onShowMilliseconds, defaultHideYear, onShowYear,\n suppressLoadingOverlay, defaultColDef, headerHeight,\n ...passedProperties\n } = this.props;\n let key: string;\n let paginationPageSize: number | undefined = undefined;\n if (paging.pageSize > 0) {\n paginationPageSize = paging.pageSize;\n passedProperties.pagination = true;\n key = \"paginated-table\";\n } else if (paging.pageSize === 0) {\n passedProperties.paginationAutoPageSize = true;\n passedProperties.pagination = true;\n key = \"paginated-table\";\n } else {\n // pagination is disabled\n passedProperties.pagination = false;\n key = \"non-paginated-table\";\n }\n\n // nejde\n const floatingFilterEnabled = !!filter && !!filter.columnSearchVisible;\n const adaptedColumnDefs = this.getAdaptedColumnDefs(columnDefs, floatingFilterEnabled, !!disableColumnDefsPreprocessing);\n\n const customFrameworkComponents = this.getCustomFrameworkComponents(frameworkComponents);\n const debugMode = process.env.NODE_ENV === 'development';\n const panelStyle = {\n display: \"flex\",\n flexFlow: \"column\",\n height: \"100%\",\n width: \"100%\",\n paddingBottom: 8,\n };\n if (this.props.panelStyle) {\n Object.assign(panelStyle, this.props.panelStyle);\n }\n const tablePanelStyle = {flex: \"1 1 auto\", marginTop: 16, overflow: \"auto\"};\n if (this.props.tablePanelStyle) {\n Object.assign(tablePanelStyle, this.props.tablePanelStyle);\n }\n\n return (\n <React.Fragment>\n <Card size=\"small\" bordered={false}\n style={{height: \"100%\"}}\n bodyStyle={panelStyle}>\n <div style={{display: \"flex\"}}>\n {this.renderNavigationPanel()}\n </div>\n <div style={tablePanelStyle}>\n <Dropdown trigger={[\"contextMenu\"]}\n getPopupContainer={() => {\n // very nasty trick how remove error of ResizeObservers infinite cycling - because popover (with dynamic size) is placed in in resizable panel\n return (ReactDOM.findDOMNode(this)?.parentNode ?? document.body) as HTMLElement;\n }}\n overlay={this.renderContextMenu()}\n overlayStyle={!this.state.contextMenuVisible ? {display: \"none\"} : undefined}\n onVisibleChange={(visible) => {\n if (!visible) {\n this.setState({contextMenuVisible: false});\n }\n }}\n >\n <div className=\"ag-theme-balham\" style={{width: \"100%\", height: \"100%\"}}\n ref={(wrapingDiv) => {\n this.wrappingDiv = wrapingDiv;\n }}>\n <AgGridReact\n key={key}\n debug={debugMode}\n paginationPageSize={paginationPageSize}\n maxConcurrentDatasourceRequests={this.props.rowModelType === \"infinite\" ? 1 : undefined}\n onGridReady={this.onGridReady}\n onPaginationChanged={this.onPaginationChanged}\n onFilterModified={this.onFilterModified}\n onFilterChanged={this.onFilterChanged}\n onSortChanged={this.onSortChanged}\n defaultColDef={this.getDefaultColDefinition(defaultColDef)}\n columnDefs={adaptedColumnDefs as ColDef[]}\n {...passedProperties}\n onCellFocused={this.onCellFocused}\n suppressPaginationPanel={true}\n getRowNodeId={getRowNodeId}\n frameworkComponents={customFrameworkComponents}\n columnTypes={this.columnTypes}\n onColumnVisible={this.onColumnsChanged}\n onColumnPinned={this.onColumnsChanged}\n onColumnResized={this.onColumnsChanged}\n onColumnMoved={this.onColumnsChanged}\n onCellMouseDown={this.onCellMouseDown}\n navigateToNextCell={this.navigateToNextCell}\n onViewportChanged={this.onViewportChanged}\n onCellContextMenu={this.onCellContextMenu}\n loadingOverlayComponent='loadingOverlay'\n noRowsOverlayComponent='noRecordsOverlay'\n onRowDataUpdated={this.onRowDataUpdated}\n context={this.table_context}\n rowHeight={this.state.rowHeight}\n getRowStyle={this._getRowStyle}\n getRowHeight={this._getRowHeight}\n headerHeight={headerHeight !== undefined ? headerHeight : this.state.rowHeight + 4}\n floatingFiltersHeight={this.state.rowHeight + 4}\n suppressLoadingOverlay={this.props.loadingOverlayRenderer ? true : this.props.suppressLoadingOverlay}\n >\n </AgGridReact>\n {this.state.loading && this.props.loadingOverlayRenderer &&\n <div className=\"ag-overlay\" aria-hidden=\"true\" ref=\"overlayWrapper\">\n <div className=\"ag-overlay-panel\">\n <div\n className=\"ag-overlay-wrapper ag-layout-normal ag-overlay-loading-wrapper\">\n <div className=\"ag-react-container\">\n {this.props.loadingOverlayRenderer?.()}\n </div>\n </div>\n </div>\n </div>\n }\n </div>\n </Dropdown>\n {this.props.tableOverlayRenderer?.()}\n </div>\n </Card>\n\n {!!this.gridApi && !!this.gridColumnApi && this.state.pageSize !== null &&\n <DataGridEditor dataGrid={this}\n gridApi={this.gridApi}\n gridColumnApi={this.gridColumnApi}\n columnDefinitions={columnDefs}\n columnModel={this.state.columnModel}\n visible={!!this.props.tableConfigVisible}\n onTableConfigVisible={this.showTableConfiguration}\n paginationPageSize={paging.pageSize}\n paginationDefaultPageSize={paging.defaultPageSize}\n currentPageSize={this.state.pageSize}\n showMilliseconds={!!this.props.showMilliseconds}\n defaultShowMilliseconds={!!this.props.defaultShowMilliseconds}\n showYear={!this.props.hideYear}\n defaultShowYear={!this.props.defaultHideYear}\n rowStyleRules={this.props.rowStyleRules}\n defaultRowStyleRules={this.props.defaultRowStyleRules}\n onChangeRowStyleRules={onChangeRowStyleRules}\n />}\n\n\n {!!this.gridApi && !!this.gridColumnApi && <ModalDialog\n mode={ModalDialogMode.OK_CANCEL}\n visible={this.state.columnsConfigVisible}\n initialWidth={700}\n initialHeight={this.state.columnTransferHeight}\n title={<span><ControlOutlined style={{\n color: \"#faad14\",\n fontSize: 22,\n marginRight: 16\n }}/>{i18n(\"Columns Configuration\")}</span>}\n cancelText={i18n(\"Cancel\")}\n onCancel={() => {\n if (this.gridColumnApi && this.columnModelBeforeEdit) {\n this.gridColumnApi.applyColumnState({state: this.columnModelBeforeEdit, applyOrder: true});\n delete this.columnModelBeforeEdit;\n this.showColumnsConfig(false);\n }\n }}\n onOk={() => {\n delete this.columnModelBeforeEdit;\n this.showColumnsConfig(false);\n }}\n onResize={({height}) => {\n this.setState({columnTransferHeight: height});\n }}\n zIndex={100}\n >\n <ColumnTransfer\n columnDefinitions={columnDefs as ColDef[]}\n columnModel={this.state.columnModel}\n gridApi={this.gridApi}\n gridColumnApi={this.gridColumnApi}\n height={this.state.columnTransferHeight - 154}\n />\n </ModalDialog>}\n\n </React.Fragment>\n );\n }\n}"]}
|