Added button to export visits as CSV

This commit is contained in:
Alejandro Celaya
2021-03-14 12:49:12 +01:00
parent 3f3523b80f
commit 03f63e3ee3
10 changed files with 87 additions and 24 deletions

View File

@@ -2,7 +2,7 @@ import { isEmpty, propEq, values } from 'ramda';
import { useState, useEffect, useMemo, FC } from 'react';
import { Button, Card, Nav, NavLink, Progress, Row } from 'reactstrap';
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
import { faCalendarAlt, faMapMarkedAlt, faList, faChartPie } from '@fortawesome/free-solid-svg-icons';
import { faCalendarAlt, faMapMarkedAlt, faList, faChartPie, faFileExport } from '@fortawesome/free-solid-svg-icons';
import { IconDefinition } from '@fortawesome/fontawesome-common-types';
import { Route, Switch, NavLink as RouterNavLink, Redirect } from 'react-router-dom';
import { Location } from 'history';
@@ -30,6 +30,7 @@ export interface VisitsStatsProps {
cancelGetVisits: () => void;
baseUrl: string;
domain?: string;
exportCsv: (visits: NormalizedVisit[]) => void;
}
interface VisitsNavLinkProps {
@@ -76,7 +77,7 @@ const VisitsNavLink: FC<VisitsNavLinkProps & { to: string }> = ({ subPath, title
);
const VisitsStats: FC<VisitsStatsProps> = (
{ children, visitsInfo, getVisits, cancelGetVisits, baseUrl, domain, settings },
{ children, visitsInfo, getVisits, cancelGetVisits, baseUrl, domain, settings, exportCsv },
) => {
const initialInterval: DateInterval = settings.visits?.defaultInterval ?? 'last30Days';
const [ dateRange, setDateRange ] = useState<DateRange>(intervalToDateRange(initialInterval));
@@ -266,6 +267,9 @@ const VisitsStats: FC<VisitsStatsProps> = (
>
Clear selection {highlightedVisits.length > 0 && <>({highlightedVisits.length})</>}
</Button>
<Button outline color="primary" onClick={() => exportCsv(normalizedVisits)}>
Export <FontAwesomeIcon icon={faFileExport} />
</Button>
</div>
)}
</div>