@@ -5,16 +5,13 @@ import ExtraDataSource from "./ExtraDataSource";
55import { log } from "./Utils" ;
66import { toast } from "react-toastify" ;
77import { isTokenValid , fetchLogsWithToken , useCloudLoggingLogin , buildQueryFilter } from "./CloudLogging" ;
8- import { useSheetsLogin , isSheetsTokenValid , getSheetsToken , importFromGoogleSheet } from "./GoogleSheets " ;
9- import { HAS_EXTRA_DATA_SOURCE , GOOGLE_CLIENT_ID } from "./constants" ;
8+ import DatasetSideLoading from "./DatasetSideLoading " ;
9+ import { GOOGLE_CLIENT_ID } from "./constants" ;
1010
1111const CloudLoggingFormComponent = ( { onLogsReceived, onFileUpload } ) => {
1212 const getStoredValue = ( key , defaultValue = "" ) => localStorage . getItem ( `datasetLoading_${ key } ` ) || defaultValue ;
1313
1414 const [ fetching , setFetching ] = useState ( false ) ;
15- const [ sheetFormVisible , setSheetFormVisible ] = useState ( false ) ;
16- const [ sheetUrl , setSheetUrl ] = useState ( localStorage . getItem ( "datasetLoading_sheetUrl" ) || "" ) ;
17- const [ sheetLoading , setSheetLoading ] = useState ( false ) ;
1815 const [ queryParams , setQueryParams ] = useState ( {
1916 projectId : getStoredValue ( "projectId" ) ,
2017 vehicleId : getStoredValue ( "vehicleId" ) ,
@@ -69,52 +66,6 @@ const CloudLoggingFormComponent = ({ onLogsReceived, onFileUpload }) => {
6966 }
7067 } ;
7168
72- const handleSheetImport = ( token ) => {
73- setSheetLoading ( true ) ;
74- setLocalError ( null ) ;
75- localStorage . setItem ( "datasetLoading_sheetUrl" , sheetUrl ) ;
76-
77- importFromGoogleSheet ( sheetUrl , token )
78- . then ( ( logs ) => {
79- log ( `Received ${ logs . length } logs from Google Sheet` ) ;
80- if ( logs . length > 0 ) {
81- onLogsReceived ( logs ) ;
82- } else {
83- toast . warning ( "No logs found in the spreadsheet." ) ;
84- }
85- } )
86- . catch ( ( err ) => {
87- setLocalError ( `Sheet import error: ${ err . message } ` ) ;
88- toast . error ( `Sheet import error: ${ err . message } ` ) ;
89- } )
90- . finally ( ( ) => setSheetLoading ( false ) ) ;
91- } ;
92-
93- const sheetsLogin = useSheetsLogin (
94- ( token ) => {
95- log ( "Sheets login successful, importing..." ) ;
96- handleSheetImport ( token ) ;
97- } ,
98- ( err ) => {
99- log ( "Sheets login failed." , err ) ;
100- setLocalError ( `Auth Error: ${ err . error || "Unknown" } ` ) ;
101- setSheetLoading ( false ) ;
102- }
103- ) ;
104-
105- const handleSheetLoadClick = ( ) => {
106- if ( ! sheetUrl . trim ( ) ) {
107- setLocalError ( "Please enter a spreadsheet URL or ID." ) ;
108- return ;
109- }
110- setLocalError ( null ) ;
111- if ( isSheetsTokenValid ( ) ) {
112- handleSheetImport ( getSheetsToken ( ) ) ;
113- } else {
114- sheetsLogin ( ) ;
115- }
116- } ;
117-
11869 return (
11970 < div className = "cloud-logging-form" >
12071 < h3 > Fleet Engine Logs Loading</ h3 >
@@ -211,56 +162,18 @@ const CloudLoggingFormComponent = ({ onLogsReceived, onFileUpload }) => {
211162 < progress className = "progress-bar" />
212163 </ div >
213164 ) }
214- < div className = "cloud-logging-buttons" >
165+ < DatasetSideLoading onLogsReceived = { onLogsReceived } onFileUpload = { onFileUpload } setLocalError = { setLocalError } >
215166 < button type = "button" onClick = { handleFetch } disabled = { fetching } className = "fetch-logs-button" >
216167 { fetching ? "Fetching..." : isTokenValid ( ) ? "Fetch Logs" : "Sign in and Fetch Logs" }
217168 </ button >
218- < button type = "button" onClick = { ( ) => setSheetFormVisible ( ! sheetFormVisible ) } className = "sideload-logs-button" >
219- Load Google Sheet
220- </ button >
221- < label htmlFor = "fileUploadInput" className = "sideload-logs-button" >
222- Load JSON or ZIP
223- </ label >
224- < input type = "file" id = "fileUploadInput" accept = ".json,.zip" onChange = { onFileUpload } className = "file-input" />
225- </ div >
226- { sheetFormVisible && (
227- < div className = "google-sheet-form" >
228- < div className = "form-field" >
229- < label className = "form-label" >
230- Spreadsheet URL or ID:
231- < input
232- type = "text"
233- value = { sheetUrl }
234- onChange = { ( e ) => setSheetUrl ( e . target . value ) }
235- placeholder = "https://docs.google.com/spreadsheets/d/... or spreadsheet ID"
236- className = "form-input"
237- />
238- </ label >
239- </ div >
240- < button
241- type = "button"
242- onClick = { handleSheetLoadClick }
243- disabled = { sheetLoading }
244- className = "fetch-logs-button"
245- style = { { marginTop : "8px" } }
246- >
247- { sheetLoading ? "Loading..." : isSheetsTokenValid ( ) ? "Load Sheet" : "Sign in and Load Sheet" }
248- </ button >
249- { sheetLoading && (
250- < div className = "progress-indicator" >
251- < div > Loading from Google Sheet...</ div >
252- < progress className = "progress-bar" />
253- </ div >
254- ) }
255- </ div >
256- ) }
169+ </ DatasetSideLoading >
257170 </ div >
258171 ) ;
259172} ;
260173
261174export default function DatasetLoading ( props ) {
262175 const [ activeDataSource , setActiveDataSource ] = useState (
263- localStorage . getItem ( "lastUsedDataSource" ) || ( HAS_EXTRA_DATA_SOURCE ? "extra" : "cloudLogging" )
176+ localStorage . getItem ( "lastUsedDataSource" ) || ( props . hasExtraDataSource ? "extra" : "cloudLogging" )
264177 ) ;
265178
266179 useEffect ( ( ) => {
@@ -271,7 +184,7 @@ export default function DatasetLoading(props) {
271184 const ExtraFormComponent = isExtra ? ExtraDataSource . getFormComponent ( props ) : null ;
272185
273186 const renderSourceSelection = ( ) => {
274- if ( ! HAS_EXTRA_DATA_SOURCE ) {
187+ if ( ! props . hasExtraDataSource ) {
275188 return < button className = "active static" > Cloud Logging</ button > ;
276189 }
277190
0 commit comments