Skip to content

Commit cbb24eb

Browse files
Locate CrossLanguage Packages automatically
1 parent b83cda9 commit cbb24eb

15 files changed

Lines changed: 103 additions & 130 deletions

src/dotnet/APIView/APIViewWeb/Client/css/shared/bootstraps-overrides.scss

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -114,12 +114,19 @@
114114
border-bottom: 1px solid var(--border-color) !important;
115115
}
116116

117-
.border-start {
118-
border-left: 1px solid var(--border-color) !important;
117+
.breadcrumb {
118+
margin-bottom: 0rem;
119+
}
120+
.breadcrumb-item + .breadcrumb-item::before {
121+
margin-top: 0rem;
119122
}
120123

121-
.border-end {
122-
border-right: 1px solid var(--border-color) !important;
124+
.breadcrumb-item + .breadcrumb-item::before {
125+
padding-right: 0.25rem;
126+
}
127+
128+
.breadcrumb-item + .breadcrumb-item {
129+
padding-left: 0.25rem;
123130
}
124131

125132
.list-group-item {

src/dotnet/APIView/APIViewWeb/Client/src/pages/review.ts

Lines changed: 0 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -255,22 +255,6 @@ $(() => {
255255

256256
/* CROSS LANGUAGE VIEW
257257
--------------------------------------------------------------------------------------------------------------------------------------------------------*/
258-
$("#load-cross-language-view").on("click", function (e: JQuery.ClickEvent) {
259-
const crossLangusges = $(".cross-lang-view-switch");
260-
const uri = new URL(window.location.href);
261-
const urlParams = new URLSearchParams(uri.search);
262-
urlParams.delete("crossLanguage");
263-
crossLangusges.each(function (index, value) {
264-
const language = value.querySelector("label")?.textContent;
265-
const isChecked = value.querySelector("input")?.checked;
266-
if (isChecked) {
267-
urlParams.append("crossLanguage", encodeURIComponent(language!));
268-
}
269-
});
270-
uri.search = urlParams.toString();
271-
window.location.href = uri.toString()
272-
})
273-
274258
// Load Cross Language Panel
275259
$(".cl-line-no").on("click", function (e: JQuery.ClickEvent) {
276260
e.preventDefault();

src/dotnet/APIView/APIViewWeb/Helpers/HelperModelBinders.cs

Lines changed: 0 additions & 24 deletions
This file was deleted.

src/dotnet/APIView/APIViewWeb/Helpers/LanguageServiceHelpers.cs

Lines changed: 0 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -12,52 +12,6 @@ public class LanguageServiceHelpers
1212
{
1313
public static string[] SupportedLanguages = new string[] { "C", "C#", "C++", "Go", "Java", "JavaScript", "Json", "Kotlin", "Python", "Swagger", "Swift", "TypeSpec", "Xml" };
1414

15-
public static string GetCorrespondingPackageName(string sourceLanguage, string targetlanguage, string packageName)
16-
{
17-
if (packageName.Equals("widgetmanagerclient") || packageName.Equals("Contoso.WidgetManager") || packageName.Equals("com.azure:contoso-widgetmanager"))
18-
{
19-
var result = string.Empty;
20-
switch (targetlanguage)
21-
{
22-
case "TypeSpec":
23-
result = "Contoso.WidgetManager";
24-
break;
25-
case "Java":
26-
result = "com.azure:contoso-widgetmanager";
27-
break;
28-
case "Python":
29-
result = "widgetmanagerclient";
30-
break;
31-
}
32-
return result;
33-
}
34-
else {
35-
var result = string.Empty;
36-
switch (targetlanguage)
37-
{
38-
case "C#":
39-
result = "Azure.Identity";
40-
break;
41-
case "C++":
42-
result = "azure-identity-cpp";
43-
break;
44-
case "Go":
45-
result = "azidentity";
46-
break;
47-
case "Java":
48-
result = "com.azure:azure-identity";
49-
break;
50-
case "JavaScript":
51-
result = "@azure/identity";
52-
break;
53-
case "Python":
54-
result = "azure-identity";
55-
break;
56-
}
57-
return result;
58-
}
59-
}
60-
6115
public static IEnumerable<string> MapLanguageAliases(IEnumerable<string> languages)
6216
{
6317
HashSet<string> result = new HashSet<string>();

src/dotnet/APIView/APIViewWeb/Managers/APIRevisionsManager.cs

Lines changed: 32 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -793,6 +793,38 @@ public async Task<IEnumerable<APIRevisionListItemModel>> GetAPIRevisionsAssigned
793793
return await _apiRevisionsRepository.GetAPIRevisionsAssignedToUser(userName);
794794
}
795795

796+
public async Task<APIRevisionListItemModel> UpdateRevisionMetadataAsync(APIRevisionListItemModel revision, string packageVersion, string label, bool setReleaseTag = false)
797+
{
798+
// Do not update package version metadata once a revision is marked as released
799+
// This is to avoid updating metadata when a request is processed with a new version (auto incremented version change) right after a version is released
800+
// without any API changes.
801+
if (revision.IsReleased)
802+
return revision;
803+
804+
if (packageVersion != null && !packageVersion.Equals(revision.Files[0].PackageVersion))
805+
{
806+
revision.Files[0].PackageVersion = packageVersion;
807+
revision.Label = label;
808+
}
809+
810+
if (setReleaseTag)
811+
{
812+
revision.IsReleased = true;
813+
revision.ReleasedOn = DateTime.UtcNow;
814+
}
815+
await _apiRevisionsRepository.UpsertAPIRevisionAsync(revision);
816+
return revision;
817+
}
818+
819+
/// <summary>
820+
/// Get ReviewIds of Language corresponding Review linked by CrossLanguagePackageId
821+
/// </summary>
822+
/// <param name="crossLanguagePackageId"></param>
823+
/// <returns></returns>
824+
public async Task<IEnumerable<string>> GetReviewIdsOfLanguageCorrespondingReviewAsync(string crossLanguagePackageId) {
825+
return await _apiRevisionsRepository.GetReviewIdsOfLanguageCorrespondingReviewAsync(crossLanguagePackageId);
826+
}
827+
796828
/// <summary>
797829
/// Generate the Revision on a DevOps Pipeline
798830
/// </summary>
@@ -855,28 +887,5 @@ private async Task GenerateAPIRevisionInExternalResource(ReviewListItemModel rev
855887
}
856888
return result;
857889
}
858-
859-
public async Task<APIRevisionListItemModel> UpdateRevisionMetadataAsync(APIRevisionListItemModel revision, string packageVersion, string label, bool setReleaseTag = false)
860-
{
861-
// Do not update package version metadata once a revision is marked as released
862-
// This is to avoid updating metadata when a request is processed with a new version (auto incremented version change) right after a version is released
863-
// without any API changes.
864-
if (revision.IsReleased)
865-
return revision;
866-
867-
if (packageVersion != null && !packageVersion.Equals(revision.Files[0].PackageVersion))
868-
{
869-
revision.Files[0].PackageVersion = packageVersion;
870-
revision.Label = label;
871-
}
872-
873-
if (setReleaseTag)
874-
{
875-
revision.IsReleased = true;
876-
revision.ReleasedOn = DateTime.UtcNow;
877-
}
878-
await _apiRevisionsRepository.UpsertAPIRevisionAsync(revision);
879-
return revision;
880-
}
881890
}
882891
}

src/dotnet/APIView/APIViewWeb/Managers/Interfaces/IAPIRevisionsManager.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,5 +41,6 @@ public Task<APIRevisionListItemModel> CreateAPIRevisionAsync(string userName, st
4141
public Task AssignReviewersToAPIRevisionAsync(ClaimsPrincipal User, string apiRevisionId, HashSet<string> reviewers);
4242
public Task<IEnumerable<APIRevisionListItemModel>> GetAPIRevisionsAssignedToUser(string userName);
4343
public Task<APIRevisionListItemModel> UpdateRevisionMetadataAsync(APIRevisionListItemModel revision, string packageVersion, string label, bool setReleaseTag = false);
44+
public Task<IEnumerable<string>> GetReviewIdsOfLanguageCorrespondingReviewAsync(string crossLanguagePackageId);
4445
}
4546
}

src/dotnet/APIView/APIViewWeb/Managers/Interfaces/IReviewManager.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ public interface IReviewManager
1212
public Task<(IEnumerable<ReviewListItemModel> Reviews, int TotalCount, int TotalPages, int CurrentPage, int? PreviousPage, int? NextPage)> GetPagedReviewListAsync(
1313
IEnumerable<string> search, IEnumerable<string> languages, bool? isClosed, bool? isApproved, int offset, int limit, string orderBy);
1414
public Task<ReviewListItemModel> GetReviewAsync(ClaimsPrincipal user, string id);
15+
public Task<IEnumerable<ReviewListItemModel>> GetReviewsAsync(IEnumerable<string> reviewIds, bool? isClosed = null);
1516
public Task<LegacyReviewModel> GetLegacyReviewAsync(ClaimsPrincipal user, string id);
1617
public Task<ReviewListItemModel> CreateReviewAsync(string packageName, string language, bool isClosed = true);
1718
public Task SoftDeleteReviewAsync(ClaimsPrincipal user, string id);

src/dotnet/APIView/APIViewWeb/Managers/ReviewManager.cs

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,17 @@ public async Task<ReviewListItemModel> GetReviewAsync(ClaimsPrincipal user, stri
126126
return review;
127127
}
128128

129+
/// <summary>
130+
/// GEt Reviews using List of ReviewIds
131+
/// </summary>
132+
/// <param name="reviewIds"></param>
133+
/// <param name="isClosed"></param>
134+
/// <returns></returns>
135+
public async Task<IEnumerable<ReviewListItemModel>> GetReviewsAsync(IEnumerable<string> reviewIds, bool? isClosed = null)
136+
{
137+
return await _reviewsRepository.GetReviewsAsync(reviewIds, isClosed);
138+
}
139+
129140
/// <summary>
130141
/// Get Legacy Reviews from old database
131142
/// </summary>

src/dotnet/APIView/APIViewWeb/Pages/Assemblies/Review.cshtml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -527,13 +527,13 @@
527527
}
528528
</tbody>
529529
</table>
530-
<partial name="_CrossLanguageViewPartial" model="@Model.CrossLanguage" />
530+
<partial name="_CrossLanguageViewPartial" model="@Model.ReviewContent.CrossLanguageViewContent.Keys" />
531531
</div>
532532
</div>
533-
@if (Model.CrossLanguage.Any())
533+
@if (Model.ReviewContent.CrossLanguageViewContent.Any())
534534
{
535535
<div class="row d-none" id="cross-language-code-lines">
536-
@foreach(var language in Model.CrossLanguage)
536+
@foreach (var language in Model.ReviewContent.CrossLanguageViewContent.Keys)
537537
{
538538
var reviewcontent = Model.ReviewContent.CrossLanguageViewContent[language];
539539
var langId = PageModelHelpers.GetLanguageCssSafeName(language);

src/dotnet/APIView/APIViewWeb/Pages/Assemblies/Review.cshtml.cs

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -70,10 +70,6 @@ public ReviewPageModel(
7070
public bool ShowDiffOnly { get; set; }
7171
[BindProperty(Name = "notificationMessage", SupportsGet = true)]
7272
public string NotificationMessage { get; set; }
73-
[BindProperty(Name = "crossLanguage", SupportsGet = true)]
74-
[ModelBinder(BinderType = typeof(DecodeModelBinder))]
75-
public IEnumerable<string>CrossLanguage { get; set; }
76-
7773

7874
/// <summary>
7975
/// Handler for loading page
@@ -94,12 +90,11 @@ public async Task<IActionResult> OnGetAsync(string id, string revisionId = null)
9490
showDocumentation: ShowDocumentation, showDiffOnly: ShowDiffOnly, diffContextSize: REVIEW_DIFF_CONTEXT_SIZE,
9591
diffContextSeperator: DIFF_CONTEXT_SEPERATOR);
9692

97-
// Get Cross Language View Details
98-
foreach (var language in CrossLanguage)
93+
if (!String.IsNullOrEmpty(ReviewContent.ActiveAPIRevision.Files.First().CrossLanguagePackageId))
9994
{
100-
var packageName = LanguageServiceHelpers.GetCorrespondingPackageName(ReviewContent.Review.Language, language, ReviewContent.Review.PackageName);
101-
var review = await _reviewManager.GetReviewAsync(language, packageName);
102-
if (review != null)
95+
var correspondingReviewId = await _apiRevisionsManager.GetReviewIdsOfLanguageCorrespondingReviewAsync(ReviewContent.ActiveAPIRevision.Files.First().CrossLanguagePackageId);
96+
var correspondingReviews = await _reviewManager.GetReviewsAsync(reviewIds: correspondingReviewId, isClosed: false);
97+
foreach (var review in correspondingReviews)
10398
{
10499
var reviewContent = await PageModelHelpers.GetReviewContentAsync(configuration: _configuration,
105100
reviewManager: _reviewManager, preferenceCache: _preferenceCache, userProfileRepository: _userProfileRepository,
@@ -108,7 +103,7 @@ public async Task<IActionResult> OnGetAsync(string id, string revisionId = null)
108103
showDocumentation: ShowDocumentation, showDiffOnly: ShowDiffOnly, diffContextSize: REVIEW_DIFF_CONTEXT_SIZE,
109104
diffContextSeperator: DIFF_CONTEXT_SEPERATOR);
110105

111-
ReviewContent.CrossLanguageViewContent.Add(review.Language, reviewContent);
106+
ReviewContent.CrossLanguageViewContent.Add(review.Language, reviewContent);
112107
}
113108
}
114109

0 commit comments

Comments
 (0)