A lot of little UI tweaks

This commit is contained in:
Thomas Hounsell 2015-07-09 13:41:15 +01:00
parent 1d56d9c2bc
commit 654a5265d6
17 changed files with 114 additions and 90 deletions

View File

@ -23,5 +23,8 @@ public ActionResult setup()
return RedirectToAction("index");
}
[Authorize(Users = "hounsell")]
public ActionResult exception() { throw new System.Exception("This is a test exception"); }
}
}

View File

@ -16,6 +16,7 @@
</li>
@if (User.Identity.Name == "hounsell")
{
<li>@Html.ActionLink("Exception test", "exception")</li>
<li>@Html.ActionLink("Initial setup", "setup")</li>
}
</ul>

View File

@ -119,7 +119,7 @@ public ActionResult register(RegistrationUser ru)
return View(ru);
}
[Route("register/")]
[Route("register/thanks/")]
public ActionResult thanks_register()
{
return View();
@ -350,6 +350,7 @@ public ActionResult stats()
}
List<MonthCount> compiles = new List<MonthCount>();
double logScale = 1.0 / Math.E;
var rawCompiles = from b in builds
where b.BuildTime.HasValue
group b by new
@ -361,7 +362,7 @@ where b.BuildTime.HasValue
{
Month = bm.Key.Month,
Year = bm.Key.Year,
Count = bm.Count()
Count = Math.Pow(Convert.ToDouble(bm.Count()), logScale)
};
@ -369,7 +370,7 @@ where b.BuildTime.HasValue
where !string.IsNullOrEmpty(b.Lab)
group b by b.Lab into bl
select bl)
where bl.Count() > 49
where bl.Count() > 99
orderby bl.Count() descending
select new Tuple<string, int>(bl.Key, bl.Count());

View File

@ -16,6 +16,6 @@ public struct MonthCount
{
public int Year { get; set; }
public int Month { get; set; }
public int Count { get; set; }
public double Count { get; set; }
}
}

View File

@ -7,11 +7,11 @@
@if ((string)(ViewContext.RouteData.Values["action"]) == "addBuild")
{
<h2>Add a Build</h2>
<h1>Add a Build</h1>
}
else
{
<h2>Edit build @Model.FullBuildString</h2>
<h1>Edit build @Model.FullBuildString</h1>
}
<div class="form-horizontal">

View File

@ -3,12 +3,23 @@
@{
ViewBag.Title = "BuildFeed";
}
@section head
{
@if (ViewBag.PageNumber != 1)
{
<meta name="robots" content="noindex, follow" />
}
}
<h1>Windows NT build list</h1>
<h3>Share</h3>
<div class="addthis_sharing_toolbox"></div>
<h3>Listing</h3>
<div class="row">
@foreach (BuildFeed.Models.ViewModel.Front.FrontBuildGroup group in Model)
{
<div class="col-md-2 col-sm-3 col-xs-6">
<h3 class="build-group-title"><a href="@Url.Action("viewGroup", new { major = group.Key.Major, minor = group.Key.Minor, number = group.Key.Build, revision = group.Key.Revision })"><span class="icon"><i class="fa fa-plus-square"></i></span> @group.Key.ToString()</a></h3>
<div class="col-md-2 col-sm-3 col-xs-6 build-group">
<h3 class="build-group-title"><a href="@Url.Action("viewGroup", new { major = group.Key.Major, minor = group.Key.Minor, number = group.Key.Build, revision = group.Key.Revision })">@group.Key.ToString()</a></h3>
<p>
@if (group.LastBuild.HasValue)
{
@ -27,4 +38,8 @@
</div>
}
</div>
@PaginationHelpers.PaginationBlock((int)ViewBag.PageNumber, (int)ViewBag.PageCount, "index", ViewContext.RouteData.Values)
@PaginationHelpers.PaginationBlock((int)ViewBag.PageNumber, (int)ViewBag.PageCount, "index", ViewContext.RouteData.Values)
@section scripts
{
<script type="text/javascript" src="//s7.addthis.com/js/300/addthis_widget.js#pubid=ra-5431719a661cbfd0" async="async"></script>
}

View File

@ -28,7 +28,7 @@
}
}
<h2>@Model.FullBuildString</h2>
<h1>@Model.FullBuildString</h1>
<div class="row">
<div class="col-sm-6">

