mirror of
https://github.com/christianvidalwolf-prog/CrazeAnalytix.git
synced 2026-08-03 12:15:23 +02:00
feat(vendor): switch BSR charts to daily resolution for smoother trend lines
- Add date? field to BSRRecord (ISO string YYYY-MM-DD) - processBSRExcel now extracts and stores the Date column as an ISO date (handles both Excel serial numbers and string dates) - VendorDataView groups chart data by date (daily) when dates are available, falling back to weekly buckets — eliminates straight-line charts caused by only 2 weekly data points Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 4.6
parent
702bb021f8
commit
7f5aa1b812
@@ -682,15 +682,25 @@ export const processBSRExcel = async (fileOrBuffer: File | ArrayBuffer): Promise
|
||||
|
||||
// Week: try direct week column first, else derive from Date column
|
||||
let week = 0;
|
||||
let isoDate: string | undefined;
|
||||
const weekRaw = getColumnValue(row, ['week', 'woche', 'semana', 'week number', 'weeknumber', 'Week', 'Week Number']);
|
||||
if (weekRaw) {
|
||||
week = parseInt(String(weekRaw).match(/\d+/)?.[0] || '0', 10);
|
||||
}
|
||||
if (!week) {
|
||||
const dateRaw = getColumnValue(row, ['date', 'fecha', 'datum', 'Date']);
|
||||
if (dateRaw) {
|
||||
const d = new Date(dateRaw);
|
||||
if (!isNaN(d.getTime())) {
|
||||
const dateRaw = getColumnValue(row, ['date', 'fecha', 'datum', 'Date']);
|
||||
if (dateRaw) {
|
||||
// Handle Excel serial date numbers
|
||||
let d: Date;
|
||||
const dateNum = Number(dateRaw);
|
||||
if (!isNaN(dateNum) && dateNum > 1000) {
|
||||
// Excel serial date: days since 1899-12-30
|
||||
d = new Date((dateNum - 25569) * 86400 * 1000);
|
||||
} else {
|
||||
d = new Date(dateRaw);
|
||||
}
|
||||
if (!isNaN(d.getTime())) {
|
||||
isoDate = d.toISOString().slice(0, 10); // "YYYY-MM-DD"
|
||||
if (!week) {
|
||||
// ISO week number
|
||||
const tmp = new Date(d);
|
||||
tmp.setHours(0, 0, 0, 0);
|
||||
@@ -704,6 +714,7 @@ export const processBSRExcel = async (fileOrBuffer: File | ArrayBuffer): Promise
|
||||
|
||||
allData.push({
|
||||
week,
|
||||
date: isoDate,
|
||||
market: String(marketRaw).trim(),
|
||||
asin: String(asinRaw).trim(),
|
||||
topLevelBSR: parseIntSafe(getColumnValue(row, [
|
||||
|
||||
Reference in New Issue
Block a user