From 6593e985fbc4f3b4b2b1fc12a1839b2b715aec99 Mon Sep 17 00:00:00 2001 From: Qinyouzeng <102203523+Qinyouzeng@users.noreply.github.com> Date: Thu, 21 Mar 2024 10:54:21 +0800 Subject: [PATCH] fix: bugs (#468) add breadcrums fix timeline show bug --- .../Components/Apm/ApmLogView.razor | 2 +- .../Components/Apm/ApmSamplePage.razor.cs | 2 +- .../Components/Apm/ApmTraceView.razor | 4 +- .../Masa.Tsc.Web.Admin.Rcl.csproj | 3 +- .../Pages/Apm/Endpoint.razor | 2 +- .../Pages/Apm/EndpointDetail.razor | 4 +- .../Pages/Apm/Endpoints/TimeLine.razor | 51 +++++++++++------ .../Pages/Apm/Endpoints/TimeLine.razor.cs | 57 +++++++++++-------- .../Pages/Apm/ErrorDetail.razor | 2 +- .../Pages/Apm/Errors.razor | 2 +- .../Pages/Apm/Service.razor | 2 +- .../Pages/Apm/ServiceDetail.razor | 2 +- .../Pages/Apm/Services/ServiceEndpoints.razor | 2 +- .../Pages/Apm/Services/ServiceErrors.razor | 2 +- .../Pages/Apm/Services/ShortEndpoint.razor | 2 +- .../Pages/Apm/Services/ShortErrors.razor | 2 +- .../Shared/ApmComponentBase.cs | 2 +- .../wwwroot/css/tsc.css | 4 ++ 18 files changed, 88 insertions(+), 59 deletions(-) diff --git a/src/Web/Masa.Tsc.Web.Admin.Rcl/Components/Apm/ApmLogView.razor b/src/Web/Masa.Tsc.Web.Admin.Rcl/Components/Apm/ApmLogView.razor index e061826f..12bfe284 100644 --- a/src/Web/Masa.Tsc.Web.Admin.Rcl/Components/Apm/ApmLogView.razor +++ b/src/Web/Masa.Tsc.Web.Admin.Rcl/Components/Apm/ApmLogView.razor @@ -13,7 +13,7 @@ - + @I18n.Apm("Log.Dialog.Actions") diff --git a/src/Web/Masa.Tsc.Web.Admin.Rcl/Components/Apm/ApmSamplePage.razor.cs b/src/Web/Masa.Tsc.Web.Admin.Rcl/Components/Apm/ApmSamplePage.razor.cs index 5c2b2975..a032b745 100644 --- a/src/Web/Masa.Tsc.Web.Admin.Rcl/Components/Apm/ApmSamplePage.razor.cs +++ b/src/Web/Masa.Tsc.Web.Admin.Rcl/Components/Apm/ApmSamplePage.razor.cs @@ -26,7 +26,7 @@ private async Task OnNextAsync() private async Task OnPreAsync() { - if (Current - 1 < 0) + if (Current - 1 <= 0) return; Current -= 1; diff --git a/src/Web/Masa.Tsc.Web.Admin.Rcl/Components/Apm/ApmTraceView.razor b/src/Web/Masa.Tsc.Web.Admin.Rcl/Components/Apm/ApmTraceView.razor index 76979e0c..8a95534c 100644 --- a/src/Web/Masa.Tsc.Web.Admin.Rcl/Components/Apm/ApmTraceView.razor +++ b/src/Web/Masa.Tsc.Web.Admin.Rcl/Components/Apm/ApmTraceView.razor @@ -17,10 +17,10 @@ - + @I18n.Apm("Log.Dialog.Actions") - + @I18n.Apm("Log.Dialog.Field") diff --git a/src/Web/Masa.Tsc.Web.Admin.Rcl/Masa.Tsc.Web.Admin.Rcl.csproj b/src/Web/Masa.Tsc.Web.Admin.Rcl/Masa.Tsc.Web.Admin.Rcl.csproj index e488d9b7..e5723f07 100644 --- a/src/Web/Masa.Tsc.Web.Admin.Rcl/Masa.Tsc.Web.Admin.Rcl.csproj +++ b/src/Web/Masa.Tsc.Web.Admin.Rcl/Masa.Tsc.Web.Admin.Rcl.csproj @@ -26,7 +26,8 @@ - + + diff --git a/src/Web/Masa.Tsc.Web.Admin.Rcl/Pages/Apm/Endpoint.razor b/src/Web/Masa.Tsc.Web.Admin.Rcl/Pages/Apm/Endpoint.razor index f7be157b..4062f79e 100644 --- a/src/Web/Masa.Tsc.Web.Admin.Rcl/Pages/Apm/Endpoint.razor +++ b/src/Web/Masa.Tsc.Web.Admin.Rcl/Pages/Apm/Endpoint.razor @@ -25,7 +25,7 @@ @if (context.Header.Value == nameof(ListChartData.Name)) { } diff --git a/src/Web/Masa.Tsc.Web.Admin.Rcl/Pages/Apm/EndpointDetail.razor b/src/Web/Masa.Tsc.Web.Admin.Rcl/Pages/Apm/EndpointDetail.razor index e79edb4b..8e8c43d1 100644 --- a/src/Web/Masa.Tsc.Web.Admin.Rcl/Pages/Apm/EndpointDetail.razor +++ b/src/Web/Masa.Tsc.Web.Admin.Rcl/Pages/Apm/EndpointDetail.razor @@ -1,6 +1,6 @@ @namespace Masa.Tsc.Web.Admin.Rcl.Pages.Apm @inherits ApmComponentBase -@page "/apm/endpoint" +@page "/apm/endpoints/{name}" @I18n.Apm("PageTitles.EndpointDetail") @I18n.Apm("Tabs.Errors") -
+
diff --git a/src/Web/Masa.Tsc.Web.Admin.Rcl/Pages/Apm/Endpoints/TimeLine.razor b/src/Web/Masa.Tsc.Web.Admin.Rcl/Pages/Apm/Endpoints/TimeLine.razor index 3ee8b1fb..4926fcb4 100644 --- a/src/Web/Masa.Tsc.Web.Admin.Rcl/Pages/Apm/Endpoints/TimeLine.razor +++ b/src/Web/Masa.Tsc.Web.Admin.Rcl/Pages/Apm/Endpoints/TimeLine.razor @@ -11,7 +11,7 @@
@(defaultTimeLine?.Trace?.Timestamp.FormatHistory())
|
-
@(defaultTimeLine?.Latency) (@((100*Percentile).ToString("0.##"))% of trace)
+
@(defaultTimeLine?.Latency) (@((100 * Percentile).ToString("0.##"))% of trace)
|
@(defaultTimeLine?.Trace?.Attributes["http.method"]) @(defaultTimeLine?.Trace?.Attributes["http.url"])
@(defaultTimeLine?.Trace?.Attributes["http.status_code"]) @((defaultTimeLine?.Faild ?? false) ? "Failed" : "OK")
@@ -65,6 +65,19 @@ bool hasShow = false; foreach (var timeLine in timeLines) { + var left = timeLine.Left + timeLine.Process; + string className = "d-flex", style = null; + if (timeLine.Left - 35 > 0) + { + if (timeLine.Right -35> 0) + style = $"padding-left:{timeLine.Left}%"; + else + { + className = "d-flex justify-end"; + style = $"padding-right:{timeLine.Right}%"; + } + } +
@if (timeLine.Children != null && timeLine.Children.Any()) @@ -72,23 +85,25 @@ @timeLine.ShowIcon @timeLine.Children.Count }
-
-
-
-
-
-
-
-
- @timeLine.Icon @timeLine.Type
@timeLine.Name
@timeLine.Latency - @if (timeLine.Faild) - { - @I18n.T("failure") - } - @if (timeLine.IsError) - { - View related error - } +
+
+
+
+
+
+
+
+
+ @timeLine.Icon @timeLine.Type
@timeLine.Name
@timeLine.Latency + @if (timeLine.Faild) + { + @I18n.T("failure") + } + @if (timeLine.IsError) + { + View related error + } +
diff --git a/src/Web/Masa.Tsc.Web.Admin.Rcl/Pages/Apm/Endpoints/TimeLine.razor.cs b/src/Web/Masa.Tsc.Web.Admin.Rcl/Pages/Apm/Endpoints/TimeLine.razor.cs index 48eb76c6..fa257f5d 100644 --- a/src/Web/Masa.Tsc.Web.Admin.Rcl/Pages/Apm/Endpoints/TimeLine.razor.cs +++ b/src/Web/Masa.Tsc.Web.Admin.Rcl/Pages/Apm/Endpoints/TimeLine.razor.cs @@ -126,7 +126,6 @@ private void CaculateTimelines(List? traces) Children = GetChildren(item.SpanId, traces) }; timeLine.SetValue(item, start, end, totalDuration, errorStatus); - timeLine.SetChildren(); var spanError = Errors?.FirstOrDefault(t => t.X == item.SpanId); if (spanError != null) { @@ -157,7 +156,6 @@ private List GetChildren(string spanId, List trac Children = GetChildren(item.SpanId, traces) }; timeLine.SetValue(item, start, end, totalDuration, errorStatus); - timeLine.SetChildren(); result.Add(timeLine); } return result; @@ -255,7 +253,7 @@ private void CaculateTotalTime(DateTime start, DateTime end) lastDuration = totalDuration; } - private string GetUrl(TreeLineDto current, bool isSpan = false,string baseUrl= "/apm/logs") + private string GetUrl(TreeLineDto current, bool isSpan = false, string baseUrl = "/apm/logs") { if (current == null) return string.Empty; @@ -269,6 +267,21 @@ private async Task OpenLogAsync(TreeLineDto item) await JSRuntime.InvokeVoidAsync("open", url, "_blank"); } + private static string GetClassStyle(TreeLineDto timeLine) + { + var left = timeLine.Left + timeLine.Process; + if (left - 65 <= 0) + { + if (timeLine.Left - 35 <= 0) + return "class=\"d-flex\""; + return $"class=\"d-flex\" style=\"padding-left:{timeLine.Left}\""; + } + else + { + return $"class=\"d-flex justify-end\" style=\"padding-right:{timeLine.Right}\""; + } + } + private StringNumber index = 1; } @@ -325,11 +338,11 @@ public bool IsError public TraceResponseDto Trace { get; set; } - public double Left { get; set; } + public int Left { get; set; } - public double Right { get; set; } + public int Right { get; set; } - public double Process { get; set; } + public int Process { get; set; } public bool Show { get; set; } = true; @@ -386,25 +399,21 @@ public void SetValue(TraceResponseDto trace, DateTime start, DateTime end, int t Faild = true; } - Left = Math.Round(Math.Floor((trace.Timestamp - start).TotalMilliseconds) * 100 / total, 2); - Process = Math.Round(Math.Floor((trace.EndTimestamp - trace.Timestamp).TotalMilliseconds) * 100 / total, 2); - //if (Process - 10 < 0) Process = 10; - Right = 100 - Left - Process; - } - - public void SetChildren() - { - if (Children == null || !Children.Any()) - return; - - double right = 100; - - foreach (var item in Children) + Left = (int)Math.Floor(Math.Floor((trace.Timestamp - start).TotalMilliseconds) * 100 / total); + Process = (int)Math.Floor(Math.Floor((trace.EndTimestamp - trace.Timestamp).TotalMilliseconds) * 100 / total); + if (Process - 1 < 0) Process = 1; + if (Process + Left - 100 > 0) { - item.Left = Left + Process - item.Process; - right -= (item.Left + item.Process); + Left = 100 - Process; + } + else + { + Right = 100 - Left - Process; + if (Right < 0) + { + Right = 0; + Left = 100 - Process; + } } - var lastChild = Children[Children.Count - 1]; - lastChild.Right = right; } } diff --git a/src/Web/Masa.Tsc.Web.Admin.Rcl/Pages/Apm/ErrorDetail.razor b/src/Web/Masa.Tsc.Web.Admin.Rcl/Pages/Apm/ErrorDetail.razor index db6874d0..3dcd083e 100644 --- a/src/Web/Masa.Tsc.Web.Admin.Rcl/Pages/Apm/ErrorDetail.razor +++ b/src/Web/Masa.Tsc.Web.Admin.Rcl/Pages/Apm/ErrorDetail.razor @@ -1,6 +1,6 @@ @namespace Masa.Tsc.Web.Admin.Rcl.Pages.Apm @inherits ApmComponentBase -@page "/apm/error" +@page "/apm/errors/{name}" @I18n.Apm("PageTitles.ErrorDetail") diff --git a/src/Web/Masa.Tsc.Web.Admin.Rcl/Pages/Apm/Errors.razor b/src/Web/Masa.Tsc.Web.Admin.Rcl/Pages/Apm/Errors.razor index 2e958139..55ecca56 100644 --- a/src/Web/Masa.Tsc.Web.Admin.Rcl/Pages/Apm/Errors.razor +++ b/src/Web/Masa.Tsc.Web.Admin.Rcl/Pages/Apm/Errors.razor @@ -25,7 +25,7 @@ + href="/apm/errors/@(HttpUtility.UrlEncode(context.Item.Type)+GetUrlParam(service:Search.Service,env: GetSearchEnv(Search.Enviroment), comparisonType: Search.ComparisonType, start: Search.Start, end: Search.End,exType:context.Item.Type,search:Search.Text))"> @context.Item.Type } diff --git a/src/Web/Masa.Tsc.Web.Admin.Rcl/Pages/Apm/Service.razor b/src/Web/Masa.Tsc.Web.Admin.Rcl/Pages/Apm/Service.razor index 88f12429..a56fd802 100644 --- a/src/Web/Masa.Tsc.Web.Admin.Rcl/Pages/Apm/Service.razor +++ b/src/Web/Masa.Tsc.Web.Admin.Rcl/Pages/Apm/Service.razor @@ -23,7 +23,7 @@ @if (context.Header.Value == nameof(ListChartData.Name)) { - @context.Item.Name + @context.Item.Name } else if (context.Header.Value == nameof(ListChartData.Envs)) { diff --git a/src/Web/Masa.Tsc.Web.Admin.Rcl/Pages/Apm/ServiceDetail.razor b/src/Web/Masa.Tsc.Web.Admin.Rcl/Pages/Apm/ServiceDetail.razor index dc0ec905..2a8b1d3c 100644 --- a/src/Web/Masa.Tsc.Web.Admin.Rcl/Pages/Apm/ServiceDetail.razor +++ b/src/Web/Masa.Tsc.Web.Admin.Rcl/Pages/Apm/ServiceDetail.razor @@ -1,6 +1,6 @@ @namespace Masa.Tsc.Web.Admin.Rcl.Pages.Apm @inherits ApmComponentBase -@page "/apm/service" +@page "/apm/services/{name}" @I18n.Apm("PageTitles.ServiceDetail") - @context.Item.Name
} diff --git a/src/Web/Masa.Tsc.Web.Admin.Rcl/Pages/Apm/Services/ServiceErrors.razor b/src/Web/Masa.Tsc.Web.Admin.Rcl/Pages/Apm/Services/ServiceErrors.razor index b99b8cff..ef0785fc 100644 --- a/src/Web/Masa.Tsc.Web.Admin.Rcl/Pages/Apm/Services/ServiceErrors.razor +++ b/src/Web/Masa.Tsc.Web.Admin.Rcl/Pages/Apm/Services/ServiceErrors.razor @@ -32,7 +32,7 @@ + href="/apm/errors/@(HttpUtility.UrlEncode(context.Item.Type)+GetUrlParam(service:SearchData.Service,env: GetSearchEnv(SearchData.Enviroment), comparisonType: SearchData.ComparisonType, start: SearchData.Start, end: SearchData.End,exType:context.Item.Type))"> @context.Item.Type } diff --git a/src/Web/Masa.Tsc.Web.Admin.Rcl/Pages/Apm/Services/ShortEndpoint.razor b/src/Web/Masa.Tsc.Web.Admin.Rcl/Pages/Apm/Services/ShortEndpoint.razor index 5c2a4c58..6a6a71bc 100644 --- a/src/Web/Masa.Tsc.Web.Admin.Rcl/Pages/Apm/Services/ShortEndpoint.razor +++ b/src/Web/Masa.Tsc.Web.Admin.Rcl/Pages/Apm/Services/ShortEndpoint.razor @@ -16,7 +16,7 @@ @if (context.Header.Value == nameof(ListChartData.Name)) { } diff --git a/src/Web/Masa.Tsc.Web.Admin.Rcl/Pages/Apm/Services/ShortErrors.razor b/src/Web/Masa.Tsc.Web.Admin.Rcl/Pages/Apm/Services/ShortErrors.razor index 803cba3e..31701364 100644 --- a/src/Web/Masa.Tsc.Web.Admin.Rcl/Pages/Apm/Services/ShortErrors.razor +++ b/src/Web/Masa.Tsc.Web.Admin.Rcl/Pages/Apm/Services/ShortErrors.razor @@ -18,7 +18,7 @@ + href="/apm/errors/@(HttpUtility.UrlEncode(context.Item.Type)+GetUrlParam(service:SearchData.Service,env: GetSearchEnv(SearchData.Enviroment), comparisonType: SearchData.ComparisonType, start: SearchData.Start, end: SearchData.End,exType:context.Item.Type,search:SearchData.Text))"> @context.Item.Type } diff --git a/src/Web/Masa.Tsc.Web.Admin.Rcl/Shared/ApmComponentBase.cs b/src/Web/Masa.Tsc.Web.Admin.Rcl/Shared/ApmComponentBase.cs index 28a80460..72cc37d9 100644 --- a/src/Web/Masa.Tsc.Web.Admin.Rcl/Shared/ApmComponentBase.cs +++ b/src/Web/Masa.Tsc.Web.Admin.Rcl/Shared/ApmComponentBase.cs @@ -21,7 +21,7 @@ public partial class ApmComponentBase : BDomComponentBase, IAsyncDisposable public async ValueTask DisposeAsync() { - base.Dispose(true); + //base.Dispose(true); await Task.CompletedTask; } diff --git a/src/Web/Masa.Tsc.Web.Admin.Rcl/wwwroot/css/tsc.css b/src/Web/Masa.Tsc.Web.Admin.Rcl/wwwroot/css/tsc.css index 4ac68e54..bf748f3d 100644 --- a/src/Web/Masa.Tsc.Web.Admin.Rcl/wwwroot/css/tsc.css +++ b/src/Web/Masa.Tsc.Web.Admin.Rcl/wwwroot/css/tsc.css @@ -399,4 +399,8 @@ div[style*="visibility: hidden; opacity: 0;"] { .edit .m-slide-group__content { cursor: move; +} + +.m-breadcrumbs__item { + max-width: 600px !important } \ No newline at end of file