import React, { useEffect, useState } from 'react'; import { Loader, Icon } from 'UI'; import { connect } from 'react-redux'; import { fetchInsights } from 'Duck/sessions'; import SelectorsList from './components/SelectorsList/SelectorsList'; import { markTargets, Controls as Player } from 'Player'; import Select from 'Shared/Select'; import SelectDateRange from 'Shared/SelectDateRange'; import Period from 'Types/app/period'; const JUMP_OFFSET = 1000; interface Props { filters: any; fetchInsights: (filters: Record) => void; urls: []; insights: any; events: Array; urlOptions: Array; loading: boolean; host: string; setActiveTab: (tab: string) => void; } function PageInsightsPanel({ filters, fetchInsights, events = [], insights, urlOptions, host, loading = true, setActiveTab }: Props) { const [insightsFilters, setInsightsFilters] = useState(filters); const defaultValue = urlOptions && urlOptions[0] ? urlOptions[0].value : ''; const period = Period({ start: insightsFilters.startDate, end: insightsFilters.endDate, rangeName: insightsFilters.rangeValue, }); const onDateChange = (e: any) => { const { startDate, endDate, rangeValue } = e.toJSON(); setInsightsFilters({ ...insightsFilters, startDate, endDate, rangeValue }); }; useEffect(() => { markTargets(insights.toJS()); return () => { markTargets(null); }; }, [insights]); useEffect(() => { if (urlOptions && urlOptions[0]) { const url = insightsFilters.url ? insightsFilters.url : host + urlOptions[0].value; Player.pause(); fetchInsights({ ...insightsFilters, url }); } }, [insightsFilters]); const onPageSelect = ({ value }: any) => { const event = events.find((item) => item.url === value.value); Player.jump(event.time + JUMP_OFFSET); setInsightsFilters({ ...insightsFilters, url: host + value.value }); markTargets([]); }; return (
Clicks
{ setActiveTab(''); }} className="ml-auto flex items-center justify-center bg-white cursor-pointer" >
In Page