import React, { useEffect, useState } from 'react'; import classNames from 'classnames'; import { get } from 'lib/web'; import WebsiteChart from './WebsiteChart'; import RankingsChart from './RankingsChart'; import { getDateRange } from '../lib/date'; import styles from './WebsiteDetails.module.css'; const osFilter = data => data.map(({ x, y }) => ({ x: !x ? 'Unknown' : x, y })); const urlFilter = data => data.filter(({ x }) => x !== '' && !x.startsWith('#')); const refFilter = data => data.filter(({ x }) => x !== '' && !x.startsWith('/') && !x.startsWith('#')); const deviceFilter = data => { const devices = data.reduce( (obj, { x, y }) => { const [width] = x.split('x'); if (width >= 1920) { obj.desktop += +y; } else if (width >= 1024) { obj.laptop += +y; } else if (width >= 767) { obj.tablet += +y; } else { obj.mobile += +y; } return obj; }, { desktop: 0, laptop: 0, tablet: 0, mobile: 0 }, ); return Object.keys(devices).map(key => ({ x: key, y: devices[key] })); }; export default function WebsiteDetails({ websiteId, defaultDateRange = '7day' }) { const [data, setData] = useState(); const [dateRange, setDateRange] = useState(getDateRange(defaultDateRange)); const { startDate, endDate } = dateRange; async function loadData() { setData(await get(`/api/website/${websiteId}`)); } function handleDateChange(values) { setDateRange(values); } useEffect(() => { if (websiteId) { loadData(); } }, [websiteId]); if (!data) { return