mirror of
https://github.com/chillpadclub/bedolaga-cabinet.git
synced 2026-07-30 02:23:47 +00:00
feat: add partner → campaign edges with distinct color to referral network
This commit is contained in:
@@ -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": {
|
||||||
|
|||||||
@@ -1087,6 +1087,7 @@
|
|||||||
"partner": "شریک",
|
"partner": "شریک",
|
||||||
"topReferrer": "ارجاعدهنده برتر (+۱۰)",
|
"topReferrer": "ارجاعدهنده برتر (+۱۰)",
|
||||||
"campaignUser": "از کمپین",
|
"campaignUser": "از کمپین",
|
||||||
|
"partnerCampaignEdge": "شریک → کمپین",
|
||||||
"campaignNode": "کمپین تبلیغاتی"
|
"campaignNode": "کمپین تبلیغاتی"
|
||||||
},
|
},
|
||||||
"user": {
|
"user": {
|
||||||
|
|||||||
@@ -1274,6 +1274,7 @@
|
|||||||
"partner": "Партнёр",
|
"partner": "Партнёр",
|
||||||
"topReferrer": "Топ-реферер (10+)",
|
"topReferrer": "Топ-реферер (10+)",
|
||||||
"campaignUser": "Из кампании",
|
"campaignUser": "Из кампании",
|
||||||
|
"partnerCampaignEdge": "Партнёр → РК",
|
||||||
"campaignNode": "Рекламная кампания"
|
"campaignNode": "Рекламная кампания"
|
||||||
},
|
},
|
||||||
"user": {
|
"user": {
|
||||||
|
|||||||
@@ -1087,6 +1087,7 @@
|
|||||||
"partner": "合作伙伴",
|
"partner": "合作伙伴",
|
||||||
"topReferrer": "顶级推荐人 (10+)",
|
"topReferrer": "顶级推荐人 (10+)",
|
||||||
"campaignUser": "来自活动",
|
"campaignUser": "来自活动",
|
||||||
|
"partnerCampaignEdge": "合作伙伴 → 活动",
|
||||||
"campaignNode": "广告活动"
|
"campaignNode": "广告活动"
|
||||||
},
|
},
|
||||||
"user": {
|
"user": {
|
||||||
|
|||||||
@@ -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,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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} />
|
||||||
|
|||||||
@@ -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 {
|
||||||
|
|||||||
Reference in New Issue
Block a user