diff --git a/src/Aspire.Dashboard/Components/Pages/Resources.razor b/src/Aspire.Dashboard/Components/Pages/Resources.razor index d152527d9bc..b645a92f24b 100644 --- a/src/Aspire.Dashboard/Components/Pages/Resources.razor +++ b/src/Aspire.Dashboard/Components/Pages/Resources.razor @@ -52,10 +52,10 @@ - + - + diff --git a/src/Aspire.Dashboard/Components/Pages/Resources.razor.cs b/src/Aspire.Dashboard/Components/Pages/Resources.razor.cs index 37cefcfde97..2590c58a629 100644 --- a/src/Aspire.Dashboard/Components/Pages/Resources.razor.cs +++ b/src/Aspire.Dashboard/Components/Pages/Resources.razor.cs @@ -182,5 +182,5 @@ public void Dispose() } private string? GetRowClass(ResourceViewModel resource) - => resource == SelectedResource ? "selected-row" : null; + => resource == SelectedResource ? "selected-row resource-row" : "resource-row"; } diff --git a/src/Aspire.Dashboard/Components/Pages/Resources.razor.css b/src/Aspire.Dashboard/Components/Pages/Resources.razor.css index 6d93c8a7c47..440428a62a3 100644 --- a/src/Aspire.Dashboard/Components/Pages/Resources.razor.css +++ b/src/Aspire.Dashboard/Components/Pages/Resources.razor.css @@ -1,8 +1,3 @@ -::deep .resource-state-container { - display: flex; - align-items: center; -} - ::deep .resource-state-badge { padding: 0 3px; cursor: pointer; @@ -18,3 +13,6 @@ margin-left: 3px; } +::deep .resource-row > fluent-data-grid-cell { + overflow: visible; +} diff --git a/src/Aspire.Dashboard/Components/Pages/StructuredLogs.razor b/src/Aspire.Dashboard/Components/Pages/StructuredLogs.razor index 8ebabe21886..ae189bb15f4 100644 --- a/src/Aspire.Dashboard/Components/Pages/StructuredLogs.razor +++ b/src/Aspire.Dashboard/Components/Pages/StructuredLogs.razor @@ -92,7 +92,7 @@ } - + @ControlsStringsLoc[nameof(ControlsStrings.ViewAction)] diff --git a/src/Aspire.Dashboard/Components/Pages/TraceDetail.razor b/src/Aspire.Dashboard/Components/Pages/TraceDetail.razor index f1a20221561..5726856f424 100644 --- a/src/Aspire.Dashboard/Components/Pages/TraceDetail.razor +++ b/src/Aspire.Dashboard/Components/Pages/TraceDetail.razor @@ -1,14 +1,12 @@ @page "/Trace/{traceId}" @page "/Trace/{traceId}/Span/{spanId}" -@using Aspire.Dashboard.Model @using Aspire.Dashboard.Model.Otlp @using Aspire.Dashboard.Otlp.Model @using System.Globalization @using Aspire.Dashboard.Resources @inject IStringLocalizer Loc @inject IStringLocalizer ControlStringsLoc -@inject IDashboardClient DashboardClient @@ -53,7 +51,7 @@ - +
@{ @@ -126,6 +124,12 @@
+ + @ControlStringsLoc[nameof(ControlsStrings.ViewAction)] +
diff --git a/src/Aspire.Dashboard/Components/Pages/Traces.razor b/src/Aspire.Dashboard/Components/Pages/Traces.razor index 32b6270c18c..b2be1ebc688 100644 --- a/src/Aspire.Dashboard/Components/Pages/Traces.razor +++ b/src/Aspire.Dashboard/Components/Pages/Traces.razor @@ -74,7 +74,7 @@ - + @ControlsStringsLoc[nameof(ControlsStrings.ViewAction)] diff --git a/src/Aspire.Dashboard/Components/ResourcesGridColumns/ResourceNameDisplay.razor b/src/Aspire.Dashboard/Components/ResourcesGridColumns/ResourceNameDisplay.razor index 6366663154f..98bcac666ea 100644 --- a/src/Aspire.Dashboard/Components/ResourcesGridColumns/ResourceNameDisplay.razor +++ b/src/Aspire.Dashboard/Components/ResourcesGridColumns/ResourceNameDisplay.razor @@ -1,10 +1,24 @@ -@using Aspire.Dashboard.Model +@namespace Aspire.Dashboard.Components + +@using Aspire.Dashboard.Model +@using Aspire.Dashboard.Otlp.Model @using Aspire.Dashboard.Resources @inject IStringLocalizer Loc - - - +@{ + var unviewedErrorCount = GetUnviewedErrorCount(Resource); +} + +@if (unviewedErrorCount > 0) +{ + + + +} +else +{ + +} @code { [Parameter, EditorRequired] @@ -15,4 +29,7 @@ [Parameter, EditorRequired] public required string FilterText { get; set; } + + [Parameter, EditorRequired] + public required Dictionary? UnviewedErrorCounts { get; set; } } diff --git a/src/Aspire.Dashboard/Components/ResourcesGridColumns/ResourceNameDisplay.razor.cs b/src/Aspire.Dashboard/Components/ResourcesGridColumns/ResourceNameDisplay.razor.cs new file mode 100644 index 00000000000..9287dd6df12 --- /dev/null +++ b/src/Aspire.Dashboard/Components/ResourcesGridColumns/ResourceNameDisplay.razor.cs @@ -0,0 +1,37 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +using System.Globalization; +using Aspire.Dashboard.Model; +using Aspire.Dashboard.Otlp.Storage; +using Aspire.Dashboard.Resources; +using Microsoft.AspNetCore.Components; + +namespace Aspire.Dashboard.Components; + +public partial class ResourceNameDisplay +{ + [Inject] + public required TelemetryRepository TelemetryRepository { get; init; } + + private int GetUnviewedErrorCount(ResourceViewModel resource) + { + if (UnviewedErrorCounts is null) + { + return 0; + } + + var application = TelemetryRepository.GetApplication(resource.Uid); + return application is null ? 0 : UnviewedErrorCounts.GetValueOrDefault(application, 0); + } + + private static string GetResourceErrorStructuredLogsUrl(ResourceViewModel resource) + { + return $"/StructuredLogs/{resource.Uid}?level=error"; + } + + private string FormatLogLinkTitle(int unviewedErrorCount) + { + return FormatName(Resource) + Environment.NewLine + string.Format(CultureInfo.CurrentCulture, Loc[nameof(Columns.UnreadLogErrors)], unviewedErrorCount); + } +} diff --git a/src/Aspire.Dashboard/Components/ResourcesGridColumns/StateColumnDisplay.razor b/src/Aspire.Dashboard/Components/ResourcesGridColumns/StateColumnDisplay.razor index b407b0ef824..d53e56f6ea3 100644 --- a/src/Aspire.Dashboard/Components/ResourcesGridColumns/StateColumnDisplay.razor +++ b/src/Aspire.Dashboard/Components/ResourcesGridColumns/StateColumnDisplay.razor @@ -3,27 +3,35 @@ @using Aspire.Dashboard.Resources @inject IStringLocalizer Loc -
- @if (Resource is { State: ResourceStates.ExitedState /* containers */ or ResourceStates.FinishedState /* executables */ }) +@if (Resource is { State: ResourceStates.ExitedState /* containers */ or ResourceStates.FinishedState /* executables */ }) +{ + if (Resource.TryGetExitCode(out int exitCode) && exitCode is not 0) { - if (Resource.TryGetExitCode(out int exitCode) && exitCode is not 0) - { - - - } - else - { - - - } + + } + else + { + + + } +} +else +{ + +} + +@Resource.State - @Resource.State - -
+@code { + [Parameter, EditorRequired] + public required ResourceViewModel Resource { get; set; } +} diff --git a/src/Aspire.Dashboard/Components/ResourcesGridColumns/StateColumnDisplay.razor.cs b/src/Aspire.Dashboard/Components/ResourcesGridColumns/StateColumnDisplay.razor.cs deleted file mode 100644 index cf7c8026d44..00000000000 --- a/src/Aspire.Dashboard/Components/ResourcesGridColumns/StateColumnDisplay.razor.cs +++ /dev/null @@ -1,17 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. - -using Aspire.Dashboard.Model; -using Aspire.Dashboard.Otlp.Model; -using Microsoft.AspNetCore.Components; - -namespace Aspire.Dashboard.Components.ResourcesGridColumns; - -public partial class StateColumnDisplay -{ - [Parameter, EditorRequired] - public required Dictionary? UnviewedErrorCounts { get; set; } - - [Parameter, EditorRequired] - public required ResourceViewModel Resource { get; set; } -} diff --git a/src/Aspire.Dashboard/Components/ResourcesGridColumns/StateColumnText.razor b/src/Aspire.Dashboard/Components/ResourcesGridColumns/StateColumnText.razor new file mode 100644 index 00000000000..0da35a5b2a4 --- /dev/null +++ b/src/Aspire.Dashboard/Components/ResourcesGridColumns/StateColumnText.razor @@ -0,0 +1,36 @@ +@using Aspire.Dashboard.Model +@using Aspire.Dashboard.Resources +@inject IStringLocalizer Loc + +@if (Resource is { State: ResourceStates.ExitedState /* containers */ or ResourceStates.FinishedState /* executables */ }) +{ + if (Resource.TryGetExitCode(out int exitCode) && exitCode is not 0) + { + + + } + else + { + + + } +} +else +{ + +} + +@Resource.State + +@code { + [Parameter, EditorRequired] + public required ResourceViewModel Resource { get; set; } +} diff --git a/src/Aspire.Dashboard/Components/ResourcesGridColumns/UnreadLogErrorsBadge.razor b/src/Aspire.Dashboard/Components/ResourcesGridColumns/UnreadLogErrorsBadge.razor deleted file mode 100644 index a0219a4251c..00000000000 --- a/src/Aspire.Dashboard/Components/ResourcesGridColumns/UnreadLogErrorsBadge.razor +++ /dev/null @@ -1,19 +0,0 @@ -@using Aspire.Dashboard.Resources -@using Aspire.Dashboard.Model -@namespace Aspire.Dashboard.Components -@inject IStringLocalizer Loc - -@if (_unviewedCount > 0) -{ - - - @(_unviewedCount > 9 ? "9+" : _unviewedCount.ToString()) - - -} diff --git a/src/Aspire.Dashboard/Components/ResourcesGridColumns/UnreadLogErrorsBadge.razor.cs b/src/Aspire.Dashboard/Components/ResourcesGridColumns/UnreadLogErrorsBadge.razor.cs deleted file mode 100644 index ef9615be873..00000000000 --- a/src/Aspire.Dashboard/Components/ResourcesGridColumns/UnreadLogErrorsBadge.razor.cs +++ /dev/null @@ -1,55 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. - -using Aspire.Dashboard.Model; -using Aspire.Dashboard.Otlp.Model; -using Aspire.Dashboard.Otlp.Storage; -using Microsoft.AspNetCore.Components; - -namespace Aspire.Dashboard.Components; - -public partial class UnreadLogErrorsBadge -{ - private int _unviewedCount; - - [Parameter, EditorRequired] - public required ResourceViewModel Resource { get; set; } - [Parameter, EditorRequired] - public required Dictionary? UnviewedErrorCounts { get; set; } - - [Inject] - public required TelemetryRepository TelemetryRepository { get; init; } - [Inject] - public required NavigationManager NavigationManager { get; init; } - - protected override void OnParametersSet() - { - _unviewedCount = GetUnviewedErrorCount(Resource); - } - - private int GetUnviewedErrorCount(ResourceViewModel resource) - { - if (UnviewedErrorCounts is null) - { - return 0; - } - - var application = TelemetryRepository.GetApplication(resource.Uid); - if (application is null) - { - return 0; - } - - if (!UnviewedErrorCounts.TryGetValue(application, out var count)) - { - return 0; - } - - return count; - } - - private static string GetResourceErrorStructuredLogsUrl(ResourceViewModel resource) - { - return $"/StructuredLogs/{resource.Uid}?level=error"; - } -} diff --git a/src/Aspire.Dashboard/Resources/Columns.Designer.cs b/src/Aspire.Dashboard/Resources/Columns.Designer.cs index e9691980114..aa8f873910f 100644 --- a/src/Aspire.Dashboard/Resources/Columns.Designer.cs +++ b/src/Aspire.Dashboard/Resources/Columns.Designer.cs @@ -205,20 +205,11 @@ public static string StateColumnResourceExitedUnexpectedly { } /// - /// Looks up a localized string similar to {0} error log. + /// Looks up a localized string similar to {0} errors. /// - public static string UnreadLogErrorsBadgeErrorLog { + public static string UnreadLogErrors { get { - return ResourceManager.GetString("UnreadLogErrorsBadgeErrorLog", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to {0} error logs. - /// - public static string UnreadLogErrorsBadgeErrorLogs { - get { - return ResourceManager.GetString("UnreadLogErrorsBadgeErrorLogs", resourceCulture); + return ResourceManager.GetString("UnreadLogErrors", resourceCulture); } } } diff --git a/src/Aspire.Dashboard/Resources/Columns.resx b/src/Aspire.Dashboard/Resources/Columns.resx index b58a8dd9af8..6178190695d 100644 --- a/src/Aspire.Dashboard/Resources/Columns.resx +++ b/src/Aspire.Dashboard/Resources/Columns.resx @@ -142,12 +142,8 @@ Copy image name and tag to clipboard - - {0} error log - {0} is 1 - - - {0} error logs + + {0} errors {0} is a number diff --git a/src/Aspire.Dashboard/Resources/ControlsStrings.Designer.cs b/src/Aspire.Dashboard/Resources/ControlsStrings.Designer.cs index 881e93e4f12..8d68eefe5ee 100644 --- a/src/Aspire.Dashboard/Resources/ControlsStrings.Designer.cs +++ b/src/Aspire.Dashboard/Resources/ControlsStrings.Designer.cs @@ -131,6 +131,15 @@ public static string ChartContainerUnableToDisplay { } } + /// + /// Looks up a localized string similar to Details. + /// + public static string DetailsColumnHeader { + get { + return ResourceManager.GetString("DetailsColumnHeader", resourceCulture); + } + } + /// /// Looks up a localized string similar to Duration. /// diff --git a/src/Aspire.Dashboard/Resources/ControlsStrings.resx b/src/Aspire.Dashboard/Resources/ControlsStrings.resx index 46c996d744c..10bb0290f56 100644 --- a/src/Aspire.Dashboard/Resources/ControlsStrings.resx +++ b/src/Aspire.Dashboard/Resources/ControlsStrings.resx @@ -233,4 +233,7 @@ Timestamp + + Details + diff --git a/src/Aspire.Dashboard/Resources/StructuredLogs.Designer.cs b/src/Aspire.Dashboard/Resources/StructuredLogs.Designer.cs index ca6e6789e27..265846955ae 100644 --- a/src/Aspire.Dashboard/Resources/StructuredLogs.Designer.cs +++ b/src/Aspire.Dashboard/Resources/StructuredLogs.Designer.cs @@ -77,15 +77,6 @@ public static string StructuredLogsAllTypes { } } - /// - /// Looks up a localized string similar to Details. - /// - public static string StructuredLogsDetailsColumnHeader { - get { - return ResourceManager.GetString("StructuredLogsDetailsColumnHeader", resourceCulture); - } - } - /// /// Looks up a localized string similar to Edit filter. /// diff --git a/src/Aspire.Dashboard/Resources/StructuredLogs.resx b/src/Aspire.Dashboard/Resources/StructuredLogs.resx index b59438f925d..94418b2138f 100644 --- a/src/Aspire.Dashboard/Resources/StructuredLogs.resx +++ b/src/Aspire.Dashboard/Resources/StructuredLogs.resx @@ -58,9 +58,6 @@ Trace - - Details - No structured logs found diff --git a/src/Aspire.Dashboard/Resources/Traces.Designer.cs b/src/Aspire.Dashboard/Resources/Traces.Designer.cs index 2012bb66f2f..8c68530d249 100644 --- a/src/Aspire.Dashboard/Resources/Traces.Designer.cs +++ b/src/Aspire.Dashboard/Resources/Traces.Designer.cs @@ -1,7 +1,6 @@ //------------------------------------------------------------------------------ // // This code was generated by a tool. -// Runtime Version:4.0.30319.42000 // // Changes to this file may cause incorrect behavior and will be lost if // the code is regenerated. @@ -60,15 +59,6 @@ internal Traces() { } } - /// - /// Looks up a localized string similar to Details. - /// - public static string TracesDetailsColumnHeader { - get { - return ResourceManager.GetString("TracesDetailsColumnHeader", resourceCulture); - } - } - /// /// Looks up a localized string similar to Traces. /// diff --git a/src/Aspire.Dashboard/Resources/Traces.resx b/src/Aspire.Dashboard/Resources/Traces.resx index 5a0cb86e2e6..8199b4a5774 100644 --- a/src/Aspire.Dashboard/Resources/Traces.resx +++ b/src/Aspire.Dashboard/Resources/Traces.resx @@ -1,17 +1,17 @@  - @@ -144,7 +144,4 @@ Errored: {0} {0} is a number - - Details - - \ No newline at end of file + diff --git a/src/Aspire.Dashboard/Resources/xlf/Columns.cs.xlf b/src/Aspire.Dashboard/Resources/xlf/Columns.cs.xlf index 4698e8c759b..ed5fd9da743 100644 --- a/src/Aspire.Dashboard/Resources/xlf/Columns.cs.xlf +++ b/src/Aspire.Dashboard/Resources/xlf/Columns.cs.xlf @@ -82,14 +82,9 @@ {0} exited unexpectedly with exit code {1} {0} is a resource type, {1} is a number - - {0} error log - {0} error log - {0} is 1 - - - {0} error logs - {0} error logs + + {0} errors + {0} errors {0} is a number diff --git a/src/Aspire.Dashboard/Resources/xlf/Columns.de.xlf b/src/Aspire.Dashboard/Resources/xlf/Columns.de.xlf index e07431215a0..6ca2b7b341b 100644 --- a/src/Aspire.Dashboard/Resources/xlf/Columns.de.xlf +++ b/src/Aspire.Dashboard/Resources/xlf/Columns.de.xlf @@ -82,14 +82,9 @@ {0} exited unexpectedly with exit code {1} {0} is a resource type, {1} is a number - - {0} error log - {0} error log - {0} is 1 - - - {0} error logs - {0} error logs + + {0} errors + {0} errors {0} is a number diff --git a/src/Aspire.Dashboard/Resources/xlf/Columns.es.xlf b/src/Aspire.Dashboard/Resources/xlf/Columns.es.xlf index 9bff562bab2..a1d94062d07 100644 --- a/src/Aspire.Dashboard/Resources/xlf/Columns.es.xlf +++ b/src/Aspire.Dashboard/Resources/xlf/Columns.es.xlf @@ -82,14 +82,9 @@ {0} exited unexpectedly with exit code {1} {0} is a resource type, {1} is a number - - {0} error log - {0} error log - {0} is 1 - - - {0} error logs - {0} error logs + + {0} errors + {0} errors {0} is a number diff --git a/src/Aspire.Dashboard/Resources/xlf/Columns.fr.xlf b/src/Aspire.Dashboard/Resources/xlf/Columns.fr.xlf index 85fc93b5cf3..6af56b00cb7 100644 --- a/src/Aspire.Dashboard/Resources/xlf/Columns.fr.xlf +++ b/src/Aspire.Dashboard/Resources/xlf/Columns.fr.xlf @@ -82,14 +82,9 @@ {0} exited unexpectedly with exit code {1} {0} is a resource type, {1} is a number - - {0} error log - {0} error log - {0} is 1 - - - {0} error logs - {0} error logs + + {0} errors + {0} errors {0} is a number diff --git a/src/Aspire.Dashboard/Resources/xlf/Columns.it.xlf b/src/Aspire.Dashboard/Resources/xlf/Columns.it.xlf index 2a4096c99fc..09002a535d9 100644 --- a/src/Aspire.Dashboard/Resources/xlf/Columns.it.xlf +++ b/src/Aspire.Dashboard/Resources/xlf/Columns.it.xlf @@ -82,14 +82,9 @@ {0} exited unexpectedly with exit code {1} {0} is a resource type, {1} is a number - - {0} error log - {0} error log - {0} is 1 - - - {0} error logs - {0} error logs + + {0} errors + {0} errors {0} is a number diff --git a/src/Aspire.Dashboard/Resources/xlf/Columns.ja.xlf b/src/Aspire.Dashboard/Resources/xlf/Columns.ja.xlf index 4514f301fb3..4ac08d06bc1 100644 --- a/src/Aspire.Dashboard/Resources/xlf/Columns.ja.xlf +++ b/src/Aspire.Dashboard/Resources/xlf/Columns.ja.xlf @@ -82,14 +82,9 @@ {0} exited unexpectedly with exit code {1} {0} is a resource type, {1} is a number - - {0} error log - {0} error log - {0} is 1 - - - {0} error logs - {0} error logs + + {0} errors + {0} errors {0} is a number diff --git a/src/Aspire.Dashboard/Resources/xlf/Columns.ko.xlf b/src/Aspire.Dashboard/Resources/xlf/Columns.ko.xlf index dcddf1ed6aa..22952791af5 100644 --- a/src/Aspire.Dashboard/Resources/xlf/Columns.ko.xlf +++ b/src/Aspire.Dashboard/Resources/xlf/Columns.ko.xlf @@ -82,14 +82,9 @@ {0} exited unexpectedly with exit code {1} {0} is a resource type, {1} is a number - - {0} error log - {0} error log - {0} is 1 - - - {0} error logs - {0} error logs + + {0} errors + {0} errors {0} is a number diff --git a/src/Aspire.Dashboard/Resources/xlf/Columns.pl.xlf b/src/Aspire.Dashboard/Resources/xlf/Columns.pl.xlf index 280a75c310c..35de11ec744 100644 --- a/src/Aspire.Dashboard/Resources/xlf/Columns.pl.xlf +++ b/src/Aspire.Dashboard/Resources/xlf/Columns.pl.xlf @@ -82,14 +82,9 @@ {0} exited unexpectedly with exit code {1} {0} is a resource type, {1} is a number - - {0} error log - {0} error log - {0} is 1 - - - {0} error logs - {0} error logs + + {0} errors + {0} errors {0} is a number diff --git a/src/Aspire.Dashboard/Resources/xlf/Columns.pt-BR.xlf b/src/Aspire.Dashboard/Resources/xlf/Columns.pt-BR.xlf index 384affb28c7..79d73e75961 100644 --- a/src/Aspire.Dashboard/Resources/xlf/Columns.pt-BR.xlf +++ b/src/Aspire.Dashboard/Resources/xlf/Columns.pt-BR.xlf @@ -82,14 +82,9 @@ {0} exited unexpectedly with exit code {1} {0} is a resource type, {1} is a number - - {0} error log - {0} error log - {0} is 1 - - - {0} error logs - {0} error logs + + {0} errors + {0} errors {0} is a number diff --git a/src/Aspire.Dashboard/Resources/xlf/Columns.ru.xlf b/src/Aspire.Dashboard/Resources/xlf/Columns.ru.xlf index 69dfc71e74b..fed0c399531 100644 --- a/src/Aspire.Dashboard/Resources/xlf/Columns.ru.xlf +++ b/src/Aspire.Dashboard/Resources/xlf/Columns.ru.xlf @@ -82,14 +82,9 @@ {0} exited unexpectedly with exit code {1} {0} is a resource type, {1} is a number - - {0} error log - {0} error log - {0} is 1 - - - {0} error logs - {0} error logs + + {0} errors + {0} errors {0} is a number diff --git a/src/Aspire.Dashboard/Resources/xlf/Columns.tr.xlf b/src/Aspire.Dashboard/Resources/xlf/Columns.tr.xlf index 282f9041871..6aba4d36a2f 100644 --- a/src/Aspire.Dashboard/Resources/xlf/Columns.tr.xlf +++ b/src/Aspire.Dashboard/Resources/xlf/Columns.tr.xlf @@ -82,14 +82,9 @@ {0} exited unexpectedly with exit code {1} {0} is a resource type, {1} is a number - - {0} error log - {0} error log - {0} is 1 - - - {0} error logs - {0} error logs + + {0} errors + {0} errors {0} is a number diff --git a/src/Aspire.Dashboard/Resources/xlf/Columns.zh-Hans.xlf b/src/Aspire.Dashboard/Resources/xlf/Columns.zh-Hans.xlf index 8e030631710..29f5adb1437 100644 --- a/src/Aspire.Dashboard/Resources/xlf/Columns.zh-Hans.xlf +++ b/src/Aspire.Dashboard/Resources/xlf/Columns.zh-Hans.xlf @@ -82,14 +82,9 @@ {0} exited unexpectedly with exit code {1} {0} is a resource type, {1} is a number - - {0} error log - {0} error log - {0} is 1 - - - {0} error logs - {0} error logs + + {0} errors + {0} errors {0} is a number diff --git a/src/Aspire.Dashboard/Resources/xlf/Columns.zh-Hant.xlf b/src/Aspire.Dashboard/Resources/xlf/Columns.zh-Hant.xlf index a1223442487..2835ce3f1c7 100644 --- a/src/Aspire.Dashboard/Resources/xlf/Columns.zh-Hant.xlf +++ b/src/Aspire.Dashboard/Resources/xlf/Columns.zh-Hant.xlf @@ -82,14 +82,9 @@ {0} exited unexpectedly with exit code {1} {0} is a resource type, {1} is a number - - {0} error log - {0} error log - {0} is 1 - - - {0} error logs - {0} error logs + + {0} errors + {0} errors {0} is a number diff --git a/src/Aspire.Dashboard/Resources/xlf/ControlsStrings.cs.xlf b/src/Aspire.Dashboard/Resources/xlf/ControlsStrings.cs.xlf index fa39389309c..efc2d72b5a0 100644 --- a/src/Aspire.Dashboard/Resources/xlf/ControlsStrings.cs.xlf +++ b/src/Aspire.Dashboard/Resources/xlf/ControlsStrings.cs.xlf @@ -42,6 +42,11 @@ Unable to display chart + + Details + Details + + Duration Duration diff --git a/src/Aspire.Dashboard/Resources/xlf/ControlsStrings.de.xlf b/src/Aspire.Dashboard/Resources/xlf/ControlsStrings.de.xlf index 34afe4131f2..9da1b6dfaf7 100644 --- a/src/Aspire.Dashboard/Resources/xlf/ControlsStrings.de.xlf +++ b/src/Aspire.Dashboard/Resources/xlf/ControlsStrings.de.xlf @@ -42,6 +42,11 @@ Unable to display chart + + Details + Details + + Duration Duration diff --git a/src/Aspire.Dashboard/Resources/xlf/ControlsStrings.es.xlf b/src/Aspire.Dashboard/Resources/xlf/ControlsStrings.es.xlf index bc74e1da710..66dcbbe4567 100644 --- a/src/Aspire.Dashboard/Resources/xlf/ControlsStrings.es.xlf +++ b/src/Aspire.Dashboard/Resources/xlf/ControlsStrings.es.xlf @@ -42,6 +42,11 @@ Unable to display chart + + Details + Details + + Duration Duration diff --git a/src/Aspire.Dashboard/Resources/xlf/ControlsStrings.fr.xlf b/src/Aspire.Dashboard/Resources/xlf/ControlsStrings.fr.xlf index 8b1b46e7fbe..b553163d6ee 100644 --- a/src/Aspire.Dashboard/Resources/xlf/ControlsStrings.fr.xlf +++ b/src/Aspire.Dashboard/Resources/xlf/ControlsStrings.fr.xlf @@ -42,6 +42,11 @@ Unable to display chart + + Details + Details + + Duration Duration diff --git a/src/Aspire.Dashboard/Resources/xlf/ControlsStrings.it.xlf b/src/Aspire.Dashboard/Resources/xlf/ControlsStrings.it.xlf index 9e12d4183ce..8e9c12d107f 100644 --- a/src/Aspire.Dashboard/Resources/xlf/ControlsStrings.it.xlf +++ b/src/Aspire.Dashboard/Resources/xlf/ControlsStrings.it.xlf @@ -42,6 +42,11 @@ Unable to display chart + + Details + Details + + Duration Duration diff --git a/src/Aspire.Dashboard/Resources/xlf/ControlsStrings.ja.xlf b/src/Aspire.Dashboard/Resources/xlf/ControlsStrings.ja.xlf index 4191c651cc6..9c9a6a6ac38 100644 --- a/src/Aspire.Dashboard/Resources/xlf/ControlsStrings.ja.xlf +++ b/src/Aspire.Dashboard/Resources/xlf/ControlsStrings.ja.xlf @@ -42,6 +42,11 @@ Unable to display chart + + Details + Details + + Duration Duration diff --git a/src/Aspire.Dashboard/Resources/xlf/ControlsStrings.ko.xlf b/src/Aspire.Dashboard/Resources/xlf/ControlsStrings.ko.xlf index f0357d95edd..0bdeb2eed93 100644 --- a/src/Aspire.Dashboard/Resources/xlf/ControlsStrings.ko.xlf +++ b/src/Aspire.Dashboard/Resources/xlf/ControlsStrings.ko.xlf @@ -42,6 +42,11 @@ Unable to display chart + + Details + Details + + Duration Duration diff --git a/src/Aspire.Dashboard/Resources/xlf/ControlsStrings.pl.xlf b/src/Aspire.Dashboard/Resources/xlf/ControlsStrings.pl.xlf index 89e2793cc85..192f188ddfa 100644 --- a/src/Aspire.Dashboard/Resources/xlf/ControlsStrings.pl.xlf +++ b/src/Aspire.Dashboard/Resources/xlf/ControlsStrings.pl.xlf @@ -42,6 +42,11 @@ Unable to display chart + + Details + Details + + Duration Duration diff --git a/src/Aspire.Dashboard/Resources/xlf/ControlsStrings.pt-BR.xlf b/src/Aspire.Dashboard/Resources/xlf/ControlsStrings.pt-BR.xlf index 01befa6e863..37af519215c 100644 --- a/src/Aspire.Dashboard/Resources/xlf/ControlsStrings.pt-BR.xlf +++ b/src/Aspire.Dashboard/Resources/xlf/ControlsStrings.pt-BR.xlf @@ -42,6 +42,11 @@ Unable to display chart + + Details + Details + + Duration Duration diff --git a/src/Aspire.Dashboard/Resources/xlf/ControlsStrings.ru.xlf b/src/Aspire.Dashboard/Resources/xlf/ControlsStrings.ru.xlf index 8507111205b..8836f18fc98 100644 --- a/src/Aspire.Dashboard/Resources/xlf/ControlsStrings.ru.xlf +++ b/src/Aspire.Dashboard/Resources/xlf/ControlsStrings.ru.xlf @@ -42,6 +42,11 @@ Unable to display chart + + Details + Details + + Duration Duration diff --git a/src/Aspire.Dashboard/Resources/xlf/ControlsStrings.tr.xlf b/src/Aspire.Dashboard/Resources/xlf/ControlsStrings.tr.xlf index 01db061d2c6..bc274f4dee9 100644 --- a/src/Aspire.Dashboard/Resources/xlf/ControlsStrings.tr.xlf +++ b/src/Aspire.Dashboard/Resources/xlf/ControlsStrings.tr.xlf @@ -42,6 +42,11 @@ Unable to display chart + + Details + Details + + Duration Duration diff --git a/src/Aspire.Dashboard/Resources/xlf/ControlsStrings.zh-Hans.xlf b/src/Aspire.Dashboard/Resources/xlf/ControlsStrings.zh-Hans.xlf index 0fdc20f10c4..52091293c23 100644 --- a/src/Aspire.Dashboard/Resources/xlf/ControlsStrings.zh-Hans.xlf +++ b/src/Aspire.Dashboard/Resources/xlf/ControlsStrings.zh-Hans.xlf @@ -42,6 +42,11 @@ Unable to display chart + + Details + Details + + Duration Duration diff --git a/src/Aspire.Dashboard/Resources/xlf/ControlsStrings.zh-Hant.xlf b/src/Aspire.Dashboard/Resources/xlf/ControlsStrings.zh-Hant.xlf index 1da9cd97da2..f24f7efdc39 100644 --- a/src/Aspire.Dashboard/Resources/xlf/ControlsStrings.zh-Hant.xlf +++ b/src/Aspire.Dashboard/Resources/xlf/ControlsStrings.zh-Hant.xlf @@ -42,6 +42,11 @@ Unable to display chart + + Details + Details + + Duration Duration diff --git a/src/Aspire.Dashboard/Resources/xlf/StructuredLogs.cs.xlf b/src/Aspire.Dashboard/Resources/xlf/StructuredLogs.cs.xlf index fe60e5710fa..ae4daf0798a 100644 --- a/src/Aspire.Dashboard/Resources/xlf/StructuredLogs.cs.xlf +++ b/src/Aspire.Dashboard/Resources/xlf/StructuredLogs.cs.xlf @@ -12,11 +12,6 @@ All - - Details - Details - - Edit filter Edit filter diff --git a/src/Aspire.Dashboard/Resources/xlf/StructuredLogs.de.xlf b/src/Aspire.Dashboard/Resources/xlf/StructuredLogs.de.xlf index be2e56f14da..421c66a5741 100644 --- a/src/Aspire.Dashboard/Resources/xlf/StructuredLogs.de.xlf +++ b/src/Aspire.Dashboard/Resources/xlf/StructuredLogs.de.xlf @@ -12,11 +12,6 @@ All - - Details - Details - - Edit filter Edit filter diff --git a/src/Aspire.Dashboard/Resources/xlf/StructuredLogs.es.xlf b/src/Aspire.Dashboard/Resources/xlf/StructuredLogs.es.xlf index 1dacebe98c7..be6ebc25871 100644 --- a/src/Aspire.Dashboard/Resources/xlf/StructuredLogs.es.xlf +++ b/src/Aspire.Dashboard/Resources/xlf/StructuredLogs.es.xlf @@ -12,11 +12,6 @@ All - - Details - Details - - Edit filter Edit filter diff --git a/src/Aspire.Dashboard/Resources/xlf/StructuredLogs.fr.xlf b/src/Aspire.Dashboard/Resources/xlf/StructuredLogs.fr.xlf index 4906d2f28f1..58570a68170 100644 --- a/src/Aspire.Dashboard/Resources/xlf/StructuredLogs.fr.xlf +++ b/src/Aspire.Dashboard/Resources/xlf/StructuredLogs.fr.xlf @@ -12,11 +12,6 @@ All - - Details - Details - - Edit filter Edit filter diff --git a/src/Aspire.Dashboard/Resources/xlf/StructuredLogs.it.xlf b/src/Aspire.Dashboard/Resources/xlf/StructuredLogs.it.xlf index 8890f8b259b..cf70920e2e5 100644 --- a/src/Aspire.Dashboard/Resources/xlf/StructuredLogs.it.xlf +++ b/src/Aspire.Dashboard/Resources/xlf/StructuredLogs.it.xlf @@ -12,11 +12,6 @@ All - - Details - Details - - Edit filter Edit filter diff --git a/src/Aspire.Dashboard/Resources/xlf/StructuredLogs.ja.xlf b/src/Aspire.Dashboard/Resources/xlf/StructuredLogs.ja.xlf index 9fe727ea51c..9570558d353 100644 --- a/src/Aspire.Dashboard/Resources/xlf/StructuredLogs.ja.xlf +++ b/src/Aspire.Dashboard/Resources/xlf/StructuredLogs.ja.xlf @@ -12,11 +12,6 @@ All - - Details - Details - - Edit filter Edit filter diff --git a/src/Aspire.Dashboard/Resources/xlf/StructuredLogs.ko.xlf b/src/Aspire.Dashboard/Resources/xlf/StructuredLogs.ko.xlf index 99784a5e39d..947fdc1aa39 100644 --- a/src/Aspire.Dashboard/Resources/xlf/StructuredLogs.ko.xlf +++ b/src/Aspire.Dashboard/Resources/xlf/StructuredLogs.ko.xlf @@ -12,11 +12,6 @@ All - - Details - Details - - Edit filter Edit filter diff --git a/src/Aspire.Dashboard/Resources/xlf/StructuredLogs.pl.xlf b/src/Aspire.Dashboard/Resources/xlf/StructuredLogs.pl.xlf index e0af1290535..987115765f1 100644 --- a/src/Aspire.Dashboard/Resources/xlf/StructuredLogs.pl.xlf +++ b/src/Aspire.Dashboard/Resources/xlf/StructuredLogs.pl.xlf @@ -12,11 +12,6 @@ All - - Details - Details - - Edit filter Edit filter diff --git a/src/Aspire.Dashboard/Resources/xlf/StructuredLogs.pt-BR.xlf b/src/Aspire.Dashboard/Resources/xlf/StructuredLogs.pt-BR.xlf index 886e072562c..292ec7dbeff 100644 --- a/src/Aspire.Dashboard/Resources/xlf/StructuredLogs.pt-BR.xlf +++ b/src/Aspire.Dashboard/Resources/xlf/StructuredLogs.pt-BR.xlf @@ -12,11 +12,6 @@ All - - Details - Details - - Edit filter Edit filter diff --git a/src/Aspire.Dashboard/Resources/xlf/StructuredLogs.ru.xlf b/src/Aspire.Dashboard/Resources/xlf/StructuredLogs.ru.xlf index bde29f4e7c4..7b4a00a9e36 100644 --- a/src/Aspire.Dashboard/Resources/xlf/StructuredLogs.ru.xlf +++ b/src/Aspire.Dashboard/Resources/xlf/StructuredLogs.ru.xlf @@ -12,11 +12,6 @@ All - - Details - Details - - Edit filter Edit filter diff --git a/src/Aspire.Dashboard/Resources/xlf/StructuredLogs.tr.xlf b/src/Aspire.Dashboard/Resources/xlf/StructuredLogs.tr.xlf index 72f63b45ead..7254db3808d 100644 --- a/src/Aspire.Dashboard/Resources/xlf/StructuredLogs.tr.xlf +++ b/src/Aspire.Dashboard/Resources/xlf/StructuredLogs.tr.xlf @@ -12,11 +12,6 @@ All - - Details - Details - - Edit filter Edit filter diff --git a/src/Aspire.Dashboard/Resources/xlf/StructuredLogs.zh-Hans.xlf b/src/Aspire.Dashboard/Resources/xlf/StructuredLogs.zh-Hans.xlf index c6a684acbc0..999622b309b 100644 --- a/src/Aspire.Dashboard/Resources/xlf/StructuredLogs.zh-Hans.xlf +++ b/src/Aspire.Dashboard/Resources/xlf/StructuredLogs.zh-Hans.xlf @@ -12,11 +12,6 @@ All - - Details - Details - - Edit filter Edit filter diff --git a/src/Aspire.Dashboard/Resources/xlf/StructuredLogs.zh-Hant.xlf b/src/Aspire.Dashboard/Resources/xlf/StructuredLogs.zh-Hant.xlf index ee8259f1b13..b8e270f045b 100644 --- a/src/Aspire.Dashboard/Resources/xlf/StructuredLogs.zh-Hant.xlf +++ b/src/Aspire.Dashboard/Resources/xlf/StructuredLogs.zh-Hant.xlf @@ -12,11 +12,6 @@ All - - Details - Details - - Edit filter Edit filter diff --git a/src/Aspire.Dashboard/Resources/xlf/Traces.cs.xlf b/src/Aspire.Dashboard/Resources/xlf/Traces.cs.xlf index 0ff02907071..3183c4ec2ce 100644 --- a/src/Aspire.Dashboard/Resources/xlf/Traces.cs.xlf +++ b/src/Aspire.Dashboard/Resources/xlf/Traces.cs.xlf @@ -2,11 +2,6 @@ - - Details - Details - - Traces Traces diff --git a/src/Aspire.Dashboard/Resources/xlf/Traces.de.xlf b/src/Aspire.Dashboard/Resources/xlf/Traces.de.xlf index d8e0cf92ec9..49f734aa7a1 100644 --- a/src/Aspire.Dashboard/Resources/xlf/Traces.de.xlf +++ b/src/Aspire.Dashboard/Resources/xlf/Traces.de.xlf @@ -2,11 +2,6 @@ - - Details - Details - - Traces Traces diff --git a/src/Aspire.Dashboard/Resources/xlf/Traces.es.xlf b/src/Aspire.Dashboard/Resources/xlf/Traces.es.xlf index e4bd740dc79..bc2840010bb 100644 --- a/src/Aspire.Dashboard/Resources/xlf/Traces.es.xlf +++ b/src/Aspire.Dashboard/Resources/xlf/Traces.es.xlf @@ -2,11 +2,6 @@ - - Details - Details - - Traces Traces diff --git a/src/Aspire.Dashboard/Resources/xlf/Traces.fr.xlf b/src/Aspire.Dashboard/Resources/xlf/Traces.fr.xlf index 673b1bacc83..1c0089eac8b 100644 --- a/src/Aspire.Dashboard/Resources/xlf/Traces.fr.xlf +++ b/src/Aspire.Dashboard/Resources/xlf/Traces.fr.xlf @@ -2,11 +2,6 @@ - - Details - Details - - Traces Traces diff --git a/src/Aspire.Dashboard/Resources/xlf/Traces.it.xlf b/src/Aspire.Dashboard/Resources/xlf/Traces.it.xlf index 95394c22094..3448b2cc269 100644 --- a/src/Aspire.Dashboard/Resources/xlf/Traces.it.xlf +++ b/src/Aspire.Dashboard/Resources/xlf/Traces.it.xlf @@ -2,11 +2,6 @@ - - Details - Details - - Traces Traces diff --git a/src/Aspire.Dashboard/Resources/xlf/Traces.ja.xlf b/src/Aspire.Dashboard/Resources/xlf/Traces.ja.xlf index bc74062a21a..7a62e7a62ed 100644 --- a/src/Aspire.Dashboard/Resources/xlf/Traces.ja.xlf +++ b/src/Aspire.Dashboard/Resources/xlf/Traces.ja.xlf @@ -2,11 +2,6 @@ - - Details - Details - - Traces Traces diff --git a/src/Aspire.Dashboard/Resources/xlf/Traces.ko.xlf b/src/Aspire.Dashboard/Resources/xlf/Traces.ko.xlf index 6daf40c02e7..92fa73b22fa 100644 --- a/src/Aspire.Dashboard/Resources/xlf/Traces.ko.xlf +++ b/src/Aspire.Dashboard/Resources/xlf/Traces.ko.xlf @@ -2,11 +2,6 @@ - - Details - Details - - Traces Traces diff --git a/src/Aspire.Dashboard/Resources/xlf/Traces.pl.xlf b/src/Aspire.Dashboard/Resources/xlf/Traces.pl.xlf index 463db65caaa..e16e5a87e81 100644 --- a/src/Aspire.Dashboard/Resources/xlf/Traces.pl.xlf +++ b/src/Aspire.Dashboard/Resources/xlf/Traces.pl.xlf @@ -2,11 +2,6 @@ - - Details - Details - - Traces Traces diff --git a/src/Aspire.Dashboard/Resources/xlf/Traces.pt-BR.xlf b/src/Aspire.Dashboard/Resources/xlf/Traces.pt-BR.xlf index 462a50e0d9d..148d059d5d9 100644 --- a/src/Aspire.Dashboard/Resources/xlf/Traces.pt-BR.xlf +++ b/src/Aspire.Dashboard/Resources/xlf/Traces.pt-BR.xlf @@ -2,11 +2,6 @@ - - Details - Details - - Traces Traces diff --git a/src/Aspire.Dashboard/Resources/xlf/Traces.ru.xlf b/src/Aspire.Dashboard/Resources/xlf/Traces.ru.xlf index 51fa8b1e1b5..a7286c88e18 100644 --- a/src/Aspire.Dashboard/Resources/xlf/Traces.ru.xlf +++ b/src/Aspire.Dashboard/Resources/xlf/Traces.ru.xlf @@ -2,11 +2,6 @@ - - Details - Details - - Traces Traces diff --git a/src/Aspire.Dashboard/Resources/xlf/Traces.tr.xlf b/src/Aspire.Dashboard/Resources/xlf/Traces.tr.xlf index 44cce6305af..bc930d7b557 100644 --- a/src/Aspire.Dashboard/Resources/xlf/Traces.tr.xlf +++ b/src/Aspire.Dashboard/Resources/xlf/Traces.tr.xlf @@ -2,11 +2,6 @@ - - Details - Details - - Traces Traces diff --git a/src/Aspire.Dashboard/Resources/xlf/Traces.zh-Hans.xlf b/src/Aspire.Dashboard/Resources/xlf/Traces.zh-Hans.xlf index d340bf99b4c..f285e9e20d5 100644 --- a/src/Aspire.Dashboard/Resources/xlf/Traces.zh-Hans.xlf +++ b/src/Aspire.Dashboard/Resources/xlf/Traces.zh-Hans.xlf @@ -2,11 +2,6 @@ - - Details - Details - - Traces Traces diff --git a/src/Aspire.Dashboard/Resources/xlf/Traces.zh-Hant.xlf b/src/Aspire.Dashboard/Resources/xlf/Traces.zh-Hant.xlf index 1402bf7d0d3..c8b13e7561f 100644 --- a/src/Aspire.Dashboard/Resources/xlf/Traces.zh-Hant.xlf +++ b/src/Aspire.Dashboard/Resources/xlf/Traces.zh-Hant.xlf @@ -2,11 +2,6 @@ - - Details - Details - - Traces Traces diff --git a/src/Aspire.Dashboard/wwwroot/css/app.css b/src/Aspire.Dashboard/wwwroot/css/app.css index a629b521f94..591fd2d53d6 100644 --- a/src/Aspire.Dashboard/wwwroot/css/app.css +++ b/src/Aspire.Dashboard/wwwroot/css/app.css @@ -37,6 +37,7 @@ fluent-toolbar[orientation=horizontal] { --error-ui-foreground-color: #131313; --error-ui-accent-foreground-color: #1d00d0; --reconnection-ui-bg: rgb(255, 255, 255); + --error-counter-badge-foreground-color: var(--neutral-fill-rest); } [data-theme="dark"] { @@ -50,6 +51,7 @@ fluent-toolbar[orientation=horizontal] { --error-ui-foreground-color: #000000; --error-ui-accent-foreground-color: #512bd4; --reconnection-ui-bg: #D6D6D6; + --error-counter-badge-foreground-color: #ffffff; } #components-reconnect-modal :is(h5, p) { @@ -200,3 +202,8 @@ fluent-data-grid-cell .long-inner-content { split-panels::part(handle) { display: none; } + +div.error-counter-badge { + padding: 3px 3px; + color: var(--error-counter-badge-foreground-color) !important; /* color is applied directly to div style, so !important to override since we can't use a more specific selector */ +}