diff --git a/samples/Samples.AspNetCore2/Controllers/TestController.cs b/samples/Samples.AspNetCore2/Controllers/TestController.cs
index 84dc2b677..424b1dc65 100644
--- a/samples/Samples.AspNetCore2/Controllers/TestController.cs
+++ b/samples/Samples.AspNetCore2/Controllers/TestController.cs
@@ -266,6 +266,41 @@ public IActionResult MinSaveMs()
return Content("All good");
}
+ public IActionResult Errored()
+ {
+ var profiler = MiniProfiler.Current;
+
+ using (profiler.StepIf("Stall step", 50))
+ {
+ Thread.Sleep(60);
+ }
+
+ using (profiler.StepIf("Show show up with children", 10, true))
+ {
+ Thread.Sleep(5);
+ using (profiler.Step("Step A"))
+ {
+ Thread.Sleep(10);
+ }
+ using (profiler.Step("Step B"))
+ {
+ Thread.Sleep(10);
+ }
+ using (profiler.StepIf("Should not show up", 15))
+ {
+ Thread.Sleep(10);
+ }
+ }
+
+ using (var step = profiler.CustomTimingIf("error", "Should show up as warning: some exception message", 5))
+ {
+ step.Errored = true;
+ Thread.Sleep(10);
+ }
+
+ return Content("All good...except the error!");
+ }
+
public IActionResult ParameterizedSqlWithEnums()
{
using (var conn = GetConnection())
diff --git a/samples/Samples.AspNetCore2/Views/Shared/Index.LeftPanel.cshtml b/samples/Samples.AspNetCore2/Views/Shared/Index.LeftPanel.cshtml
index fc3ffcb92..fe1448624 100644
--- a/samples/Samples.AspNetCore2/Views/Shared/Index.LeftPanel.cshtml
+++ b/samples/Samples.AspNetCore2/Views/Shared/Index.LeftPanel.cshtml
@@ -13,6 +13,7 @@
Multiple Redirects
View Profiling
Entity Framework Core
+ Error test
Area Route
diff --git a/samples/Samples.AspNetCore3/Controllers/TestController.cs b/samples/Samples.AspNetCore3/Controllers/TestController.cs
index 84dc2b677..424b1dc65 100644
--- a/samples/Samples.AspNetCore3/Controllers/TestController.cs
+++ b/samples/Samples.AspNetCore3/Controllers/TestController.cs
@@ -266,6 +266,41 @@ public IActionResult MinSaveMs()
return Content("All good");
}
+ public IActionResult Errored()
+ {
+ var profiler = MiniProfiler.Current;
+
+ using (profiler.StepIf("Stall step", 50))
+ {
+ Thread.Sleep(60);
+ }
+
+ using (profiler.StepIf("Show show up with children", 10, true))
+ {
+ Thread.Sleep(5);
+ using (profiler.Step("Step A"))
+ {
+ Thread.Sleep(10);
+ }
+ using (profiler.Step("Step B"))
+ {
+ Thread.Sleep(10);
+ }
+ using (profiler.StepIf("Should not show up", 15))
+ {
+ Thread.Sleep(10);
+ }
+ }
+
+ using (var step = profiler.CustomTimingIf("error", "Should show up as warning: some exception message", 5))
+ {
+ step.Errored = true;
+ Thread.Sleep(10);
+ }
+
+ return Content("All good...except the error!");
+ }
+
public IActionResult ParameterizedSqlWithEnums()
{
using (var conn = GetConnection())
diff --git a/samples/Samples.AspNetCore3/Views/Shared/Index.LeftPanel.cshtml b/samples/Samples.AspNetCore3/Views/Shared/Index.LeftPanel.cshtml
index fc3ffcb92..fe1448624 100644
--- a/samples/Samples.AspNetCore3/Views/Shared/Index.LeftPanel.cshtml
+++ b/samples/Samples.AspNetCore3/Views/Shared/Index.LeftPanel.cshtml
@@ -13,6 +13,7 @@
Multiple Redirects
View Profiling
Entity Framework Core
+ Error test
Area Route
diff --git a/src/MiniProfiler.Shared/ui/includes.css b/src/MiniProfiler.Shared/ui/includes.css
index 401ca0c44..c77c49ee9 100644
--- a/src/MiniProfiler.Shared/ui/includes.css
+++ b/src/MiniProfiler.Shared/ui/includes.css
@@ -191,6 +191,10 @@
.mp-result .mp-timings .mp-queries-show .mp-unit {
color: #0077cc;
}
+.mp-result .mp-timings .mp-queries-show.mp-queries-warning {
+ color: #C91D2E;
+ font-weight: bold;
+}
.mp-result .mp-timings .mp-queries-duration {
padding-left: 6px;
}
@@ -453,6 +457,13 @@
.mp-results .mp-button {
user-select: none;
}
+.mp-results .mp-button.mp-button-warning {
+ font-weight: bold;
+ background-color: #E06C77;
+}
+.mp-results .mp-button.mp-button-warning .mp-unit {
+ color: #ddd;
+}
.mp-results .mp-button .mp-warning {
font-weight: bold;
}
diff --git a/src/MiniProfiler.Shared/ui/includes.less b/src/MiniProfiler.Shared/ui/includes.less
index 125d3e86c..dd61852ef 100644
--- a/src/MiniProfiler.Shared/ui/includes.less
+++ b/src/MiniProfiler.Shared/ui/includes.less
@@ -217,6 +217,11 @@
.mp-number, .mp-unit {
color: #0077cc;
}
+
+ &.mp-queries-warning {
+ color: #C91D2E;
+ font-weight: bold;
+ }
}
.mp-queries-duration {
@@ -529,6 +534,15 @@
.mp-button {
user-select: none;
+ &.mp-button-warning {
+ font-weight: bold;
+ background-color: #E06C77;
+
+ .mp-unit {
+ color: #ddd;
+ }
+ }
+
.mp-warning {
font-weight: bold;
}
diff --git a/src/MiniProfiler.Shared/ui/includes.min.css b/src/MiniProfiler.Shared/ui/includes.min.css
index 57e9f68d2..10772abd7 100644
--- a/src/MiniProfiler.Shared/ui/includes.min.css
+++ b/src/MiniProfiler.Shared/ui/includes.min.css
@@ -1 +1 @@
-.mp-result,.mp-queries{color:#555;line-height:1;font-size:12px;}.mp-result pre,.mp-queries pre,.mp-result code,.mp-queries code,.mp-result label,.mp-queries label,.mp-result table,.mp-queries table,.mp-result tbody,.mp-queries tbody,.mp-result thead,.mp-queries thead,.mp-result tfoot,.mp-queries tfoot,.mp-result tr,.mp-queries tr,.mp-result th,.mp-queries th,.mp-result td,.mp-queries td{margin:0;padding:0;border:0;font-size:100%;font:inherit;vertical-align:baseline;background-color:transparent;overflow:visible;max-height:none;}.mp-result pre,.mp-queries pre,.mp-result code,.mp-queries code{font-family:Fira Code,Consolas,monospace,serif;font-variant-ligatures:none;}.mp-result table,.mp-queries table{border-collapse:collapse;border-spacing:0;width:100%;}.mp-result a,.mp-queries a{cursor:pointer;color:#07c;text-decoration:none;}.mp-result a:hover,.mp-queries a:hover{text-decoration:underline;}.mp-result{font-family:sans-serif;}.mp-result.show-columns th.mp-more-columns,.mp-result.show-columns td.mp-more-columns{display:table-cell !important;}.mp-result.show-columns a.mp-more-columns{display:inline-block;}.mp-result.show-columns .mp-links span a:nth-child(1){display:none;}.mp-result.show-trivial tr.mp-trivial{display:table-row !important;}.mp-result.show-trivial a.mp-trivial{display:inline-block;}.mp-result.show-trivial .mp-links span a:nth-child(3){display:none;}.mp-result table.mp-client-timings{margin-top:10px;}.mp-result table.mp-client-timings td:nth-child(2){width:100%;padding:0;}.mp-result table.mp-client-timings td div{height:13px;min-width:1px;}.mp-result table.mp-client-timings .t-point div{height:4px;border-radius:8px;margin-bottom:4px;box-shadow:0 0 2px;}.mp-result table.mp-client-timings .t-unknown div{background:#80ccda;}.mp-result table.mp-client-timings .t-dns div{background:#8baad1;}.mp-result table.mp-client-timings .t-connect div{background:#8cbb4e;}.mp-result table.mp-client-timings .t-ssl div{background:#795892;}.mp-result table.mp-client-timings .t-request div{background:#0099b2;}.mp-result table.mp-client-timings .t-response div{background:#d99d35;}.mp-result table.mp-client-timings .t-dom div{background:#bd4d32;}.mp-result table.mp-client-timings .t-domcontent div{background:#dd4678;}.mp-result table.mp-client-timings .t-load div{background:#1d72aa;}.mp-result table.mp-client-timings .t-paint div{background:#bc41e3;}.mp-result .mp-label{color:#555;overflow:hidden;text-overflow:ellipsis;}.mp-result .mp-unit{color:#aaa;}.mp-result .mp-more-columns{display:none;}.mp-result .mp-trivial{display:none;}.mp-result .mp-trivial td,.mp-result .mp-trivial td *{color:#aaa !important;}.mp-result .mp-number{color:#111;}.mp-result .mp-info>div{white-space:nowrap;overflow:hidden;}.mp-result .mp-info>div>div{display:inline-block;}.mp-result .mp-info .mp-name{display:inline-block;font-weight:bold;float:left;}.mp-result .mp-info .mp-machine-name,.mp-result .mp-info .mp-started{text-align:right;float:right;}.mp-result .mp-info .mp-server-time{white-space:nowrap;}.mp-result .mp-timings th{background-color:#fff;color:#aaa;text-align:right;}.mp-result .mp-timings th,.mp-result .mp-timings td{white-space:nowrap;}.mp-result .mp-timings .mp-show-more{display:none;}.mp-result .mp-timings .mp-duration{font-family:Consolas,monospace,serif;color:#111;text-align:right;}.mp-result .mp-timings .mp-indent{letter-spacing:4px;}.mp-result .mp-timings .mp-queries-show .mp-number,.mp-result .mp-timings .mp-queries-show .mp-unit{color:#07c;}.mp-result .mp-timings .mp-queries-duration{padding-left:6px;}.mp-result .mp-timings:not(.mp-client-timings) .mp-trivial:first-child{display:table-row;}.mp-result .mp-custom-timing-overview{float:right;margin:10px 0;width:auto;}.mp-result .mp-custom-timing-overview td{white-space:nowrap;text-align:right;}.mp-result .mp-custom-timing-overview td:last-child{padding-left:8px;}.mp-result .mp-links{margin-top:10px;clear:both;}.mp-result .mp-links span{float:right;}.mp-result .mp-links a{font-size:95%;margin-left:12px;}.mp-result .mp-links a:first-child{margin-left:0;}.mp-warning{color:#f00;}@keyframes mp-fadeIn{from{background-color:#ffb;}to{background-color:none;}}.mp-overlay{z-index:2147483642;}.mp-overlay .mp-overlay-bg{z-index:2147483643;background:#000;opacity:.5;top:0;left:0;min-width:100%;position:fixed;height:calc(100%);}.mp-overlay .mp-queries{display:block;z-index:2147483644;top:25px;left:25px;right:25px;position:fixed;max-height:calc(100vh - 50px);background-color:#fff;border-radius:2px;overflow-y:auto;overflow-x:auto;}.mp-queries{font-family:sans-serif;}.mp-queries pre{white-space:pre-wrap;}.mp-queries div{text-align:left;}.mp-queries table{table-layout:fixed;}.mp-queries td,.mp-queries th{padding:8px;border-bottom:solid 1px #efefef;}.mp-queries td:first-child,.mp-queries th:first-child{width:250px;text-align:right;}.mp-queries td:first-child div,.mp-queries th:first-child div{text-align:right;margin-bottom:5px;word-break:break-word;}.mp-queries td:last-child,.mp-queries th:last-child{text-align:left;padding-right:15px;}.mp-queries .highlight{animation:mp-fadeIn 2s 1;}.mp-queries .mp-odd{background-color:#f5f5f5;}.mp-queries .mp-stack-trace{padding-bottom:1px;color:#aab;margin-bottom:5px;}.mp-queries .mp-since-start,.mp-queries .mp-duration{text-align:right;}.mp-queries.show-trivial .mp-gap-info.mp-trivial-gap{display:table-row;}.mp-queries .mp-gap-info{background-color:#e1e5ed;opacity:.8;color:#444;}.mp-queries .mp-gap-info .query{word-break:break-all;}.mp-queries .mp-gap-info .mp-unit{color:#777;}.mp-queries .mp-gap-info.mp-trivial-gap{display:none;}.mp-queries .mp-trivial-gap-container{text-align:center;margin:8px 0;}.mp-queries .mp-call-type{font-weight:bold;}.mp-queries .hljs{display:block;overflow-x:auto;padding:.5em;}.mp-queries .hljs,.mp-queries .hljs-subst{color:#000;}.mp-queries .hljs-string,.mp-queries .hljs-meta,.mp-queries .hljs-symbol,.mp-queries .hljs-template-tag,.mp-queries .hljs-template-variable,.mp-queries .hljs-addition{color:#756bb1;}.mp-queries .hljs-comment,.mp-queries .hljs-quote{color:#636363;}.mp-queries .hljs-number,.mp-queries .hljs-regexp,.mp-queries .hljs-literal,.mp-queries .hljs-bullet,.mp-queries .hljs-link{color:#31a354;}.mp-queries .hljs-deletion,.mp-queries .hljs-variable{color:#88f;}.mp-queries .hljs-keyword,.mp-queries .hljs-selector-tag,.mp-queries .hljs-title,.mp-queries .hljs-section,.mp-queries .hljs-built_in,.mp-queries .hljs-doctag,.mp-queries .hljs-type,.mp-queries .hljs-tag,.mp-queries .hljs-name,.mp-queries .hljs-selector-id,.mp-queries .hljs-selector-class,.mp-queries .hljs-strong{color:#3182bd;}.mp-queries .hljs-emphasis{font-style:italic;}.mp-queries .hljs-attribute{color:#e6550d;}.mp-results{z-index:2147483641;position:fixed;top:0;}.mp-results.mp-left,.mp-results.mp-bottomleft{left:0;}.mp-results.mp-left .mp-controls,.mp-results.mp-left.mp-no-controls .mp-result:last-child .mp-button{border-bottom-right-radius:10px;}.mp-results.mp-left .mp-button,.mp-results.mp-left .mp-controls{border-right:solid .5px #ababab;}.mp-results.mp-right{right:0;}.mp-results.mp-right .mp-controls,.mp-results.mp-right.mp-no-controls .mp-result:last-child .mp-button{border-bottom-left-radius:10px;}.mp-results.mp-right .mp-button,.mp-results.mp-right .mp-controls{border-left:solid .5px #ababab;}.mp-results.mp-bottomleft{top:inherit;bottom:0;}.mp-results.mp-bottomleft .mp-result:first-child .mp-button{border-top-right-radius:10px;}.mp-results.mp-bottomleft .mp-button,.mp-results.mp-bottomleft .mp-controls{border-right:solid .5px #ababab;}.mp-results.mp-bottomleft .mp-result .mp-button,.mp-results.mp-bottomleft .mp-controls{border-bottom:0;border-top:solid .5px #ababab;}.mp-results.mp-bottomright{top:inherit;bottom:0;right:0;}.mp-results.mp-bottomright .mp-result:first-child .mp-button{border-top-left-radius:10px;}.mp-results.mp-bottomright .mp-button,.mp-results.mp-bottomright .mp-controls{border-left:solid .5px #ababab;}.mp-results.mp-bottomright .mp-result .mp-button,.mp-results.mp-bottomright .mp-controls{border-bottom:0;border-top:solid .5px #ababab;}.mp-results .mp-button{user-select:none;}.mp-results .mp-button .mp-warning{font-weight:bold;}.mp-results .mp-button>.mp-number{font-family:Consolas,monospace,serif;}.mp-results .mp-controls{display:none;}.mp-results .mp-button,.mp-results .mp-controls{z-index:2147483640;border-bottom:solid .5px #ababab;background-color:#fff;padding:4px 8px;text-align:right;cursor:pointer;}.mp-results .mp-result{position:relative;}.mp-results .mp-result.active .mp-button{background-color:#207ab7;animation:none;border-radius:0 !important;}.mp-results .mp-result.active .mp-button .mp-number,.mp-results .mp-result.active .mp-button .mp-warning{color:#fff;font-weight:bold;}.mp-results .mp-result.active .mp-button .mp-unit{color:#fff;font-weight:normal;}.mp-results .mp-result.active .mp-popup{display:block;}.mp-results.new .mp-button{animation:mp-fadeIn 2s 1;}.mp-results .mp-controls{display:block;font-size:12px;font-family:Consolas,monospace,serif;cursor:default;text-align:center;}.mp-results .mp-controls span{border-right:1px solid #aaa;padding-right:5px;margin-right:5px;cursor:pointer;}.mp-results .mp-controls span:last-child{border-right:none;}.mp-results .mp-popup{display:none;z-index:2147483641;position:absolute;background-color:#fff;padding:5px 10px;text-align:left;line-height:18px;overflow:auto;box-shadow:0 1px 10px #555;border-radius:2px;}.mp-results .mp-popup .mp-info{margin-bottom:3px;padding-bottom:2px;border-bottom:1px solid #ddd;}.mp-results .mp-popup .mp-info .mp-name{font-size:1.1em;}.mp-results .mp-popup .mp-info .mp-overall-duration{color:#aaa;}.mp-results .mp-popup .mp-timings th,.mp-results .mp-popup .mp-timings td{padding:0 6px;}.mp-results .mp-popup .mp-timings th{font-size:95%;padding-bottom:3px;}.mp-results .mp-popup .mp-timings .mp-label{max-width:275px;}.mp-results .mp-queries{display:none;}.mp-results.mp-min .mp-result{display:none;}.mp-results.mp-min .mp-controls span{display:none;}.mp-results.mp-min .mp-controls .mp-min-max{border-right:none;padding:0;margin:0;}.mp-result-full .mp-result{width:950px;margin:25px auto;}.mp-result-full .mp-result .mp-button{display:none;}.mp-result-full .mp-result .mp-popup .mp-info{font-size:18px;border-bottom:1px solid #aaa;padding-bottom:3px;margin-bottom:10px;}.mp-result-full .mp-result .mp-popup .mp-info .mp-name{margin-bottom:5px;}.mp-result-full .mp-result .mp-popup .mp-info .mp-overall-duration,.mp-result-full .mp-result .mp-popup .mp-info .mp-started{font-size:80%;color:#888;}.mp-result-full .mp-result .mp-popup .mp-info .mp-overall-duration{padding-right:20px;}.mp-result-full .mp-result .mp-popup .mp-timings td,.mp-result-full .mp-result .mp-popup .mp-timings th{font-size:13px;padding-left:8px;padding-right:8px;}.mp-result-full .mp-result .mp-popup .mp-timings th{padding-bottom:7px;}.mp-result-full .mp-result .mp-popup .mp-timings td{padding-bottom:4px;}.mp-result-full .mp-result .mp-popup .mp-timings td:first-child{padding-left:10px;}.mp-result-full .mp-result .mp-popup .mp-timings .mp-label{max-width:550px;}.mp-result-full .mp-result .mp-queries{margin:20px 0;}.mp-result-full .mp-result .mp-queries th{font-size:16px;color:#555;}.mp-result-full .mp-share-mp-results{display:none;}table.mp-results-index{border:0;border-spacing:0;font-size:12px;font-family:Arial;}table.mp-results-index tbody tr:nth-child(odd){background-color:#e5e5e5;}table.mp-results-index tbody tr:nth-child(even){background-color:#fff;}table.mp-results-index tbody td{text-align:center;}table.mp-results-index tbody td:first-child{text-align:left;}table.mp-results-index tbody td:nth-child(3){color:#666;}table.mp-results-index tbody td[colspan="3"]{color:#aaa;}table.mp-results-index thead tr{color:#444;}table.mp-results-index thead tr th{padding:5px 15px;}table.mp-results-index td{padding:8px;}
\ No newline at end of file
+.mp-result,.mp-queries{color:#555;line-height:1;font-size:12px;}.mp-result pre,.mp-queries pre,.mp-result code,.mp-queries code,.mp-result label,.mp-queries label,.mp-result table,.mp-queries table,.mp-result tbody,.mp-queries tbody,.mp-result thead,.mp-queries thead,.mp-result tfoot,.mp-queries tfoot,.mp-result tr,.mp-queries tr,.mp-result th,.mp-queries th,.mp-result td,.mp-queries td{margin:0;padding:0;border:0;font-size:100%;font:inherit;vertical-align:baseline;background-color:transparent;overflow:visible;max-height:none;}.mp-result pre,.mp-queries pre,.mp-result code,.mp-queries code{font-family:Fira Code,Consolas,monospace,serif;font-variant-ligatures:none;}.mp-result table,.mp-queries table{border-collapse:collapse;border-spacing:0;width:100%;}.mp-result a,.mp-queries a{cursor:pointer;color:#07c;text-decoration:none;}.mp-result a:hover,.mp-queries a:hover{text-decoration:underline;}.mp-result{font-family:sans-serif;}.mp-result.show-columns th.mp-more-columns,.mp-result.show-columns td.mp-more-columns{display:table-cell !important;}.mp-result.show-columns a.mp-more-columns{display:inline-block;}.mp-result.show-columns .mp-links span a:nth-child(1){display:none;}.mp-result.show-trivial tr.mp-trivial{display:table-row !important;}.mp-result.show-trivial a.mp-trivial{display:inline-block;}.mp-result.show-trivial .mp-links span a:nth-child(3){display:none;}.mp-result table.mp-client-timings{margin-top:10px;}.mp-result table.mp-client-timings td:nth-child(2){width:100%;padding:0;}.mp-result table.mp-client-timings td div{height:13px;min-width:1px;}.mp-result table.mp-client-timings .t-point div{height:4px;border-radius:8px;margin-bottom:4px;box-shadow:0 0 2px;}.mp-result table.mp-client-timings .t-unknown div{background:#80ccda;}.mp-result table.mp-client-timings .t-dns div{background:#8baad1;}.mp-result table.mp-client-timings .t-connect div{background:#8cbb4e;}.mp-result table.mp-client-timings .t-ssl div{background:#795892;}.mp-result table.mp-client-timings .t-request div{background:#0099b2;}.mp-result table.mp-client-timings .t-response div{background:#d99d35;}.mp-result table.mp-client-timings .t-dom div{background:#bd4d32;}.mp-result table.mp-client-timings .t-domcontent div{background:#dd4678;}.mp-result table.mp-client-timings .t-load div{background:#1d72aa;}.mp-result table.mp-client-timings .t-paint div{background:#bc41e3;}.mp-result .mp-label{color:#555;overflow:hidden;text-overflow:ellipsis;}.mp-result .mp-unit{color:#aaa;}.mp-result .mp-more-columns{display:none;}.mp-result .mp-trivial{display:none;}.mp-result .mp-trivial td,.mp-result .mp-trivial td *{color:#aaa !important;}.mp-result .mp-number{color:#111;}.mp-result .mp-info>div{white-space:nowrap;overflow:hidden;}.mp-result .mp-info>div>div{display:inline-block;}.mp-result .mp-info .mp-name{display:inline-block;font-weight:bold;float:left;}.mp-result .mp-info .mp-machine-name,.mp-result .mp-info .mp-started{text-align:right;float:right;}.mp-result .mp-info .mp-server-time{white-space:nowrap;}.mp-result .mp-timings th{background-color:#fff;color:#aaa;text-align:right;}.mp-result .mp-timings th,.mp-result .mp-timings td{white-space:nowrap;}.mp-result .mp-timings .mp-show-more{display:none;}.mp-result .mp-timings .mp-duration{font-family:Consolas,monospace,serif;color:#111;text-align:right;}.mp-result .mp-timings .mp-indent{letter-spacing:4px;}.mp-result .mp-timings .mp-queries-show .mp-number,.mp-result .mp-timings .mp-queries-show .mp-unit{color:#07c;}.mp-result .mp-timings .mp-queries-show.mp-queries-warning{color:#c91d2e;font-weight:bold;}.mp-result .mp-timings .mp-queries-duration{padding-left:6px;}.mp-result .mp-timings:not(.mp-client-timings) .mp-trivial:first-child{display:table-row;}.mp-result .mp-custom-timing-overview{float:right;margin:10px 0;width:auto;}.mp-result .mp-custom-timing-overview td{white-space:nowrap;text-align:right;}.mp-result .mp-custom-timing-overview td:last-child{padding-left:8px;}.mp-result .mp-links{margin-top:10px;clear:both;}.mp-result .mp-links span{float:right;}.mp-result .mp-links a{font-size:95%;margin-left:12px;}.mp-result .mp-links a:first-child{margin-left:0;}.mp-warning{color:#f00;}@keyframes mp-fadeIn{from{background-color:#ffb;}to{background-color:none;}}.mp-overlay{z-index:2147483642;}.mp-overlay .mp-overlay-bg{z-index:2147483643;background:#000;opacity:.5;top:0;left:0;min-width:100%;position:fixed;height:calc(100%);}.mp-overlay .mp-queries{display:block;z-index:2147483644;top:25px;left:25px;right:25px;position:fixed;max-height:calc(100vh - 50px);background-color:#fff;border-radius:2px;overflow-y:auto;overflow-x:auto;}.mp-queries{font-family:sans-serif;}.mp-queries pre{white-space:pre-wrap;}.mp-queries div{text-align:left;}.mp-queries table{table-layout:fixed;}.mp-queries td,.mp-queries th{padding:8px;border-bottom:solid 1px #efefef;}.mp-queries td:first-child,.mp-queries th:first-child{width:250px;text-align:right;}.mp-queries td:first-child div,.mp-queries th:first-child div{text-align:right;margin-bottom:5px;word-break:break-word;}.mp-queries td:last-child,.mp-queries th:last-child{text-align:left;padding-right:15px;}.mp-queries .highlight{animation:mp-fadeIn 2s 1;}.mp-queries .mp-odd{background-color:#f5f5f5;}.mp-queries .mp-stack-trace{padding-bottom:1px;color:#aab;margin-bottom:5px;}.mp-queries .mp-since-start,.mp-queries .mp-duration{text-align:right;}.mp-queries.show-trivial .mp-gap-info.mp-trivial-gap{display:table-row;}.mp-queries .mp-gap-info{background-color:#e1e5ed;opacity:.8;color:#444;}.mp-queries .mp-gap-info .query{word-break:break-all;}.mp-queries .mp-gap-info .mp-unit{color:#777;}.mp-queries .mp-gap-info.mp-trivial-gap{display:none;}.mp-queries .mp-trivial-gap-container{text-align:center;margin:8px 0;}.mp-queries .mp-call-type{font-weight:bold;}.mp-queries .hljs{display:block;overflow-x:auto;padding:.5em;}.mp-queries .hljs,.mp-queries .hljs-subst{color:#000;}.mp-queries .hljs-string,.mp-queries .hljs-meta,.mp-queries .hljs-symbol,.mp-queries .hljs-template-tag,.mp-queries .hljs-template-variable,.mp-queries .hljs-addition{color:#756bb1;}.mp-queries .hljs-comment,.mp-queries .hljs-quote{color:#636363;}.mp-queries .hljs-number,.mp-queries .hljs-regexp,.mp-queries .hljs-literal,.mp-queries .hljs-bullet,.mp-queries .hljs-link{color:#31a354;}.mp-queries .hljs-deletion,.mp-queries .hljs-variable{color:#88f;}.mp-queries .hljs-keyword,.mp-queries .hljs-selector-tag,.mp-queries .hljs-title,.mp-queries .hljs-section,.mp-queries .hljs-built_in,.mp-queries .hljs-doctag,.mp-queries .hljs-type,.mp-queries .hljs-tag,.mp-queries .hljs-name,.mp-queries .hljs-selector-id,.mp-queries .hljs-selector-class,.mp-queries .hljs-strong{color:#3182bd;}.mp-queries .hljs-emphasis{font-style:italic;}.mp-queries .hljs-attribute{color:#e6550d;}.mp-results{z-index:2147483641;position:fixed;top:0;}.mp-results.mp-left,.mp-results.mp-bottomleft{left:0;}.mp-results.mp-left .mp-controls,.mp-results.mp-left.mp-no-controls .mp-result:last-child .mp-button{border-bottom-right-radius:10px;}.mp-results.mp-left .mp-button,.mp-results.mp-left .mp-controls{border-right:solid .5px #ababab;}.mp-results.mp-right{right:0;}.mp-results.mp-right .mp-controls,.mp-results.mp-right.mp-no-controls .mp-result:last-child .mp-button{border-bottom-left-radius:10px;}.mp-results.mp-right .mp-button,.mp-results.mp-right .mp-controls{border-left:solid .5px #ababab;}.mp-results.mp-bottomleft{top:inherit;bottom:0;}.mp-results.mp-bottomleft .mp-result:first-child .mp-button{border-top-right-radius:10px;}.mp-results.mp-bottomleft .mp-button,.mp-results.mp-bottomleft .mp-controls{border-right:solid .5px #ababab;}.mp-results.mp-bottomleft .mp-result .mp-button,.mp-results.mp-bottomleft .mp-controls{border-bottom:0;border-top:solid .5px #ababab;}.mp-results.mp-bottomright{top:inherit;bottom:0;right:0;}.mp-results.mp-bottomright .mp-result:first-child .mp-button{border-top-left-radius:10px;}.mp-results.mp-bottomright .mp-button,.mp-results.mp-bottomright .mp-controls{border-left:solid .5px #ababab;}.mp-results.mp-bottomright .mp-result .mp-button,.mp-results.mp-bottomright .mp-controls{border-bottom:0;border-top:solid .5px #ababab;}.mp-results .mp-button{user-select:none;}.mp-results .mp-button.mp-button-warning{font-weight:bold;background-color:#e06c77;}.mp-results .mp-button.mp-button-warning .mp-unit{color:#ddd;}.mp-results .mp-button .mp-warning{font-weight:bold;}.mp-results .mp-button>.mp-number{font-family:Consolas,monospace,serif;}.mp-results .mp-controls{display:none;}.mp-results .mp-button,.mp-results .mp-controls{z-index:2147483640;border-bottom:solid .5px #ababab;background-color:#fff;padding:4px 8px;text-align:right;cursor:pointer;}.mp-results .mp-result{position:relative;}.mp-results .mp-result.active .mp-button{background-color:#207ab7;animation:none;border-radius:0 !important;}.mp-results .mp-result.active .mp-button .mp-number,.mp-results .mp-result.active .mp-button .mp-warning{color:#fff;font-weight:bold;}.mp-results .mp-result.active .mp-button .mp-unit{color:#fff;font-weight:normal;}.mp-results .mp-result.active .mp-popup{display:block;}.mp-results.new .mp-button{animation:mp-fadeIn 2s 1;}.mp-results .mp-controls{display:block;font-size:12px;font-family:Consolas,monospace,serif;cursor:default;text-align:center;}.mp-results .mp-controls span{border-right:1px solid #aaa;padding-right:5px;margin-right:5px;cursor:pointer;}.mp-results .mp-controls span:last-child{border-right:none;}.mp-results .mp-popup{display:none;z-index:2147483641;position:absolute;background-color:#fff;padding:5px 10px;text-align:left;line-height:18px;overflow:auto;box-shadow:0 1px 10px #555;border-radius:2px;}.mp-results .mp-popup .mp-info{margin-bottom:3px;padding-bottom:2px;border-bottom:1px solid #ddd;}.mp-results .mp-popup .mp-info .mp-name{font-size:1.1em;}.mp-results .mp-popup .mp-info .mp-overall-duration{color:#aaa;}.mp-results .mp-popup .mp-timings th,.mp-results .mp-popup .mp-timings td{padding:0 6px;}.mp-results .mp-popup .mp-timings th{font-size:95%;padding-bottom:3px;}.mp-results .mp-popup .mp-timings .mp-label{max-width:275px;}.mp-results .mp-queries{display:none;}.mp-results.mp-min .mp-result{display:none;}.mp-results.mp-min .mp-controls span{display:none;}.mp-results.mp-min .mp-controls .mp-min-max{border-right:none;padding:0;margin:0;}.mp-result-full .mp-result{width:950px;margin:25px auto;}.mp-result-full .mp-result .mp-button{display:none;}.mp-result-full .mp-result .mp-popup .mp-info{font-size:18px;border-bottom:1px solid #aaa;padding-bottom:3px;margin-bottom:10px;}.mp-result-full .mp-result .mp-popup .mp-info .mp-name{margin-bottom:5px;}.mp-result-full .mp-result .mp-popup .mp-info .mp-overall-duration,.mp-result-full .mp-result .mp-popup .mp-info .mp-started{font-size:80%;color:#888;}.mp-result-full .mp-result .mp-popup .mp-info .mp-overall-duration{padding-right:20px;}.mp-result-full .mp-result .mp-popup .mp-timings td,.mp-result-full .mp-result .mp-popup .mp-timings th{font-size:13px;padding-left:8px;padding-right:8px;}.mp-result-full .mp-result .mp-popup .mp-timings th{padding-bottom:7px;}.mp-result-full .mp-result .mp-popup .mp-timings td{padding-bottom:4px;}.mp-result-full .mp-result .mp-popup .mp-timings td:first-child{padding-left:10px;}.mp-result-full .mp-result .mp-popup .mp-timings .mp-label{max-width:550px;}.mp-result-full .mp-result .mp-queries{margin:20px 0;}.mp-result-full .mp-result .mp-queries th{font-size:16px;color:#555;}.mp-result-full .mp-share-mp-results{display:none;}table.mp-results-index{border:0;border-spacing:0;font-size:12px;font-family:Arial;}table.mp-results-index tbody tr:nth-child(odd){background-color:#e5e5e5;}table.mp-results-index tbody tr:nth-child(even){background-color:#fff;}table.mp-results-index tbody td{text-align:center;}table.mp-results-index tbody td:first-child{text-align:left;}table.mp-results-index tbody td:nth-child(3){color:#666;}table.mp-results-index tbody td[colspan="3"]{color:#aaa;}table.mp-results-index thead tr{color:#444;}table.mp-results-index thead tr th{padding:5px 15px;}table.mp-results-index td{padding:8px;}
\ No newline at end of file
diff --git a/src/MiniProfiler.Shared/ui/lib/MiniProfiler.ts b/src/MiniProfiler.Shared/ui/lib/MiniProfiler.ts
index e5e19f7ab..9cf2f4fb9 100644
--- a/src/MiniProfiler.Shared/ui/lib/MiniProfiler.ts
+++ b/src/MiniProfiler.Shared/ui/lib/MiniProfiler.ts
@@ -20,6 +20,7 @@ namespace StackExchange.Profiling {
CustomTimingStats: { [id: string]: ICustomTimingStat };
HasCustomTimings: boolean;
HasDuplicateCustomTimings: boolean;
+ HasWarning: boolean;
HasTrivialTimings: boolean;
AllCustomTimings: ICustomTiming[];
}
@@ -53,6 +54,7 @@ namespace StackExchange.Profiling {
Depth: number;
HasCustomTimings: boolean;
HasDuplicateCustomTimings: { [id: string]: boolean };
+ HasWarnings: { [id: string]: boolean };
IsTrivial: boolean;
Parent: ITiming;
// added for gaps (TODO: change all this)
@@ -457,6 +459,7 @@ namespace StackExchange.Profiling {
timing.Parent = parent;
timing.Depth = depth;
timing.HasDuplicateCustomTimings = {};
+ timing.HasWarnings = {};
for (const child of timing.Children || []) {
processTiming(child, timing, depth + 1);
@@ -496,6 +499,10 @@ namespace StackExchange.Profiling {
if (!ignored) {
customStat.Count++;
}
+ if (customTiming.Errored) {
+ timing.HasWarnings[customType] = true;
+ result.HasWarning = true;
+ }
if (customTiming.CommandString && duplicates[customTiming.CommandString]) {
customTiming.IsDuplicate = true;
@@ -665,9 +672,9 @@ namespace StackExchange.Profiling {
${customTimingTypes.map((tk) => timing.CustomTimings[tk] ? `
-
+
${duration(timing.CustomTimingStats[tk].Duration)}
- (${timing.CustomTimingStats[tk].Count}${(timing.HasDuplicateCustomTimings[tk] ? '!' : '')})
+ (${timing.CustomTimingStats[tk].Count}${((timing.HasDuplicateCustomTimings[tk] || timing.HasWarnings[tk]) ? '!' : '')})
| ` : ' | ').join('')}
`;
@@ -811,7 +818,7 @@ namespace StackExchange.Profiling {
${renderGap(ct.PrevGap)}
|
- ${encode(ct.CallType)}${encode(!ct.ExecuteType || ct.CallType === ct.ExecuteType ? '' : ' - ' + ct.ExecuteType)}${(ct.IsDuplicate ? ' !' : '')}
+ ${encode(ct.CallType)}${encode(!ct.ExecuteType || ct.CallType === ct.ExecuteType ? '' : ' - ' + ct.ExecuteType)}${((ct.IsDuplicate || ct.Errored) ? ' !' : '')}
${encode(ct.Parent.Name)}
${duration(ct.DurationMilliseconds)} ms (T+${duration(ct.StartMilliseconds)} ms)
@@ -836,9 +843,9 @@ namespace StackExchange.Profiling {
return mp.jq(`
|