feat: add partner → campaign edges with distinct color to referral network

This commit is contained in:
Fringg
2026-03-20 01:17:01 +03:00
parent 2b43a30ccc
commit 2adb0047dd
7 changed files with 19 additions and 3 deletions

View File

@@ -1253,6 +1253,7 @@
"partner": "Partner", "partner": "Partner",
"topReferrer": "Top referrer (10+)", "topReferrer": "Top referrer (10+)",
"campaignUser": "From campaign", "campaignUser": "From campaign",
"partnerCampaignEdge": "Partner → Campaign",
"campaignNode": "Ad campaign" "campaignNode": "Ad campaign"
}, },
"user": { "user": {

View File

@@ -1087,6 +1087,7 @@
"partner": "شریک", "partner": "شریک",
"topReferrer": "ارجاع‌دهنده برتر (+۱۰)", "topReferrer": "ارجاع‌دهنده برتر (+۱۰)",
"campaignUser": "از کمپین", "campaignUser": "از کمپین",
"partnerCampaignEdge": "شریک → کمپین",
"campaignNode": "کمپین تبلیغاتی" "campaignNode": "کمپین تبلیغاتی"
}, },
"user": { "user": {

View File

@@ -1274,6 +1274,7 @@
"partner": "Партнёр", "partner": "Партнёр",
"topReferrer": "Топ-реферер (10+)", "topReferrer": "Топ-реферер (10+)",
"campaignUser": "Из кампании", "campaignUser": "Из кампании",
"partnerCampaignEdge": "Партнёр → РК",
"campaignNode": "Рекламная кампания" "campaignNode": "Рекламная кампания"
}, },
"user": { "user": {

View File

@@ -1087,6 +1087,7 @@
"partner": "合作伙伴", "partner": "合作伙伴",
"topReferrer": "顶级推荐人 (10+)", "topReferrer": "顶级推荐人 (10+)",
"campaignUser": "来自活动", "campaignUser": "来自活动",
"partnerCampaignEdge": "合作伙伴 → 活动",
"campaignNode": "广告活动" "campaignNode": "广告活动"
}, },
"user": { "user": {

View File

@@ -53,8 +53,13 @@ function buildFullGraph(graphData: NetworkGraphData): Graph {
const edgeKey = `${edge.source}->${edge.target}`; const edgeKey = `${edge.source}->${edge.target}`;
if (!graph.hasEdge(edgeKey)) { if (!graph.hasEdge(edgeKey)) {
graph.addEdgeWithKey(edgeKey, edge.source, edge.target, { graph.addEdgeWithKey(edgeKey, edge.source, edge.target, {
color: edge.type === 'campaign' ? 'rgba(77, 217, 192, 0.06)' : 'rgba(255,255,255,0.03)', color:
size: 0.3, edge.type === 'partner_campaign'
? 'rgba(255, 138, 101, 0.5)'
: edge.type === 'campaign'
? 'rgba(77, 217, 192, 0.06)'
: 'rgba(255,255,255,0.03)',
size: edge.type === 'partner_campaign' ? 1.5 : 0.3,
edgeType: edge.type, edgeType: edge.type,
}); });
} }

View File

@@ -38,6 +38,13 @@ export function NetworkLegend({ className }: NetworkLegendProps) {
<span className="text-xs text-dark-300">{t(item.labelKey)}</span> <span className="text-xs text-dark-300">{t(item.labelKey)}</span>
</div> </div>
))} ))}
{/* Partner → Campaign edge */}
<div className="flex items-center gap-2">
<div className="h-0.5 w-4 shrink-0 rounded-full" style={{ backgroundColor: '#ff8a65' }} />
<span className="text-xs text-dark-300">
{t('admin.referralNetwork.legend.partnerCampaignEdge')}
</span>
</div>
{/* Campaign node with gradient to represent varying colors */} {/* Campaign node with gradient to represent varying colors */}
<div className="flex items-center gap-2"> <div className="flex items-center gap-2">
<div className="h-2.5 w-2.5 shrink-0 rounded-full" style={gradientStyle} /> <div className="h-2.5 w-2.5 shrink-0 rounded-full" style={gradientStyle} />

View File

@@ -37,7 +37,7 @@ export interface NetworkCampaignNode {
export interface NetworkEdge { export interface NetworkEdge {
source: string; source: string;
target: string; target: string;
type: 'referral' | 'campaign'; type: 'referral' | 'campaign' | 'partner_campaign';
} }
export interface NetworkGraphData { export interface NetworkGraphData {