Skip to content

Commit 36b34a6

Browse files
authored
Update TFM Badge Tooltips (#9840)
* Update TFM badge Tooltips. * Fix Copy Paste errors. * DotNet -> Net
1 parent c6a67b6 commit 36b34a6

3 files changed

Lines changed: 139 additions & 85 deletions

File tree

src/NuGetGallery/Strings.Designer.cs

Lines changed: 27 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/NuGetGallery/Strings.resx

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1269,4 +1269,13 @@ The {1} Team</value>
12691269
<data name="InvalidPackageEntry" xml:space="preserve">
12701270
<value>The package is invalid and cannot be uploaded. The package entry for '{0}' is not valid.</value>
12711271
</data>
1272+
<data name="SupportedFrameworks_Asset_Tooltip" xml:space="preserve">
1273+
<value>This package targets {0}. The package is compatible with this framework or higher.</value>
1274+
</data>
1275+
<data name="SupportedFrameworks_Computed_Tooltip" xml:space="preserve">
1276+
<value>This package is compatible with {0} or higher.</value>
1277+
</data>
1278+
<data name="SupportedFrameworks_EmptyVersion_Template_Tooltip" xml:space="preserve">
1279+
<value>This package is compatible with all versions of {0}.</value>
1280+
</data>
12721281
</root>

src/NuGetGallery/Views/Packages/_SupportedFrameworksBadges.cshtml

Lines changed: 103 additions & 85 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,54 @@
1818
itemIndex = parsedItemIndex;
1919
}
2020
}
21+
@functions
22+
{
23+
public enum FrameworkContext
24+
{
25+
Net,
26+
NetCore,
27+
NetStandard,
28+
NetFramework
29+
}
30+
31+
public string GetBadgeTooltip(FrameworkContext context, PackageFrameworkCompatibilityData tfmCompatibilityData)
32+
{
33+
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+
}
53+
54+
if (badgeVersion.IsEmpty())
55+
{
56+
return string.Format(String.SupportedFrameworks_EmptyVersion_Template_Tooltip, tfmType);
57+
}
58+
59+
var toolTipTemplate = tfmCompatibilityData.IsComputed
60+
? String.SupportedFrameworks_Computed_Tooltip
61+
: String.SupportedFrameworks_Asset_Tooltip;
62+
63+
var tfmName = tfmType + " " + badgeVersion;
64+
var toolTip = string.Format(toolTipTemplate, tfmName);
65+
66+
return toolTip;
67+
}
68+
}
2169

