From 618c643a0a16f69d8b7c1d6b856a69619b9a3bb3 Mon Sep 17 00:00:00 2001 From: Mike Cao Date: Tue, 8 Aug 2023 15:29:59 -0700 Subject: [PATCH] Insights report filtering. --- components/pages/reports/FieldFilterForm.js | 45 +++++++------------ components/pages/reports/FilterSelectForm.js | 25 ++++++++++- .../reports/insights/InsightsParameters.js | 6 ++- hooks/useFilters.js | 4 +- pages/api/websites/[id]/values.ts | 43 ++++++++++++++++++ .../{stats => }/getActiveVisitors.ts | 6 +-- .../analytics/{stats => }/getRealtimeData.ts | 2 +- queries/analytics/getValues.ts | 38 ++++++++++++++++ .../{stats => }/getWebsiteDateRange.ts | 0 .../analytics/{stats => }/getWebsiteStats.ts | 0 queries/analytics/reports/getInsights.ts | 26 ++++++----- queries/index.js | 9 ++-- 12 files changed, 152 insertions(+), 52 deletions(-) create mode 100644 pages/api/websites/[id]/values.ts rename queries/analytics/{stats => }/getActiveVisitors.ts (84%) rename queries/analytics/{stats => }/getRealtimeData.ts (93%) create mode 100644 queries/analytics/getValues.ts rename queries/analytics/{stats => }/getWebsiteDateRange.ts (100%) rename queries/analytics/{stats => }/getWebsiteStats.ts (100%) diff --git a/components/pages/reports/FieldFilterForm.js b/components/pages/reports/FieldFilterForm.js index 021ea97e..a2b68968 100644 --- a/components/pages/reports/FieldFilterForm.js +++ b/components/pages/reports/FieldFilterForm.js @@ -1,48 +1,37 @@ import { useState } from 'react'; -import { Form, FormRow, Menu, Item, Flexbox, Dropdown, TextField, Button } from 'react-basics'; +import { Form, FormRow, Item, Flexbox, Dropdown, Button } from 'react-basics'; import { useFilters } from 'hooks'; import styles from './FieldFilterForm.module.css'; -export default function FieldFilterForm({ name, type, onSelect }) { - const [filter, setFilter] = useState(''); - const [value, setValue] = useState(''); - const { filters, types } = useFilters(); - const items = types[type]; +export default function FieldFilterForm({ label, type, values, onSelect }) { + const [filter, setFilter] = useState('eq'); + const [value, setValue] = useState(); + const filters = useFilters(type); - const renderValue = value => { - return filters[value]; + const renderFilterValue = value => { + return filters.find(f => f.value === value)?.label; }; - if (type === 'boolean') { - return ( -
- - onSelect({ name, type, value: ['eq', value] })}> - {items.map(value => { - return {filters[value]}; - })} - - -
- ); - } - return (
- + - {value => { - return {filters[value]}; + {({ value, label }) => { + return {label}; + }} + + + {value => { + return {value}; }} - setValue(e.target.value)} autoFocus={true} />