feat: global ui & functional update

This commit is contained in:
ivannoskov
2026-01-21 22:43:54 +03:00
parent 8958d89d12
commit 619fd5c1ef
32 changed files with 3803 additions and 1325 deletions

View File

@@ -113,14 +113,15 @@ export const demoApi = {
}
if (params?.placement_channel_id) {
items = items.filter(
(p) => p.placement_channel_id === params.placement_channel_id
(p) => p.channel.id === params.placement_channel_id
);
}
if (params?.creative_id) {
items = items.filter((p) => p.creative_id === params.creative_id);
}
// Filter out cancelled/archived placements
if (!params?.include_archived) {
items = items.filter((p) => p.status === "active");
items = items.filter((p) => p.status !== "Отмена" && p.status !== "Неактуально");
}
return Promise.resolve(paginate(items));
},
@@ -145,18 +146,18 @@ export const demoApi = {
// Filter by project if specified
if (params?.project_id) {
const projectPlacements = demoPlacements.filter(
(p) => p.project_id === params.project_id && p.status === "active"
(p) => p.project_id === params.project_id && p.status !== "Отмена" && p.status !== "Неактуально"
);
const totalCost = projectPlacements.reduce(
(sum, p) => sum + (p.cost || 0),
(sum, p) => sum + (p.details?.cost?.value || 0),
0
);
const totalSubs = projectPlacements.reduce(
(sum, p) => sum + (p.subscriptions_count || 0),
(sum, p) => sum + (p.placement_post?.subscriptions_count || 0),
0
);
const totalViews = projectPlacements.reduce(
(sum, p) => sum + (p.views_count || 0),
(sum, p) => sum + (p.placement_post?.views_count || 0),
0
);
@@ -167,6 +168,7 @@ export const demoApi = {
avg_cpf: totalSubs > 0 ? totalCost / totalSubs : null,
avg_cpm: totalViews > 0 ? (totalCost / totalViews) * 1000 : null,
chart_data: demoSpendingAnalytics.chart_data.slice(0, 3),
placements_count: 12,
} as SpendingAnalytics);
}
return Promise.resolve(demoSpendingAnalytics);
@@ -187,7 +189,7 @@ export const demoApi = {
const projectPlacementChannelIds = new Set(
demoPlacements
.filter((p) => p.project_id === params.project_id)
.map((p) => p.placement_channel_id)
.map((p) => p.channel.id)
);
items = items.filter((a) => projectPlacementChannelIds.has(a.channel_id));
}