import React, { useState, useEffect } from 'react'
import { Tabs, Loader } from 'UI'
import FunnelHeader from 'Components/Funnels/FunnelHeader'
import FunnelGraph from 'Components/Funnels/FunnelGraph'
import FunnelSessionList from 'Components/Funnels/FunnelSessionList'
import FunnelOverview from 'Components/Funnels/FunnelOverview'
import FunnelIssues from 'Components/Funnels/FunnelIssues'
import { connect } from 'react-redux';
import {
fetch, fetchInsights, fetchList, fetchFiltered, fetchIssuesFiltered, fetchSessionsFiltered, fetchIssueTypes, resetFunnel
} from 'Duck/funnels';
import { applyFilter, setFilterOptions, resetFunnelFilters, setInitialFilters } from 'Duck/funnelFilters';
import { withRouter } from 'react-router';
import { sessions as sessionsRoute, funnel as funnelRoute, withSiteId } from 'App/routes';
import EventFilter from 'Shared/EventFilter';
import cn from 'classnames';
import IssuesEmptyMessage from 'Components/Funnels/IssuesEmptyMessage'
const TAB_ISSUES = 'ANALYSIS';
const TAB_SESSIONS = 'SESSIONS';
const TABS = [ TAB_ISSUES, TAB_SESSIONS ].map(tab => ({
text: tab,
disabled: false,
key: tab,
}));
const FunnelDetails = (props) => {
const { insights, funnels, funnel, funnelId, loading, liveFilters, issuesLoading, sessionsLoading } = props;
const [activeTab, setActiveTab] = useState(TAB_ISSUES)
const [showFilters, setShowFilters] = useState(false)
const [mounted, setMounted] = useState(false);
const onTabClick = activeTab => setActiveTab(activeTab)
useEffect(() => {
if (funnels.size === 0) {
props.fetchList();
}
props.fetchIssueTypes()
props.fetch(funnelId).then(() => {
setMounted(true);
})
props.fetchInsights(funnelId, {})
}, []);
useEffect(() => {
if (funnel && funnel.filter && liveFilters.events.size === 0) {
props.setInitialFilters();
}
}, [funnel])
const onBack = () => {
props.history.push(sessionsRoute());
}
const redirect = funnelId => {
const { siteId, history } = props;
props.resetFunnel();
props.resetFunnelFilters();
history.push(withSiteId(funnelRoute(parseInt(funnelId)), siteId));
}
const renderActiveTab = (tab, hasNoStages) => {
switch(tab) {
case TAB_ISSUES:
return !hasNoStages &&