diff --git a/src/pages/Analytics/Analytics.tsx b/src/pages/Analytics/Analytics.tsx
index 9d3c122e..10577bbd 100644
--- a/src/pages/Analytics/Analytics.tsx
+++ b/src/pages/Analytics/Analytics.tsx
@@ -29,13 +29,16 @@ export default function Analytics() {
const [isOpen, setOpen] = useState(false);
const [isOpenEnd, setOpenEnd] = useState(false);
- const [to, setTo] = useState(0);
- const [from, setFrom] = useState(0);
+ const [to, setTo] = useState(null);
+ const [from, setFrom] = useState(null);
const { devices, general, questions } = useAnalytics({quizId: editQuizId?.toString(), to, from})
+ const resetTime = () => {
+ setTo(null);
+ setFrom(null);
+ }
useLayoutEffect(() => {
- console.log("editQuizId ", editQuizId)
if (editQuizId === undefined) redirect("/list")
}, [editQuizId])
const theme = useTheme();
@@ -67,6 +70,9 @@ export default function Analytics() {
handleClose();
}
};
+ console.log("questions",questions)
+ console.log("general",general)
+ console.log("devices",devices)
const now = moment();
return (
@@ -123,6 +129,8 @@ export default function Analytics() {
},
},
}}
+ value={to}
+ onChange={(newValue) => setTo(newValue)}
/>
@@ -134,6 +142,8 @@ export default function Analytics() {
color: "4D4D4D",
}}
>
+ value={from}
+ onChange={(newValue) => setValue(setFrom)}
Дата окончания
-
-
-
+
+
+
>
);
diff --git a/src/pages/Analytics/Answers/Answers.tsx b/src/pages/Analytics/Answers/Answers.tsx
index d684d508..d44b2e0a 100644
--- a/src/pages/Analytics/Answers/Answers.tsx
+++ b/src/pages/Analytics/Answers/Answers.tsx
@@ -186,10 +186,11 @@ const Pagination = () => {
);
};
-export const Answers = () => {
- const [answers, setAnswers] = useState>(ANSWERS_MOCK);
+export const Answers = (props) => {
const theme = useTheme();
+ console.log(props.data)
+ if (Object.keys(props.data).length === 0) return нет данных об ответах
return (
{
- {Object.entries(answers).map(([title, percent], index) => (
+ {Object.entries(props.data).map(([title, percent], index) => (
= {
"Стартовая страница": 100,
- "Воронка квиза": 69,
- Заявки: 56,
- Результаты: 56,
+ "Воронка квиза": 0,
+ Заявки: 0,
+ Результаты: 0,
};
const FunnelItem = ({ title, percent }: FunnelItemProps) => {
@@ -100,12 +100,11 @@ const FunnelItem = ({ title, percent }: FunnelItemProps) => {
);
};
-export const Funnel = () => {
- const [funnel, setFunnel] = useState>(FUNNEL_MOCK);
+export const Funnel = (props) => {
const theme = useTheme();
const isSmallMonitor = useMediaQuery(theme.breakpoints.down(1150));
const isMobile = useMediaQuery(theme.breakpoints.down(850));
-
+console.log(props)
useEffect(() => {
// const requestFunnel = async () => {
// const [funnelResponse, funnelError] = await getGeneral("14761");
@@ -122,6 +121,7 @@ export const Funnel = () => {
// requestFunnel();
}, []);
+ if (Object.keys(props.data).length === 0) return нет данных о разделах
return (
{
maxWidth: isSmallMonitor && !isMobile ? "366px" : "none",
}}
>
- {Object.entries(funnel).map(([title, percent]) => (
-
+ {Object.entries(FUNNEL_MOCK).map(([title, percent], index) => (
+ 0 ? props.data[index-1] : percent} />
))}
);
diff --git a/src/pages/Analytics/Answers/Results.tsx b/src/pages/Analytics/Answers/Results.tsx
index 3c64d1ef..8646e355 100644
--- a/src/pages/Analytics/Answers/Results.tsx
+++ b/src/pages/Analytics/Answers/Results.tsx
@@ -69,10 +69,10 @@ const Result = ({ title, percent, highlight }: ResultProps) => {
);
};
-export const Results = () => {
- const [results, setResults] = useState>(RESULTS_MOCK);
+export const Results = (props) => {
const theme = useTheme();
+ if (Object.keys(props.data).length === 0) return нет данных о результатах
return (
{
marginTop: "30px",
}}
>
- {Object.entries(results).map(([title, percent], index) => (
+ {Object.entries(props.data).map(([title, percent], index) => (
{
+export const AnswersStatistics = (props) => {
const theme = useTheme();
const isSmallMonitor = useMediaQuery(theme.breakpoints.down(1150));
const isMobile = useMediaQuery(theme.breakpoints.down(850));
+console.log(props)
+
return (
{
>
Статистика по ответам
- {
-
+ */}
-
-
+
+
-
+
);
};
diff --git a/src/pages/Analytics/Devices.tsx b/src/pages/Analytics/Devices.tsx
index bd7e3b42..7a7ba3ad 100644
--- a/src/pages/Analytics/Devices.tsx
+++ b/src/pages/Analytics/Devices.tsx
@@ -27,6 +27,8 @@ const DEVICES_MOCK: DevicesResponse = {
const Device = ({ title, devices }: DeviceProps) => {
const theme = useTheme();
+ console.log("devices ", devices)
+ if (devices === undefined || Object.keys(devices).length === 0) return {title} - нет данных
const data = Object.entries(devices).map(([id, value], index) => ({
id,
value,
@@ -95,33 +97,33 @@ const Device = ({ title, devices }: DeviceProps) => {
);
};
-export const Devices = () => {
- const [devices, setDevices] = useState(DEVICES_MOCK);
+export const Devices = ({data = {}}) => {
+ const [devices, setDevices] = useState(data);
const theme = useTheme();
const isTablet = useMediaQuery(theme.breakpoints.down(1000));
const isMobile = useMediaQuery(theme.breakpoints.down(700));
- useEffect(() => {
- const requestDevices = async () => {
- const [devicesResponse, devicesError] = await getDevices("14761");
+ // useEffect(() => {
+ // const requestDevices = async () => {
+ // const [devicesResponse, devicesError] = await getDevices("14761");
- if (devicesError) {
- enqueueSnackbar(devicesError);
+ // if (devicesError) {
+ // enqueueSnackbar(devicesError);
- return;
- }
+ // return;
+ // }
- if (!devicesResponse) {
- enqueueSnackbar("Список девайсов пуст.");
+ // if (!devicesResponse) {
+ // enqueueSnackbar("Список девайсов пуст.");
- return;
- }
+ // return;
+ // }
- setDevices(devicesResponse);
- };
+ // setDevices(devicesResponse);
+ // };
- // requestDevices();
- }, []);
+ // // requestDevices();
+ // }, []);
return (
diff --git a/src/pages/Analytics/General.tsx b/src/pages/Analytics/General.tsx
index e78a7a9a..b8b057a2 100644
--- a/src/pages/Analytics/General.tsx
+++ b/src/pages/Analytics/General.tsx
@@ -38,7 +38,10 @@ const GeneralItem = ({ title, general, color, numberType }: GeneralProps) => {
: Object.entries(general).reduce(
(total, [key, value]) => total + (value / Number(key)) * 100,
0,
- ) / Object.keys(general).length;
+ ) / Object.keys(general).length
+ ||
+ Number(0)
+ ;
return (
{
);
};
-export const General = () => {
- const [general, setGeneral] = useState(GENERAL_MOCK);
+export const General = (props:any) => {
+
const theme = useTheme();
const isTablet = useMediaQuery(theme.breakpoints.down(1000));
const isMobile = useMediaQuery(theme.breakpoints.down(700));
- useEffect(() => {
- const requestGeneral = async () => {
- const [generalResponse, generalError] = await getGeneral("14761");
-
- if (generalError) {
- enqueueSnackbar(generalError);
-
- return;
- }
-
- if (!generalResponse) {
- enqueueSnackbar("Список девайсов пуст.");
-
- return;
- }
-
- setGeneral(generalResponse);
- };
-
- // requestGeneral();
- }, []);
-
+ if (Object.keys(props.data).length === 0) return нет данных о ключевых метриках
return (
{
diff --git a/src/utils/hooks/useAnalytics.ts b/src/utils/hooks/useAnalytics.ts
index 4be3722e..02fcc443 100644
--- a/src/utils/hooks/useAnalytics.ts
+++ b/src/utils/hooks/useAnalytics.ts
@@ -1,5 +1,6 @@
import { getGeneral, getDevices, getQuestions } from "@api/statistic";
import { useEffect, useState } from "react";
+import moment from "moment";
interface Props {
quizId: string;
@@ -12,18 +13,24 @@ export function useAnalytics({
to,
from,
}: Props) {
- const [devices, setDevices] = useState();
- const [general, setGeneral] = useState();
- const [questions, setQuestions] = useState();
+ const formatTo = to === null ? 0 : moment(to).unix()
+ const formatFrom = from === null ? 0 : moment(from).unix()
+ console.log(
+ to,
+ from,)
+ if (quizId === undefined) return {}
+ const [devices, setDevices] = useState({});
+ const [general, setGeneral] = useState({});
+ const [questions, setQuestions] = useState({});
useEffect(() => {
(async () => {
- const gottenGeneral = await getGeneral(quizId, to, from)
- const gottenDevices = await getDevices(quizId, to, from)
- const gottenQuestions = await getQuestions(quizId, to, from)
- setDevices(gottenGeneral)
- setGeneral(gottenDevices)
- setQuestions(gottenQuestions)
+ const gottenGeneral = await getGeneral(quizId, formatTo, formatFrom)
+ const gottenDevices = await getDevices(quizId, formatTo, formatFrom)
+ const gottenQuestions = await getQuestions(quizId, formatTo, formatFrom)
+ setDevices(gottenGeneral[0])
+ setGeneral(gottenDevices[0])
+ setQuestions(gottenQuestions[0])
})()
}, [to, from]);