refactor Property components to be resused for both session/event data. Implement session-data screens + filtering. Remove all event-data specific compoenents/queries
This commit is contained in:
1 parent
9da332c489
commit
680a1ca1a2
71 files changed
+2814
-958
No files matched your search
@@ -17,17 +17,9 @@ export * from './queries/useBoardsQuery';
|
||||
export * from './queries/useDashboardQuery';
|
||||
export * from './queries/useDateRangeQuery';
|
||||
export * from './queries/useDeleteQuery';
|
||||
export * from './queries/useEventDataArraySeriesQuery';
|
||||
export * from './queries/useEventDataDateSeriesQuery';
|
||||
export * from './queries/useEventDataEventsQuery';
|
||||
export * from './queries/useEventDataFieldsQuery';
|
||||
export * from './queries/useEventDataNumericSeriesQuery';
|
||||
export * from './queries/useEventDataNumericStatsQuery';
|
||||
export * from './queries/useEventDataPivotQuery';
|
||||
export * from './queries/useEventDataPropertiesQuery';
|
||||
export * from './queries/useEventDataPropertySeriesQuery';
|
||||
export * from './queries/useEventDataQuery';
|
||||
export * from './queries/useEventDataValuesQuery';
|
||||
export * from './queries/useLinkQuery';
|
||||
export * from './queries/useLinkSharesQuery';
|
||||
export * from './queries/useLinksQuery';
|
||||
@@ -35,6 +27,13 @@ export * from './queries/useLoginQuery';
|
||||
export * from './queries/usePixelQuery';
|
||||
export * from './queries/usePixelSharesQuery';
|
||||
export * from './queries/usePixelsQuery';
|
||||
export * from './queries/usePropertyArraySeriesQuery';
|
||||
export * from './queries/usePropertyDateSeriesQuery';
|
||||
export * from './queries/usePropertyFieldsQuery';
|
||||
export * from './queries/usePropertyNumericSeriesQuery';
|
||||
export * from './queries/usePropertyNumericStatsQuery';
|
||||
export * from './queries/usePropertySeriesQuery';
|
||||
export * from './queries/usePropertyValuesQuery';
|
||||
export * from './queries/useRealtimeQuery';
|
||||
export * from './queries/useReplayQuery';
|
||||
export * from './queries/useReplaySavedQuery';
|
||||
@@ -46,7 +45,9 @@ export * from './queries/useRevenueSessionsQuery';
|
||||
export * from './queries/useSavedReplaysQuery';
|
||||
export * from './queries/useSessionActivityQuery';
|
||||
export * from './queries/useSessionDataPropertiesQuery';
|
||||
export * from './queries/useSessionDataPivotQuery';
|
||||
export * from './queries/useSessionDataQuery';
|
||||
export * from './queries/useSessionDataStatsQuery';
|
||||
export * from './queries/useSessionDataValuesQuery';
|
||||
export * from './queries/useSessionReplaysQuery';
|
||||
export * from './queries/useShareTokenQuery';
|
||||
|
||||
@@ -1,47 +0,0 @@
|
||||
import { serializeEventPropertyFilters } from '@/lib/params';
|
||||
import type { EventDataSeriesPoint, EventPropertyFilter, ReactQueryOptions } from '@/lib/types';
|
||||
import { useApi } from '../useApi';
|
||||
import { useDateParameters } from '../useDateParameters';
|
||||
import { useFilterParameters } from '../useFilterParameters';
|
||||
|
||||
export function useEventDataArraySeriesQuery(
|
||||
websiteId: string,
|
||||
eventName: string,
|
||||
propertyName: string,
|
||||
eventFilters: EventPropertyFilter[] = [],
|
||||
options?: ReactQueryOptions,
|
||||
) {
|
||||
const { get, useQuery } = useApi();
|
||||
const { startAt, endAt, unit, timezone } = useDateParameters();
|
||||
const params = useFilterParameters();
|
||||
|
||||
return useQuery<EventDataSeriesPoint[]>({
|
||||
queryKey: [
|
||||
'websites:event-data-pivot:array-series',
|
||||
{
|
||||
websiteId,
|
||||
eventName,
|
||||
propertyName,
|
||||
eventFilters,
|
||||
startAt,
|
||||
endAt,
|
||||
unit,
|
||||
timezone,
|
||||
...params,
|
||||
},
|
||||
],
|
||||
queryFn: () =>
|
||||
get(`/websites/${websiteId}/event-data-pivot/array-series`, {
|
||||
eventName,
|
||||
propertyName,
|
||||
startAt,
|
||||
endAt,
|
||||
unit,
|
||||
timezone,
|
||||
...serializeEventPropertyFilters(eventFilters),
|
||||
...params,
|
||||
}),
|
||||
enabled: !!(websiteId && eventName && propertyName),
|
||||
...options,
|
||||
});
|
||||
}
|
||||
@@ -1,45 +0,0 @@
|
||||
import { serializeEventPropertyFilters } from '@/lib/params';
|
||||
import type { EventDataDateSeriesPoint, EventPropertyFilter, ReactQueryOptions } from '@/lib/types';
|
||||
import { useApi } from '../useApi';
|
||||
import { useDateParameters } from '../useDateParameters';
|
||||
import { useFilterParameters } from '../useFilterParameters';
|
||||
|
||||
export function useEventDataDateSeriesQuery(
|
||||
websiteId: string,
|
||||
eventName: string,
|
||||
propertyName: string,
|
||||
eventFilters: EventPropertyFilter[] = [],
|
||||
options?: ReactQueryOptions,
|
||||
) {
|
||||
const { get, useQuery } = useApi();
|
||||
const { startAt, endAt, timezone } = useDateParameters();
|
||||
const params = useFilterParameters();
|
||||
|
||||
return useQuery<EventDataDateSeriesPoint[]>({
|
||||
queryKey: [
|
||||
'websites:event-data-pivot:date-series',
|
||||
{
|
||||
websiteId,
|
||||
eventName,
|
||||
propertyName,
|
||||
eventFilters,
|
||||
startAt,
|
||||
endAt,
|
||||
timezone,
|
||||
...params,
|
||||
},
|
||||
],
|
||||
queryFn: () =>
|
||||
get(`/websites/${websiteId}/event-data-pivot/date-series`, {
|
||||
eventName,
|
||||
propertyName,
|
||||
startAt,
|
||||
endAt,
|
||||
timezone,
|
||||
...serializeEventPropertyFilters(eventFilters),
|
||||
...params,
|
||||
}),
|
||||
enabled: !!(websiteId && eventName && propertyName),
|
||||
...options,
|
||||
});
|
||||
}
|
||||
@@ -1,27 +0,0 @@
|
||||
import type { ReactQueryOptions } from '@/lib/types';
|
||||
import { useApi } from '../useApi';
|
||||
import { useDateParameters } from '../useDateParameters';
|
||||
import { useFilterParameters } from '../useFilterParameters';
|
||||
|
||||
export function useEventDataEventsQuery(websiteId: string, options?: ReactQueryOptions) {
|
||||
const { get, useQuery } = useApi();
|
||||
const { startAt, endAt, unit, timezone } = useDateParameters();
|
||||
const filters = useFilterParameters();
|
||||
|
||||
return useQuery({
|
||||
queryKey: [
|
||||
'websites:event-data:events',
|
||||
{ websiteId, startAt, endAt, unit, timezone, ...filters },
|
||||
],
|
||||
queryFn: () =>
|
||||
get(`/websites/${websiteId}/event-data/events`, {
|
||||
startAt,
|
||||
endAt,
|
||||
unit,
|
||||
timezone,
|
||||
...filters,
|
||||
}),
|
||||
enabled: !!websiteId,
|
||||
...options,
|
||||
});
|
||||
}
|
||||
@@ -1,32 +0,0 @@
|
||||
import type { ReactQueryOptions } from '@/lib/types';
|
||||
import { useApi } from '../useApi';
|
||||
import { useDateParameters } from '../useDateParameters';
|
||||
import { useFilterParameters } from '../useFilterParameters';
|
||||
|
||||
export function useEventDataFieldsQuery(
|
||||
websiteId: string,
|
||||
eventName?: string,
|
||||
options?: ReactQueryOptions,
|
||||
) {
|
||||
const { get, useQuery } = useApi();
|
||||
const { startAt, endAt, unit, timezone } = useDateParameters();
|
||||
const params = useFilterParameters();
|
||||
|
||||
return useQuery<any>({
|
||||
queryKey: [
|
||||
'websites:event-data:fields',
|
||||
{ websiteId, eventName, startAt, endAt, unit, timezone, ...params },
|
||||
],
|
||||
queryFn: () =>
|
||||
get(`/websites/${websiteId}/event-data/fields`, {
|
||||
event: eventName,
|
||||
startAt,
|
||||
endAt,
|
||||
unit,
|
||||
timezone,
|
||||
...params,
|
||||
}),
|
||||
enabled: !!websiteId,
|
||||
...options,
|
||||
});
|
||||
}
|
||||
@@ -1,39 +0,0 @@
|
||||
import { serializeEventPropertyFilters } from '@/lib/params';
|
||||
import type { EventPropertyFilter, ReactQueryOptions } from '@/lib/types';
|
||||
import { useApi } from '../useApi';
|
||||
import { useDateParameters } from '../useDateParameters';
|
||||
import { useFilterParameters } from '../useFilterParameters';
|
||||
|
||||
export function useEventDataNumericSeriesQuery(
|
||||
websiteId: string,
|
||||
eventName: string,
|
||||
propertyName: string,
|
||||
metric: 'sum' | 'avg' | 'count',
|
||||
eventFilters: EventPropertyFilter[] = [],
|
||||
options?: ReactQueryOptions,
|
||||
) {
|
||||
const { get, useQuery } = useApi();
|
||||
const { startAt, endAt, unit, timezone } = useDateParameters();
|
||||
const params = useFilterParameters();
|
||||
|
||||
return useQuery<any>({
|
||||
queryKey: [
|
||||
'websites:event-data-pivot:numeric-series',
|
||||
{ websiteId, eventName, propertyName, metric, eventFilters, startAt, endAt, unit, timezone, ...params },
|
||||
],
|
||||
queryFn: () =>
|
||||
get(`/websites/${websiteId}/event-data-pivot/numeric-series`, {
|
||||
eventName,
|
||||
propertyName,
|
||||
metric,
|
||||
startAt,
|
||||
endAt,
|
||||
unit,
|
||||
timezone,
|
||||
...serializeEventPropertyFilters(eventFilters),
|
||||
...params,
|
||||
}),
|
||||
enabled: !!(websiteId && eventName && propertyName),
|
||||
...options,
|
||||
});
|
||||
}
|
||||
@@ -1,36 +0,0 @@
|
||||
import { serializeEventPropertyFilters } from '@/lib/params';
|
||||
import type { EventDataNumericStats, EventPropertyFilter, ReactQueryOptions } from '@/lib/types';
|
||||
import { useApi } from '../useApi';
|
||||
import { useDateParameters } from '../useDateParameters';
|
||||
import { useFilterParameters } from '../useFilterParameters';
|
||||
|
||||
export function useEventDataNumericStatsQuery(
|
||||
websiteId: string,
|
||||
eventName: string,
|
||||
propertyName: string,
|
||||
eventFilters: EventPropertyFilter[] = [],
|
||||
options?: ReactQueryOptions<EventDataNumericStats>,
|
||||
) {
|
||||
const { get, useQuery } = useApi();
|
||||
const { startAt, endAt, timezone } = useDateParameters();
|
||||
const params = useFilterParameters();
|
||||
|
||||
return useQuery<EventDataNumericStats>({
|
||||
queryKey: [
|
||||
'websites:event-data-pivot:numeric-stats',
|
||||
{ websiteId, eventName, propertyName, eventFilters, startAt, endAt, timezone, ...params },
|
||||
],
|
||||
queryFn: () =>
|
||||
get(`/websites/${websiteId}/event-data-pivot/numeric-stats`, {
|
||||
eventName,
|
||||
propertyName,
|
||||
startAt,
|
||||
endAt,
|
||||
timezone,
|
||||
...serializeEventPropertyFilters(eventFilters),
|
||||
...params,
|
||||
}),
|
||||
enabled: !!(websiteId && eventName && propertyName),
|
||||
...options,
|
||||
});
|
||||
}
|
||||
@@ -6,7 +6,7 @@ import { useFilterParameters } from '../useFilterParameters';
|
||||
export function useEventDataPropertiesQuery(websiteId: string, options?: ReactQueryOptions) {
|
||||
const { get, useQuery } = useApi();
|
||||
const { startAt, endAt, unit, timezone } = useDateParameters();
|
||||
const filters = useFilterParameters();
|
||||
const filters = useFilterParameters({ includePagination: false });
|
||||
|
||||
return useQuery<any>({
|
||||
queryKey: [
|
||||
|
||||
@@ -1,37 +0,0 @@
|
||||
import { serializeEventPropertyFilters } from '@/lib/params';
|
||||
import type { EventDataSeriesPoint, EventPropertyFilter, ReactQueryOptions } from '@/lib/types';
|
||||
import { useApi } from '../useApi';
|
||||
import { useDateParameters } from '../useDateParameters';
|
||||
import { useFilterParameters } from '../useFilterParameters';
|
||||
|
||||
export function useEventDataPropertySeriesQuery(
|
||||
websiteId: string,
|
||||
eventName: string,
|
||||
propertyName: string,
|
||||
eventFilters: EventPropertyFilter[] = [],
|
||||
options?: ReactQueryOptions,
|
||||
) {
|
||||
const { get, useQuery } = useApi();
|
||||
const { startAt, endAt, unit, timezone } = useDateParameters();
|
||||
const params = useFilterParameters();
|
||||
|
||||
return useQuery<EventDataSeriesPoint[]>({
|
||||
queryKey: [
|
||||
'websites:event-data-pivot:property-series',
|
||||
{ websiteId, eventName, propertyName, eventFilters, startAt, endAt, unit, timezone, ...params },
|
||||
],
|
||||
queryFn: () =>
|
||||
get(`/websites/${websiteId}/event-data-pivot/property-series`, {
|
||||
eventName,
|
||||
propertyName,
|
||||
startAt,
|
||||
endAt,
|
||||
unit,
|
||||
timezone,
|
||||
...serializeEventPropertyFilters(eventFilters),
|
||||
...params,
|
||||
}),
|
||||
enabled: !!(websiteId && eventName && propertyName),
|
||||
...options,
|
||||
});
|
||||
}
|
||||
@@ -26,7 +26,7 @@ export function useEventStatsQuery(
|
||||
) {
|
||||
const { get, useQuery } = useApi();
|
||||
const { startAt, endAt } = useDateParameters();
|
||||
const filters = useFilterParameters();
|
||||
const filters = useFilterParameters({ includePagination: false });
|
||||
|
||||
return useQuery<EventStatsApiResponse, Error, EventStatsData>({
|
||||
queryKey: ['websites:events:stats', { websiteId, startAt, endAt, ...filters }],
|
||||
|
||||
@@ -0,0 +1,44 @@
|
||||
import { serializePropertyFilters } from '@/lib/params';
|
||||
import type { EventDataSeriesPoint, PropertyFilter, ReactQueryOptions } from '@/lib/types';
|
||||
import { useApi } from '../useApi';
|
||||
import { useDateParameters } from '../useDateParameters';
|
||||
import { useFilterParameters } from '../useFilterParameters';
|
||||
import type { PropertyDataSource } from './usePropertyFieldsQuery';
|
||||
|
||||
export function usePropertyArraySeriesQuery(
|
||||
source: PropertyDataSource,
|
||||
websiteId: string,
|
||||
propertyName: string,
|
||||
propertyFilters: PropertyFilter[] = [],
|
||||
eventName?: string,
|
||||
options?: ReactQueryOptions,
|
||||
) {
|
||||
const { get, useQuery } = useApi();
|
||||
const { startAt, endAt, unit, timezone } = useDateParameters();
|
||||
const params = useFilterParameters({ includePagination: false });
|
||||
|
||||
return useQuery<EventDataSeriesPoint[]>({
|
||||
queryKey: [
|
||||
`websites:${source}-data:array-series`,
|
||||
{ websiteId, propertyName, eventName, propertyFilters, startAt, endAt, unit, timezone, ...params },
|
||||
],
|
||||
queryFn: () =>
|
||||
get(
|
||||
source === 'event'
|
||||
? `/websites/${websiteId}/event-data-pivot/array-series`
|
||||
: `/websites/${websiteId}/session-data/array-series`,
|
||||
{
|
||||
...(source === 'event' ? { eventName } : {}),
|
||||
propertyName,
|
||||
startAt,
|
||||
endAt,
|
||||
unit,
|
||||
timezone,
|
||||
...serializePropertyFilters(propertyFilters),
|
||||
...params,
|
||||
},
|
||||
),
|
||||
enabled: !!(websiteId && propertyName && (source === 'session' || eventName)),
|
||||
...options,
|
||||
});
|
||||
}
|
||||
@@ -0,0 +1,43 @@
|
||||
import { serializePropertyFilters } from '@/lib/params';
|
||||
import type { EventDataDateSeriesPoint, PropertyFilter, ReactQueryOptions } from '@/lib/types';
|
||||
import { useApi } from '../useApi';
|
||||
import { useDateParameters } from '../useDateParameters';
|
||||
import { useFilterParameters } from '../useFilterParameters';
|
||||
import type { PropertyDataSource } from './usePropertyFieldsQuery';
|
||||
|
||||
export function usePropertyDateSeriesQuery(
|
||||
source: PropertyDataSource,
|
||||
websiteId: string,
|
||||
propertyName: string,
|
||||
propertyFilters: PropertyFilter[] = [],
|
||||
eventName?: string,
|
||||
options?: ReactQueryOptions,
|
||||
) {
|
||||
const { get, useQuery } = useApi();
|
||||
const { startAt, endAt, timezone } = useDateParameters();
|
||||
const params = useFilterParameters({ includePagination: false });
|
||||
|
||||
return useQuery<EventDataDateSeriesPoint[]>({
|
||||
queryKey: [
|
||||
`websites:${source}-data:date-series`,
|
||||
{ websiteId, propertyName, eventName, propertyFilters, startAt, endAt, timezone, ...params },
|
||||
],
|
||||
queryFn: () =>
|
||||
get(
|
||||
source === 'event'
|
||||
? `/websites/${websiteId}/event-data-pivot/date-series`
|
||||
: `/websites/${websiteId}/session-data/date-series`,
|
||||
{
|
||||
...(source === 'event' ? { eventName } : {}),
|
||||
propertyName,
|
||||
startAt,
|
||||
endAt,
|
||||
timezone,
|
||||
...serializePropertyFilters(propertyFilters),
|
||||
...params,
|
||||
},
|
||||
),
|
||||
enabled: !!(websiteId && propertyName && (source === 'session' || eventName)),
|
||||
...options,
|
||||
});
|
||||
}
|
||||
@@ -0,0 +1,40 @@
|
||||
import type { ReactQueryOptions } from '@/lib/types';
|
||||
import { useApi } from '../useApi';
|
||||
import { useDateParameters } from '../useDateParameters';
|
||||
import { useFilterParameters } from '../useFilterParameters';
|
||||
|
||||
export type PropertyDataSource = 'event' | 'session';
|
||||
|
||||
export function usePropertyFieldsQuery(
|
||||
source: PropertyDataSource,
|
||||
websiteId: string,
|
||||
eventName?: string,
|
||||
options?: ReactQueryOptions,
|
||||
) {
|
||||
const { get, useQuery } = useApi();
|
||||
const { startAt, endAt, unit, timezone } = useDateParameters();
|
||||
const params = useFilterParameters({ includePagination: false });
|
||||
|
||||
return useQuery<any>({
|
||||
queryKey: [
|
||||
`websites:${source}-data:fields`,
|
||||
{ websiteId, eventName, startAt, endAt, unit, timezone, ...params },
|
||||
],
|
||||
queryFn: () =>
|
||||
get(
|
||||
source === 'event'
|
||||
? `/websites/${websiteId}/event-data/fields`
|
||||
: `/websites/${websiteId}/session-data/properties`,
|
||||
{
|
||||
...(source === 'event' ? { event: eventName } : {}),
|
||||
startAt,
|
||||
endAt,
|
||||
unit,
|
||||
timezone,
|
||||
...params,
|
||||
},
|
||||
),
|
||||
enabled: !!(websiteId && (source === 'session' || eventName)),
|
||||
...options,
|
||||
});
|
||||
}
|
||||
@@ -0,0 +1,46 @@
|
||||
import { serializePropertyFilters } from '@/lib/params';
|
||||
import type { PropertyFilter, ReactQueryOptions } from '@/lib/types';
|
||||
import { useApi } from '../useApi';
|
||||
import { useDateParameters } from '../useDateParameters';
|
||||
import { useFilterParameters } from '../useFilterParameters';
|
||||
import type { PropertyDataSource } from './usePropertyFieldsQuery';
|
||||
|
||||
export function usePropertyNumericSeriesQuery(
|
||||
source: PropertyDataSource,
|
||||
websiteId: string,
|
||||
propertyName: string,
|
||||
metric: 'sum' | 'avg' | 'count',
|
||||
propertyFilters: PropertyFilter[] = [],
|
||||
eventName?: string,
|
||||
options?: ReactQueryOptions,
|
||||
) {
|
||||
const { get, useQuery } = useApi();
|
||||
const { startAt, endAt, unit, timezone } = useDateParameters();
|
||||
const params = useFilterParameters({ includePagination: false });
|
||||
|
||||
return useQuery<any>({
|
||||
queryKey: [
|
||||
`websites:${source}-data:numeric-series`,
|
||||
{ websiteId, propertyName, metric, eventName, propertyFilters, startAt, endAt, unit, timezone, ...params },
|
||||
],
|
||||
queryFn: () =>
|
||||
get(
|
||||
source === 'event'
|
||||
? `/websites/${websiteId}/event-data-pivot/numeric-series`
|
||||
: `/websites/${websiteId}/session-data/numeric-series`,
|
||||
{
|
||||
...(source === 'event' ? { eventName } : {}),
|
||||
propertyName,
|
||||
metric,
|
||||
startAt,
|
||||
endAt,
|
||||
unit,
|
||||
timezone,
|
||||
...serializePropertyFilters(propertyFilters),
|
||||
...params,
|
||||
},
|
||||
),
|
||||
enabled: !!(websiteId && propertyName && (source === 'session' || eventName)),
|
||||
...options,
|
||||
});
|
||||
}
|
||||
@@ -0,0 +1,43 @@
|
||||
import { serializePropertyFilters } from '@/lib/params';
|
||||
import type { EventDataNumericStats, PropertyFilter, ReactQueryOptions } from '@/lib/types';
|
||||
import { useApi } from '../useApi';
|
||||
import { useDateParameters } from '../useDateParameters';
|
||||
import { useFilterParameters } from '../useFilterParameters';
|
||||
import type { PropertyDataSource } from './usePropertyFieldsQuery';
|
||||
|
||||
export function usePropertyNumericStatsQuery(
|
||||
source: PropertyDataSource,
|
||||
websiteId: string,
|
||||
propertyName: string,
|
||||
propertyFilters: PropertyFilter[] = [],
|
||||
eventName?: string,
|
||||
options?: ReactQueryOptions,
|
||||
) {
|
||||
const { get, useQuery } = useApi();
|
||||
const { startAt, endAt, timezone } = useDateParameters();
|
||||
const params = useFilterParameters({ includePagination: false });
|
||||
|
||||
return useQuery<EventDataNumericStats>({
|
||||
queryKey: [
|
||||
`websites:${source}-data:numeric-stats`,
|
||||
{ websiteId, propertyName, eventName, propertyFilters, startAt, endAt, timezone, ...params },
|
||||
],
|
||||
queryFn: () =>
|
||||
get(
|
||||
source === 'event'
|
||||
? `/websites/${websiteId}/event-data-pivot/numeric-stats`
|
||||
: `/websites/${websiteId}/session-data/numeric-stats`,
|
||||
{
|
||||
...(source === 'event' ? { eventName } : {}),
|
||||
propertyName,
|
||||
startAt,
|
||||
endAt,
|
||||
timezone,
|
||||
...serializePropertyFilters(propertyFilters),
|
||||
...params,
|
||||
},
|
||||
),
|
||||
enabled: !!(websiteId && propertyName && (source === 'session' || eventName)),
|
||||
...options,
|
||||
});
|
||||
}
|
||||
@@ -0,0 +1,44 @@
|
||||
import { serializePropertyFilters } from '@/lib/params';
|
||||
import type { EventDataSeriesPoint, PropertyFilter, ReactQueryOptions } from '@/lib/types';
|
||||
import { useApi } from '../useApi';
|
||||
import { useDateParameters } from '../useDateParameters';
|
||||
import { useFilterParameters } from '../useFilterParameters';
|
||||
import type { PropertyDataSource } from './usePropertyFieldsQuery';
|
||||
|
||||
export function usePropertySeriesQuery(
|
||||
source: PropertyDataSource,
|
||||
websiteId: string,
|
||||
propertyName: string,
|
||||
propertyFilters: PropertyFilter[] = [],
|
||||
eventName?: string,
|
||||
options?: ReactQueryOptions,
|
||||
) {
|
||||
const { get, useQuery } = useApi();
|
||||
const { startAt, endAt, unit, timezone } = useDateParameters();
|
||||
const params = useFilterParameters({ includePagination: false });
|
||||
|
||||
return useQuery<EventDataSeriesPoint[]>({
|
||||
queryKey: [
|
||||
`websites:${source}-data:property-series`,
|
||||
{ websiteId, propertyName, eventName, propertyFilters, startAt, endAt, unit, timezone, ...params },
|
||||
],
|
||||
queryFn: () =>
|
||||
get(
|
||||
source === 'event'
|
||||
? `/websites/${websiteId}/event-data-pivot/property-series`
|
||||
: `/websites/${websiteId}/session-data/property-series`,
|
||||
{
|
||||
...(source === 'event' ? { eventName } : {}),
|
||||
propertyName,
|
||||
startAt,
|
||||
endAt,
|
||||
unit,
|
||||
timezone,
|
||||
...serializePropertyFilters(propertyFilters),
|
||||
...params,
|
||||
},
|
||||
),
|
||||
enabled: !!(websiteId && propertyName && (source === 'session' || eventName)),
|
||||
...options,
|
||||
});
|
||||
}
|
||||
@@ -0,0 +1,46 @@
|
||||
import { serializePropertyFilters } from '@/lib/params';
|
||||
import type { PropertyFilter, ReactQueryOptions } from '@/lib/types';
|
||||
import { useApi } from '../useApi';
|
||||
import { useDateParameters } from '../useDateParameters';
|
||||
import { useFilterParameters } from '../useFilterParameters';
|
||||
import type { PropertyDataSource } from './usePropertyFieldsQuery';
|
||||
|
||||
export function usePropertyValuesQuery(
|
||||
source: PropertyDataSource,
|
||||
websiteId: string,
|
||||
propertyName: string,
|
||||
dataType?: number,
|
||||
propertyFilters: PropertyFilter[] = [],
|
||||
eventName?: string,
|
||||
options?: ReactQueryOptions,
|
||||
) {
|
||||
const { get, useQuery } = useApi();
|
||||
const { startAt, endAt, unit, timezone } = useDateParameters();
|
||||
const params = useFilterParameters({ includePagination: false });
|
||||
|
||||
return useQuery<any>({
|
||||
queryKey: [
|
||||
`websites:${source}-data:values`,
|
||||
{ websiteId, propertyName, dataType, eventName, propertyFilters, startAt, endAt, unit, timezone, ...params },
|
||||
],
|
||||
queryFn: () =>
|
||||
get(
|
||||
source === 'event'
|
||||
? `/websites/${websiteId}/event-data/values`
|
||||
: `/websites/${websiteId}/session-data/values`,
|
||||
{
|
||||
...(source === 'event' ? { event: eventName } : {}),
|
||||
startAt,
|
||||
endAt,
|
||||
unit,
|
||||
timezone,
|
||||
propertyName,
|
||||
dataType,
|
||||
...serializePropertyFilters(propertyFilters),
|
||||
...params,
|
||||
},
|
||||
),
|
||||
enabled: !!(websiteId && propertyName && (source === 'session' || eventName)),
|
||||
...options,
|
||||
});
|
||||
}
|
||||
@@ -11,7 +11,7 @@ export function useResultQuery<T = any>(
|
||||
const { websiteId, ...parameters } = params;
|
||||
const { post, useQuery } = useApi();
|
||||
const { startDate, endDate, timezone, unit } = useDateParameters();
|
||||
const filters = useFilterParameters();
|
||||
const filters = useFilterParameters({ includePagination: false });
|
||||
|
||||
return useQuery<T>({
|
||||
queryKey: [
|
||||
|
||||
+11
-12
@@ -1,34 +1,33 @@
|
||||
import type { ReactQueryOptions } from '@/lib/types';
|
||||
import { serializePropertyFilters } from '@/lib/params';
|
||||
import type { PropertyFilter, ReactQueryOptions } from '@/lib/types';
|
||||
import { useApi } from '../useApi';
|
||||
import { useDateParameters } from '../useDateParameters';
|
||||
import { useFilterParameters } from '../useFilterParameters';
|
||||
|
||||
export function useEventDataValuesQuery(
|
||||
export function useSessionDataPivotQuery(
|
||||
websiteId: string,
|
||||
event: string,
|
||||
propertyName: string,
|
||||
dataType?: number,
|
||||
propertyFilters: PropertyFilter[] = [],
|
||||
options?: ReactQueryOptions,
|
||||
) {
|
||||
const { get, useQuery } = useApi();
|
||||
const { startAt, endAt, unit, timezone } = useDateParameters();
|
||||
const filters = useFilterParameters();
|
||||
const params = useFilterParameters();
|
||||
|
||||
return useQuery<any>({
|
||||
return useQuery({
|
||||
queryKey: [
|
||||
'websites:event-data:values',
|
||||
{ websiteId, startAt, endAt, unit, timezone, ...filters, event, propertyName, dataType },
|
||||
'websites:session-data-pivot',
|
||||
{ websiteId, propertyName, propertyFilters, startAt, endAt, unit, timezone, ...params },
|
||||
],
|
||||
queryFn: () =>
|
||||
get(`/websites/${websiteId}/event-data/values`, {
|
||||
get(`/websites/${websiteId}/session-data-pivot`, {
|
||||
startAt,
|
||||
endAt,
|
||||
unit,
|
||||
timezone,
|
||||
...filters,
|
||||
event,
|
||||
propertyName,
|
||||
dataType,
|
||||
...serializePropertyFilters(propertyFilters),
|
||||
...params,
|
||||
}),
|
||||
enabled: !!(websiteId && propertyName),
|
||||
...options,
|
||||
@@ -1,17 +1,36 @@
|
||||
import type { ReactQueryOptions } from '@/lib/types';
|
||||
import { serializePropertyFilters } from '@/lib/params';
|
||||
import type { PropertyFilter } from '@/lib/types';
|
||||
import { useApi } from '../useApi';
|
||||
import { useDateParameters } from '../useDateParameters';
|
||||
import { useFilterParameters } from '../useFilterParameters';
|
||||
|
||||
export function useSessionDataPropertiesQuery(websiteId: string, options?: ReactQueryOptions) {
|
||||
export function useSessionDataPropertiesQuery(
|
||||
websiteId: string,
|
||||
params?: {
|
||||
selectedPropertyName?: string;
|
||||
propertyFilters?: PropertyFilter[];
|
||||
},
|
||||
options?: ReactQueryOptions,
|
||||
) {
|
||||
const { get, useQuery } = useApi();
|
||||
const { startAt, endAt, unit, timezone } = useDateParameters();
|
||||
const filters = useFilterParameters();
|
||||
const filters = useFilterParameters({ includePagination: false });
|
||||
const { selectedPropertyName, propertyFilters = [] } = params || {};
|
||||
|
||||
return useQuery<any>({
|
||||
queryKey: [
|
||||
'websites:session-data:properties',
|
||||
{ websiteId, startAt, endAt, unit, timezone, ...filters },
|
||||
{
|
||||
websiteId,
|
||||
selectedPropertyName,
|
||||
propertyFilters,
|
||||
startAt,
|
||||
endAt,
|
||||
unit,
|
||||
timezone,
|
||||
...filters,
|
||||
},
|
||||
],
|
||||
queryFn: () =>
|
||||
get(`/websites/${websiteId}/session-data/properties`, {
|
||||
@@ -19,6 +38,8 @@ export function useSessionDataPropertiesQuery(websiteId: string, options?: React
|
||||
endAt,
|
||||
unit,
|
||||
timezone,
|
||||
selectedPropertyName,
|
||||
...serializePropertyFilters(propertyFilters),
|
||||
...filters,
|
||||
}),
|
||||
enabled: !!websiteId,
|
||||
|
||||
@@ -0,0 +1,35 @@
|
||||
import { serializePropertyFilters } from '@/lib/params';
|
||||
import type { PropertyFilter, ReactQueryOptions } from '@/lib/types';
|
||||
import { useApi } from '../useApi';
|
||||
import { useDateParameters } from '../useDateParameters';
|
||||
import { useFilterParameters } from '../useFilterParameters';
|
||||
|
||||
export function useSessionDataStatsQuery(
|
||||
websiteId: string,
|
||||
propertyName: string,
|
||||
propertyFilters: PropertyFilter[] = [],
|
||||
options?: ReactQueryOptions,
|
||||
) {
|
||||
const { get, useQuery } = useApi();
|
||||
const { startAt, endAt, unit, timezone } = useDateParameters();
|
||||
const params = useFilterParameters({ includePagination: false });
|
||||
|
||||
return useQuery({
|
||||
queryKey: [
|
||||
'websites:session-data:stats',
|
||||
{ websiteId, propertyName, propertyFilters, startAt, endAt, unit, timezone, ...params },
|
||||
],
|
||||
queryFn: () =>
|
||||
get(`/websites/${websiteId}/session-data/stats`, {
|
||||
startAt,
|
||||
endAt,
|
||||
unit,
|
||||
timezone,
|
||||
propertyName,
|
||||
...serializePropertyFilters(propertyFilters),
|
||||
...params,
|
||||
}),
|
||||
enabled: !!(websiteId && propertyName),
|
||||
...options,
|
||||
});
|
||||
}
|
||||
@@ -2,7 +2,7 @@ import { useMemo } from 'react';
|
||||
import { FILTER_COLUMNS } from '@/lib/constants';
|
||||
import { useNavigation } from './useNavigation';
|
||||
|
||||
export function useFilterParameters() {
|
||||
export function useFilterParameters({ includePagination = true }: { includePagination?: boolean } = {}) {
|
||||
const { query } = useNavigation();
|
||||
|
||||
return useMemo(() => {
|
||||
@@ -15,15 +15,20 @@ export function useFilterParameters() {
|
||||
}
|
||||
}
|
||||
|
||||
return {
|
||||
const params = {
|
||||
...filterParams,
|
||||
search: query.search,
|
||||
segment: query.segment,
|
||||
cohort: query.cohort,
|
||||
excludeBounce: query.excludeBounce,
|
||||
match: query.match,
|
||||
page: query.page,
|
||||
pageSize: query.pageSize,
|
||||
};
|
||||
}, [query]);
|
||||
} as Record<string, any>;
|
||||
|
||||
if (includePagination) {
|
||||
params.page = query.page;
|
||||
params.pageSize = query.pageSize;
|
||||
}
|
||||
|
||||
return params;
|
||||
}, [query, includePagination]);
|
||||
}
|
||||
Reference in new issue
Block a user