2022-12-20 16:55:43 +01:00
|
|
|
import {
|
|
|
|
|
Flex,
|
|
|
|
|
Spinner,
|
|
|
|
|
useColorModeValue,
|
|
|
|
|
useDisclosure,
|
|
|
|
|
} from '@chakra-ui/react'
|
2022-11-15 09:35:48 +01:00
|
|
|
import { useToast } from '@/hooks/useToast'
|
2023-03-15 11:51:30 +01:00
|
|
|
import { useTypebot } from '@/features/editor/providers/TypebotProvider'
|
2023-03-15 08:35:16 +01:00
|
|
|
import { Stats } from '@typebot.io/schemas'
|
2021-12-24 10:08:41 +01:00
|
|
|
import React from 'react'
|
2022-11-15 09:35:48 +01:00
|
|
|
import { useAnswersCount } from '../hooks/useAnswersCount'
|
|
|
|
|
import { StatsCards } from './StatsCards'
|
2023-03-15 11:51:30 +01:00
|
|
|
import { ChangePlanModal } from '@/features/billing/components/ChangePlanModal'
|
|
|
|
|
import { Graph } from '@/features/graph/components/Graph'
|
|
|
|
|
import { GraphProvider } from '@/features/graph/providers/GraphProvider'
|
|
|
|
|
import { GroupsCoordinatesProvider } from '@/features/graph/providers/GroupsCoordinateProvider'
|
2023-04-06 17:31:23 +02:00
|
|
|
import { useI18n } from '@/locales'
|
2021-12-24 10:08:41 +01:00
|
|
|
|
2022-11-15 09:35:48 +01:00
|
|
|
export const AnalyticsGraphContainer = ({ stats }: { stats?: Stats }) => {
|
2023-04-06 17:31:23 +02:00
|
|
|
const t = useI18n()
|
2022-02-13 06:53:48 +01:00
|
|
|
const { isOpen, onOpen, onClose } = useDisclosure()
|
2022-01-03 17:39:59 +01:00
|
|
|
const { typebot, publishedTypebot } = useTypebot()
|
2022-06-02 07:54:48 +02:00
|
|
|
const { showToast } = useToast()
|
2022-01-03 17:39:59 +01:00
|
|
|
const { answersCounts } = useAnswersCount({
|
2022-02-16 07:37:05 +01:00
|
|
|
typebotId: publishedTypebot && typebot?.id,
|
2022-06-02 07:54:48 +02:00
|
|
|
onError: (err) => showToast({ title: err.name, description: err.message }),
|
2022-01-03 17:39:59 +01:00
|
|
|
})
|
|
|
|
|
return (
|
|
|
|
|
<Flex
|
|
|
|
|
w="full"
|
|
|
|
|
pos="relative"
|
2022-12-20 16:55:43 +01:00
|
|
|
bgColor={useColorModeValue('white', 'gray.850')}
|
|
|
|
|
backgroundImage={useColorModeValue(
|
|
|
|
|
'radial-gradient(#c6d0e1 1px, transparent 0)',
|
|
|
|
|
'radial-gradient(#2f2f39 1px, transparent 0)'
|
|
|
|
|
)}
|
|
|
|
|
backgroundSize="40px 40px"
|
|
|
|
|
backgroundPosition="-19px -19px"
|
2022-01-03 17:39:59 +01:00
|
|
|
h="full"
|
|
|
|
|
justifyContent="center"
|
|
|
|
|
>
|
2022-06-26 16:12:28 +02:00
|
|
|
{publishedTypebot && answersCounts && stats ? (
|
|
|
|
|
<GraphProvider isReadOnly>
|
|
|
|
|
<GroupsCoordinatesProvider groups={publishedTypebot?.groups}>
|
|
|
|
|
<Graph
|
|
|
|
|
flex="1"
|
|
|
|
|
typebot={publishedTypebot}
|
|
|
|
|
onUnlockProPlanClick={onOpen}
|
2022-12-22 17:02:34 +01:00
|
|
|
answersCounts={
|
2023-01-27 09:50:36 +01:00
|
|
|
answersCounts[0]
|
2022-12-22 17:02:34 +01:00
|
|
|
? [
|
|
|
|
|
{ ...answersCounts[0], totalAnswers: stats?.totalStarts },
|
|
|
|
|
...answersCounts.slice(1),
|
|
|
|
|
]
|
|
|
|
|
: []
|
|
|
|
|
}
|
2022-06-26 16:12:28 +02:00
|
|
|
/>
|
|
|
|
|
</GroupsCoordinatesProvider>
|
2022-02-11 18:06:59 +01:00
|
|
|
</GraphProvider>
|
2022-06-26 16:12:28 +02:00
|
|
|
) : (
|
|
|
|
|
<Flex
|
|
|
|
|
justify="center"
|
|
|
|
|
align="center"
|
|
|
|
|
boxSize="full"
|
|
|
|
|
bgColor="rgba(255, 255, 255, 0.5)"
|
|
|
|
|
>
|
|
|
|
|
<Spinner color="gray" />
|
|
|
|
|
</Flex>
|
2022-01-03 17:39:59 +01:00
|
|
|
)}
|
2022-09-24 08:58:23 +02:00
|
|
|
<ChangePlanModal
|
|
|
|
|
onClose={onClose}
|
|
|
|
|
isOpen={isOpen}
|
2023-04-06 17:31:23 +02:00
|
|
|
type={t('billing.limitMessage.analytics')}
|
2022-09-24 08:58:23 +02:00
|
|
|
/>
|
2022-01-03 17:39:59 +01:00
|
|
|
<StatsCards stats={stats} pos="absolute" top={10} />
|
|
|
|
|
</Flex>
|
|
|
|
|
)
|
2021-12-24 10:08:41 +01:00
|
|
|
}
|