Update report parameters.

pull/2068/head
Mike Cao 2023-05-30 16:49:22 -07:00
parent e9b0d3f796
commit 43f5854f15
5 changed files with 27 additions and 20 deletions

View File

@ -8,6 +8,8 @@ export const ReportContext = createContext(null);
export function Report({ reportId, defaultParameters, children, ...props }) { export function Report({ reportId, defaultParameters, children, ...props }) {
const report = useReport(reportId, defaultParameters); const report = useReport(reportId, defaultParameters);
//console.log(report);
return ( return (
<ReportContext.Provider value={{ ...report }}> <ReportContext.Provider value={{ ...report }}>
<Page {...props} className={styles.container}> <Page {...props} className={styles.container}>

View File

@ -20,15 +20,16 @@ export function ReportHeader({ icon }) {
post(`/reports/${data.id}`, data), post(`/reports/${data.id}`, data),
); );
const { websiteId, name, dateRange } = report || {}; const { name, parameters } = report || {};
const { websiteId, dateRange } = parameters || {};
const { value, startDate, endDate } = dateRange || {}; const { value, startDate, endDate } = dateRange || {};
const handleSelect = websiteId => { const handleWebsiteSelect = websiteId => {
updateReport({ websiteId }); updateReport({ parameters: { websiteId } });
}; };
const handleDateChange = value => { const handleDateChange = value => {
updateReport({ dateRange: { ...parseDateRange(value) } }); updateReport({ parameters: { dateRange: { ...parseDateRange(value) } } });
}; };
const handleSave = async () => { const handleSave = async () => {
@ -71,7 +72,7 @@ export function ReportHeader({ icon }) {
onChange={handleDateChange} onChange={handleDateChange}
showAllTime showAllTime
/> />
<WebsiteSelect websiteId={websiteId} onSelect={handleSelect} /> <WebsiteSelect websiteId={websiteId} onSelect={handleWebsiteSelect} />
<LoadingButton <LoadingButton
variant="primary" variant="primary"
loading={isCreating || isUpdating} loading={isCreating || isUpdating}

View File

@ -21,15 +21,11 @@ export function useReport(reportId, defaultParameters) {
const runReport = useCallback( const runReport = useCallback(
async parameters => { async parameters => {
const { websiteId, type, dateRange } = report;
setIsRunning(true); setIsRunning(true);
const data = await post(`/reports/${type}`, { const { type } = report;
websiteId: websiteId,
...parameters, const data = await post(`/reports/${type}`, parameters);
startAt: +dateRange?.startDate,
endAt: +dateRange?.endDate,
});
setReport( setReport(
produce(state => { produce(state => {

View File

@ -40,6 +40,9 @@ export default async (
if (req.method === 'POST') { if (req.method === 'POST') {
const { id: reportId } = req.query; const { id: reportId } = req.query;
const {
user: { id: userId },
} = req.auth;
const { websiteId, type, name, description, parameters } = req.body; const { websiteId, type, name, description, parameters } = req.body;
@ -52,6 +55,7 @@ export default async (
const result = await updateReport( const result = await updateReport(
{ {
websiteId, websiteId,
userId,
type, type,
name, name,
description, description,

View File

@ -9,8 +9,10 @@ export interface FunnelRequestBody {
websiteId: string; websiteId: string;
urls: string[]; urls: string[];
window: number; window: number;
startAt: number; dateRange: {
endAt: number; startDate: string;
endDate: string;
};
} }
export interface FunnelResponse { export interface FunnelResponse {
@ -28,18 +30,20 @@ export default async (
await useAuth(req, res); await useAuth(req, res);
if (req.method === 'POST') { if (req.method === 'POST') {
const { websiteId, urls, window, startAt, endAt } = req.body; const {
websiteId,
urls,
window,
dateRange: { startDate, endDate },
} = req.body;
if (!(await canViewWebsite(req.auth, websiteId))) { if (!(await canViewWebsite(req.auth, websiteId))) {
return unauthorized(res); return unauthorized(res);
} }
const startDate = new Date(+startAt);
const endDate = new Date(+endAt);
const data = await getPageviewFunnel(websiteId, { const data = await getPageviewFunnel(websiteId, {
startDate, startDate: new Date(startDate),
endDate, endDate: new Date(endDate),
urls, urls,
windowMinutes: +window, windowMinutes: +window,
}); });