@@ -9,7 +9,7 @@ import { useZarrStore } from '@/GlobalStates/ZarrStore';
99import { vertShader } from '@/components/computation/shaders'
1010import { useShallow } from 'zustand/shallow'
1111import { ThreeEvent } from '@react-three/fiber' ;
12- import { coarsenFlatArray , GetCurrentArray , GetCurrentArrayWorkers , GetTimeSeries , parseUVCoords , deg2rad } from '@/utils/HelperFuncs' ;
12+ import { coarsenFlatArray , GetCurrentArray , GetTimeSeries , parseUVCoords , deg2rad } from '@/utils/HelperFuncs' ;
1313import { evaluate_cmap } from 'js-colormaps-es' ;
1414import { useCoordBounds } from '@/hooks/useCoordBounds' ;
1515import { GetFrag } from '../textures' ;
@@ -90,19 +90,8 @@ const FlatMap = ({textures, infoSetters} : {textures : THREE.DataTexture[] | THR
9090 const infoRef = useRef < boolean > ( false )
9191 const lastUV = useRef < THREE . Vector2 > ( new THREE . Vector2 ( 0 , 0 ) )
9292 const rotateMap = analysisMode && axis == 2 ;
93- // const sampleArray = useMemo(()=> analysisMode ? analysisArray : GetCurrentArray(),[analysisMode, analysisArray, textures])
93+ const sampleArray = useMemo ( ( ) => analysisMode ? analysisArray : GetCurrentArray ( ) , [ analysisMode , analysisArray , textures ] )
9494 const analysisDims = useMemo ( ( ) => dimArrays . length > 2 ? dimSlices . filter ( ( _e , idx ) => idx != axis ) : dimSlices , [ dimSlices , axis ] )
95- const [ sampleArray , setSampleArray ] = useState < any | undefined > ( undefined ) // Moved this to a state as async functions cannot be used in useMemo
96- useEffect ( ( ) => {
97- if ( analysisMode ) {
98- setSampleArray ( analysisArray )
99- return
100- }
101- else {
102- GetCurrentArrayWorkers ( ) . then ( e => setSampleArray ( e ) )
103- return
104- }
105- } , [ analysisMode , analysisArray , textures ] )
10695
10796 const { lonBounds, latBounds} = useCoordBounds ( )
10897
@@ -133,44 +122,44 @@ const FlatMap = ({textures, infoSetters} : {textures : THREE.DataTexture[] | THR
133122
134123
135124 // ----- TIMESERIES ----- //
136- async function HandleTimeSeries ( event : THREE . Intersection ) {
137- const uv = event . uv ;
138- const normal = new THREE . Vector3 ( 0 , 0 , 1 )
139- if ( uv ) {
140- const tsUV = flipY ? new THREE . Vector2 ( uv . x , 1 - uv . y ) : uv
141- const tempTS = GetTimeSeries ( { data :analysisMode ? analysisArray : await GetCurrentArrayWorkers ( ) , shape :dataShape , stride :strides } , { uv :tsUV , normal} )
142- setPlotDim ( 0 ) //I think this 2 is only if there are 3-dims. Need to rework the logic
143-
144- const coordUV = parseUVCoords ( { normal :normal , uv :uv } )
145- let dimCoords = coordUV . map ( ( val , idx ) => val ? dimSlices [ idx ] [ Math . round ( val * dimSlices [ idx ] . length ) ] : null )
146- const thisDimNames = dimNames . filter ( ( _ , idx ) => dimCoords [ idx ] !== null )
147- const thisDimUnits = dimUnits . filter ( ( _ , idx ) => dimCoords [ idx ] !== null )
148- dimCoords = dimCoords . filter ( val => val !== null )
149- const tsID = `${ dimCoords [ 0 ] } _${ dimCoords [ 1 ] } `
150- const tsObj = {
151- color :evaluate_cmap ( getColorIdx ( ) / 10 , "Paired" ) ,
152- data :tempTS
153- }
154- incrementColorIdx ( ) ;
155- updateTimeSeries ( { [ tsID ] : tsObj } )
156- const dimObj = {
157- first :{
158- name :thisDimNames [ 0 ] ,
159- loc :dimCoords [ 0 ] ?? 0 ,
160- units :thisDimUnits [ 0 ]
161- } ,
162- second :{
163- name :thisDimNames [ 1 ] ,
164- loc :dimCoords [ 1 ] ?? 0 ,
165- units :thisDimUnits [ 1 ]
166- } ,
167- plot :{
168- units :dimUnits [ 0 ]
125+ function HandleTimeSeries ( event : THREE . Intersection ) {
126+ const uv = event . uv ;
127+ const normal = new THREE . Vector3 ( 0 , 0 , 1 )
128+ if ( uv ) {
129+ const tsUV = flipY ? new THREE . Vector2 ( uv . x , 1 - uv . y ) : uv
130+ const tempTS = GetTimeSeries ( { data :analysisMode ? analysisArray : GetCurrentArray ( ) , shape :dataShape , stride :strides } , { uv :tsUV , normal} )
131+ setPlotDim ( 0 ) //I think this 2 is only if there are 3-dims. Need to rework the logic
132+
133+ const coordUV = parseUVCoords ( { normal :normal , uv :uv } )
134+ let dimCoords = coordUV . map ( ( val , idx ) => val ? dimSlices [ idx ] [ Math . round ( val * dimSlices [ idx ] . length ) ] : null )
135+ const thisDimNames = dimNames . filter ( ( _ , idx ) => dimCoords [ idx ] !== null )
136+ const thisDimUnits = dimUnits . filter ( ( _ , idx ) => dimCoords [ idx ] !== null )
137+ dimCoords = dimCoords . filter ( val => val !== null )
138+ const tsID = `${ dimCoords [ 0 ] } _${ dimCoords [ 1 ] } `
139+ const tsObj = {
140+ color :evaluate_cmap ( getColorIdx ( ) / 10 , "Paired" ) ,
141+ data :tempTS
142+ }
143+ incrementColorIdx ( ) ;
144+ updateTimeSeries ( { [ tsID ] : tsObj } )
145+ const dimObj = {
146+ first :{
147+ name :thisDimNames [ 0 ] ,
148+ loc :dimCoords [ 0 ] ?? 0 ,
149+ units :thisDimUnits [ 0 ]
150+ } ,
151+ second :{
152+ name :thisDimNames [ 1 ] ,
153+ loc :dimCoords [ 1 ] ?? 0 ,
154+ units :thisDimUnits [ 1 ]
155+ } ,
156+ plot :{
157+ units :dimUnits [ 0 ]
158+ }
159+ }
160+ updateDimCoords ( { [ tsID ] : dimObj } )
161+ }
169162 }
170- }
171- updateDimCoords ( { [ tsID ] : dimObj } )
172- }
173- }
174163 // ----- SHADER MATERIAL ----- //
175164 const shaderMaterial = useMemo ( ( ) => new THREE . ShaderMaterial ( {
176165 glslVersion : THREE . GLSL3 ,
0 commit comments