Improve charting UI for error cases

This commit is contained in:
2016-05-27 11:17:51 -04:00
parent 55f7b68bf8
commit 5c82e51e86
2 changed files with 34 additions and 12 deletions
+14 -6
View File
@@ -4,6 +4,7 @@ using System.Drawing;
using System.Drawing.Imaging;
using System.IO;
using System.Linq;
using System.Net;
using System.Web.Mvc;
using System.Web.UI.DataVisualization.Charting;
using System.Web.UI.WebControls;
@@ -57,7 +58,7 @@ namespace LeafWeb.Web.Controllers
var curveData = GetCurveData(leafOutputFile.FileContents.Contents, curveId);
if (curveData == null)
return File("/Content/favicon/apple-icon-57x57.png", "image/png"); // TODO: different image ?
return new HttpStatusCodeResult(HttpStatusCode.NotFound);
var charts = GetChartBitmaps(curveData).ToList();
@@ -75,11 +76,18 @@ namespace LeafWeb.Web.Controllers
private CurveData GetCurveData(byte[] fileContents, string curveId)
{
LeafGasComparison[] leafGasComparisons;
using (var parser = new LeafGasComparisonParser(fileContents))
leafGasComparisons = parser.Parse(curveId);
return CurveDataConverter.Convert(leafGasComparisons).First();
try
{
LeafGasComparison[] leafGasComparisons;
using (var parser = new LeafGasComparisonParser(fileContents))
leafGasComparisons = parser.Parse(curveId);
return CurveDataConverter.Convert(leafGasComparisons).First();
}
catch (Exception e)
{
LogManager.GetCurrentClassLogger().Warn(e);
}
return null;
}
private string[] GetCurveIds(byte[] fileContents)
+20 -6
View File
@@ -1,13 +1,17 @@
@model LeafWeb.Web.ViewModels.Chart.ChartViewModel
@{
ViewBag.Title = "Chart";
var selectText = "Select CurveId";
}
<h1>@ViewBag.Title</h1>
<h3>Identifier: <strong>@Model.LeafInputIdentifier</strong></h3>
@Html.DropDownList("CurveId", new SelectList(Model.AvailableCurveId, Model.CurveId), "Select CurveId")
@Html.DropDownList("CurveId", new SelectList(Model.AvailableCurveId, Model.CurveId), selectText)
<img id="chart"/>
<span class="help-block">
<span id="chart-error"></span>
</span>
@section Scripts
{
@@ -15,17 +19,27 @@
$(function () {
$('#CurveId')
.change(function () {
$('#chart-error').removeClass('text-danger').text('');
var $chart = $("#chart");
var $spinner = $(this).after('<i class="fa fa-spinner fa-spin"></i>').next('i');
$chart.attr('src', "");
$chart.removeAttr('src');
var curveId = $("option:selected", this).text();
if (curveId === "@Html.Raw(selectText)") {
return;
}
var $spinner = $(this).after('<i class="fa fa-spinner fa-spin"></i>').next('i');
var url =
"@Html.Raw(Url.Action("ChartCurve", new {leafInputId = Model.LeafInputId, curveId="curveId"}))";
url = url.replace("=curveId", "=" + curveId);
$chart.attr('src', url)
.load(function() {
$chart.load(function () {
$spinner.remove();
});
})
.error(function () {
$chart.removeAttr('src');
$spinner.remove();
$('#chart-error').addClass('text-danger').text('A problem was encountered loading this chart.');
})
.attr('src', url);
});
});
</script>