Update report parameters.
parent
e9b0d3f796
commit
43f5854f15
|
@ -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}>
|
||||||
|
|
|
@ -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}
|
||||||
|
|
|
@ -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 => {
|
||||||
|
|
|
@ -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,
|
||||||
|
|
|
@ -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,
|
||||||
});
|
});
|
||||||
|
|
Loading…
Reference in New Issue