ld
This commit is contained in:
		
							parent
							
								
									ea6b100225
								
							
						
					
					
						commit
						04c516f702
					
				
							
								
								
									
										42
									
								
								src/Gridler/components/LocalDataAdaptor.tsx
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										42
									
								
								src/Gridler/components/LocalDataAdaptor.tsx
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,42 @@ | ||||
| /* eslint-disable @typescript-eslint/no-unused-vars */ | ||||
| import React, { useEffect } from 'react'; | ||||
| 
 | ||||
| import type { APIOptions } from '../utils/types'; | ||||
| 
 | ||||
| import { useGridlerStore } from './Store'; | ||||
| 
 | ||||
| interface LocalDataAdaptorProps extends APIOptions { | ||||
|   data: Array<unknown>; | ||||
| } | ||||
| 
 | ||||
| //The computer component does not need to be recalculated on every render, so we use React.memo to prevent unnecessary re-renders.
 | ||||
| export const LocalDataAdaptor = React.memo((props: LocalDataAdaptorProps) => { | ||||
|   const [setStateFN, setState, getState, addError, mounted] = useGridlerStore((s) => [ | ||||
|     s.setStateFN, | ||||
|     s.setState, | ||||
|     s.getState, | ||||
|     s.addError, | ||||
|     s.mounted | ||||
|   ]); | ||||
| 
 | ||||
|   const useAPIQuery: (index: number) => Promise<any> = async (index: number) => { | ||||
|     const colSort = getState('colSort'); | ||||
|     const pageSize = getState('pageSize'); | ||||
|     const colFilters = getState('colFilters'); | ||||
|     const _active_requests = getState('_active_requests'); | ||||
| 
 | ||||
|     if (!(props.data && Array.isArray(props.data))) { | ||||
|       return []; | ||||
|     } | ||||
| 
 | ||||
|      setState('total_rows', props.data.length); | ||||
|      return props.data.slice(index * (pageSize ?? 50), (index + 1) * (pageSize ?? 50)); | ||||
| 
 | ||||
|   }; | ||||
| 
 | ||||
|   useEffect(() => { | ||||
|     setState('useAPIQuery', useAPIQuery); | ||||
|   }, [props.url, props.authtoken, mounted, setState]); | ||||
| 
 | ||||
|   return <></>; | ||||
| }); | ||||
| @ -36,7 +36,7 @@ export const useGridTheme = () => { | ||||
|   const gridThemeDark = { | ||||
|     accentColor: 'none', | ||||
| 
 | ||||
|     accentLight: '#2824ab3c', | ||||
|     accentLight: theme.colors.blue[9], | ||||
| 
 | ||||
|     baseFontStyle: '13px', | ||||
| 
 | ||||
| @ -58,7 +58,7 @@ export const useGridTheme = () => { | ||||
|       'Inter, Roboto, -apple-system, BlinkMacSystemFont, avenir next, avenir, segoe ui, helvetica neue, helvetica, Ubuntu, noto, arial, sans-serif', | ||||
| 
 | ||||
|     headerFontStyle: '500 13px', | ||||
|     linkColor: '#4F5DFF', | ||||
|     linkColor: theme.colors.blue[4], | ||||
| 
 | ||||
|     textBubble: '#ffffff', | ||||
| 
 | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user