99 NodeTaskFactory ,
1010 ThumbConnectionType ,
1111 ThumbType ,
12+ IDOMElement ,
1213} from '@devhelpr/visual-programming-system' ;
1314import { NodeInfo } from '../types/node-info' ;
1415import { RunCounter } from '../follow-path/run-counter' ;
@@ -24,6 +25,20 @@ export const getFetch: NodeTaskFactory<NodeInfo> = (
2425 let node : IRectNodeComponent < NodeInfo > ;
2526 let errorNode : INodeComponent < NodeInfo > ;
2627 let canvasAppInstance : IFlowCanvasBase < NodeInfo > | undefined = undefined ;
28+ let loader : IDOMElement | undefined = undefined ;
29+
30+ function showLoader ( ) {
31+ if ( loader && loader . domElement ) {
32+ ( loader . domElement as HTMLElement ) . classList . remove ( 'hidden' ) ;
33+ }
34+ }
35+
36+ function hideLoader ( ) {
37+ if ( loader && loader . domElement ) {
38+ ( loader . domElement as HTMLElement ) . classList . add ( 'hidden' ) ;
39+ }
40+ }
41+
2742 const initializeCompute = ( ) => {
2843 return ;
2944 } ;
@@ -54,6 +69,7 @@ export const getFetch: NodeTaskFactory<NodeInfo> = (
5469 }
5570 function sendEndStream ( ) {
5671 return new Promise < void > ( ( resolve ) => {
72+ hideLoader ( ) ;
5773 runNodeFromThumb (
5874 node . thumbConnectors ! [ 3 ] ,
5975 canvasAppInstance ! ,
@@ -83,6 +99,7 @@ export const getFetch: NodeTaskFactory<NodeInfo> = (
8399 ) ;
84100 }
85101 function sendError ( error : string ) {
102+ hideLoader ( ) ;
86103 runNodeFromThumb (
87104 node . thumbConnectors ! [ 1 ] ,
88105 canvasAppInstance ! ,
@@ -143,6 +160,7 @@ export const getFetch: NodeTaskFactory<NodeInfo> = (
143160 if ( responseType === 'json' ) {
144161 headers . append ( 'Content-Type' , 'application/json' ) ;
145162 }
163+ showLoader ( ) ;
146164 fetch ( url , {
147165 method : httpMethod ,
148166 headers,
@@ -194,6 +212,7 @@ export const getFetch: NodeTaskFactory<NodeInfo> = (
194212 dummyEndpoint : true ,
195213 } ) ;
196214 } ) ;
215+ hideLoader ( ) ;
197216 } catch ( error ) {
198217 isFullJson = false ;
199218 }
@@ -327,12 +346,25 @@ export const getFetch: NodeTaskFactory<NodeInfo> = (
327346 class : `inner-node rounded p-4
328347 bg-amber-400 text-black
329348 font-bold
330- flex flex-row justify-center items-center justify-start` ,
349+ flex flex-col justify-center items-center justify-start` ,
331350 } ,
332351 undefined ,
333352 `Fetch ${ text } ` . trim ( )
334353 ) as unknown as INodeComponent < NodeInfo > ;
335-
354+ const loaderWrapper = createElement (
355+ 'div' ,
356+ {
357+ class : `w-full flex justify-center ` ,
358+ } ,
359+ jsxComponentWrapper . domElement
360+ ) ;
361+ loader = createElement (
362+ 'div' ,
363+ {
364+ class : `simple-loader hidden text-black mt-2` ,
365+ } ,
366+ loaderWrapper ?. domElement
367+ ) ;
336368 const rect = canvasApp . createRect (
337369 x ,
338370 y ,
0 commit comments