@@ -16,14 +16,24 @@ export const QueryEditor = ({ query, onChange, onRunQuery, datasource, app, data
16
16
const [ streamOptions , setStreamOptions ] : any = useState ( [ ] ) ;
17
17
const [ orgOptions , setOrgOptions ] : any = useState ( [ ] ) ;
18
18
const [ isMounted , setIsMounted ] : any = useState ( false ) ;
19
+ const [ isLoading , setIsLoading ] : any = useState ( [ ] ) ;
19
20
20
21
const isInDashboard = useMemo ( ( ) => app === 'panel-editor' , [ app ] ) ;
21
22
22
23
const getTimeStampColumnName = ( ) => {
23
24
return datasource . instanceSettings ?. jsonData ?. timestamp_column || '_timestamp' ;
24
25
} ;
25
26
27
+ const startLoading = ( ) => {
28
+ setIsLoading ( [ ...isLoading , true ] ) ;
29
+ } ;
30
+
31
+ const stopLoading = ( ) => {
32
+ setIsLoading ( isLoading . slice ( 1 ) ) ;
33
+ } ;
34
+
26
35
useEffect ( ( ) => {
36
+ startLoading ( ) ;
27
37
getOrganizations ( { url : datasource . url , page_num : 0 , page_size : 1000 , sort_by : 'id' } )
28
38
. then ( ( orgs : any ) => {
29
39
setOrgOptions ( [
@@ -32,26 +42,42 @@ export const QueryEditor = ({ query, onChange, onRunQuery, datasource, app, data
32
42
value : org . name ,
33
43
} ) ) ,
34
44
] ) ;
35
- setupStreams ( orgs . data [ 0 ] . name ) . then ( ( streams : any ) => {
36
- datasource . updateStreamFields ( streams [ 0 ] . schema ) ;
37
- setStreamOptions ( [
38
- ...Object . values ( streams ) . map ( ( stream : any ) => ( {
39
- label : stream . name ,
40
- value : stream . name ,
41
- } ) ) ,
42
- ] ) ;
43
- if ( ! ( query . organization && query . stream && query . hasOwnProperty ( 'sqlMode' ) ) ) {
44
- onChange ( {
45
- ...query ,
46
- stream : streams [ 0 ] . name ,
47
- organization : orgs . data [ 0 ] . name ,
48
- sqlMode : isInDashboard ? true : false ,
49
- } ) ;
50
- }
51
- setIsMounted ( true ) ;
52
- } ) ;
45
+
46
+ let seletedOrg : string = orgs . data [ 0 ] . name ;
47
+
48
+ if ( isInDashboard && query . organization ) {
49
+ seletedOrg = query . organization ;
50
+ }
51
+
52
+ startLoading ( ) ;
53
+ setupStreams ( seletedOrg )
54
+ . then ( ( streams : any ) => {
55
+ datasource . updateStreamFields ( streams [ 0 ] . schema ) ;
56
+ setStreamOptions ( [
57
+ ...Object . values ( streams ) . map ( ( stream : any ) => ( {
58
+ label : stream . name ,
59
+ value : stream . name ,
60
+ } ) ) ,
61
+ ] ) ;
62
+
63
+ if ( ! ( query . organization && query . stream && query . hasOwnProperty ( 'sqlMode' ) ) ) {
64
+ onChange ( {
65
+ ...query ,
66
+ stream : streams [ 0 ] . name ,
67
+ organization : orgs . data [ 0 ] . name ,
68
+ sqlMode : isInDashboard ? true : false ,
69
+ } ) ;
70
+ } else if ( isInDashboard && query . organization && query . stream && query . query ) {
71
+ updateQuery ( ) ;
72
+ onRunQuery ( ) ;
73
+ }
74
+
75
+ setIsMounted ( true ) ;
76
+ } )
77
+ . finally ( ( ) => stopLoading ( ) ) ;
53
78
} )
54
- . catch ( ( err ) => console . log ( err ) ) ;
79
+ . catch ( ( err ) => console . log ( err ) )
80
+ . finally ( ( ) => stopLoading ( ) ) ;
55
81
// eslint-disable-next-line react-hooks/exhaustive-deps
56
82
} , [ ] ) ;
57
83
@@ -125,21 +151,24 @@ export const QueryEditor = ({ query, onChange, onRunQuery, datasource, app, data
125
151
} ;
126
152
127
153
const orgUpdated = ( organization : any ) => {
128
- setupStreams ( organization . value ) . then ( ( streams : any ) => {
129
- onChange ( {
130
- ...query ,
131
- query : '' ,
132
- stream : streams [ 0 ] . name ,
133
- organization : organization . value ,
134
- } ) ;
135
- datasource . updateStreamFields ( cloneDeep ( streams [ 0 ] . schema ) ) ;
136
- setStreamOptions ( [
137
- ...streams . map ( ( stream : any ) => ( {
138
- label : stream . name ,
139
- value : stream . name ,
140
- } ) ) ,
141
- ] ) ;
142
- } ) ;
154
+ startLoading ( ) ;
155
+ setupStreams ( organization . value )
156
+ . then ( ( streams : any ) => {
157
+ onChange ( {
158
+ ...query ,
159
+ query : '' ,
160
+ stream : streams [ 0 ] . name ,
161
+ organization : organization . value ,
162
+ } ) ;
163
+ datasource . updateStreamFields ( cloneDeep ( streams [ 0 ] . schema ) ) ;
164
+ setStreamOptions ( [
165
+ ...streams . map ( ( stream : any ) => ( {
166
+ label : stream . name ,
167
+ value : stream . name ,
168
+ } ) ) ,
169
+ ] ) ;
170
+ } )
171
+ . finally ( ( ) => stopLoading ( ) ) ;
143
172
} ;
144
173
145
174
const toggleSqlMode = ( ) => {
@@ -186,6 +215,7 @@ export const QueryEditor = ({ query, onChange, onRunQuery, datasource, app, data
186
215
options = { orgOptions }
187
216
value = { query . organization }
188
217
onChange = { orgUpdated }
218
+ isLoading = { isLoading . length > 0 }
189
219
/>
190
220
</ div >
191
221
< div
@@ -212,6 +242,7 @@ export const QueryEditor = ({ query, onChange, onRunQuery, datasource, app, data
212
242
options = { streamOptions }
213
243
value = { query . stream }
214
244
onChange = { streamUpdated }
245
+ isLoading = { isLoading . length > 0 }
215
246
/>
216
247
</ div >
217
248
</ div >
0 commit comments