From 67e8e3cbebf6d958223753541cafaf714e86cdb6 Mon Sep 17 00:00:00 2001 From: Dmytro Bogatov <dmytro@dbogatov.org> Date: Tue, 8 Aug 2017 15:10:09 +0300 Subject: [PATCH] Add links from health reports and discrepancies. --- client/ts/modules/metric-page/health.ts | 9 ++++++--- src/shared/Extensions/DateTimeExtensions.cs | 4 ++++ src/web/Controllers/View/AccountController.cs | 2 +- .../Shared/Components/DiscrepancyCard/Default.cshtml | 11 +++++++++++ 4 files changed, 22 insertions(+), 4 deletions(-) diff --git a/client/ts/modules/metric-page/health.ts b/client/ts/modules/metric-page/health.ts index 8424149..eca8997 100644 --- a/client/ts/modules/metric-page/health.ts +++ b/client/ts/modules/metric-page/health.ts @@ -207,7 +207,10 @@ export class HealthMetricPage extends MetricPage<Metric<HealthDataPoint>> { <h4 class="modal-title"> Health report details | Health ${e.detail.health}% | ${timestamp} <small> - Inspect metric labels at the moment report was generated + Inspect metric labels at the moment report was generated. + <a href="/home/metric/${this.metric.metricType}/${this.metric.source}/${new Date(timestamp.getTime() - 2 * 60 * 1000).getTime()}/${new Date(timestamp.getTime() + 2 * 60 * 1000).getTime()}"> + View data at that moment. + </a> </small> </h4> </div> @@ -267,10 +270,10 @@ export class HealthMetricPage extends MetricPage<Metric<HealthDataPoint>> { $(`#modal-details-${timestamp.getTime()}`).modal(); $(`#modal-details-${timestamp.getTime()}`).on( - "hidden.bs.modal", + "hidden.bs.modal", () => $(".health-details-modal").remove() ); - + }, false); diff --git a/src/shared/Extensions/DateTimeExtensions.cs b/src/shared/Extensions/DateTimeExtensions.cs index 41e0be2..95d166f 100644 --- a/src/shared/Extensions/DateTimeExtensions.cs +++ b/src/shared/Extensions/DateTimeExtensions.cs @@ -22,5 +22,9 @@ namespace StatusMonitor.Shared.Extensions ? value.ToString() : TimeZoneInfo.ConvertTime(value, TimeZoneInfo.FindSystemTimeZoneById(timeZoneId)).ToString(); } + + public static long TotalMilliseconds(this DateTime value) => + Convert.ToInt64((value - new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc)).TotalMilliseconds); + } } diff --git a/src/web/Controllers/View/AccountController.cs b/src/web/Controllers/View/AccountController.cs index f6cd84c..db7fb58 100644 --- a/src/web/Controllers/View/AccountController.cs +++ b/src/web/Controllers/View/AccountController.cs @@ -75,7 +75,7 @@ namespace StatusMonitor.Web.Controllers.View TempData["MessageSeverity"] = "info"; TempData["MessageContent"] = $"You have logged in."; - + if (string.IsNullOrEmpty(Request.Query["returnurl"])) { return RedirectToAction("Index", "Home"); diff --git a/src/web/Views/Shared/Components/DiscrepancyCard/Default.cshtml b/src/web/Views/Shared/Components/DiscrepancyCard/Default.cshtml index d246854..0ae5440 100644 --- a/src/web/Views/Shared/Components/DiscrepancyCard/Default.cshtml +++ b/src/web/Views/Shared/Components/DiscrepancyCard/Default.cshtml @@ -1,3 +1,5 @@ +@using StatusMonitor.Shared.Extensions + <div class="list-group-item media discrepancy-card discrepancy-@(Model.Resolved ? "resolved" : "unresolved")" data-number="@ViewBag.Number" @@ -39,11 +41,20 @@ <div class="media-body"> <div class="lgi-heading"> Discrepancy of type <strong>@Model.Type</strong> from + @{ + var start = Convert.ToInt64((Model.DateFirstOffense.AddMinutes(-2) - new DateTime(1970, 1, 1)).TotalMilliseconds); + var end = + Model.Resolved ? + Convert.ToInt64((Model.DateResolved.AddMinutes(2) - new DateTime(1970, 1, 1)).TotalMilliseconds) : + Convert.ToInt64((Model.DateFirstOffense.AddMinutes(15) - new DateTime(1970, 1, 1)).TotalMilliseconds); + } <a asp-controller="Home" asp-action="Metric" asp-route-type="@Model.MetricType" asp-route-source="@Model.MetricSource" + asp-route-start="@start" + asp-route-end="@end" > <em>@Model.MetricType</em> of <em>@Model.MetricSource</em> </a> -- GitLab