Search for both LeafInput and LeafInputData

This commit is contained in:
2023-02-02 09:35:22 -05:00
parent 8e16510ad9
commit 680f139aa5
24 changed files with 808 additions and 281 deletions
+7 -62
View File
@@ -1,70 +1,15 @@
@using LeafWeb.Core.Entities
@using LeafWeb.WebCms.Controllers
@using LeafWeb.WebCms.Utility
@model SearchViewModel
@{
var grid = new WebGrid(Model.Items, rowsPerPage: 45);
}
@model SearchLeafInputViewModel
<div class="row align-items-end mb-3">
<div class="col-3 order-last order-sm-first font-italic font-weight-light ">
<strong>@Model.Items.Count()</strong> results
</div>
<div class="col-12 col-sm-9">
<div class="row align-items-end">
<div class="col-12 col-md-9 offset-md-3">
@Html.Partial("_LeafDataQuery", Model.Q,
new ViewDataDictionary{
{"actionName", "Search"},
{"controllerName", "Results"},
{"htmlFormAction", "/services/search/"}})
{"actionName", "Search"},
{"controllerName", "Results"},
{"htmlFormAction", "/services/search/"},
{"expand", true}})
</div>
</div>
@if (Model.Items.Any())
{
<div class="table-responsive">
@grid.Table(columns:
grid.Columns(
grid.Column("Identifier", "Identifier"),
grid.Column("SiteId", "Site Id"),
//grid.Column("Name", "Submitted By"),
grid.Column("CurrentStatus", "Status", item => Status(item.Value)),
grid.Column("", format: item => Actions(item.Value), canSort: false)
),
htmlAttributes: new { @class = "table table-sm table-striped table-bordered table-hover" }
)
</div>
<div class="row justify-content-end">
<div class="col-sm">@grid.PagerList()</div>
@*<div class="col-sm col-lg-5 pl-4 pt-3 pt-sm-0">
<span class="pr-2">Download Results</span>
@DownloadResults()
</div>*@
</div>
}
else
{
<p>No results. <a href="@UmbracoContext.Current.UrlProvider.GetUrl(LeafWebPageIds.LeafInputCreate)">Click here to submit Leaf Data.</a></p>
}
@helper Actions(LeafInput leafInput)
{
@Html.Partial("_LeafInputActions", leafInput)
}
@helper Status(LeafInput leafInput)
{
@Html.Partial("DisplayTemplates/_LeafInputStatus", leafInput)
}
@helper DownloadResults()
{
<div class="btn-group" role="group" aria-label="Download">
<a class="btn btn-outline-secondary small" role="button" href="@Url.Action("ResultsInputZip", "Download", Model.Q.GetNameValueCollection().ToRouteValueDictionary())">
<span class="fa fa-download"></span> Input
</a>
<a class="btn btn-outline-secondary small" role="button" href="@Url.Action("ResultsOutputZip", "Download", Model.Q.GetNameValueCollection().ToRouteValueDictionary())">
<span class="fa fa-download"></span> Output
</a>
</div>
}
+69
View File
@@ -0,0 +1,69 @@
@using LeafWeb.Core.Entities
@using LeafWeb.WebCms.Utility
@model SearchLeafInputViewModel
@{
var grid = new WebGrid(Model.Results, rowsPerPage: 45);
}
<div class="row align-items-end mb-3">
<div class="col-3 order-last order-sm-first font-italic font-weight-light ">
<strong>@Model.Results.Count()</strong> results
</div>
<div class="col-12 col-sm-9">
@Html.Partial("_LeafDataQuery", Model.Q,
new ViewDataDictionary{
{"actionName", "Search"},
{"controllerName", "Results"},
{"htmlFormAction", "/services/search/"}})
</div>
</div>
@if (Model.Results.Any())
{
<div class="table-responsive">
@grid.Table(columns:
grid.Columns(
grid.Column("Identifier", "Identifier"),
grid.Column("SiteId", "Site Id"),
//grid.Column("Name", "Submitted By"),
grid.Column("CurrentStatus", "Status", item => Status(item.Value)),
grid.Column("", format: item => Actions(item.Value), canSort: false)
),
htmlAttributes: new { @class = "table table-sm table-striped table-bordered table-hover" }
)
</div>
<div class="row justify-content-end">
<div class="col-sm">@grid.PagerList()</div>
@*<div class="col-sm col-lg-5 pl-4 pt-3 pt-sm-0">
<span class="pr-2">Download Results</span>
@DownloadResults()
</div>*@
</div>
}
else
{
@Html.Partial("NoResults")
}
@helper Actions(LeafInput leafInput)
{
@Html.Partial("_LeafInputActions", leafInput)
}
@helper Status(LeafInput leafInput)
{
@Html.Partial("DisplayTemplates/_LeafInputStatus", leafInput)
}
@helper DownloadResults()
{
<div class="btn-group" role="group" aria-label="Download">
<a class="btn btn-outline-secondary small" role="button" href="@Url.Action("ResultsInputZip", "Download", Model.Q.GetNameValueCollection().ToRouteValueDictionary())">
<span class="fa fa-download"></span> Input
</a>
<a class="btn btn-outline-secondary small" role="button" href="@Url.Action("ResultsOutputZip", "Download", Model.Q.GetNameValueCollection().ToRouteValueDictionary())">
<span class="fa fa-download"></span> Output
</a>
</div>
}
+84
View File
@@ -0,0 +1,84 @@
@using LeafWeb.Core.Entities
@using LeafWeb.WebCms.Controllers
@using LeafWeb.WebCms.Utility
@model SearchLeafInputDataViewModel
@{
var grid = new WebGrid(Model.Results, rowsPerPage: 45);
}
<div class="row align-items-end mb-3">
<div class="col-3 order-last order-sm-first font-italic font-weight-light ">
<strong>@Model.Results.Count()</strong> results
</div>
<div class="col-12 col-sm-9">
@Html.Partial("_LeafDataQuery", Model.Q,
new ViewDataDictionary{
{"actionName", "Search"},
{"controllerName", "Results"},
{"htmlFormAction", "/services/search/"}})
</div>
</div>
@if (Model.Results.Any())
{
<div class="table-responsive">
@grid.Table(columns:
grid.Columns(
grid.Column("Identifier", "Identifier", data => data.LeafInput.Identifier), // TODO: link to LeafInput details
grid.Column("SiteId", "Site Id", data => data.LeafInput.SiteId),
grid.Column("", "Location: Lat., Long., Elev.", data => FormatLatLongEl(data.Site)),
grid.Column("CO2S", "CO2S [umol/mol]", data => data.CO2S_Range?.ToString("#.##")),
grid.Column("PARi", "PARi [umol/m2/s]", data => data.PARi_Range?.ToString("#.##")),
grid.Column("Tleaf", "Tleaf [oC]", data => data.Tleaf_Range?.ToString("#.##")),
grid.Column("PhiPS2", "PhiPS2", data => data.PhiPS2_Range?.ToString("#.##")),
grid.Column("", "", data => ChartLink(data.LeafInput))
),
htmlAttributes: new { @class = "table table-sm table-striped table-bordered table-hover" }
)
</div>
<div class="row justify-content-end">
<div class="col-sm">@grid.PagerList()</div>
@*<div class="col-sm col-lg-5 pl-4 pt-3 pt-sm-0">
<span class="pr-2">Download Results</span>
@DownloadResults()
</div>*@
</div>
}
else
{
<p>No results. <a href="@UmbracoContext.Current.UrlProvider.GetUrl(LeafWebPageIds.LeafInputCreate)">Click here to submit Leaf Data.</a></p>
}
@helper FormatLatLongEl(LeafInputDataSite site)
{
<text>@(site.Latitude?.ToString("#.00"))</text>if (site.Latitude != null){<text>&#176;</text>if (site.Longitude != null){<text>, </text>} }
<text>@(site.Longitude?.ToString("#.00"))</text>if (site.Longitude != null){<text>&#176;</text>if (site.Elevation != null){<text>, </text>}}
<text>@(site.Elevation?.ToString("#.#m"))</text>
}
@helper ChartLink(LeafInput item)
{
@Html.Partial("DisplayTemplates/_ChartLink", item.Id)
}
@helper Actions(LeafInput leafInput)
{
@Html.Partial("_LeafInputActions", leafInput)
}
@helper Status(LeafInput leafInput)
{
@Html.Partial("DisplayTemplates/_LeafInputStatus", leafInput)
}
@helper DownloadResults()
{
<div class="btn-group" role="group" aria-label="Download">
<a class="btn btn-outline-secondary small" role="button" href="@Url.Action("ResultsInputZip", "Download", Model.Q.GetNameValueCollection().ToRouteValueDictionary())">
<span class="fa fa-download"></span> Input
</a>
<a class="btn btn-outline-secondary small" role="button" href="@Url.Action("ResultsOutputZip", "Download", Model.Q.GetNameValueCollection().ToRouteValueDictionary())">
<span class="fa fa-download"></span> Output
</a>
</div>
}
+9
View File
@@ -0,0 +1,9 @@
@using LeafWeb.WebCms.Controllers
<div class="container-lg">
<div class="card card-body bg-light">
<p>No results.</p>
<p>
<a href="@UmbracoContext.Current.UrlProvider.GetUrl(LeafWebPageIds.LeafInputCreate)">Click here to analyze your Leaf Data.</a>
</p>
</div>
</div>
+21 -13
View File
@@ -1,23 +1,31 @@
@using LeafWeb.Core.Entities
@using LeafWeb.WebCms.Controllers
@using LeafWeb.WebCms.Utility
@model IQueryable<LeafInput>
@{
var grid = new WebGrid(Model, rowsPerPage: 45);
}
<div class="table-responsive">
@grid.Table(columns:
grid.Columns(
grid.Column("Identifier", "Identifier"),
grid.Column("SiteId", "Site Id"),
//grid.Column("Name", "Submitted By"),
grid.Column("CurrentStatus", "Status", item => Status(item.Value)),
grid.Column("", "", item => ChartLink(item.Value))
),
htmlAttributes: new { @class = "table table-sm table-striped table-bordered table-hover" }
)
@grid.PagerList()
</div>
@if (Model.Any())
{
<div class="table-responsive">
@grid.Table(columns:
grid.Columns(
grid.Column("Identifier", "Identifier"),
grid.Column("SiteId", "Site Id"),
//grid.Column("Name", "Submitted By"),
grid.Column("CurrentStatus", "Status", item => Status(item.Value)),
grid.Column("", "", item => ChartLink(item.Value))
),
htmlAttributes: new { @class = "table table-sm table-striped table-bordered table-hover" }
)
@grid.PagerList()
</div>
}
else
{
@Html.Partial("NoResults")
}
@helper ChartLink(LeafInput leafInput)
{