UNPKG

@grafana/ui

Version:
1 lines 4.72 kB
{"version":3,"file":"reducer.mjs","sources":["../../../../src/components/Table/reducer.ts"],"sourcesContent":["import { useCallback } from 'react';\n\nimport { getFieldDisplayName } from '@grafana/data';\n\nimport {\n TableSortByFieldState,\n GrafanaTableColumn,\n GrafanaTableState,\n TableStateReducerProps,\n TableRTProps,\n} from './types';\n\nexport interface ActionType {\n type: string;\n id: string | undefined;\n}\n\nexport function useTableStateReducer({ onColumnResize, onSortByChange, data }: TableStateReducerProps) {\n return useCallback(\n (newState: GrafanaTableState, action: ActionType) => {\n switch (action.type) {\n case 'columnDoneResizing':\n if (onColumnResize) {\n const info = (newState.columnResizing?.headerIdWidths as any)?.[0];\n const columnIdString = info?.[0];\n const fieldIndex = parseInt(columnIdString, 10);\n const width = Math.round(newState.columnResizing.columnWidths?.[columnIdString]);\n\n const field = data.fields?.[fieldIndex];\n if (!field) {\n return newState;\n }\n\n const fieldDisplayName = getFieldDisplayName(field, data);\n onColumnResize(fieldDisplayName, width);\n }\n case 'toggleSortBy':\n if (onSortByChange) {\n const sortByFields: TableSortByFieldState[] = [];\n\n for (const sortItem of newState.sortBy) {\n const field = data.fields[parseInt(sortItem.id, 10)];\n if (!field) {\n continue;\n }\n\n sortByFields.push({\n displayName: getFieldDisplayName(field, data),\n desc: sortItem.desc,\n });\n }\n\n onSortByChange(sortByFields);\n }\n case 'toggleRowExpanded': {\n if (action.id) {\n return {\n ...newState,\n lastExpandedOrCollapsedIndex: parseInt(action.id, 10),\n };\n }\n }\n }\n\n return newState;\n },\n [data, onColumnResize, onSortByChange]\n );\n}\n\nexport function getInitialState(\n initialSortBy: TableRTProps['initialSortBy'],\n columns: GrafanaTableColumn[]\n): Partial<GrafanaTableState> {\n const state: Partial<GrafanaTableState> = {};\n\n if (initialSortBy) {\n state.sortBy = [];\n\n for (const sortBy of initialSortBy) {\n for (const col of columns) {\n if (col.Header === sortBy.displayName) {\n state.sortBy.push({ id: col.id!, desc: sortBy.desc });\n }\n }\n }\n }\n\n return state;\n}\n"],"names":[],"mappings":"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"}