@@ -3,9 +3,9 @@ import { routeAuthBeforeLoad } from '@/utils/route';
33import { useCurrentWorkspaceId } from '@/store/user' ;
44import { InsightType , useInsightsStore } from '@/store/insights' ;
55import { trpc } from '@/api/trpc' ;
6- import dayjs , { Dayjs } from 'dayjs' ;
6+ import dayjs from 'dayjs' ;
77import { useMemo , useState } from 'react' ;
8- import { Collapse , DatePicker , Empty , Spin } from 'antd' ;
8+ import { Collapse , Empty } from 'antd' ;
99import { FilterSection } from '@/components/insights/FilterSection' ;
1010import { useTranslation } from '@i18next-toolkit/react' ;
1111import { Layout } from '@/components/layout' ;
@@ -30,6 +30,9 @@ import { getUserTimezone } from '@/api/model/user';
3030import { LuChevronDown } from 'react-icons/lu' ;
3131import { cn } from '@/utils/style' ;
3232import { get } from 'lodash-es' ;
33+ import { DelayRender } from '@/components/DelayRender' ;
34+ import { SearchLoadingView } from '@/components/loading/Searching' ;
35+ import { DateRangeSelection } from '@/components/insights/DateRangeSelection' ;
3336
3437export const Route = createFileRoute ( '/insights/events' ) ( {
3538 beforeLoad : routeAuthBeforeLoad ,
@@ -44,16 +47,15 @@ function PageComponent() {
4447 const filters = useInsightsStore ( ( state ) =>
4548 state . currentFilters . filter ( ( f ) : f is NonNullable < typeof f > => ! ! f )
4649 ) ;
50+ const dateKey = useInsightsStore ( ( state ) => state . currentDateKey ) ;
51+ const dateRange = useInsightsStore ( ( state ) => state . currentDateRange ) ;
52+ const setDateKey = useInsightsStore ( ( state ) => state . setCurrentDateKey ) ;
53+ const setDateRange = useInsightsStore ( ( state ) => state . setCurrentDateRange ) ;
54+
4755 const { data : websites = [ ] } = trpc . website . all . useQuery ( { workspaceId } ) ;
4856 const { data : warehouseApplicationIds = [ ] } =
4957 trpc . insights . warehouseApplications . useQuery ( { workspaceId } ) ;
5058
51- // Date range state
52- const [ dateRange , setDateRange ] = useState < [ Dayjs , Dayjs ] > ( [
53- dayjs ( ) . subtract ( 7 , 'day' ) . startOf ( 'day' ) ,
54- dayjs ( ) . endOf ( 'day' ) ,
55- ] ) ;
56-
5759 // JSON mode state
5860 const [ jsonMode , setJsonMode ] = useState ( false ) ;
5961
@@ -170,18 +172,12 @@ function PageComponent() {
170172 < div className = "mx-auto flex h-full flex-col overflow-hidden p-4" >
171173 < div className = "mb-4 flex items-center gap-2 md:flex-row" >
172174 < div className = "flex items-center gap-2" >
173- < span > { t ( 'Date Range' ) } :</ span >
174- < DatePicker . RangePicker
175- value = { dateRange }
176- onChange = { ( val ) => {
177- if ( val && val [ 0 ] && val [ 1 ] ) {
178- setDateRange ( [
179- dayjs ( val [ 0 ] ) . startOf ( 'day' ) ,
180- dayjs ( val [ 1 ] ) . endOf ( 'day' ) ,
181- ] ) ;
182- }
175+ < DateRangeSelection
176+ value = { dateKey }
177+ onChange = { ( key , range ) => {
178+ setDateKey ( key ) ;
179+ setDateRange ( range ) ;
183180 } }
184- allowClear = { false }
185181 />
186182 </ div >
187183
@@ -201,9 +197,11 @@ function PageComponent() {
201197
202198 < ScrollArea className = "flex-1 overflow-hidden" >
203199 { isFetching ? (
204- < div className = "flex h-40 items-center justify-center" >
205- < Spin />
206- </ div >
200+ < DelayRender >
201+ < div className = "flex h-40 items-center justify-center" >
202+ < SearchLoadingView className = "pt-4" />
203+ </ div >
204+ </ DelayRender >
207205 ) : data . length === 0 ? (
208206 < Empty description = { t ( 'No event data yet' ) } />
209207 ) : (
@@ -291,9 +289,12 @@ function PageComponent() {
291289 < TabsTrigger value = "event" >
292290 { t ( 'Event' ) }
293291 </ TabsTrigger >
294- < TabsTrigger value = "session" >
295- { t ( 'Session' ) }
296- </ TabsTrigger >
292+
293+ { Object . keys ( cleanedSessions ) . length > 0 && (
294+ < TabsTrigger value = "session" >
295+ { t ( 'Session' ) }
296+ </ TabsTrigger >
297+ ) }
297298 </ TabsList >
298299 < TabsContent value = "all" >
299300 { renderGrid ( {
0 commit comments