style: always show UTM medium/campaign, clean up dead code
Show medium and campaign on every row with em-dash when empty so UTM attributes are always visible. Remove unused getSecondaryLabel function.
This commit is contained in:
@@ -99,13 +99,6 @@ export default function Campaigns({ siteId, dateRange, filters, onFilter }: Camp
|
|||||||
return <span className="text-lg flex-shrink-0">{getReferrerIcon(source)}</span>
|
return <span className="text-lg flex-shrink-0">{getReferrerIcon(source)}</span>
|
||||||
}
|
}
|
||||||
|
|
||||||
function getSecondaryLabel(item: CampaignStat): string | null {
|
|
||||||
const parts: string[] = []
|
|
||||||
if (item.medium) parts.push(item.medium)
|
|
||||||
if (item.campaign) parts.push(item.campaign)
|
|
||||||
return parts.length > 0 ? parts.join(' · ') : null
|
|
||||||
}
|
|
||||||
|
|
||||||
const handleExportCampaigns = () => {
|
const handleExportCampaigns = () => {
|
||||||
const rows = sortedFullData.length > 0 ? sortedFullData : sortedData
|
const rows = sortedFullData.length > 0 ? sortedFullData : sortedData
|
||||||
if (rows.length === 0) return
|
if (rows.length === 0) return
|
||||||
@@ -148,7 +141,6 @@ export default function Campaigns({ siteId, dateRange, filters, onFilter }: Camp
|
|||||||
) : hasData ? (
|
) : hasData ? (
|
||||||
<>
|
<>
|
||||||
{displayedData.map((item) => {
|
{displayedData.map((item) => {
|
||||||
const secondary = getSecondaryLabel(item)
|
|
||||||
return (
|
return (
|
||||||
<div
|
<div
|
||||||
key={`${item.source}|${item.medium}|${item.campaign}`}
|
key={`${item.source}|${item.medium}|${item.campaign}`}
|
||||||
@@ -161,10 +153,10 @@ export default function Campaigns({ siteId, dateRange, filters, onFilter }: Camp
|
|||||||
<div className="truncate font-medium text-sm" title={item.source}>
|
<div className="truncate font-medium text-sm" title={item.source}>
|
||||||
{getReferrerDisplayName(item.source)}
|
{getReferrerDisplayName(item.source)}
|
||||||
</div>
|
</div>
|
||||||
<div className="flex items-center gap-1.5 text-xs text-neutral-400 dark:text-neutral-500">
|
<div className="flex items-center gap-1.5 text-[11px] text-neutral-400 dark:text-neutral-500">
|
||||||
{item.medium && <span>{item.medium}</span>}
|
<span>{item.medium || '—'}</span>
|
||||||
{item.medium && item.campaign && <span>·</span>}
|
<span>·</span>
|
||||||
{item.campaign && <span className="truncate">{item.campaign}</span>}
|
<span className="truncate">{item.campaign || '—'}</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -239,7 +231,6 @@ export default function Campaigns({ siteId, dateRange, filters, onFilter }: Camp
|
|||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
{sortedFullData.map((item) => {
|
{sortedFullData.map((item) => {
|
||||||
const secondary = getSecondaryLabel(item)
|
|
||||||
return (
|
return (
|
||||||
<div
|
<div
|
||||||
key={`${item.source}|${item.medium}|${item.campaign}`}
|
key={`${item.source}|${item.medium}|${item.campaign}`}
|
||||||
@@ -251,10 +242,10 @@ export default function Campaigns({ siteId, dateRange, filters, onFilter }: Camp
|
|||||||
<div className="text-neutral-900 dark:text-white font-medium truncate text-sm" title={item.source}>
|
<div className="text-neutral-900 dark:text-white font-medium truncate text-sm" title={item.source}>
|
||||||
{getReferrerDisplayName(item.source)}
|
{getReferrerDisplayName(item.source)}
|
||||||
</div>
|
</div>
|
||||||
<div className="flex items-center gap-1.5 text-xs text-neutral-400 dark:text-neutral-500">
|
<div className="flex items-center gap-1.5 text-[11px] text-neutral-400 dark:text-neutral-500">
|
||||||
{item.medium && <span>{item.medium}</span>}
|
<span>{item.medium || '—'}</span>
|
||||||
{item.medium && item.campaign && <span>·</span>}
|
<span>·</span>
|
||||||
{item.campaign && <span className="truncate">{item.campaign}</span>}
|
<span className="truncate">{item.campaign || '—'}</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
Reference in New Issue
Block a user