Queue search
This commit is contained in:
@@ -1 +1 @@
|
||||
C:\Users\poprhythm\AppData\Local\Temp\Temporary ASP.NET Files\vs\f80e29bb\faae20bf\App_Web_all.generated.cs.8f9494c4.ewo9-3jr.dll
|
||||
C:\Users\poprhythm\AppData\Local\Temp\Temporary ASP.NET Files\vs\f80e29bb\faae20bf\App_Web_all.generated.cs.8f9494c4.brz9snlt.dll
|
||||
@@ -3,7 +3,6 @@ using System.Web.Optimization;
|
||||
using System.Web.Routing;
|
||||
using Backload.Bundles;
|
||||
using LeafWeb.Core.DAL;
|
||||
using LeafWeb.WebCms.Models;
|
||||
using Umbraco.Core;
|
||||
|
||||
namespace LeafWeb.WebCms.App_Start
|
||||
|
||||
@@ -1,5 +1,21 @@
|
||||
/* Go crazy with your own styles here */
|
||||
/* EDITOR PROPERTIES - PLEASE DON'T DELETE THIS LINE TO AVOID DUPLICATE PROPERTIES */
|
||||
body.debug header .brand {
|
||||
position: relative; }
|
||||
body.debug header .brand:before {
|
||||
content: "\f121";
|
||||
font-family: FontAwesome;
|
||||
font-style: normal;
|
||||
font-weight: normal;
|
||||
text-decoration: inherit;
|
||||
/*--adjust as necessary--*/
|
||||
color: red;
|
||||
font-size: 60px;
|
||||
padding-right: 0.5em;
|
||||
position: absolute;
|
||||
top: 10px;
|
||||
left: 0; }
|
||||
|
||||
h1 {
|
||||
padding: 24px 0 12px 0; }
|
||||
|
||||
|
||||
Vendored
+1
-1
@@ -1 +1 @@
|
||||
h1{padding:24px 0 12px 0;}p{padding:12px 0;}footer{margin-top:24px !important;}.row-no-padding [class*="col-"]{padding-left:0 !important;padding-right:0 !important;}.home .dark .row:first-child .column:first-child h1{padding-top:0;}.home .blogarchive{padding-top:20px;}.top-buffer{margin-top:20px;}.detail-actions>a,.detail-actions>form>button{margin-top:20px;float:left;clear:left;}.banner-link{white-space:normal;padding:20px;background:#000;background:rgba(0,0,0,.5);-moz-border-radius:10px;border-radius:10px;}.banner-link .glyphicon{color:#8cc641;}a.banner-link:hover{text-decoration:none;background:rgba(0,0,0,.6);}a.banner-link:hover .glyphicon{color:#a8ed4f;}.headline-icon h1:after{color:rgba(172,214,118,.8);font-family:"Glyphicons Halflings";font-size:.8em;padding-left:10px;}.headline-icon.headline-icon-file h1:after{content:"";}.headline-icon.headline-icon-leaf h1:after{content:"";}.headline-icon.headline-icon-question h1:after{content:"";}.headline-icon.headline-icon-stats h1:after{content:"";}.headline-icon.headline-icon-user h1:after{content:"";}.headline-icon.headline-icon-list h1:after{content:"";}.status{white-space:nowrap;}.status:after{font-family:"Glyphicons Halflings";font-size:.8em;padding-left:5px;}.status.status-pending{color:#f0ad4e;}.status.status-pending:after{content:"";}.status.status-complete{color:#337ab7;}.status.status-complete:after{content:"";}.status.status-exception{color:#a94442;}.status.status-exception:after{content:"";}.status.status-running,.status.status-starting,.status.status-finishing{color:#3c763d;}.status.status-running:after{content:"";}.status.status-starting:after{content:"";}.status.status-finishing:after{content:"";}.status.status-cancelpending,.status.status-cancelling{color:#f0ad4e;}.status.status-cancelled{color:#ec971f;}.status.status-cancelpending:after{content:"";}.status.status-cancelling:after{content:"";}.status.status-cancelled:after{content:"";}#chart{padding-top:20px;}.btn-file{position:relative;overflow:hidden;}.btn-file input[type=file]{position:absolute;top:0;right:0;min-width:100%;min-height:100%;font-size:100px;text-align:right;filter:alpha(opacity=0);opacity:0;outline:none;background:#fff;cursor:inherit;display:block;}form .validation-summary-errors ul{list-style-type:none;}.autocomplete-suggestions{border:1px solid #999;background:#fff;overflow:auto;}.autocomplete-suggestion{padding:2px 5px;white-space:nowrap;overflow:hidden;}.autocomplete-selected{background:#f0f0f0;}.autocomplete-suggestions strong{font-weight:normal;color:#39f;}.autocomplete-group{padding:2px 5px;}.autocomplete-group strong{display:block;border-bottom:1px solid #000;}.toggle{width:15px;}.dropdown-menu li form .btn-link{display:block;color:#333;clear:both;float:left;font-size:1rem;font-weight:normal;line-height:1.42857;min-width:160px;padding:3px 20px;text-align:left;white-space:nowrap;}.dropdown-menu li form .btn-link:focus,.dropdown-menu li form .btn-link:hover{text-decoration:none;color:#262626;background-color:#f5f5f5;}.divider-right{border-right:1px dashed #333;}
|
||||
body.debug header .brand{position:relative;}body.debug header .brand:before{content:"";font-family:FontAwesome;font-style:normal;font-weight:normal;text-decoration:inherit;color:#f00;font-size:60px;padding-right:.5em;position:absolute;top:10px;left:0;}h1{padding:24px 0 12px 0;}p{padding:12px 0;}footer{margin-top:24px !important;}.row-no-padding [class*="col-"]{padding-left:0 !important;padding-right:0 !important;}.home .dark .row:first-child .column:first-child h1{padding-top:0;}.home .blogarchive{padding-top:20px;}.top-buffer{margin-top:20px;}.detail-actions>a,.detail-actions>form>button{margin-top:20px;float:left;clear:left;}.banner-link{white-space:normal;padding:20px;background:#000;background:rgba(0,0,0,.5);-moz-border-radius:10px;border-radius:10px;}.banner-link .glyphicon{color:#8cc641;}a.banner-link:hover{text-decoration:none;background:rgba(0,0,0,.6);}a.banner-link:hover .glyphicon{color:#a8ed4f;}.headline-icon h1:after{color:rgba(172,214,118,.8);font-family:"Glyphicons Halflings";font-size:.8em;padding-left:10px;}.headline-icon.headline-icon-file h1:after{content:"";}.headline-icon.headline-icon-leaf h1:after{content:"";}.headline-icon.headline-icon-question h1:after{content:"";}.headline-icon.headline-icon-stats h1:after{content:"";}.headline-icon.headline-icon-user h1:after{content:"";}.headline-icon.headline-icon-list h1:after{content:"";}.status{white-space:nowrap;}.status:after{font-family:"Glyphicons Halflings";font-size:.8em;padding-left:5px;}.status.status-pending{color:#f0ad4e;}.status.status-pending:after{content:"";}.status.status-complete{color:#337ab7;}.status.status-complete:after{content:"";}.status.status-exception{color:#a94442;}.status.status-exception:after{content:"";}.status.status-running,.status.status-starting,.status.status-finishing{color:#3c763d;}.status.status-running:after{content:"";}.status.status-starting:after{content:"";}.status.status-finishing:after{content:"";}.status.status-cancelpending,.status.status-cancelling{color:#f0ad4e;}.status.status-cancelled{color:#ec971f;}.status.status-cancelpending:after{content:"";}.status.status-cancelling:after{content:"";}.status.status-cancelled:after{content:"";}#chart{padding-top:20px;}.btn-file{position:relative;overflow:hidden;}.btn-file input[type=file]{position:absolute;top:0;right:0;min-width:100%;min-height:100%;font-size:100px;text-align:right;filter:alpha(opacity=0);opacity:0;outline:none;background:#fff;cursor:inherit;display:block;}form .validation-summary-errors ul{list-style-type:none;}.autocomplete-suggestions{border:1px solid #999;background:#fff;overflow:auto;}.autocomplete-suggestion{padding:2px 5px;white-space:nowrap;overflow:hidden;}.autocomplete-selected{background:#f0f0f0;}.autocomplete-suggestions strong{font-weight:normal;color:#39f;}.autocomplete-group{padding:2px 5px;}.autocomplete-group strong{display:block;border-bottom:1px solid #000;}.toggle{width:15px;}.dropdown-menu li form .btn-link{display:block;color:#333;clear:both;float:left;font-size:1rem;font-weight:normal;line-height:1.42857;min-width:160px;padding:3px 20px;text-align:left;white-space:nowrap;}.dropdown-menu li form .btn-link:focus,.dropdown-menu li form .btn-link:hover{text-decoration:none;color:#262626;background-color:#f5f5f5;}.divider-right{border-right:1px dashed #333;}
|
||||
@@ -1,6 +1,25 @@
|
||||
/* Go crazy with your own styles here */
|
||||
/* EDITOR PROPERTIES - PLEASE DON'T DELETE THIS LINE TO AVOID DUPLICATE PROPERTIES */
|
||||
|
||||
body.debug header .brand {
|
||||
position: relative;
|
||||
|
||||
&:before {
|
||||
content: "\f121";
|
||||
font-family: FontAwesome;
|
||||
font-style: normal;
|
||||
font-weight: normal;
|
||||
text-decoration: inherit;
|
||||
/*--adjust as necessary--*/
|
||||
color: red;
|
||||
font-size: 60px;
|
||||
padding-right: 0.5em;
|
||||
position: absolute;
|
||||
top: 10px;
|
||||
left: 0;
|
||||
}
|
||||
}
|
||||
|
||||
h1 {
|
||||
padding: 24px 0 12px 0;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,14 @@
|
||||
namespace LeafWeb.WebCms.Controllers
|
||||
{
|
||||
public static class CompileFlag
|
||||
{
|
||||
public static bool IsDebug()
|
||||
{
|
||||
#if DEBUG
|
||||
return true;
|
||||
#else
|
||||
return false;
|
||||
#endif
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,4 +1,5 @@
|
||||
using System;
|
||||
using System.Collections.Specialized;
|
||||
using System.Linq;
|
||||
using System.Web.Mvc;
|
||||
using Hangfire;
|
||||
@@ -14,10 +15,42 @@ namespace LeafWeb.WebCms.Controllers
|
||||
[MemberAuthorize]
|
||||
public class QueueController : BaseController
|
||||
{
|
||||
public ActionResult Index()
|
||||
public ActionResult Index(string query)
|
||||
{
|
||||
var resultItems = DataService.GetLeafInputsOrdered();
|
||||
var resultItems =
|
||||
DataService.GetLeafInputsOrdered() ;
|
||||
|
||||
if (!string.IsNullOrEmpty(query))
|
||||
{
|
||||
foreach (var piece in query.Split(' ').Select(p => p.Trim()))
|
||||
{
|
||||
resultItems =
|
||||
from li in resultItems
|
||||
where li.Name.Contains(piece)
|
||||
|| li.Identifier.Contains(piece)
|
||||
|| li.SiteId.Contains(piece)
|
||||
select li;
|
||||
}
|
||||
}
|
||||
|
||||
var serviceDescription = ServiceDescription();
|
||||
|
||||
var queueViewModel = new QueueViewModel
|
||||
{
|
||||
Items = resultItems, ServerDescription = serviceDescription, Query = query
|
||||
};
|
||||
|
||||
return View(queueViewModel);
|
||||
}
|
||||
|
||||
public ActionResult Search(string query)
|
||||
{
|
||||
var nameValueCollection = new NameValueCollection {{"query", query}};
|
||||
return RedirectToUmbracoPage(LeafWebPageIds.ManageQueue, nameValueCollection);
|
||||
}
|
||||
|
||||
private static string ServiceDescription()
|
||||
{
|
||||
string serviceDescription;
|
||||
try
|
||||
{
|
||||
@@ -27,13 +60,7 @@ namespace LeafWeb.WebCms.Controllers
|
||||
{
|
||||
serviceDescription = "Exception while initializing";
|
||||
}
|
||||
|
||||
var queueViewModel = new QueueViewModel
|
||||
{
|
||||
Items = resultItems, ServerDescription = serviceDescription
|
||||
};
|
||||
|
||||
return View(queueViewModel);
|
||||
return serviceDescription;
|
||||
}
|
||||
|
||||
public ActionResult Details(int id)
|
||||
|
||||
@@ -8,5 +8,6 @@ namespace LeafWeb.WebCms.Models
|
||||
public string ServerDescription { get; set; }
|
||||
public string ServerStatus { get; set; }
|
||||
public IEnumerable<LeafInput> Items { get; set; }
|
||||
public string Query { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -1,4 +1,5 @@
|
||||
@using ClientDependency.Core.Mvc
|
||||
@using LeafWeb.WebCms.Controllers
|
||||
@inherits UmbracoTemplatePage
|
||||
@{
|
||||
Layout = null;
|
||||
@@ -65,8 +66,8 @@
|
||||
<script src="//oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
|
||||
<![endif]-->
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<body @{if (CompileFlag.IsDebug()) {<text>class="debug"</text>}}>
|
||||
<header>
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
|
||||
@@ -1,108 +1,129 @@
|
||||
@using LeafWeb.Core.Entities
|
||||
@using LeafWeb.WebCms.Controllers
|
||||
@model QueueViewModel
|
||||
|
||||
@{
|
||||
var grid = new WebGrid(Model.Items, rowsPerPage: 45);
|
||||
}
|
||||
|
||||
<dl>
|
||||
<dt>Service description</dt>
|
||||
<dd>@Model.ServerDescription</dd>
|
||||
</dl>
|
||||
<div class="row panel">
|
||||
<div class="col-lg-8">
|
||||
Service description: @Model.ServerDescription
|
||||
</div>
|
||||
<div class="col-lg-4">
|
||||
@using (Html.BeginUmbracoForm<QueueController>("Search", FormMethod.Post))
|
||||
{
|
||||
<div class="input-group">
|
||||
<input name="query" type="text" class="form-control" placeholder="Search for..." value="@Model.Query">
|
||||
<span class="input-group-btn">
|
||||
<button class="btn btn-default" type="button">Search</button>
|
||||
</span>
|
||||
</div><!-- /input-group -->
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@grid.Table(columns:
|
||||
grid.Columns(
|
||||
grid.Column("Identifier", "Identifier"),
|
||||
grid.Column("SiteId", "Site Id"),
|
||||
grid.Column("Name", "Submitted By"),
|
||||
//grid.Column("FileCount", "Input files"),
|
||||
grid.Column("TimeInProgress", "Time In Progress", item => TimeInProgress(item.TimeInProgress)),
|
||||
grid.Column("CurrentStatus", "Status", item => Html.Partial("DisplayTemplates/_LeafInputStatus", (string)item.CurrentStatus.ToString())),
|
||||
grid.Column("Total Results: " + Model.Items.Count(), format: item => Btns(item))),
|
||||
htmlAttributes: new { @class = "table table-striped table-bordered table-hover table-condensed" }
|
||||
)
|
||||
@grid.BootstrapPager()
|
||||
@if (Model.Items.Any())
|
||||
{
|
||||
@grid.Table(columns:
|
||||
grid.Columns(
|
||||
grid.Column("Identifier", "Identifier"),
|
||||
grid.Column("SiteId", "Site Id"),
|
||||
grid.Column("Name", "Submitted By"),
|
||||
//grid.Column("FileCount", "Input files"),
|
||||
grid.Column("TimeInProgress", "Time In Progress", item => TimeInProgress(item.TimeInProgress)),
|
||||
grid.Column("CurrentStatus", "Status", item => Html.Partial("DisplayTemplates/_LeafInputStatus", (string) item.CurrentStatus.ToString())),
|
||||
grid.Column("Total Results: " + Model.Items.Count(), format: item => Btns(item))),
|
||||
htmlAttributes: new {@class = "table table-striped table-bordered table-hover table-condensed"}
|
||||
)
|
||||
@grid.BootstrapPager()
|
||||
}
|
||||
else
|
||||
{
|
||||
<p>No results.</p>
|
||||
}
|
||||
|
||||
@helper Btns(dynamic item)
|
||||
{
|
||||
<div class="btn-group text-nowrap" role="group">
|
||||
<div class="btn-group" role="group">
|
||||
<button type="button" class="btn btn-default btn-xs dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
||||
Actions
|
||||
<span class="caret"></span>
|
||||
</button>
|
||||
<ul class="dropdown-menu">
|
||||
<li>@DetailsLink(item)</li>
|
||||
<li @DisableItem(!item.HasLeafChart)>@ChartLink(item)</li>
|
||||
@if (item.IsPending)
|
||||
{
|
||||
<div class="btn-group text-nowrap" role="group">
|
||||
<div class="btn-group" role="group">
|
||||
<button type="button" class="btn btn-default btn-xs dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
||||
Actions
|
||||
<span class="caret"></span>
|
||||
</button>
|
||||
<ul class="dropdown-menu">
|
||||
<li>@DetailsLink(item)</li>
|
||||
<li @DisableItem(!item.HasLeafChart)>@ChartLink(item)</li>
|
||||
@if (item.IsPending)
|
||||
{
|
||||
<li role="separator" class="divider"></li>
|
||||
<li class="dropdown-header">Priority</li>
|
||||
<li @DisableItem(item.PendingPriority == Priority.High)>@PriorityForm(item, Priority.High)</li>
|
||||
<li @DisableItem(item.PendingPriority == Priority.Normal)>@PriorityForm(item, Priority.Normal)</li>
|
||||
<li @DisableItem(item.PendingPriority == Priority.Low)>@PriorityForm(item, Priority.Low)</li>
|
||||
}
|
||||
@if (item.IsCancellable)
|
||||
{
|
||||
<li role="separator" class="divider"></li>
|
||||
<li>@CancelLink(item)</li>
|
||||
}
|
||||
<li role="separator" class="divider"></li>
|
||||
<li class="dropdown-header">Priority</li>
|
||||
<li @DisableItem(item.PendingPriority == Priority.High)>@PriorityForm(item, Priority.High)</li>
|
||||
<li @DisableItem(item.PendingPriority == Priority.Normal)>@PriorityForm(item, Priority.Normal)</li>
|
||||
<li @DisableItem(item.PendingPriority == Priority.Low)>@PriorityForm(item, Priority.Low)</li>
|
||||
}
|
||||
@if (item.IsCancellable)
|
||||
{
|
||||
<li class="dropdown-header">Download</li>
|
||||
<li>@DownloadInput(item)</li>
|
||||
<li @DisableItem(!item.HasOutputFiles)>@DownloadOutputToUser(item)</li>
|
||||
<li role="separator" class="divider"></li>
|
||||
<li>@CancelLink(item)</li>
|
||||
}
|
||||
<li role="separator" class="divider"></li>
|
||||
<li class="dropdown-header">Download</li>
|
||||
<li>@DownloadInput(item)</li>
|
||||
<li @DisableItem(!item.HasOutputFiles)>@DownloadOutputToUser(item)</li>
|
||||
<li role="separator" class="divider"></li>
|
||||
<li @DisableItem(!item.IsDeletable)>@DeleteLink(item)</li>
|
||||
</ul>
|
||||
<li @DisableItem(!item.IsDeletable)>@DeleteLink(item)</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
|
||||
@helper DetailsLink(dynamic item)
|
||||
{
|
||||
@Html.Partial("DisplayTemplates/_DetailsLink", (int)item.Id)
|
||||
@Html.Partial("DisplayTemplates/_DetailsLink", (int)item.Id)
|
||||
}
|
||||
|
||||
@helper ChartLink(dynamic item)
|
||||
{
|
||||
@Html.Partial("DisplayTemplates/_ChartLink", (int)item.Id)
|
||||
@Html.Partial("DisplayTemplates/_ChartLink", (int)item.Id)
|
||||
}
|
||||
|
||||
@helper DownloadInput(dynamic item)
|
||||
{
|
||||
<a href="@Url.Action("DownloadInput", "Queue", new {id = item.Id})">
|
||||
<span class="glyphicon glyphicon-download"></span> Input
|
||||
</a>
|
||||
<a href="@Url.Action("DownloadInput", "Queue", new {id = item.Id})">
|
||||
<span class="glyphicon glyphicon-download"></span> Input
|
||||
</a>
|
||||
}
|
||||
@helper DownloadOutputToUser(dynamic item)
|
||||
{
|
||||
<a href="@Url.Action("DownloadOutputToUser", "Queue", new {id = item.Id})">
|
||||
<span class="glyphicon glyphicon-download"></span> ToUser
|
||||
</a>
|
||||
<a href="@Url.Action("DownloadOutputToUser", "Queue", new {id = item.Id})">
|
||||
<span class="glyphicon glyphicon-download"></span> ToUser
|
||||
</a>
|
||||
}
|
||||
@helper TimeInProgress(TimeSpan timeSpan)
|
||||
{
|
||||
if (timeSpan > TimeSpan.Zero)
|
||||
{
|
||||
@timeSpan.ToRoundedReadableString()
|
||||
@timeSpan.ToRoundedReadableString()
|
||||
}
|
||||
}
|
||||
@helper DeleteLink(dynamic item)
|
||||
{
|
||||
@Html.Partial("DisplayTemplates/_DeleteForm", (Tuple<int, string, bool>)Tuple.Create(item.Id, item.Identifier, item.IsDeletable))
|
||||
@Html.Partial("DisplayTemplates/_DeleteForm", (Tuple<int, string, bool>)Tuple.Create(item.Id, item.Identifier, item.IsDeletable))
|
||||
}
|
||||
|
||||
@helper CancelLink(dynamic item)
|
||||
{
|
||||
@Html.Partial("DisplayTemplates/_CancelForm", (Tuple<int, string>)Tuple.Create(item.Id, item.Identifier))
|
||||
@Html.Partial("DisplayTemplates/_CancelForm", (Tuple<int, string>)Tuple.Create(item.Id, item.Identifier))
|
||||
}
|
||||
|
||||
@helper PriorityForm(dynamic item, Priority priority)
|
||||
{
|
||||
@Html.Partial("DisplayTemplates/_PriorityForm", (Tuple<int, Priority, Priority>)Tuple.Create(item.Id, item.PendingPriority, priority))
|
||||
@Html.Partial("DisplayTemplates/_PriorityForm", (Tuple<int, Priority, Priority>)Tuple.Create(item.Id, item.PendingPriority, priority))
|
||||
}
|
||||
|
||||
@helper DisableItem(bool disabled)
|
||||
{
|
||||
if (disabled) {<text>class="disabled"</text>}
|
||||
if (disabled)
|
||||
{<text>class="disabled"</text>}
|
||||
}
|
||||
@@ -913,6 +913,7 @@
|
||||
<Compile Include="Backload\Controller\BackloadController.obsolete.cs" />
|
||||
<Compile Include="Backload\Helper\ResultCreator.Classic.cs" />
|
||||
<Compile Include="Backload\Helper\ResultCreator.cs" />
|
||||
<Compile Include="Controllers\CompileFlag.cs" />
|
||||
<Compile Include="Controllers\EnforceTrueAttribute.cs" />
|
||||
<Compile Include="Controllers\ActionLogAttribute.cs" />
|
||||
<Compile Include="Controllers\BackloadController.cs" />
|
||||
|
||||
Reference in New Issue
Block a user