Update event type filters
This commit is contained in:
@@ -1300,6 +1300,91 @@ const EventFeed = ({
|
||||
});
|
||||
};
|
||||
|
||||
const handleEventTypeClick = (metricId) => {
|
||||
setActiveEventTypes(prev => {
|
||||
// If clicking the only active filter, reset to all active
|
||||
const activeCount = Object.values(prev).filter(Boolean).length;
|
||||
if (activeCount === 1 && prev[metricId]) {
|
||||
return {
|
||||
[METRIC_IDS.PLACED_ORDER]: true,
|
||||
[METRIC_IDS.SHIPPED_ORDER]: true,
|
||||
[METRIC_IDS.ACCOUNT_CREATED]: true,
|
||||
[METRIC_IDS.CANCELED_ORDER]: true,
|
||||
[METRIC_IDS.PAYMENT_REFUNDED]: true,
|
||||
[METRIC_IDS.NEW_BLOG_POST]: true,
|
||||
};
|
||||
}
|
||||
// Otherwise, set only this filter to true
|
||||
return {
|
||||
[METRIC_IDS.PLACED_ORDER]: metricId === METRIC_IDS.PLACED_ORDER,
|
||||
[METRIC_IDS.SHIPPED_ORDER]: metricId === METRIC_IDS.SHIPPED_ORDER,
|
||||
[METRIC_IDS.ACCOUNT_CREATED]: metricId === METRIC_IDS.ACCOUNT_CREATED,
|
||||
[METRIC_IDS.CANCELED_ORDER]: metricId === METRIC_IDS.CANCELED_ORDER,
|
||||
[METRIC_IDS.PAYMENT_REFUNDED]: metricId === METRIC_IDS.PAYMENT_REFUNDED,
|
||||
[METRIC_IDS.NEW_BLOG_POST]: metricId === METRIC_IDS.NEW_BLOG_POST,
|
||||
};
|
||||
});
|
||||
};
|
||||
|
||||
const EventTypeTooltipContent = () => (
|
||||
<div className="grid gap-2">
|
||||
<div className="flex items-center justify-between gap-4">
|
||||
<span className="flex items-center gap-2">
|
||||
<Package className="h-4 w-4" />
|
||||
Orders
|
||||
</span>
|
||||
<Badge variant="secondary" className="bg-muted">
|
||||
{counts.eventTypes[METRIC_IDS.PLACED_ORDER].toLocaleString()}
|
||||
</Badge>
|
||||
</div>
|
||||
<div className="flex items-center justify-between gap-4">
|
||||
<span className="flex items-center gap-2">
|
||||
<Truck className="h-4 w-4" />
|
||||
Shipments
|
||||
</span>
|
||||
<Badge variant="secondary" className="bg-muted">
|
||||
{counts.eventTypes[METRIC_IDS.SHIPPED_ORDER].toLocaleString()}
|
||||
</Badge>
|
||||
</div>
|
||||
<div className="flex items-center justify-between gap-4">
|
||||
<span className="flex items-center gap-2">
|
||||
<UserPlus className="h-4 w-4" />
|
||||
Accounts
|
||||
</span>
|
||||
<Badge variant="secondary" className="bg-muted">
|
||||
{counts.eventTypes[METRIC_IDS.ACCOUNT_CREATED].toLocaleString()}
|
||||
</Badge>
|
||||
</div>
|
||||
<div className="flex items-center justify-between gap-4">
|
||||
<span className="flex items-center gap-2">
|
||||
<XCircle className="h-4 w-4" />
|
||||
Cancellations
|
||||
</span>
|
||||
<Badge variant="secondary" className="bg-muted">
|
||||
{counts.eventTypes[METRIC_IDS.CANCELED_ORDER].toLocaleString()}
|
||||
</Badge>
|
||||
</div>
|
||||
<div className="flex items-center justify-between gap-4">
|
||||
<span className="flex items-center gap-2">
|
||||
<DollarSign className="h-4 w-4" />
|
||||
Refunds
|
||||
</span>
|
||||
<Badge variant="secondary" className="bg-muted">
|
||||
{counts.eventTypes[METRIC_IDS.PAYMENT_REFUNDED].toLocaleString()}
|
||||
</Badge>
|
||||
</div>
|
||||
<div className="flex items-center justify-between gap-4">
|
||||
<span className="flex items-center gap-2">
|
||||
<FileText className="h-4 w-4" />
|
||||
Blog Posts
|
||||
</span>
|
||||
<Badge variant="secondary" className="bg-muted">
|
||||
{counts.eventTypes[METRIC_IDS.NEW_BLOG_POST].toLocaleString()}
|
||||
</Badge>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
|
||||
return (
|
||||
<Card className="flex flex-col h-full bg-white dark:bg-gray-900/60 backdrop-blur-sm">
|
||||
<CardHeader className="p-6 pb-0">
|
||||
@@ -1319,22 +1404,14 @@ const EventFeed = ({
|
||||
<Button
|
||||
variant={activeEventTypes[METRIC_IDS.PLACED_ORDER] ? "default" : "outline"}
|
||||
size="sm"
|
||||
onClick={() => setActiveEventTypes(prev => ({
|
||||
...prev,
|
||||
[METRIC_IDS.PLACED_ORDER]: !prev[METRIC_IDS.PLACED_ORDER]
|
||||
}))}
|
||||
onClick={() => handleEventTypeClick(METRIC_IDS.PLACED_ORDER)}
|
||||
className="h-8 w-8 p-0"
|
||||
>
|
||||
<Package className="h-4 w-4" />
|
||||
</Button>
|
||||
</TooltipTrigger>
|
||||
<TooltipContent>
|
||||
<div className="flex items-center gap-2">
|
||||
<span>Orders</span>
|
||||
<span className="text-muted-foreground">
|
||||
{counts.eventTypes[METRIC_IDS.PLACED_ORDER]}
|
||||
</span>
|
||||
</div>
|
||||
<EventTypeTooltipContent />
|
||||
</TooltipContent>
|
||||
</Tooltip>
|
||||
</TooltipProvider>
|
||||
@@ -1345,22 +1422,14 @@ const EventFeed = ({
|
||||
<Button
|
||||
variant={activeEventTypes[METRIC_IDS.SHIPPED_ORDER] ? "default" : "outline"}
|
||||
size="sm"
|
||||
onClick={() => setActiveEventTypes(prev => ({
|
||||
...prev,
|
||||
[METRIC_IDS.SHIPPED_ORDER]: !prev[METRIC_IDS.SHIPPED_ORDER]
|
||||
}))}
|
||||
onClick={() => handleEventTypeClick(METRIC_IDS.SHIPPED_ORDER)}
|
||||
className="h-8 w-8 p-0"
|
||||
>
|
||||
<Truck className="h-4 w-4" />
|
||||
</Button>
|
||||
</TooltipTrigger>
|
||||
<TooltipContent>
|
||||
<div className="flex items-center gap-2">
|
||||
<span>Shipments</span>
|
||||
<span className="text-muted-foreground">
|
||||
{counts.eventTypes[METRIC_IDS.SHIPPED_ORDER]}
|
||||
</span>
|
||||
</div>
|
||||
<EventTypeTooltipContent />
|
||||
</TooltipContent>
|
||||
</Tooltip>
|
||||
</TooltipProvider>
|
||||
@@ -1371,22 +1440,14 @@ const EventFeed = ({
|
||||
<Button
|
||||
variant={activeEventTypes[METRIC_IDS.ACCOUNT_CREATED] ? "default" : "outline"}
|
||||
size="sm"
|
||||
onClick={() => setActiveEventTypes(prev => ({
|
||||
...prev,
|
||||
[METRIC_IDS.ACCOUNT_CREATED]: !prev[METRIC_IDS.ACCOUNT_CREATED]
|
||||
}))}
|
||||
onClick={() => handleEventTypeClick(METRIC_IDS.ACCOUNT_CREATED)}
|
||||
className="h-8 w-8 p-0"
|
||||
>
|
||||
<UserPlus className="h-4 w-4" />
|
||||
</Button>
|
||||
</TooltipTrigger>
|
||||
<TooltipContent>
|
||||
<div className="flex items-center gap-2">
|
||||
<span>Accounts</span>
|
||||
<span className="text-muted-foreground">
|
||||
{counts.eventTypes[METRIC_IDS.ACCOUNT_CREATED]}
|
||||
</span>
|
||||
</div>
|
||||
<EventTypeTooltipContent />
|
||||
</TooltipContent>
|
||||
</Tooltip>
|
||||
</TooltipProvider>
|
||||
@@ -1397,22 +1458,14 @@ const EventFeed = ({
|
||||
<Button
|
||||
variant={activeEventTypes[METRIC_IDS.CANCELED_ORDER] ? "default" : "outline"}
|
||||
size="sm"
|
||||
onClick={() => setActiveEventTypes(prev => ({
|
||||
...prev,
|
||||
[METRIC_IDS.CANCELED_ORDER]: !prev[METRIC_IDS.CANCELED_ORDER]
|
||||
}))}
|
||||
onClick={() => handleEventTypeClick(METRIC_IDS.CANCELED_ORDER)}
|
||||
className="h-8 w-8 p-0"
|
||||
>
|
||||
<XCircle className="h-4 w-4" />
|
||||
</Button>
|
||||
</TooltipTrigger>
|
||||
<TooltipContent>
|
||||
<div className="flex items-center gap-2">
|
||||
<span>Cancellations</span>
|
||||
<span className="text-muted-foreground">
|
||||
{counts.eventTypes[METRIC_IDS.CANCELED_ORDER]}
|
||||
</span>
|
||||
</div>
|
||||
<EventTypeTooltipContent />
|
||||
</TooltipContent>
|
||||
</Tooltip>
|
||||
</TooltipProvider>
|
||||
@@ -1423,22 +1476,14 @@ const EventFeed = ({
|
||||
<Button
|
||||
variant={activeEventTypes[METRIC_IDS.PAYMENT_REFUNDED] ? "default" : "outline"}
|
||||
size="sm"
|
||||
onClick={() => setActiveEventTypes(prev => ({
|
||||
...prev,
|
||||
[METRIC_IDS.PAYMENT_REFUNDED]: !prev[METRIC_IDS.PAYMENT_REFUNDED]
|
||||
}))}
|
||||
onClick={() => handleEventTypeClick(METRIC_IDS.PAYMENT_REFUNDED)}
|
||||
className="h-8 w-8 p-0"
|
||||
>
|
||||
<DollarSign className="h-4 w-4" />
|
||||
</Button>
|
||||
</TooltipTrigger>
|
||||
<TooltipContent>
|
||||
<div className="flex items-center gap-2">
|
||||
<span>Refunds</span>
|
||||
<span className="text-muted-foreground">
|
||||
{counts.eventTypes[METRIC_IDS.PAYMENT_REFUNDED]}
|
||||
</span>
|
||||
</div>
|
||||
<EventTypeTooltipContent />
|
||||
</TooltipContent>
|
||||
</Tooltip>
|
||||
</TooltipProvider>
|
||||
@@ -1449,22 +1494,14 @@ const EventFeed = ({
|
||||
<Button
|
||||
variant={activeEventTypes[METRIC_IDS.NEW_BLOG_POST] ? "default" : "outline"}
|
||||
size="sm"
|
||||
onClick={() => setActiveEventTypes(prev => ({
|
||||
...prev,
|
||||
[METRIC_IDS.NEW_BLOG_POST]: !prev[METRIC_IDS.NEW_BLOG_POST]
|
||||
}))}
|
||||
onClick={() => handleEventTypeClick(METRIC_IDS.NEW_BLOG_POST)}
|
||||
className="h-8 w-8 p-0"
|
||||
>
|
||||
<FileText className="h-4 w-4" />
|
||||
</Button>
|
||||
</TooltipTrigger>
|
||||
<TooltipContent>
|
||||
<div className="flex items-center gap-2">
|
||||
<span>Blog Posts</span>
|
||||
<span className="text-muted-foreground">
|
||||
{counts.eventTypes[METRIC_IDS.NEW_BLOG_POST]}
|
||||
</span>
|
||||
</div>
|
||||
<EventTypeTooltipContent />
|
||||
</TooltipContent>
|
||||
</Tooltip>
|
||||
</TooltipProvider>
|
||||
|
||||
Reference in New Issue
Block a user