2270
<div class="framework framework-badges">
2371
@if (Model.Net != null)
@@ -30,102 +78,72 @@
3078
@:data-package-id="@Model.PackageId" data-package-version="@Model.PackageVersion"
3179
@:data-badge-framework="@Model.Net.Framework.GetShortFolderName()" data-badge-is-computed="@Model.Net.IsComputed"
3280
}>
33-
<span class=@(Model.Net.IsComputed ? "framework-badge-computed" : "framework-badge-asset") aria-label="@String.SupportedFrameworks_Tooltip" data-content="@String.SupportedFrameworks_Tooltip">
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)">
3482
.NET @Model.Net.Framework.GetBadgeVersion()
3583
</span>
3684
</a>
3785
}
3886
@if (Model.NetCore != null)
3987
{
40-
if (Model.NetCore.Framework.GetBadgeVersion().IsEmpty())
41-
{
42-
<a href=@Url.FrameworksTab(Model.PackageId, Model.PackageVersion)
43-
@if (itemIndex.HasValue)
44-
{
45-
@:data-track="@eventName" data-track-value="@itemIndex" data-click-source="FrameworkBadge"
46-
@:data-package-id="@Model.PackageId" data-package-version="@Model.PackageVersion"
47-
@:data-badge-framework="@Model.NetCore.Framework.GetShortFolderName()" data-badge-is-computed="@Model.NetCore.IsComputed"
48-
}>
49-
<span class=@(Model.NetCore.IsComputed ? "framework-badge-computed" : "framework-badge-asset") aria-label="@String.SupportedFrameworks_EmptyVersionTooltip" data-content="@String.SupportedFrameworks_EmptyVersionTooltip">
50-
.NET Core
51-
</span>
52-
</a>
53-
}
54-
else
55-
{
56-
<a href=@Url.FrameworksTab(Model.PackageId, Model.PackageVersion)
57-
@if (itemIndex.HasValue)
58-
{
59-
@:data-track="@eventName" data-track-value="@itemIndex" data-click-source="FrameworkBadge"
60-
@:data-package-id="@Model.PackageId" data-package-version="@Model.PackageVersion"
61-
@:data-badge-framework="@Model.NetCore.Framework.GetShortFolderName()" data-badge-is-computed="@Model.NetCore.IsComputed"
62-
}>
63-
<span class=@(Model.NetCore.IsComputed ? "framework-badge-computed" : "framework-badge-asset") aria-label="@String.SupportedFrameworks_Tooltip" data-content="@String.SupportedFrameworks_Tooltip">
64-
.NET Core @Model.NetCore.Framework.GetBadgeVersion()
65-
</span>
66-
</a>
67-
}
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>
68106
}
69107
@if (Model.NetStandard != null)
70108
{
71-
if (Model.NetStandard.Framework.GetBadgeVersion().IsEmpty())
72-
{
73-
<a href=@Url.FrameworksTab(Model.PackageId, Model.PackageVersion)
74-
@if (itemIndex.HasValue)
75-
{
76-
@:data-track="@eventName" data-track-value="@itemIndex" data-click-source="FrameworkBadge"
77-
@:data-package-id="@Model.PackageId" data-package-version="@Model.PackageVersion"
78-
@:data-badge-framework="@Model.NetStandard.Framework.GetShortFolderName()" data-badge-is-computed="@Model.NetStandard.IsComputed"
79-
}>
80-
<span class=@(Model.NetStandard.IsComputed ? "framework-badge-computed" : "framework-badge-asset") aria-label="@String.SupportedFrameworks_EmptyVersionTooltip" data-content="@String.SupportedFrameworks_EmptyVersionTooltip">
81-
.NET Standard
82-
</span>
83-
</a>
84-
}
85-
else
86-
{
87-
<a href=@Url.FrameworksTab(Model.PackageId, Model.PackageVersion)
88-
@if (itemIndex.HasValue)
89-
{
90-
@:data-track="@eventName" data-track-value="@itemIndex" data-click-source="FrameworkBadge"
91-
@:data-package-id="@Model.PackageId" data-package-version="@Model.PackageVersion"
92-
@:data-badge-framework="@Model.NetStandard.Framework.GetShortFolderName()" data-badge-is-computed="@Model.NetStandard.IsComputed"
93-
}>
94-
<span class=@(Model.NetStandard.IsComputed ? "framework-badge-computed" : "framework-badge-asset") aria-label="@String.SupportedFrameworks_Tooltip" data-content="@String.SupportedFrameworks_Tooltip">
95-
.NET Standard @Model.NetStandard.Framework.GetBadgeVersion()
96-
</span>
97-
</a>
98-
}
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>
99127
}
100128
@if (Model.NetFramework != null)
101129
{
102-
if (Model.NetFramework.Framework.GetBadgeVersion().IsEmpty())
103-
{
104-
<a href=@Url.FrameworksTab(Model.PackageId, Model.PackageVersion)
105-
@if (itemIndex.HasValue)
106-
{
107-
@:data-track="@eventName" data-track-value="@itemIndex" data-click-source="FrameworkBadge"
108-
@:data-package-id="@Model.PackageId" data-package-version="@Model.PackageVersion"
109-
@:data-badge-framework="@Model.NetFramework.Framework.GetShortFolderName()" data-badge-is-computed="@Model.NetFramework.IsComputed"
110-
}>
111-
<span class=@(Model.NetFramework.IsComputed ? "framework-badge-computed" : "framework-badge-asset") aria-label="@String.SupportedFrameworks_EmptyVersionTooltip" data-content="@String.SupportedFrameworks_EmptyVersionTooltip">
112-
.NET Framework
113-
</span>
114-
</a>
115-
}
116-
else
117-
{
118-
<a href=@Url.FrameworksTab(Model.PackageId, Model.PackageVersion)
119-
@if (itemIndex.HasValue)
120-
{
121-
@:data-track="@eventName" data-track-value="@itemIndex" data-click-source="FrameworkBadge"
122-
@:data-package-id="@Model.PackageId" data-package-version="@Model.PackageVersion"
123-
@:data-badge-framework="@Model.NetFramework.Framework.GetShortFolderName()" data-badge-is-computed="@Model.NetFramework.IsComputed"
124-
}>
125-
<span class=@(Model.NetFramework.IsComputed ? "framework-badge-computed" : "framework-badge-asset") aria-label="@String.SupportedFrameworks_Tooltip" data-content="@String.SupportedFrameworks_Tooltip">
126-
.NET Framework @Model.NetFramework.Framework.GetBadgeVersion()
127-
</span>
128-
</a>
129-
}
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>
130148
}
131149
</div>

0 commit comments

Comments
 (0)