Skip to content

Commit e8e3658

Browse files
authored
Parametrize framework badge code (#9859)
1 parent 3c3eea8 commit e8e3658

1 file changed

Lines changed: 52 additions & 85 deletions

File tree

Lines changed: 52 additions & 85 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
@using String = NuGetGallery.Strings;
22
@using NuGetGallery.Frameworks;
3+
34
@model PackageFrameworkCompatibilityBadges
45
@{
56
var eventName = "search-selection";
@@ -18,6 +19,7 @@
1819
itemIndex = parsedItemIndex;
1920
}
2021
}
22+
2123
@functions
2224
{
2325
public enum FrameworkContext
@@ -31,25 +33,7 @@
3133
public string GetBadgeTooltip(FrameworkContext context, PackageFrameworkCompatibilityData tfmCompatibilityData)
3234
{
3335
var badgeVersion = tfmCompatibilityData.Framework.GetBadgeVersion();
34-
string tfmType;
35-
switch (context)
36-
{
37-
case FrameworkContext.Net:
38-
tfmType = ".NET";
39-
break;
40-
case FrameworkContext.NetCore:
41-
tfmType = ".NET Core";
42-
break;
43-
case FrameworkContext.NetStandard:
44-
tfmType = ".NET Standard";
45-
break;
46-
case FrameworkContext.NetFramework:
47-
tfmType = ".NET Framework";
48-
break;
49-
default:
50-
tfmType = "";
51-
break;
52-
}
36+
string tfmType = GetFrameworkProductName(context);
5337

5438
if (badgeVersion.IsEmpty())
5539
{
@@ -65,85 +49,68 @@
6549

6650
return toolTip;
6751
}
52+
53+
public string GetBadgeDisplayName(FrameworkContext context, PackageFrameworkCompatibilityData tfmCompatibilityData)
54+
{
55+
var badgeVersion = tfmCompatibilityData.Framework.GetBadgeVersion();
56+
string displayName = GetFrameworkProductName(context);
57+
58+
if (badgeVersion.IsEmpty())
59+
{
60+
return displayName;
61+
}
62+
63+
return displayName + " " + badgeVersion;
64+
}
65+
66+
public string GetFrameworkProductName(FrameworkContext context)
67+
{
68+
switch (context)
69+
{
70+
case FrameworkContext.Net:
71+
return ".NET";
72+
case FrameworkContext.NetCore:
73+
return ".NET Core";
74+
case FrameworkContext.NetStandard:
75+
return ".NET Standard";
76+
case FrameworkContext.NetFramework:
77+
return ".NET Framework";
78+
default:
79+
return "";
80+
}
81+
}
82+
}
83+
84+
@helper DisplayFrameworkBadge(PackageFrameworkCompatibilityData tfmCompatibilityData, FrameworkContext context, int? itemIndex, string eventName)
85+
{
86+
<a href=@Url.FrameworksTab(Model.PackageId, Model.PackageVersion)
87+
@if (itemIndex.HasValue)
88+
{
89+
@: data-track="@eventName" data-track-value="@itemIndex" data-click-source="FrameworkBadge"
90+
@: data-package-id="@Model.PackageId" data-package-version="@Model.PackageVersion"
91+
@: data-badge-framework="@tfmCompatibilityData.Framework.GetShortFolderName()" data-badge-is-computed="@tfmCompatibilityData.IsComputed"
92+
}>
93+
<span class=@(tfmCompatibilityData.IsComputed ? "framework-badge-computed" : "framework-badge-asset") aria-label="@GetBadgeTooltip(context, tfmCompatibilityData)" data-content="@GetBadgeTooltip(context, tfmCompatibilityData)">
94+
@GetBadgeDisplayName(context, tfmCompatibilityData)
95+
</span>
96+
</a>
6897
}
6998

7099
<div class="framework framework-badges">
71100
@if (Model.Net != null)
72101
{
73-
<!-- .NET cannot be an empty version since the lowest version for this framework is "net5.0", if the package contains just "net" framework it will fall into .NET Framework badge instead.' -->
74-
<a href=@Url.FrameworksTab(Model.PackageId, Model.PackageVersion)
75-
@if (itemIndex.HasValue)
76-
{
77-
@:data-track="@eventName" data-track-value="@itemIndex" data-click-source="FrameworkBadge"
78-
@:data-package-id="@Model.PackageId" data-package-version="@Model.PackageVersion"
79-
@:data-badge-framework="@Model.Net.Framework.GetShortFolderName()" data-badge-is-computed="@Model.Net.IsComputed"
80-
}>
81-
<span class=@(Model.Net.IsComputed ? "framework-badge-computed" : "framework-badge-asset") aria-label="@GetBadgeTooltip(FrameworkContext.Net, Model.Net)" data-content="@GetBadgeTooltip(FrameworkContext.Net, Model.Net)">
82-
.NET @Model.Net.Framework.GetBadgeVersion()
83-
</span>
84-
</a>
102+
@DisplayFrameworkBadge(Model.Net, FrameworkContext.Net, itemIndex, eventName)
85103
}
86104
@if (Model.NetCore != null)
87105
{
88-
<a href=@Url.FrameworksTab(Model.PackageId, Model.PackageVersion)
89-
@if (itemIndex.HasValue)
90-
{
91-
@:data-track="@eventName" data-track-value="@itemIndex" data-click-source="FrameworkBadge"
92-
@:data-package-id="@Model.PackageId" data-package-version="@Model.PackageVersion"
93-
@:data-badge-framework="@Model.NetCore.Framework.GetShortFolderName()" data-badge-is-computed="@Model.NetCore.IsComputed"
94-
}>
95-
<span class=@(Model.NetCore.IsComputed ? "framework-badge-computed" : "framework-badge-asset") aria-label="@GetBadgeTooltip(FrameworkContext.NetCore, Model.NetCore)" data-content="@GetBadgeTooltip(FrameworkContext.NetCore, Model.NetCore)">
96-
@if (Model.NetCore.Framework.GetBadgeVersion().IsEmpty())
97-
{
98-
@:.NET Core
99-
}
100-
else
101-
{
102-
@:.NET Core @Model.NetCore.Framework.GetBadgeVersion()
103-
}
104-
</span>
105-
</a>
106+
@DisplayFrameworkBadge(Model.NetCore, FrameworkContext.NetCore, itemIndex, eventName)
106107
}
107108
@if (Model.NetStandard != null)
108109
{
109-
<a href=@Url.FrameworksTab(Model.PackageId, Model.PackageVersion)
110-
@if (itemIndex.HasValue)
111-
{
112-
@:data-track="@eventName" data-track-value="@itemIndex" data-click-source="FrameworkBadge"
113-
@:data-package-id="@Model.PackageId" data-package-version="@Model.PackageVersion"
114-
@:data-badge-framework="@Model.NetStandard.Framework.GetShortFolderName()" data-badge-is-computed="@Model.NetStandard.IsComputed"
115-
}>
116-
<span class=@(Model.NetStandard.IsComputed ? "framework-badge-computed" : "framework-badge-asset") aria-label="@GetBadgeTooltip(FrameworkContext.NetStandard, Model.NetStandard)" data-content="@GetBadgeTooltip(FrameworkContext.NetStandard, Model.NetStandard)">
117-
@if (Model.NetStandard.Framework.GetBadgeVersion().IsEmpty())
118-
{
119-
@:.NET Standard
120-
}
121-
else
122-
{
123-
@:.NET Standard @Model.NetStandard.Framework.GetBadgeVersion()
124-
}
125-
</span>
126-
</a>
110+
@DisplayFrameworkBadge(Model.NetStandard, FrameworkContext.NetStandard, itemIndex, eventName)
127111
}
128112
@if (Model.NetFramework != null)
129113
{
130-
<a href=@Url.FrameworksTab(Model.PackageId, Model.PackageVersion)
131-
@if (itemIndex.HasValue)
132-
{
133-
@:data-track="@eventName" data-track-value="@itemIndex" data-click-source="FrameworkBadge"
134-
@:data-package-id="@Model.PackageId" data-package-version="@Model.PackageVersion"
135-
@:data-badge-framework="@Model.NetFramework.Framework.GetShortFolderName()" data-badge-is-computed="@Model.NetFramework.IsComputed"
136-
}>
137-
<span class=@(Model.NetFramework.IsComputed ? "framework-badge-computed" : "framework-badge-asset") aria-label="@GetBadgeTooltip(FrameworkContext.NetFramework, Model.NetFramework)" data-content="@GetBadgeTooltip(FrameworkContext.NetFramework, Model.NetFramework)">
138-
@if (Model.NetFramework.Framework.GetBadgeVersion().IsEmpty())
139-
{
140-
@:.NET Framework
141-
}
142-
else
143-
{
144-
@:.NET Framework @Model.NetFramework.Framework.GetBadgeVersion()
145-
}
146-
</span>
147-
</a>
114+
@DisplayFrameworkBadge(Model.NetFramework, FrameworkContext.NetFramework, itemIndex, eventName)
148115
}
149116
</div>

0 commit comments

Comments
 (0)