ods-component-lib 1.23.4 → 1.23.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/devextreme/OdsBasicDataGrid/OdsBasicDataGrid.Functions.js.map +1 -1
- package/dist/components/devextreme/OdsBatchEditDataGrid/OdsBatchEditDataGrid.Functions.js.map +1 -1
- package/dist/components/devextreme/OdsMergeCellDataGrid/OdsMergeCellDataGrid.Functions.js.map +1 -1
- package/dist/components/devextreme/OdsRemoteDataGrid.js +39 -39
- package/dist/components/devextreme/OdsRemoteDataGrid.js.map +1 -1
- package/dist/components/devextreme/OdsTransfer.js +40 -37
- package/dist/components/devextreme/OdsTransfer.js.map +1 -1
- package/dist/components/devextreme/OdsTransferV2.js +63 -60
- package/dist/components/devextreme/OdsTransferV2.js.map +1 -1
- package/dist/index.d.ts +6 -0
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OdsRemoteDataGrid.js","sources":["../../../src/components/devextreme/OdsRemoteDataGrid.tsx"],"sourcesContent":["import { createRoot } from \"react-dom/client\";\r\nimport React, {\r\n useState,\r\n useEffect,\r\n useMemo,\r\n useCallback,\r\n useRef,\r\n } from \"react\";\r\nimport DataGrid, {\r\n Item as DxItem,\r\n Column,\r\n ColumnChooser,\r\n ColumnChooserSearch,\r\n ColumnChooserSelection,\r\n Export,\r\n FilterPanel,\r\n FilterRow,\r\n HeaderFilter,\r\n LoadPanel,\r\n Position,\r\n SearchPanel,\r\n Sorting,\r\n Toolbar,\r\n StateStoring,\r\n Scrolling,\r\n IDataGridOptions,\r\n Summary,\r\n TotalItem,\r\n IButtonProps,\r\n Selection,\r\n ISelectionProps,\r\n Pager,\r\n IEditingProps,\r\n Editing,\r\n Popup,\r\n Form,\r\n Paging,\r\n ISummaryProps,\r\n MasterDetail \r\n} from \"devextreme-react/data-grid\";\r\nimport { Item } from \"devextreme-react/form\";\r\nimport { exportDataGrid } from \"devextreme/pdf_exporter\";\r\nimport { exportDataGrid as exportDataGridXls } from \"devextreme/excel_exporter\";\r\nimport jsPDF from \"jspdf\";\r\nimport { Workbook } from \"exceljs\";\r\nimport { saveAs } from \"file-saver-es\";\r\nimport dayjs from \"dayjs\";\r\nimport { Tooltip, theme } from \"antd\";\r\nimport { locale, loadMessages } from \"devextreme/localization\";\r\nimport { Lookup } from \"devextreme-react\";\r\nimport debounce from \"lodash/debounce\";\r\nimport { InfoCircleOutlined } from \"@ant-design/icons\";\r\n\r\nimport { ButtonType } from 'antd/es/button/buttonHelpers';\r\nimport queryString from 'query-string';\r\nimport ReactDOM from 'react-dom';\r\nimport DynamicIcon from './datagridUtils/DynamicIcon';\r\nimport OdsButton from \"../antd/button/OdsButton\";\r\nimport OdsTitle from \"../antd/typography/OdsTitle\";\r\nimport OdsDropdown from \"../antd/dropdown/OdsDropdown\";\r\nimport OdsDataGrdiRowButton from \"../antd/button/OdsDataGrdiRowButton\";\r\nimport { isTextEmpty } from \"../../utils/commonFunctions\";\r\n\r\nconst exportFormats = [\"xlsx\"]; //['xlsx', 'pdf'];\r\nlet totalPageCount = 1;\r\nlet loadedPageCount = 1;\r\nlet totalRecordCount = 0;\r\nconst { useToken } = theme;\r\n\r\nexport interface IOdsDataGridProps extends IDataGridOptions {\r\n dataGridPageName?: string;\r\n language: string;\r\n exportFileName: string;\r\n filterEnabledShow: boolean;\r\n pageTitle?: string;\r\n toolbarButtonGroup?: IButtonGroup[];\r\n actionButtonGroup?: IButtonGroup[];\r\n actionButtonGroupCaption?: string;\r\n columns: any[];\r\n detailGridColums?: any[];\r\n pageSize?: number;\r\n actionColumnEnable: boolean;\r\n selectOptions?: ISelectOptions;\r\n columnChooserPositionDisabled?: boolean;\r\n pagingEnable?: boolean;\r\n edit?: IEditingoptions;\r\n isServerSide: boolean;\r\n axiosRequest?: IAxiosProps;\r\n customSummary?: ISummaryRowOptions;\r\n handleEditorPreparing?: any;\r\n isFilterRow?: boolean;\r\n filterData?: any[];\r\n showMasterDetail?: boolean;\r\n detailData?: any;\r\n}\r\n\r\ninterface ISummaryRowOptions {\r\n summaryLoadedDataLabel?: string;\r\n summaryTotalDataLabel?: string;\r\n summaryFilteredDataLabel?: string;\r\n summaryItems?: ISummaryProps[];\r\n summaryTotalCount?: number;\r\n summaryTotalPageCountLabel?: string;\r\n}\r\n\r\ninterface IAxiosProps {\r\n requestData?: any;\r\n apiUrl: string;\r\n environmentUrl: string;\r\n requestQueryString?: any;\r\n requestType: string;\r\n}\r\n\r\ninterface IEditingoptions extends IEditingProps {\r\n formItems?: any[];\r\n title?: string;\r\n}\r\n\r\ninterface ISelectOptions extends ISelectionProps {\r\n selectEnable: boolean;\r\n}\r\n\r\ninterface IButtonGroup extends IButtonProps {\r\n type?: ButtonType;\r\n label?: string;\r\n onclick?: React.MouseEventHandler<HTMLElement>;\r\n actionPermission?: boolean;\r\n}\r\n\r\nconst OdsRemoteDataGrid = (props: IOdsDataGridProps) => {\r\n const { token } = useToken();\r\n const [data, setData] = useState([]);\r\n const fileName = props.exportFileName\r\n ? props.exportFileName + dayjs().format(\"YYYYMMDD\")\r\n : \"DatagridExportFile\" + dayjs().format(\"YYYYMMDD\");\r\n const [filteredRowCount, setFilteredRowCount] = useState(0);\r\n const columns = useRef(props.columns);\r\n let gridRef = useRef(null);\r\n const filterApplied = useRef(false);\r\n const [loading, setLoading] = useState(false);\r\n const [contentReady, setContentReady] = useState(false);\r\n const [scrollPosition, setScrollPosition] = useState(0);\r\n\r\n const onCancelEditEvent = new CustomEvent(\"cancelEdit\", {\r\n bubbles: true,\r\n detail: {\r\n rowData: null,\r\n },\r\n });\r\n\r\n const headers = new Headers({\r\n \"Content-Type\": \"application/json\",\r\n \"Accept-Language\": props.language != \"\" ? props.language : \"EN\",\r\n });\r\n\r\n useEffect(() => {\r\n totalPageCount = 1;\r\n loadedPageCount = 1;\r\n totalRecordCount = 0;\r\n }, [props.dataGridPageName]);\r\n\r\n useEffect(() => {\r\n if (props.axiosRequest !== undefined\r\n && ((props.axiosRequest?.requestData && Object.keys(props.axiosRequest?.requestData).length > 0) || (props.axiosRequest?.requestQueryString))) {\r\n totalPageCount = 1;\r\n loadedPageCount = 1;\r\n totalRecordCount = 0;\r\n setData([]);\r\n fetchData();\r\n }\r\n }, [props.axiosRequest?.requestData, props.axiosRequest?.requestQueryString]);\r\n\r\n useEffect(() => {\r\n if (columns.current !== undefined && columns.current.length > 0) {\r\n const newColumns = columns.current.map((colItem) => {\r\n if (colItem.tooltip !== undefined && colItem.tooltip.enable) {\r\n const headerCellRenderr = () => {\r\n return (\r\n <div>\r\n <span>{colItem.caption}</span>\r\n <Tooltip title={colItem.tooltip.title}>\r\n <InfoCircleOutlined style={{ marginLeft: 5 }} />\r\n </Tooltip>\r\n </div>\r\n );\r\n };\r\n colItem.headerCellRender = headerCellRenderr;\r\n }\r\n\r\n // this process prevents client-side sorting process if grid use server-side\r\n // when calculateSortValue setted anything else from the grid columns sorting process not working for client-side data\r\n if (props.isServerSide)\r\n colItem.calculateSortValue = String(\"dummyFieldForPreventClientSideSorting\")\r\n\r\n return colItem;\r\n });\r\n columns.current = newColumns;\r\n }\r\n }, [props.columns]);\r\n\r\n useEffect(() => {\r\n if (Array.isArray(props.dataSource)) {\r\n setData(props.dataSource);\r\n }\r\n }, [props.dataSource]);\r\n\r\n useEffect(() => {\r\n locale(localStorage.getItem(\"locale\"));\r\n loadMessages(JSON.parse(localStorage.getItem(\"localTranslation\")));\r\n if (gridRef.current) {\r\n gridRef.current?.instance?.()?.updateDimensions();\r\n }\r\n }, []);\r\n\r\n // this useEffect used for check sort change once for component mount process\r\n useEffect(() => {\r\n if (contentReady) checkSortingPropertyForInitilaize();\r\n }, [contentReady]);\r\n\r\n useEffect(() => {\r\n const cssRules = `\r\n .data-exists .dx-datagrid-borders > .dx-datagrid-filter-panel,\r\n .data-exists .dx-datagrid-borders > .dx-datagrid-headers {\r\n border-top: 1px solid rgba(0, 0, 0, 0.06);\r\n padding-right: 0px !important;\r\n }\r\n \r\n .data-exists .dx-datagrid-headers .dx-datagrid-content {\r\n margin-bottom: -1px;\r\n padding-right: 17px !important;\r\n }\r\n `;\r\n\r\n const styleSheet = document.createElement('style');\r\n styleSheet.type = 'text/css';\r\n styleSheet.innerText = cssRules;\r\n document.head.appendChild(styleSheet);\r\n\r\n const checkData = () => {\r\n if (gridRef.current) {\r\n const dataGridInstance = gridRef.current.instance?.();\r\n const dataExists = data.length >= 15;\r\n\r\n const gridElement = dataGridInstance?.element();\r\n if (dataExists) {\r\n gridElement.classList.add('data-exists');\r\n } else {\r\n gridElement.classList.remove('data-exists');\r\n }\r\n }\r\n };\r\n\r\n const dataGridInstance = gridRef.current.instance?.();\r\n dataGridInstance?.on('dataChanged', checkData);\r\n checkData();\r\n\r\n return () => {\r\n document.head.removeChild(styleSheet);\r\n dataGridInstance?.off('dataChanged', checkData);\r\n };\r\n }, [data]);\r\n\r\n // check if there is sorted column and trigger onOptionChanged method for sort process\r\n const checkSortingPropertyForInitilaize = () => {\r\n const { onOptionChanged } = props;\r\n if (onOptionChanged) {\r\n const dataGridInstance = gridRef.current.instance?.();\r\n const sortingState = dataGridInstance?.getVisibleColumns()\r\n .filter((p) => !p.command)\r\n .map((column, index) => ({\r\n index: index, // decrease index for deafult empty column\r\n dataField: column.dataField,\r\n sortOrder: column.sortOrder,\r\n }));\r\n\r\n var sortedColumn = sortingState.find(column => column.sortOrder !== undefined)\r\n if (sortedColumn) {\r\n if (sortedColumn.sortOrder) {\r\n dataGridInstance.option(`columns[${sortedColumn.index}].sortOrder`, sortedColumn.sortOrder);\r\n\r\n // prepare OptionChangedEventInfo data for onOptionChanged method\r\n const fullName = `columns[${sortedColumn.index}].sortOrder`;\r\n const gridEvent = {\r\n component: dataGridInstance,\r\n fullName: fullName,\r\n name: \"optionChanged\",\r\n value: sortedColumn.sortOrder,\r\n previousValue: null,\r\n element: null,\r\n };\r\n\r\n onOptionChanged(gridEvent);\r\n }\r\n }\r\n }\r\n };\r\n\r\n const checkRequestDataHasOnlySortingProperty = (obj) => {\r\n // Get all property names from the object\r\n const keys = Object.keys(obj);\r\n // Check if there is only one property and it is 'Sorting'\r\n return keys.length === 1 && keys[0] === \"Sorting\";\r\n };\r\n\r\n const actionButtons = useMemo(() => {\r\n if (props.actionButtonGroup) {\r\n if (props.actionButtonGroup.length >= 2 && !props.edit) {\r\n return props.actionButtonGroup.slice(0, 2);\r\n } else {\r\n return props.actionButtonGroup;\r\n }\r\n } else {\r\n return [];\r\n }\r\n }, [props.actionButtonGroup]);\r\n\r\n // const kebabMenuButtons = useMemo(() => {\r\n // if (props.actionButtonGroup) {\r\n // if (props.actionButtonGroup.length >= 2 && !props.edit) {\r\n // return props.actionButtonGroup.slice(2, props.actionButtonGroup.length);\r\n // } else {\r\n // return [];\r\n // }\r\n // } else {\r\n // return [];\r\n // }\r\n // }, [props.actionButtonGroup]);\r\n\r\n const fetchData = useCallback(async () => {\r\n if (props.axiosRequest == undefined) return;\r\n\r\n if (props.isServerSide) {\r\n\r\n // check requestData for sorting property if there is only sorting property grid shouldn't do fetch data\r\n if (props.axiosRequest.requestData && checkRequestDataHasOnlySortingProperty(props.axiosRequest.requestData))\r\n return;\r\n\r\n let apiUrl =\r\n props.axiosRequest.environmentUrl + \"\" + props.axiosRequest.apiUrl;\r\n\r\n if (props.axiosRequest.requestData?.PaginatedRequest !== undefined) {\r\n props.axiosRequest.requestData.PaginatedRequest.PageNumber =\r\n loadedPageCount;\r\n props.axiosRequest.requestData.PaginatedRequest.PageSize =\r\n props.pageSize;\r\n }\r\n\r\n if (props.axiosRequest.requestQueryString !== undefined) {\r\n\r\n props.axiosRequest.requestQueryString.maxResultCount = props.pageSize;\r\n\r\n if (loadedPageCount > 1 && totalPageCount >= loadedPageCount) {\r\n props.axiosRequest.requestQueryString.skipCount = ((loadedPageCount - 1) * props.pageSize).toString();\r\n }\r\n\r\n let query = queryString.stringify(props.axiosRequest.requestQueryString);\r\n\r\n apiUrl = `${apiUrl}?${query}`\r\n }\r\n\r\n const requestOptions = {\r\n method: props.axiosRequest.requestType,\r\n headers: headers,\r\n credentials: \"include\" as RequestCredentials,\r\n body: JSON.stringify(props.axiosRequest.requestData),\r\n };\r\n\r\n try {\r\n setLoading(true);\r\n const response = await fetch(apiUrl, requestOptions);\r\n\r\n const newData = await response.json();\r\n\r\n if (loadedPageCount == 1) {\r\n setData(newData.Data ? newData.Data : newData);\r\n\r\n loadedPageCount = 1;\r\n } else if (totalPageCount >= loadedPageCount) {\r\n const newArray = newData.Data ? newData.Data : newData;\r\n setData((prevData) => [...prevData, ...newArray]);\r\n }\r\n\r\n getTotalCount(response, newData);\r\n } catch (error) {\r\n console.error(\"Error fetching data:\", error);\r\n setLoading(false);\r\n } finally {\r\n }\r\n }\r\n }, [\r\n props.axiosRequest?.requestData,\r\n props.axiosRequest?.apiUrl,\r\n props.axiosRequest?.environmentUrl,\r\n props.axiosRequest?.requestQueryString,\r\n props.axiosRequest?.requestType,\r\n props.pageSize,\r\n props.isServerSide,\r\n ]);\r\n\r\n const getTotalCount = (response: Response, data: any): void => {\r\n if (data?.PageCount || data?.RowCount) {\r\n totalPageCount = data.PageCount;\r\n totalRecordCount = data.RowCount;\r\n } else {\r\n let totalCount;\r\n\r\n if (response) totalCount = response.headers.get(\"x-total-count\");\r\n\r\n if (totalCount == null) totalCount = data?.rowCount;\r\n\r\n if (totalCount == null) totalCount = data?.length;\r\n\r\n totalRecordCount = parseInt(totalCount, 10) || 0;\r\n totalPageCount = Math.ceil(totalRecordCount / props.pageSize);\r\n }\r\n\r\n setLoading(false);\r\n };\r\n\r\n const onEditorPreparing = useCallback(\r\n (e: any) => {\r\n if (e.row !== undefined && e.parentType === \"dataRow\") {\r\n if (props.handleEditorPreparing) {\r\n props.handleEditorPreparing(e);\r\n }\r\n }\r\n\r\n if (\r\n e.editorOptions &&\r\n e.rowType === \"data\" &&\r\n e.parentType === \"dataRow\"\r\n ) {\r\n e.editorOptions.onValueChanged = function (args) {\r\n if (args.event && args.event.type === \"cancel\")\r\n e.cellElement.dispatchEvent(onCancelEditEvent);\r\n };\r\n }\r\n },\r\n [props.isServerSide]\r\n );\r\n\r\n const getServerSide = useCallback(\r\n async (type: string) => {\r\n if (type === \"reachedBottom\") {\r\n if (totalPageCount <= loadedPageCount) {\r\n return;\r\n } else {\r\n loadedPageCount = loadedPageCount + 1;\r\n await fetchData();\r\n }\r\n }\r\n },\r\n [totalPageCount]\r\n );\r\n\r\n const onExporting = useCallback(\r\n (e: any) => {\r\n if (e.format === \"xlsx\") {\r\n const workbook = new Workbook();\r\n\r\n //Dışa aktarma işlemi sırasında filtre verilerini yeni sütunları ekle\r\n if (props.filterData != null) {\r\n const newColumnFromFilterData = props.filterData.map((filterItem) => ({\r\n dataField: filterItem.key,\r\n caption: filterItem.key\r\n }));\r\n\r\n const newColumns = [...columns.current, ...newColumnFromFilterData];\r\n e.component.beginUpdate();\r\n e.component.option(\"columns\", newColumns);\r\n e.component.endUpdate();\r\n }\r\n exportDataGridXls({\r\n component: e.component,\r\n worksheet: workbook.addWorksheet(\"Main sheet\"),\r\n autoFilterEnabled: true,\r\n customizeCell: function (options) {\r\n //Buradaki kod dg için yanlızca datefilter çalışması için eklendi. Dg üstünde format olarak format: \"dd.MM.yyyy\" şeklinde düzenleme yapıldı, ekranda saat bilgisi görünmesi içie cellRender: datetimeCellRender fonksiyonu eklendi. Format değişikliği yüzünden ezcelde saat bilgisi çıkmıyordu, bu yüzden bu kod bloğu eklendi.\r\n const { gridCell, excelCell } = options;\r\n if (gridCell.column.dataType === \"datetime\" && gridCell.value) {\r\n // Aşağıdaki if bloğu yukarıdaki if bloğu ile birleştirimemeli. Çünkü \"gridCell?.column?.calculateFilterExpression?.name === \"calculateFilterExpressionForColumn\"\"\" olsa bile gridCell.value değeri hezaman undefined geliyor. gridCell.column['meta'] konrolü cellRender eklenmeme durumu için eklendi.\r\n if (\r\n gridCell.column.calculateFilterExpression?.name ===\r\n \"calculateFilterExpressionForColumn\" &&\r\n gridCell.column[\"meta\"]?.hasCustomCellRenderer\r\n ) {\r\n const date = dayjs(gridCell.value);\r\n const offsetMinutes = date.utcOffset();\r\n const sign = offsetMinutes >= 0 ? \"+\" : \"-\";\r\n const hours = Math.floor(Math.abs(offsetMinutes) / 60);\r\n const minutes = Math.abs(offsetMinutes) % 60;\r\n const formattedOffset = `(UTC${sign}${hours\r\n .toString()\r\n .padStart(2, \"0\")}:${minutes.toString().padStart(2, \"0\")})`;\r\n const formattedDate =\r\n date.format(\"DD.MM.YYYY HH:mm\") + \" \" + formattedOffset;\r\n excelCell.value = formattedDate;\r\n }\r\n }\r\n\r\n //girilen filtre değerlerinin uygun başlık altında satıra yazılması \r\n if (gridCell.rowType !== 'header' && props.filterData != null) {\r\n const matchingItem = props.filterData.find(item => item.key === gridCell.column.dataField);\r\n if (matchingItem) {\r\n excelCell.value = matchingItem.value;\r\n }\r\n }\r\n }\r\n }).then(() => {\r\n workbook.xlsx.writeBuffer().then((buffer) => {\r\n saveAs(new Blob([buffer], { type: 'application/octet-stream' }), fileName + '.xlsx');\r\n });\r\n });\r\n } else {\r\n const doc = new jsPDF();\r\n exportDataGrid({\r\n jsPDFDocument: doc,\r\n component: e.component,\r\n indent: 5,\r\n }).then(() => {\r\n doc.save(fileName + '.pdf');\r\n });\r\n }\r\n }, [fileName, props.filterData]);\r\n\r\n const customLoad = useCallback(() => {\r\n let state = JSON.parse(\r\n localStorage.getItem(props.exportFileName + \"Storage\")\r\n );\r\n\r\n if (localStorage.getItem(props.exportFileName + \"Storage\")) {\r\n state.selectedRowKeys = [];\r\n if (props.filterEnabledShow) state.filterPanel = { filterEnabled: false };\r\n else state.filterPanel = { filterEnabled: true };\r\n }\r\n\r\n return state;\r\n }, [props.filterEnabledShow]);\r\n\r\n const customSave = useCallback(\r\n (state: any) => {\r\n state.selectedRowKeys = [];\r\n if (props.filterEnabledShow) state.filterPanel = { filterEnabled: false };\r\n else state.filterPanel = { filterEnabled: true };\r\n\r\n if (data.length === 0) {\r\n if (!state.filterValue && state.filterValue !== null) {\r\n state.filterValue = null;\r\n }\r\n }\r\n localStorage.setItem(\r\n props.exportFileName + \"Storage\",\r\n JSON.stringify(state)\r\n );\r\n },\r\n [props.filterEnabledShow]\r\n );\r\n\r\n const onEditorPrepared = useCallback((info) => {\r\n if (\r\n info.parentType === \"filterRow\" &&\r\n info.editorName === \"dxSelectBox\" &&\r\n info.dataField === \"IsActive\"\r\n ) {\r\n if (info.dataSource != null && info.dataSource.length > 0) {\r\n info.showAllText = info.dataSource.find((i) => {\r\n return i.value === null;\r\n }).label;\r\n info.trueText = info.dataSource.find((i) => {\r\n return i.value === true;\r\n }).label;\r\n info.falseText = info.dataSource.find((i) => {\r\n return i.value === false;\r\n }).label;\r\n }\r\n }\r\n }, []);\r\n\r\n const renderTotal = useCallback(() => {\r\n let result = \"\";\r\n let totalloaded = 0;\r\n\r\n if (\r\n data.length < 50 ||\r\n !props.isServerSide ||\r\n loadedPageCount == totalPageCount\r\n ) {\r\n totalloaded = data.length;\r\n } else {\r\n totalloaded = loadedPageCount * props.pageSize;\r\n }\r\n\r\n if (props.isServerSide) {\r\n result =\r\n totalRecordCount > 0\r\n ? `${totalloaded} ` +\r\n props.customSummary?.summaryLoadedDataLabel +\r\n `- ${totalRecordCount}` +\r\n props.customSummary?.summaryTotalDataLabel\r\n : ``;\r\n result = concatFilteredLabel(result, totalloaded);\r\n }\r\n\r\n if (\r\n props.customSummary?.summaryTotalCount !== undefined &&\r\n !props.isServerSide\r\n ) {\r\n result =\r\n props.customSummary.summaryTotalDataLabel +\r\n \" : \" +\r\n props.customSummary.summaryTotalCount;\r\n result = concatFilteredLabel(result, totalloaded);\r\n }\r\n\r\n if (totalPageCount > 1) {\r\n result = `${result} - ${props.customSummary?.summaryTotalPageCountLabel} ${loadedPageCount} / ${totalPageCount}`;\r\n }\r\n return result;\r\n }, [\r\n data,\r\n filteredRowCount,\r\n loadedPageCount,\r\n props.pageSize,\r\n totalRecordCount,\r\n filterApplied.current,\r\n ]);\r\n\r\n const concatFilteredLabel = (result: string, totalloaded: number) => {\r\n if (\r\n filteredRowCount > 0 &&\r\n totalloaded !== filteredRowCount &&\r\n filterApplied.current\r\n ) {\r\n let filteredLabel =\r\n `${filteredRowCount} ` +\r\n props.customSummary.summaryFilteredDataLabel +\r\n `- `;\r\n result = `${filteredLabel} ${result} `;\r\n }\r\n return result;\r\n };\r\n\r\n function actionCellRender(cellData, props) {\r\n const kebabMenuButtons = props.actionButtonGroup && props.actionButtonGroup.length >= 2 && !props.edit\r\n ? props.actionButtonGroup.slice(2).map(button => ({\r\n icon: <DynamicIcon iconName={button.icon} />,\r\n onClick: (event) => {\r\n const customEvent = {\r\n column: cellData.column,\r\n component: cellData.component,\r\n element: cellData.element,\r\n event: event,\r\n model: cellData.data,\r\n row: cellData.row\r\n };\r\n button.onClick(customEvent);\r\n }\r\n }))\r\n : [];\r\n\r\n const buttonElements = [];\r\n\r\n {\r\n !props.edit &&\r\n actionButtons.forEach((buttonItem, index) => {\r\n const isVisible = typeof buttonItem.visible === 'function'\r\n ? buttonItem.visible({ column: cellData.column, component: cellData.component, row: cellData.row })\r\n : buttonItem.visible;\r\n buttonElements.push(\r\n <OdsDataGrdiRowButton\r\n key={`action-button-${index}`}\r\n hint={buttonItem.hint}\r\n visible={isVisible}\r\n size=\"small\"\r\n type=\"text\"\r\n disabled={\r\n buttonItem.actionPermission === undefined\r\n ? false\r\n : !buttonItem.actionPermission\r\n }\r\n icon={\r\n <DynamicIcon iconName={buttonItem.icon} />\r\n }\r\n onClick={(event) => {\r\n // event.preventDefault();\r\n const customEvent = {\r\n column: cellData.column,\r\n component: cellData.component,\r\n element: cellData.element,\r\n event: event,\r\n model: cellData.data,\r\n row: cellData.row\r\n };\r\n buttonItem.onClick(customEvent);\r\n }}\r\n />\r\n );\r\n });\r\n }\r\n {\r\n props.edit &&\r\n actionButtons.forEach((buttonItem, index) => {\r\n const isVisible = typeof buttonItem.visible === 'function'\r\n ? buttonItem.visible({ column: cellData.column, component: cellData.component, row: cellData.row })\r\n : buttonItem.visible;\r\n\r\n buttonElements.push(\r\n <OdsDataGrdiRowButton\r\n key={`action-button-${index}`}\r\n name={buttonItem.name}\r\n hint={buttonItem.hint}\r\n visible={isVisible}\r\n size=\"small\"\r\n type=\"text\"\r\n disabled={\r\n buttonItem.actionPermission === undefined\r\n ? false\r\n : !buttonItem.actionPermission\r\n }\r\n icon={\r\n <DynamicIcon iconName={buttonItem.icon} />\r\n }\r\n onClick={(event) => {\r\n if (buttonItem.onClick) { \r\n // event.preventDefault();\r\n const customEvent = {\r\n column: cellData.column,\r\n component: cellData.component,\r\n element: cellData.element,\r\n event: event,\r\n model: cellData.data,\r\n row: cellData.row \r\n };\r\n buttonItem.onClick(customEvent);\r\n }\r\n }}\r\n />\r\n );\r\n });\r\n }\r\n\r\n if (kebabMenuButtons.length > 0) {\r\n buttonElements.push(\r\n <OdsDropdown\r\n key={`dropdown-${cellData.rowIndex || cellData.data.ID}`}\r\n menuItems={kebabMenuButtons}\r\n >\r\n <OdsDataGrdiRowButton type=\"text\" icon={<DynamicIcon iconName={\"kebabMenu\"} />} />\r\n </OdsDropdown>\r\n );\r\n }\r\n\r\n return <React.Fragment><div className=\"flex flex-row gap-4 justify-center items-center\">{buttonElements}</div></React.Fragment>;\r\n }\r\n\r\n const onScrollEnd = useCallback(() => {\r\n getServerSide(\"reachedBottom\");\r\n }, [props.axiosRequest?.requestData, getServerSide]);\r\n\r\n const handleScroll = (e: any) => {\r\n const run = debounce((e: any) => {\r\n const scrollable = e.target as HTMLElement;\r\n\r\n const top = scrollable?.scrollTop ?? 0;\r\n const height = scrollable?.clientHeight ?? 0;\r\n const scrollHeight = scrollable?.scrollHeight ?? 0;\r\n const maxHeight = Math.max(top, height, scrollHeight) - 1;\r\n\r\n if (scrollHeight <= height) return;\r\n\r\n const reachedBottom = Math.ceil(top + height) >= maxHeight;\r\n\r\n let lastScrollTop = 0;\r\n if (top < lastScrollTop) return;\r\n\r\n lastScrollTop = top <= 0 ? 0 : top;\r\n if (reachedBottom) onScrollEnd();\r\n\r\n setScrollPosition(top);\r\n }, 200);\r\n\r\n run(e);\r\n };\r\n\r\n useEffect(() => {\r\n const gridElement = gridRef.current.instance?.()?.element();\r\n gridElement.scrollTop = scrollPosition;\r\n }, [data.length]);\r\n\r\n useEffect(() => {\r\n document\r\n .querySelectorAll(\".dx-scrollable-container\")\r\n .forEach((container) => {\r\n container.addEventListener(\"scrollend\", handleScroll);\r\n });\r\n\r\n return () => {\r\n document\r\n .querySelectorAll(\".dx-scrollable-container\")\r\n .forEach((container) => {\r\n container.removeEventListener(\"scrollend\", handleScroll);\r\n });\r\n };\r\n }, [data.length]);\r\n\r\n const handleContentReady = (e) => {\r\n const dataGridInstance = e.component;\r\n const filteredDataCount = dataGridInstance.totalCount();\r\n\r\n if (filterApplied.current && filteredDataCount > 0)\r\n {\r\n setFilteredRowCount(filteredDataCount);\r\n }\r\n else{\r\n setFilteredRowCount(0);\r\n }\r\n\r\n // set content ready state for trigger sort change method only once if content ready\r\n if (!contentReady) setContentReady(true);\r\n };\r\n\r\n const onFilterValueChange = (e) => {\r\n if (e !== null)\r\n filterApplied.current = true;\r\n else {\r\n filterApplied.current = false;\r\n setFilteredRowCount(0);\r\n }\r\n }\r\n\r\n\r\n const onToolbarPreparing = (e) => {\r\n if (props.toolbarButtonGroup && props.toolbarButtonGroup.length > 0) {\r\n e.toolbarOptions.items.unshift({\r\n location: 'before',\r\n template: function (_, __, container) {\r\n const wrapper = document.createElement('div');\r\n container.appendChild(wrapper);\r\n const root = createRoot(wrapper);\r\n\r\n root.render(<React.StrictMode>\r\n {props.toolbarButtonGroup && Array.isArray(props.toolbarButtonGroup) &&\r\n props.toolbarButtonGroup.map((buttonGroupItem, index) => (\r\n <OdsButton key={index} style={{ marginLeft: token.margin }} type={buttonGroupItem.type} onClick={buttonGroupItem.onclick}>\r\n {buttonGroupItem.label}\r\n </OdsButton>\r\n ))\r\n }\r\n </React.StrictMode>);\r\n }\r\n });\r\n }\r\n\r\n if(!isTextEmpty(props.pageTitle)) {\r\n e.toolbarOptions.items.unshift({\r\n location: 'before',\r\n cssClass: 'toolbarTitleItem',\r\n template: function (_, __, container) {\r\n const wrapper = document.createElement('div');\r\n container.appendChild(wrapper);\r\n const root = createRoot(wrapper);\r\n\r\n root.render(<React.StrictMode>\r\n <OdsTitle level={5} style={{ display: \"flex\", alignItems: \"center\", alignSelf: \"stretch\", margin: 0 }}>{props.pageTitle}</OdsTitle>\r\n </React.StrictMode>);\r\n }\r\n });\r\n }\r\n };\r\n const detailGrid = ({ data }) => {\r\n return (\r\n <OdsRemoteDataGrid\r\n {...props}\r\n showMasterDetail={false}\r\n columns={props.detailGridColums}\r\n dataSource={props.detailData[data.key.ID]}\r\n\r\n />\r\n )\r\n };\r\n\r\n return (\r\n <React.Fragment >\r\n\r\n <DataGrid\r\n keyExpr={props.keyExpr}\r\n dataSource={data}\r\n showBorders={true}\r\n columnAutoWidth={false}\r\n onEditorPreparing={onEditorPreparing}\r\n ref={gridRef}\r\n onExporting={onExporting}\r\n height={props.height == undefined ? window.innerHeight - 164 : props.height}\r\n allowColumnResizing={true}\r\n columnResizingMode=\"nextColumn\"\r\n onRowClick={props.onRowClick}\r\n onEditorPrepared={onEditorPrepared}\r\n showRowLines={true}\r\n allowColumnReordering={true}\r\n scrolling={{ useNative: true }}\r\n remoteOperations={false}\r\n paging={{ enabled: false }}\r\n repaintChangesOnly={true}\r\n focusedRowEnabled={false}\r\n onCellClick={e => {\r\n e.cellElement.style.backgroundColor = 'transparent';\r\n }}\r\n filterSyncEnabled={true}\r\n wordWrapEnabled={props.wordWrapEnabled ? props.wordWrapEnabled : false}\r\n columnFixing={{ enabled: true }}\r\n onSelectionChanged={props.onSelectionChanged}\r\n noDataText={props.noDataText}\r\n onSaved={props.onSaved}\r\n onSaving={props.onSaving}\r\n onEditCanceling={props.onEditCanceling}\r\n onContentReady={handleContentReady}\r\n onFilterValueChange={onFilterValueChange}\r\n onOptionChanged={props.onOptionChanged}\r\n onToolbarPreparing={props.onToolbarPreparing || onToolbarPreparing}\r\n >\r\n {columns.current.map((col: any) => (\r\n <Column key={col.dataField} {...col} minWidth={50} >\r\n {col.lookUp && <Lookup {...col.lookUp} />}\r\n {col.dataField === 'IsActive' &&\r\n <HeaderFilter dataSource={[\r\n { text: 'Active', value: true },\r\n { text: 'Passive', value: false },\r\n ]} />\r\n }\r\n\r\n {col.useDynamicHeaderFilter && (\r\n <HeaderFilter\r\n allowSearch={true}\r\n dataSource={[\r\n { text: \"(Blanks)\", value: null }, // Blanks seçeneğini ekleyin\r\n ...(data && data.length > 0 ? data\r\n .filter(\r\n (item) =>\r\n item[col.dataField] !== null &&\r\n item[col.dataField] !== undefined &&\r\n item[col.dataField] !== \"\"\r\n )\r\n .map((item) => ({\r\n text: item[col.dataField].toString(),\r\n value: item[col.dataField],\r\n })) : [])\r\n ]}\r\n />\r\n )}\r\n {col.multiLevelColumns &&\r\n col.multiLevelColumns.map((multiLevelColItem: any) => (\r\n <Column\r\n dataField={multiLevelColItem.dataField}\r\n caption={multiLevelColItem.caption}\r\n width={80}\r\n />\r\n ))}\r\n </Column>\r\n ))}\r\n\r\n {props.actionColumnEnable !== undefined &&\r\n props.actionColumnEnable === true && (\r\n <Column\r\n dataField=\"Actions\"\r\n fixed={true}\r\n allowSorting={false}\r\n caption={props.actionButtonGroupCaption}\r\n type=\"buttons\"\r\n showInColumnChooser={false}\r\n cellRender={(cellData) => actionCellRender(cellData, props)}\r\n /> \r\n )}\r\n {props.showMasterDetail && (\r\n <MasterDetail enabled={true} component={detailGrid} />\r\n )}\r\n\r\n {props.edit && (\r\n <Editing\r\n mode={props.edit.mode}\r\n allowUpdating={props.edit.allowUpdating}\r\n allowDeleting={props.edit.allowDeleting}\r\n allowAdding={props.edit.allowAdding}\r\n useIcons={true}\r\n >\r\n {props.edit.mode === \"popup\" && (\r\n <div>\r\n <Popup\r\n showTitle={true}\r\n width={700}\r\n height={300}\r\n showCloseButton={false}\r\n />\r\n <Form>\r\n {props.edit.formItems &&\r\n props.edit.formItems.map((formItem: any) => (\r\n <Item\r\n itemType={formItem.itemType}\r\n colCount={formItem.colCount}\r\n colSpan={formItem.colSpan}\r\n >\r\n {formItem.items.map((subItem: any) => (\r\n <Item\r\n key={subItem.dataField}\r\n dataField={subItem.dataField}\r\n />\r\n ))}\r\n </Item>\r\n ))}\r\n </Form>\r\n </div>\r\n )}\r\n </Editing>\r\n )}\r\n <Paging defaultPageSize={props.pageSize} />\r\n {props.pagingEnable && (\r\n <Pager\r\n visible={false}\r\n displayMode=\"full\"\r\n showPageSizeSelector={false}\r\n showNavigationButtons={false}\r\n showInfo={false}\r\n />\r\n )}\r\n <Scrolling\r\n showScrollbar=\"always\"\r\n scrollByContent={true}\r\n scrollByThumb={true}\r\n mode={\"virtual\"}\r\n rowRenderingMode=\"virtual\"\r\n />\r\n {loading && <LoadPanel enabled shadingColor=\"rgba(0,0,0,0.4)\" />}\r\n <SearchPanel visible={true} />\r\n <FilterRow\r\n visible={props.isFilterRow != undefined ? props.isFilterRow : true}\r\n />\r\n <FilterPanel visible={true} />\r\n <HeaderFilter visible={true} />\r\n <Sorting mode=\"multiple\" />\r\n <Export\r\n enabled={true}\r\n allowExportSelectedData={true}\r\n formats={exportFormats}\r\n />\r\n {props.selectOptions?.selectEnable && (\r\n <Selection\r\n mode={props.selectOptions?.mode ?? \"multiple\"}\r\n deferred={props.selectOptions?.deferred ?? true}\r\n />\r\n )}\r\n <ColumnChooser enabled={true} mode=\"select\">\r\n {!props.columnChooserPositionDisabled && (\r\n <Position\r\n my=\"right top\"\r\n at=\"right bottom\"\r\n of={\r\n document.querySelector(`.${props.dataGridPageName}`)\r\n ? `.${props.dataGridPageName} .dx-datagrid-column-chooser-button`\r\n : \".dx-datagrid-column-chooser-button\"\r\n }\r\n />\r\n )}\r\n <ColumnChooserSearch\r\n enabled={true}\r\n editorOptions={{ placeholder: \"\" }}\r\n />\r\n\r\n <ColumnChooserSelection\r\n allowSelectAll={true}\r\n selectByClick={true}\r\n recursive={true} />\r\n </ColumnChooser>\r\n <Toolbar>\r\n <DxItem name=\"searchPanel\" />\r\n <DxItem name=\"columnChooserButton\" cssClass='toolbarPanelItems' />\r\n <DxItem name=\"exportButton\" cssClass='toolbarPanelItems' />\r\n </Toolbar>\r\n <Summary calculateCustomSummary={renderTotal}>\r\n <TotalItem\r\n column={columns.current[0].dataField}\r\n summaryType=\"custom\"\r\n displayFormat={renderTotal()}\r\n />\r\n </Summary>\r\n <StateStoring\r\n enabled={true}\r\n type=\"custom\"\r\n customLoad={customLoad}\r\n customSave={customSave} >\r\n </StateStoring>\r\n </DataGrid>\r\n </React.Fragment >\r\n )\r\n}\r\n\r\nexport default OdsRemoteDataGrid;\r\n"],"names":["exportFormats","totalPageCount","loadedPageCount","totalRecordCount","useToken","theme","OdsRemoteDataGrid","props","token","data","setData","useState","fileName","dayjs","filteredRowCount","setFilteredRowCount","columns","useRef","gridRef","filterApplied","loading","setLoading","contentReady","setContentReady","scrollPosition","setScrollPosition","onCancelEditEvent","headers","useEffect","fetchData","newColumns","colItem","headerCellRenderr","jsx","Tooltip","InfoCircleOutlined","locale","loadMessages","checkSortingPropertyForInitilaize","cssRules","styleSheet","checkData","dataGridInstance","dataExists","gridElement","onOptionChanged","sortedColumn","p","column","index","fullName","gridEvent","checkRequestDataHasOnlySortingProperty","obj","keys","actionButtons","useMemo","useCallback","apiUrl","query","queryString","requestOptions","response","newData","newArray","prevData","getTotalCount","totalCount","onEditorPreparing","args","getServerSide","type","onExporting","workbook","Workbook","newColumnFromFilterData","filterItem","exportDataGridXls","options","gridCell","excelCell","date","offsetMinutes","sign","hours","minutes","formattedOffset","formattedDate","matchingItem","item","buffer","saveAs","doc","jsPDF","exportDataGrid","customLoad","state","customSave","onEditorPrepared","info","i","renderTotal","result","totalloaded","concatFilteredLabel","actionCellRender","cellData","kebabMenuButtons","button","DynamicIcon","event","customEvent","buttonElements","buttonItem","isVisible","OdsDataGrdiRowButton","OdsDropdown","React","onScrollEnd","handleScroll","debounce","e","scrollable","top","height","scrollHeight","maxHeight","reachedBottom","lastScrollTop","container","handleContentReady","filteredDataCount","onFilterValueChange","onToolbarPreparing","_","__","wrapper","createRoot","buttonGroupItem","OdsButton","isTextEmpty","OdsTitle","detailGrid","jsxs","DataGrid","col","Column","Lookup","HeaderFilter","multiLevelColItem","MasterDetail","Editing","Popup","Form","formItem","Item","subItem","Paging","Pager","Scrolling","LoadPanel","SearchPanel","FilterRow","FilterPanel","Sorting","Export","Selection","ColumnChooser","Position","ColumnChooserSearch","ColumnChooserSelection","Toolbar","DxItem","Summary","TotalItem","StateStoring"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"OdsRemoteDataGrid.js","sources":["../../../src/components/devextreme/OdsRemoteDataGrid.tsx"],"sourcesContent":["import { createRoot } from \"react-dom/client\";\r\nimport React, {\r\n useState,\r\n useEffect,\r\n useMemo,\r\n useCallback,\r\n useRef,\r\n } from \"react\";\r\nimport DataGrid, {\r\n Item as DxItem,\r\n Column,\r\n ColumnChooser,\r\n ColumnChooserSearch,\r\n ColumnChooserSelection,\r\n Export,\r\n FilterPanel,\r\n FilterRow,\r\n HeaderFilter,\r\n LoadPanel,\r\n Position,\r\n SearchPanel,\r\n Sorting,\r\n Toolbar,\r\n StateStoring,\r\n Scrolling,\r\n IDataGridOptions,\r\n Summary,\r\n TotalItem,\r\n IButtonProps,\r\n Selection,\r\n ISelectionProps,\r\n Pager,\r\n IEditingProps,\r\n Editing,\r\n Popup,\r\n Form,\r\n Paging,\r\n ISummaryProps,\r\n MasterDetail \r\n} from \"devextreme-react/data-grid\";\r\nimport { Item } from \"devextreme-react/form\";\r\nimport { exportDataGrid } from \"devextreme/pdf_exporter\";\r\nimport { exportDataGrid as exportDataGridXls } from \"devextreme/excel_exporter\";\r\nimport jsPDF from \"jspdf\";\r\nimport { Workbook } from \"exceljs\";\r\nimport { saveAs } from \"file-saver-es\";\r\nimport dayjs from \"dayjs\";\r\nimport { Tooltip, theme } from \"antd\";\r\nimport { locale, loadMessages } from \"devextreme/localization\";\r\nimport { Lookup } from \"devextreme-react\";\r\nimport debounce from \"lodash/debounce\";\r\nimport { InfoCircleOutlined } from \"@ant-design/icons\";\r\n\r\nimport { ButtonType } from 'antd/es/button/buttonHelpers';\r\nimport queryString from 'query-string';\r\nimport ReactDOM from 'react-dom';\r\nimport DynamicIcon from './datagridUtils/DynamicIcon';\r\nimport OdsButton from \"../antd/button/OdsButton\";\r\nimport OdsTitle from \"../antd/typography/OdsTitle\";\r\nimport OdsDropdown from \"../antd/dropdown/OdsDropdown\";\r\nimport OdsDataGrdiRowButton from \"../antd/button/OdsDataGrdiRowButton\";\r\nimport { isTextEmpty } from \"../../utils/commonFunctions\";\r\n\r\nconst exportFormats = [\"xlsx\"]; //['xlsx', 'pdf'];\r\nlet totalPageCount = 1;\r\nlet loadedPageCount = 1;\r\nlet totalRecordCount = 0;\r\nconst { useToken } = theme;\r\n\r\nexport interface IOdsDataGridProps extends IDataGridOptions {\r\n dataGridPageName?: string;\r\n language: string;\r\n exportFileName: string;\r\n filterEnabledShow: boolean;\r\n pageTitle?: string;\r\n toolbarButtonGroup?: IButtonGroup[];\r\n actionButtonGroup?: IButtonGroup[];\r\n actionButtonGroupCaption?: string;\r\n columns: any[];\r\n detailGridColums?: any[];\r\n pageSize?: number;\r\n actionColumnEnable: boolean;\r\n selectOptions?: ISelectOptions;\r\n columnChooserPositionDisabled?: boolean;\r\n pagingEnable?: boolean;\r\n edit?: IEditingoptions;\r\n isServerSide: boolean;\r\n axiosRequest?: IAxiosProps;\r\n customSummary?: ISummaryRowOptions;\r\n handleEditorPreparing?: any;\r\n isFilterRow?: boolean;\r\n filterData?: any[];\r\n showMasterDetail?: boolean;\r\n detailData?: any;\r\n}\r\n\r\ninterface ISummaryRowOptions {\r\n summaryLoadedDataLabel?: string;\r\n summaryTotalDataLabel?: string;\r\n summaryFilteredDataLabel?: string;\r\n summaryItems?: ISummaryProps[];\r\n summaryTotalCount?: number;\r\n summaryTotalPageCountLabel?: string;\r\n}\r\n\r\ninterface IAxiosProps {\r\n token?: string;\r\n requestData?: any;\r\n apiUrl: string;\r\n environmentUrl: string;\r\n requestQueryString?: any;\r\n requestType: string;\r\n}\r\n\r\ninterface IEditingoptions extends IEditingProps {\r\n formItems?: any[];\r\n title?: string;\r\n}\r\n\r\ninterface ISelectOptions extends ISelectionProps {\r\n selectEnable: boolean;\r\n}\r\n\r\ninterface IButtonGroup extends IButtonProps {\r\n type?: ButtonType;\r\n label?: string;\r\n onclick?: React.MouseEventHandler<HTMLElement>;\r\n actionPermission?: boolean;\r\n}\r\n\r\nconst OdsRemoteDataGrid = (props: IOdsDataGridProps) => {\r\n const { token } = useToken();\r\n const [data, setData] = useState([]);\r\n const fileName = props.exportFileName\r\n ? props.exportFileName + dayjs().format(\"YYYYMMDD\")\r\n : \"DatagridExportFile\" + dayjs().format(\"YYYYMMDD\");\r\n const [filteredRowCount, setFilteredRowCount] = useState(0);\r\n const columns = useRef(props.columns);\r\n let gridRef = useRef(null);\r\n const filterApplied = useRef(false);\r\n const [loading, setLoading] = useState(false);\r\n const [contentReady, setContentReady] = useState(false);\r\n const [scrollPosition, setScrollPosition] = useState(0);\r\n\r\n const onCancelEditEvent = new CustomEvent(\"cancelEdit\", {\r\n bubbles: true,\r\n detail: {\r\n rowData: null,\r\n },\r\n });\r\n\r\n const headers = new Headers({\r\n \"Content-Type\": \"application/json\",\r\n \"Accept-Language\": props.language != \"\" ? props.language : \"EN\",\r\n });\r\n if (props.axiosRequest?.token) {\r\n headers.set(\"Authorization\", \"Bearer \" + props.axiosRequest.token);\r\n }\r\n\r\n useEffect(() => {\r\n totalPageCount = 1;\r\n loadedPageCount = 1;\r\n totalRecordCount = 0;\r\n }, [props.dataGridPageName]);\r\n\r\n useEffect(() => {\r\n if (props.axiosRequest !== undefined\r\n && ((props.axiosRequest?.requestData && Object.keys(props.axiosRequest?.requestData).length > 0) || (props.axiosRequest?.requestQueryString))) {\r\n totalPageCount = 1;\r\n loadedPageCount = 1;\r\n totalRecordCount = 0;\r\n setData([]);\r\n fetchData();\r\n }\r\n }, [props.axiosRequest?.requestData, props.axiosRequest?.requestQueryString]);\r\n\r\n useEffect(() => {\r\n if (columns.current !== undefined && columns.current.length > 0) {\r\n const newColumns = columns.current.map((colItem) => {\r\n if (colItem.tooltip !== undefined && colItem.tooltip.enable) {\r\n const headerCellRenderr = () => {\r\n return (\r\n <div>\r\n <span>{colItem.caption}</span>\r\n <Tooltip title={colItem.tooltip.title}>\r\n <InfoCircleOutlined style={{ marginLeft: 5 }} />\r\n </Tooltip>\r\n </div>\r\n );\r\n };\r\n colItem.headerCellRender = headerCellRenderr;\r\n }\r\n\r\n // this process prevents client-side sorting process if grid use server-side\r\n // when calculateSortValue setted anything else from the grid columns sorting process not working for client-side data\r\n if (props.isServerSide)\r\n colItem.calculateSortValue = String(\"dummyFieldForPreventClientSideSorting\")\r\n\r\n return colItem;\r\n });\r\n columns.current = newColumns;\r\n }\r\n }, [props.columns]);\r\n\r\n useEffect(() => {\r\n if (Array.isArray(props.dataSource)) {\r\n setData(props.dataSource);\r\n }\r\n }, [props.dataSource]);\r\n\r\n useEffect(() => {\r\n locale(localStorage.getItem(\"locale\"));\r\n loadMessages(JSON.parse(localStorage.getItem(\"localTranslation\")));\r\n if (gridRef.current) {\r\n gridRef.current?.instance?.()?.updateDimensions();\r\n }\r\n }, []);\r\n\r\n // this useEffect used for check sort change once for component mount process\r\n useEffect(() => {\r\n if (contentReady) checkSortingPropertyForInitilaize();\r\n }, [contentReady]);\r\n\r\n useEffect(() => {\r\n const cssRules = `\r\n .data-exists .dx-datagrid-borders > .dx-datagrid-filter-panel,\r\n .data-exists .dx-datagrid-borders > .dx-datagrid-headers {\r\n border-top: 1px solid rgba(0, 0, 0, 0.06);\r\n padding-right: 0px !important;\r\n }\r\n \r\n .data-exists .dx-datagrid-headers .dx-datagrid-content {\r\n margin-bottom: -1px;\r\n padding-right: 17px !important;\r\n }\r\n `;\r\n\r\n const styleSheet = document.createElement('style');\r\n styleSheet.type = 'text/css';\r\n styleSheet.innerText = cssRules;\r\n document.head.appendChild(styleSheet);\r\n\r\n const checkData = () => {\r\n if (gridRef.current) {\r\n const dataGridInstance = gridRef.current.instance?.();\r\n const dataExists = data.length >= 15;\r\n\r\n const gridElement = dataGridInstance?.element();\r\n if (dataExists) {\r\n gridElement.classList.add('data-exists');\r\n } else {\r\n gridElement.classList.remove('data-exists');\r\n }\r\n }\r\n };\r\n\r\n const dataGridInstance = gridRef.current.instance?.();\r\n dataGridInstance?.on('dataChanged', checkData);\r\n checkData();\r\n\r\n return () => {\r\n document.head.removeChild(styleSheet);\r\n dataGridInstance?.off('dataChanged', checkData);\r\n };\r\n }, [data]);\r\n\r\n // check if there is sorted column and trigger onOptionChanged method for sort process\r\n const checkSortingPropertyForInitilaize = () => {\r\n const { onOptionChanged } = props;\r\n if (onOptionChanged) {\r\n const dataGridInstance = gridRef.current.instance?.();\r\n const sortingState = dataGridInstance?.getVisibleColumns()\r\n .filter((p) => !p.command)\r\n .map((column, index) => ({\r\n index: index, // decrease index for deafult empty column\r\n dataField: column.dataField,\r\n sortOrder: column.sortOrder,\r\n }));\r\n\r\n var sortedColumn = sortingState.find(column => column.sortOrder !== undefined)\r\n if (sortedColumn) {\r\n if (sortedColumn.sortOrder) {\r\n dataGridInstance.option(`columns[${sortedColumn.index}].sortOrder`, sortedColumn.sortOrder);\r\n\r\n // prepare OptionChangedEventInfo data for onOptionChanged method\r\n const fullName = `columns[${sortedColumn.index}].sortOrder`;\r\n const gridEvent = {\r\n component: dataGridInstance,\r\n fullName: fullName,\r\n name: \"optionChanged\",\r\n value: sortedColumn.sortOrder,\r\n previousValue: null,\r\n element: null,\r\n };\r\n\r\n onOptionChanged(gridEvent);\r\n }\r\n }\r\n }\r\n };\r\n\r\n const checkRequestDataHasOnlySortingProperty = (obj) => {\r\n // Get all property names from the object\r\n const keys = Object.keys(obj);\r\n // Check if there is only one property and it is 'Sorting'\r\n return keys.length === 1 && keys[0] === \"Sorting\";\r\n };\r\n\r\n const actionButtons = useMemo(() => {\r\n if (props.actionButtonGroup) {\r\n if (props.actionButtonGroup.length >= 2 && !props.edit) {\r\n return props.actionButtonGroup.slice(0, 2);\r\n } else {\r\n return props.actionButtonGroup;\r\n }\r\n } else {\r\n return [];\r\n }\r\n }, [props.actionButtonGroup]);\r\n\r\n // const kebabMenuButtons = useMemo(() => {\r\n // if (props.actionButtonGroup) {\r\n // if (props.actionButtonGroup.length >= 2 && !props.edit) {\r\n // return props.actionButtonGroup.slice(2, props.actionButtonGroup.length);\r\n // } else {\r\n // return [];\r\n // }\r\n // } else {\r\n // return [];\r\n // }\r\n // }, [props.actionButtonGroup]);\r\n\r\n const fetchData = useCallback(async () => {\r\n if (props.axiosRequest == undefined) return;\r\n\r\n if (props.isServerSide) {\r\n\r\n // check requestData for sorting property if there is only sorting property grid shouldn't do fetch data\r\n if (props.axiosRequest.requestData && checkRequestDataHasOnlySortingProperty(props.axiosRequest.requestData))\r\n return;\r\n\r\n let apiUrl =\r\n props.axiosRequest.environmentUrl + \"\" + props.axiosRequest.apiUrl;\r\n\r\n if (props.axiosRequest.requestData?.PaginatedRequest !== undefined) {\r\n props.axiosRequest.requestData.PaginatedRequest.PageNumber =\r\n loadedPageCount;\r\n props.axiosRequest.requestData.PaginatedRequest.PageSize =\r\n props.pageSize;\r\n }\r\n\r\n if (props.axiosRequest.requestQueryString !== undefined) {\r\n\r\n props.axiosRequest.requestQueryString.maxResultCount = props.pageSize;\r\n\r\n if (loadedPageCount > 1 && totalPageCount >= loadedPageCount) {\r\n props.axiosRequest.requestQueryString.skipCount = ((loadedPageCount - 1) * props.pageSize).toString();\r\n }\r\n\r\n let query = queryString.stringify(props.axiosRequest.requestQueryString);\r\n\r\n apiUrl = `${apiUrl}?${query}`\r\n }\r\n\r\n const requestOptions = {\r\n method: props.axiosRequest.requestType,\r\n headers: headers,\r\n credentials: (props.axiosRequest.token ? \"same-origin\" : \"include\") as RequestCredentials,\r\n body: JSON.stringify(props.axiosRequest.requestData),\r\n };\r\n\r\n try {\r\n setLoading(true);\r\n const response = await fetch(apiUrl, requestOptions);\r\n\r\n const newData = await response.json();\r\n\r\n if (loadedPageCount == 1) {\r\n setData(newData.Data ? newData.Data : newData);\r\n\r\n loadedPageCount = 1;\r\n } else if (totalPageCount >= loadedPageCount) {\r\n const newArray = newData.Data ? newData.Data : newData;\r\n setData((prevData) => [...prevData, ...newArray]);\r\n }\r\n\r\n getTotalCount(response, newData);\r\n } catch (error) {\r\n console.error(\"Error fetching data:\", error);\r\n setLoading(false);\r\n } finally {\r\n }\r\n }\r\n }, [\r\n props.axiosRequest?.requestData,\r\n props.axiosRequest?.apiUrl,\r\n props.axiosRequest?.environmentUrl,\r\n props.axiosRequest?.requestQueryString,\r\n props.axiosRequest?.requestType,\r\n props.pageSize,\r\n props.isServerSide,\r\n ]);\r\n\r\n const getTotalCount = (response: Response, data: any): void => {\r\n if (data?.PageCount || data?.RowCount) {\r\n totalPageCount = data.PageCount;\r\n totalRecordCount = data.RowCount;\r\n } else {\r\n let totalCount;\r\n\r\n if (response) totalCount = response.headers.get(\"x-total-count\");\r\n\r\n if (totalCount == null) totalCount = data?.rowCount;\r\n\r\n if (totalCount == null) totalCount = data?.length;\r\n\r\n totalRecordCount = parseInt(totalCount, 10) || 0;\r\n totalPageCount = Math.ceil(totalRecordCount / props.pageSize);\r\n }\r\n\r\n setLoading(false);\r\n };\r\n\r\n const onEditorPreparing = useCallback(\r\n (e: any) => {\r\n if (e.row !== undefined && e.parentType === \"dataRow\") {\r\n if (props.handleEditorPreparing) {\r\n props.handleEditorPreparing(e);\r\n }\r\n }\r\n\r\n if (\r\n e.editorOptions &&\r\n e.rowType === \"data\" &&\r\n e.parentType === \"dataRow\"\r\n ) {\r\n e.editorOptions.onValueChanged = function (args) {\r\n if (args.event && args.event.type === \"cancel\")\r\n e.cellElement.dispatchEvent(onCancelEditEvent);\r\n };\r\n }\r\n },\r\n [props.isServerSide]\r\n );\r\n\r\n const getServerSide = useCallback(\r\n async (type: string) => {\r\n if (type === \"reachedBottom\") {\r\n if (totalPageCount <= loadedPageCount) {\r\n return;\r\n } else {\r\n loadedPageCount = loadedPageCount + 1;\r\n await fetchData();\r\n }\r\n }\r\n },\r\n [totalPageCount]\r\n );\r\n\r\n const onExporting = useCallback(\r\n (e: any) => {\r\n if (e.format === \"xlsx\") {\r\n const workbook = new Workbook();\r\n\r\n //Dışa aktarma işlemi sırasında filtre verilerini yeni sütunları ekle\r\n if (props.filterData != null) {\r\n const newColumnFromFilterData = props.filterData.map((filterItem) => ({\r\n dataField: filterItem.key,\r\n caption: filterItem.key\r\n }));\r\n\r\n const newColumns = [...columns.current, ...newColumnFromFilterData];\r\n e.component.beginUpdate();\r\n e.component.option(\"columns\", newColumns);\r\n e.component.endUpdate();\r\n }\r\n exportDataGridXls({\r\n component: e.component,\r\n worksheet: workbook.addWorksheet(\"Main sheet\"),\r\n autoFilterEnabled: true,\r\n customizeCell: function (options) {\r\n //Buradaki kod dg için yanlızca datefilter çalışması için eklendi. Dg üstünde format olarak format: \"dd.MM.yyyy\" şeklinde düzenleme yapıldı, ekranda saat bilgisi görünmesi içie cellRender: datetimeCellRender fonksiyonu eklendi. Format değişikliği yüzünden ezcelde saat bilgisi çıkmıyordu, bu yüzden bu kod bloğu eklendi.\r\n const { gridCell, excelCell } = options;\r\n if (gridCell.column.dataType === \"datetime\" && gridCell.value) {\r\n // Aşağıdaki if bloğu yukarıdaki if bloğu ile birleştirimemeli. Çünkü \"gridCell?.column?.calculateFilterExpression?.name === \"calculateFilterExpressionForColumn\"\"\" olsa bile gridCell.value değeri hezaman undefined geliyor. gridCell.column['meta'] konrolü cellRender eklenmeme durumu için eklendi.\r\n if (\r\n gridCell.column.calculateFilterExpression?.name ===\r\n \"calculateFilterExpressionForColumn\" &&\r\n gridCell.column[\"meta\"]?.hasCustomCellRenderer\r\n ) {\r\n const date = dayjs(gridCell.value);\r\n const offsetMinutes = date.utcOffset();\r\n const sign = offsetMinutes >= 0 ? \"+\" : \"-\";\r\n const hours = Math.floor(Math.abs(offsetMinutes) / 60);\r\n const minutes = Math.abs(offsetMinutes) % 60;\r\n const formattedOffset = `(UTC${sign}${hours\r\n .toString()\r\n .padStart(2, \"0\")}:${minutes.toString().padStart(2, \"0\")})`;\r\n const formattedDate =\r\n date.format(\"DD.MM.YYYY HH:mm\") + \" \" + formattedOffset;\r\n excelCell.value = formattedDate;\r\n }\r\n }\r\n\r\n //girilen filtre değerlerinin uygun başlık altında satıra yazılması \r\n if (gridCell.rowType !== 'header' && props.filterData != null) {\r\n const matchingItem = props.filterData.find(item => item.key === gridCell.column.dataField);\r\n if (matchingItem) {\r\n excelCell.value = matchingItem.value;\r\n }\r\n }\r\n }\r\n }).then(() => {\r\n workbook.xlsx.writeBuffer().then((buffer) => {\r\n saveAs(new Blob([buffer], { type: 'application/octet-stream' }), fileName + '.xlsx');\r\n });\r\n });\r\n } else {\r\n const doc = new jsPDF();\r\n exportDataGrid({\r\n jsPDFDocument: doc,\r\n component: e.component,\r\n indent: 5,\r\n }).then(() => {\r\n doc.save(fileName + '.pdf');\r\n });\r\n }\r\n }, [fileName, props.filterData]);\r\n\r\n const customLoad = useCallback(() => {\r\n let state = JSON.parse(\r\n localStorage.getItem(props.exportFileName + \"Storage\")\r\n );\r\n\r\n if (localStorage.getItem(props.exportFileName + \"Storage\")) {\r\n state.selectedRowKeys = [];\r\n if (props.filterEnabledShow) state.filterPanel = { filterEnabled: false };\r\n else state.filterPanel = { filterEnabled: true };\r\n }\r\n\r\n return state;\r\n }, [props.filterEnabledShow]);\r\n\r\n const customSave = useCallback(\r\n (state: any) => {\r\n state.selectedRowKeys = [];\r\n if (props.filterEnabledShow) state.filterPanel = { filterEnabled: false };\r\n else state.filterPanel = { filterEnabled: true };\r\n\r\n if (data.length === 0) {\r\n if (!state.filterValue && state.filterValue !== null) {\r\n state.filterValue = null;\r\n }\r\n }\r\n localStorage.setItem(\r\n props.exportFileName + \"Storage\",\r\n JSON.stringify(state)\r\n );\r\n },\r\n [props.filterEnabledShow]\r\n );\r\n\r\n const onEditorPrepared = useCallback((info) => {\r\n if (\r\n info.parentType === \"filterRow\" &&\r\n info.editorName === \"dxSelectBox\" &&\r\n info.dataField === \"IsActive\"\r\n ) {\r\n if (info.dataSource != null && info.dataSource.length > 0) {\r\n info.showAllText = info.dataSource.find((i) => {\r\n return i.value === null;\r\n }).label;\r\n info.trueText = info.dataSource.find((i) => {\r\n return i.value === true;\r\n }).label;\r\n info.falseText = info.dataSource.find((i) => {\r\n return i.value === false;\r\n }).label;\r\n }\r\n }\r\n }, []);\r\n\r\n const renderTotal = useCallback(() => {\r\n let result = \"\";\r\n let totalloaded = 0;\r\n\r\n if (\r\n data.length < 50 ||\r\n !props.isServerSide ||\r\n loadedPageCount == totalPageCount\r\n ) {\r\n totalloaded = data.length;\r\n } else {\r\n totalloaded = loadedPageCount * props.pageSize;\r\n }\r\n\r\n if (props.isServerSide) {\r\n result =\r\n totalRecordCount > 0\r\n ? `${totalloaded} ` +\r\n props.customSummary?.summaryLoadedDataLabel +\r\n `- ${totalRecordCount}` +\r\n props.customSummary?.summaryTotalDataLabel\r\n : ``;\r\n result = concatFilteredLabel(result, totalloaded);\r\n }\r\n\r\n if (\r\n props.customSummary?.summaryTotalCount !== undefined &&\r\n !props.isServerSide\r\n ) {\r\n result =\r\n props.customSummary.summaryTotalDataLabel +\r\n \" : \" +\r\n props.customSummary.summaryTotalCount;\r\n result = concatFilteredLabel(result, totalloaded);\r\n }\r\n\r\n if (totalPageCount > 1) {\r\n result = `${result} - ${props.customSummary?.summaryTotalPageCountLabel} ${loadedPageCount} / ${totalPageCount}`;\r\n }\r\n return result;\r\n }, [\r\n data,\r\n filteredRowCount,\r\n loadedPageCount,\r\n props.pageSize,\r\n totalRecordCount,\r\n filterApplied.current,\r\n ]);\r\n\r\n const concatFilteredLabel = (result: string, totalloaded: number) => {\r\n if (\r\n filteredRowCount > 0 &&\r\n totalloaded !== filteredRowCount &&\r\n filterApplied.current\r\n ) {\r\n let filteredLabel =\r\n `${filteredRowCount} ` +\r\n props.customSummary.summaryFilteredDataLabel +\r\n `- `;\r\n result = `${filteredLabel} ${result} `;\r\n }\r\n return result;\r\n };\r\n\r\n function actionCellRender(cellData, props) {\r\n const kebabMenuButtons = props.actionButtonGroup && props.actionButtonGroup.length >= 2 && !props.edit\r\n ? props.actionButtonGroup.slice(2).map(button => ({\r\n icon: <DynamicIcon iconName={button.icon} />,\r\n onClick: (event) => {\r\n const customEvent = {\r\n column: cellData.column,\r\n component: cellData.component,\r\n element: cellData.element,\r\n event: event,\r\n model: cellData.data,\r\n row: cellData.row\r\n };\r\n button.onClick(customEvent);\r\n }\r\n }))\r\n : [];\r\n\r\n const buttonElements = [];\r\n\r\n {\r\n !props.edit &&\r\n actionButtons.forEach((buttonItem, index) => {\r\n const isVisible = typeof buttonItem.visible === 'function'\r\n ? buttonItem.visible({ column: cellData.column, component: cellData.component, row: cellData.row })\r\n : buttonItem.visible;\r\n buttonElements.push(\r\n <OdsDataGrdiRowButton\r\n key={`action-button-${index}`}\r\n hint={buttonItem.hint}\r\n visible={isVisible}\r\n size=\"small\"\r\n type=\"text\"\r\n disabled={\r\n buttonItem.actionPermission === undefined\r\n ? false\r\n : !buttonItem.actionPermission\r\n }\r\n icon={\r\n <DynamicIcon iconName={buttonItem.icon} />\r\n }\r\n onClick={(event) => {\r\n // event.preventDefault();\r\n const customEvent = {\r\n column: cellData.column,\r\n component: cellData.component,\r\n element: cellData.element,\r\n event: event,\r\n model: cellData.data,\r\n row: cellData.row\r\n };\r\n buttonItem.onClick(customEvent);\r\n }}\r\n />\r\n );\r\n });\r\n }\r\n {\r\n props.edit &&\r\n actionButtons.forEach((buttonItem, index) => {\r\n const isVisible = typeof buttonItem.visible === 'function'\r\n ? buttonItem.visible({ column: cellData.column, component: cellData.component, row: cellData.row })\r\n : buttonItem.visible;\r\n\r\n buttonElements.push(\r\n <OdsDataGrdiRowButton\r\n key={`action-button-${index}`}\r\n name={buttonItem.name}\r\n hint={buttonItem.hint}\r\n visible={isVisible}\r\n size=\"small\"\r\n type=\"text\"\r\n disabled={\r\n buttonItem.actionPermission === undefined\r\n ? false\r\n : !buttonItem.actionPermission\r\n }\r\n icon={\r\n <DynamicIcon iconName={buttonItem.icon} />\r\n }\r\n onClick={(event) => {\r\n if (buttonItem.onClick) { \r\n // event.preventDefault();\r\n const customEvent = {\r\n column: cellData.column,\r\n component: cellData.component,\r\n element: cellData.element,\r\n event: event,\r\n model: cellData.data,\r\n row: cellData.row \r\n };\r\n buttonItem.onClick(customEvent);\r\n }\r\n }}\r\n />\r\n );\r\n });\r\n }\r\n\r\n if (kebabMenuButtons.length > 0) {\r\n buttonElements.push(\r\n <OdsDropdown\r\n key={`dropdown-${cellData.rowIndex || cellData.data.ID}`}\r\n menuItems={kebabMenuButtons}\r\n >\r\n <OdsDataGrdiRowButton type=\"text\" icon={<DynamicIcon iconName={\"kebabMenu\"} />} />\r\n </OdsDropdown>\r\n );\r\n }\r\n\r\n return <React.Fragment><div className=\"flex flex-row gap-4 justify-center items-center\">{buttonElements}</div></React.Fragment>;\r\n }\r\n\r\n const onScrollEnd = useCallback(() => {\r\n getServerSide(\"reachedBottom\");\r\n }, [props.axiosRequest?.requestData, getServerSide]);\r\n\r\n const handleScroll = (e: any) => {\r\n const run = debounce((e: any) => {\r\n const scrollable = e.target as HTMLElement;\r\n\r\n const top = scrollable?.scrollTop ?? 0;\r\n const height = scrollable?.clientHeight ?? 0;\r\n const scrollHeight = scrollable?.scrollHeight ?? 0;\r\n const maxHeight = Math.max(top, height, scrollHeight) - 1;\r\n\r\n if (scrollHeight <= height) return;\r\n\r\n const reachedBottom = Math.ceil(top + height) >= maxHeight;\r\n\r\n let lastScrollTop = 0;\r\n if (top < lastScrollTop) return;\r\n\r\n lastScrollTop = top <= 0 ? 0 : top;\r\n if (reachedBottom) onScrollEnd();\r\n\r\n setScrollPosition(top);\r\n }, 200);\r\n\r\n run(e);\r\n };\r\n\r\n useEffect(() => {\r\n const gridElement = gridRef.current.instance?.()?.element();\r\n gridElement.scrollTop = scrollPosition;\r\n }, [data.length]);\r\n\r\n useEffect(() => {\r\n document\r\n .querySelectorAll(\".dx-scrollable-container\")\r\n .forEach((container) => {\r\n container.addEventListener(\"scrollend\", handleScroll);\r\n });\r\n\r\n return () => {\r\n document\r\n .querySelectorAll(\".dx-scrollable-container\")\r\n .forEach((container) => {\r\n container.removeEventListener(\"scrollend\", handleScroll);\r\n });\r\n };\r\n }, [data.length]);\r\n\r\n const handleContentReady = (e) => {\r\n const dataGridInstance = e.component;\r\n const filteredDataCount = dataGridInstance.totalCount();\r\n\r\n if (filterApplied.current && filteredDataCount > 0)\r\n {\r\n setFilteredRowCount(filteredDataCount);\r\n }\r\n else{\r\n setFilteredRowCount(0);\r\n }\r\n\r\n // set content ready state for trigger sort change method only once if content ready\r\n if (!contentReady) setContentReady(true);\r\n };\r\n\r\n const onFilterValueChange = (e) => {\r\n if (e !== null)\r\n filterApplied.current = true;\r\n else {\r\n filterApplied.current = false;\r\n setFilteredRowCount(0);\r\n }\r\n }\r\n\r\n\r\n const onToolbarPreparing = (e) => {\r\n if (props.toolbarButtonGroup && props.toolbarButtonGroup.length > 0) {\r\n e.toolbarOptions.items.unshift({\r\n location: 'before',\r\n template: function (_, __, container) {\r\n const wrapper = document.createElement('div');\r\n container.appendChild(wrapper);\r\n const root = createRoot(wrapper);\r\n\r\n root.render(<React.StrictMode>\r\n {props.toolbarButtonGroup && Array.isArray(props.toolbarButtonGroup) &&\r\n props.toolbarButtonGroup.map((buttonGroupItem, index) => (\r\n <OdsButton key={index} style={{ marginLeft: token.margin }} type={buttonGroupItem.type} onClick={buttonGroupItem.onclick}>\r\n {buttonGroupItem.label}\r\n </OdsButton>\r\n ))\r\n }\r\n </React.StrictMode>);\r\n }\r\n });\r\n }\r\n\r\n if(!isTextEmpty(props.pageTitle)) {\r\n e.toolbarOptions.items.unshift({\r\n location: 'before',\r\n cssClass: 'toolbarTitleItem',\r\n template: function (_, __, container) {\r\n const wrapper = document.createElement('div');\r\n container.appendChild(wrapper);\r\n const root = createRoot(wrapper);\r\n\r\n root.render(<React.StrictMode>\r\n <OdsTitle level={5} style={{ display: \"flex\", alignItems: \"center\", alignSelf: \"stretch\", margin: 0 }}>{props.pageTitle}</OdsTitle>\r\n </React.StrictMode>);\r\n }\r\n });\r\n }\r\n };\r\n const detailGrid = ({ data }) => {\r\n return (\r\n <OdsRemoteDataGrid\r\n {...props}\r\n showMasterDetail={false}\r\n columns={props.detailGridColums}\r\n dataSource={props.detailData[data.key.ID]}\r\n\r\n />\r\n )\r\n };\r\n\r\n return (\r\n <React.Fragment >\r\n\r\n <DataGrid\r\n keyExpr={props.keyExpr}\r\n dataSource={data}\r\n showBorders={true}\r\n columnAutoWidth={false}\r\n onEditorPreparing={onEditorPreparing}\r\n ref={gridRef}\r\n onExporting={onExporting}\r\n height={props.height == undefined ? window.innerHeight - 164 : props.height}\r\n allowColumnResizing={true}\r\n columnResizingMode=\"nextColumn\"\r\n onRowClick={props.onRowClick}\r\n onEditorPrepared={onEditorPrepared}\r\n showRowLines={true}\r\n allowColumnReordering={true}\r\n scrolling={{ useNative: true }}\r\n remoteOperations={false}\r\n paging={{ enabled: false }}\r\n repaintChangesOnly={true}\r\n focusedRowEnabled={false}\r\n onCellClick={e => {\r\n e.cellElement.style.backgroundColor = 'transparent';\r\n }}\r\n filterSyncEnabled={true}\r\n wordWrapEnabled={props.wordWrapEnabled ? props.wordWrapEnabled : false}\r\n columnFixing={{ enabled: true }}\r\n onSelectionChanged={props.onSelectionChanged}\r\n noDataText={props.noDataText}\r\n onSaved={props.onSaved}\r\n onSaving={props.onSaving}\r\n onEditCanceling={props.onEditCanceling}\r\n onContentReady={handleContentReady}\r\n onFilterValueChange={onFilterValueChange}\r\n onOptionChanged={props.onOptionChanged}\r\n onToolbarPreparing={props.onToolbarPreparing || onToolbarPreparing}\r\n >\r\n {columns.current.map((col: any) => (\r\n <Column key={col.dataField} {...col} minWidth={50} >\r\n {col.lookUp && <Lookup {...col.lookUp} />}\r\n {col.dataField === 'IsActive' &&\r\n <HeaderFilter dataSource={[\r\n { text: 'Active', value: true },\r\n { text: 'Passive', value: false },\r\n ]} />\r\n }\r\n\r\n {col.useDynamicHeaderFilter && (\r\n <HeaderFilter\r\n allowSearch={true}\r\n dataSource={[\r\n { text: \"(Blanks)\", value: null }, // Blanks seçeneğini ekleyin\r\n ...(data && data.length > 0 ? data\r\n .filter(\r\n (item) =>\r\n item[col.dataField] !== null &&\r\n item[col.dataField] !== undefined &&\r\n item[col.dataField] !== \"\"\r\n )\r\n .map((item) => ({\r\n text: item[col.dataField].toString(),\r\n value: item[col.dataField],\r\n })) : [])\r\n ]}\r\n />\r\n )}\r\n {col.multiLevelColumns &&\r\n col.multiLevelColumns.map((multiLevelColItem: any) => (\r\n <Column\r\n dataField={multiLevelColItem.dataField}\r\n caption={multiLevelColItem.caption}\r\n width={80}\r\n />\r\n ))}\r\n </Column>\r\n ))}\r\n\r\n {props.actionColumnEnable !== undefined &&\r\n props.actionColumnEnable === true && (\r\n <Column\r\n dataField=\"Actions\"\r\n fixed={true}\r\n allowSorting={false}\r\n caption={props.actionButtonGroupCaption}\r\n type=\"buttons\"\r\n showInColumnChooser={false}\r\n cellRender={(cellData) => actionCellRender(cellData, props)}\r\n /> \r\n )}\r\n {props.showMasterDetail && (\r\n <MasterDetail enabled={true} component={detailGrid} />\r\n )}\r\n\r\n {props.edit && (\r\n <Editing\r\n mode={props.edit.mode}\r\n allowUpdating={props.edit.allowUpdating}\r\n allowDeleting={props.edit.allowDeleting}\r\n allowAdding={props.edit.allowAdding}\r\n useIcons={true}\r\n >\r\n {props.edit.mode === \"popup\" && (\r\n <div>\r\n <Popup\r\n showTitle={true}\r\n width={700}\r\n height={300}\r\n showCloseButton={false}\r\n />\r\n <Form>\r\n {props.edit.formItems &&\r\n props.edit.formItems.map((formItem: any) => (\r\n <Item\r\n itemType={formItem.itemType}\r\n colCount={formItem.colCount}\r\n colSpan={formItem.colSpan}\r\n >\r\n {formItem.items.map((subItem: any) => (\r\n <Item\r\n key={subItem.dataField}\r\n dataField={subItem.dataField}\r\n />\r\n ))}\r\n </Item>\r\n ))}\r\n </Form>\r\n </div>\r\n )}\r\n </Editing>\r\n )}\r\n <Paging defaultPageSize={props.pageSize} />\r\n {props.pagingEnable && (\r\n <Pager\r\n visible={false}\r\n displayMode=\"full\"\r\n showPageSizeSelector={false}\r\n showNavigationButtons={false}\r\n showInfo={false}\r\n />\r\n )}\r\n <Scrolling\r\n showScrollbar=\"always\"\r\n scrollByContent={true}\r\n scrollByThumb={true}\r\n mode={\"virtual\"}\r\n rowRenderingMode=\"virtual\"\r\n />\r\n {loading && <LoadPanel enabled shadingColor=\"rgba(0,0,0,0.4)\" />}\r\n <SearchPanel visible={true} />\r\n <FilterRow\r\n visible={props.isFilterRow != undefined ? props.isFilterRow : true}\r\n />\r\n <FilterPanel visible={true} />\r\n <HeaderFilter visible={true} />\r\n <Sorting mode=\"multiple\" />\r\n <Export\r\n enabled={true}\r\n allowExportSelectedData={true}\r\n formats={exportFormats}\r\n />\r\n {props.selectOptions?.selectEnable && (\r\n <Selection\r\n mode={props.selectOptions?.mode ?? \"multiple\"}\r\n deferred={props.selectOptions?.deferred ?? true}\r\n />\r\n )}\r\n <ColumnChooser enabled={true} mode=\"select\">\r\n {!props.columnChooserPositionDisabled && (\r\n <Position\r\n my=\"right top\"\r\n at=\"right bottom\"\r\n of={\r\n document.querySelector(`.${props.dataGridPageName}`)\r\n ? `.${props.dataGridPageName} .dx-datagrid-column-chooser-button`\r\n : \".dx-datagrid-column-chooser-button\"\r\n }\r\n />\r\n )}\r\n <ColumnChooserSearch\r\n enabled={true}\r\n editorOptions={{ placeholder: \"\" }}\r\n />\r\n\r\n <ColumnChooserSelection\r\n allowSelectAll={true}\r\n selectByClick={true}\r\n recursive={true} />\r\n </ColumnChooser>\r\n <Toolbar>\r\n <DxItem name=\"searchPanel\" />\r\n <DxItem name=\"columnChooserButton\" cssClass='toolbarPanelItems' />\r\n <DxItem name=\"exportButton\" cssClass='toolbarPanelItems' />\r\n </Toolbar>\r\n <Summary calculateCustomSummary={renderTotal}>\r\n <TotalItem\r\n column={columns.current[0].dataField}\r\n summaryType=\"custom\"\r\n displayFormat={renderTotal()}\r\n />\r\n </Summary>\r\n <StateStoring\r\n enabled={true}\r\n type=\"custom\"\r\n customLoad={customLoad}\r\n customSave={customSave} >\r\n </StateStoring>\r\n </DataGrid>\r\n </React.Fragment >\r\n )\r\n}\r\n\r\nexport default OdsRemoteDataGrid;\r\n"],"names":["exportFormats","totalPageCount","loadedPageCount","totalRecordCount","useToken","theme","OdsRemoteDataGrid","props","token","data","setData","useState","fileName","dayjs","filteredRowCount","setFilteredRowCount","columns","useRef","gridRef","filterApplied","loading","setLoading","contentReady","setContentReady","scrollPosition","setScrollPosition","onCancelEditEvent","headers","useEffect","fetchData","newColumns","colItem","headerCellRenderr","jsx","Tooltip","InfoCircleOutlined","locale","loadMessages","checkSortingPropertyForInitilaize","cssRules","styleSheet","checkData","dataGridInstance","dataExists","gridElement","onOptionChanged","sortedColumn","p","column","index","fullName","gridEvent","checkRequestDataHasOnlySortingProperty","obj","keys","actionButtons","useMemo","useCallback","apiUrl","query","queryString","requestOptions","response","newData","newArray","prevData","getTotalCount","totalCount","onEditorPreparing","args","getServerSide","type","onExporting","workbook","Workbook","newColumnFromFilterData","filterItem","exportDataGridXls","options","gridCell","excelCell","date","offsetMinutes","sign","hours","minutes","formattedOffset","formattedDate","matchingItem","item","buffer","saveAs","doc","jsPDF","exportDataGrid","customLoad","state","customSave","onEditorPrepared","info","i","renderTotal","result","totalloaded","concatFilteredLabel","actionCellRender","cellData","kebabMenuButtons","button","DynamicIcon","event","customEvent","buttonElements","buttonItem","isVisible","OdsDataGrdiRowButton","OdsDropdown","React","onScrollEnd","handleScroll","debounce","e","scrollable","top","height","scrollHeight","maxHeight","reachedBottom","lastScrollTop","container","handleContentReady","filteredDataCount","onFilterValueChange","onToolbarPreparing","_","__","wrapper","createRoot","buttonGroupItem","OdsButton","isTextEmpty","OdsTitle","detailGrid","jsxs","DataGrid","col","Column","Lookup","HeaderFilter","multiLevelColItem","MasterDetail","Editing","Popup","Form","formItem","Item","subItem","Paging","Pager","Scrolling","LoadPanel","SearchPanel","FilterRow","FilterPanel","Sorting","Export","Selection","ColumnChooser","Position","ColumnChooserSearch","ColumnChooserSelection","Toolbar","DxItem","Summary","TotalItem","StateStoring"],"mappings":"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"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { jsxs as
|
|
2
|
-
import { useState as
|
|
1
|
+
import { jsxs as q, jsx as u } from "react/jsx-runtime";
|
|
2
|
+
import { useState as x, useRef as F, useCallback as C, useEffect as R } from "react";
|
|
3
3
|
import { Transfer as Q } from "antd";
|
|
4
4
|
import H from "./Transfer.module.scss.js";
|
|
5
|
-
import j, { FilterRow as A, Column as
|
|
6
|
-
import * as
|
|
5
|
+
import j, { FilterRow as A, Column as B, Toolbar as M, Item as O } from "devextreme-react/data-grid";
|
|
6
|
+
import * as $ from "../../node_modules/query-string/base.js";
|
|
7
7
|
import G from "./NoContentComponent.js";
|
|
8
8
|
import K from "../antd/typography/OdsTitle.js";
|
|
9
9
|
import { isTextEmpty as L } from "../../utils/commonFunctions.js";
|
|
@@ -12,23 +12,26 @@ let l = {
|
|
|
12
12
|
loadedPageCount: 1,
|
|
13
13
|
totalRecordCount: 0
|
|
14
14
|
};
|
|
15
|
-
const V = (e) =>
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
15
|
+
const V = (e) => {
|
|
16
|
+
const f = new Headers({
|
|
17
|
+
"Content-Type": "application/json",
|
|
18
|
+
"Accept-Language": e.language != "" ? e.language : "EN"
|
|
19
|
+
});
|
|
20
|
+
return e.axiosRequest?.token && f.set("Authorization", "Bearer " + e.axiosRequest.token), f;
|
|
21
|
+
}, te = (e) => {
|
|
22
|
+
const f = (t) => t.map((a) => ({
|
|
20
23
|
...a,
|
|
21
24
|
key: a.key || a.Id
|
|
22
|
-
})), [g,
|
|
25
|
+
})), [g, y] = x([]), w = F(null), [I, E] = x([]), [S, T] = x(
|
|
23
26
|
e.targetItems?.map((t) => t[e.keyExpr]) || []
|
|
24
|
-
), [o, P] =
|
|
25
|
-
|
|
26
|
-
), [
|
|
27
|
+
), [o, P] = x(
|
|
28
|
+
f(e.targetItems || [])
|
|
29
|
+
), [h, k] = x(g || []), b = C(async () => {
|
|
27
30
|
if (!e.axiosRequest) return;
|
|
28
31
|
const t = e.axiosRequest.requestType.toUpperCase() === "GET";
|
|
29
32
|
let a = `${e.axiosRequest.environmentUrl}${e.axiosRequest.apiUrl}`;
|
|
30
33
|
if (e.axiosRequest?.requestData?.PaginatedRequest && (e.axiosRequest.requestData.PaginatedRequest.PageSize = e.pageSize), e.axiosRequest?.requestQueryString && (e.axiosRequest.requestQueryString.maxResultCount = e.pageSize, l.loadedPageCount > 1 && l.totalPageCount >= l.loadedPageCount && (e.axiosRequest.requestQueryString.skipCount = ((l.loadedPageCount - 1) * e.pageSize).toString()), t && e.axiosRequest?.requestQueryString)) {
|
|
31
|
-
const s =
|
|
34
|
+
const s = $.stringify(
|
|
32
35
|
e.axiosRequest.requestQueryString
|
|
33
36
|
);
|
|
34
37
|
a = `${a}?${s}`;
|
|
@@ -36,16 +39,16 @@ const V = (e) => new Headers({
|
|
|
36
39
|
const n = {
|
|
37
40
|
method: e.axiosRequest.requestType,
|
|
38
41
|
headers: V(e),
|
|
39
|
-
credentials: "include"
|
|
42
|
+
credentials: e.axiosRequest.token ? "same-origin" : "include"
|
|
40
43
|
};
|
|
41
44
|
t || (n.body = JSON.stringify(e.axiosRequest?.requestData));
|
|
42
45
|
try {
|
|
43
46
|
const s = await fetch(a, n), i = await s.json();
|
|
44
47
|
if (l.loadedPageCount === 1)
|
|
45
|
-
|
|
48
|
+
y(i.Data ? i.Data : i), l.loadedPageCount = 1;
|
|
46
49
|
else if (l.totalPageCount >= l.loadedPageCount) {
|
|
47
50
|
const r = i.Data ? i.Data : i;
|
|
48
|
-
|
|
51
|
+
y((c) => [...c, ...r]);
|
|
49
52
|
}
|
|
50
53
|
v(s, i);
|
|
51
54
|
} catch {
|
|
@@ -59,8 +62,8 @@ const V = (e) => new Headers({
|
|
|
59
62
|
e.pageSize,
|
|
60
63
|
e.isServerSide
|
|
61
64
|
]);
|
|
62
|
-
|
|
63
|
-
e.axiosRequest && (
|
|
65
|
+
R(() => {
|
|
66
|
+
e.axiosRequest && (y([]), b());
|
|
64
67
|
}, [
|
|
65
68
|
e.axiosRequest?.requestData,
|
|
66
69
|
e.axiosRequest?.requestQueryString,
|
|
@@ -83,26 +86,26 @@ const V = (e) => new Headers({
|
|
|
83
86
|
return !n.has(i) && n.add(i);
|
|
84
87
|
});
|
|
85
88
|
};
|
|
86
|
-
|
|
89
|
+
R(() => {
|
|
87
90
|
const t = e.targetItems ? [...e.targetItems, ...g] : g, a = m(t, e.keyExpr);
|
|
88
|
-
|
|
91
|
+
k(
|
|
89
92
|
a.map((n) => ({ ...n, key: n[e.keyExpr] }))
|
|
90
93
|
);
|
|
91
|
-
}, [g, e.targetItems]),
|
|
92
|
-
(o || e.targetItems) && (
|
|
94
|
+
}, [g, e.targetItems]), R(() => {
|
|
95
|
+
(o || e.targetItems) && (k((t) => {
|
|
93
96
|
const n = [...o.map((i) => ({
|
|
94
97
|
...i,
|
|
95
98
|
key: i[e.keyExpr]
|
|
96
99
|
})), ...t];
|
|
97
100
|
return m(n, e.keyExpr);
|
|
98
|
-
}),
|
|
101
|
+
}), T(
|
|
99
102
|
o?.length > 0 ? o?.map((t) => t[e.keyExpr]) : e.targetItems?.map((t) => t[e.keyExpr])
|
|
100
103
|
));
|
|
101
104
|
}, [o, e.keyExpr, e.targetItems]);
|
|
102
|
-
const N =
|
|
105
|
+
const N = C(
|
|
103
106
|
(t, a, n) => {
|
|
104
|
-
|
|
105
|
-
const s =
|
|
107
|
+
T(t);
|
|
108
|
+
const s = h.filter(
|
|
106
109
|
(i) => t.includes(i[e.keyExpr])
|
|
107
110
|
);
|
|
108
111
|
if (P((i) => {
|
|
@@ -123,19 +126,19 @@ const V = (e) => new Headers({
|
|
|
123
126
|
e.onTargetChange(r);
|
|
124
127
|
}
|
|
125
128
|
},
|
|
126
|
-
[g,
|
|
127
|
-
), z =
|
|
129
|
+
[g, h, o]
|
|
130
|
+
), z = C(
|
|
128
131
|
(t, a) => {
|
|
129
132
|
E([...t, ...a]);
|
|
130
133
|
},
|
|
131
134
|
[]
|
|
132
135
|
);
|
|
133
|
-
return /* @__PURE__ */
|
|
136
|
+
return /* @__PURE__ */ q("div", { className: H.wrapper, children: [
|
|
134
137
|
/* @__PURE__ */ u("style", { children: e.isServerSide && ".dx-pager { display: none; }" }),
|
|
135
138
|
/* @__PURE__ */ u(
|
|
136
139
|
Q,
|
|
137
140
|
{
|
|
138
|
-
dataSource:
|
|
141
|
+
dataSource: h,
|
|
139
142
|
targetKeys: S,
|
|
140
143
|
selectedKeys: I,
|
|
141
144
|
onSelectChange: z,
|
|
@@ -149,9 +152,9 @@ const V = (e) => new Headers({
|
|
|
149
152
|
children: ({ direction: t, filteredItems: a, onItemSelectAll: n }) => {
|
|
150
153
|
const s = ({
|
|
151
154
|
selectedRowKeys: d,
|
|
152
|
-
currentDeselectedRowKeys:
|
|
155
|
+
currentDeselectedRowKeys: D
|
|
153
156
|
}) => {
|
|
154
|
-
n(d, !0),
|
|
157
|
+
n(d, !0), D.length > 0 && n(D, !1);
|
|
155
158
|
}, i = t === "left" && a.length === 0, r = t === "right" && S?.length === 0, c = t === "right" ? m(
|
|
156
159
|
[...a, ...o],
|
|
157
160
|
e.keyExpr
|
|
@@ -167,7 +170,7 @@ const V = (e) => new Headers({
|
|
|
167
170
|
children: t === "left" ? e.sourceTitle || "Available Items" : e.targetTitle || "Selected Items"
|
|
168
171
|
}
|
|
169
172
|
);
|
|
170
|
-
return /* @__PURE__ */
|
|
173
|
+
return /* @__PURE__ */ q(
|
|
171
174
|
"div",
|
|
172
175
|
{
|
|
173
176
|
className: "customize-wrapper-content",
|
|
@@ -194,7 +197,7 @@ const V = (e) => new Headers({
|
|
|
194
197
|
}
|
|
195
198
|
)
|
|
196
199
|
}
|
|
197
|
-
) : /* @__PURE__ */
|
|
200
|
+
) : /* @__PURE__ */ q(
|
|
198
201
|
j,
|
|
199
202
|
{
|
|
200
203
|
dataSource: c,
|
|
@@ -214,7 +217,7 @@ const V = (e) => new Headers({
|
|
|
214
217
|
children: [
|
|
215
218
|
e.showFilters ?? /* @__PURE__ */ u(A, { visible: !0 }),
|
|
216
219
|
e.columns.map((d) => /* @__PURE__ */ u(
|
|
217
|
-
|
|
220
|
+
B,
|
|
218
221
|
{
|
|
219
222
|
dataField: d.dataField,
|
|
220
223
|
caption: d.caption,
|
|
@@ -223,7 +226,7 @@ const V = (e) => new Headers({
|
|
|
223
226
|
allowHeaderFiltering: e.showFilters
|
|
224
227
|
}
|
|
225
228
|
)),
|
|
226
|
-
e.displayPageTitle && !L(e.pageTitle) && /* @__PURE__ */ u(
|
|
229
|
+
e.displayPageTitle && !L(e.pageTitle) && /* @__PURE__ */ u(M, { children: /* @__PURE__ */ u(O, { location: "before", cssClass: "toolbarTitleItem", children: /* @__PURE__ */ u(
|
|
227
230
|
K,
|
|
228
231
|
{
|
|
229
232
|
level: 5,
|