@@ -26,6 +26,7 @@ import {
2626 saveConfiguration ,
2727 convertSourceTypeFilterToArray ,
2828 fetchTenantIds ,
29+ fetchNumberOfDaysToBackfill ,
2930} from '../utils/setupConfiguration' ;
3031import './ConfigurationGlobalStep.css' ;
3132import './ConfigurationUserPreferencesStep.css' ;
@@ -36,6 +37,7 @@ import { ToastKeys, toastManager } from './ToastManager';
3637import Tooltip from './Tooltip' ;
3738import FlareLogoLoading from './FlareLogoLoading' ;
3839import TenantSelection from './TenantSelection' ;
40+ import Input from './Input' ;
3941
4042const ConfigurationUserPreferencesStep : FC < {
4143 configurationStep : ConfigurationStep ;
@@ -54,6 +56,8 @@ const ConfigurationUserPreferencesStep: FC<{
5456 const [ indexNames , setIndexNames ] = useState < string [ ] > ( [ ] ) ;
5557 const [ isIngestingFullEventData , setIsIngestingFullEventData ] = useState ( false ) ;
5658 const [ isLoading , setIsLoading ] = useState ( false ) ;
59+ const [ numberOfDaysToBackfill , setNumberOfDaysToBackfill ] = useState < string > ( ) ;
60+ const [ isFirstSetup , setIsFirstSetup ] = useState ( false ) ;
5761
5862 const handleIndexNameChange = ( e ) : void => setIndexName ( e . target . value ) ;
5963 const handleIsIngestingFullEventDataChange = ( e ) : void =>
@@ -68,7 +72,8 @@ const ConfigurationUserPreferencesStep: FC<{
6872 indexName ,
6973 isIngestingFullEventData ,
7074 getSeverityFilterValue ( selectedSeverities , severities ) ,
71- getSourceTypesFilterValue ( selectedSourceTypes , sourceTypeCategories )
75+ getSourceTypesFilterValue ( selectedSourceTypes , sourceTypeCategories ) ,
76+ numberOfDaysToBackfill
7277 )
7378 . then ( ( ) => {
7479 setIsLoading ( false ) ;
@@ -101,6 +106,7 @@ const ConfigurationUserPreferencesStep: FC<{
101106 fetchSeveritiesFilter ( ) ,
102107 fetchSourceTypeFilters ( apiKey ) ,
103108 fetchSourceTypesFilter ( ) ,
109+ fetchNumberOfDaysToBackfill ( ) ,
104110 ] )
105111 . then (
106112 ( [
@@ -113,7 +119,14 @@ const ConfigurationUserPreferencesStep: FC<{
113119 severitiesFilter ,
114120 allSourceTypeCategories ,
115121 sourceTypeFilter ,
122+ numberOfDaysToBackfillSaved ,
116123 ] ) => {
124+ // The form can't be submitted without any tenant ids
125+ // so the absence of tenant ids indicates that it is the first setup.
126+ if ( ! tenantIds . length ) {
127+ setIsFirstSetup ( true ) ;
128+ }
129+ setNumberOfDaysToBackfill ( numberOfDaysToBackfillSaved ?? '' ) ;
117130 setSelectedTenantIds ( new Set ( tenantIds ) ) ;
118131 setIsIngestingFullEventData ( ingestFullEventData ) ;
119132 setIndexName ( index ) ;
@@ -265,6 +278,25 @@ const ConfigurationUserPreferencesStep: FC<{
265278 />
266279 </ span >
267280 </ div >
281+ < div className = "form-item" >
282+ < div className = "label-tooltip" >
283+ < Label > Number of days to backfill events</ Label >
284+ < Tooltip >
285+ < div >
286+ This field can only be set when setting up the app for the first
287+ time.
288+ </ div >
289+ </ Tooltip >
290+ </ div >
291+ < Input
292+ onChange = { ( e ) : void => setNumberOfDaysToBackfill ( e . target . value ) }
293+ value = { numberOfDaysToBackfill }
294+ min = "0"
295+ type = "number"
296+ placeholder = "30"
297+ disabled = { ! isFirstSetup }
298+ />
299+ </ div >
268300 < div className = "button-group" >
269301 < Button onClick = { ( ) : void => onNavigateBackClick ( ) } isSecondary >
270302 Back
0 commit comments