From 51be1b46b2dab6918a27fb3204d0686030c09826 Mon Sep 17 00:00:00 2001 From: Vailorium Date: Mon, 8 Aug 2022 13:31:09 +1200 Subject: [PATCH 1/8] replace language icon conditionals with CSS classes with background-image --- .../APIView/APIViewWeb/Client/css/site.scss | 58 +++++++++++++++++ .../APIViewWeb/Pages/Assemblies/Review.cshtml | 65 ++----------------- .../Pages/Shared/_ReviewsPartial.cshtml | 59 ++--------------- 3 files changed, 66 insertions(+), 116 deletions(-) diff --git a/src/dotnet/APIView/APIViewWeb/Client/css/site.scss b/src/dotnet/APIView/APIViewWeb/Client/css/site.scss index 4e1af355d03..dbeaa1f1bb8 100644 --- a/src/dotnet/APIView/APIViewWeb/Client/css/site.scss +++ b/src/dotnet/APIView/APIViewWeb/Client/css/site.scss @@ -507,6 +507,64 @@ code { height: 16px; z-index: 1; } + +.icon-language { + width: 34px; + height: 34px; +} + +.icon-csharp { + background: url(/icons/csharp-original.svg) center center no-repeat; +} + +.icon-javascript { + background: url(/icons/javascript-original.svg) center center no-repeat; +} + +.icon-python { + background: url(/icons/python-original.svg) center center no-repeat; +} + +.icon-c { + background: url(/icons/c-original.svg) center center no-repeat; +} + +.icon-cplusplus { + background: url(/icons/cplusplus-original.svg) center center no-repeat; +} + +.icon-go { + background: url(/icons/go-original.svg) center center no-repeat; +} + +.icon-java { + background: url(/icons/java-original.svg) center center no-repeat; +} + +.icon-java-spring { + background: url(/icons/java-spring-original.svg) center center no-repeat; +} + +.icon-java-android { + background: url(/icons/java-android-original.svg) center center no-repeat; +} + +.icon-swift { + background: url(/icons/swift-original.svg) center center no-repeat; +} + +.icon-kotlin { + background: url(/icons/kotlin-original.svg) center center no-repeat; +} + +.icon-json { + background: url(/icons/json-original.svg) center center no-repeat; +} + +.icon-swagger { + background: url(/icons/swagger-original.svg) center center no-repeat; +} + /*---------------------------------------------------------------------*/ .info-text { diff --git a/src/dotnet/APIView/APIViewWeb/Pages/Assemblies/Review.cshtml b/src/dotnet/APIView/APIViewWeb/Pages/Assemblies/Review.cshtml index dd87ce95789..34e01a6413c 100644 --- a/src/dotnet/APIView/APIViewWeb/Pages/Assemblies/Review.cshtml +++ b/src/dotnet/APIView/APIViewWeb/Pages/Assemblies/Review.cshtml @@ -10,69 +10,12 @@
@if (Model.Review.Language != null) { - var imageSource = String.Empty; - @switch (Model.Review.Language.ToLower()) + string iconClassName = "icon-" + @Model.Review.Language.ToLower(); + if(@Model.Review.LanguageVariant != null && @Model.Review.LanguageVariant.ToLower() != "default") { - case "c#": - imageSource = "icons/csharp-original.svg"; - break; - case "javascript": - imageSource = "icons/javascript-original.svg"; - break; - case "python": - imageSource = "icons/python-original.svg"; - break; - case "c": - imageSource = "icons/c-original.svg"; - break; - case "c++": - imageSource = "icons/cplusplus-original.svg"; - break; - case "go": - imageSource = "icons/go-original.svg"; - break; - case "java": - if(@Model.Review.LanguageVariant != null) - { - switch(@Model.Review.LanguageVariant.ToLower()) - { - case "spring": - imageSource = "icons/java-spring-original.svg"; - break; - case "android": - imageSource = "icons/java-android-original.svg"; - break; - default: - imageSource = "icons/java-original.svg"; - break; - } - } - else - { - imageSource = "icons/java-original.svg"; - } - break; - case "swift": - imageSource = "icons/swift-original.svg"; - break; - case "kotlin": - imageSource = "icons/kotlin-original.svg"; - break; - case "json": - imageSource = "icons/json-original.svg"; - break; - case "swagger": - imageSource = "icons/swagger-original.svg"; - break; - } - if (String.IsNullOrEmpty(imageSource)) - { - @Model.Review.Language @Model.Review.LanguageVariant + iconClassName += "-" + @Model.Review.LanguageVariant.ToLower(); } - else - { - @Model.Review.Language @Model.Review.LanguageVariant - } + }

@if (Model.Review.ServiceName != null) diff --git a/src/dotnet/APIView/APIViewWeb/Pages/Shared/_ReviewsPartial.cshtml b/src/dotnet/APIView/APIViewWeb/Pages/Shared/_ReviewsPartial.cshtml index 71fc2aa5ed7..bfe8c55e342 100644 --- a/src/dotnet/APIView/APIViewWeb/Pages/Shared/_ReviewsPartial.cshtml +++ b/src/dotnet/APIView/APIViewWeb/Pages/Shared/_ReviewsPartial.cshtml @@ -25,63 +25,12 @@ @if (review.Language != null) { - @switch (review.Language.ToLower()) + string iconClassName = "icon-" + @review.Language.ToLower(); + if(@review.LanguageVariant != null && @review.LanguageVariant.ToLower() != "default") { - case "c#": - @review.Language - break; - case "javascript": - @review.Language - break; - case "python": - @review.Language - break; - case "c": - @review.Language - break; - case "c++": - @review.Language - break; - case "go": - @review.Language - break; - case "java": - if(@review.LanguageVariant != null) - { - switch(@review.LanguageVariant.ToLower()) - { - case "spring": - @review.Language @review.LanguageVariant - break; - case "android": - @review.Language @review.LanguageVariant - break; - default: - @review.Language - break; - } - } - else - { - @review.Language - } - break; - case "swift": - @review.Language - break; - case "kotlin": - @review.Language - break; - case "json": - @review.Language - break; - case "swagger": - @review.Language - break; - default: - @review.Language - break; + iconClassName += "-" + @review.LanguageVariant.ToLower(); } + } @review.DisplayName.Substring(0, @truncationIndex) @if (review.IsApproved == true) From 65ab01f58beecb5735f009cd99f3d3de0f042263 Mon Sep 17 00:00:00 2001 From: Vailorium Date: Mon, 8 Aug 2022 13:37:35 +1200 Subject: [PATCH 2/8] fix issue with c++ class name --- src/dotnet/APIView/APIViewWeb/Client/css/site.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/dotnet/APIView/APIViewWeb/Client/css/site.scss b/src/dotnet/APIView/APIViewWeb/Client/css/site.scss index dbeaa1f1bb8..cf4d8e8c560 100644 --- a/src/dotnet/APIView/APIViewWeb/Client/css/site.scss +++ b/src/dotnet/APIView/APIViewWeb/Client/css/site.scss @@ -529,7 +529,7 @@ code { background: url(/icons/c-original.svg) center center no-repeat; } -.icon-cplusplus { +.icon-c\+\+ { background: url(/icons/cplusplus-original.svg) center center no-repeat; } From 086351cdde562784353ab6ffafd1fcbaeb1d230d Mon Sep 17 00:00:00 2001 From: Sam <47310940+Vailorium@users.noreply.github.com> Date: Wed, 10 Aug 2022 14:16:18 +1200 Subject: [PATCH 3/8] Review.cshtml replace != null with IsNullOrEmpty Co-authored-by: praveenkuttappan <55455725+praveenkuttappan@users.noreply.github.com> --- src/dotnet/APIView/APIViewWeb/Pages/Assemblies/Review.cshtml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/dotnet/APIView/APIViewWeb/Pages/Assemblies/Review.cshtml b/src/dotnet/APIView/APIViewWeb/Pages/Assemblies/Review.cshtml index 34e01a6413c..2c3136d39d7 100644 --- a/src/dotnet/APIView/APIViewWeb/Pages/Assemblies/Review.cshtml +++ b/src/dotnet/APIView/APIViewWeb/Pages/Assemblies/Review.cshtml @@ -11,7 +11,7 @@ @if (Model.Review.Language != null) { string iconClassName = "icon-" + @Model.Review.Language.ToLower(); - if(@Model.Review.LanguageVariant != null && @Model.Review.LanguageVariant.ToLower() != "default") + @if (!string.IsNullOrEmpty(Model.Review.LanguageVariant) && Model.Review.LanguageVariant.ToLower() != "default") { iconClassName += "-" + @Model.Review.LanguageVariant.ToLower(); } From 119fe0a1af215a71e591895c293c89032310b31b Mon Sep 17 00:00:00 2001 From: Sam <47310940+Vailorium@users.noreply.github.com> Date: Wed, 10 Aug 2022 14:16:28 +1200 Subject: [PATCH 4/8] _ReviewsPartial.cshtml replace != null with IsNullOrEmpty Co-authored-by: praveenkuttappan <55455725+praveenkuttappan@users.noreply.github.com> --- .../APIView/APIViewWeb/Pages/Shared/_ReviewsPartial.cshtml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/dotnet/APIView/APIViewWeb/Pages/Shared/_ReviewsPartial.cshtml b/src/dotnet/APIView/APIViewWeb/Pages/Shared/_ReviewsPartial.cshtml index bfe8c55e342..699291603ee 100644 --- a/src/dotnet/APIView/APIViewWeb/Pages/Shared/_ReviewsPartial.cshtml +++ b/src/dotnet/APIView/APIViewWeb/Pages/Shared/_ReviewsPartial.cshtml @@ -26,7 +26,7 @@ @if (review.Language != null) { string iconClassName = "icon-" + @review.Language.ToLower(); - if(@review.LanguageVariant != null && @review.LanguageVariant.ToLower() != "default") + @if (!string.IsNullOrEmpty(review.LanguageVariant) && review.LanguageVariant.ToLower() != "default") { iconClassName += "-" + @review.LanguageVariant.ToLower(); } From f4772e1280f850b8c445dfb8f69cb94a33cf942b Mon Sep 17 00:00:00 2001 From: Vailorium Date: Wed, 10 Aug 2022 17:24:51 +1200 Subject: [PATCH 5/8] fix build issue with css icons --- src/dotnet/APIView/APIViewWeb/Pages/Assemblies/Review.cshtml | 2 +- .../APIView/APIViewWeb/Pages/Shared/_ReviewsPartial.cshtml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/dotnet/APIView/APIViewWeb/Pages/Assemblies/Review.cshtml b/src/dotnet/APIView/APIViewWeb/Pages/Assemblies/Review.cshtml index 2c3136d39d7..af279f278c3 100644 --- a/src/dotnet/APIView/APIViewWeb/Pages/Assemblies/Review.cshtml +++ b/src/dotnet/APIView/APIViewWeb/Pages/Assemblies/Review.cshtml @@ -10,7 +10,7 @@

@if (Model.Review.Language != null) { - string iconClassName = "icon-" + @Model.Review.Language.ToLower(); + string iconClassName = "icon-" + Model.Review.Language.ToLower(); @if (!string.IsNullOrEmpty(Model.Review.LanguageVariant) && Model.Review.LanguageVariant.ToLower() != "default") { iconClassName += "-" + @Model.Review.LanguageVariant.ToLower(); diff --git a/src/dotnet/APIView/APIViewWeb/Pages/Shared/_ReviewsPartial.cshtml b/src/dotnet/APIView/APIViewWeb/Pages/Shared/_ReviewsPartial.cshtml index 699291603ee..0758f4c1a7c 100644 --- a/src/dotnet/APIView/APIViewWeb/Pages/Shared/_ReviewsPartial.cshtml +++ b/src/dotnet/APIView/APIViewWeb/Pages/Shared/_ReviewsPartial.cshtml @@ -25,8 +25,8 @@ @if (review.Language != null) { - string iconClassName = "icon-" + @review.Language.ToLower(); - @if (!string.IsNullOrEmpty(review.LanguageVariant) && review.LanguageVariant.ToLower() != "default") + string iconClassName = "icon-" + review.Language.ToLower(); + @if (!string.IsNullOrEmpty(review.LanguageVariant) && review.LanguageVariant.ToLower() != "default") { iconClassName += "-" + @review.LanguageVariant.ToLower(); } From 7492b00d3f6fc6a9558f7244f43d6cd594861b7e Mon Sep 17 00:00:00 2001 From: Vailorium Date: Thu, 11 Aug 2022 14:17:54 +1200 Subject: [PATCH 6/8] fix c# css reference --- src/dotnet/APIView/APIViewWeb/Client/css/site.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/dotnet/APIView/APIViewWeb/Client/css/site.scss b/src/dotnet/APIView/APIViewWeb/Client/css/site.scss index cf4d8e8c560..225ae78926a 100644 --- a/src/dotnet/APIView/APIViewWeb/Client/css/site.scss +++ b/src/dotnet/APIView/APIViewWeb/Client/css/site.scss @@ -513,7 +513,7 @@ code { height: 34px; } -.icon-csharp { +.icon-c\# { background: url(/icons/csharp-original.svg) center center no-repeat; } From 2b46a9625e1f9888cfd16b7f7fd93807498f49d7 Mon Sep 17 00:00:00 2001 From: Vailorium Date: Thu, 11 Aug 2022 17:12:21 +1200 Subject: [PATCH 7/8] add utility method to transform filename unsafe language strings into filename safe strings, replace escaped css classes with safe string version --- .../APIView/APIViewWeb/Client/css/site.scss | 4 ++-- .../APIViewWeb/FilenameSafeStringParser.cs | 18 ++++++++++++++++++ .../APIViewWeb/Pages/Assemblies/Review.cshtml | 2 +- .../Pages/Shared/_ReviewsPartial.cshtml | 2 +- 4 files changed, 22 insertions(+), 4 deletions(-) create mode 100644 src/dotnet/APIView/APIViewWeb/FilenameSafeStringParser.cs diff --git a/src/dotnet/APIView/APIViewWeb/Client/css/site.scss b/src/dotnet/APIView/APIViewWeb/Client/css/site.scss index 225ae78926a..dbeaa1f1bb8 100644 --- a/src/dotnet/APIView/APIViewWeb/Client/css/site.scss +++ b/src/dotnet/APIView/APIViewWeb/Client/css/site.scss @@ -513,7 +513,7 @@ code { height: 34px; } -.icon-c\# { +.icon-csharp { background: url(/icons/csharp-original.svg) center center no-repeat; } @@ -529,7 +529,7 @@ code { background: url(/icons/c-original.svg) center center no-repeat; } -.icon-c\+\+ { +.icon-cplusplus { background: url(/icons/cplusplus-original.svg) center center no-repeat; } diff --git a/src/dotnet/APIView/APIViewWeb/FilenameSafeStringParser.cs b/src/dotnet/APIView/APIViewWeb/FilenameSafeStringParser.cs new file mode 100644 index 00000000000..4a7369e61db --- /dev/null +++ b/src/dotnet/APIView/APIViewWeb/FilenameSafeStringParser.cs @@ -0,0 +1,18 @@ +namespace APIViewWeb +{ + public class FilenameSafeStringParser + { + public static string ParseLanguageName(string languageName) + { + switch(languageName.ToLower()) + { + case "c#": + return "csharp"; + case "c++": + return "cplusplus"; + default: + return languageName.ToLower(); + } + } + } +} diff --git a/src/dotnet/APIView/APIViewWeb/Pages/Assemblies/Review.cshtml b/src/dotnet/APIView/APIViewWeb/Pages/Assemblies/Review.cshtml index af279f278c3..a564caf3f37 100644 --- a/src/dotnet/APIView/APIViewWeb/Pages/Assemblies/Review.cshtml +++ b/src/dotnet/APIView/APIViewWeb/Pages/Assemblies/Review.cshtml @@ -10,7 +10,7 @@
@if (Model.Review.Language != null) { - string iconClassName = "icon-" + Model.Review.Language.ToLower(); + string iconClassName = "icon-" + FilenameSafeStringParser.ParseLanguageName(Model.Review.Language); @if (!string.IsNullOrEmpty(Model.Review.LanguageVariant) && Model.Review.LanguageVariant.ToLower() != "default") { iconClassName += "-" + @Model.Review.LanguageVariant.ToLower(); diff --git a/src/dotnet/APIView/APIViewWeb/Pages/Shared/_ReviewsPartial.cshtml b/src/dotnet/APIView/APIViewWeb/Pages/Shared/_ReviewsPartial.cshtml index 0758f4c1a7c..cfcb46c8b42 100644 --- a/src/dotnet/APIView/APIViewWeb/Pages/Shared/_ReviewsPartial.cshtml +++ b/src/dotnet/APIView/APIViewWeb/Pages/Shared/_ReviewsPartial.cshtml @@ -25,7 +25,7 @@ @if (review.Language != null) { - string iconClassName = "icon-" + review.Language.ToLower(); + string iconClassName = "icon-" + FilenameSafeStringParser.ParseLanguageName(review.Language); @if (!string.IsNullOrEmpty(review.LanguageVariant) && review.LanguageVariant.ToLower() != "default") { iconClassName += "-" + @review.LanguageVariant.ToLower(); From 7530e21e2a1277ea8a127243aa4c4cb0e9961226 Mon Sep 17 00:00:00 2001 From: Vailorium Date: Wed, 17 Aug 2022 11:44:55 +1200 Subject: [PATCH 8/8] Move css safe language name function from static utility to review model --- .../APIViewWeb/FilenameSafeStringParser.cs | 18 ------------------ .../APIView/APIViewWeb/Models/ReviewModel.cs | 14 ++++++++++++++ .../APIViewWeb/Pages/Assemblies/Review.cshtml | 2 +- .../Pages/Shared/_ReviewsPartial.cshtml | 2 +- 4 files changed, 16 insertions(+), 20 deletions(-) delete mode 100644 src/dotnet/APIView/APIViewWeb/FilenameSafeStringParser.cs diff --git a/src/dotnet/APIView/APIViewWeb/FilenameSafeStringParser.cs b/src/dotnet/APIView/APIViewWeb/FilenameSafeStringParser.cs deleted file mode 100644 index 4a7369e61db..00000000000 --- a/src/dotnet/APIView/APIViewWeb/FilenameSafeStringParser.cs +++ /dev/null @@ -1,18 +0,0 @@ -namespace APIViewWeb -{ - public class FilenameSafeStringParser - { - public static string ParseLanguageName(string languageName) - { - switch(languageName.ToLower()) - { - case "c#": - return "csharp"; - case "c++": - return "cplusplus"; - default: - return languageName.ToLower(); - } - } - } -} diff --git a/src/dotnet/APIView/APIViewWeb/Models/ReviewModel.cs b/src/dotnet/APIView/APIViewWeb/Models/ReviewModel.cs index e3b7149930a..4a094aa86a8 100644 --- a/src/dotnet/APIView/APIViewWeb/Models/ReviewModel.cs +++ b/src/dotnet/APIView/APIViewWeb/Models/ReviewModel.cs @@ -59,6 +59,20 @@ public bool IsUserSubscribed(ClaimsPrincipal user) public string GetUserEmail(ClaimsPrincipal user) => NotificationManager.GetUserEmail(user); + // gets CSS safe language name - such that css classes based on language name would not need any escaped characters + public string GetLanguageCssSafeName() + { + switch (Language.ToLower()) + { + case "c#": + return "csharp"; + case "c++": + return "cplusplus"; + default: + return Language.ToLower(); + } + } + [JsonIgnore] public string DisplayName { diff --git a/src/dotnet/APIView/APIViewWeb/Pages/Assemblies/Review.cshtml b/src/dotnet/APIView/APIViewWeb/Pages/Assemblies/Review.cshtml index a564caf3f37..9164bd6040c 100644 --- a/src/dotnet/APIView/APIViewWeb/Pages/Assemblies/Review.cshtml +++ b/src/dotnet/APIView/APIViewWeb/Pages/Assemblies/Review.cshtml @@ -10,7 +10,7 @@
@if (Model.Review.Language != null) { - string iconClassName = "icon-" + FilenameSafeStringParser.ParseLanguageName(Model.Review.Language); + string iconClassName = "icon-" + Model.Review.GetLanguageCssSafeName(); @if (!string.IsNullOrEmpty(Model.Review.LanguageVariant) && Model.Review.LanguageVariant.ToLower() != "default") { iconClassName += "-" + @Model.Review.LanguageVariant.ToLower(); diff --git a/src/dotnet/APIView/APIViewWeb/Pages/Shared/_ReviewsPartial.cshtml b/src/dotnet/APIView/APIViewWeb/Pages/Shared/_ReviewsPartial.cshtml index cfcb46c8b42..4cba9ea9bb1 100644 --- a/src/dotnet/APIView/APIViewWeb/Pages/Shared/_ReviewsPartial.cshtml +++ b/src/dotnet/APIView/APIViewWeb/Pages/Shared/_ReviewsPartial.cshtml @@ -25,7 +25,7 @@ @if (review.Language != null) { - string iconClassName = "icon-" + FilenameSafeStringParser.ParseLanguageName(review.Language); + string iconClassName = "icon-" + review.GetLanguageCssSafeName(); @if (!string.IsNullOrEmpty(review.LanguageVariant) && review.LanguageVariant.ToLower() != "default") { iconClassName += "-" + @review.LanguageVariant.ToLower();