feat: add Week filter and Grid Growth % columns

This commit is contained in:
Christian Vidal Wolf
2026-01-16 11:47:59 +01:00
parent 15b44d4d91
commit 0075129d76
5 changed files with 162 additions and 87 deletions
+23 -22
View File
@@ -22,6 +22,7 @@ export interface FilterState {
asin: string[];
sku: string[];
title: string[]; // Added Title filter
week: string[]; // Added Week filter
}
export interface GrowthMetric {
@@ -30,7 +31,7 @@ export interface GrowthMetric {
previousYearSellOut: number;
sellOutGrowthValue: number;
sellOutGrowthPercentage: number;
currentYearUnits: number;
previousYearUnits: number;
unitsGrowthValue: number;
@@ -62,7 +63,7 @@ export interface SeasonalityPoint {
export interface YearlySplitData {
name: string;
// Dynamic keys like "2023", "2024" or "2023_value", "2023_units"
[key: string]: number | string;
[key: string]: number | string;
}
export interface AggregatedData {
@@ -90,27 +91,27 @@ export interface ChatMessage {
// New Interfaces for Dynamic Pivot Grid
export interface YearlyData {
sellOut: number;
units: number;
sellOut: number;
units: number;
}
export interface MonthlyPivot {
monthIndex: number;
byYear: Record<string, YearlyData>;
monthIndex: number;
byYear: Record<string, YearlyData>;
}
export interface PivotRow {
id: string;
customer: string;
line: string;
title: string; // Added Title
articleName: string;
sku: string;
asin: string;
// Dynamic buckets
totalsByYear: Record<string, YearlyData>;
months: MonthlyPivot[]; // Always 12 elements
id: string;
customer: string;
line: string;
title: string; // Added Title
articleName: string;
sku: string;
asin: string;
// Dynamic buckets
totalsByYear: Record<string, YearlyData>;
months: MonthlyPivot[]; // Always 12 elements
}
export interface TimeSeriesData {
@@ -145,22 +146,22 @@ export interface CombinedKPIs {
title: string;
line: string;
sku: string;
salesTotal: number;
unitsTotal: number;
salesAds: number;
unitsAds: number;
cost: number;
clicks: number;
impressions: number;
salesOrganic: number;
unitsOrganic: number;
paidSalesShare: number;
organicSalesShare: number;
acos: number;
tacos: number;
roas: number;