@grafana/ui
Version:
Grafana Components Library
1 lines • 4.66 kB
Source Map (JSON)
{"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":";;;AAiBO,SAAS,oBAAqB,CAAA,EAAE,cAAgB,EAAA,cAAA,EAAgB,MAAgC,EAAA;AACrG,EAAO,OAAA,WAAA;AAAA,IACL,CAAC,UAA6B,MAAuB,KAAA;AAnBzD,MAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA;AAoBM,MAAA,QAAQ,OAAO,IAAM;AAAA,QACnB,KAAK,oBAAA;AACH,UAAA,IAAI,cAAgB,EAAA;AAClB,YAAA,MAAM,IAAQ,GAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,QAAA,CAAS,cAAT,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAyB,mBAAzB,IAAkD,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,CAAA,CAAA;AAChE,YAAA,MAAM,iBAAiB,IAAO,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,IAAA,CAAA,CAAA,CAAA;AAC9B,YAAM,MAAA,UAAA,GAAa,QAAS,CAAA,cAAA,EAAgB,EAAE,CAAA;AAC9C,YAAA,MAAM,QAAQ,IAAK,CAAA,KAAA,CAAA,CAAM,cAAS,cAAe,CAAA,YAAA,KAAxB,mBAAuC,cAAe,CAAA,CAAA;AAE/E,YAAM,MAAA,KAAA,GAAA,CAAQ,EAAK,GAAA,IAAA,CAAA,MAAA,KAAL,IAAc,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,UAAA,CAAA;AAC5B,YAAA,IAAI,CAAC,KAAO,EAAA;AACV,cAAO,OAAA,QAAA;AAAA;AAGT,YAAM,MAAA,gBAAA,GAAmB,mBAAoB,CAAA,KAAA,EAAO,IAAI,CAAA;AACxD,YAAA,cAAA,CAAe,kBAAkB,KAAK,CAAA;AAAA;AACxC,QACF,KAAK,cAAA;AACH,UAAA,IAAI,cAAgB,EAAA;AAClB,YAAA,MAAM,eAAwC,EAAC;AAE/C,YAAW,KAAA,MAAA,QAAA,IAAY,SAAS,MAAQ,EAAA;AACtC,cAAA,MAAM,QAAQ,IAAK,CAAA,MAAA,CAAO,SAAS,QAAS,CAAA,EAAA,EAAI,EAAE,CAAC,CAAA;AACnD,cAAA,IAAI,CAAC,KAAO,EAAA;AACV,gBAAA;AAAA;AAGF,cAAA,YAAA,CAAa,IAAK,CAAA;AAAA,gBAChB,WAAA,EAAa,mBAAoB,CAAA,KAAA,EAAO,IAAI,CAAA;AAAA,gBAC5C,MAAM,QAAS,CAAA;AAAA,eAChB,CAAA;AAAA;AAGH,YAAA,cAAA,CAAe,YAAY,CAAA;AAAA;AAC7B,QACF,KAAK,mBAAqB,EAAA;AACxB,UAAA,IAAI,OAAO,EAAI,EAAA;AACb,YAAO,OAAA;AAAA,cACL,GAAG,QAAA;AAAA,cACH,4BAA8B,EAAA,QAAA,CAAS,MAAO,CAAA,EAAA,EAAI,EAAE;AAAA,aACtD;AAAA;AACF;AACF;AAGF,MAAO,OAAA,QAAA;AAAA,KACT;AAAA,IACA,CAAC,IAAM,EAAA,cAAA,EAAgB,cAAc;AAAA,GACvC;AACF;AAEgB,SAAA,eAAA,CACd,eACA,OAC4B,EAAA;AAC5B,EAAA,MAAM,QAAoC,EAAC;AAE3C,EAAA,IAAI,aAAe,EAAA;AACjB,IAAA,KAAA,CAAM,SAAS,EAAC;AAEhB,IAAA,KAAA,MAAW,UAAU,aAAe,EAAA;AAClC,MAAA,KAAA,MAAW,OAAO,OAAS,EAAA;AACzB,QAAI,IAAA,GAAA,CAAI,MAAW,KAAA,MAAA,CAAO,WAAa,EAAA;AACrC,UAAM,KAAA,CAAA,MAAA,CAAO,KAAK,EAAE,EAAA,EAAI,IAAI,EAAK,EAAA,IAAA,EAAM,MAAO,CAAA,IAAA,EAAM,CAAA;AAAA;AACtD;AACF;AACF;AAGF,EAAO,OAAA,KAAA;AACT;;;;"}