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