View File

@ -9,24 +9,23 @@
<div class="row">
@foreach (var build in Model.OrderBy(b => b.BuildTime))
{
<div class="col-sm-3 col-xs-6">
<h3 class="build-group-title no-wrapping" title="@build.Lab">@build.Lab</h3>
<p>
<a href="@Url.Action("viewBuild", new { id = build.Id })" class="btn btn-info btn-xs">Info</a>
@if (User.Identity.IsAuthenticated)
{
<div class="col-sm-3 col-xs-6 build-group">
<h3 class="build-group-title no-wrapping" title="@build.Lab"><a href="@Url.Action("viewBuild", new {id = build.Id})">@build.Lab</a></h3>
@if (User.Identity.IsAuthenticated)
{
<p>
<a href="@Url.Action("editBuild", new { id = build.Id })" class="btn btn-primary btn-xs">Edit</a>
if (Roles.IsUserInRole("Administrators"))
@if (Roles.IsUserInRole("Administrators"))
{
<a href="@Url.Action("deleteBuild", new { id = build.Id })" class="btn btn-danger btn-xs">Delete</a>
}
}
</p>
<p>
</p>
}
<p class="build-group-p">
@if (build.BuildTime.HasValue)
{
<span title="@build.BuildTime.Value.Humanize()"><i class="fa fa-calendar fa-fw"></i> @build.BuildTime.Value.ToString("d MMMM yyyy")</span><br />
<span title="@build.BuildTime.Value.Humanize()"><i class="fa fa-clock-o fa-fw"></i> @build.BuildTime.Value.ToString("h:mm tt")</span><br />
<span title="@build.BuildTime.Value.Humanize()"><i class="fa fa-clock-o fa-fw"></i> @build.BuildTime.Value.ToString("h:mm tt")</span>
}
</p>
<p>

View File

@ -23,7 +23,7 @@
}
}
<h2>@string.Format("Builds from {0}", ViewBag.ItemId)</h2>
<h1>@string.Format("Builds from {0}", ViewBag.ItemId)</h1>
@if (ViewBag.MetaItem != null && !string.IsNullOrWhiteSpace(ViewBag.MetaItem.PageContent))
{
<h3>About</h3>
@ -35,20 +35,19 @@
<div class="row">
@foreach (var build in Model)
{
<div class="col-md-2 col-sm-3 col-xs-6">
<h3 class="build-group-title">@string.Format("{0}.{1}.{2}.{3}", build.MajorVersion, build.MinorVersion, build.Number, build.Revision)</h3>
<p>
<a href="@Url.Action("viewBuild", new { id = build.Id })" class="btn btn-info btn-xs">Info</a>
@if (User.Identity.IsAuthenticated)
{
<div class="col-md-2 col-sm-3 col-xs-6 build-group">
<h3 class="build-group-title no-wrapping" title="@build.Lab"><a href="@Url.Action("viewBuild", new {id = build.Id})">@string.Format("{0}.{1}.{2}.{3}", build.MajorVersion, build.MinorVersion, build.Number, build.Revision)</a></h3>
@if (User.Identity.IsAuthenticated)
{
<p>
<a href="@Url.Action("editBuild", new { id = build.Id })" class="btn btn-primary btn-xs">Edit</a>
if (Roles.IsUserInRole("Administrators"))
@if (Roles.IsUserInRole("Administrators"))
{
<a href="@Url.Action("deleteBuild", new { id = build.Id })" class="btn btn-danger btn-xs">Delete</a>
}
}
</p>
<p>
</p>
}
<p class="build-group-p">
@if (build.BuildTime.HasValue)
{
<span title="@build.BuildTime.Value.Humanize()"><i class="fa fa-calendar fa-fw"></i> @build.BuildTime.Value.ToString("d MMMM yyyy")</span><br />

View File

@ -18,7 +18,7 @@
}
}
<h2>@ViewBag.ItemId</h2>
<h1>@ViewBag.ItemId</h1>
@if (ViewBag.MetaItem != null && !string.IsNullOrWhiteSpace(ViewBag.MetaItem.PageContent))
{
<h3>About</h3>
@ -30,23 +30,22 @@
<div class="row">
@foreach (var build in Model)
{
<div class="col-md-2 col-sm-3 col-xs-6">
<h3 class="build-group-title">@string.Format("{0}.{1}.{2}.{3}", build.MajorVersion, build.MinorVersion, build.Number, build.Revision)</h3>
<p>
<a href="@Url.Action("viewBuild", new { id = build.Id })" class="btn btn-info btn-xs">Info</a>
@if (User.Identity.IsAuthenticated)
{
<div class="col-md-2 col-sm-3 col-xs-6 build-group">
<h3 class="build-group-title no-wrapping" title="@build.Lab"><a href="@Url.Action("viewBuild", new {id = build.Id})">@string.Format("{0}.{1}.{2}.{3}", build.MajorVersion, build.MinorVersion, build.Number, build.Revision)</a></h3>
@if (User.Identity.IsAuthenticated)
{
<p>
<a href="@Url.Action("editBuild", new { id = build.Id })" class="btn btn-primary btn-xs">Edit</a>
if (Roles.IsUserInRole("Administrators"))
@if (Roles.IsUserInRole("Administrators"))
{
<a href="@Url.Action("deleteBuild", new { id = build.Id })" class="btn btn-danger btn-xs">Delete</a>
}
}
</p>
<p>
</p>
}
<p class="build-group-p">
@if (!string.IsNullOrEmpty(build.Lab))
{
<div class="no-wrapping" title="@build.Lab"><i class="fa fa-code-fork fa-fw"></i> @build.Lab</div>
<span class="no-wrapping" title="@build.Lab"><i class="fa fa-code-fork fa-fw"></i> @build.Lab</span><br />
}
@if (build.BuildTime.HasValue)
{

View File

@ -18,7 +18,7 @@
}
}
<h2>@string.Format("Windows NT {0}", ViewBag.ItemId)</h2>
<h1>@string.Format("Windows NT {0}", ViewBag.ItemId)</h1>
@if (ViewBag.MetaItem != null && !string.IsNullOrWhiteSpace(ViewBag.MetaItem.PageContent))
{
<h3>About</h3>
@ -30,23 +30,22 @@
<div class="row">
@foreach (var build in Model)
{
<div class="col-md-2 col-sm-3 col-xs-6">
<h3 class="build-group-title">@string.Format("{0}.{1}.{2}.{3}", build.MajorVersion, build.MinorVersion, build.Number, build.Revision)</h3>
<p>
<a href="@Url.Action("viewBuild", new { id = build.Id })" class="btn btn-info btn-xs">Info</a>
@if (User.Identity.IsAuthenticated)
{
<div class="col-md-2 col-sm-3 col-xs-6 build-group">
<h3 class="build-group-title no-wrapping" title="@build.Lab"><a href="@Url.Action("viewBuild", new {id = build.Id})">@string.Format("{0}.{1}.{2}.{3}", build.MajorVersion, build.MinorVersion, build.Number, build.Revision)</a></h3>
@if (User.Identity.IsAuthenticated)
{
<p>
<a href="@Url.Action("editBuild", new { id = build.Id })" class="btn btn-primary btn-xs">Edit</a>
if (Roles.IsUserInRole("Administrators"))
@if (Roles.IsUserInRole("Administrators"))
{
<a href="@Url.Action("deleteBuild", new { id = build.Id })" class="btn btn-danger btn-xs">Delete</a>
}
}
</p>
<p>
</p>
}
<p class="build-group-p">
@if (!string.IsNullOrEmpty(build.Lab))
{
<div class="no-wrapping" title="@build.Lab"><i class="fa fa-code-fork fa-fw"></i> @build.Lab</div>
<span class="no-wrapping" title="@build.Lab"><i class="fa fa-code-fork fa-fw"></i> @build.Lab</span><br />
}
@if (build.BuildTime.HasValue)
{

View File

@ -23,7 +23,7 @@
}
}
<h2>@string.Format("Builds from {0}", ViewBag.ItemId)</h2>
<h1>@string.Format("Builds from {0}", ViewBag.ItemId)</h1>
@if (ViewBag.MetaItem != null && !string.IsNullOrWhiteSpace(ViewBag.MetaItem.PageContent))
{
<h3>About</h3>
@ -35,23 +35,22 @@
<div class="row">
@foreach (var build in Model)
{
<div class="col-md-2 col-sm-3 col-xs-6">
<h3 class="build-group-title">@string.Format("{0}.{1}.{2}.{3}", build.MajorVersion, build.MinorVersion, build.Number, build.Revision)</h3>
<p>
<a href="@Url.Action("viewBuild", new { id = build.Id })" class="btn btn-info btn-xs">Info</a>
@if (User.Identity.IsAuthenticated)
{
<div class="col-md-2 col-sm-3 col-xs-6 build-group">
<h3 class="build-group-title no-wrapping" title="@build.Lab"><a href="@Url.Action("viewBuild", new {id = build.Id})">@string.Format("{0}.{1}.{2}.{3}", build.MajorVersion, build.MinorVersion, build.Number, build.Revision)</a></h3>
@if (User.Identity.IsAuthenticated)
{
<p>
<a href="@Url.Action("editBuild", new { id = build.Id })" class="btn btn-primary btn-xs">Edit</a>
if (Roles.IsUserInRole("Administrators"))
@if (Roles.IsUserInRole("Administrators"))
{
<a href="@Url.Action("deleteBuild", new { id = build.Id })" class="btn btn-danger btn-xs">Delete</a>
}
}
</p>
<p>
</p>
}
<p class="build-group-p">
@if (!string.IsNullOrEmpty(build.Lab))
{
<div class="no-wrapping" title="@build.Lab"><i class="fa fa-code-fork fa-fw"></i> @build.Lab</div>
<span class="no-wrapping" title="@build.Lab"><i class="fa fa-code-fork fa-fw"></i> @build.Lab</span><br />
}
@if (build.BuildTime.HasValue)
{

View File

@ -4,7 +4,7 @@
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<link href="//maxcdn.bootstrapcdn.com/bootswatch/3.3.4/slate/bootstrap.min.css" rel="stylesheet" />
<link href="//maxcdn.bootstrapcdn.com/bootswatch/3.3.5/slate/bootstrap.min.css" rel="stylesheet" />
<link href="//maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css" rel="stylesheet" />
<link href="//fonts.googleapis.com/css?family=Hind:300,700,400" rel="stylesheet" type="text/css" />
<link rel="shortcut icon" href="~/favicon.ico" />
@ -98,7 +98,7 @@
<p>
&copy; 2013 - @DateTime.Now.Year.ToString(), BuildFeed<br />
Developed by <a href="https://twitter.com/tomhounsell" target="_blank">Thomas Hounsell</a><br />
Contribute on <a href="https://github.com/hounsell/BuildFeed" target="_blank">GitHub</a>
Contribute on&ensp;<a href="https://github.com/hounsell/BuildFeed" target="_blank"><i class="fa fa-github"></i>&ensp;GitHub</a>
</p>
</div>
</div>
@ -126,7 +126,7 @@
</div>
</div>
@Scripts.Render("~/bundles/jquery")
<script type="text/javascript" src="//maxcdn.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js"></script>
<script type="text/javascript" src="//maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>
@Scripts.Render("~/bundles/jsrender")
<script type="text/javascript" src="~/Scripts/bfs.js"></script>
@RenderSection("scripts", required: false)

View File

@ -1,4 +1,5 @@
@{
@model System.Web.Mvc.HandleErrorInfo
@{
Layout = null;
}
@ -8,7 +9,7 @@
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<link href="//maxcdn.bootstrapcdn.com/bootswatch/3.3.4/slate/bootstrap.min.css" rel="stylesheet" />
<link href="//maxcdn.bootstrapcdn.com/bootswatch/3.3.5/slate/bootstrap.min.css" rel="stylesheet" />
<link href="//maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css" rel="stylesheet" />
<link href="//fonts.googleapis.com/css?family=Hind:300,700,400" rel="stylesheet" type="text/css" />
<link rel="shortcut icon" href="~/favicon.ico" />
@ -57,8 +58,12 @@
<article id="page-content">
<div class="row">
<div class="col-sm-12">
<h2>Error.</h2>
<p>An error occurred while processing your request.</p>
<h1>Error</h1>
<p>Something's broke. Maybe it's because you did something weird. Probably it's because I did something weird. If you keep getting this error, take a screenshot and spam <a href="https://twitter.com/tomhounsell">me</a> on Twitter with it.
</p>
<p>Controller: <code>@Model.ControllerName</code></p>
<p>Action: <code>@Model.ActionName</code></p>
<p>Error: <code>@Model.Exception.Message</code></p>
</div>
</div>
</article>
@ -68,13 +73,13 @@
<p>
&copy; 2013 - @DateTime.Now.Year.ToString(), BuildFeed<br />
Developed by <a href="https://twitter.com/tomhounsell" target="_blank">Thomas Hounsell</a><br />
Contribute on <a href="https://github.com/hounsell/BuildFeed" target="_blank">GitHub</a>
Contribute on&ensp;<a href="https://github.com/hounsell/BuildFeed" target="_blank"><i class="fa fa-github"></i>&ensp;GitHub</a>
</p>
</div>
</div>
</footer>
</div>
@Scripts.Render("~/bundles/jquery")
<script type="text/javascript" src="//maxcdn.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js"></script>
<script type="text/javascript" src="//maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>
</body>
</html>

View File

@ -57,6 +57,7 @@
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<input type="submit" value="Login" class="btn btn-primary" />
@Html.ActionLink("Register...", "register", new { controller = "support" }, new { @class = "btn btn-default" })
</div>
</div>
</div>

View File

@ -13,7 +13,7 @@
<canvas id="stats-compiled" width="960" height="320"></canvas>
<h4>Recorded builds in each lab</h4>
<p>Only labs with 50 or more recorded builds are included.</p>
<p>Only labs with 100 or more recorded builds are included.</p>
<canvas id="stats-labs" width="960" height="320"></canvas>
@section scripts
@ -22,7 +22,7 @@
<script type="text/javascript">
$(function () {
Chart.defaults.global.responsive = true;
Chart.defaults.global.showTooltips = false;
//Chart.defaults.global.showTooltips = false;
Chart.defaults.global.scaleFontFamily = "Hind, sans-serif";
Chart.defaults.global.scaleFontColor = "#bbb";
@ -59,7 +59,7 @@
]
};
var compiledChart = new Chart(document.getElementById("stats-compiled").getContext("2d")).Line(compiledData, {});
var compiledChart = new Chart(document.getElementById("stats-compiled").getContext("2d")).Line(compiledData, { scaleLabel: "<%= (Math.round(Math.pow(value, Math.E)/10)*10) %>", tooltipTemplate: "<%if (label){%><%=label%>: <%}%><%=Math.round(Math.pow(value, Math.E))%>", scaleOverride: true, scaleSteps: 10, scaleStepWidth: 2, scaleStartValue: 1, scaleIntegersOnly: false, pointHitDetectionRadius: 0 });
var labData = {
labels: [ @Html.Raw(string.Join(", ", Model.BuildsByLab.Select(l => string.Format("\"{0}\"", l.Item1))))],

View File

@ -20,19 +20,22 @@ h1
padding-top: 50px;
}
.build-group-title
.build-group
{
font-size: 21px;
font-weight: 300;
margin-bottom: 2em;
}
.build-group-title .icon
{
font-size: 0.6em;
vertical-align: 3px;
display: inline-block;
margin-left: 0.3em;
}
.build-group-title
{
font-size: 24px;
font-weight: 300;
margin: 0 0 4px 0;
}
.build-group-p
{
margin-bottom: 4px;
}
.no-wrapping
{